mirror of
https://github.com/OpenTTD/OpenTTD.git
synced 2025-08-27 16:39:09 +00:00
Compare commits
26 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
59a291c66b | ||
|
a6251ba1a5 | ||
|
edbd568094 | ||
|
6e14331cda | ||
|
58ebb4c65c | ||
|
a442343076 | ||
|
0a4299bdfd | ||
|
ad2fbaddc1 | ||
|
36497b584e | ||
|
47ae295ee1 | ||
|
ca66a61cc9 | ||
|
e492c5928d | ||
|
a0bc64394c | ||
|
91078be657 | ||
|
86725561d5 | ||
|
2801567da7 | ||
|
c16325b939 | ||
|
53983ec1af | ||
|
a61574a033 | ||
|
ad2c54d119 | ||
|
fa713d0e3b | ||
|
645664eced | ||
|
19cad228e8 | ||
|
f39f14aceb | ||
|
a86469d6bc | ||
|
d567f99ecf |
@@ -58,7 +58,7 @@ function Regression::TestInit()
|
||||
}
|
||||
|
||||
list = AIList();
|
||||
list.Sort(AIAbstractList.SORT_BY_VALUE, true);
|
||||
list.Sort(AIAbstractList.SORT_BY_VALUE, AIAbstractList.SORT_ASCENDING);
|
||||
print("");
|
||||
print(" Value Ascending");
|
||||
list.AddItem( 5, 10);
|
||||
@@ -93,7 +93,7 @@ function Regression::TestInit()
|
||||
}
|
||||
|
||||
list = AIList();
|
||||
list.Sort(AIAbstractList.SORT_BY_ITEM, false);
|
||||
list.Sort(AIAbstractList.SORT_BY_ITEM, AIAbstractList.SORT_DESCENDING);
|
||||
print("");
|
||||
print(" Item Descending");
|
||||
list.AddItem( 5, 10);
|
||||
@@ -128,7 +128,7 @@ function Regression::TestInit()
|
||||
}
|
||||
|
||||
list = AIList();
|
||||
list.Sort(AIAbstractList.SORT_BY_ITEM, true);
|
||||
list.Sort(AIAbstractList.SORT_BY_ITEM, AIAbstractList.SORT_ASCENDING);
|
||||
print("");
|
||||
print(" Item Ascending");
|
||||
list.AddItem( 5, 10);
|
||||
@@ -545,7 +545,7 @@ function Regression::Industry()
|
||||
print("--Industry--");
|
||||
print(" GetIndustryCount(): " + AIIndustry.GetIndustryCount());
|
||||
local list = AIIndustryList();
|
||||
list.Sort(AIAbstractList.SORT_BY_ITEM, true);
|
||||
list.Sort(AIAbstractList.SORT_BY_ITEM, AIAbstractList.SORT_ASCENDING);
|
||||
for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
|
||||
if (AIIndustry.IsValidIndustry(i)) j++;
|
||||
print(" Industry " + i);
|
||||
@@ -667,7 +667,7 @@ function Regression::List()
|
||||
print(" HasItem(1050): " + list.HasItem(1050));
|
||||
print(" HasItem(1051): " + list.HasItem(1051));
|
||||
print(" IsEmpty(): " + list.IsEmpty());
|
||||
list.Sort(AIAbstractList.SORT_BY_ITEM, true);
|
||||
list.Sort(AIAbstractList.SORT_BY_ITEM, AIAbstractList.SORT_ASCENDING);
|
||||
print(" List Dump:");
|
||||
for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
|
||||
print(" " + i + " => " + list.GetValue(i));
|
||||
@@ -1078,7 +1078,7 @@ function Regression::Sign()
|
||||
print(" RemoveSign(" + sign_id + "): " + AISign.RemoveSign(sign_id));
|
||||
print("");
|
||||
local list = AISignList();
|
||||
list.Sort(AIAbstractList.SORT_BY_ITEM, true);
|
||||
list.Sort(AIAbstractList.SORT_BY_ITEM, AIAbstractList.SORT_ASCENDING);
|
||||
for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
|
||||
j++;
|
||||
print(" Sign " + i);
|
||||
@@ -1347,7 +1347,7 @@ function Regression::Town()
|
||||
print("--Town--");
|
||||
print(" GetTownCount(): " + AITown.GetTownCount());
|
||||
local list = AITownList();
|
||||
list.Sort(AIAbstractList.SORT_BY_ITEM, true);
|
||||
list.Sort(AIAbstractList.SORT_BY_ITEM, AIAbstractList.SORT_ASCENDING);
|
||||
for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
|
||||
if (AITown.IsValidTown(i)) j++;
|
||||
print(" Town " + i);
|
||||
|
@@ -648,70 +648,70 @@
|
||||
IsValidBridge(): true
|
||||
GetName(): Wooden rail bridge
|
||||
GetMaxSpeed(): 32
|
||||
GetPrice(): 10
|
||||
GetPrice(): 15
|
||||
GetMaxLength(): 102
|
||||
GetMinLength(): 2
|
||||
Bridge 1
|
||||
IsValidBridge(): true
|
||||
GetName(): Concrete rail bridge
|
||||
GetMaxSpeed(): 48
|
||||
GetPrice(): 15
|
||||
GetPrice(): 21
|
||||
GetMaxLength(): 4
|
||||
GetMinLength(): 2
|
||||
Bridge 2
|
||||
IsValidBridge(): true
|
||||
GetName(): Steel girder rail bridge
|
||||
GetMaxSpeed(): 64
|
||||
GetPrice(): 19
|
||||
GetPrice(): 27
|
||||
GetMaxLength(): 7
|
||||
GetMinLength(): 2
|
||||
Bridge 3
|
||||
IsValidBridge(): true
|
||||
GetName(): Reinforced concrete suspension rail bridge
|
||||
GetMaxSpeed(): 80
|
||||
GetPrice(): 22
|
||||
GetPrice(): 32
|
||||
GetMaxLength(): 12
|
||||
GetMinLength(): 4
|
||||
Bridge 4
|
||||
IsValidBridge(): true
|
||||
GetName(): Steel suspension rail bridge
|
||||
GetMaxSpeed(): 96
|
||||
GetPrice(): 25
|
||||
GetPrice(): 35
|
||||
GetMaxLength(): 102
|
||||
GetMinLength(): 5
|
||||
Bridge 5
|
||||
IsValidBridge(): true
|
||||
GetName(): Steel suspension rail bridge
|
||||
GetMaxSpeed(): 112
|
||||
GetPrice(): 26
|
||||
GetPrice(): 36
|
||||
GetMaxLength(): 102
|
||||
GetMinLength(): 5
|
||||
Bridge 6
|
||||
IsValidBridge(): true
|
||||
GetName(): Steel cantilever rail bridge
|
||||
GetMaxSpeed(): 160
|
||||
GetPrice(): 30
|
||||
GetPrice(): 42
|
||||
GetMaxLength(): 9
|
||||
GetMinLength(): 5
|
||||
Bridge 7
|
||||
IsValidBridge(): true
|
||||
GetName(): Steel cantilever rail bridge
|
||||
GetMaxSpeed(): 208
|
||||
GetPrice(): 31
|
||||
GetPrice(): 44
|
||||
GetMaxLength(): 10
|
||||
GetMinLength(): 5
|
||||
Bridge 8
|
||||
IsValidBridge(): true
|
||||
GetName(): Steel cantilever rail bridge
|
||||
GetMaxSpeed(): 240
|
||||
GetPrice(): 33
|
||||
GetPrice(): 47
|
||||
GetMaxLength(): 11
|
||||
GetMinLength(): 5
|
||||
Bridge 9
|
||||
IsValidBridge(): true
|
||||
GetName(): Steel girder rail bridge
|
||||
GetMaxSpeed(): 256
|
||||
GetPrice(): 32
|
||||
GetPrice(): 45
|
||||
GetMaxLength(): 4
|
||||
GetMinLength(): 2
|
||||
Bridge 10
|
||||
@@ -773,16 +773,16 @@
|
||||
1 => 48
|
||||
0 => 32
|
||||
Price ListDump:
|
||||
8 => 33
|
||||
9 => 32
|
||||
7 => 31
|
||||
6 => 30
|
||||
5 => 26
|
||||
4 => 25
|
||||
3 => 22
|
||||
2 => 19
|
||||
1 => 15
|
||||
0 => 10
|
||||
8 => 47
|
||||
9 => 45
|
||||
7 => 44
|
||||
6 => 42
|
||||
5 => 36
|
||||
4 => 35
|
||||
3 => 32
|
||||
2 => 27
|
||||
1 => 21
|
||||
0 => 15
|
||||
MaxLength ListDump:
|
||||
5 => 102
|
||||
4 => 102
|
||||
@@ -813,9 +813,9 @@
|
||||
4 => 96
|
||||
0 => 32
|
||||
Price ListDump:
|
||||
5 => 73
|
||||
4 => 70
|
||||
0 => 30
|
||||
5 => 220
|
||||
4 => 212
|
||||
0 => 91
|
||||
|
||||
--AICargo--
|
||||
Cargo -1
|
||||
|
Binary file not shown.
@@ -1,7 +1,7 @@
|
||||
; $Id$
|
||||
;
|
||||
; This represents the original graphics as on the Transport
|
||||
; Tycoon Deluxe for Windows.
|
||||
; Tycoon Deluxe for Windows CD.
|
||||
;
|
||||
[metadata]
|
||||
name = original_windows
|
||||
|
284
changelog.txt
284
changelog.txt
@@ -1,3 +1,89 @@
|
||||
0.7.3-RC1 (2009-09-13)
|
||||
------------------------------------------------------------------------
|
||||
- Add: [NoAI] AITown::GetLastMonthTransportedPercentage and AIIndustry::GetLastMonthTransportedPercentage (r17294)
|
||||
- Add: [NoAI] AICompany::Get/Set PresidentGender (r17016)
|
||||
- Add: [NoAI] AIEngine::GetDesignDate (r17014)
|
||||
- Add: [NoAI] AIStation::GetConstructionDate (r17012)
|
||||
- Add: [NoAI] AIAbstractList::SORT_ASCENDING / SORT_DESCENDING (r17005)
|
||||
- Change: [NoAI] AITown::GetLastMonthProduction now returns the same value as AITown::GetMaxProduction (r17293)
|
||||
- Change: Mention the MD5 checksum of the original NewGRF in the 'saveload failed horribly'-error message and make it more clear that the filename is of the current NewGRF [FS#3139] (r17267)
|
||||
- Change: Make overbuilding the front tile of a road station/depot with road consistent with overbuilding the front tile of tunnels/bridges [FS#2802] (r17239)
|
||||
- Change: Improve error output on missing or corrupt files (r17238)
|
||||
- Change: [Unix] Only use colorized error output on interactive terminals (r17227)
|
||||
- Change: [NoAI] Crash an AI when it uses a DoCommand / Sleep instead of just printing an error message in the AI Debug Window [FS#2980] (r17223)
|
||||
- Change: [NoAI] When the API requests a string as parameter allow every squirrel type and convert to a string [FS#3101] (r17221)
|
||||
- Change: Make strgen warn if the translation uses STRINGn or RAW_STRING instead of STRING (r17137, r17129)
|
||||
- Change: [NoAI] Load the API before compiling an AI script so AIs can subclass API classes and use API constants as part of their own constants (r17043)
|
||||
- Change: Add notion of Ctrl+Click in the tooltip for Loan borrow/repay buttons [FS#3066] (r16979)
|
||||
- Change: [MSVC] Make all language files depend on english.txt (r16975)
|
||||
- Change: There is no point in not randomising engine introduction-date before 1922. Instead disable the randomisation for the first two years after game-start, so you do not have to wait for the first engine (r16929)
|
||||
- Fix: [Squirrel] In some cases the call stack would not be cleaned up properly during crash handling. Occasionally this causes asserts to be triggered or crashes [FS#3189] (r17515)
|
||||
- Fix: When loading GRFConfigs from ini file, validate them wrt. duplicate GRF IDs [FS#3197] (r17510)
|
||||
- Fix: When building a part fails during cloning, sell what was already cloned instead of leaving it 'for free'. Also make cloning multiheaded trains possible with with 'max - 1' vehicles existing [FS#3196] (r17509)
|
||||
- Fix: [NoAI] The wrong value was restored to SetAllowDoCommand possible resulting in an AI that was not allowed to do any actions (r17500)
|
||||
- Fix: Road vehicles could get lost when the prelimiary destination (for the pathfinder heuristics) is unreachable [FS#3188] (r17491)
|
||||
- Fix: When building roads is not allowed for town, then do not build the initial piece either [FS#3173] (r17444)
|
||||
- Fix: Destruction of depots did not remove any vehicle lists related to the depot, causing windows pointing to deleted depots and (thus) crashes [FS#3180] (r17442)
|
||||
- Fix: Economy recession would never end when economy is set to Steady while in recession (r17426)
|
||||
- Fix: The index of orders loaded from old savegames was owerwritten with an unitialized value (r17419)
|
||||
- Fix: Incomplete check on validity of industry type when building industries (r17413)
|
||||
- Fix: [Squirrel] Guard against Squirrel stack overflows (r17403)
|
||||
- Fix: [NoAI] During every save a few slots on the Squirrel stack were leaked (r17402)
|
||||
- Fix: [NoAI] Several AITile::* functions did not check whether their parameters were valid (r17378)
|
||||
- Fix: Memory leak when trying to bankrupt the local company, other minor improvements of bankruptcy (r17342, r17341, r17340)
|
||||
- Fix: Not all non-ASCII characters were entered with escapes in the About window (r17309)
|
||||
- Fix: [NoAI] AIRail::RemoveRailTrack returned ERR_PRECONDITION_ERROR for road/rail-crossings (r17307)
|
||||
- Fix: [NoAI] Reloading an AI started a new AI in the first available company slot causing other AIs to be started [FS#3153] (r17298)
|
||||
- Fix: [NoAI] AITown::GetLastMonthTransported did not work as documented at all, make it return what AITown::GetLastMonthProduction did (r17293)
|
||||
- Fix: Crash after upgrading base graphics set when opening the game options menu and you were using the upgraded set [FS#3147] (r17291)
|
||||
- Fix: [Squirrel] Stack was not always cleared properly with tail recursion (r17284)
|
||||
- Fix: [Squirrel] Calling a function that has default parameters with not enough parameters can cause a crash (r17273)
|
||||
- Fix: Other tunnel end not shown if building rail tunnels and the first railtype is not available yet [FS#3141] (r17251)
|
||||
- Fix: [NoAI] AIs that crashed during Save() were not killed as they should [FS#3134] (r17231)
|
||||
- Fix: [NoAI] Do not assert when an AI uses AI*Mode objects incorrectly but crash the AI instead (r17230)
|
||||
- Fix: Remove the (deprecated since 2006) Encoding entry from the openttd.desktop file (r17226)
|
||||
- Fix: With time tables vehicles would stay in the 'loading' state after they have finished loading [FS#3129, FS#3130] (r17222)
|
||||
- Fix: Do not ignore white space changes (e.g. alignment fixes) in the exporter (r17220)
|
||||
- Fix: [NoAI] IsRoadTypeAvailable(GetCurrentRoadType()) was not a precondition for several AIRoad::* functions (r17203)
|
||||
- Fix: [NoAI] Do not say you are building a depot when you are actually building a station (API docs typo) (r17201)
|
||||
- Fix: Accept monthly production values in the scenario editor [FS#2406] (r17198)
|
||||
- Fix: [Squirrel] FPE when an AI tried to do '% 0' (r17195)
|
||||
- Fix: [NoAI] Guard the valuator against 'external' modifications of the valuated list which could cause it to go into an infinite loop [FS#3124] (r17193)
|
||||
- Fix: Do not return exit value of rm, but of the actual configure run (r17163)
|
||||
- Fix: A stuck train could free the reservation of another train if it was reversed or did crash (r17152)
|
||||
- Fix: A train entering a PBS section through a block signal could cause a train crash if another reservation ending at a safe tile was already present in the section [FS#3104] (r17151)
|
||||
- Fix: Update vehicle position cache when the vehicle sprite changes [FS#3060] (r17121)
|
||||
- Fix: Mark industry tiles dirty when trigger are triggered (r17118)
|
||||
- Fix: Squirrel_export.sh failed for some locales (r17109)
|
||||
- Fix: Make restart command work again and make the help show how it works and how it does not work [FS#3092] (r17097)
|
||||
- Fix: News message about ordered refits failing was not very clear [FS#3091] (r17096)
|
||||
- Fix: Crash when renaming some stations [FS#3082] (r17078)
|
||||
- Fix: RPM spec file failed for CentOS; apparantly their rpmbuild is pickier or so [FS#3024] (r17077)
|
||||
- Fix: [NewGRF] Mark house tiles dirty when triggers were triggered (r17047)
|
||||
- Fix: [NewGRF] Trigger house trigger 02 only for the north tile [FS#3085] (r17046)
|
||||
- Fix: Graphical glitch with graph key [FS#3083] (r17041)
|
||||
- Fix: '[bd]ash'-ism in configure [FS#3076] (r17026)
|
||||
- Fix: Infinite recursion in content dependency checking [FS#3075] (r17015)
|
||||
- Fix: Concatenating strings in Squirrel when non-ASCII strings were received from OpenTTD failed [FS#3074] (r17013)
|
||||
- Fix: [NoAI] Documentation of AITile::LevelTiles was wrong (r17049)
|
||||
- Fix: [NoAI] AIBridge::GetPrice returned incorrect values (r16986)
|
||||
- Fix: Make it so that failing to generate many random towns in scenario editor returns a failing message [FS#3059] (r16977)
|
||||
- Fix: The last manually added server would not be saved [FS#3062] (r16981)
|
||||
|
||||
|
||||
0.7.2 (2009-08-01)
|
||||
------------------------------------------------------------------------
|
||||
- Fix: Vehicles would wait 'very long' when they had nothing to unload and gradual loading was disabled [FS#3054] (r16933)
|
||||
|
||||
|
||||
0.7.2-RC2 (2009-07-21)
|
||||
------------------------------------------------------------------------
|
||||
- Fix: When marking trains stuck do not reset the unload/stuck counter when the vehicle is unloading. It will be automatically reset once the vehicle wants to leave the station [FS#3038] (r16901)
|
||||
- Fix: [NoAI]: Small errors in the API documentation [FS#3037] (r16865)
|
||||
- Fix: Savegames from before 0.4 would get their waypoint 'index' messed up (r16854)
|
||||
- Fix: Cargo payments were not destroyed when a vehicle was destructed. This only happened when you crashed a vehicle while it was unloading [FS#3032, FS#3046] (r16801)
|
||||
|
||||
|
||||
0.7.2-RC1 (2009-07-15)
|
||||
------------------------------------------------------------------------
|
||||
- Add: Plural 'rule' for Korean (r16811)
|
||||
@@ -11,7 +97,7 @@
|
||||
- Fix: Do not use the same error message for turning around road vehicles and flipping parts of trains in the depot [FS#3019] (r16772)
|
||||
- Fix: The win32 and win64 binary packages would not get their readme converted to DOS line endings (r16769)
|
||||
- Fix: [NoAI] AITile::GetCargoProduction/Acceptance did not accept a radius of 0 anymore (r16767)
|
||||
- Fix: In the refit window the "Select cargo type to carry" line always showed the ship refit tooltip [FS#3018] (r16757)
|
||||
- Fix: In the refit window the 'Select cargo type to carry' line always showed the ship refit tooltip [FS#3018] (r16757)
|
||||
- Fix: When loading a savegame Engine::grffile might be left NULL in certain cases (dynamic_engines enabled, articulated vehicle with only wagon-override action3s) (r16737)
|
||||
- Fix: Show Close instead of Cancel when there is nothing to canel in the content downloading window [FS#2991] (r16732)
|
||||
- Fix: [NoAI] AIDepotList contained wrong tiles for hangars when st->xy != st->airport_tile (r16731)
|
||||
@@ -104,7 +190,7 @@
|
||||
- Add: [NoAI] AIAirport::GetPrice, returning the building cost of an airport (r16252)
|
||||
- Add: [NoAI] Two new error codes to AITile: ERR_AREA_ALREADY_FLAT and ERR_EXCAVATION_WOULD_DAMAGE (r16171)
|
||||
- Add: [NoAI] AITile::Get(Min|Max|Corner)Height (r16166)
|
||||
- Add: [NoAI] Several functions to AIOrder to check the what kind of order an order is [FS#2801] (r16165)
|
||||
- Add: [NoAI] Several functions to AIOrder to check the what kind of order an order is and AIVehicle.SendVehicleToDepotForServicing [FS#2801] (r16165)
|
||||
- Add: [NoAI] UseAsRandomAI as function in info.nut. When an AI returns false, it will never be chosen as random AI (r16113)
|
||||
- Add: [NoAI] AIOF_STOP_IN_DEPOT to the orderflags in AIOrder to allow stop-in-depot orders (r16107)
|
||||
- Add: [NoAI] GetURL() as possible function to info.nut. If AIs implement it, that url is shown when the AI crashes and also in the AI selection window [FS#2808] (r16093)
|
||||
@@ -134,7 +220,7 @@
|
||||
- Fix: Road was removed when both the Remove button was active and Ctrl was pressed [FS#2582] (r16119)
|
||||
- Fix: [NoAI] Make sure AIOrder::GetDestination always returns a tile belonging to the station (16109)
|
||||
- Fix: [NoAI] When giving an aircraft a goto-hangar order do not let it be a normal goto-station order (r16108)
|
||||
- Fix: [NoAI] AIOrder::SetOrderFlags always removed "Service if needed" from goto-depot orders (r16106)
|
||||
- Fix: [NoAI] AIOrder::SetOrderFlags always removed 'Service if needed' from goto-depot orders (r16106)
|
||||
- Fix: Connect tried to validate too much of the company ID with too little information on hand [FS#2849] (r16096)
|
||||
- Fix: [NoAI] AIDebug window profiled the blitters by invalidating itself unconditionally on repaint. On the other hand it was not invalidated in other cases when needed (r16094)
|
||||
- Fix: The language is called Slovak, not Slovakish (r16090)
|
||||
@@ -146,12 +232,12 @@
|
||||
- Fix: Do not warn that crashed vehicles are getting old; upgrading them is impossible [FS#2740] (r16048)
|
||||
- Fix: The currency abbreviation for the Romanian Leu is now RON [FS#774] (r16041)
|
||||
- Fix: Dash was not able to run iconv detection (r16035)
|
||||
- Fix: [NewGRF] Do not give "... Mines" as name to the station of oil rigs, or more general: do not add "... Mines" when the all of the cargoes are part of the liquid, passenger or mail classes [FS#2785] (r16029)
|
||||
- Fix: Storing/loading some currencies failed due to inconsistent settings "tables" [FS#2826] (r16028)
|
||||
- Fix: [NewGRF] Do not give '... Mines' as name to the station of oil rigs, or more general: do not add '... Mines' when the all of the cargoes are part of the liquid, passenger or mail classes [FS#2785] (r16029)
|
||||
- Fix: Storing/loading some currencies failed due to inconsistent settings 'tables' [FS#2826] (r16028)
|
||||
- Fix: Usage of uninitialised memory when trying to build a random new industry, but there are no industrytypes to choose from (i.e. all appearance probabilities are zero) (r16027)
|
||||
- Fix: "Build separate station" in the station picker would reuse deleted stations [FS#2818] (r16025)
|
||||
- Fix: 'Build separate station' in the station picker would reuse deleted stations [FS#2818] (r16025)
|
||||
- Fix: 32 bpp sprites in tars would also be shown in the list of heightmaps [FS#2817] (r16023)
|
||||
- Fix: Sometimes the unregister "query" thread could be delayed so much that the network stuff was already closed and the packet would never reach the master server causing the server to appear online longer than necessary (r16022)
|
||||
- Fix: Sometimes the unregister 'query' thread could be delayed so much that the network stuff was already closed and the packet would never reach the master server causing the server to appear online longer than necessary (r16022)
|
||||
- Fix: Chance16() did not work for b = 1. Also transform the formula to not use divisions (r16006)
|
||||
- Fix: Inconsistency between using NETWORK_NAME_LENGTH and NETWORK_CLIENT_NAME_LENGTH for the length of client names (r15988)
|
||||
- Fix: [NewGRF] Abort production callback after 0x10000 iterations and show a messagebox blaming the NewGRF [FS#2787] (r15958)
|
||||
@@ -208,7 +294,7 @@
|
||||
- Fix: Blame NewGRFs returning inconsistent information in purchase-list/after building before users have a chance to blame OpenTTD for incorrectly autorenewing/-replacing [FS#2595] (r15701)
|
||||
- Fix: Just sell the old engines after autorenew/replace. Do not bother about trains exceeding the trainlimit, which will be sold anyway [FS#2721] (r15692)
|
||||
- Fix: Do not crash when the generate map does not contain a suitable location for a town [FS#2720] (r15689)
|
||||
- Fix: Do not crash when someone substitutes the "map generation" sprites with garbage [FS#2720] (r15685)
|
||||
- Fix: Do not crash when someone substitutes the 'map generation' sprites with garbage [FS#2720] (r15685)
|
||||
- Fix: Vehicle images would be determined during the process of moving the vehicle which means that only the (orientation) data for the vehicles in front of it is valid. Now the data for the vehicles behind the vehicle are valid too [FS#2546] (r15677)
|
||||
- Fix: It was possible to remove rail tunnels/bridges and aqueducts build by rival companies [FS#2718] (r15667)
|
||||
- Fix: Sorting of engines in the purchase list did not use the same numbers as the GUI showed, e.g. articulated parts were not taken into accound when ordering by capacity [FS#2689] (r15666)
|
||||
@@ -312,7 +398,7 @@
|
||||
- Feature: [NewGRF] Add Variational Action 2 Variable 0x47 for houses, Coordinates of the house tile (r14294)
|
||||
- Feature: Allow overriding the palette of the base GRFs. This way you can play with NewGRFs made for the Windows palette with the DOS palettes base GRFs (and vice versa). Note that for this to work correctly ALL NewGRFs must use the same palette; mix and match is not yet supported (r14229)
|
||||
- Feature: Double click to join selected server/company (r14209)
|
||||
- Feature: Allow both the German as well as non-German toyland graphics as "correct" and official graphics (r14197)
|
||||
- Feature: Allow both the German as well as non-German toyland graphics as 'correct' and official graphics (r14197)
|
||||
- Feature: Allow people to create their own base graphics easily and without requiring code changes (r14197)
|
||||
- Feature: [NewGRF]: Add support for property 0x13 for Bridges. In other words, one can now specifies a 16 bits cost multiplier (r14172)
|
||||
- Feature: Make it possible to choose between the DOS and Windows graphics packs while retaining the possibility to override the palette (r14151)
|
||||
@@ -339,8 +425,8 @@
|
||||
- Feature: Conditional 'skip/jump' orders (r12667)
|
||||
- Feature: Ability to send a vehicle (using default orders) to the nearest depot (r12661)
|
||||
- Feature: Ability to force a vehicle to not load or to not unload at a station (r12650)
|
||||
- Feature: Four different non-stop types, individually selectable per order. Replaces "TTDP compatible order" setting (r12648)
|
||||
- Feature: Three different load type in a single game instead of two. One can choose full load all and full load any instead of full load being governed by the "full load any" patch setting (r12648)
|
||||
- Feature: Four different non-stop types, individually selectable per order. Replaces 'TTDP compatible order' setting (r12648)
|
||||
- Feature: Three different load type in a single game instead of two. One can choose full load all and full load any instead of full load being governed by the 'full load any' patch setting (r12648)
|
||||
- Feature: Financial and Player Selection Face windows are now remembering their position when toggling sizes (r12634)
|
||||
- Feature: Show what cargos a station could be supplied with (r12596)
|
||||
- Feature: [NewGRF] Add random action 2 type 84. For vehicles only (r12452)
|
||||
@@ -350,7 +436,7 @@
|
||||
- Feature: On Screen Keyboard for input fields so someone without a keyboard can enter text too [FS#1846] (r12425)
|
||||
- Change: When checking for unique names, compare only with manually set names [FS#1923] (r14958)
|
||||
- Change: Apply the 'warn if train's income is negative' setting to other vehicle types, too (r14835)
|
||||
- Change: When loading games in "network" mode use the start date of the save game for the server and all clients when loading the NewGRFs instead of the current date. Prevents desyncs caused by action 7/9s skipping parts of the GRF based on the date or some other variables that can differ at NewGRF load time (r14769)
|
||||
- Change: When loading games in 'network' mode use the start date of the save game for the server and all clients when loading the NewGRFs instead of the current date. Prevents desyncs caused by action 7/9s skipping parts of the GRF based on the date or some other variables that can differ at NewGRF load time (r14769)
|
||||
- Change: Only say a engine/vehicle is refittable when it can be refitted to at least two cargo type or when it has subcargos (r14683)
|
||||
- Change: [NewGRF] Since our NewGRF handling is better than it used to be, disable a NewGRF if unexpected sprites are reached (r14184)
|
||||
- Fix: A town could build a statue under a bridge [FS#2618] (r15397)
|
||||
@@ -372,13 +458,13 @@
|
||||
- Fix: [NewGRF] Building new station parts did not allocate a new station spec effectively breaking variable 41. This was due to the limited number of station specs that we can have per station. This fix makes newly build station parts create a new spec until one cannot allocate new station specs anymore and it'll revert to the old behaviour (sharing station specs) [FS#1832] (r14956)
|
||||
- Fix: [NewGRF] Station specs did not get deallocated when building a new station part over them (r14955)
|
||||
- Fix: Sharing/cloning/inserting of orders that the/a vehicle (in the shared list) cannot go to (wrong station type etc) [FS#1890] (r14954)
|
||||
- Fix: The "animation state" of the bubbles was stored in a variable that was not stored in the savegame. Using a variable that gets saved in the savegame solves the desync and makes it a bit clearer [FS#2512] (r14931)
|
||||
- Fix: The 'animation state' of the bubbles was stored in a variable that was not stored in the savegame. Using a variable that gets saved in the savegame solves the desync and makes it a bit clearer [FS#2512] (r14931)
|
||||
- Fix: Abort dragging of vehicles in the group window when they are deleted [FS#2500] (r14925)
|
||||
- Fix: Do not unnecessarily reset the cursor, when a different vehicle is dragged (r14924)
|
||||
- Fix: [NewGRF] First create all articulated parts of roadvehicles, then call callback 36 capacity, also call it for all articulated parts (r14903)
|
||||
- Fix: Overflow of number of orders per vehicle [FS#2495] (r14830)
|
||||
- Fix: Off-by-one causing possible out-of-bounds reads (r14811)
|
||||
- Fix: In an MP game in SP mode no company would go bankrupt. Furthermore companies that passed the "bankrupt" period (4 quarters) would not go bankrupt when loading the game back in MP. Now any company that is in MP or not "currently controlled by the player" in SP will bankrupt [FS#1993] (r14750)
|
||||
- Fix: In an MP game in SP mode no company would go bankrupt. Furthermore companies that passed the 'bankrupt' period (4 quarters) would not go bankrupt when loading the game back in MP. Now any company that is in MP or not 'currently controlled by the player' in SP will bankrupt [FS#1993] (r14750)
|
||||
- Fix: Do not let any disaster vehicle (Helicopter or Airplane) target invalid industry (r14746)
|
||||
- Fix: Memory leak in Action 0x0F (new town names) (r14737)
|
||||
- Fix: Writing a single char to the config file caused reading outside a buffer (r14729)
|
||||
@@ -428,11 +514,11 @@
|
||||
- Fix: [Win32] Some keypress combinations could be handled twice [FS#2206] (r14363)
|
||||
- Fix: The ownership of roadtiles was not properly set for very old savegames (including TTD's) making it impossible to remove some pieces of road [FS#2311] (r14359)
|
||||
- Fix: Desync due to randomly ordered vehicle hash by flooding and road vehicle overtake/following (r14356, r14258)
|
||||
- Fix: Signs were not updated on company bankrupcy/sell, and thus could have the colour of invalid player (r14348)
|
||||
- Fix: Signs were not updated on company bankruptcy/sell, and thus could have the colour of invalid player (r14348)
|
||||
- Fix: Delete the RenameSignWindow when 'its' sign is deleted (r14345)
|
||||
- Fix: Signs from old savegames were lost (causing little memory leaks) (r14340)
|
||||
- Fix: When a company was renamed and then manager was renamed before building anything, company name changed (r14328)
|
||||
- Fix: When you rename a town before building something and build something near that town your company would be called "<old townname> Transport" [FS#2251] (r14327)
|
||||
- Fix: When you rename a town before building something and build something near that town your company would be called '<old townname> Transport' [FS#2251] (r14327)
|
||||
- Fix: Free any blocks that a helicopter may have on an oilrig when the helicopter gets forcefully removed (bankruptcy). For other airports this is not needed as they cannot be used by multiple companies [FS#2241] (r14324)
|
||||
- Fix: Possible assert when renaming removed waypoint (r14322)
|
||||
- Fix: Properly delete orders so the pool does not fill up (r14319)
|
||||
@@ -443,8 +529,8 @@
|
||||
- Fix: Default for sound effects and music volume should be in the valid range for that setting [FS#2286] (r14289)
|
||||
- Fix: Make small UFO aware of articulated RVs so they crash the complete vehicle instead of a small part of it (r14270)
|
||||
- Fix: Desyncs after deleting a waypoint because of explicit destructor call instead of using operator delete (r14265)
|
||||
- Fix: Merge keycode for "normal" 0-9 keys and keypad 0-9 keys so people do not get confused that the keypad does not work as expected [FS#2277] (r14260)
|
||||
- Fix: Clicking on the smallmap did not break the "follow vehicle in main viewport" [FS#2269] (r14243)
|
||||
- Fix: Merge keycode for 'normal' 0-9 keys and keypad 0-9 keys so people do not get confused that the keypad does not work as expected [FS#2277] (r14260)
|
||||
- Fix: Clicking on the smallmap did not break the 'follow vehicle in main viewport' [FS#2269] (r14243)
|
||||
- Fix: The engine-purchase-list-sorter doubled running-cost and halfed capacity of double-headed engines [FS#2267] (r14239)
|
||||
- Fix: Feeder share was computed wrong when splitting cargo packet (r14234)
|
||||
- Fix: Signs (town name, station name, ...) could be too long for 8bit width in pixels (r14221)
|
||||
@@ -467,7 +553,7 @@
|
||||
- Fix: Flawed parsing of words (as in 2 bytes) in GRF strings due to sign extension [FS#2228] (r14087)
|
||||
- Fix: Division by 0 in NewAI [FS#2226] (r14062)
|
||||
- Fix: NewGRF callback 23 did not use the NewGRF compatible text stack [FS#2224] (r14058)
|
||||
- Fix: NewGRF text stack's "push word" did not move the data around properly (r14057)
|
||||
- Fix: NewGRF text stack's 'push word' did not move the data around properly (r14057)
|
||||
- Fix: Long strings in the edit box would cause OpenTTD to stop drawing the string. This is especially noticable with low resolutions and the chat input box (r14054)
|
||||
- Fix: [OSX] changed the condition for selecting 8 or 32 bpp blitter by default. Now we will pick 32 bpp if no 8 bpp fullscreen resolutions are available on the main display (the one with the dock) (r14032)
|
||||
- Fix: Crash when the AI tries to find the depot of an airport that does not have a depot [FS#2190] (r13999)
|
||||
@@ -499,7 +585,7 @@
|
||||
- Fix: Checking for train waiting at other side of two-way signal was broken [FS#2162] (r13806)
|
||||
- Fix: Some revision checking code was unintentionally disabled (r13776)
|
||||
- Fix: Enforce the validity of a NetworkAction (chat packet) issued by a client (r13775)
|
||||
- Fix: Selecting non-full length vehicles in the depot gui would place the "mouse pointer" out of the center of the vehicle making it hard to "aim" [FS#2147] (r13759)
|
||||
- Fix: Selecting non-full length vehicles in the depot gui would place the 'mouse pointer' out of the center of the vehicle making it hard to 'aim' [FS#2147] (r13759)
|
||||
- Fix: NewGRF rail continuation would always mark a tunnel on the same axis as connected, even when the tunnel faces the wrong direction (r13734)
|
||||
- Fix: Assumption that non-north tiles of a house do not have the 1x1 building bit set was flawed with some NewGRFs. This caused the amount of houses to differ, which causes the town radii to differ, which causes desyncs when towns are expanded (r13729)
|
||||
- Fix: Possible desync on the autorenew settings 20+ game years (i.e. 4.5+ hours) after a company was started (r13718)
|
||||
@@ -536,7 +622,7 @@
|
||||
- Fix: Clear the memory for the new AI during the loading of a savegame so it does not try to execute commands generated in a different savegame, which could be resulting in the AI trying to give orders to stations that do not exist (r13505)
|
||||
- Fix: Drawing of zoomed out partial sprites could cause deadlocks or crashes (r13502)
|
||||
- Fix: First determine where to *exactly* build a house before asking a NewGRF whether the location is good instead of possibly moving the house a tile after the NewGRF said the location is good (r13489)
|
||||
- Fix: Track was not removed on company bankrupcy when there was a ship on lower halftile (r13488)
|
||||
- Fix: Track was not removed on company bankrupcty when there was a ship on lower halftile (r13488)
|
||||
- Fix: Let ships also navigate on half-tile sloped watery rail tiles (r13485)
|
||||
- Fix: Division by zero when one would press 'd' (skip order) when there's no order (r13409)
|
||||
- Fix: Do not crash when resolving vehicle sprite groups with zero sprites (r13397)
|
||||
@@ -620,7 +706,7 @@
|
||||
|
||||
0.6.0-RC1 (2008-03-26)
|
||||
------------------------------------------------------------------------
|
||||
- Feature: Show whether a town is a "city" in the town description title bar (r12391)
|
||||
- Feature: Show whether a town is a 'city' in the town description title bar (r12391)
|
||||
- Feature: Increase house animation frame number from 32 to 128 (r12347)
|
||||
- Fix: Loading of TTD savegames (r12399, r12401)
|
||||
- Fix: Vehicle lists related to stations not closed when the station is deleted [FS#1872] (r12393)
|
||||
@@ -679,7 +765,7 @@
|
||||
- Fix: [NewGRF] Support using any base price for rail and road vehicles' running cost, show running cost of wagons if available (r12209)
|
||||
- Fix: When loading a savegame fails, do not start creating a new game, just go straight back to the intro screen (r12202)
|
||||
- Fix: Force AI to build rail or road instead of bridges if possible, so it does not build bridges everywhere (r12200)
|
||||
- Fix: "Transparent buildings" now only toggles buildings, so show tick when buildings are transparent [FS#1789] (r12198)
|
||||
- Fix: 'Transparent buildings' now only toggles buildings, so show tick when buildings are transparent [FS#1789] (r12198)
|
||||
- Fix: Show correct last year profit when the train had negative income [FS#1788] (r12197)
|
||||
- Fix: There can be oil rigs at map borders, do not set water class for them [FS#1787] (r12195)
|
||||
- Fix: Do not start overtaking if the RV reaches wrong-way one-way-road in the next tiles (r12191)
|
||||
@@ -884,7 +970,7 @@
|
||||
- Fix: Aircraft sometimes stopped mid-air when the airport got destroyed [FS#1503] (r11562)
|
||||
- Fix: Group list was not updated when removing the last group [FS#1504] (r11561)
|
||||
- Fix: Overflow when drawing graphics with high company values [FS#1505] (r11558)
|
||||
- Fix: If ever the air/heliport is suddenly not available while the "chopper" is descending, just go back into flying instead of stopping mid air [FS#1496] (r11546)
|
||||
- Fix: If ever the air/heliport is suddenly not available while the 'chopper' is descending, just go back into flying instead of stopping mid air [FS#1496] (r11546)
|
||||
- Fix: Cargo translation was sometimes done when it should not be done [FS#1501] (r11544)
|
||||
- Fix: [OSX] Detect statvfs at runtime (based on OSX version) instead of compile time. This should prevent a crash on OSX 10.3 with the precompiled binaries (in the load/save windows) (r11541)
|
||||
- Fix: [OSX] Do not try to compile the quartz video driver on OSX 10.3 as it will fail (r11540)
|
||||
@@ -914,7 +1000,7 @@
|
||||
- Feature: Control-Clicking the Centre Main View button on the vehicle window allows the main viewport to follow the chosen vehicle (r11304)
|
||||
- Feature: User customisable faces (r11269)
|
||||
- Feature: Make more advanced rail types more expensive to build (r11265)
|
||||
- Feature: Implement the "moreanimation" feature of TTDP, so we can properly support newindustries (r11228)
|
||||
- Feature: Implement the 'moreanimation' feature of TTDP, so we can properly support newindustries (r11228)
|
||||
- Feature: [NewGRF] Add support for newindustries (r11204)
|
||||
- Feature: Sort the NewGRFs by name, making searching a specific NewGRF a lot easier (r11175)
|
||||
- Feature: Add possibility to show the bounding boxes of sprites using CTRL-B so one can get a better understanding of the used bounding boxes to fix the glitches that still exist. Note that showing the bounding boxes is not glitch free; it only gives you some knowledge where the bounding boxes are (r11174)
|
||||
@@ -928,14 +1014,14 @@
|
||||
- Feature: [OSX] OpenTTD will now pick the same language as finder is set to if no config file is found (r10851)
|
||||
- Feature: Provide an infrastructure to have resizable windows that are smaller than the default window size. Useful for playing on very low resolution systems (r10704)
|
||||
- Feature: Support for autosave_on_exit in the console, so dedicated servers can use it (r10658)
|
||||
- Feature: Add a soft limit of 4096 "entities" in a station's waiting queue and a hard limit of 32768 so (malicious) people cannot cause a "denial of service" attack by filling cargo lists (r10555)
|
||||
- Feature: Add a soft limit of 4096 'entities' in a station's waiting queue and a hard limit of 32768 so (malicious) people cannot cause a 'denial of service' attack by filling cargo lists (r10555)
|
||||
- Feature: Replace all the windows for Industry building by a more flexible one (r10496)
|
||||
- Feature: Support for "prospecting" raw industries, i.e. you pay an amount of money and then it might (with a given chance) build a raw industry somewhere on the map (r10451)
|
||||
- Feature: Support for 'prospecting' raw industries, i.e. you pay an amount of money and then it might (with a given chance) build a raw industry somewhere on the map (r10451)
|
||||
- Feature: Automatic signal completion, enabled by pressing CTRL when dragging signals. Signals will continue following track until an existing signal, junction or station are reached. This currently replaces the existing use of CTRL-drag for changing existing signal type (r10437)
|
||||
- Feature: New sign editor features including switching to previous/next sign (r10401)
|
||||
- Feature: Disallow (in the GUI) the building of infrastructure you do not have available vehicles for. This means that the airport building button is disabled till you can actually build aircraft. The game itself will not disallow you to build the infrastructure and this "new" behaviour can be overridden with a patch setting [FS#669] (r10353)
|
||||
- Feature: Disallow (in the GUI) the building of infrastructure you do not have available vehicles for. This means that the airport building button is disabled till you can actually build aircraft. The game itself will not disallow you to build the infrastructure and this 'new' behaviour can be overridden with a patch setting [FS#669] (r10353)
|
||||
- Feature: Add the possibility of automatically filling in timetables based on the times from the first (or subsequent) run-throughs (r10331)
|
||||
- Feature: Option to select the "default" rail type when you start a new game or load a game. This is done either static, i.e. rail, electrified rail, monorail and maglev, or dynamic which takes either the first or last available railtype or the railtype that is used most on the map [FS#812] (r10329)
|
||||
- Feature: Option to select the 'default' rail type when you start a new game or load a game. This is done either static, i.e. rail, electrified rail, monorail and maglev, or dynamic which takes either the first or last available railtype or the railtype that is used most on the map [FS#812] (r10329)
|
||||
- Feature: Give a better explanation why the loading of a savegame failed and do not crash on loading savegames that were altered by patches or branches [FS#917] (r10300)
|
||||
- Feature: A sticky button for the client list window [FS#885] (r10293)
|
||||
- Feature: Allow double-clicking on certain places: add NewGRF window, build-vehicle and town-action (r10265, r10267)
|
||||
@@ -948,7 +1034,7 @@
|
||||
- Feature: Add support for articulated road vehicles (r10097)
|
||||
- Feature: Allow moving of orders instead of removing them and readding them somewhere else [FS#828] (r10071)
|
||||
- Feature: Replace hard coded spritecache size with a configuration option, sprite_cache_size. The default size is 2MB and the value can range from 1 to 64MB. If you experience slow-downs when scrolling the map, try increasing this setting (r10042)
|
||||
- Feature: Skip to the selected order in the order list when clicking on the "skip" button while pressing CTRL [FS#760] (r10033)
|
||||
- Feature: Skip to the selected order in the order list when clicking on the 'skip' button while pressing CTRL [FS#760] (r10033)
|
||||
- Feature: Sort the strings in server language dropdown and the town names dropdown (r10032, r10036)
|
||||
- Feature: Build windows of trains, road vehicles and ships can now be sorted by cargo capacity (planes already had this option) (r10024)
|
||||
- Feature: More languages flags for servers [FS#790] (r10017)
|
||||
@@ -960,9 +1046,9 @@
|
||||
- Feature: Allow building new stations adjacent to existing stations by holding down control (r9905)
|
||||
- Feature: Add one new zoom-out level: 8 times (r9884)
|
||||
- Feature: Advanced vehicle lists a.k.a. group interface. Now you can make groups of vehicles and perform all kinds of tasks on that given group (r9874)
|
||||
- Feature: Make "improved loading" a proper improved loading instead of loading one (semi-)random vehicle at a time. Furthermore fill multiple vehicles at once when there is enough cargo to do so (r9838)
|
||||
- Feature: Make 'improved loading' a proper improved loading instead of loading one (semi-)random vehicle at a time. Furthermore fill multiple vehicles at once when there is enough cargo to do so (r9838)
|
||||
- Feature: Add drag and drop removal of station tiles (r9810)
|
||||
- Feature: Support for "curvature info", Action 2 for train, variable 45 (r9803)
|
||||
- Feature: Support for 'curvature info', Action 2 for train, variable 45 (r9803)
|
||||
- Feature: [NewGRF] Add action 1, 2 and 3 support for canals (r9797)
|
||||
- Feature: Add the possibility to choose different road patterns for towns to use (r9779)
|
||||
- Feature: Add an option to automatically pause when starting a new game (r9734)
|
||||
@@ -1032,11 +1118,11 @@
|
||||
- Fix: Crash when having the Finance window opened of the player you are cheating to [FS#1177] (r11028)
|
||||
- Fix: Switching players (using the cheat) crashed on Big Endian machines [FS#1150] (r11023)
|
||||
- Fix: The canal border determination did not take oil rigs into consideration (r11022)
|
||||
- Fix: Do not display income/expenses when they do not belong to a "valid" tile, like the money cheat/giving money [FS#1175] (r11021)
|
||||
- Fix: Do not display income/expenses when they do not belong to a 'valid' tile, like the money cheat/giving money [FS#1175] (r11021)
|
||||
- Fix: One could not give money when (s)he had too much money or rather: when casting the amount of money to an int32 becomes negative [FS#1174] (r11020)
|
||||
- Fix: When determining the gender of a string, do not assume that the gender is in the front of the string when there can be case switching code at that location [FS#1104] (r10792)
|
||||
- Fix: Determining whether there is a tunnel going under the lowered area is only needed in two directions instead of all four, so take the directions (one for each axis) to the nearest border (along the given axis) [FS#1058] (r10686)
|
||||
- Fix: Graphical glitches when the "link landscape toolbar" patch is turned on when opening one of the construction toolbars [FS#1076] (r10685)
|
||||
- Fix: Graphical glitches when the 'link landscape toolbar' patch is turned on when opening one of the construction toolbars [FS#1076] (r10685)
|
||||
- Fix: Trolly AI did not know about steep slopes, and used wrong tileh in some cases [FS#1070] (r10655)
|
||||
- Fix: Be consistent with the space between the company name and the player number, i.e. always put a space between them [FS#1052] (r10627)
|
||||
- Fix: [YAPF] Ships received curve penalty for non-diagonal straight move (r10578)
|
||||
@@ -1093,7 +1179,7 @@
|
||||
- Fix: [Windows] MIDI does not stop when closing openttd [FS#1164] (r11029)
|
||||
- Fix: Do not unconditionally assume that a tile has a depot (r11027)
|
||||
- Fix: Give a more correct error when building some things on tile 0 [FS#1173] (r11024)
|
||||
- Fix: Do not display income/expenses when they do not belong to a "valid" tile, like the money cheat and giving money [FS#1175] (r11021)
|
||||
- Fix: Do not display income/expenses when they do not belong to a 'valid' tile, like the money cheat and giving money [FS#1175] (r11021)
|
||||
- Fix: One could not give money when (s)he had too much money [FS#1174] (r11020)
|
||||
- Fix: Disallow buying/selling shares in your own company or a bankrupt company [FS#1169] (r11018)
|
||||
- Fix: Crash when quiting the game in one of the end score windows [FS#1218] (r11071)
|
||||
@@ -1107,7 +1193,7 @@
|
||||
- Fix: Removing road with the road removal tool would also work with a negative bank account, making the bank account even more negative than it was [FS#1125] (r10890)
|
||||
- Fix: Some isocodes were wrong, resulting in some NewGRF not working properly for the affected languages (r10877)
|
||||
- Fix: [Windows] Do not try to minimise or restore the window when closing OpenTTD [FS#998] (r10835)
|
||||
- Fix: Trains going over bridges would get the "going down hill" accelerate bonus, which causes trains to go faster on bridges than they would be going on level land [FS#1096] (r10739)
|
||||
- Fix: Trains going over bridges would get the 'going down hill' accelerate bonus, which causes trains to go faster on bridges than they would be going on level land [FS#1096] (r10739)
|
||||
- Fix: Trains being split into two pieces when loading an old savegame [FS#1062] (r10735)
|
||||
- Fix: [OS/2] Fix chdir problem with open/save dialog (r10650)
|
||||
- Fix: One could not remove locks that were build in a (very) old version of OpenTTD [FS#1038] (r10593)
|
||||
@@ -1133,11 +1219,11 @@
|
||||
- Fix: Acceleration for trains on slopes is not calculated properly [FS#786] (r10344, r10317)
|
||||
- Fix: The 'old' pathfinders (OPF and NPF) for road vehicles could not find a path when in a tunnel [FS#290] (r10345)
|
||||
- Fix: Only add the autoreplace menu when autoreplace actually knows about the group [FS#880] (r10337)
|
||||
- Fix: Signal state sometimes not properly set when the signal "pathfinder" reached the end of a line [FS#910] (r10336)
|
||||
- Fix: Signal state sometimes not properly set when the signal 'pathfinder' reached the end of a line [FS#910] (r10336)
|
||||
- Fix: News messages were shown over the endgame/highscore windows [FS#943] (r10333)
|
||||
- Fix: Rail could be destroyed when building tunnels (r10306)
|
||||
- Fix: Flush the output of the dedicated server console (r10295)
|
||||
- Fix: The "pause" key did not work in the scenario editor (r10294)
|
||||
- Fix: The 'pause' key did not work in the scenario editor (r10294)
|
||||
- Fix: Age non-front engines too (so when you move engines around in the depot they do not get age 0 when they are much older [FS#202] (r10288)
|
||||
- Fix: Do not make everyone spectator if 1 joining client failed to create new company (r10284)
|
||||
- Fix: Remove invalid characters (for the file system) from savegame names [FS#916, FS#850] (r10272, r10116)
|
||||
@@ -1145,7 +1231,7 @@
|
||||
- Fix: Do not look in every direction for tunnels when building one, one direction is enough (r10258)
|
||||
- Fix: [Windows] Do not mess desktop when using ALT-TAB [FS#876] (r10251, r10186)
|
||||
- Fix: Take the age of the front vehicle for station rating (r10246)
|
||||
- Fix: Terraforming wipes out canals. Now you always have to remove the canal before terraforming, instead of "just" removing the canal [FS#594] (r10240)
|
||||
- Fix: Terraforming wipes out canals. Now you always have to remove the canal before terraforming, instead of 'just' removing the canal [FS#594] (r10240)
|
||||
- Fix: Only 2 trains could crash at one time as collision checking stopped on the first hit. This could technically cause desyncs in network games as the collision hash order is not guaranteed [FS#892] (r10222)
|
||||
- Fix: Land under foundations was terraform when it should not be terraformed [FS#882, FS#890] (r10219)
|
||||
- Fix: Do not make a 270 degree turn on the international airport when a 90 degree turn is enough (r10187)
|
||||
@@ -1158,9 +1244,9 @@
|
||||
- Fix: When you got a sufficiently small resolution, there is a possibility for a division by zero when a sound is played (r10138)
|
||||
- Fix: When removing a dock, a ship will always try to reach the old location of the dock even when it cannot anymore because it the old location of the dock is now land instead of water [FS#810] (r10131)
|
||||
- Fix: SetCurrentGrfLangID returned the wrong language ids for most languages (r10130)
|
||||
- Fix: Some NewGRFs use the same (unused in the "current" climate) sprite IDs. Normally this gives some artefacts, but when one NewGRF expects it to be a sprite and another NewGRF overwrites it with a non-sprite nasty things happen (drawing a non-sprite crashes OTTD) [FS#838] (r10109)
|
||||
- Fix: Multiple subsequent "give money" actions could result in duplicate messages that money has been transfered when it only happened once, or tell you paid money when you did not [FS#834, FS#839] (r10087, r10085)
|
||||
- Fix: "Deactivate Electrified Railways" did not work [FS#836] (10083)
|
||||
- Fix: Some NewGRFs use the same (unused in the 'current' climate) sprite IDs. Normally this gives some artefacts, but when one NewGRF expects it to be a sprite and another NewGRF overwrites it with a non-sprite nasty things happen (drawing a non-sprite crashes OTTD) [FS#838] (r10109)
|
||||
- Fix: Multiple subsequent 'give money' actions could result in duplicate messages that money has been transfered when it only happened once, or tell you paid money when you did not [FS#834, FS#839] (r10087, r10085)
|
||||
- Fix: 'Deactivate Electrified Railways' did not work [FS#836] (10083)
|
||||
- Fix: Memory leaks in the networking code [FS#846, FS#844] (r10082, r10075)
|
||||
- Fix: Coverage area highlight was still show when it was turned off for docks [FS#835] (r10068)
|
||||
- Fix: Do not use override engine type for articulated wagon parts (r10048)
|
||||
@@ -1188,7 +1274,7 @@
|
||||
- Fix: Remove arbitrary limit on length of NewGRF strings (r9775)
|
||||
- Fix: [NewGRF] Ignore axis-bit of station tile layouts [FS#756] (r9758)
|
||||
- Fix: [win32] Dead key and open/close console (r9728)
|
||||
- Fix: When you have closed the "Load game"/"New game" windows which you started from the "start server" menu, you should not start a server when starting a new game [SF#1244842] (r9757)
|
||||
- Fix: When you have closed the 'Load game'/'New game' windows which you started from the 'start server' menu, you should not start a server when starting a new game [SF#1244842] (r9757)
|
||||
- Fix: Trains were lost after autorenewal/autoreplace [FS#732] (r9753)
|
||||
- Fix: Stop flooded towns from building roads on water [FS#598] (r9743)
|
||||
- Fix: Station signs were not resized when the language changed [FS#672] (r9741)
|
||||
@@ -1208,7 +1294,7 @@
|
||||
0.5.1-RC3 (2007-04-17)
|
||||
------------------------------------------------------------------------
|
||||
- Feature: Add list_patches to console commands; shows all patches and values (r9565)
|
||||
- Fix: Select "Custom" in the difficulty settings gui when changing a setting [FS#733] (r9647)
|
||||
- Fix: Select 'Custom' in the difficulty settings gui when changing a setting [FS#733] (r9647)
|
||||
- Fix: Building rail on steep slopes ignored build_on_slopes patch setting (r9602)
|
||||
- Fix: Wrong characters in Finnish town names (r9641)
|
||||
- Fix: When checking for no vehicle on ground-tiles, do not take into account vehicles that are in the air (r9542)
|
||||
@@ -1241,7 +1327,7 @@
|
||||
- Fix: Shared orders got messed up when the 'first' trains got removed in the depot [FS#685] (r9277)
|
||||
- Fix: Use a less CPU-intensive algorithm to find a random industry for the AI to prevent it slowing down the game [FS#644] (r9251)
|
||||
- Fix: When loading games, enroute_from was updated in the wrong place, causing issues with TTD savegames/scenarios (r9147)
|
||||
- Fix: "Train is lost" message is generated incorrectly [FS#676] (r9146)
|
||||
- Fix: 'Train is lost' message is generated incorrectly [FS#676] (r9146)
|
||||
- Fix: Difficulty level button was not selected when opening the difficulty window (r9117)
|
||||
- Fix: The wrong catenary wires were drawn for tunnel entrances [FS#612] (r9077)
|
||||
- Fix: The intercontinental airport used 'T-junction' runway sprites when there is no exit in the middle of the runway as in the city airport [FS#529] (r9076)
|
||||
@@ -1253,7 +1339,7 @@
|
||||
- Fix: Desync caused by buffer overflow [FS#664] (r9027)
|
||||
- Fix: When cutting strings into multiple lines also take into consideration whitespace characters of more than 1 byte length (r9012)
|
||||
- Fix: Play the correct engine sound based on the engine type instead of the sprite (r9009)
|
||||
- Fix: New locomotive names were not announced in the news, it said "new railway locomotive available - railway locomotive" [FS#581] (r9000, r9001)
|
||||
- Fix: New locomotive names were not announced in the news, it said 'new railway locomotive available - railway locomotive' [FS#581] (r9000, r9001)
|
||||
- Fix: [NewGRF] Do not select a disabled platform length/number of track count when going out of drag-drop mode [FS#450] (r8999)
|
||||
- Fix: [win] Resolution doubled in cfg file when fullscreen mode used [FS#642] (r8994)
|
||||
- Fix: The industry list should also be (re)set when the number of industries is 0 [FS#656] (r8980)
|
||||
@@ -1266,7 +1352,7 @@
|
||||
0.5.0 (2007-02-27)
|
||||
------------------------------------------------------------------------
|
||||
- Feature: Add the ability to load newer TTDP games (the tile information for coasts has changed) (r8738)
|
||||
- Feature: Selecting "end of orders" and deleting will delete all the vehicle's orders (shared mode unchanged) (r8685)
|
||||
- Feature: Selecting 'end of orders' and deleting will delete all the vehicle's orders (shared mode unchanged) (r8685)
|
||||
- Codechange: Call GetFirstVehicleInChain only for trains thus increasing performance in large games (r8744)
|
||||
- Fix: Possible crashes, problems with aircraft and airport removal (r8921)
|
||||
- Fix: Do not show the 'edit sign' window for spectators (r8808)
|
||||
@@ -1306,7 +1392,7 @@
|
||||
- Fix: Network client crashes when a server sends a 0-sized savegame [FS#556] (r8167)
|
||||
- Fix: Several desync fixes (incorrect roadstop update of old games, autoreplace bugs) [FS#551] (r8137, r8147, r8157)
|
||||
- Fix: Some disaster-events fixed: combat chopper shoots from right position, submarine once again moves around (r8140, r8158)
|
||||
- Fix: "out of sprite memory" warning messages due to incorrect assumption of requested memory for sprites (r8133)
|
||||
- Fix: 'out of sprite memory' warning messages due to incorrect assumption of requested memory for sprites (r8133)
|
||||
- Fix: Bouys are now built and numbered 1..9 not 9..1 [FS#538] (r8123)
|
||||
- Fix: Clicking for more news properly cycles through the news history backwards, and does not show the first item doubly if it's already open (r8049)
|
||||
- Fix: Crash when removing a town in the scenario editor while the query window is open for one of the town's tiles (r8030)
|
||||
@@ -1362,7 +1448,7 @@
|
||||
- Feature: Increase the chatbuffer of chat messages, messages longer than the graphical box will be wrapped to a new line (r6956)
|
||||
- Feature: Allow typing longer text than visible for an editbox; it will scroll properly now (r6954)
|
||||
- Feature: Allow spectators to team-speak to eachother (r6933)
|
||||
- Feature: Allow for " to be in console tokens. Escape them with \. eg \" (r6875)
|
||||
- Feature: Allow for ' to be in console tokens. Escape them with \. eg \' (r6875)
|
||||
- Feature: Change the functionality of the chat window. SHIFT+ENTER (SHIFT+T) sends a message to all players, CTRL+ENTER (CTRL+T) sends a message to all team mates and ENTER (T) is customizable (r6824)
|
||||
- Feature: (Train is) lost message is now generated immediately when pathfinder cannot find the path (r6800)
|
||||
- Feature: Add a measurement tool that will show dimensions and height differences of various draggable tools (r6758)
|
||||
@@ -1375,7 +1461,7 @@
|
||||
- Feature: Depot and vehicle list windows reworked a bit with more buttons to include 'Autoreplace all' (instantly), 'Sell all', 'Start all' and 'Stop all' (r6542, r6552, r6515)
|
||||
- Feature: Using goto depot with a different control selection will now alter the service/stopping in depot flag instead of cancelling the goto depot order (r6295)
|
||||
- Feature: When automatically detecting the language try to first match language+territory (e.g. de_CH), then just language (e.g. de) and fall back to en_GB otherwise (r6290)
|
||||
- Feature: Add a "goto depot" button to various vehicle list windows (r6229, r6246)
|
||||
- Feature: Add a 'goto depot' button to various vehicle list windows (r6229, r6246)
|
||||
- Feature: Save max_companies/clients/spectators in the config file (r6170)
|
||||
- Feature: Vehicle status bar will show the heading string in different colours to visually discern the difference between a service and a forced stop (r6165, r6414)
|
||||
- Feature: Control clicking Goto Depot will now make the vehicle service instead of stop in depot (r6165)
|
||||
@@ -1394,12 +1480,12 @@
|
||||
- Feature: Also allow horizontal and vertical rails on steep slopes (r5864)
|
||||
- Feature: Allow building of (certain) rails, roads and bridge ramps on steep sloped tiles (r5833)
|
||||
- Feature: Replacing from a train engine without cargo capacity to one with cargo capacity will now make autoreplace refit the engine to carry the cargo type from the last wagon in the train (r5465)
|
||||
- Feature: [OSX] Macs with touchpads that support two finger scrolling can now use this "scrollwheel" to scroll up/down (r5460)
|
||||
- Feature: [OSX] Macs with touchpads that support two finger scrolling can now use this 'scrollwheel' to scroll up/down (r5460)
|
||||
- Feature: Allow building canals at sea-level, using ctrl to toggle canal or plain water tile. This allows building of non-raisable sea-level water ways (useful in multiplayer) and dikes for low-level areas (r5403)
|
||||
- Feature: Add 4 new airports. 2 for aircraft, 2 for helicopters (r5346)
|
||||
- Feature: Implement smooth horizontal depot and, vehicle list scrolling for trains (r5046)
|
||||
- Feature: Add new pathfinder, YAPF. Has greatly improved performance and better, fully configurable, pathfinding (yapf) (r4987)
|
||||
- Feature: Add a new console command "players" that lists current players along with basic stats [FS#150] (r4828)
|
||||
- Feature: Add a new console command 'players' that lists current players along with basic stats [FS#150] (r4828)
|
||||
- Feature: Station List View can now be sorted and filtered (by waiting cargo type and facilities) (r4822)
|
||||
- Feature: The integer-list parser now accepts a space character as an item seperator next to the comma for openttd.cfg (r4490)
|
||||
- Feature: Add support for electric railways as a seperate tracktype. Electric trains will not run on non-electrfied track unless otherwise controlled by patch option (elrails) (r4150)
|
||||
@@ -1429,7 +1515,7 @@
|
||||
- Codechange: Show more correct capacity of articulated wagons in the train purchase list (r6650)
|
||||
- Codechange: When showing tooltips, properly position the tooltip taking into account window dimensions and cursor (r6405)
|
||||
- Codechange: Speed up the animated cursors a bit so they move once in a while at least (r6367)
|
||||
- Codechange: Remove the "unsorted" vehicle sorter, because it's plain useless (r6270)
|
||||
- Codechange: Remove the 'unsorted' vehicle sorter, because it's plain useless (r6270)
|
||||
- Codechange: Remove MSVC6 support. The compiler was too stupid and too many workarounds were needed. Please switch to mingw or VC2005++ express (r5286)
|
||||
- Codechange: Allow a switch in Makefile.config to disable threads in OpenTTD (r5978)
|
||||
- Codechange: [win32] Add native x64 target to VS2005 project files (r5813)
|
||||
@@ -1441,7 +1527,7 @@
|
||||
- Codechange: Completely remove the deprecated -p parameter (is superseded by -n) (r3508)
|
||||
- Fix: Town ratings were not reset when a company went bankrupt (r7433)
|
||||
- Fix: With realistic acceleration, guarantee a minimum braking force is applied. This ensures trains will stop when going down hill (r7425)
|
||||
- Fix: Changed "kick off" acceleration resulted in only a small amount of power being applied; this resulted in a perceived delay before trains moved (r7421)
|
||||
- Fix: Changed 'kick off' acceleration resulted in only a small amount of power being applied; this resulted in a perceived delay before trains moved (r7421)
|
||||
- Fix: Long delay for message windows to appear. Immediately show a new message if present if no news window is open, or has just been closed instead of waiting for the timer of the current news to time out [FS#255] (r7402)
|
||||
- Fix: Deleting Train in depot with autoreplace fails [FS#418] (r7385)
|
||||
- Fix: Do not update vehicle images when turning a train around. During this procedure the train is split into parts which can result in incorrect images being used (r7378)
|
||||
@@ -1449,16 +1535,16 @@
|
||||
- Fix: Segmentation fault in the SDL video driver when one goes to fullscreen and there are no suitable resolutions (r7332)
|
||||
- Fix: When loading a game from a dedicated server the local player set to 0, theoretically enabling the dedicated server to also play (r7312)
|
||||
- Fix: TTDPatch vars are little endian (r7282)
|
||||
- Fix: Always display the excavation of roadworks even when fully zoomed out or "full details" are off (r7240)
|
||||
- Fix: Always display the excavation of roadworks even when fully zoomed out or 'full details' are off (r7240)
|
||||
- Fix: Window allocation and deletion messed with the actual window pointer, possibly crashing OpenTTD [FS#350, SF#1560913] (r7205)
|
||||
- Fix: Callback not executed for non-player based patch changes in multiplayer for all clients; possible desync issue (r7190)
|
||||
- Fix: Station sign (and base station coordinates) did not move along with station when station moved by walking [FS#388] (r7169)
|
||||
- Fix: MiniMap was misplacing vehicles sometimes [FS#402] (r7166)
|
||||
- Fix: Some mouse events possibly lost under high CPU load, handle mouse input right away instead of waiting for GameLoop [FS#221, SF1168820] (r7157)
|
||||
- Fix: Some keyboard events possibly lost under high CPU load, handle keyboard input in place instead of global variables magic [FS#279] (r7153)
|
||||
- Fix: "Position of Main Toolbar" option is not honored when starting new game or loading saved [FS#172] (r7130)
|
||||
- Fix: 'Position of Main Toolbar' option is not honored when starting new game or loading saved [FS#172] (r7130)
|
||||
- Fix: Synchronize the engine-renew settings of a player when joining a multiplayer game (r7126)
|
||||
- Fix: Several errors/glitches related to multiplayer and bankrupcy (mainly server), and non-updated company-information (r7125)
|
||||
- Fix: Several errors/glitches related to multiplayer and bankrupcty (mainly server), and non-updated company-information (r7125)
|
||||
- Fix: Cloning a vehicle that has been refitted would incur the expense as running costs, not new vehicles [FS#371] (r7115)
|
||||
- Fix: Do not let ships enter partial water tiles under bridges; they will travel up land... (r7110)
|
||||
- Fix: AI tried to build road from the back or side of road stop/depot (r7069)
|
||||
@@ -1529,7 +1615,7 @@
|
||||
- Fix: It was possible to dig into a tunnel if certain rail combinations were ontop of it
|
||||
- Fix: A HQ could only be flooded at its northern tile, the other 3 were immune to water
|
||||
- Fix: Fix several glitches concerning foundations. Houses, property (rail/road/bridge/etc.) and cursor are now aligned properly
|
||||
- Fix: Prohibit altering a road tile while road works are in progress. This fixes some glitches like "turning" the excavation by adding/removing road bits or removing the road piece
|
||||
- Fix: Prohibit altering a road tile while road works are in progress. This fixes some glitches like 'turning' the excavation by adding/removing road bits or removing the road piece
|
||||
- Fix: Only advertise the server to your external IP/network (eg not to 127.0.0.1) and use proper broadcast addresses
|
||||
- Fix: '-f' switch is not valid on windows, so do not show it in help
|
||||
- Fix: [Autoreplace] Autoreplaced trains can leave all wagons in depot under certain circumstances
|
||||
@@ -1542,7 +1628,7 @@
|
||||
- Fix: [AI] The trolly AI used information from the wrong industry when calculating the amount of to be transported goods
|
||||
- Fix: [NTP] Fix NTP over bridges: do not check the rail type when on a bridge
|
||||
- Fix: Truncate text in dropdown lists to stop text overflowing
|
||||
- Fix: "Erroneous train reversal on waypoints". When processing the next train order, do not even consider reversing the train if the last order was to a waypoint
|
||||
- Fix: 'Erroneous train reversal on waypoints'. When processing the next train order, do not even consider reversing the train if the last order was to a waypoint
|
||||
- Fix: Starting a new scenario did not adhere to local difficulty settings but took it from the scenario itself. That mode is for 'play scenario'
|
||||
- Fix: Vehicles on a sloped tile under a bridge were affected by the bridge speed limit
|
||||
- Fix: Issue with train pathfinding over level crossings
|
||||
@@ -1559,14 +1645,14 @@
|
||||
- Fix: Game no longer crashes when the last vehicle servicing a station has been deleted
|
||||
- Fix: Reset the last built railtype when starting a new game
|
||||
- Fix: Cloned vehicles get the same service interval as the original vehicle
|
||||
- Fix: Game no longer errors out when "Many random towns" is selected in the scenario editor
|
||||
- Fix: Game no longer errors out when 'Many random towns' is selected in the scenario editor
|
||||
- Fix: Obscure road dragging bug. The road build command did not return the appropiate error message of invalid-slope when building road
|
||||
- Fix: Temperate bank will no longer appear (during game) in tropic landscape. This bug is from the original game
|
||||
- Fix: Specify the 'stopall' console command as a debug command
|
||||
- Fix: Fixed a problem that caused DeliverGoodsToIndustry to not work as intended
|
||||
- Fix: Ships and aircraft can now be used as feeders as well
|
||||
- Fix: When a multiheaded train is sold the pointers were not updated correctly causing sporadious crashes/disconnects
|
||||
- Fix: New plantations now cause the correct ".. being planted .." news item
|
||||
- Fix: New plantations now cause the correct '.. being planted ..' news item
|
||||
- Fix: Danish town names were saved/loaded as Swiss
|
||||
- Fix: Removing roads on crossings was done without a check for ownership
|
||||
- Fix: [Autoreplace] Fix drawing of train list for outdated engines
|
||||
@@ -1642,12 +1728,12 @@
|
||||
- Feature: [localisation] Support genders (r2594)
|
||||
- Feature: [localisation] Support cases (r2597)
|
||||
- Feature: Add support for truncating strings to a given (pixel) length (r2607)
|
||||
- Feature: Overhaul DirectMusic MIDI backend, remove "experimental" status (r2712)
|
||||
- Feature: Overhaul DirectMusic MIDI backend, remove 'experimental' status (r2712)
|
||||
- Feature: Change the driver probing algorithm: Use the first music/sound/video which succeeds initialising instead of bailing out after the first. No need to specify -snull if no soundcard is present anymore (r2728)
|
||||
- Feature: The Main Toolbar Dropdown Menu can now display disabled items (r2734)
|
||||
- Feature: Clone vehicles (r2764)
|
||||
- Feature: When starting without a config file determine the language on basis of the current locale (r2777)
|
||||
- Feature: [NewGRF] Add support for "extended bytes" (r2872)
|
||||
- Feature: [NewGRF] Add support for 'extended bytes' (r2872)
|
||||
- Feature: [localisation] Major step twoards ISO-8859-15: Implement missing characters (r2879)
|
||||
- Feature: Implement the console command rm to remove savegames (r2941)
|
||||
- Feature: Danish town names (r2957)
|
||||
@@ -1723,7 +1809,7 @@
|
||||
- Fix: Several format string vulnerabilities and buffer overflows in the network code (r2899)
|
||||
- Fix: fixed issue where autorenewed vehicles did not get all stats updated (r2912)
|
||||
- Fix: Exit the child of the extmidi backend with _exit() instead of exit(), because we do not want any atexit handlers - especially flushing output streams - to run, if exec() fails (r2938)
|
||||
- Fix: Server crash with "say"-command (r2950)
|
||||
- Fix: Server crash with 'say'-command (r2950)
|
||||
- Fix: Fix win32 midi volume level control which did not work (r2960)
|
||||
- Fix: [OSX] quitting the game no longer leaves a process behind that eats all the CPU power (r3281)
|
||||
- Fix: Fix for UFO-broken waypoint [SF#1216203] (r2961)
|
||||
@@ -1848,9 +1934,9 @@
|
||||
- Fix: Autosave ignoring settings [SF#1149487]
|
||||
- Fix: Infinite access for A:\ (win32). Patch [1171208]. Only requery drive(s) if the user changes a directory, also surpress the OS error box that pops up on some windows machines [SF#1024703]
|
||||
- Fix: Create Lake and draggable Create Desert tools [SF#1095110]
|
||||
- Fix: Trains "Go to depot" button: click twice skip to next order [SF#1172878]
|
||||
- Fix: Engine power not updated w/auto replace" autoreplace now forces an update of the cache [SF#1146215]
|
||||
- Fix: Path displaying as "C:\\" in saveload window win32-only [SF#1173690]
|
||||
- Fix: Trains 'Go to depot' button: click twice skip to next order [SF#1172878]
|
||||
- Fix: Engine power not updated w/auto replace' autoreplace now forces an update of the cache [SF#1146215]
|
||||
- Fix: Path displaying as 'C:\\' in saveload window win32-only [SF#1173690]
|
||||
- Fix: Click & drag removal of road assertion fail [SF#1179892]
|
||||
- Fix: Max loan always in euros, use _opt_ptr instead of _opt [SF#1174237]
|
||||
- Fix: AI orders its vehicles to a competitor's truck stop [SF#1184201]
|
||||
@@ -1898,7 +1984,7 @@
|
||||
- Feature: [Windows] CTRL+V (Paste) now works on all editboxes. This includes 'Add Server', chat, etc
|
||||
- Feature: [Windows] dedicated server is now functioning correctly
|
||||
- Feature: Addded keyboard shortcuts for the order window
|
||||
- Feature: Aircraft refit options have been restricted to "sane" values
|
||||
- Feature: Aircraft refit options have been restricted to 'sane' values
|
||||
- Feature: allows setting the production values of the rawmaterial producing industries in the editor
|
||||
- Feature: console support for loading maps. Use 'load', 'list_files' and 'goto_dir' to navigate and load games
|
||||
- Feature: Display server port in the multiplayer game info window
|
||||
@@ -1909,7 +1995,7 @@
|
||||
- Feature: New companies receive a 5-year protection period against buying-up
|
||||
- Feature: norwegian townnames
|
||||
- Feature: Order Checking is only execute for ONE vehicle in an order-share system
|
||||
- Feature: Passengers aircraft now ignore the amount of mail for "full load any" options
|
||||
- Feature: Passengers aircraft now ignore the amount of mail for 'full load any' options
|
||||
- Feature: place multiple accepting industies nearby in the editor mode if the appropriate patches are set
|
||||
- Feature: population in label of the town (patch setting)
|
||||
- Feature: scrolling credits list (in alphabetical order)
|
||||
@@ -1943,7 +2029,7 @@
|
||||
- Fix: Crash if generating land while industry window is open. This also happened for towns and the land information window [SF#1101179]
|
||||
- Fix: Configure Patches window text overflow [SF#1101906]
|
||||
- Fix: console in dedicated server [SF#1101963]
|
||||
- Fix: Game crashed when clicking "new face" or "company color" twice [SF#1102275]
|
||||
- Fix: Game crashed when clicking 'new face' or 'company color' twice [SF#1102275]
|
||||
- Fix: Vehicle lists are now redrawn when a vehicle arrives in a depot. Station-specific vehicle lists are now redrawn daily as well (not only the master list) [SF#1099535, SF#1102776]
|
||||
- Fix: font size changing. Dedicated server did not have code filtering, 'tab' could result in bigger fonts [SF#1103113]
|
||||
- Fix: Order Check messages are now validated before displayed [SF#1103187]
|
||||
@@ -1981,7 +2067,7 @@
|
||||
- Fix: finally zooming in/out always works
|
||||
- Fix: fixed chat-bug (that from a certain moment, nobody could talk)
|
||||
- Fix: fixed weight for double-head trains and with that the acceleration (now maglev lvl4 can reach their top speed, and are faster than lvl3)
|
||||
- Fix: Full-Loading trains no longer get "lost" after a while
|
||||
- Fix: Full-Loading trains no longer get 'lost' after a while
|
||||
- Fix: Graphs were not updated correctly when one graph with a certain selection was already open and another graph window was opened
|
||||
- Fix: in multiplayer clientlist can only be opened once
|
||||
- Fix: Loan does not count against the company value
|
||||
@@ -2001,7 +2087,7 @@
|
||||
- Fix: the scrollbar in the network gui (server list) now updates when scrolling
|
||||
- Fix: Train crashes should no longer desync the game
|
||||
- Fix: When deleting an order, the next pointer was not cleared, resulting in some unusual behavoir from time to time
|
||||
- Fix: You can now also delete automatically found servers by pressing "del"
|
||||
- Fix: You can now also delete automatically found servers by pressing 'del'
|
||||
- Fix: You should no longer be able to delete bridges on any type of underground when there is a vehicle on it
|
||||
|
||||
|
||||
@@ -2100,7 +2186,7 @@
|
||||
- Change: Removed patch no_train_service. Instead you can set the default service interval for any vehicle type to 'disabled'
|
||||
- Codechange: Comments added to the code
|
||||
- Codechange: Made bridge building code more readable [SF#996244]
|
||||
- Feature: "None" as option for number of industries in difficulty settings
|
||||
- Feature: 'None' as option for number of industries in difficulty settings
|
||||
- Feature: Add many random industries and towns in scenario editor
|
||||
- Feature: Added Autosignals, just like Autorail. Can copy signal style, convert signal<->semaphore, etc
|
||||
- Feature: Added level land button to scenario editor
|
||||
@@ -2214,8 +2300,8 @@
|
||||
- Fix: Weird two tile bridges on slopes [SF#996065]
|
||||
- Fix: Empty strings in signs [SF#997303]
|
||||
- Fix: Junction after tunnel bug [SF#997703]
|
||||
- Fix: "autosave" directoy creation (MorphOS/AmigaOS) [SF#999592]
|
||||
- Fix: I lost all wagons. Half-assed fix for lost wagons. But now users can at least fix this problem. Consolecommand "resetengines" [SF#1001540]
|
||||
- Fix: 'autosave' directoy creation (MorphOS/AmigaOS) [SF#999592]
|
||||
- Fix: I lost all wagons. Half-assed fix for lost wagons. But now users can at least fix this problem. Consolecommand 'resetengines' [SF#1001540]
|
||||
- Fix: BuildRoadOutsideStation fix [SF#1006530]
|
||||
- Fix: Autorenew issues [SF#1006715]
|
||||
- Fix: Copy orders between bus/truck possible [SF#1007272]
|
||||
@@ -2257,7 +2343,7 @@
|
||||
- Feature: Land info now shows type of signal
|
||||
- Feature: Realistic train reversing
|
||||
- Feature: Added support for 64 bit CPUs
|
||||
- Feature: Added water quantity level "very low", which is the default for easy mode now
|
||||
- Feature: Added water quantity level 'very low', which is the default for easy mode now
|
||||
- Feature: Realistic acceleration turned on, train must first slow down and stop before it can reverse
|
||||
- Feature: [MorphOS]: Various small improvement to make the the game feel more native
|
||||
- Feature: Alt + f now toggles full screen (alt + enter still works)
|
||||
@@ -2272,7 +2358,7 @@
|
||||
- Feature: Initial GRF support.You have to enable it in openttd.cfg using [NewGRF] setting
|
||||
- Feature: Smooth economy changes
|
||||
- Feature: TTDPatch-style gotodepot. Ship depots and aircraft hangars can be inserted in the schedule as well
|
||||
- Feature: Ability to add "service if needed" orders (the "full load" button changes to "service" after selecting a depot order)
|
||||
- Feature: Ability to add 'service if needed' orders (the 'full load' button changes to 'service' after selecting a depot order)
|
||||
- Feature: If a vehicle has depot orders in its schedule, automatic servicing is disabled
|
||||
- Feature: Patch setting so that helicopters get serviced automatically on helipad
|
||||
- Feature: Center toolbar on screen
|
||||
@@ -2334,7 +2420,7 @@
|
||||
- Fix: Inflation was way too high when intrest rate = 0
|
||||
- Fix: Cannot sell anything if money is TOO negative
|
||||
- Fix: Fast forward button resets
|
||||
- Fix: "Refit train" button remains
|
||||
- Fix: 'Refit train' button remains
|
||||
- Fix: Enable up/down scrolling with the mouse
|
||||
- Fix: 1920 all trains
|
||||
- Fix: Wrong heli breakdownspeed
|
||||
@@ -2378,7 +2464,7 @@
|
||||
- Feature: Bemidi support
|
||||
- Feature: Added Icelandic currency
|
||||
- Change: Plant area of trees now allowed for 20x20 area
|
||||
- Change: "kmh^-1" to "km/h"
|
||||
- Change: 'kmh^-1' to 'km/h'
|
||||
- Change: Show original savegame names for oldstyle savegames
|
||||
- Change: Autosave go to autosave/
|
||||
- Fix: Do not allow building railroad stations on airports or bus stations
|
||||
@@ -2431,7 +2517,7 @@
|
||||
- Feature: More realistic train starting and stopping
|
||||
- Change: New directory structure (*.grf+sample.cat in data subdir, *.lng in lang subdir)
|
||||
- Fix: Shift+arrows keys scrolls faster
|
||||
- Fix: "Monorail in 1985" which allowed you to build monorail/maglev at any year [SF#941880]
|
||||
- Fix: 'Monorail in 1985' which allowed you to build monorail/maglev at any year [SF#941880]
|
||||
- Fix: Town ratings when companies are deleted/merged
|
||||
- Fix: Vehicle reliability calculation in third phase
|
||||
- Fix: Random world button in scenario editor does not build cities, industries, trees
|
||||
@@ -2556,27 +2642,27 @@
|
||||
- Feature: Show semaphores on the right side if right-sided traffic
|
||||
- Feature: Patch options configuration window
|
||||
- Feature: Autorail build tool
|
||||
- Feature: "Show yearly finances window" option
|
||||
- Feature: "Signals on drive side" patch
|
||||
- Feature: "Show full date in statusbar" option
|
||||
- Feature: 'Show yearly finances window' option
|
||||
- Feature: 'Signals on drive side' patch
|
||||
- Feature: 'Show full date in statusbar' option
|
||||
- Feature: Italian translation
|
||||
- Feature: Road and rail removal by dragging a selection
|
||||
- Feature: News item for "train is unprofitable"
|
||||
- Feature: News item for "train is lost"
|
||||
- Feature: News item for 'train is unprofitable'
|
||||
- Feature: News item for 'train is lost'
|
||||
- Feature: [Win32] Double size mode (Ctrl-d to toggle)
|
||||
- Feature: "Multiple similar industries in close proximity" option
|
||||
- Feature: "Multiple industries per down" option
|
||||
- Feature: "Crossing tunnels" option
|
||||
- Feature: Order sharing and copying ("goto" on other vehicle to copy, ctrl+"goto" to share)
|
||||
- Feature: 'Multiple similar industries in close proximity' option
|
||||
- Feature: 'Multiple industries per down' option
|
||||
- Feature: 'Crossing tunnels' option
|
||||
- Feature: Order sharing and copying ('goto' on other vehicle to copy, ctrl+'goto' to share)
|
||||
- Feature: Remember last built rail type
|
||||
- Feature: "Debtmax" faster loan management with ctrl key
|
||||
- Feature: "Go to depot" orders option
|
||||
- Feature: "Long bridges" option
|
||||
- Feature: "Select goods" option
|
||||
- Feature: "No train service" option
|
||||
- Feature: "No inflation" option
|
||||
- Feature: 'Debtmax' faster loan management with ctrl key
|
||||
- Feature: 'Go to depot' orders option
|
||||
- Feature: 'Long bridges' option
|
||||
- Feature: 'Select goods' option
|
||||
- Feature: 'No train service' option
|
||||
- Feature: 'No inflation' option
|
||||
- Feature: Automatically detect available resolutions
|
||||
- Feature: "Full load any" option, as in TTDPatch
|
||||
- Feature: 'Full load any' option, as in TTDPatch
|
||||
- Feature: Automatic detection of available language files
|
||||
- Feature: German translation
|
||||
- Feature: Finnish town names
|
||||
@@ -2601,7 +2687,7 @@
|
||||
- Fix: Disallow buoy in north corner
|
||||
- Fix: Shift key now increases game speed only when game window is active
|
||||
- Fix: Ctrl button now works with SDL driver
|
||||
- Fix: Incorrect weight displayed in "new trains" window
|
||||
- Fix: Incorrect weight displayed in 'new trains' window
|
||||
- Fix: Incorrect train running cost in newspaper
|
||||
|
||||
|
||||
@@ -2682,8 +2768,8 @@
|
||||
- Feature: Command line -g flag now optionally takes a game to load
|
||||
- Add: External MIDI driver for Unix version
|
||||
- Add: DirectMusic driver for Win32 version
|
||||
- Add: "build tracks on slopes" feature
|
||||
- Add: 'build tracks on slopes' feature
|
||||
- Fix: Problem where directories were not displayed under Linux
|
||||
- Fix: Colors in map window for routes
|
||||
- Fix: Road drive side
|
||||
- Fix: "Fund road construction" not clickable when unavailable
|
||||
- Fix: 'Fund road construction' not clickable when unavailable
|
||||
|
15
config.lib
15
config.lib
@@ -5,7 +5,7 @@ log() {
|
||||
}
|
||||
|
||||
set_default() {
|
||||
released_version=""
|
||||
released_version="0.7.3-RC1"
|
||||
|
||||
ignore_extra_parameters="0"
|
||||
# We set all kinds of defaults for params. Later on the user can override
|
||||
@@ -1301,7 +1301,8 @@ make_cflags_and_ldflags() {
|
||||
CFLAGS="$CFLAGS -DWITH_ICU"
|
||||
CFLAGS="$CFLAGS `$icu_config --cppflags | tr '\n\r' ' '`"
|
||||
|
||||
LIBS="$LIBS `$icu_config --ldflags-libsonly | tr '\n\r' ' '`"
|
||||
# Some icu-configs have the 'feature' of not adding a space where others do add the space
|
||||
LIBS="$LIBS `$icu_config --ldflags-searchpath` `$icu_config --ldflags-libsonly | tr '\n\r' ' '`"
|
||||
fi
|
||||
|
||||
|
||||
@@ -1407,7 +1408,9 @@ make_cflags_and_ldflags() {
|
||||
# Also make makedepend aware of compiler's built-in defines.
|
||||
if [ "$with_makedepend" != "0" ]; then
|
||||
cflags_makedep="`echo | $cxx_host -E -x c++ -dM - | sed 's@.define @-D@g;s@ .*@ @g;s@(.*)@@g' | tr -d '\r\n'`"
|
||||
cflags_makedep="$cflags_makedep `echo "$CFLAGS" | sed 's@ /@ -@g;s@-I[ ]*[^ ]*@@g'`"
|
||||
|
||||
# Please escape ALL " within ` because e.g. "" terminates the string in some sh implementations
|
||||
cflags_makedep="$cflags_makedep `echo \"$CFLAGS\" | sed 's@ /@ -@g;s@-I[ ]*[^ ]*@@g'`"
|
||||
else
|
||||
makedepend=""
|
||||
fi
|
||||
@@ -2294,9 +2297,9 @@ detect_icu() {
|
||||
log 2 " returned $version"
|
||||
log 2 " exit code $ret"
|
||||
|
||||
if [ -z "$version" ] || [ "$ret" != "0" ] || [ "$shortversion" -lt "20" ]; then
|
||||
if [ -n "$shortversion" ] && [ "$shortversion" -lt "20" ]; then
|
||||
log 1 "checking libicu... needs at least version 2.0.0, icu NOT enabled"
|
||||
if [ -z "$version" ] || [ "$ret" != "0" ] || [ "$shortversion" -lt "22" ]; then
|
||||
if [ -n "$shortversion" ] && [ "$shortversion" -lt "22" ]; then
|
||||
log 1 "checking libicu... needs at least version 2.2.0, icu NOT enabled"
|
||||
else
|
||||
log 1 "checking libicu... not found"
|
||||
fi
|
||||
|
21
configure
vendored
21
configure
vendored
@@ -54,8 +54,9 @@ if [ "$1" = "--reconfig" ] || [ "$1" = "--reconfigure" ]; then
|
||||
# Make sure we don't lock config.cache
|
||||
cat config.cache | sed 's@\\ @\\\\ @g' > cache.tmp
|
||||
sh cache.tmp
|
||||
RET=$?
|
||||
rm -f cache.tmp
|
||||
exit $?
|
||||
exit $RET
|
||||
fi
|
||||
|
||||
set_default
|
||||
@@ -85,7 +86,7 @@ if [ ! -f "$LANG_DIR/english.txt" ]; then
|
||||
fi
|
||||
|
||||
# Read the source.list and process it
|
||||
SRCS="`< $ROOT_DIR/source.list tr '\r' '\n' | $awk '
|
||||
AWKCOMMAND='
|
||||
{ }
|
||||
/^( *)#end/ { if (deep == skip) { skip -= 1; } deep -= 1; next; }
|
||||
/^( *)#else/ { if (deep == skip) { skip -= 1; } else if (deep - 1 == skip) { skip += 1; } next; }
|
||||
@@ -130,13 +131,17 @@ SRCS="`< $ROOT_DIR/source.list tr '\r' '\n' | $awk '
|
||||
print $0;
|
||||
}
|
||||
}
|
||||
' | $PIPE_SORT`"
|
||||
'
|
||||
|
||||
OBJS_C="` echo \"$SRCS\" | $awk ' { ORS = " " } /\.c$/ { gsub(".c$", ".o", $0); print $0; }'`"
|
||||
OBJS_CPP="`echo \"$SRCS\" | $awk ' { ORS = " " } /\.cpp$/ { gsub(".cpp$", ".o", $0); print $0; }'`"
|
||||
OBJS_MM="` echo \"$SRCS\" | $awk ' { ORS = " " } /\.mm$/ { gsub(".mm$", ".o", $0); print $0; }'`"
|
||||
OBJS_RC="` echo \"$SRCS\" | $awk ' { ORS = " " } /\.rc$/ { gsub(".rc$", ".o", $0); print $0; }'`"
|
||||
SRCS="` echo \"$SRCS\" | $awk ' { ORS = " " } { print $0; }'`"
|
||||
# Read the source.list and process it
|
||||
# Please escape ALL " within ` because e.g. "" terminates the string in some sh implementations
|
||||
SRCS="`< $ROOT_DIR/source.list tr '\r' '\n' | $awk \"$AWKCOMMAND\" | $PIPE_SORT`"
|
||||
|
||||
OBJS_C="` echo \"$SRCS\" | $awk ' { ORS = \" \" } /\.c$/ { gsub(\".c$\", \".o\", $0); print $0; }'`"
|
||||
OBJS_CPP="`echo \"$SRCS\" | $awk ' { ORS = \" \" } /\.cpp$/ { gsub(\".cpp$\", \".o\", $0); print $0; }'`"
|
||||
OBJS_MM="` echo \"$SRCS\" | $awk ' { ORS = \" \" } /\.mm$/ { gsub(\".mm$\", \".o\", $0); print $0; }'`"
|
||||
OBJS_RC="` echo \"$SRCS\" | $awk ' { ORS = \" \" } /\.rc$/ { gsub(\".rc$\", \".o\", $0); print $0; }'`"
|
||||
SRCS="` echo \"$SRCS\" | $awk ' { ORS = \" \" } { print $0; }'`"
|
||||
|
||||
# In makefiles, we always use -u for sort
|
||||
if [ -z "$sort" ]; then
|
||||
|
@@ -26,7 +26,7 @@
|
||||
[metadata]
|
||||
; the name of the pack, preferably less than 16 characters
|
||||
name = example
|
||||
; the short name (4 characters), used to identify this set within NewGRFs
|
||||
; the short name (4 characters), used to identify this set
|
||||
shortname = XMPL
|
||||
; the version of this graphics set (read as single integer)
|
||||
version = 0
|
||||
@@ -49,6 +49,8 @@ tropical = TRGH.GRF
|
||||
; GRF file with extra toyland sprites
|
||||
toyland = TRGT.GRF
|
||||
; NewGRF file using Actions 5, 7, 9 and A to replace sprites
|
||||
; Must use a GRF ID starting with FF so it cannot be selected from
|
||||
; the in-game NewGRF list and (thus) be loaded twice.
|
||||
extra = OPENTTDD.GRF
|
||||
|
||||
; The md5s section lists the MD5 checksum for the files that replace them.
|
||||
|
@@ -11,10 +11,12 @@ by the number below on http://bugs.openttd.org.
|
||||
If the bug report is closed, it has been fixed, which then can be verified
|
||||
in the latest SVN version of /trunk.
|
||||
|
||||
Bugs for 0.7.1
|
||||
Bugs for 0.7.2
|
||||
------------------------------------------------------------------------
|
||||
URL: http://bugs.openttd.org
|
||||
|
||||
- 3057 Road vehicle sometimes 'forget' the need for servicing
|
||||
- 3040 Not all alternatives are always shown in the "Join station" list
|
||||
- 2955 With path signals depots are less likely to be visited
|
||||
- 2891 Ignore signal does not keep the train running when in path signalled block till the next signal
|
||||
- 2769 No offer for buying bankrupt AIs
|
||||
|
@@ -1,7 +1,6 @@
|
||||
# $Id$
|
||||
# http://standards.freedesktop.org/desktop-entry-spec/desktop-entry-spec-1.1.html
|
||||
[Desktop Entry]
|
||||
Encoding=UTF-8
|
||||
Type=Application
|
||||
Version=1.1
|
||||
Name=!!MENU_NAME!!
|
||||
|
@@ -1,50 +1,68 @@
|
||||
openttd (0.7.3~RC1) unstable; urgency=low
|
||||
|
||||
* New upstream release.
|
||||
|
||||
-- Matthijs Kooijman <matthijs@stdin.nl> Sun, 13 Sep 2009 10:25:56 +0200
|
||||
|
||||
openttd (0.7.2) unstable; urgency=low
|
||||
|
||||
* New upstream release.
|
||||
|
||||
-- Matthijs Kooijman <matthijs@stdin.nl> Sat, 01 Aug 2009 00:19:43 +0200
|
||||
|
||||
openttd (0.7.2~RC2) unstable; urgency=low
|
||||
|
||||
* New upstream release.
|
||||
|
||||
-- Matthijs Kooijman <matthijs@stdin.nl> Tue, 21 Jul 2009 20:25:56 +0200
|
||||
|
||||
openttd (0.7.2~RC1) unstable; urgency=low
|
||||
|
||||
* New upstream release.
|
||||
|
||||
-- Matthijs Kooijman <matthijs@stdin.nl> Wed, 15 Jul 2008 22:25:56 +0200
|
||||
-- Matthijs Kooijman <matthijs@stdin.nl> Wed, 15 Jul 2009 22:25:56 +0200
|
||||
|
||||
openttd (0.7.1) unstable; urgency=low
|
||||
|
||||
* New upstream release.
|
||||
|
||||
-- Matthijs Kooijman <matthijs@stdin.nl> Tue, 09 Jun 2008 01:34:56 +0200
|
||||
-- Matthijs Kooijman <matthijs@stdin.nl> Tue, 09 Jun 2009 01:34:56 +0200
|
||||
|
||||
openttd (0.7.1~RC3) unstable; urgency=low
|
||||
|
||||
* New upstream release.
|
||||
|
||||
-- Matthijs Kooijman <matthijs@stdin.nl> Wed, 03 Jun 2008 15:34:56 +0200
|
||||
-- Matthijs Kooijman <matthijs@stdin.nl> Wed, 03 Jun 2009 15:34:56 +0200
|
||||
|
||||
openttd (0.7.1~RC2) unstable; urgency=low
|
||||
|
||||
* New upstream release.
|
||||
|
||||
-- Matthijs Kooijman <matthijs@stdin.nl> Thu, 21 Mar 2008 14:34:56 +0200
|
||||
-- Matthijs Kooijman <matthijs@stdin.nl> Thu, 21 Mar 2009 14:34:56 +0200
|
||||
|
||||
openttd (0.7.1~RC1) unstable; urgency=low
|
||||
|
||||
* New upstream release.
|
||||
|
||||
-- Matthijs Kooijman <matthijs@stdin.nl> Mon, 11 Mar 2008 17:34:56 +0200
|
||||
-- Matthijs Kooijman <matthijs@stdin.nl> Mon, 11 Mar 2009 17:34:56 +0200
|
||||
|
||||
openttd (0.7.0) unstable; urgency=low
|
||||
|
||||
* New upstream release.
|
||||
|
||||
-- Matthijs Kooijman <matthijs@stdin.nl> Wed, 01 Apr 2008 13:37:42 +0000
|
||||
-- Matthijs Kooijman <matthijs@stdin.nl> Wed, 01 Apr 2009 13:37:42 +0000
|
||||
|
||||
openttd (0.7.0~RC2) unstable; urgency=low
|
||||
|
||||
* New upstream release.
|
||||
|
||||
-- Matthijs Kooijman <matthijs@stdin.nl> Mon, 23 Mar 2008 00:42:00 +0200
|
||||
-- Matthijs Kooijman <matthijs@stdin.nl> Mon, 23 Mar 2009 00:42:00 +0200
|
||||
|
||||
openttd (0.7.0~RC1) unstable; urgency=low
|
||||
|
||||
* New upstream release.
|
||||
|
||||
-- Matthijs Kooijman <matthijs@stdin.nl> Mon, 16 Mar 2008 00:07:00 +0200
|
||||
-- Matthijs Kooijman <matthijs@stdin.nl> Mon, 16 Mar 2009 00:07:00 +0200
|
||||
|
||||
openttd (0.7.0~beta2) unstable; urgency=low
|
||||
|
||||
|
@@ -7,10 +7,13 @@
|
||||
# This file and all modifications and additions to the pristine
|
||||
# package are under the same license as the package itself
|
||||
#
|
||||
# Note: for (at least) CentOS '#' comments end '\' continue command on new line.
|
||||
# So place all '#' commented parameters of e.g. configure to the end.
|
||||
#
|
||||
#-------------------------------------------------------------------------------
|
||||
|
||||
Name: openttd
|
||||
Version: 0.7.2-RC1
|
||||
Version: 0.7.3
|
||||
Release: 1%{?dist}
|
||||
|
||||
Group: Amusements/Games
|
||||
@@ -18,7 +21,7 @@ License: GPLv2
|
||||
URL: http://www.openttd.org
|
||||
Summary: OpenTTD is an Open Source clone of Chris Sawyer's Transport Tycoon Deluxe
|
||||
|
||||
Source: %{name}-%{version}.tar.bz2
|
||||
Source: %{name}-%{version}-source.tar.bz2
|
||||
|
||||
Requires: fontconfig
|
||||
Requires: libicu
|
||||
@@ -76,22 +79,23 @@ download of the game.
|
||||
--prefix-dir="%{_prefix}" \
|
||||
--binary-dir="bin" \
|
||||
--binary-name="%{name}" \
|
||||
# --menu-name="OpenTTD" \
|
||||
# --data-dir="share\games\%{name}" \
|
||||
# --doc-dir="share\doc\%{name}" \
|
||||
# --icon-dir="share/pixmaps" \
|
||||
# --icon-theme-dir="share/icons/hicolor" \
|
||||
# --man-dir="share/man/man6" \
|
||||
# --menu-dir="share/applications" \
|
||||
--enable-debug=0 \
|
||||
# --menu_group="Game;" \
|
||||
--with-sdl \
|
||||
--with-zlib \
|
||||
--with-png \
|
||||
--with-freetype \
|
||||
--with-fontconfig \
|
||||
--with-icu \
|
||||
--enable-strip
|
||||
--enable-strip \
|
||||
# --menu_group="Game;" \
|
||||
# --menu-name="OpenTTD" \
|
||||
# --data-dir="share\games\%{name}" \
|
||||
# --doc-dir="share\doc\%{name}" \
|
||||
# --icon-dir="share/pixmaps" \
|
||||
# --icon-theme-dir="share/icons/hicolor" \
|
||||
# --man-dir="share/man/man6" \
|
||||
# --menu-dir="share/applications"
|
||||
|
||||
make %{?_smp_mflags}
|
||||
|
||||
%install
|
||||
@@ -101,11 +105,11 @@ make install INSTALL_DIR="%{buildroot}"
|
||||
# Validate menu entrys (vendor specific)
|
||||
%if %{_vendor} == "redhat" || %{_vendor}=="fedora"
|
||||
desktop-file-install \
|
||||
# --delete-original \
|
||||
--vendor="%{_vendor}" \
|
||||
--remove-key Version \
|
||||
--dir="%{buildroot}/%{_datadir}/applications/" \
|
||||
"%{buildroot}/%{_datadir}/applications/%{name}.desktop"
|
||||
"%{buildroot}/%{_datadir}/applications/%{name}.desktop" \
|
||||
# --delete-original
|
||||
%endif
|
||||
|
||||
%clean
|
||||
@@ -148,7 +152,8 @@ fi
|
||||
%{_datadir}/doc/%{name}/*
|
||||
%{_datadir}/games/%{name}/lang/*
|
||||
%{_datadir}/games/%{name}/data/*
|
||||
%{_datadir}/applications/%{name}.desktop
|
||||
%{_datadir}/games/%{name}/scripts/*
|
||||
%{_datadir}/applications/*%{name}.desktop
|
||||
%{_datadir}/pixmaps/*
|
||||
%{_datadir}/icons/hicolor/*/apps/%{name}.png
|
||||
%doc %{_mandir}/man6/%{name}.6.gz
|
||||
|
@@ -1,7 +1,7 @@
|
||||
!define APPNAME "OpenTTD" ; Define application name
|
||||
!define APPVERSION "0.7.2-RC1" ; Define application version
|
||||
!define APPVERSIONINTERNAL "0.7.2.0" ; Define application version in X.X.X.X
|
||||
!define INSTALLERVERSION 63 ; NEED TO UPDATE THIS FOR EVERY RELEASE!!!
|
||||
!define APPVERSION "0.7.3-RC1" ; Define application version
|
||||
!define APPVERSIONINTERNAL "0.7.3.0" ; Define application version in X.X.X.X
|
||||
!define INSTALLERVERSION 66 ; NEED TO UPDATE THIS FOR EVERY RELEASE!!!
|
||||
!include ${VERSION_INCLUDE}
|
||||
|
||||
!define APPURLLINK "http://www.openttd.org"
|
||||
@@ -71,10 +71,6 @@ Page custom SelectCDEnter SelectCDExit ": TTD folder"
|
||||
|
||||
!insertmacro MUI_PAGE_INSTFILES
|
||||
|
||||
;-----------------------------------------------------
|
||||
; New custom page to show UNICODE and MSLU information
|
||||
Page custom ShowWarningsPage
|
||||
|
||||
!define MUI_FINISHPAGE_TITLE_3LINES
|
||||
!define MUI_FINISHPAGE_RUN_TEXT "Run ${APPNAMEANDVERSION} now!"
|
||||
!define MUI_FINISHPAGE_RUN "$INSTDIR\openttd.exe"
|
||||
@@ -133,7 +129,6 @@ Section "!OpenTTD" Section1
|
||||
; Delete old files from the main dir. they are now placed in data/ and lang/
|
||||
Delete "$INSTDIR\*.lng"
|
||||
Delete "$INSTDIR\*.grf"
|
||||
Delete "$INSTDIR\*.obg"
|
||||
Delete "$INSTDIR\sample.cat"
|
||||
Delete "$INSTDIR\ttd.exe"
|
||||
|
||||
@@ -372,23 +367,6 @@ WinNT:
|
||||
ClearErrors
|
||||
FunctionEnd
|
||||
|
||||
;----------------------------------------------------------------------------------
|
||||
; Custom page function to show notices for running OpenTTD (only for win32 systems)
|
||||
; We have extracted this custom page as Notice in the .onInit function
|
||||
Function ShowWarningsPage
|
||||
Call GetWindowsVersion
|
||||
Pop $R0
|
||||
; Don't show the UNICODE notice if the installer is run on Win9x systems
|
||||
StrCmp $R0 "win9x" 0 WinNT
|
||||
Abort
|
||||
WinNT:
|
||||
!insertmacro MUI_HEADER_TEXT "Installation Complete" "Important notices for OpenTTD usage."
|
||||
!insertmacro MUI_INSTALLOPTIONS_EXTRACT_AS "notice.ini" "Notice"
|
||||
!insertmacro MUI_INSTALLOPTIONS_INITDIALOG "Notice"
|
||||
ClearErrors
|
||||
!insertmacro MUI_INSTALLOPTIONS_SHOW
|
||||
FunctionEnd
|
||||
|
||||
;-------------------------------------------------------------------------------
|
||||
; Determine windows version, returns "win9x" if Win9x/Me or "winnt" on the stack
|
||||
Function GetWindowsVersion
|
||||
|
@@ -1,30 +0,0 @@
|
||||
; Ini file generated by the HM NIS Edit IO designer.
|
||||
[Settings]
|
||||
NumFields=3
|
||||
CancelEnabled=0
|
||||
|
||||
[Field 1]
|
||||
Type=Groupbox
|
||||
Text=UNICODE support
|
||||
Left=8
|
||||
Right=292
|
||||
Top=0
|
||||
Bottom=75
|
||||
|
||||
[Field 2]
|
||||
Type=Label
|
||||
Text=This version of OpenTTD has support for UNICODE, allowing users to use non-ASCII character sets such as Russian or Japanese.\r\nSelecting such a language will result in an unusable and garbled interface. You will need to specify a font that has support for these characters in openttd.cfg, or alternatively use an appropiate grf file.\r\n\r\nFor more information please refer to the readme or the wiki.
|
||||
Left=13
|
||||
Right=284
|
||||
Top=9
|
||||
Bottom=65
|
||||
|
||||
[Field 3]
|
||||
Type=Link
|
||||
Text=OpenTTD wiki
|
||||
Left=238
|
||||
Right=284
|
||||
Top=64
|
||||
Bottom=72
|
||||
State=http://wiki.openttd.org/index.php/Unicode
|
||||
|
@@ -32,6 +32,7 @@ Sub UpdateFiles(version)
|
||||
modified = Mid(version, InStrRev(version, Chr(9)) + 1)
|
||||
version = Mid(version, 1, InStr(version, Chr(9)) - 1)
|
||||
Else
|
||||
version = "0.7.3-RC1"
|
||||
revision = 0
|
||||
modified = 1
|
||||
End If
|
||||
|
@@ -153,7 +153,7 @@ load_lang_data() {
|
||||
Name=\"VCCustomBuildTool\"
|
||||
Description=\"Generating "$i" language file\"
|
||||
CommandLine=\"..\\objs\\strgen\\strgen.exe -s ..\\src\\lang -d ..\\bin\\lang "\$(InputPath)"
\"
|
||||
AdditionalDependencies=\"\"
|
||||
AdditionalDependencies=\"..\\src\\lang\\english.txt\"
|
||||
Outputs=\"..\\bin\\lang\\"$i".lng\"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
|
@@ -203,7 +203,7 @@ Function load_lang_data(dir)
|
||||
& vbCrLf & " Name=" & Chr(34) & "VCCustomBuildTool" & Chr(34) _
|
||||
& vbCrLf & " Description=" & Chr(34) & "Generating " & file & " language file" & Chr(34) _
|
||||
& vbCrLf & " CommandLine=" & Chr(34) & "..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "$(InputPath)"
" & Chr(34) _
|
||||
& vbCrLf & " AdditionalDependencies=" & Chr(34) & Chr(34) _
|
||||
& vbCrLf & " AdditionalDependencies=" & Chr(34) & "..\src\lang\english.txt" & Chr(34) _
|
||||
& vbCrLf & " Outputs=" & Chr(34) & "..\bin\lang\" & file & ".lng" & Chr(34) _
|
||||
& vbCrLf & " />" _
|
||||
& vbCrLf & " </FileConfiguration>" _
|
||||
|
@@ -56,7 +56,7 @@
|
||||
Name="VCCustomBuildTool"
|
||||
Description="Generating afrikaans language file"
|
||||
CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "$(InputPath)"
"
|
||||
AdditionalDependencies=""
|
||||
AdditionalDependencies="..\src\lang\english.txt"
|
||||
Outputs="..\bin\lang\afrikaans.lng"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
@@ -71,7 +71,7 @@
|
||||
Name="VCCustomBuildTool"
|
||||
Description="Generating arabic_egypt language file"
|
||||
CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "$(InputPath)"
"
|
||||
AdditionalDependencies=""
|
||||
AdditionalDependencies="..\src\lang\english.txt"
|
||||
Outputs="..\bin\lang\arabic_egypt.lng"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
@@ -86,7 +86,7 @@
|
||||
Name="VCCustomBuildTool"
|
||||
Description="Generating brazilian_portuguese language file"
|
||||
CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "$(InputPath)"
"
|
||||
AdditionalDependencies=""
|
||||
AdditionalDependencies="..\src\lang\english.txt"
|
||||
Outputs="..\bin\lang\brazilian_portuguese.lng"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
@@ -101,7 +101,7 @@
|
||||
Name="VCCustomBuildTool"
|
||||
Description="Generating bulgarian language file"
|
||||
CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "$(InputPath)"
"
|
||||
AdditionalDependencies=""
|
||||
AdditionalDependencies="..\src\lang\english.txt"
|
||||
Outputs="..\bin\lang\bulgarian.lng"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
@@ -116,7 +116,7 @@
|
||||
Name="VCCustomBuildTool"
|
||||
Description="Generating catalan language file"
|
||||
CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "$(InputPath)"
"
|
||||
AdditionalDependencies=""
|
||||
AdditionalDependencies="..\src\lang\english.txt"
|
||||
Outputs="..\bin\lang\catalan.lng"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
@@ -131,7 +131,7 @@
|
||||
Name="VCCustomBuildTool"
|
||||
Description="Generating croatian language file"
|
||||
CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "$(InputPath)"
"
|
||||
AdditionalDependencies=""
|
||||
AdditionalDependencies="..\src\lang\english.txt"
|
||||
Outputs="..\bin\lang\croatian.lng"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
@@ -146,7 +146,7 @@
|
||||
Name="VCCustomBuildTool"
|
||||
Description="Generating czech language file"
|
||||
CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "$(InputPath)"
"
|
||||
AdditionalDependencies=""
|
||||
AdditionalDependencies="..\src\lang\english.txt"
|
||||
Outputs="..\bin\lang\czech.lng"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
@@ -161,7 +161,7 @@
|
||||
Name="VCCustomBuildTool"
|
||||
Description="Generating danish language file"
|
||||
CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "$(InputPath)"
"
|
||||
AdditionalDependencies=""
|
||||
AdditionalDependencies="..\src\lang\english.txt"
|
||||
Outputs="..\bin\lang\danish.lng"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
@@ -176,7 +176,7 @@
|
||||
Name="VCCustomBuildTool"
|
||||
Description="Generating dutch language file"
|
||||
CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "$(InputPath)"
"
|
||||
AdditionalDependencies=""
|
||||
AdditionalDependencies="..\src\lang\english.txt"
|
||||
Outputs="..\bin\lang\dutch.lng"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
@@ -191,7 +191,7 @@
|
||||
Name="VCCustomBuildTool"
|
||||
Description="Generating english language file"
|
||||
CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "$(InputPath)"
"
|
||||
AdditionalDependencies=""
|
||||
AdditionalDependencies="..\src\lang\english.txt"
|
||||
Outputs="..\bin\lang\english.lng"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
@@ -206,7 +206,7 @@
|
||||
Name="VCCustomBuildTool"
|
||||
Description="Generating english_US language file"
|
||||
CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "$(InputPath)"
"
|
||||
AdditionalDependencies=""
|
||||
AdditionalDependencies="..\src\lang\english.txt"
|
||||
Outputs="..\bin\lang\english_US.lng"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
@@ -221,7 +221,7 @@
|
||||
Name="VCCustomBuildTool"
|
||||
Description="Generating esperanto language file"
|
||||
CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "$(InputPath)"
"
|
||||
AdditionalDependencies=""
|
||||
AdditionalDependencies="..\src\lang\english.txt"
|
||||
Outputs="..\bin\lang\esperanto.lng"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
@@ -236,7 +236,7 @@
|
||||
Name="VCCustomBuildTool"
|
||||
Description="Generating estonian language file"
|
||||
CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "$(InputPath)"
"
|
||||
AdditionalDependencies=""
|
||||
AdditionalDependencies="..\src\lang\english.txt"
|
||||
Outputs="..\bin\lang\estonian.lng"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
@@ -251,7 +251,7 @@
|
||||
Name="VCCustomBuildTool"
|
||||
Description="Generating finnish language file"
|
||||
CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "$(InputPath)"
"
|
||||
AdditionalDependencies=""
|
||||
AdditionalDependencies="..\src\lang\english.txt"
|
||||
Outputs="..\bin\lang\finnish.lng"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
@@ -266,7 +266,7 @@
|
||||
Name="VCCustomBuildTool"
|
||||
Description="Generating french language file"
|
||||
CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "$(InputPath)"
"
|
||||
AdditionalDependencies=""
|
||||
AdditionalDependencies="..\src\lang\english.txt"
|
||||
Outputs="..\bin\lang\french.lng"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
@@ -281,7 +281,7 @@
|
||||
Name="VCCustomBuildTool"
|
||||
Description="Generating galician language file"
|
||||
CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "$(InputPath)"
"
|
||||
AdditionalDependencies=""
|
||||
AdditionalDependencies="..\src\lang\english.txt"
|
||||
Outputs="..\bin\lang\galician.lng"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
@@ -296,7 +296,7 @@
|
||||
Name="VCCustomBuildTool"
|
||||
Description="Generating german language file"
|
||||
CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "$(InputPath)"
"
|
||||
AdditionalDependencies=""
|
||||
AdditionalDependencies="..\src\lang\english.txt"
|
||||
Outputs="..\bin\lang\german.lng"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
@@ -311,7 +311,7 @@
|
||||
Name="VCCustomBuildTool"
|
||||
Description="Generating hebrew language file"
|
||||
CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "$(InputPath)"
"
|
||||
AdditionalDependencies=""
|
||||
AdditionalDependencies="..\src\lang\english.txt"
|
||||
Outputs="..\bin\lang\hebrew.lng"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
@@ -326,7 +326,7 @@
|
||||
Name="VCCustomBuildTool"
|
||||
Description="Generating hungarian language file"
|
||||
CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "$(InputPath)"
"
|
||||
AdditionalDependencies=""
|
||||
AdditionalDependencies="..\src\lang\english.txt"
|
||||
Outputs="..\bin\lang\hungarian.lng"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
@@ -341,7 +341,7 @@
|
||||
Name="VCCustomBuildTool"
|
||||
Description="Generating icelandic language file"
|
||||
CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "$(InputPath)"
"
|
||||
AdditionalDependencies=""
|
||||
AdditionalDependencies="..\src\lang\english.txt"
|
||||
Outputs="..\bin\lang\icelandic.lng"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
@@ -356,7 +356,7 @@
|
||||
Name="VCCustomBuildTool"
|
||||
Description="Generating indonesian language file"
|
||||
CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "$(InputPath)"
"
|
||||
AdditionalDependencies=""
|
||||
AdditionalDependencies="..\src\lang\english.txt"
|
||||
Outputs="..\bin\lang\indonesian.lng"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
@@ -371,7 +371,7 @@
|
||||
Name="VCCustomBuildTool"
|
||||
Description="Generating italian language file"
|
||||
CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "$(InputPath)"
"
|
||||
AdditionalDependencies=""
|
||||
AdditionalDependencies="..\src\lang\english.txt"
|
||||
Outputs="..\bin\lang\italian.lng"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
@@ -386,7 +386,7 @@
|
||||
Name="VCCustomBuildTool"
|
||||
Description="Generating japanese language file"
|
||||
CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "$(InputPath)"
"
|
||||
AdditionalDependencies=""
|
||||
AdditionalDependencies="..\src\lang\english.txt"
|
||||
Outputs="..\bin\lang\japanese.lng"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
@@ -401,7 +401,7 @@
|
||||
Name="VCCustomBuildTool"
|
||||
Description="Generating korean language file"
|
||||
CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "$(InputPath)"
"
|
||||
AdditionalDependencies=""
|
||||
AdditionalDependencies="..\src\lang\english.txt"
|
||||
Outputs="..\bin\lang\korean.lng"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
@@ -416,7 +416,7 @@
|
||||
Name="VCCustomBuildTool"
|
||||
Description="Generating latvian language file"
|
||||
CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "$(InputPath)"
"
|
||||
AdditionalDependencies=""
|
||||
AdditionalDependencies="..\src\lang\english.txt"
|
||||
Outputs="..\bin\lang\latvian.lng"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
@@ -431,7 +431,7 @@
|
||||
Name="VCCustomBuildTool"
|
||||
Description="Generating lithuanian language file"
|
||||
CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "$(InputPath)"
"
|
||||
AdditionalDependencies=""
|
||||
AdditionalDependencies="..\src\lang\english.txt"
|
||||
Outputs="..\bin\lang\lithuanian.lng"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
@@ -446,7 +446,7 @@
|
||||
Name="VCCustomBuildTool"
|
||||
Description="Generating luxembourgish language file"
|
||||
CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "$(InputPath)"
"
|
||||
AdditionalDependencies=""
|
||||
AdditionalDependencies="..\src\lang\english.txt"
|
||||
Outputs="..\bin\lang\luxembourgish.lng"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
@@ -461,7 +461,7 @@
|
||||
Name="VCCustomBuildTool"
|
||||
Description="Generating norwegian_bokmal language file"
|
||||
CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "$(InputPath)"
"
|
||||
AdditionalDependencies=""
|
||||
AdditionalDependencies="..\src\lang\english.txt"
|
||||
Outputs="..\bin\lang\norwegian_bokmal.lng"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
@@ -476,7 +476,7 @@
|
||||
Name="VCCustomBuildTool"
|
||||
Description="Generating norwegian_nynorsk language file"
|
||||
CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "$(InputPath)"
"
|
||||
AdditionalDependencies=""
|
||||
AdditionalDependencies="..\src\lang\english.txt"
|
||||
Outputs="..\bin\lang\norwegian_nynorsk.lng"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
@@ -491,7 +491,7 @@
|
||||
Name="VCCustomBuildTool"
|
||||
Description="Generating piglatin language file"
|
||||
CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "$(InputPath)"
"
|
||||
AdditionalDependencies=""
|
||||
AdditionalDependencies="..\src\lang\english.txt"
|
||||
Outputs="..\bin\lang\piglatin.lng"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
@@ -506,7 +506,7 @@
|
||||
Name="VCCustomBuildTool"
|
||||
Description="Generating polish language file"
|
||||
CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "$(InputPath)"
"
|
||||
AdditionalDependencies=""
|
||||
AdditionalDependencies="..\src\lang\english.txt"
|
||||
Outputs="..\bin\lang\polish.lng"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
@@ -521,7 +521,7 @@
|
||||
Name="VCCustomBuildTool"
|
||||
Description="Generating portuguese language file"
|
||||
CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "$(InputPath)"
"
|
||||
AdditionalDependencies=""
|
||||
AdditionalDependencies="..\src\lang\english.txt"
|
||||
Outputs="..\bin\lang\portuguese.lng"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
@@ -536,7 +536,7 @@
|
||||
Name="VCCustomBuildTool"
|
||||
Description="Generating romanian language file"
|
||||
CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "$(InputPath)"
"
|
||||
AdditionalDependencies=""
|
||||
AdditionalDependencies="..\src\lang\english.txt"
|
||||
Outputs="..\bin\lang\romanian.lng"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
@@ -551,7 +551,7 @@
|
||||
Name="VCCustomBuildTool"
|
||||
Description="Generating russian language file"
|
||||
CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "$(InputPath)"
"
|
||||
AdditionalDependencies=""
|
||||
AdditionalDependencies="..\src\lang\english.txt"
|
||||
Outputs="..\bin\lang\russian.lng"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
@@ -566,7 +566,7 @@
|
||||
Name="VCCustomBuildTool"
|
||||
Description="Generating serbian language file"
|
||||
CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "$(InputPath)"
"
|
||||
AdditionalDependencies=""
|
||||
AdditionalDependencies="..\src\lang\english.txt"
|
||||
Outputs="..\bin\lang\serbian.lng"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
@@ -581,7 +581,7 @@
|
||||
Name="VCCustomBuildTool"
|
||||
Description="Generating simplified_chinese language file"
|
||||
CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "$(InputPath)"
"
|
||||
AdditionalDependencies=""
|
||||
AdditionalDependencies="..\src\lang\english.txt"
|
||||
Outputs="..\bin\lang\simplified_chinese.lng"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
@@ -596,7 +596,7 @@
|
||||
Name="VCCustomBuildTool"
|
||||
Description="Generating slovak language file"
|
||||
CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "$(InputPath)"
"
|
||||
AdditionalDependencies=""
|
||||
AdditionalDependencies="..\src\lang\english.txt"
|
||||
Outputs="..\bin\lang\slovak.lng"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
@@ -611,7 +611,7 @@
|
||||
Name="VCCustomBuildTool"
|
||||
Description="Generating slovenian language file"
|
||||
CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "$(InputPath)"
"
|
||||
AdditionalDependencies=""
|
||||
AdditionalDependencies="..\src\lang\english.txt"
|
||||
Outputs="..\bin\lang\slovenian.lng"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
@@ -626,7 +626,7 @@
|
||||
Name="VCCustomBuildTool"
|
||||
Description="Generating spanish language file"
|
||||
CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "$(InputPath)"
"
|
||||
AdditionalDependencies=""
|
||||
AdditionalDependencies="..\src\lang\english.txt"
|
||||
Outputs="..\bin\lang\spanish.lng"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
@@ -641,7 +641,7 @@
|
||||
Name="VCCustomBuildTool"
|
||||
Description="Generating swedish language file"
|
||||
CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "$(InputPath)"
"
|
||||
AdditionalDependencies=""
|
||||
AdditionalDependencies="..\src\lang\english.txt"
|
||||
Outputs="..\bin\lang\swedish.lng"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
@@ -656,7 +656,7 @@
|
||||
Name="VCCustomBuildTool"
|
||||
Description="Generating traditional_chinese language file"
|
||||
CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "$(InputPath)"
"
|
||||
AdditionalDependencies=""
|
||||
AdditionalDependencies="..\src\lang\english.txt"
|
||||
Outputs="..\bin\lang\traditional_chinese.lng"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
@@ -671,7 +671,7 @@
|
||||
Name="VCCustomBuildTool"
|
||||
Description="Generating turkish language file"
|
||||
CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "$(InputPath)"
"
|
||||
AdditionalDependencies=""
|
||||
AdditionalDependencies="..\src\lang\english.txt"
|
||||
Outputs="..\bin\lang\turkish.lng"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
@@ -686,7 +686,7 @@
|
||||
Name="VCCustomBuildTool"
|
||||
Description="Generating ukrainian language file"
|
||||
CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "$(InputPath)"
"
|
||||
AdditionalDependencies=""
|
||||
AdditionalDependencies="..\src\lang\english.txt"
|
||||
Outputs="..\bin\lang\ukrainian.lng"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
@@ -701,7 +701,7 @@
|
||||
Name="VCCustomBuildTool"
|
||||
Description="Generating welsh language file"
|
||||
CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "$(InputPath)"
"
|
||||
AdditionalDependencies=""
|
||||
AdditionalDependencies="..\src\lang\english.txt"
|
||||
Outputs="..\bin\lang\welsh.lng"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
|
@@ -57,7 +57,7 @@
|
||||
Name="VCCustomBuildTool"
|
||||
Description="Generating afrikaans language file"
|
||||
CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "$(InputPath)"
"
|
||||
AdditionalDependencies=""
|
||||
AdditionalDependencies="..\src\lang\english.txt"
|
||||
Outputs="..\bin\lang\afrikaans.lng"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
@@ -72,7 +72,7 @@
|
||||
Name="VCCustomBuildTool"
|
||||
Description="Generating arabic_egypt language file"
|
||||
CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "$(InputPath)"
"
|
||||
AdditionalDependencies=""
|
||||
AdditionalDependencies="..\src\lang\english.txt"
|
||||
Outputs="..\bin\lang\arabic_egypt.lng"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
@@ -87,7 +87,7 @@
|
||||
Name="VCCustomBuildTool"
|
||||
Description="Generating brazilian_portuguese language file"
|
||||
CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "$(InputPath)"
"
|
||||
AdditionalDependencies=""
|
||||
AdditionalDependencies="..\src\lang\english.txt"
|
||||
Outputs="..\bin\lang\brazilian_portuguese.lng"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
@@ -102,7 +102,7 @@
|
||||
Name="VCCustomBuildTool"
|
||||
Description="Generating bulgarian language file"
|
||||
CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "$(InputPath)"
"
|
||||
AdditionalDependencies=""
|
||||
AdditionalDependencies="..\src\lang\english.txt"
|
||||
Outputs="..\bin\lang\bulgarian.lng"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
@@ -117,7 +117,7 @@
|
||||
Name="VCCustomBuildTool"
|
||||
Description="Generating catalan language file"
|
||||
CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "$(InputPath)"
"
|
||||
AdditionalDependencies=""
|
||||
AdditionalDependencies="..\src\lang\english.txt"
|
||||
Outputs="..\bin\lang\catalan.lng"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
@@ -132,7 +132,7 @@
|
||||
Name="VCCustomBuildTool"
|
||||
Description="Generating croatian language file"
|
||||
CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "$(InputPath)"
"
|
||||
AdditionalDependencies=""
|
||||
AdditionalDependencies="..\src\lang\english.txt"
|
||||
Outputs="..\bin\lang\croatian.lng"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
@@ -147,7 +147,7 @@
|
||||
Name="VCCustomBuildTool"
|
||||
Description="Generating czech language file"
|
||||
CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "$(InputPath)"
"
|
||||
AdditionalDependencies=""
|
||||
AdditionalDependencies="..\src\lang\english.txt"
|
||||
Outputs="..\bin\lang\czech.lng"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
@@ -162,7 +162,7 @@
|
||||
Name="VCCustomBuildTool"
|
||||
Description="Generating danish language file"
|
||||
CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "$(InputPath)"
"
|
||||
AdditionalDependencies=""
|
||||
AdditionalDependencies="..\src\lang\english.txt"
|
||||
Outputs="..\bin\lang\danish.lng"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
@@ -177,7 +177,7 @@
|
||||
Name="VCCustomBuildTool"
|
||||
Description="Generating dutch language file"
|
||||
CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "$(InputPath)"
"
|
||||
AdditionalDependencies=""
|
||||
AdditionalDependencies="..\src\lang\english.txt"
|
||||
Outputs="..\bin\lang\dutch.lng"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
@@ -192,7 +192,7 @@
|
||||
Name="VCCustomBuildTool"
|
||||
Description="Generating english language file"
|
||||
CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "$(InputPath)"
"
|
||||
AdditionalDependencies=""
|
||||
AdditionalDependencies="..\src\lang\english.txt"
|
||||
Outputs="..\bin\lang\english.lng"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
@@ -207,7 +207,7 @@
|
||||
Name="VCCustomBuildTool"
|
||||
Description="Generating english_US language file"
|
||||
CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "$(InputPath)"
"
|
||||
AdditionalDependencies=""
|
||||
AdditionalDependencies="..\src\lang\english.txt"
|
||||
Outputs="..\bin\lang\english_US.lng"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
@@ -222,7 +222,7 @@
|
||||
Name="VCCustomBuildTool"
|
||||
Description="Generating esperanto language file"
|
||||
CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "$(InputPath)"
"
|
||||
AdditionalDependencies=""
|
||||
AdditionalDependencies="..\src\lang\english.txt"
|
||||
Outputs="..\bin\lang\esperanto.lng"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
@@ -237,7 +237,7 @@
|
||||
Name="VCCustomBuildTool"
|
||||
Description="Generating estonian language file"
|
||||
CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "$(InputPath)"
"
|
||||
AdditionalDependencies=""
|
||||
AdditionalDependencies="..\src\lang\english.txt"
|
||||
Outputs="..\bin\lang\estonian.lng"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
@@ -252,7 +252,7 @@
|
||||
Name="VCCustomBuildTool"
|
||||
Description="Generating finnish language file"
|
||||
CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "$(InputPath)"
"
|
||||
AdditionalDependencies=""
|
||||
AdditionalDependencies="..\src\lang\english.txt"
|
||||
Outputs="..\bin\lang\finnish.lng"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
@@ -267,7 +267,7 @@
|
||||
Name="VCCustomBuildTool"
|
||||
Description="Generating french language file"
|
||||
CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "$(InputPath)"
"
|
||||
AdditionalDependencies=""
|
||||
AdditionalDependencies="..\src\lang\english.txt"
|
||||
Outputs="..\bin\lang\french.lng"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
@@ -282,7 +282,7 @@
|
||||
Name="VCCustomBuildTool"
|
||||
Description="Generating galician language file"
|
||||
CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "$(InputPath)"
"
|
||||
AdditionalDependencies=""
|
||||
AdditionalDependencies="..\src\lang\english.txt"
|
||||
Outputs="..\bin\lang\galician.lng"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
@@ -297,7 +297,7 @@
|
||||
Name="VCCustomBuildTool"
|
||||
Description="Generating german language file"
|
||||
CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "$(InputPath)"
"
|
||||
AdditionalDependencies=""
|
||||
AdditionalDependencies="..\src\lang\english.txt"
|
||||
Outputs="..\bin\lang\german.lng"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
@@ -312,7 +312,7 @@
|
||||
Name="VCCustomBuildTool"
|
||||
Description="Generating hebrew language file"
|
||||
CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "$(InputPath)"
"
|
||||
AdditionalDependencies=""
|
||||
AdditionalDependencies="..\src\lang\english.txt"
|
||||
Outputs="..\bin\lang\hebrew.lng"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
@@ -327,7 +327,7 @@
|
||||
Name="VCCustomBuildTool"
|
||||
Description="Generating hungarian language file"
|
||||
CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "$(InputPath)"
"
|
||||
AdditionalDependencies=""
|
||||
AdditionalDependencies="..\src\lang\english.txt"
|
||||
Outputs="..\bin\lang\hungarian.lng"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
@@ -342,7 +342,7 @@
|
||||
Name="VCCustomBuildTool"
|
||||
Description="Generating icelandic language file"
|
||||
CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "$(InputPath)"
"
|
||||
AdditionalDependencies=""
|
||||
AdditionalDependencies="..\src\lang\english.txt"
|
||||
Outputs="..\bin\lang\icelandic.lng"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
@@ -357,7 +357,7 @@
|
||||
Name="VCCustomBuildTool"
|
||||
Description="Generating indonesian language file"
|
||||
CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "$(InputPath)"
"
|
||||
AdditionalDependencies=""
|
||||
AdditionalDependencies="..\src\lang\english.txt"
|
||||
Outputs="..\bin\lang\indonesian.lng"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
@@ -372,7 +372,7 @@
|
||||
Name="VCCustomBuildTool"
|
||||
Description="Generating italian language file"
|
||||
CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "$(InputPath)"
"
|
||||
AdditionalDependencies=""
|
||||
AdditionalDependencies="..\src\lang\english.txt"
|
||||
Outputs="..\bin\lang\italian.lng"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
@@ -387,7 +387,7 @@
|
||||
Name="VCCustomBuildTool"
|
||||
Description="Generating japanese language file"
|
||||
CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "$(InputPath)"
"
|
||||
AdditionalDependencies=""
|
||||
AdditionalDependencies="..\src\lang\english.txt"
|
||||
Outputs="..\bin\lang\japanese.lng"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
@@ -402,7 +402,7 @@
|
||||
Name="VCCustomBuildTool"
|
||||
Description="Generating korean language file"
|
||||
CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "$(InputPath)"
"
|
||||
AdditionalDependencies=""
|
||||
AdditionalDependencies="..\src\lang\english.txt"
|
||||
Outputs="..\bin\lang\korean.lng"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
@@ -417,7 +417,7 @@
|
||||
Name="VCCustomBuildTool"
|
||||
Description="Generating latvian language file"
|
||||
CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "$(InputPath)"
"
|
||||
AdditionalDependencies=""
|
||||
AdditionalDependencies="..\src\lang\english.txt"
|
||||
Outputs="..\bin\lang\latvian.lng"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
@@ -432,7 +432,7 @@
|
||||
Name="VCCustomBuildTool"
|
||||
Description="Generating lithuanian language file"
|
||||
CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "$(InputPath)"
"
|
||||
AdditionalDependencies=""
|
||||
AdditionalDependencies="..\src\lang\english.txt"
|
||||
Outputs="..\bin\lang\lithuanian.lng"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
@@ -447,7 +447,7 @@
|
||||
Name="VCCustomBuildTool"
|
||||
Description="Generating luxembourgish language file"
|
||||
CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "$(InputPath)"
"
|
||||
AdditionalDependencies=""
|
||||
AdditionalDependencies="..\src\lang\english.txt"
|
||||
Outputs="..\bin\lang\luxembourgish.lng"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
@@ -462,7 +462,7 @@
|
||||
Name="VCCustomBuildTool"
|
||||
Description="Generating norwegian_bokmal language file"
|
||||
CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "$(InputPath)"
"
|
||||
AdditionalDependencies=""
|
||||
AdditionalDependencies="..\src\lang\english.txt"
|
||||
Outputs="..\bin\lang\norwegian_bokmal.lng"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
@@ -477,7 +477,7 @@
|
||||
Name="VCCustomBuildTool"
|
||||
Description="Generating norwegian_nynorsk language file"
|
||||
CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "$(InputPath)"
"
|
||||
AdditionalDependencies=""
|
||||
AdditionalDependencies="..\src\lang\english.txt"
|
||||
Outputs="..\bin\lang\norwegian_nynorsk.lng"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
@@ -492,7 +492,7 @@
|
||||
Name="VCCustomBuildTool"
|
||||
Description="Generating piglatin language file"
|
||||
CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "$(InputPath)"
"
|
||||
AdditionalDependencies=""
|
||||
AdditionalDependencies="..\src\lang\english.txt"
|
||||
Outputs="..\bin\lang\piglatin.lng"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
@@ -507,7 +507,7 @@
|
||||
Name="VCCustomBuildTool"
|
||||
Description="Generating polish language file"
|
||||
CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "$(InputPath)"
"
|
||||
AdditionalDependencies=""
|
||||
AdditionalDependencies="..\src\lang\english.txt"
|
||||
Outputs="..\bin\lang\polish.lng"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
@@ -522,7 +522,7 @@
|
||||
Name="VCCustomBuildTool"
|
||||
Description="Generating portuguese language file"
|
||||
CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "$(InputPath)"
"
|
||||
AdditionalDependencies=""
|
||||
AdditionalDependencies="..\src\lang\english.txt"
|
||||
Outputs="..\bin\lang\portuguese.lng"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
@@ -537,7 +537,7 @@
|
||||
Name="VCCustomBuildTool"
|
||||
Description="Generating romanian language file"
|
||||
CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "$(InputPath)"
"
|
||||
AdditionalDependencies=""
|
||||
AdditionalDependencies="..\src\lang\english.txt"
|
||||
Outputs="..\bin\lang\romanian.lng"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
@@ -552,7 +552,7 @@
|
||||
Name="VCCustomBuildTool"
|
||||
Description="Generating russian language file"
|
||||
CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "$(InputPath)"
"
|
||||
AdditionalDependencies=""
|
||||
AdditionalDependencies="..\src\lang\english.txt"
|
||||
Outputs="..\bin\lang\russian.lng"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
@@ -567,7 +567,7 @@
|
||||
Name="VCCustomBuildTool"
|
||||
Description="Generating serbian language file"
|
||||
CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "$(InputPath)"
"
|
||||
AdditionalDependencies=""
|
||||
AdditionalDependencies="..\src\lang\english.txt"
|
||||
Outputs="..\bin\lang\serbian.lng"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
@@ -582,7 +582,7 @@
|
||||
Name="VCCustomBuildTool"
|
||||
Description="Generating simplified_chinese language file"
|
||||
CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "$(InputPath)"
"
|
||||
AdditionalDependencies=""
|
||||
AdditionalDependencies="..\src\lang\english.txt"
|
||||
Outputs="..\bin\lang\simplified_chinese.lng"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
@@ -597,7 +597,7 @@
|
||||
Name="VCCustomBuildTool"
|
||||
Description="Generating slovak language file"
|
||||
CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "$(InputPath)"
"
|
||||
AdditionalDependencies=""
|
||||
AdditionalDependencies="..\src\lang\english.txt"
|
||||
Outputs="..\bin\lang\slovak.lng"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
@@ -612,7 +612,7 @@
|
||||
Name="VCCustomBuildTool"
|
||||
Description="Generating slovenian language file"
|
||||
CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "$(InputPath)"
"
|
||||
AdditionalDependencies=""
|
||||
AdditionalDependencies="..\src\lang\english.txt"
|
||||
Outputs="..\bin\lang\slovenian.lng"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
@@ -627,7 +627,7 @@
|
||||
Name="VCCustomBuildTool"
|
||||
Description="Generating spanish language file"
|
||||
CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "$(InputPath)"
"
|
||||
AdditionalDependencies=""
|
||||
AdditionalDependencies="..\src\lang\english.txt"
|
||||
Outputs="..\bin\lang\spanish.lng"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
@@ -642,7 +642,7 @@
|
||||
Name="VCCustomBuildTool"
|
||||
Description="Generating swedish language file"
|
||||
CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "$(InputPath)"
"
|
||||
AdditionalDependencies=""
|
||||
AdditionalDependencies="..\src\lang\english.txt"
|
||||
Outputs="..\bin\lang\swedish.lng"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
@@ -657,7 +657,7 @@
|
||||
Name="VCCustomBuildTool"
|
||||
Description="Generating traditional_chinese language file"
|
||||
CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "$(InputPath)"
"
|
||||
AdditionalDependencies=""
|
||||
AdditionalDependencies="..\src\lang\english.txt"
|
||||
Outputs="..\bin\lang\traditional_chinese.lng"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
@@ -672,7 +672,7 @@
|
||||
Name="VCCustomBuildTool"
|
||||
Description="Generating turkish language file"
|
||||
CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "$(InputPath)"
"
|
||||
AdditionalDependencies=""
|
||||
AdditionalDependencies="..\src\lang\english.txt"
|
||||
Outputs="..\bin\lang\turkish.lng"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
@@ -687,7 +687,7 @@
|
||||
Name="VCCustomBuildTool"
|
||||
Description="Generating ukrainian language file"
|
||||
CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "$(InputPath)"
"
|
||||
AdditionalDependencies=""
|
||||
AdditionalDependencies="..\src\lang\english.txt"
|
||||
Outputs="..\bin\lang\ukrainian.lng"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
@@ -702,7 +702,7 @@
|
||||
Name="VCCustomBuildTool"
|
||||
Description="Generating welsh language file"
|
||||
CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "$(InputPath)"
"
|
||||
AdditionalDependencies=""
|
||||
AdditionalDependencies="..\src\lang\english.txt"
|
||||
Outputs="..\bin\lang\welsh.lng"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
|
@@ -2563,6 +2563,10 @@
|
||||
RelativePath=".\..\src\ai\api\ai_cargolist.hpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\ai\api\ai_changelog.hpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\ai\api\ai_company.hpp"
|
||||
>
|
||||
|
@@ -2560,6 +2560,10 @@
|
||||
RelativePath=".\..\src\ai\api\ai_cargolist.hpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\ai\api\ai_changelog.hpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\ai\api\ai_company.hpp"
|
||||
>
|
||||
|
52
readme.txt
52
readme.txt
@@ -1,6 +1,6 @@
|
||||
OpenTTD README
|
||||
Last updated: 2009-06-09
|
||||
Release version: 0.7.1
|
||||
Last updated: 2009-08-18
|
||||
Release version: 0.7.2
|
||||
------------------------------------------------------------------------
|
||||
|
||||
|
||||
@@ -17,6 +17,7 @@ Table of Contents:
|
||||
5.0) OpenTTD features
|
||||
6.0) Configuration File
|
||||
7.0) Compiling
|
||||
* 7.1) Required/optional libraries
|
||||
8.0) Translating
|
||||
* 8.1 Guidelines
|
||||
* 8.2 Translation
|
||||
@@ -191,6 +192,19 @@ Do NOT copy files included with OpenTTD into "shared" directories (explained in
|
||||
the following sections) as sooner or later you will run into graphical glitches
|
||||
when using other versions of the game.
|
||||
|
||||
If you want AIs use the in-game content downloader. If for some reason that is
|
||||
not possible or you want to use an AI that has not been uploaded to the content
|
||||
download system download the tar file and place it in the ai/ directory. If the
|
||||
AI needs libraries you'll have to download those too and put them in the
|
||||
ai/library/ directory. All AIs and AI Libraries that have been uploaded to
|
||||
the content download system can be found at http://noai.openttd.org/downloads/
|
||||
The AIs and libraries can be found their in the form of .tar.gz packages.
|
||||
OpenTTD can read inside tar files but it does not extract .tar.gz files by
|
||||
itself.
|
||||
To figure out which libraries you need for an AI you have to start the AI and
|
||||
wait for an error message to pop up. The error message will tell you
|
||||
"couldn't find library 'lib-name'". Download that library and try again.
|
||||
|
||||
4.2) OpenTTD directories
|
||||
---- -------------------------------
|
||||
|
||||
@@ -316,18 +330,12 @@ Windows:
|
||||
You can also build it using the Makefile with MSYS/MinGW or Cygwin/MinGW.
|
||||
Please read the Makefile for more information.
|
||||
|
||||
Solaris 10:
|
||||
You need g++ (version 3 or higher), together with SDL. Installation of
|
||||
libpng and zlib is recommended. For the first build it is required
|
||||
to execute "bash configure" first. Note that ./configure does not work
|
||||
yet. It is likely that you don't have a strip binary, so use the
|
||||
--disable-strip option in that case. Fontconfig (>2.3.0) and freetype
|
||||
are optional. "make run" will then run the program.
|
||||
Solaris, FreeBSD, OpenBSD:
|
||||
Use "gmake", but do a "./configure" before the first build.
|
||||
|
||||
Unix:
|
||||
Linux/Unix:
|
||||
OpenTTD can be built with GNU "make". On non-GNU systems it's called "gmake".
|
||||
However, for the first build one has to do a "./configure" first.
|
||||
Note that you need SDL-devel 1.2.5 (or higher) to compile OpenTTD.
|
||||
|
||||
MacOS X:
|
||||
Use "make" or Xcode (which will then call make for you)
|
||||
@@ -339,15 +347,6 @@ MacOS X:
|
||||
BeOS:
|
||||
Use "make", but do a "./configure" before the first build.
|
||||
|
||||
FreeBSD:
|
||||
You need the port devel/sdl12 for a non-dedicated build.
|
||||
graphics/png is optional for screenshots in the PNG format.
|
||||
Use "gmake", but do a "./configure" before the first build.
|
||||
|
||||
OpenBSD:
|
||||
Use "gmake", but do a "./configure" before the first build.
|
||||
Note that you need the port devel/sdl to compile OpenTTD.
|
||||
|
||||
MorphOS:
|
||||
Use "make". However, for the first build one has to do a "./configure" first.
|
||||
Note that you need the MorphOS SDK, latest libnix updates (else C++ parts of
|
||||
@@ -368,6 +367,8 @@ DOS:
|
||||
will be generated that does not need cwsdpmi.exe by adding the cswdstub.exe
|
||||
to the created OpenTTD binary.
|
||||
|
||||
7.1) Required/optional libraries:
|
||||
---- -------------------
|
||||
The following libraries are used by OpenTTD for:
|
||||
- libSDL/liballegro: hardware access (video, sound, mouse)
|
||||
- zlib: (de)compressing of savegames
|
||||
@@ -376,6 +377,11 @@ The following libraries are used by OpenTTD for:
|
||||
- libfontconfig: searching for fonts, resolving font names to actual fonts
|
||||
- libicu: handling of right-to-left scripts (e.g. Arabic and Persian)
|
||||
|
||||
OpenTTD does not require any of the libraries to be present, but without
|
||||
zlib you cannot open most savegames or use the content downloading system.
|
||||
Without libSDL/liballegro on non-Windows and non-MacOS X machines you have
|
||||
no graphical user interface; you would be building a dedicated server.
|
||||
|
||||
8.0) Translating:
|
||||
---- -------------------
|
||||
See http://www.openttd.org/development for up-to-date information.
|
||||
@@ -484,7 +490,7 @@ Inactive Developers:
|
||||
Tamás Faragó (Darkvater) - Ex-Lead coder
|
||||
Jaroslav Mazanec (KUDr) - YAPG (Yet Another Pathfinder God) ;)
|
||||
Jonathan Coome (Maedhros) - High priest of the NewGRF Temple
|
||||
Attila Bán (MiHaMiX) - WebTranslator, Nightlies, Wiki and bugtracker host
|
||||
Attila Bán (MiHaMiX) - WebTranslator 1 and 2
|
||||
Christoph Mallon (Tron) - Programmer, code correctness police
|
||||
|
||||
Retired Developers:
|
||||
@@ -492,7 +498,7 @@ Retired Developers:
|
||||
Serge Paquet (vurlix) - Assistant project manager, coder (0.1 - 0.3.3)
|
||||
Dominik Scherer (dominik81) - Lead programmer, GUI expert (0.3.0 - 0.3.6)
|
||||
Benedikt Brüggemeier (skidd13) - Bug fixer and code reworker
|
||||
Patric Stout (TrueLight) - Programmer, webhoster (0.3 - pre0.7)
|
||||
Patric Stout (TrueLight) - Programmer (0.3 - pre0.7), sys op (active)
|
||||
|
||||
Thanks to:
|
||||
Josef Drexler - For his great work on TTDPatch.
|
||||
@@ -505,6 +511,8 @@ Thanks to:
|
||||
Christian Rosentreter (tokai) - MorphOS / AmigaOS port
|
||||
Richard Kempton (RichK67) - Additional airports, initial TGP implementation
|
||||
Alberto Demichelis - Squirrel scripting language
|
||||
Markus F.X.J. Oberhumer - MiniLZO for loading old savegames
|
||||
L. Peter Deutsch - MD5 implementation
|
||||
Michael Blunck - For revolutionizing TTD with awesome graphics
|
||||
George - Canal graphics
|
||||
David Dallaston (Pikka) - Tram tracks
|
||||
|
@@ -594,6 +594,7 @@ ai/api/ai_bridge.hpp
|
||||
ai/api/ai_bridgelist.hpp
|
||||
ai/api/ai_cargo.hpp
|
||||
ai/api/ai_cargolist.hpp
|
||||
ai/api/ai_changelog.hpp
|
||||
ai/api/ai_company.hpp
|
||||
ai/api/ai_controller.hpp
|
||||
ai/api/ai_date.hpp
|
||||
|
1
src/3rdparty/squirrel/include/squirrel.h
vendored
1
src/3rdparty/squirrel/include/squirrel.h
vendored
@@ -286,6 +286,7 @@ 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);
|
||||
SQUIRREL_API SQInteger sq_getvmstate(HSQUIRRELVM v);
|
||||
|
||||
|
8
src/3rdparty/squirrel/squirrel/sqapi.cpp
vendored
8
src/3rdparty/squirrel/squirrel/sqapi.cpp
vendored
@@ -1010,6 +1010,14 @@ bool sq_resumecatch(HSQUIRRELVM v, int 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){
|
||||
|
12
src/3rdparty/squirrel/squirrel/sqclass.h
vendored
12
src/3rdparty/squirrel/squirrel/sqclass.h
vendored
@@ -128,7 +128,17 @@ public:
|
||||
}
|
||||
void Release() {
|
||||
_uiRef++;
|
||||
if (_hook) { _hook(_userpointer,0);}
|
||||
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;
|
||||
|
17
src/3rdparty/squirrel/squirrel/sqcompiler.cpp
vendored
17
src/3rdparty/squirrel/squirrel/sqcompiler.cpp
vendored
@@ -1110,6 +1110,23 @@ public:
|
||||
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
|
||||
|
2
src/3rdparty/squirrel/squirrel/squtils.h
vendored
2
src/3rdparty/squirrel/squirrel/squtils.h
vendored
@@ -88,7 +88,7 @@ public:
|
||||
}
|
||||
SQUnsignedInteger capacity() { return _allocated; }
|
||||
inline T &back() const { return _vals[_size - 1]; }
|
||||
inline T& operator[](SQUnsignedInteger pos) const{ return _vals[pos]; }
|
||||
inline T& operator[](SQUnsignedInteger pos) const{ assert(pos < _allocated); return _vals[pos]; }
|
||||
T* _vals;
|
||||
private:
|
||||
void _realloc(SQUnsignedInteger newsize)
|
||||
|
32
src/3rdparty/squirrel/squirrel/sqvm.cpp
vendored
32
src/3rdparty/squirrel/squirrel/sqvm.cpp
vendored
@@ -50,7 +50,9 @@ bool SQVM::ARITH_OP(SQUnsignedInteger op,SQObjectPtr &trg,const SQObjectPtr &o1,
|
||||
res = i1 / i2;
|
||||
break;
|
||||
case '*': 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;
|
||||
@@ -321,6 +323,10 @@ bool SQVM::StartCall(SQClosure *closure,SQInteger target,SQInteger args,SQIntege
|
||||
SQInteger ndef = func->_ndefaultparams;
|
||||
if(ndef && nargs < paramssize) {
|
||||
SQInteger diff = paramssize - nargs;
|
||||
if (diff > ndef) {
|
||||
Raise_Error(_SC("wrong number of parameters"));
|
||||
return false;
|
||||
}
|
||||
for(SQInteger n = ndef - diff; n < ndef; n++) {
|
||||
_stack._vals[stackbase + (nargs++)] = closure->_defaultparams[n];
|
||||
}
|
||||
@@ -682,10 +688,12 @@ bool SQVM::Execute(SQObjectPtr &closure, SQInteger target, SQInteger nargs, SQIn
|
||||
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;
|
||||
@@ -741,9 +749,8 @@ common_call:
|
||||
_GUARD(gen->Yield(this));
|
||||
Return(1, ct_target, clo);
|
||||
STK(ct_target) = gen;
|
||||
while (last_top >= _top) _stack._vals[last_top--].Null();
|
||||
continue;
|
||||
}
|
||||
while (last_top >= _top) _stack._vals[last_top--].Null();
|
||||
}
|
||||
continue;
|
||||
case OT_NATIVECLOSURE: {
|
||||
@@ -1135,6 +1142,8 @@ bool SQVM::CallNative(SQNativeClosure *nclosure,SQInteger nargs,SQInteger stackb
|
||||
}
|
||||
|
||||
|
||||
/* Store the call stack size, so we can restore that */
|
||||
SQInteger cstksize = _callsstacksize;
|
||||
SQInteger ret;
|
||||
try {
|
||||
SQBool can_suspend = this->_can_suspend;
|
||||
@@ -1145,6 +1154,7 @@ bool SQVM::CallNative(SQNativeClosure *nclosure,SQInteger nargs,SQInteger stackb
|
||||
_nnativecalls--;
|
||||
suspend = false;
|
||||
|
||||
_callsstacksize = cstksize;
|
||||
_stackbase = oldstackbase;
|
||||
_top = oldtop;
|
||||
|
||||
@@ -1154,6 +1164,8 @@ bool SQVM::CallNative(SQNativeClosure *nclosure,SQInteger nargs,SQInteger stackb
|
||||
throw;
|
||||
}
|
||||
|
||||
assert(cstksize == _callsstacksize);
|
||||
|
||||
_nnativecalls--;
|
||||
suspend = false;
|
||||
if( ret == SQ_SUSPEND_FLAG) suspend = true;
|
||||
@@ -1496,7 +1508,19 @@ void SQVM::Pop(SQInteger n) {
|
||||
}
|
||||
}
|
||||
|
||||
void SQVM::Push(const SQObjectPtr &o) { _stack[_top++] = o; }
|
||||
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]; }
|
||||
|
2
src/3rdparty/squirrel/squirrel/sqvm.h
vendored
2
src/3rdparty/squirrel/squirrel/sqvm.h
vendored
@@ -53,7 +53,7 @@ struct SQVM : public CHAINABLE_OBJ
|
||||
|
||||
typedef sqvector<CallInfo> CallInfoVec;
|
||||
public:
|
||||
enum ExecutionType { ET_CALL, ET_RESUME_GENERATOR, ET_RESUME_VM, ET_RESUME_OPENTTD };
|
||||
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);
|
||||
|
@@ -742,7 +742,7 @@ struct AIDebugWindow : public Window {
|
||||
if (widget == AID_WIDGET_RELOAD_TOGGLE && !this->IsWidgetDisabled(widget)) {
|
||||
/* 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, CMD_COMPANY_CTRL);
|
||||
DoCommandP(0, 1, 0, CMD_COMPANY_CTRL);
|
||||
DoCommandP(0, 1, ai_debug_company, CMD_COMPANY_CTRL);
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -119,6 +119,9 @@ AIInstance::AIInstance(AIInfo *info) :
|
||||
/* Register the AIController */
|
||||
SQAIController_Register(this->engine);
|
||||
|
||||
/* Register the API functions and classes */
|
||||
this->RegisterAPI();
|
||||
|
||||
/* Load and execute the script for this AI */
|
||||
const char *main_script = info->GetMainScript();
|
||||
if (strcmp(main_script, "%_dummy") == 0) {
|
||||
@@ -135,9 +138,6 @@ AIInstance::AIInstance(AIInfo *info) :
|
||||
this->Died();
|
||||
return;
|
||||
}
|
||||
|
||||
/* Register the API functions and classes */
|
||||
this->RegisterAPI();
|
||||
}
|
||||
|
||||
AIInstance::~AIInstance()
|
||||
@@ -269,7 +269,7 @@ void AIInstance::Died()
|
||||
|
||||
void AIInstance::GameLoop()
|
||||
{
|
||||
if (this->is_dead) return;
|
||||
if (this->IsDead()) return;
|
||||
if (this->engine->HasScriptCrashed()) {
|
||||
/* The script crashed during saving, kill it here. */
|
||||
this->Died();
|
||||
@@ -322,6 +322,11 @@ void AIInstance::GameLoop()
|
||||
} catch (AI_VMSuspend e) {
|
||||
this->suspend = e.GetSuspendTime();
|
||||
this->callback = e.GetSuspendCallback();
|
||||
} catch (AI_FatalError e) {
|
||||
this->is_dead = true;
|
||||
this->engine->ThrowError(e.GetErrorMessage());
|
||||
this->engine->ResumeError();
|
||||
this->Died();
|
||||
}
|
||||
|
||||
this->is_started = true;
|
||||
@@ -338,12 +343,17 @@ void AIInstance::GameLoop()
|
||||
} catch (AI_VMSuspend e) {
|
||||
this->suspend = e.GetSuspendTime();
|
||||
this->callback = e.GetSuspendCallback();
|
||||
} catch (AI_FatalError e) {
|
||||
this->is_dead = true;
|
||||
this->engine->ThrowError(e.GetErrorMessage());
|
||||
this->engine->ResumeError();
|
||||
this->Died();
|
||||
}
|
||||
}
|
||||
|
||||
void AIInstance::CollectGarbage()
|
||||
{
|
||||
if (this->is_started && !this->is_dead) this->engine->CollectGarbage();
|
||||
if (this->is_started && !this->IsDead()) this->engine->CollectGarbage();
|
||||
}
|
||||
|
||||
/* static */ void AIInstance::DoCommandReturn(AIInstance *instance)
|
||||
@@ -562,10 +572,25 @@ void AIInstance::Save()
|
||||
/* We don't want to be interrupted during the save function. */
|
||||
bool backup_allow = AIObject::GetAllowDoCommand();
|
||||
AIObject::SetAllowDoCommand(false);
|
||||
if (!this->engine->CallMethod(*this->instance, "Save", &savedata)) {
|
||||
/* The script crashed in the Save function. We can't kill
|
||||
* it here, but do so in the next AI tick. */
|
||||
try {
|
||||
if (!this->engine->CallMethod(*this->instance, "Save", &savedata)) {
|
||||
/* The script crashed in the Save function. We can't kill
|
||||
* it here, but do so in the next AI tick. */
|
||||
SaveEmpty();
|
||||
this->engine->CrashOccurred();
|
||||
return;
|
||||
}
|
||||
} catch (AI_FatalError e) {
|
||||
/* If we don't mark the AI as dead here cleaning up the squirrel
|
||||
* stack could throw AI_FatalError again. */
|
||||
this->is_dead = true;
|
||||
this->engine->ThrowError(e.GetErrorMessage());
|
||||
this->engine->ResumeError();
|
||||
SaveEmpty();
|
||||
/* We can't kill the AI here, so mark it as crashed (not dead) and
|
||||
* kill it in the next AI tick. */
|
||||
this->is_dead = false;
|
||||
this->engine->CrashOccurred();
|
||||
return;
|
||||
}
|
||||
AIObject::SetAllowDoCommand(backup_allow);
|
||||
|
@@ -18,7 +18,7 @@ public:
|
||||
AI_VMSuspend(int time, AISuspendCallbackProc *callback) :
|
||||
time(time),
|
||||
callback(callback)
|
||||
{}
|
||||
{}
|
||||
|
||||
int GetSuspendTime() { return time; }
|
||||
AISuspendCallbackProc *GetSuspendCallback() { return callback; }
|
||||
@@ -28,6 +28,21 @@ private:
|
||||
AISuspendCallbackProc *callback;
|
||||
};
|
||||
|
||||
/**
|
||||
* A throw-class that is given when the AI made a fatal error.
|
||||
*/
|
||||
class AI_FatalError {
|
||||
public:
|
||||
AI_FatalError(const char *msg) :
|
||||
msg(msg)
|
||||
{}
|
||||
|
||||
const char *GetErrorMessage() { return msg; }
|
||||
|
||||
private:
|
||||
const char *msg;
|
||||
};
|
||||
|
||||
class AIInstance {
|
||||
public:
|
||||
friend class AIObject;
|
||||
@@ -80,6 +95,11 @@ public:
|
||||
*/
|
||||
class AIController *GetController() { return controller; }
|
||||
|
||||
/**
|
||||
* Return the "this AI died" value
|
||||
*/
|
||||
inline bool IsDead() { return this->is_dead; }
|
||||
|
||||
/**
|
||||
* Call the AI Save function and save all data in the savegame.
|
||||
*/
|
||||
|
@@ -375,6 +375,7 @@ AIAbstractList::AIAbstractList()
|
||||
this->sorter_type = SORT_BY_VALUE;
|
||||
this->sort_ascending = false;
|
||||
this->initialized = false;
|
||||
this->modifications = 0;
|
||||
}
|
||||
|
||||
AIAbstractList::~AIAbstractList()
|
||||
@@ -389,6 +390,8 @@ bool AIAbstractList::HasItem(int32 item)
|
||||
|
||||
void AIAbstractList::Clear()
|
||||
{
|
||||
this->modifications++;
|
||||
|
||||
this->items.clear();
|
||||
this->buckets.clear();
|
||||
this->sorter->End();
|
||||
@@ -396,6 +399,8 @@ void AIAbstractList::Clear()
|
||||
|
||||
void AIAbstractList::AddItem(int32 item)
|
||||
{
|
||||
this->modifications++;
|
||||
|
||||
if (this->HasItem(item)) return;
|
||||
|
||||
this->items[item] = 0;
|
||||
@@ -404,6 +409,8 @@ void AIAbstractList::AddItem(int32 item)
|
||||
|
||||
void AIAbstractList::RemoveItem(int32 item)
|
||||
{
|
||||
this->modifications++;
|
||||
|
||||
if (!this->HasItem(item)) return;
|
||||
|
||||
int32 value = this->GetValue(item);
|
||||
@@ -457,6 +464,8 @@ int32 AIAbstractList::GetValue(int32 item)
|
||||
|
||||
bool AIAbstractList::SetValue(int32 item, int32 value)
|
||||
{
|
||||
this->modifications++;
|
||||
|
||||
if (!this->HasItem(item)) return false;
|
||||
|
||||
int32 value_old = this->GetValue(item);
|
||||
@@ -472,6 +481,8 @@ bool AIAbstractList::SetValue(int32 item, int32 value)
|
||||
|
||||
void AIAbstractList::Sort(SorterType sorter, bool ascending)
|
||||
{
|
||||
this->modifications++;
|
||||
|
||||
if (sorter != SORT_BY_VALUE && sorter != SORT_BY_ITEM) return;
|
||||
if (sorter == this->sorter_type && ascending == this->sort_ascending) return;
|
||||
|
||||
@@ -506,6 +517,8 @@ void AIAbstractList::AddList(AIAbstractList *list)
|
||||
|
||||
void AIAbstractList::RemoveAboveValue(int32 value)
|
||||
{
|
||||
this->modifications++;
|
||||
|
||||
for (AIAbstractListMap::iterator next_iter, iter = this->items.begin(); iter != this->items.end(); iter = next_iter) {
|
||||
next_iter = iter; next_iter++;
|
||||
if ((*iter).second > value) this->items.erase(iter);
|
||||
@@ -519,6 +532,8 @@ void AIAbstractList::RemoveAboveValue(int32 value)
|
||||
|
||||
void AIAbstractList::RemoveBelowValue(int32 value)
|
||||
{
|
||||
this->modifications++;
|
||||
|
||||
for (AIAbstractListMap::iterator next_iter, iter = this->items.begin(); iter != this->items.end(); iter = next_iter) {
|
||||
next_iter = iter; next_iter++;
|
||||
if ((*iter).second < value) this->items.erase(iter);
|
||||
@@ -532,6 +547,8 @@ void AIAbstractList::RemoveBelowValue(int32 value)
|
||||
|
||||
void AIAbstractList::RemoveBetweenValue(int32 start, int32 end)
|
||||
{
|
||||
this->modifications++;
|
||||
|
||||
for (AIAbstractListMap::iterator next_iter, iter = this->items.begin(); iter != this->items.end(); iter = next_iter) {
|
||||
next_iter = iter; next_iter++;
|
||||
if ((*iter).second > start && (*iter).second < end) this->items.erase(iter);
|
||||
@@ -545,6 +562,8 @@ void AIAbstractList::RemoveBetweenValue(int32 start, int32 end)
|
||||
|
||||
void AIAbstractList::RemoveValue(int32 value)
|
||||
{
|
||||
this->modifications++;
|
||||
|
||||
for (AIAbstractListMap::iterator next_iter, iter = this->items.begin(); iter != this->items.end(); iter = next_iter) {
|
||||
next_iter = iter; next_iter++;
|
||||
if ((*iter).second == value) this->items.erase(iter);
|
||||
@@ -558,6 +577,8 @@ void AIAbstractList::RemoveValue(int32 value)
|
||||
|
||||
void AIAbstractList::RemoveTop(int32 count)
|
||||
{
|
||||
this->modifications++;
|
||||
|
||||
if (!this->sort_ascending) {
|
||||
this->Sort(this->sorter_type, !this->sort_ascending);
|
||||
this->RemoveBottom(count);
|
||||
@@ -593,6 +614,8 @@ void AIAbstractList::RemoveTop(int32 count)
|
||||
|
||||
void AIAbstractList::RemoveBottom(int32 count)
|
||||
{
|
||||
this->modifications++;
|
||||
|
||||
if (!this->sort_ascending) {
|
||||
this->Sort(this->sorter_type, !this->sort_ascending);
|
||||
this->RemoveTop(count);
|
||||
@@ -627,6 +650,8 @@ void AIAbstractList::RemoveBottom(int32 count)
|
||||
|
||||
void AIAbstractList::RemoveList(AIAbstractList *list)
|
||||
{
|
||||
this->modifications++;
|
||||
|
||||
AIAbstractListMap *list_items = &list->items;
|
||||
for (AIAbstractListMap::iterator iter = list_items->begin(); iter != list_items->end(); iter++) {
|
||||
this->RemoveItem((*iter).first);
|
||||
@@ -635,6 +660,8 @@ void AIAbstractList::RemoveList(AIAbstractList *list)
|
||||
|
||||
void AIAbstractList::KeepAboveValue(int32 value)
|
||||
{
|
||||
this->modifications++;
|
||||
|
||||
for (AIAbstractListMap::iterator next_iter, iter = this->items.begin(); iter != this->items.end(); iter = next_iter) {
|
||||
next_iter = iter; next_iter++;
|
||||
if ((*iter).second <= value) this->items.erase(iter);
|
||||
@@ -648,6 +675,8 @@ void AIAbstractList::KeepAboveValue(int32 value)
|
||||
|
||||
void AIAbstractList::KeepBelowValue(int32 value)
|
||||
{
|
||||
this->modifications++;
|
||||
|
||||
for (AIAbstractListMap::iterator next_iter, iter = this->items.begin(); iter != this->items.end(); iter = next_iter) {
|
||||
next_iter = iter; next_iter++;
|
||||
if ((*iter).second >= value) this->items.erase(iter);
|
||||
@@ -661,6 +690,8 @@ void AIAbstractList::KeepBelowValue(int32 value)
|
||||
|
||||
void AIAbstractList::KeepBetweenValue(int32 start, int32 end)
|
||||
{
|
||||
this->modifications++;
|
||||
|
||||
for (AIAbstractListMap::iterator next_iter, iter = this->items.begin(); iter != this->items.end(); iter = next_iter) {
|
||||
next_iter = iter; next_iter++;
|
||||
if ((*iter).second <= start || (*iter).second >= end) this->items.erase(iter);
|
||||
@@ -674,6 +705,8 @@ void AIAbstractList::KeepBetweenValue(int32 start, int32 end)
|
||||
|
||||
void AIAbstractList::KeepValue(int32 value)
|
||||
{
|
||||
this->modifications++;
|
||||
|
||||
for (AIAbstractListMap::iterator next_iter, iter = this->items.begin(); iter != this->items.end(); iter = next_iter) {
|
||||
next_iter = iter; next_iter++;
|
||||
if ((*iter).second != value) this->items.erase(iter);
|
||||
@@ -687,16 +720,22 @@ void AIAbstractList::KeepValue(int32 value)
|
||||
|
||||
void AIAbstractList::KeepTop(int32 count)
|
||||
{
|
||||
this->modifications++;
|
||||
|
||||
this->RemoveBottom(this->Count() - count);
|
||||
}
|
||||
|
||||
void AIAbstractList::KeepBottom(int32 count)
|
||||
{
|
||||
this->modifications++;
|
||||
|
||||
this->RemoveTop(this->Count() - count);
|
||||
}
|
||||
|
||||
void AIAbstractList::KeepList(AIAbstractList *list)
|
||||
{
|
||||
this->modifications++;
|
||||
|
||||
AIAbstractList tmp;
|
||||
for (AIAbstractListMap::iterator iter = this->items.begin(); iter != this->items.end(); iter++) {
|
||||
tmp.AddItem((*iter).first);
|
||||
@@ -746,6 +785,8 @@ SQInteger AIAbstractList::_nexti(HSQUIRRELVM vm)
|
||||
|
||||
SQInteger AIAbstractList::Valuate(HSQUIRRELVM vm)
|
||||
{
|
||||
this->modifications++;
|
||||
|
||||
/* The first parameter is the instance of AIAbstractList. */
|
||||
int nparam = sq_gettop(vm) - 1;
|
||||
|
||||
@@ -771,6 +812,10 @@ SQInteger AIAbstractList::Valuate(HSQUIRRELVM vm)
|
||||
|
||||
/* Walk all items, and query the result */
|
||||
this->buckets.clear();
|
||||
|
||||
/* Check for changing of items. */
|
||||
int begin_modification_count = this->modifications;
|
||||
|
||||
for (AIAbstractListMap::iterator iter = this->items.begin(); iter != this->items.end(); iter++) {
|
||||
/* Push the root table as instance object, this is what squirrel does for meta-functions. */
|
||||
sq_pushroottable(vm);
|
||||
@@ -808,6 +853,15 @@ SQInteger AIAbstractList::Valuate(HSQUIRRELVM vm)
|
||||
}
|
||||
}
|
||||
|
||||
/* Was something changed? */
|
||||
if (begin_modification_count != this->modifications) {
|
||||
/* See below for explanation. The extra pop is the return value. */
|
||||
sq_pop(vm, nparam + 4);
|
||||
|
||||
AIObject::SetAllowDoCommand(backup_allow);
|
||||
return sq_throwerror(vm, _SC("modifying valuated list outside of valuator function"));
|
||||
}
|
||||
|
||||
(*iter).second = (int32)value;
|
||||
this->buckets[(int32)value].insert((*iter).first);
|
||||
|
||||
|
@@ -25,11 +25,17 @@ public:
|
||||
SORT_BY_ITEM, //!< Sort the list based on the item itself.
|
||||
};
|
||||
|
||||
/** Sort ascending */
|
||||
static const bool SORT_ASCENDING = true;
|
||||
/** Sort descnding */
|
||||
static const bool SORT_DESCENDING = false;
|
||||
|
||||
private:
|
||||
AIAbstractListSorter *sorter;
|
||||
SorterType sorter_type;
|
||||
bool sort_ascending;
|
||||
bool initialized;
|
||||
AIAbstractListSorter *sorter; //!< Sorting algorithm
|
||||
SorterType sorter_type; //!< Sorting type
|
||||
bool sort_ascending; //!< Whether to sort ascending or descending
|
||||
bool initialized; //!< Whether an iteration has been started
|
||||
int modifications; //!< Number of modification that has been done. To prevent changing data while valuating.
|
||||
|
||||
public:
|
||||
typedef std::set<int32> AIItemList; //!< The list of items inside the bucket
|
||||
@@ -123,6 +129,7 @@ public:
|
||||
* @param sorter the type of sorter to use
|
||||
* @param ascending if true, lowest value is on top, else at bottom.
|
||||
* @note the current item stays at the same place.
|
||||
* @see SORT_ASCENDING SORT_DESCENDING
|
||||
*/
|
||||
void Sort(SorterType sorter, bool ascending);
|
||||
|
||||
@@ -245,6 +252,8 @@ public:
|
||||
* @param valuator_function The function which will be doing the valuation.
|
||||
* @param params The params to give to the valuators (minus the first param,
|
||||
* which is always the index-value we are valuating).
|
||||
* @note You may not add, remove or change (setting the value of) items while
|
||||
* valuating. You may also not (re)sort while valuating.
|
||||
* @note You can write your own valuators and use them. Just remember that
|
||||
* the first parameter should be the index-value, and it should return
|
||||
* an integer.
|
||||
|
@@ -24,6 +24,9 @@ void SQAIAbstractList_Register(Squirrel *engine) {
|
||||
SQAIAbstractList.DefSQConst(engine, AIAbstractList::SORT_BY_VALUE, "SORT_BY_VALUE");
|
||||
SQAIAbstractList.DefSQConst(engine, AIAbstractList::SORT_BY_ITEM, "SORT_BY_ITEM");
|
||||
|
||||
SQAIAbstractList.DefSQConst(engine, AIAbstractList::SORT_ASCENDING, "SORT_ASCENDING");
|
||||
SQAIAbstractList.DefSQConst(engine, AIAbstractList::SORT_DESCENDING, "SORT_DESCENDING");
|
||||
|
||||
SQAIAbstractList.DefSQMethod(engine, &AIAbstractList::Clear, "Clear", 1, "x");
|
||||
SQAIAbstractList.DefSQMethod(engine, &AIAbstractList::HasItem, "HasItem", 2, "xi");
|
||||
SQAIAbstractList.DefSQMethod(engine, &AIAbstractList::Begin, "Begin", 1, "x");
|
||||
|
@@ -129,7 +129,7 @@ public:
|
||||
* @exception AIError::ERR_FLAT_LAND_REQUIRED
|
||||
* @exception AIError::ERR_LOCAL_AUTHORITY_REFUSES
|
||||
* @exception AIStation::ERR_STATION_TOO_LARGE
|
||||
* @exception AIStation::ERR_STATION_TOO_CLOSE_TO_OTHER_STATION
|
||||
* @exception AIStation::ERR_STATION_TOO_CLOSE_TO_ANOTHER_STATION
|
||||
* @return Whether the airport has been/can be build or not.
|
||||
*/
|
||||
static bool BuildAirport(TileIndex tile, AirportType type, StationID station_id);
|
||||
|
@@ -139,7 +139,7 @@ static void _DoCommandReturnBuildBridge1(class AIInstance *instance)
|
||||
{
|
||||
if (!IsValidBridge(bridge_id)) return -1;
|
||||
|
||||
return length * _price.build_bridge * ::GetBridgeSpec(bridge_id)->price >> 8;
|
||||
return ::CalcBridgeLenCostFactor(length) * _price.build_bridge * ::GetBridgeSpec(bridge_id)->price >> 8;
|
||||
}
|
||||
|
||||
/* static */ int32 AIBridge::GetMaxLength(BridgeID bridge_id)
|
||||
|
70
src/ai/api/ai_changelog.hpp
Normal file
70
src/ai/api/ai_changelog.hpp
Normal file
@@ -0,0 +1,70 @@
|
||||
/* $Id$ */
|
||||
|
||||
/*
|
||||
* This file is part of OpenTTD.
|
||||
* OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
|
||||
* OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
* See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/** @file ai_changelog.hpp Lists all changes / additions to the API.
|
||||
*
|
||||
* Only new / renamed / deleted api functions will be listed here. A list of
|
||||
* bug fixes can be found in the normal changelog. Note that removed API
|
||||
* functions may still be available if you return an older API version
|
||||
* in GetAPIVersion() in info.nut.
|
||||
*
|
||||
* \b 0.7.3
|
||||
*
|
||||
* API additions:
|
||||
* \li AIAbstractList::SORT_ASCENDING
|
||||
* \li AIAbstractList::SORT_DESCENDING
|
||||
* \li AICompany::GetPresidentGender
|
||||
* \li AICompany::SetPresidentGender
|
||||
* \li AIEngine::GetDesignDate
|
||||
* \li AIStation::GetConstructionDate
|
||||
*
|
||||
* Other changes:
|
||||
* \li AIs are now killed when they execute a DoCommand or Sleep at a time
|
||||
* they are not allowed to do so.
|
||||
* \li When the API requests a string as parameter you can give ever squirrel
|
||||
* type and it'll be converted to a string
|
||||
* \li AIs can create subclasses of API classes and use API constants as part
|
||||
* of their own constants
|
||||
*
|
||||
* \b 0.7.2
|
||||
*
|
||||
* API additions:
|
||||
* \li AIVehicle::GetReliability
|
||||
*
|
||||
* Other changes:
|
||||
* \li DoCommands and sleeps in call, acall, pcall and valuators are disallowed
|
||||
*
|
||||
* \b 0.7.1
|
||||
*
|
||||
* API additions:
|
||||
* \li AIAirport::GetPrice
|
||||
* \li AIController::GetVersion
|
||||
* \li AIOrder::AIOF_DEPOT_FLAGS
|
||||
* \li AIOrder::AIOF_STOP_IN_DEPOT
|
||||
* \li AIOrder::IsCurrentOrderPartOfOrderList
|
||||
* \li AIOrder::IsGotoDepotOrder
|
||||
* \li AIOrder::IsGotoStationOrder
|
||||
* \li AIOrder::IsGotoWaypointOrder
|
||||
* \li AISignList
|
||||
* \li AITile::CORNER_[WSEN]
|
||||
* \li AITile::ERR_AREA_ALREADY_FLAT
|
||||
* \li AITile::ERR_EXCAVATION_WOULD_DAMAGE
|
||||
* \li AITile::GetCornerHeight
|
||||
* \li AITile::GetMaxHeight
|
||||
* \li AITile::GetMinHeight
|
||||
* \li AIVehicle::SendVehicleToDepotForServicing
|
||||
*
|
||||
* Other changes:
|
||||
* \li GetURL() was added as optional function to info.nut
|
||||
* \li UseAsRandomAI() was added as optional function to info.nut
|
||||
* \li A limit was introduced on the time the AI spends in the constructor and Load function
|
||||
*
|
||||
* \b 0.7.0
|
||||
* \li First stable release with the NoAI framework.
|
||||
*/
|
@@ -8,6 +8,7 @@
|
||||
#include "../../command_func.h"
|
||||
#include "../../company_func.h"
|
||||
#include "../../company_base.h"
|
||||
#include "../../company_manager_face.h"
|
||||
#include "../../economy_func.h"
|
||||
#include "../../strings_func.h"
|
||||
#include "../../tile_map.h"
|
||||
@@ -71,6 +72,27 @@
|
||||
return president_name;
|
||||
}
|
||||
|
||||
/* static */ bool AICompany::SetPresidentGender(Gender gender)
|
||||
{
|
||||
EnforcePrecondition(false, gender == GENDER_MALE || gender == GENDER_FEMALE);
|
||||
EnforcePrecondition(false, GetPresidentGender(AICompany::COMPANY_SELF) != gender);
|
||||
|
||||
CompanyManagerFace cmf;
|
||||
GenderEthnicity ge = (GenderEthnicity)((gender == GENDER_FEMALE ? (1 << ::GENDER_FEMALE) : 0) | (::InteractiveRandom() & (1 << ETHNICITY_BLACK)));
|
||||
RandomCompanyManagerFaceBits(cmf, ge, false);
|
||||
|
||||
return AIObject::DoCommand(0, 0, cmf, CMD_SET_COMPANY_MANAGER_FACE);
|
||||
}
|
||||
|
||||
/* static */ AICompany::Gender AICompany::GetPresidentGender(CompanyID company)
|
||||
{
|
||||
company = ResolveCompanyID(company);
|
||||
if (company == COMPANY_INVALID) return GENDER_INVALID;
|
||||
|
||||
GenderEthnicity ge = (GenderEthnicity)GetCompanyManagerFaceBits(GetCompany(company)->face, CMFV_GEN_ETHN, GE_WM);
|
||||
return HasBit(ge, ::GENDER_FEMALE) ? GENDER_FEMALE : GENDER_MALE;
|
||||
}
|
||||
|
||||
/* static */ Money AICompany::GetCompanyValue(AICompany::CompanyID company)
|
||||
{
|
||||
company = ResolveCompanyID(company);
|
||||
|
@@ -26,6 +26,13 @@ public:
|
||||
COMPANY_SELF = 254, //!< Constant that gets resolved to the correct company index for your company.
|
||||
};
|
||||
|
||||
/** Possible genders for company presidents. */
|
||||
enum Gender {
|
||||
GENDER_MALE, //!< A male person.
|
||||
GENDER_FEMALE, //!< A female person.
|
||||
GENDER_INVALID = -1, //!< An invalid gender.
|
||||
};
|
||||
|
||||
/**
|
||||
* Resolved the given company index to the correct index for the company. If
|
||||
* the company index was COMPANY_SELF it will be resolved to the index of
|
||||
@@ -78,6 +85,22 @@ public:
|
||||
*/
|
||||
static char *GetPresidentName(CompanyID company);
|
||||
|
||||
/**
|
||||
* Set the gender of the president of your company.
|
||||
* @param gender The new gender for your president.
|
||||
* @pre GetPresidentGender(AICompany.COMPANY_SELF) != gender.
|
||||
* @return True if the gender was changed.
|
||||
* @note When succesfull a random face will be created.
|
||||
*/
|
||||
static bool SetPresidentGender(Gender gender);
|
||||
|
||||
/**
|
||||
* Get the gender of the president of the given company.
|
||||
* @param company The company to get the presidents gender off.
|
||||
* @return The gender of the president.
|
||||
*/
|
||||
static Gender GetPresidentGender(CompanyID company);
|
||||
|
||||
/**
|
||||
* Sets the amount to loan.
|
||||
* @param loan The amount to loan (multiplier of GetLoanInterval()).
|
||||
|
@@ -7,6 +7,8 @@ namespace SQConvert {
|
||||
/* Allow enums to be used as Squirrel parameters */
|
||||
template <> AICompany::CompanyID GetParam(ForceType<AICompany::CompanyID>, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQInteger tmp; sq_getinteger(vm, index, &tmp); return (AICompany::CompanyID)tmp; }
|
||||
template <> int Return<AICompany::CompanyID>(HSQUIRRELVM vm, AICompany::CompanyID res) { sq_pushinteger(vm, (int32)res); return 1; }
|
||||
template <> AICompany::Gender GetParam(ForceType<AICompany::Gender>, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQInteger tmp; sq_getinteger(vm, index, &tmp); return (AICompany::Gender)tmp; }
|
||||
template <> int Return<AICompany::Gender>(HSQUIRRELVM vm, AICompany::Gender res) { sq_pushinteger(vm, (int32)res); return 1; }
|
||||
|
||||
/* Allow AICompany to be used as Squirrel parameter */
|
||||
template <> AICompany *GetParam(ForceType<AICompany *>, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (AICompany *)instance; }
|
||||
@@ -25,13 +27,18 @@ void SQAICompany_Register(Squirrel *engine) {
|
||||
SQAICompany.DefSQConst(engine, AICompany::COMPANY_FIRST, "COMPANY_FIRST");
|
||||
SQAICompany.DefSQConst(engine, AICompany::COMPANY_LAST, "COMPANY_LAST");
|
||||
SQAICompany.DefSQConst(engine, AICompany::COMPANY_SELF, "COMPANY_SELF");
|
||||
SQAICompany.DefSQConst(engine, AICompany::GENDER_MALE, "GENDER_MALE");
|
||||
SQAICompany.DefSQConst(engine, AICompany::GENDER_FEMALE, "GENDER_FEMALE");
|
||||
SQAICompany.DefSQConst(engine, AICompany::GENDER_INVALID, "GENDER_INVALID");
|
||||
|
||||
SQAICompany.DefSQStaticMethod(engine, &AICompany::ResolveCompanyID, "ResolveCompanyID", 2, ".i");
|
||||
SQAICompany.DefSQStaticMethod(engine, &AICompany::IsMine, "IsMine", 2, ".i");
|
||||
SQAICompany.DefSQStaticMethod(engine, &AICompany::SetName, "SetName", 2, ".s");
|
||||
SQAICompany.DefSQStaticMethod(engine, &AICompany::SetName, "SetName", 2, "..");
|
||||
SQAICompany.DefSQStaticMethod(engine, &AICompany::GetName, "GetName", 2, ".i");
|
||||
SQAICompany.DefSQStaticMethod(engine, &AICompany::SetPresidentName, "SetPresidentName", 2, ".s");
|
||||
SQAICompany.DefSQStaticMethod(engine, &AICompany::SetPresidentName, "SetPresidentName", 2, "..");
|
||||
SQAICompany.DefSQStaticMethod(engine, &AICompany::GetPresidentName, "GetPresidentName", 2, ".i");
|
||||
SQAICompany.DefSQStaticMethod(engine, &AICompany::SetPresidentGender, "SetPresidentGender", 2, ".i");
|
||||
SQAICompany.DefSQStaticMethod(engine, &AICompany::GetPresidentGender, "GetPresidentGender", 2, ".i");
|
||||
SQAICompany.DefSQStaticMethod(engine, &AICompany::SetLoanAmount, "SetLoanAmount", 2, ".i");
|
||||
SQAICompany.DefSQStaticMethod(engine, &AICompany::SetMinimumLoanAmount, "SetMinimumLoanAmount", 2, ".i");
|
||||
SQAICompany.DefSQStaticMethod(engine, &AICompany::GetLoanAmount, "GetLoanAmount", 1, ".");
|
||||
|
@@ -23,9 +23,8 @@
|
||||
|
||||
/* static */ void AIController::Sleep(int ticks)
|
||||
{
|
||||
if (!AIObject::GetAllowDoCommand()) {
|
||||
AILog::Error("You are not allowed to call Sleep in your constructor, Save(), Load(), and any valuator.\n");
|
||||
return;
|
||||
if (!AIObject::CanSuspend()) {
|
||||
throw AI_FatalError("You are not allowed to call Sleep in your constructor, Save(), Load(), and any valuator.");
|
||||
}
|
||||
|
||||
if (ticks <= 0) {
|
||||
|
@@ -152,6 +152,13 @@
|
||||
return ::GetEngine(engine_id)->GetDisplayMaxTractiveEffort();
|
||||
}
|
||||
|
||||
/* static */ int32 AIEngine::GetDesignDate(EngineID engine_id)
|
||||
{
|
||||
if (!IsValidEngine(engine_id)) return -1;
|
||||
|
||||
return ::GetEngine(engine_id)->intro_date;
|
||||
}
|
||||
|
||||
/* static */ AIVehicle::VehicleType AIEngine::GetVehicleType(EngineID engine_id)
|
||||
{
|
||||
if (!IsValidEngine(engine_id)) return AIVehicle::VT_INVALID;
|
||||
|
@@ -152,6 +152,14 @@ public:
|
||||
*/
|
||||
static int32 GetMaxTractiveEffort(EngineID engine_id);
|
||||
|
||||
/**
|
||||
* Get the date this engine was designed.
|
||||
* @param engine_id The engine to get the design date of.
|
||||
* @pre IsValidEngine(engine_id).
|
||||
* @return The date this engine was designed.
|
||||
*/
|
||||
static int32 GetDesignDate(EngineID engine_id);
|
||||
|
||||
/**
|
||||
* Get the type of an engine.
|
||||
* @param engine_id The engine to get the type of.
|
||||
|
@@ -31,6 +31,7 @@ void SQAIEngine_Register(Squirrel *engine) {
|
||||
SQAIEngine.DefSQStaticMethod(engine, &AIEngine::GetPower, "GetPower", 2, ".i");
|
||||
SQAIEngine.DefSQStaticMethod(engine, &AIEngine::GetWeight, "GetWeight", 2, ".i");
|
||||
SQAIEngine.DefSQStaticMethod(engine, &AIEngine::GetMaxTractiveEffort, "GetMaxTractiveEffort", 2, ".i");
|
||||
SQAIEngine.DefSQStaticMethod(engine, &AIEngine::GetDesignDate, "GetDesignDate", 2, ".i");
|
||||
SQAIEngine.DefSQStaticMethod(engine, &AIEngine::GetVehicleType, "GetVehicleType", 2, ".i");
|
||||
SQAIEngine.DefSQStaticMethod(engine, &AIEngine::IsWagon, "IsWagon", 2, ".i");
|
||||
SQAIEngine.DefSQStaticMethod(engine, &AIEngine::CanRunOnRail, "CanRunOnRail", 3, ".ii");
|
||||
|
@@ -4,6 +4,9 @@
|
||||
|
||||
#include "ai_execmode.hpp"
|
||||
#include "../../command_type.h"
|
||||
#include "../../company_base.h"
|
||||
#include "../../company_func.h"
|
||||
#include "../ai_instance.hpp"
|
||||
|
||||
bool AIExecMode::ModeProc(TileIndex tile, uint32 p1, uint32 p2, uint procc, CommandCost costs)
|
||||
{
|
||||
@@ -21,6 +24,12 @@ AIExecMode::AIExecMode()
|
||||
|
||||
AIExecMode::~AIExecMode()
|
||||
{
|
||||
assert(this->GetDoCommandModeInstance() == this);
|
||||
if (this->GetDoCommandModeInstance() != this) {
|
||||
AIInstance *instance = GetCompany(_current_company)->ai_instance;
|
||||
/* Ignore this error if the AI already died. */
|
||||
if (!instance->IsDead()) {
|
||||
throw AI_FatalError("AIExecMode object was removed while it was not the latest AI*Mode object created.");
|
||||
}
|
||||
}
|
||||
this->SetDoCommandMode(this->last_mode, this->last_instance);
|
||||
}
|
||||
|
@@ -17,8 +17,8 @@ void SQAIGameSettings_Register(Squirrel *engine) {
|
||||
SQAIGameSettings.PreRegister(engine);
|
||||
SQAIGameSettings.AddConstructor<void (AIGameSettings::*)(), 1>(engine, "x");
|
||||
|
||||
SQAIGameSettings.DefSQStaticMethod(engine, &AIGameSettings::IsValid, "IsValid", 2, ".s");
|
||||
SQAIGameSettings.DefSQStaticMethod(engine, &AIGameSettings::GetValue, "GetValue", 2, ".s");
|
||||
SQAIGameSettings.DefSQStaticMethod(engine, &AIGameSettings::IsValid, "IsValid", 2, "..");
|
||||
SQAIGameSettings.DefSQStaticMethod(engine, &AIGameSettings::GetValue, "GetValue", 2, "..");
|
||||
SQAIGameSettings.DefSQStaticMethod(engine, &AIGameSettings::IsDisabledVehicleType, "IsDisabledVehicleType", 2, ".i");
|
||||
|
||||
SQAIGameSettings.PostRegister(engine);
|
||||
|
@@ -29,7 +29,7 @@ void SQAIGroup_Register(Squirrel *engine) {
|
||||
SQAIGroup.DefSQStaticMethod(engine, &AIGroup::CreateGroup, "CreateGroup", 2, ".i");
|
||||
SQAIGroup.DefSQStaticMethod(engine, &AIGroup::DeleteGroup, "DeleteGroup", 2, ".i");
|
||||
SQAIGroup.DefSQStaticMethod(engine, &AIGroup::GetVehicleType, "GetVehicleType", 2, ".i");
|
||||
SQAIGroup.DefSQStaticMethod(engine, &AIGroup::SetName, "SetName", 3, ".is");
|
||||
SQAIGroup.DefSQStaticMethod(engine, &AIGroup::SetName, "SetName", 3, ".i.");
|
||||
SQAIGroup.DefSQStaticMethod(engine, &AIGroup::GetName, "GetName", 2, ".i");
|
||||
SQAIGroup.DefSQStaticMethod(engine, &AIGroup::EnableAutoReplaceProtection, "EnableAutoReplaceProtection", 3, ".ib");
|
||||
SQAIGroup.DefSQStaticMethod(engine, &AIGroup::GetAutoReplaceProtection, "GetAutoReplaceProtection", 2, ".i");
|
||||
|
@@ -91,6 +91,20 @@
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* static */ int32 AIIndustry::GetLastMonthTransportedPercentage(IndustryID industry_id, CargoID cargo_id)
|
||||
{
|
||||
if (!IsValidIndustry(industry_id)) return -1;
|
||||
if (!AICargo::IsValidCargo(cargo_id)) return -1;
|
||||
|
||||
const Industry *i = ::GetIndustry(industry_id);
|
||||
|
||||
for (byte j = 0; j < lengthof(i->produced_cargo); j++) {
|
||||
if (i->produced_cargo[j] == cargo_id) return i->last_month_pct_transported[j] * 100 >> 8;
|
||||
}
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* static */ TileIndex AIIndustry::GetLocation(IndustryID industry_id)
|
||||
{
|
||||
if (!IsValidIndustry(industry_id)) return INVALID_TILE;
|
||||
|
@@ -77,6 +77,16 @@ public:
|
||||
*/
|
||||
static int32 GetLastMonthTransported(IndustryID industry_id, CargoID cargo_id);
|
||||
|
||||
/**
|
||||
* Get the percentage of cargo transported from an industry last month.
|
||||
* @param industry_id The index of the industry.
|
||||
* @param cargo_id The index of the cargo.
|
||||
* @pre IsValidIndustry(industry_id).
|
||||
* @pre AICargo::IsValidCargo(cargo_id).
|
||||
* @return The percentage of given cargo transported from this industry last month.
|
||||
*/
|
||||
static int32 GetLastMonthTransportedPercentage(IndustryID industry_id, CargoID cargo_id);
|
||||
|
||||
/**
|
||||
* Gets the location of the industry.
|
||||
* @param industry_id The index of the industry.
|
||||
|
@@ -17,23 +17,24 @@ void SQAIIndustry_Register(Squirrel *engine) {
|
||||
SQAIIndustry.PreRegister(engine);
|
||||
SQAIIndustry.AddConstructor<void (AIIndustry::*)(), 1>(engine, "x");
|
||||
|
||||
SQAIIndustry.DefSQStaticMethod(engine, &AIIndustry::GetIndustryCount, "GetIndustryCount", 1, ".");
|
||||
SQAIIndustry.DefSQStaticMethod(engine, &AIIndustry::IsValidIndustry, "IsValidIndustry", 2, ".i");
|
||||
SQAIIndustry.DefSQStaticMethod(engine, &AIIndustry::GetName, "GetName", 2, ".i");
|
||||
SQAIIndustry.DefSQStaticMethod(engine, &AIIndustry::IsCargoAccepted, "IsCargoAccepted", 3, ".ii");
|
||||
SQAIIndustry.DefSQStaticMethod(engine, &AIIndustry::GetStockpiledCargo, "GetStockpiledCargo", 3, ".ii");
|
||||
SQAIIndustry.DefSQStaticMethod(engine, &AIIndustry::GetLastMonthProduction, "GetLastMonthProduction", 3, ".ii");
|
||||
SQAIIndustry.DefSQStaticMethod(engine, &AIIndustry::GetLastMonthTransported, "GetLastMonthTransported", 3, ".ii");
|
||||
SQAIIndustry.DefSQStaticMethod(engine, &AIIndustry::GetLocation, "GetLocation", 2, ".i");
|
||||
SQAIIndustry.DefSQStaticMethod(engine, &AIIndustry::GetAmountOfStationsAround, "GetAmountOfStationsAround", 2, ".i");
|
||||
SQAIIndustry.DefSQStaticMethod(engine, &AIIndustry::GetDistanceManhattanToTile, "GetDistanceManhattanToTile", 3, ".ii");
|
||||
SQAIIndustry.DefSQStaticMethod(engine, &AIIndustry::GetDistanceSquareToTile, "GetDistanceSquareToTile", 3, ".ii");
|
||||
SQAIIndustry.DefSQStaticMethod(engine, &AIIndustry::IsBuiltOnWater, "IsBuiltOnWater", 2, ".i");
|
||||
SQAIIndustry.DefSQStaticMethod(engine, &AIIndustry::HasHeliport, "HasHeliport", 2, ".i");
|
||||
SQAIIndustry.DefSQStaticMethod(engine, &AIIndustry::GetHeliportLocation, "GetHeliportLocation", 2, ".i");
|
||||
SQAIIndustry.DefSQStaticMethod(engine, &AIIndustry::HasDock, "HasDock", 2, ".i");
|
||||
SQAIIndustry.DefSQStaticMethod(engine, &AIIndustry::GetDockLocation, "GetDockLocation", 2, ".i");
|
||||
SQAIIndustry.DefSQStaticMethod(engine, &AIIndustry::GetIndustryType, "GetIndustryType", 2, ".i");
|
||||
SQAIIndustry.DefSQStaticMethod(engine, &AIIndustry::GetIndustryCount, "GetIndustryCount", 1, ".");
|
||||
SQAIIndustry.DefSQStaticMethod(engine, &AIIndustry::IsValidIndustry, "IsValidIndustry", 2, ".i");
|
||||
SQAIIndustry.DefSQStaticMethod(engine, &AIIndustry::GetName, "GetName", 2, ".i");
|
||||
SQAIIndustry.DefSQStaticMethod(engine, &AIIndustry::IsCargoAccepted, "IsCargoAccepted", 3, ".ii");
|
||||
SQAIIndustry.DefSQStaticMethod(engine, &AIIndustry::GetStockpiledCargo, "GetStockpiledCargo", 3, ".ii");
|
||||
SQAIIndustry.DefSQStaticMethod(engine, &AIIndustry::GetLastMonthProduction, "GetLastMonthProduction", 3, ".ii");
|
||||
SQAIIndustry.DefSQStaticMethod(engine, &AIIndustry::GetLastMonthTransported, "GetLastMonthTransported", 3, ".ii");
|
||||
SQAIIndustry.DefSQStaticMethod(engine, &AIIndustry::GetLastMonthTransportedPercentage, "GetLastMonthTransportedPercentage", 3, ".ii");
|
||||
SQAIIndustry.DefSQStaticMethod(engine, &AIIndustry::GetLocation, "GetLocation", 2, ".i");
|
||||
SQAIIndustry.DefSQStaticMethod(engine, &AIIndustry::GetAmountOfStationsAround, "GetAmountOfStationsAround", 2, ".i");
|
||||
SQAIIndustry.DefSQStaticMethod(engine, &AIIndustry::GetDistanceManhattanToTile, "GetDistanceManhattanToTile", 3, ".ii");
|
||||
SQAIIndustry.DefSQStaticMethod(engine, &AIIndustry::GetDistanceSquareToTile, "GetDistanceSquareToTile", 3, ".ii");
|
||||
SQAIIndustry.DefSQStaticMethod(engine, &AIIndustry::IsBuiltOnWater, "IsBuiltOnWater", 2, ".i");
|
||||
SQAIIndustry.DefSQStaticMethod(engine, &AIIndustry::HasHeliport, "HasHeliport", 2, ".i");
|
||||
SQAIIndustry.DefSQStaticMethod(engine, &AIIndustry::GetHeliportLocation, "GetHeliportLocation", 2, ".i");
|
||||
SQAIIndustry.DefSQStaticMethod(engine, &AIIndustry::HasDock, "HasDock", 2, ".i");
|
||||
SQAIIndustry.DefSQStaticMethod(engine, &AIIndustry::GetDockLocation, "GetDockLocation", 2, ".i");
|
||||
SQAIIndustry.DefSQStaticMethod(engine, &AIIndustry::GetIndustryType, "GetIndustryType", 2, ".i");
|
||||
|
||||
SQAIIndustry.PostRegister(engine);
|
||||
}
|
||||
|
@@ -17,9 +17,9 @@ void SQAILog_Register(Squirrel *engine) {
|
||||
SQAILog.PreRegister(engine);
|
||||
SQAILog.AddConstructor<void (AILog::*)(), 1>(engine, "x");
|
||||
|
||||
SQAILog.DefSQStaticMethod(engine, &AILog::Info, "Info", 2, ".s");
|
||||
SQAILog.DefSQStaticMethod(engine, &AILog::Warning, "Warning", 2, ".s");
|
||||
SQAILog.DefSQStaticMethod(engine, &AILog::Error, "Error", 2, ".s");
|
||||
SQAILog.DefSQStaticMethod(engine, &AILog::Info, "Info", 2, "..");
|
||||
SQAILog.DefSQStaticMethod(engine, &AILog::Warning, "Warning", 2, "..");
|
||||
SQAILog.DefSQStaticMethod(engine, &AILog::Error, "Error", 2, "..");
|
||||
|
||||
SQAILog.PostRegister(engine);
|
||||
}
|
||||
|
@@ -13,9 +13,7 @@
|
||||
class AIMap : public AIObject {
|
||||
public:
|
||||
#ifdef DEFINE_SCRIPT_FILES
|
||||
enum MapType {
|
||||
TILE_INVALID = INVALID_TILE, //!< Invalid TileIndex.
|
||||
};
|
||||
static const int TILE_INVALID = INVALID_TILE; //!< Invalid TileIndex.
|
||||
#endif /* DEFINE_SCRIPT_FILES */
|
||||
#ifdef DOXYGEN_SKIP
|
||||
const static TileIndex TILE_INVALID; //!< Invalid TileIndex.
|
||||
|
@@ -4,10 +4,6 @@
|
||||
#include "ai_map.hpp"
|
||||
|
||||
namespace SQConvert {
|
||||
/* Allow enums to be used as Squirrel parameters */
|
||||
template <> AIMap::MapType GetParam(ForceType<AIMap::MapType>, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQInteger tmp; sq_getinteger(vm, index, &tmp); return (AIMap::MapType)tmp; }
|
||||
template <> int Return<AIMap::MapType>(HSQUIRRELVM vm, AIMap::MapType res) { sq_pushinteger(vm, (int32)res); return 1; }
|
||||
|
||||
/* Allow AIMap to be used as Squirrel parameter */
|
||||
template <> AIMap *GetParam(ForceType<AIMap *>, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (AIMap *)instance; }
|
||||
template <> AIMap &GetParam(ForceType<AIMap &>, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(AIMap *)instance; }
|
||||
|
@@ -161,6 +161,11 @@ void AIObject::SetAllowDoCommand(bool allow)
|
||||
}
|
||||
|
||||
bool AIObject::GetAllowDoCommand()
|
||||
{
|
||||
return GetStorage()->allow_do_command;
|
||||
}
|
||||
|
||||
bool AIObject::CanSuspend()
|
||||
{
|
||||
Squirrel *squirrel = GetCompany(_current_company)->ai_instance->engine;
|
||||
return GetStorage()->allow_do_command && squirrel->CanSuspend();
|
||||
@@ -189,9 +194,8 @@ int AIObject::GetCallbackVariable(int index)
|
||||
|
||||
bool AIObject::DoCommand(TileIndex tile, uint32 p1, uint32 p2, uint cmd, const char *text, AISuspendCallbackProc *callback)
|
||||
{
|
||||
if (AIObject::GetAllowDoCommand() == false) {
|
||||
AILog::Error("You are not allowed to execute any DoCommand (even indirect) in your constructor, Save(), Load(), and any valuator.\n");
|
||||
return false;
|
||||
if (!AIObject::CanSuspend()) {
|
||||
throw AI_FatalError("You are not allowed to execute any DoCommand (even indirect) in your constructor, Save(), Load(), and any valuator.");
|
||||
}
|
||||
|
||||
CommandCost res;
|
||||
|
@@ -133,8 +133,15 @@ protected:
|
||||
static GroupID GetNewGroupID();
|
||||
|
||||
/**
|
||||
* Get the latest stored allow_do_command.
|
||||
* If this is false, you are not allowed to do any DoCommands.
|
||||
* Can we suspend the AI at this moment?
|
||||
*/
|
||||
static bool CanSuspend();
|
||||
|
||||
/**
|
||||
* Get the internal value of allow_do_command. This can differ
|
||||
* from CanSuspend() if the reason we are not allowed
|
||||
* to execute a DoCommand is in squirrel and not the API.
|
||||
* In that case use this function to restore the previous value.
|
||||
*/
|
||||
static bool GetAllowDoCommand();
|
||||
|
||||
|
@@ -328,7 +328,7 @@ public:
|
||||
* @pre AIVehicle::IsValidVehicle(vehicle_id).
|
||||
* @pre AreOrderFlagsValid(destination, order_flags).
|
||||
* @exception AIError::ERR_OWNED_BY_ANOTHER_COMPANY
|
||||
* @exception AIOrder::ERR_ORDER_NO_MORE_SPACE
|
||||
* @exception AIOrder::ERR_ORDER_TOO_MANY
|
||||
* @exception AIOrder::ERR_ORDER_TOO_FAR_AWAY_FROM_PREVIOUS_DESTINATION
|
||||
* @return True if and only if the order was appended.
|
||||
*/
|
||||
@@ -341,7 +341,7 @@ public:
|
||||
* @pre AIVehicle::IsValidVehicle(vehicle_id).
|
||||
* @pre IsValidVehicleOrder(vehicle_id, jump_to).
|
||||
* @exception AIError::ERR_OWNED_BY_ANOTHER_COMPANY
|
||||
* @exception AIOrder::ERR_ORDER_NO_MORE_SPACE
|
||||
* @exception AIOrder::ERR_ORDER_TOO_MANY
|
||||
* @return True if and only if the order was appended.
|
||||
*/
|
||||
static bool AppendConditionalOrder(VehicleID vehicle_id, OrderPosition jump_to);
|
||||
@@ -355,7 +355,7 @@ public:
|
||||
* @pre IsValidVehicleOrder(vehicle_id, order_position).
|
||||
* @pre AreOrderFlagsValid(destination, order_flags).
|
||||
* @exception AIError::ERR_OWNED_BY_ANOTHER_COMPANY
|
||||
* @exception AIOrder::ERR_ORDER_NO_MORE_SPACE
|
||||
* @exception AIOrder::ERR_ORDER_TOO_MANY
|
||||
* @exception AIOrder::ERR_ORDER_TOO_FAR_AWAY_FROM_PREVIOUS_DESTINATION
|
||||
* @return True if and only if the order was inserted.
|
||||
*/
|
||||
@@ -369,7 +369,7 @@ public:
|
||||
* @pre IsValidVehicleOrder(vehicle_id, order_position).
|
||||
* @pre IsValidVehicleOrder(vehicle_id, jump_to).
|
||||
* @exception AIError::ERR_OWNED_BY_ANOTHER_COMPANY
|
||||
* @exception AIOrder::ERR_ORDER_NO_MORE_SPACE
|
||||
* @exception AIOrder::ERR_ORDER_TOO_MANY
|
||||
* @return True if and only if the order was inserted.
|
||||
*/
|
||||
static bool InsertConditionalOrder(VehicleID vehicle_id, OrderPosition order_position, OrderPosition jump_to);
|
||||
@@ -442,7 +442,7 @@ public:
|
||||
* @pre AIVehicle::IsValidVehicle(vehicle_id).
|
||||
* @pre AIVehicle::IsValidVehicle(main_vehicle_id).
|
||||
* @exception AIError::ERR_OWNED_BY_ANOTHER_COMPANY
|
||||
* @exception AIOrder::ERR_ORDER_NO_MORE_SPACE
|
||||
* @exception AIOrder::ERR_ORDER_TOO_MANY
|
||||
* @return True if and only if the copying succeeded.
|
||||
*/
|
||||
static bool CopyOrders(VehicleID vehicle_id, VehicleID main_vehicle_id);
|
||||
|
@@ -221,7 +221,7 @@
|
||||
/* static */ bool AIRail::RemoveRailTrack(TileIndex tile, RailTrack rail_track)
|
||||
{
|
||||
EnforcePrecondition(false, ::IsValidTile(tile));
|
||||
EnforcePrecondition(false, ::IsTileType(tile, MP_RAILWAY) && ::IsPlainRailTile(tile));
|
||||
EnforcePrecondition(false, ::IsPlainRailTile(tile) || ::IsLevelCrossingTile(tile));
|
||||
EnforcePrecondition(false, GetRailTracks(tile) & rail_track);
|
||||
EnforcePrecondition(false, KillFirstBit((uint)rail_track) == 0);
|
||||
|
||||
@@ -404,7 +404,7 @@ static bool IsValidSignalType(int signal_type)
|
||||
/* static */ bool AIRail::BuildSignal(TileIndex tile, TileIndex front, SignalType signal)
|
||||
{
|
||||
EnforcePrecondition(false, AIMap::DistanceManhattan(tile, front) == 1)
|
||||
EnforcePrecondition(false, ::IsTileType(tile, MP_RAILWAY) && ::IsPlainRailTile(tile));
|
||||
EnforcePrecondition(false, ::IsPlainRailTile(tile));
|
||||
EnforcePrecondition(false, ::IsValidSignalType(signal));
|
||||
|
||||
Track track = INVALID_TRACK;
|
||||
|
@@ -75,6 +75,7 @@
|
||||
{
|
||||
if (!::IsValidTile(t1)) return false;
|
||||
if (!::IsValidTile(t2)) return false;
|
||||
if (!IsRoadTypeAvailable(GetCurrentRoadType())) return false;
|
||||
|
||||
/* Tiles not neighbouring */
|
||||
if ((abs((int)::TileX(t1) - (int)::TileX(t2)) + abs((int)::TileY(t1) - (int)::TileY(t2))) != 1) return false;
|
||||
@@ -421,6 +422,7 @@ static bool NeighbourHasReachableRoad(::RoadTypes rts, TileIndex start_tile, Dia
|
||||
/* static */ int32 AIRoad::GetNeighbourRoadCount(TileIndex tile)
|
||||
{
|
||||
if (!::IsValidTile(tile)) return false;
|
||||
if (!IsRoadTypeAvailable(GetCurrentRoadType())) return false;
|
||||
|
||||
::RoadTypes rts = ::RoadTypeToRoadTypes((::RoadType)GetCurrentRoadType());
|
||||
int32 neighbour = 0;
|
||||
@@ -461,6 +463,7 @@ static bool NeighbourHasReachableRoad(::RoadTypes rts, TileIndex start_tile, Dia
|
||||
EnforcePrecondition(false, ::IsValidTile(end));
|
||||
EnforcePrecondition(false, ::TileX(start) == ::TileX(end) || ::TileY(start) == ::TileY(end));
|
||||
EnforcePrecondition(false, !one_way || AIObject::GetRoadType() == ::ROADTYPE_ROAD);
|
||||
EnforcePrecondition(false, IsRoadTypeAvailable(GetCurrentRoadType()));
|
||||
|
||||
return AIObject::DoCommand(end, start, (::TileY(start) != ::TileY(end) ? 4 : 0) | (((start < end) == !full) ? 1 : 2) | (AIObject::GetRoadType() << 3) | ((one_way ? 1 : 0) << 5), CMD_BUILD_LONG_ROAD);
|
||||
}
|
||||
@@ -491,6 +494,7 @@ static bool NeighbourHasReachableRoad(::RoadTypes rts, TileIndex start_tile, Dia
|
||||
EnforcePrecondition(false, ::IsValidTile(tile));
|
||||
EnforcePrecondition(false, ::IsValidTile(front));
|
||||
EnforcePrecondition(false, ::TileX(tile) == ::TileX(front) || ::TileY(tile) == ::TileY(front));
|
||||
EnforcePrecondition(false, IsRoadTypeAvailable(GetCurrentRoadType()));
|
||||
|
||||
uint entrance_dir = (::TileX(tile) == ::TileX(front)) ? (::TileY(tile) < ::TileY(front) ? 1 : 3) : (::TileX(tile) < ::TileX(front) ? 2 : 0);
|
||||
|
||||
@@ -505,6 +509,7 @@ static bool NeighbourHasReachableRoad(::RoadTypes rts, TileIndex start_tile, Dia
|
||||
EnforcePrecondition(false, ::TileX(tile) == ::TileX(front) || ::TileY(tile) == ::TileY(front));
|
||||
EnforcePrecondition(false, station_id == AIStation::STATION_NEW || station_id == AIStation::STATION_JOIN_ADJACENT || AIStation::IsValidStation(station_id));
|
||||
EnforcePrecondition(false, road_veh_type == ROADVEHTYPE_BUS || road_veh_type == ROADVEHTYPE_TRUCK);
|
||||
EnforcePrecondition(false, IsRoadTypeAvailable(GetCurrentRoadType()));
|
||||
|
||||
uint entrance_dir;
|
||||
if (drive_through) {
|
||||
@@ -536,6 +541,7 @@ static bool NeighbourHasReachableRoad(::RoadTypes rts, TileIndex start_tile, Dia
|
||||
EnforcePrecondition(false, ::IsValidTile(start));
|
||||
EnforcePrecondition(false, ::IsValidTile(end));
|
||||
EnforcePrecondition(false, ::TileX(start) == ::TileX(end) || ::TileY(start) == ::TileY(end));
|
||||
EnforcePrecondition(false, IsRoadTypeAvailable(GetCurrentRoadType()));
|
||||
|
||||
return AIObject::DoCommand(end, start, (::TileY(start) != ::TileY(end) ? 4 : 0) | (start < end ? 1 : 2) | (AIObject::GetRoadType() << 3), CMD_REMOVE_LONG_ROAD);
|
||||
}
|
||||
@@ -545,6 +551,7 @@ static bool NeighbourHasReachableRoad(::RoadTypes rts, TileIndex start_tile, Dia
|
||||
EnforcePrecondition(false, ::IsValidTile(start));
|
||||
EnforcePrecondition(false, ::IsValidTile(end));
|
||||
EnforcePrecondition(false, ::TileX(start) == ::TileX(end) || ::TileY(start) == ::TileY(end));
|
||||
EnforcePrecondition(false, IsRoadTypeAvailable(GetCurrentRoadType()));
|
||||
|
||||
return AIObject::DoCommand(end, start, (::TileY(start) != ::TileY(end) ? 4 : 0) | (start < end ? 2 : 1) | (AIObject::GetRoadType() << 3), CMD_REMOVE_LONG_ROAD);
|
||||
}
|
||||
|
@@ -134,6 +134,7 @@ public:
|
||||
* center of the second tile.
|
||||
* @param tile_from The source tile.
|
||||
* @param tile_to The destination tile.
|
||||
* @pre IsRoadTypeAvailable(GetCurrentRoadType()).
|
||||
* @pre AIMap::IsValidTile(tile_from).
|
||||
* @pre AIMap::IsValidTile(tile_to).
|
||||
* @pre 'tile_from' and 'tile_to' are directly neighbouring tiles.
|
||||
@@ -197,6 +198,7 @@ public:
|
||||
* Count how many neighbours are road.
|
||||
* @param tile The tile to check on.
|
||||
* @pre AIMap::IsValidTile(tile).
|
||||
* @pre IsRoadTypeAvailable(GetCurrentRoadType()).
|
||||
* @return 0 means no neighbour road; max value is 4.
|
||||
*/
|
||||
static int32 GetNeighbourRoadCount(TileIndex tile);
|
||||
@@ -237,6 +239,7 @@ public:
|
||||
* @pre 'start' and 'end' are in a straight line, i.e.
|
||||
* AIMap::GetTileX(start) == AIMap::GetTileX(end) or
|
||||
* AIMap::GetTileY(start) == AIMap::GetTileY(end).
|
||||
* @pre IsRoadTypeAvailable(GetCurrentRoadType()).
|
||||
* @exception AIError::ERR_ALREADY_BUILT
|
||||
* @exception AIError::ERR_LAND_SLOPED_WRONG
|
||||
* @exception AIError::ERR_AREA_NOT_CLEAR
|
||||
@@ -284,6 +287,7 @@ public:
|
||||
* @pre 'start' and 'end' are in a straight line, i.e.
|
||||
* AIMap::GetTileX(start) == AIMap::GetTileX(end) or
|
||||
* AIMap::GetTileY(start) == AIMap::GetTileY(end).
|
||||
* @pre IsRoadTypeAvailable(GetCurrentRoadType()).
|
||||
* @exception AIError::ERR_ALREADY_BUILT
|
||||
* @exception AIError::ERR_LAND_SLOPED_WRONG
|
||||
* @exception AIError::ERR_AREA_NOT_CLEAR
|
||||
@@ -328,6 +332,7 @@ public:
|
||||
* @pre AIMap::IsValidTile(tile).
|
||||
* @pre AIMap::IsValidTile(front).
|
||||
* @pre 'tile' is not equal to 'front', but in a straight line of it.
|
||||
* @pre IsRoadTypeAvailable(GetCurrentRoadType()).
|
||||
* @exception AIError::ERR_FLAT_LAND_REQUIRED
|
||||
* @exception AIError::ERR_AREA_NOT_CLEAR
|
||||
* @return Whether the road depot has been/can be build or not.
|
||||
@@ -344,12 +349,13 @@ public:
|
||||
* @pre AIMap::IsValidTile(front).
|
||||
* @pre 'tile' is not equal to 'front', but in a straight line of it.
|
||||
* @pre station_id == AIStation::STATION_NEW || station_id == AIStation::STATION_JOIN_ADJACENT || AIStation::IsValidStation(station_id).
|
||||
* @pre GetCurrentRoadType() == ROADTYPE_ROAD.
|
||||
* @exception AIError::ERR_OWNED_BY_ANOTHER_COMPANY
|
||||
* @exception AIError::ERR_AREA_NOT_CLEAR
|
||||
* @exception AIError::ERR_FLAT_LAND_REQUIRED
|
||||
* @exception AIRoad::ERR_ROAD_DRIVE_THROUGH_WRONG_DIRECTION
|
||||
* @exception AIRoad::ERR_ROAD_CANNOT_BUILD_ON_TOWN_ROAD
|
||||
* @exception AIError:ERR_VEHICLE_IN_THE_WAY
|
||||
* @exception AIError::ERR_VEHICLE_IN_THE_WAY
|
||||
* @exception AIStation::ERR_STATION_TOO_CLOSE_TO_ANOTHER_STATION
|
||||
* @exception AIStation::ERR_STATION_TOO_MANY_STATIONS
|
||||
* @exception AIStation::ERR_STATION_TOO_MANY_STATIONS_IN_TOWN
|
||||
@@ -359,7 +365,7 @@ public:
|
||||
|
||||
/**
|
||||
* Builds a drive-through road bus or truck station.
|
||||
* @param tile Place to build the depot.
|
||||
* @param tile Place to build the station.
|
||||
* @param front A tile on the same axis with 'tile' as the station shall be oriented.
|
||||
* @param road_veh_type Whether to build a truck or bus station.
|
||||
* @param station_id The station to join, AIStation::STATION_NEW or AIStation::STATION_JOIN_ADJACENT.
|
||||
@@ -367,12 +373,13 @@ public:
|
||||
* @pre AIMap::IsValidTile(front).
|
||||
* @pre 'tile' is not equal to 'front', but in a straight line of it.
|
||||
* @pre station_id == AIStation::STATION_NEW || station_id == AIStation::STATION_JOIN_ADJACENT || AIStation::IsValidStation(station_id).
|
||||
* @pre IsRoadTypeAvailable(GetCurrentRoadType()).
|
||||
* @exception AIError::ERR_OWNED_BY_ANOTHER_COMPANY
|
||||
* @exception AIError::ERR_AREA_NOT_CLEAR
|
||||
* @exception AIError::ERR_FLAT_LAND_REQUIRED
|
||||
* @exception AIRoad::ERR_ROAD_DRIVE_THROUGH_WRONG_DIRECTION
|
||||
* @exception AIRoad::ERR_ROAD_CANNOT_BUILD_ON_TOWN_ROAD
|
||||
* @exception AIError:ERR_VEHICLE_IN_THE_WAY
|
||||
* @exception AIError::ERR_VEHICLE_IN_THE_WAY
|
||||
* @exception AIStation::ERR_STATION_TOO_CLOSE_TO_ANOTHER_STATION
|
||||
* @exception AIStation::ERR_STATION_TOO_MANY_STATIONS
|
||||
* @exception AIStation::ERR_STATION_TOO_MANY_STATIONS_IN_TOWN
|
||||
@@ -389,6 +396,7 @@ public:
|
||||
* @pre 'start' and 'end' are in a straight line, i.e.
|
||||
* AIMap::GetTileX(start) == AIMap::GetTileX(end) or
|
||||
* AIMap::GetTileY(start) == AIMap::GetTileY(end).
|
||||
* @pre IsRoadTypeAvailable(GetCurrentRoadType()).
|
||||
* @exception AIError::ERR_OWNED_BY_ANOTHER_COMPANY
|
||||
* @exception AIError::ERR_VEHICLE_IN_THE_WAY
|
||||
* @exception AIRoad::ERR_ROAD_WORKS_IN_PROGRESS
|
||||
@@ -406,6 +414,7 @@ public:
|
||||
* @pre 'start' and 'end' are in a straight line, i.e.
|
||||
* AIMap::GetTileX(start) == AIMap::GetTileX(end) or
|
||||
* AIMap::GetTileY(start) == AIMap::GetTileY(end).
|
||||
* @pre IsRoadTypeAvailable(GetCurrentRoadType()).
|
||||
* @exception AIError::ERR_OWNED_BY_ANOTHER_COMPANY
|
||||
* @exception AIError::ERR_VEHICLE_IN_THE_WAY
|
||||
* @exception AIRoad::ERR_ROAD_WORKS_IN_PROGRESS
|
||||
|
@@ -30,10 +30,10 @@ void SQAISign_Register(Squirrel *engine) {
|
||||
|
||||
SQAISign.DefSQStaticMethod(engine, &AISign::GetMaxSignID, "GetMaxSignID", 1, ".");
|
||||
SQAISign.DefSQStaticMethod(engine, &AISign::IsValidSign, "IsValidSign", 2, ".i");
|
||||
SQAISign.DefSQStaticMethod(engine, &AISign::SetName, "SetName", 3, ".is");
|
||||
SQAISign.DefSQStaticMethod(engine, &AISign::SetName, "SetName", 3, ".i.");
|
||||
SQAISign.DefSQStaticMethod(engine, &AISign::GetName, "GetName", 2, ".i");
|
||||
SQAISign.DefSQStaticMethod(engine, &AISign::GetLocation, "GetLocation", 2, ".i");
|
||||
SQAISign.DefSQStaticMethod(engine, &AISign::BuildSign, "BuildSign", 3, ".is");
|
||||
SQAISign.DefSQStaticMethod(engine, &AISign::BuildSign, "BuildSign", 3, ".i.");
|
||||
SQAISign.DefSQStaticMethod(engine, &AISign::RemoveSign, "RemoveSign", 2, ".i");
|
||||
|
||||
SQAISign.PostRegister(engine);
|
||||
|
@@ -55,6 +55,13 @@
|
||||
return ::GetStation(station_id)->xy;
|
||||
}
|
||||
|
||||
/* static */ int32 AIStation::GetConstructionDate(StationID station_id)
|
||||
{
|
||||
if (!IsValidStation(station_id)) return -1;
|
||||
|
||||
return ::GetStation(station_id)->build_date;
|
||||
}
|
||||
|
||||
/* static */ int32 AIStation::GetCargoWaiting(StationID station_id, CargoID cargo_id)
|
||||
{
|
||||
if (!IsValidStation(station_id)) return -1;
|
||||
|
@@ -102,6 +102,13 @@ public:
|
||||
*/
|
||||
static TileIndex GetLocation(StationID station_id);
|
||||
|
||||
/**
|
||||
* Get the last date a station part was added to this station.
|
||||
* @param station_id The station to look at.
|
||||
* @return The last date some part of this station was build.
|
||||
*/
|
||||
static int32 GetConstructionDate(StationID station_id);
|
||||
|
||||
/**
|
||||
* See how much cargo there is waiting on a station.
|
||||
* @param station_id The station to get the cargo-waiting of.
|
||||
|
@@ -57,8 +57,9 @@ void SQAIStation_Register(Squirrel *engine) {
|
||||
SQAIStation.DefSQStaticMethod(engine, &AIStation::IsValidStation, "IsValidStation", 2, ".i");
|
||||
SQAIStation.DefSQStaticMethod(engine, &AIStation::GetStationID, "GetStationID", 2, ".i");
|
||||
SQAIStation.DefSQStaticMethod(engine, &AIStation::GetName, "GetName", 2, ".i");
|
||||
SQAIStation.DefSQStaticMethod(engine, &AIStation::SetName, "SetName", 3, ".is");
|
||||
SQAIStation.DefSQStaticMethod(engine, &AIStation::SetName, "SetName", 3, ".i.");
|
||||
SQAIStation.DefSQStaticMethod(engine, &AIStation::GetLocation, "GetLocation", 2, ".i");
|
||||
SQAIStation.DefSQStaticMethod(engine, &AIStation::GetConstructionDate, "GetConstructionDate", 2, ".i");
|
||||
SQAIStation.DefSQStaticMethod(engine, &AIStation::GetCargoWaiting, "GetCargoWaiting", 3, ".ii");
|
||||
SQAIStation.DefSQStaticMethod(engine, &AIStation::GetCargoRating, "GetCargoRating", 3, ".ii");
|
||||
SQAIStation.DefSQStaticMethod(engine, &AIStation::GetCoverageRadius, "GetCoverageRadius", 2, ".i");
|
||||
|
@@ -4,6 +4,9 @@
|
||||
|
||||
#include "ai_testmode.hpp"
|
||||
#include "../../command_type.h"
|
||||
#include "../../company_base.h"
|
||||
#include "../../company_func.h"
|
||||
#include "../ai_instance.hpp"
|
||||
|
||||
bool AITestMode::ModeProc(TileIndex tile, uint32 p1, uint32 p2, uint procc, CommandCost costs)
|
||||
{
|
||||
@@ -21,6 +24,12 @@ AITestMode::AITestMode()
|
||||
|
||||
AITestMode::~AITestMode()
|
||||
{
|
||||
assert(this->GetDoCommandModeInstance() == this);
|
||||
if (this->GetDoCommandModeInstance() != this) {
|
||||
AIInstance *instance = GetCompany(_current_company)->ai_instance;
|
||||
/* Ignore this error if the AI already died. */
|
||||
if (!instance->IsDead()) {
|
||||
throw AI_FatalError("AITestmode object was removed while it was not the latest AI*Mode object created.");
|
||||
}
|
||||
}
|
||||
this->SetDoCommandMode(this->last_mode, this->last_instance);
|
||||
}
|
||||
|
@@ -87,31 +87,43 @@
|
||||
|
||||
/* static */ bool AITile::HasTreeOnTile(TileIndex tile)
|
||||
{
|
||||
if (!::IsValidTile(tile)) return false;
|
||||
|
||||
return ::IsTileType(tile, MP_TREES);
|
||||
}
|
||||
|
||||
/* static */ bool AITile::IsFarmTile(TileIndex tile)
|
||||
{
|
||||
if (!::IsValidTile(tile)) return false;
|
||||
|
||||
return (::IsTileType(tile, MP_CLEAR) && ::IsClearGround(tile, CLEAR_FIELDS));
|
||||
}
|
||||
|
||||
/* static */ bool AITile::IsRockTile(TileIndex tile)
|
||||
{
|
||||
if (!::IsValidTile(tile)) return false;
|
||||
|
||||
return (::IsTileType(tile, MP_CLEAR) && ::IsClearGround(tile, CLEAR_ROCKS));
|
||||
}
|
||||
|
||||
/* static */ bool AITile::IsRoughTile(TileIndex tile)
|
||||
{
|
||||
if (!::IsValidTile(tile)) return false;
|
||||
|
||||
return (::IsTileType(tile, MP_CLEAR) && ::IsClearGround(tile, CLEAR_ROUGH));
|
||||
}
|
||||
|
||||
/* static */ bool AITile::IsSnowTile(TileIndex tile)
|
||||
{
|
||||
if (!::IsValidTile(tile)) return false;
|
||||
|
||||
return (::IsTileType(tile, MP_CLEAR) && ::IsClearGround(tile, CLEAR_SNOW));
|
||||
}
|
||||
|
||||
/* static */ bool AITile::IsDesertTile(TileIndex tile)
|
||||
{
|
||||
if (!::IsValidTile(tile)) return false;
|
||||
|
||||
return (::IsTileType(tile, MP_CLEAR) && ::IsClearGround(tile, CLEAR_DESERT));
|
||||
}
|
||||
|
||||
|
@@ -386,7 +386,7 @@ public:
|
||||
* @pre end_tile < AIMap::GetMapSize().
|
||||
* @exception AIError::ERR_AREA_NOT_CLEAR
|
||||
* @exception AIError::ERR_TOO_CLOSE_TO_EDGE
|
||||
* @return True if and only if the area was completely leveled.
|
||||
* @return True if one or more tiles were leveled.
|
||||
* @note Even if leveling some part fails, some other part may have been
|
||||
* succesfully leveled already.
|
||||
* @note This function may return true in AITestMode, although it fails in
|
||||
|
@@ -65,8 +65,8 @@
|
||||
const Town *t = ::GetTown(town_id);
|
||||
|
||||
switch(AICargo::GetTownEffect(cargo_id)) {
|
||||
case AICargo::TE_PASSENGERS: return t->act_pass;
|
||||
case AICargo::TE_MAIL: return t->act_mail;
|
||||
case AICargo::TE_PASSENGERS: return t->max_pass;
|
||||
case AICargo::TE_MAIL: return t->max_mail;
|
||||
default: return -1;
|
||||
}
|
||||
}
|
||||
@@ -79,22 +79,27 @@
|
||||
const Town *t = ::GetTown(town_id);
|
||||
|
||||
switch(AICargo::GetTownEffect(cargo_id)) {
|
||||
case AICargo::TE_PASSENGERS: return t->pct_pass_transported;
|
||||
case AICargo::TE_MAIL: return t->pct_mail_transported;
|
||||
case AICargo::TE_PASSENGERS: return t->act_pass;
|
||||
case AICargo::TE_MAIL: return t->act_mail;
|
||||
default: return -1;
|
||||
}
|
||||
}
|
||||
|
||||
/* static */ int32 AITown::GetMaxProduction(TownID town_id, CargoID cargo_id)
|
||||
{
|
||||
return AITown::GetLastMonthProduction(town_id, cargo_id);
|
||||
}
|
||||
|
||||
/* static */ int32 AITown::GetLastMonthTransportedPercentage(TownID town_id, CargoID cargo_id)
|
||||
{
|
||||
if (!IsValidTown(town_id)) return -1;
|
||||
if (!AICargo::IsValidCargo(cargo_id)) return -1;
|
||||
|
||||
const Town *t = ::GetTown(town_id);
|
||||
|
||||
switch(AICargo::GetTownEffect(cargo_id)) {
|
||||
case AICargo::TE_PASSENGERS: return t->max_pass;
|
||||
case AICargo::TE_MAIL: return t->max_mail;
|
||||
switch (AICargo::GetTownEffect(cargo_id)) {
|
||||
case AICargo::TE_PASSENGERS: return t->pct_pass_transported * 100 >> 8;
|
||||
case AICargo::TE_MAIL: return t->pct_mail_transported * 100 >> 8;
|
||||
default: return -1;
|
||||
}
|
||||
}
|
||||
|
@@ -180,6 +180,18 @@ public:
|
||||
*/
|
||||
static int32 GetMaxProduction(TownID town_id, CargoID cargo_id);
|
||||
|
||||
/**
|
||||
* Get the percentage of transported production of the given cargo at a town.
|
||||
* @param town_id The index of the town.
|
||||
* @param cargo_id The index of the cargo.
|
||||
* @pre IsValidTown(town_id).
|
||||
* @pre AICargo::IsValidCargo(cargo_id).
|
||||
* @pre AICargo::GetTownEffect(cargo_id) == TE_PASSENGERS || AICargo::GetTownEffect(cargo_id) == TE_MAIL.
|
||||
* @return The percentage of given cargo transported from this town last month.
|
||||
* @post Return value is always non-negative.
|
||||
*/
|
||||
static int32 GetLastMonthTransportedPercentage(TownID town_id, CargoID cargo_id);
|
||||
|
||||
/**
|
||||
* Get the manhattan distance from the tile to the AITown::GetLocation()
|
||||
* of the town.
|
||||
|
@@ -49,27 +49,28 @@ void SQAITown_Register(Squirrel *engine) {
|
||||
SQAITown.DefSQConst(engine, AITown::ROAD_LAYOUT_3x3, "ROAD_LAYOUT_3x3");
|
||||
SQAITown.DefSQConst(engine, AITown::ROAD_LAYOUT_INVALID, "ROAD_LAYOUT_INVALID");
|
||||
|
||||
SQAITown.DefSQStaticMethod(engine, &AITown::GetTownCount, "GetTownCount", 1, ".");
|
||||
SQAITown.DefSQStaticMethod(engine, &AITown::IsValidTown, "IsValidTown", 2, ".i");
|
||||
SQAITown.DefSQStaticMethod(engine, &AITown::GetName, "GetName", 2, ".i");
|
||||
SQAITown.DefSQStaticMethod(engine, &AITown::GetPopulation, "GetPopulation", 2, ".i");
|
||||
SQAITown.DefSQStaticMethod(engine, &AITown::GetHouseCount, "GetHouseCount", 2, ".i");
|
||||
SQAITown.DefSQStaticMethod(engine, &AITown::GetLocation, "GetLocation", 2, ".i");
|
||||
SQAITown.DefSQStaticMethod(engine, &AITown::GetLastMonthProduction, "GetLastMonthProduction", 3, ".ii");
|
||||
SQAITown.DefSQStaticMethod(engine, &AITown::GetLastMonthTransported, "GetLastMonthTransported", 3, ".ii");
|
||||
SQAITown.DefSQStaticMethod(engine, &AITown::GetMaxProduction, "GetMaxProduction", 3, ".ii");
|
||||
SQAITown.DefSQStaticMethod(engine, &AITown::GetDistanceManhattanToTile, "GetDistanceManhattanToTile", 3, ".ii");
|
||||
SQAITown.DefSQStaticMethod(engine, &AITown::GetDistanceSquareToTile, "GetDistanceSquareToTile", 3, ".ii");
|
||||
SQAITown.DefSQStaticMethod(engine, &AITown::IsWithinTownInfluence, "IsWithinTownInfluence", 3, ".ii");
|
||||
SQAITown.DefSQStaticMethod(engine, &AITown::HasStatue, "HasStatue", 2, ".i");
|
||||
SQAITown.DefSQStaticMethod(engine, &AITown::GetRoadReworkDuration, "GetRoadReworkDuration", 2, ".i");
|
||||
SQAITown.DefSQStaticMethod(engine, &AITown::GetExclusiveRightsCompany, "GetExclusiveRightsCompany", 2, ".i");
|
||||
SQAITown.DefSQStaticMethod(engine, &AITown::GetExclusiveRightsDuration, "GetExclusiveRightsDuration", 2, ".i");
|
||||
SQAITown.DefSQStaticMethod(engine, &AITown::IsActionAvailable, "IsActionAvailable", 3, ".ii");
|
||||
SQAITown.DefSQStaticMethod(engine, &AITown::PerformTownAction, "PerformTownAction", 3, ".ii");
|
||||
SQAITown.DefSQStaticMethod(engine, &AITown::GetRating, "GetRating", 3, ".ii");
|
||||
SQAITown.DefSQStaticMethod(engine, &AITown::GetAllowedNoise, "GetAllowedNoise", 2, ".i");
|
||||
SQAITown.DefSQStaticMethod(engine, &AITown::GetRoadLayout, "GetRoadLayout", 2, ".i");
|
||||
SQAITown.DefSQStaticMethod(engine, &AITown::GetTownCount, "GetTownCount", 1, ".");
|
||||
SQAITown.DefSQStaticMethod(engine, &AITown::IsValidTown, "IsValidTown", 2, ".i");
|
||||
SQAITown.DefSQStaticMethod(engine, &AITown::GetName, "GetName", 2, ".i");
|
||||
SQAITown.DefSQStaticMethod(engine, &AITown::GetPopulation, "GetPopulation", 2, ".i");
|
||||
SQAITown.DefSQStaticMethod(engine, &AITown::GetHouseCount, "GetHouseCount", 2, ".i");
|
||||
SQAITown.DefSQStaticMethod(engine, &AITown::GetLocation, "GetLocation", 2, ".i");
|
||||
SQAITown.DefSQStaticMethod(engine, &AITown::GetLastMonthProduction, "GetLastMonthProduction", 3, ".ii");
|
||||
SQAITown.DefSQStaticMethod(engine, &AITown::GetLastMonthTransported, "GetLastMonthTransported", 3, ".ii");
|
||||
SQAITown.DefSQStaticMethod(engine, &AITown::GetMaxProduction, "GetMaxProduction", 3, ".ii");
|
||||
SQAITown.DefSQStaticMethod(engine, &AITown::GetLastMonthTransportedPercentage, "GetLastMonthTransportedPercentage", 3, ".ii");
|
||||
SQAITown.DefSQStaticMethod(engine, &AITown::GetDistanceManhattanToTile, "GetDistanceManhattanToTile", 3, ".ii");
|
||||
SQAITown.DefSQStaticMethod(engine, &AITown::GetDistanceSquareToTile, "GetDistanceSquareToTile", 3, ".ii");
|
||||
SQAITown.DefSQStaticMethod(engine, &AITown::IsWithinTownInfluence, "IsWithinTownInfluence", 3, ".ii");
|
||||
SQAITown.DefSQStaticMethod(engine, &AITown::HasStatue, "HasStatue", 2, ".i");
|
||||
SQAITown.DefSQStaticMethod(engine, &AITown::GetRoadReworkDuration, "GetRoadReworkDuration", 2, ".i");
|
||||
SQAITown.DefSQStaticMethod(engine, &AITown::GetExclusiveRightsCompany, "GetExclusiveRightsCompany", 2, ".i");
|
||||
SQAITown.DefSQStaticMethod(engine, &AITown::GetExclusiveRightsDuration, "GetExclusiveRightsDuration", 2, ".i");
|
||||
SQAITown.DefSQStaticMethod(engine, &AITown::IsActionAvailable, "IsActionAvailable", 3, ".ii");
|
||||
SQAITown.DefSQStaticMethod(engine, &AITown::PerformTownAction, "PerformTownAction", 3, ".ii");
|
||||
SQAITown.DefSQStaticMethod(engine, &AITown::GetRating, "GetRating", 3, ".ii");
|
||||
SQAITown.DefSQStaticMethod(engine, &AITown::GetAllowedNoise, "GetAllowedNoise", 2, ".i");
|
||||
SQAITown.DefSQStaticMethod(engine, &AITown::GetRoadLayout, "GetRoadLayout", 2, ".i");
|
||||
|
||||
SQAITown.PostRegister(engine);
|
||||
}
|
||||
|
@@ -58,7 +58,7 @@ public:
|
||||
ERR_VEHICLE_IN_FLIGHT, // [STR_A017_AIRCRAFT_IS_IN_FLIGHT]
|
||||
|
||||
/** Vehicle is without power */
|
||||
ERR_VEHCILE_NO_POWER, // [STR_TRAIN_START_NO_CATENARY]
|
||||
ERR_VEHICLE_NO_POWER, // [STR_TRAIN_START_NO_CATENARY]
|
||||
|
||||
};
|
||||
|
||||
|
@@ -37,7 +37,7 @@ void SQAIVehicle_Register(Squirrel *engine) {
|
||||
SQAIVehicle.DefSQConst(engine, AIVehicle::ERR_VEHICLE_IS_DESTROYED, "ERR_VEHICLE_IS_DESTROYED");
|
||||
SQAIVehicle.DefSQConst(engine, AIVehicle::ERR_VEHICLE_NOT_IN_DEPOT, "ERR_VEHICLE_NOT_IN_DEPOT");
|
||||
SQAIVehicle.DefSQConst(engine, AIVehicle::ERR_VEHICLE_IN_FLIGHT, "ERR_VEHICLE_IN_FLIGHT");
|
||||
SQAIVehicle.DefSQConst(engine, AIVehicle::ERR_VEHCILE_NO_POWER, "ERR_VEHCILE_NO_POWER");
|
||||
SQAIVehicle.DefSQConst(engine, AIVehicle::ERR_VEHICLE_NO_POWER, "ERR_VEHICLE_NO_POWER");
|
||||
SQAIVehicle.DefSQConst(engine, AIVehicle::VT_RAIL, "VT_RAIL");
|
||||
SQAIVehicle.DefSQConst(engine, AIVehicle::VT_ROAD, "VT_ROAD");
|
||||
SQAIVehicle.DefSQConst(engine, AIVehicle::VT_WATER, "VT_WATER");
|
||||
@@ -85,7 +85,7 @@ void SQAIVehicle_Register(Squirrel *engine) {
|
||||
AIError::RegisterErrorMap(STR_TRAIN_MUST_BE_STOPPED, AIVehicle::ERR_VEHICLE_NOT_IN_DEPOT);
|
||||
AIError::RegisterErrorMap(STR_980B_SHIP_MUST_BE_STOPPED_IN, AIVehicle::ERR_VEHICLE_NOT_IN_DEPOT);
|
||||
AIError::RegisterErrorMap(STR_A017_AIRCRAFT_IS_IN_FLIGHT, AIVehicle::ERR_VEHICLE_IN_FLIGHT);
|
||||
AIError::RegisterErrorMap(STR_TRAIN_START_NO_CATENARY, AIVehicle::ERR_VEHCILE_NO_POWER);
|
||||
AIError::RegisterErrorMap(STR_TRAIN_START_NO_CATENARY, AIVehicle::ERR_VEHICLE_NO_POWER);
|
||||
|
||||
AIError::RegisterErrorMapString(AIVehicle::ERR_VEHICLE_TOO_MANY, "ERR_VEHICLE_TOO_MANY");
|
||||
AIError::RegisterErrorMapString(AIVehicle::ERR_VEHICLE_NOT_AVAILABLE, "ERR_VEHICLE_NOT_AVAILABLE");
|
||||
@@ -98,11 +98,11 @@ void SQAIVehicle_Register(Squirrel *engine) {
|
||||
AIError::RegisterErrorMapString(AIVehicle::ERR_VEHICLE_IS_DESTROYED, "ERR_VEHICLE_IS_DESTROYED");
|
||||
AIError::RegisterErrorMapString(AIVehicle::ERR_VEHICLE_NOT_IN_DEPOT, "ERR_VEHICLE_NOT_IN_DEPOT");
|
||||
AIError::RegisterErrorMapString(AIVehicle::ERR_VEHICLE_IN_FLIGHT, "ERR_VEHICLE_IN_FLIGHT");
|
||||
AIError::RegisterErrorMapString(AIVehicle::ERR_VEHCILE_NO_POWER, "ERR_VEHCILE_NO_POWER");
|
||||
AIError::RegisterErrorMapString(AIVehicle::ERR_VEHICLE_NO_POWER, "ERR_VEHICLE_NO_POWER");
|
||||
|
||||
SQAIVehicle.DefSQStaticMethod(engine, &AIVehicle::IsValidVehicle, "IsValidVehicle", 2, ".i");
|
||||
SQAIVehicle.DefSQStaticMethod(engine, &AIVehicle::GetNumWagons, "GetNumWagons", 2, ".i");
|
||||
SQAIVehicle.DefSQStaticMethod(engine, &AIVehicle::SetName, "SetName", 3, ".is");
|
||||
SQAIVehicle.DefSQStaticMethod(engine, &AIVehicle::SetName, "SetName", 3, ".i.");
|
||||
SQAIVehicle.DefSQStaticMethod(engine, &AIVehicle::GetName, "GetName", 2, ".i");
|
||||
SQAIVehicle.DefSQStaticMethod(engine, &AIVehicle::GetLocation, "GetLocation", 2, ".i");
|
||||
SQAIVehicle.DefSQStaticMethod(engine, &AIVehicle::GetEngineType, "GetEngineType", 2, ".i");
|
||||
|
@@ -26,7 +26,7 @@ void SQAIWaypoint_Register(Squirrel *engine) {
|
||||
SQAIWaypoint.DefSQStaticMethod(engine, &AIWaypoint::IsValidWaypoint, "IsValidWaypoint", 2, ".i");
|
||||
SQAIWaypoint.DefSQStaticMethod(engine, &AIWaypoint::GetWaypointID, "GetWaypointID", 2, ".i");
|
||||
SQAIWaypoint.DefSQStaticMethod(engine, &AIWaypoint::GetName, "GetName", 2, ".i");
|
||||
SQAIWaypoint.DefSQStaticMethod(engine, &AIWaypoint::SetName, "SetName", 3, ".is");
|
||||
SQAIWaypoint.DefSQStaticMethod(engine, &AIWaypoint::SetName, "SetName", 3, ".i.");
|
||||
SQAIWaypoint.DefSQStaticMethod(engine, &AIWaypoint::GetLocation, "GetLocation", 2, ".i");
|
||||
|
||||
SQAIWaypoint.PostRegister(engine);
|
||||
|
@@ -34,6 +34,7 @@ BEGIN {
|
||||
enum_value_size = 0
|
||||
enum_string_to_error_size = 0
|
||||
enum_error_to_string_size = 0
|
||||
const_size = 0
|
||||
struct_size = 0
|
||||
method_size = 0
|
||||
static_method_size = 0
|
||||
@@ -217,6 +218,17 @@ BEGIN {
|
||||
}
|
||||
if (enum_value_size != 0) print ""
|
||||
|
||||
# Const values
|
||||
mlen = 0
|
||||
for (i = 1; i <= const_size; i++) {
|
||||
if (mlen <= length(const_value[i])) mlen = length(const_value[i])
|
||||
}
|
||||
for (i = 1; i <= const_size; i++) {
|
||||
print " SQ" cls ".DefSQConst(engine, " cls "::" const_value[i] ", " substr(spaces, 1, mlen - length(const_value[i])) "\"" const_value[i] "\");"
|
||||
delete const_value[i]
|
||||
}
|
||||
if (const_size != 0) print ""
|
||||
|
||||
# Mapping of OTTD strings to errors
|
||||
mlen = 0
|
||||
for (i = 1; i <= enum_string_to_error_size; i++) {
|
||||
@@ -320,6 +332,13 @@ BEGIN {
|
||||
}
|
||||
}
|
||||
|
||||
# Add a const (non-enum) value
|
||||
/^[ ]*static const \w+ \w+ = \w+;/ {
|
||||
const_size++
|
||||
const_value[const_size] = $4
|
||||
next
|
||||
}
|
||||
|
||||
# Add a method to the list
|
||||
/^.*\(.*\).*$/ {
|
||||
if (cls_level != 1) next
|
||||
@@ -356,7 +375,7 @@ BEGIN {
|
||||
sub("^[ ]*", "", params[len])
|
||||
if (match(params[len], "\\*") || match(params[len], "&")) {
|
||||
if (match(params[len], "^char")) {
|
||||
types = types "s"
|
||||
types = types "."
|
||||
} else if (match(params[len], "^void")) {
|
||||
types = types "p"
|
||||
} else if (match(params[len], "^Array")) {
|
||||
|
@@ -2,6 +2,10 @@
|
||||
|
||||
# $Id$
|
||||
|
||||
# Set neutral locale so sort behaves the same everywhere
|
||||
LC_ALL=C
|
||||
export LC_ALL
|
||||
|
||||
# We really need gawk for this!
|
||||
AWK=gawk
|
||||
|
||||
@@ -20,7 +24,7 @@ if [ -z "$1" ]; then
|
||||
"ai_controller.hpp" | "ai_object.hpp" | "ai_types.hpp" ) continue;
|
||||
esac
|
||||
${AWK} -f squirrel_export.awk ${f} > ${f}.tmp
|
||||
if ! [ -f "${f}.sq" ] || [ -n "`diff -I '$Id' -b ${f}.tmp ${f}.sq 2> /dev/null || echo boo`" ]; then
|
||||
if ! [ -f "${f}.sq" ] || [ -n "`diff -I '$Id' ${f}.tmp ${f}.sq 2> /dev/null || echo boo`" ]; then
|
||||
mv ${f}.tmp ${f}.sq
|
||||
echo "Updated: ${f}.sq"
|
||||
svn add ${f}.sq > /dev/null 2>&1
|
||||
@@ -32,7 +36,7 @@ if [ -z "$1" ]; then
|
||||
done
|
||||
else
|
||||
${AWK} -f squirrel_export.awk $1 > $1.tmp
|
||||
if ! [ -f "${f}.sq" ] || [ -n "`diff -I '$Id' -b $1.sq $1.tmp 2> /dev/null || echo boo`" ]; then
|
||||
if ! [ -f "${f}.sq" ] || [ -n "`diff -I '$Id' $1.sq $1.tmp 2> /dev/null || echo boo`" ]; then
|
||||
mv $1.tmp $1.sq
|
||||
echo "Updated: $1.sq"
|
||||
svn add $1.sq > /dev/null 2>&1
|
||||
@@ -95,7 +99,7 @@ echo "
|
||||
|
||||
${AWK} -f ${f}.awk ${f} > ${f}.tmp
|
||||
|
||||
if ! [ -f "${f}" ] || [ -n "`diff -I '$Id' -b ${f} ${f}.tmp 2> /dev/null || echo boo`" ]; then
|
||||
if ! [ -f "${f}" ] || [ -n "`diff -I '$Id' ${f} ${f}.tmp 2> /dev/null || echo boo`" ]; then
|
||||
mv ${f}.tmp ${f}
|
||||
echo "Updated: ${f}"
|
||||
else
|
||||
|
@@ -706,11 +706,9 @@ void SetAircraftPosition(Vehicle *v, int x, int y, int z)
|
||||
v->y_pos = y;
|
||||
v->z_pos = z;
|
||||
|
||||
v->cur_image = v->GetImage(v->direction);
|
||||
v->UpdateViewport(true, false);
|
||||
if (v->subtype == AIR_HELICOPTER) v->Next()->Next()->cur_image = GetRotorImage(v);
|
||||
|
||||
VehicleMove(v, true);
|
||||
|
||||
Vehicle *u = v->Next();
|
||||
|
||||
int safe_x = Clamp(x, 0, MapMaxX() * TILE_SIZE);
|
||||
@@ -1293,9 +1291,8 @@ TileIndex Aircraft::GetOrderStationLocation(StationID station)
|
||||
|
||||
void Aircraft::MarkDirty()
|
||||
{
|
||||
this->cur_image = this->GetImage(this->direction);
|
||||
this->UpdateViewport(false, false);
|
||||
if (this->subtype == AIR_HELICOPTER) this->Next()->Next()->cur_image = GetRotorImage(this);
|
||||
MarkSingleVehicleDirty(this);
|
||||
}
|
||||
|
||||
static void CrashAirplane(Vehicle *v)
|
||||
|
@@ -420,16 +420,23 @@ void ResetCompanyLivery(Company *c)
|
||||
* Create a new company and sets all company variables default values
|
||||
*
|
||||
* @param is_ai is a ai company?
|
||||
* @param company CompanyID to use for the new company
|
||||
* @return the company struct
|
||||
*/
|
||||
Company *DoStartupNewCompany(bool is_ai)
|
||||
Company *DoStartupNewCompany(bool is_ai, CompanyID company = INVALID_COMPANY)
|
||||
{
|
||||
if (ActiveCompanyCount() == MAX_COMPANIES || !Company::CanAllocateItem()) return NULL;
|
||||
|
||||
/* we have to generate colour before this company is valid */
|
||||
Colours colour = GenerateCompanyColour();
|
||||
|
||||
Company *c = new Company(STR_SV_UNNAMED, is_ai);
|
||||
Company *c;
|
||||
if (company == INVALID_COMPANY) {
|
||||
c = new Company(STR_SV_UNNAMED, is_ai);
|
||||
} else {
|
||||
if (IsValidCompanyID(company)) return NULL;
|
||||
c = new (company) Company(STR_SV_UNNAMED, is_ai);
|
||||
}
|
||||
|
||||
c->colour = colour;
|
||||
|
||||
@@ -486,7 +493,7 @@ static void MaybeStartNewCompany()
|
||||
if (n < (uint)_settings_game.difficulty.max_no_competitors) {
|
||||
/* Send a command to all clients to start up a new AI.
|
||||
* Works fine for Multiplayer and Singleplayer */
|
||||
DoCommandP(0, 1, 0, CMD_COMPANY_CTRL);
|
||||
DoCommandP(0, 1, INVALID_COMPANY, CMD_COMPANY_CTRL);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -700,6 +707,7 @@ void CompanyNewsInformation::FillData(const Company *c, const Company *other)
|
||||
* - p1 = 3 - merge two companies together. merge #1 with #2. Identified by p2
|
||||
* @param p2 various functionality, dictated by p1
|
||||
* - p1 = 0 - ClientID of the newly created client
|
||||
* - p1 = 1 - CompanyID to start AI (INVALID_COMPANY for first available)
|
||||
* - p1 = 2 - CompanyID of the that is getting deleted
|
||||
* - p1 = 3 - #1 p2 = (bit 0-15) - company to merge (p2 & 0xFFFF)
|
||||
* - #2 p2 = (bit 16-31) - company to be merged into ((p2>>16)&0xFFFF)
|
||||
@@ -815,7 +823,8 @@ CommandCost CmdCompanyCtrl(TileIndex tile, DoCommandFlag flags, uint32 p1, uint3
|
||||
case 1: // Make a new AI company
|
||||
if (!(flags & DC_EXEC)) return CommandCost();
|
||||
|
||||
DoStartupNewCompany(true);
|
||||
if (p2 != INVALID_COMPANY && (p2 >= MAX_COMPANIES || IsValidCompanyID((CompanyID)p2))) return CMD_ERROR;
|
||||
DoStartupNewCompany(true, (CompanyID)p2);
|
||||
break;
|
||||
|
||||
case 2: { // Delete a company
|
||||
|
@@ -933,13 +933,16 @@ DEF_CONSOLE_CMD(ConRestart)
|
||||
if (argc == 0) {
|
||||
IConsoleHelp("Restart game. Usage: 'restart'");
|
||||
IConsoleHelp("Restarts a game. It tries to reproduce the exact same map as the game started with.");
|
||||
IConsoleHelp("However:");
|
||||
IConsoleHelp(" * restarting games started in another version might create another map due to difference in map generation");
|
||||
IConsoleHelp(" * restarting games based on scenarios, loaded games or heightmaps will start a new game based on the settings stored in the scenario/savegame");
|
||||
return true;
|
||||
}
|
||||
|
||||
/* Don't copy the _newgame pointers to the real pointers, so call SwitchToMode directly */
|
||||
_settings_game.game_creation.map_x = MapLogX();
|
||||
_settings_game.game_creation.map_y = FindFirstBit(MapSizeY());
|
||||
SwitchToMode(SM_NEWGAME);
|
||||
SwitchToMode(SM_RESTARTGAME);
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -1015,7 +1018,7 @@ DEF_CONSOLE_CMD(ConStartAI)
|
||||
}
|
||||
|
||||
/* Start a new AI company */
|
||||
DoCommandP(0, 1, 0, CMD_COMPANY_CTRL);
|
||||
DoCommandP(0, 1, INVALID_COMPANY, CMD_COMPANY_CTRL);
|
||||
|
||||
return true;
|
||||
}
|
||||
@@ -1051,7 +1054,7 @@ DEF_CONSOLE_CMD(ConReloadAI)
|
||||
|
||||
/* First kill the company of the AI, then start a new one. This should start the current AI again */
|
||||
DoCommandP(0, 2, company_id, CMD_COMPANY_CTRL);
|
||||
DoCommandP(0, 1, 0, CMD_COMPANY_CTRL);
|
||||
DoCommandP(0, 1, company_id, CMD_COMPANY_CTRL);
|
||||
IConsolePrint(CC_DEFAULT, "AI reloaded.");
|
||||
|
||||
return true;
|
||||
|
@@ -10,6 +10,7 @@
|
||||
#include "core/bitmath_func.hpp"
|
||||
#include "tile_map.h"
|
||||
#include "water_map.h"
|
||||
#include "vehicle_gui.h"
|
||||
|
||||
DEFINE_OLD_POOL_GENERIC(Depot, Depot)
|
||||
|
||||
@@ -48,6 +49,16 @@ Depot::~Depot()
|
||||
|
||||
/* Delete the depot-window */
|
||||
DeleteWindowById(WC_VEHICLE_DEPOT, this->xy);
|
||||
|
||||
/* Delete the depot list */
|
||||
WindowNumber wno = (this->index << 16) | VLW_DEPOT_LIST | GetTileOwner(this->xy);
|
||||
switch (GetTileType(this->xy)) {
|
||||
default: break; // It can happen there is no depot here anymore (TTO/TTD savegames)
|
||||
case MP_RAILWAY: DeleteWindowById(WC_TRAINS_LIST, wno | (VEH_TRAIN << 11)); break;
|
||||
case MP_ROAD: DeleteWindowById(WC_ROADVEH_LIST, wno | (VEH_ROAD << 11)); break;
|
||||
case MP_WATER: DeleteWindowById(WC_SHIPS_LIST, wno | (VEH_SHIP << 11)); break;
|
||||
}
|
||||
|
||||
this->xy = INVALID_TILE;
|
||||
}
|
||||
|
||||
|
@@ -626,8 +626,7 @@ static void DisasterTick_Big_Ufo(Vehicle *v)
|
||||
|
||||
tile_org = tile = RandomTile();
|
||||
do {
|
||||
if (IsTileType(tile, MP_RAILWAY) &&
|
||||
IsPlainRailTile(tile) &&
|
||||
if (IsPlainRailTile(tile) &&
|
||||
IsHumanCompany(GetTileOwner(tile))) {
|
||||
break;
|
||||
}
|
||||
|
@@ -469,6 +469,7 @@ static void CompanyCheckBankrupt(Company *c)
|
||||
/* If the company has money again, it does not go bankrupt */
|
||||
if (c->money >= 0) {
|
||||
c->quarters_of_bankrupcy = 0;
|
||||
c->bankrupt_asked = 0;
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -521,7 +522,7 @@ static void CompanyCheckBankrupt(Company *c)
|
||||
* 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);
|
||||
c->bankrupt_timeout = 0x456;
|
||||
free(cni);
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -670,9 +671,18 @@ static void CompaniesPayInterest()
|
||||
|
||||
static void HandleEconomyFluctuations()
|
||||
{
|
||||
if (_settings_game.difficulty.economy == 0) return;
|
||||
if (_settings_game.difficulty.economy != 0) {
|
||||
/* When economy is Fluctuating, decrease counter */
|
||||
_economy.fluct--;
|
||||
} else if (_economy.fluct <= 0) {
|
||||
/* 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) {
|
||||
if (_economy.fluct == 0) {
|
||||
_economy.fluct = -(int)GB(Random(), 0, 2);
|
||||
AddNewsItem(STR_7073_WORLD_RECESSION_FINANCIAL, NS_ECONOMY, 0, 0);
|
||||
} else if (_economy.fluct == -12) {
|
||||
@@ -1553,6 +1563,11 @@ static void LoadUnloadVehicle(Vehicle *v, int *cargo_left)
|
||||
{
|
||||
assert(v->current_order.IsType(OT_LOADING));
|
||||
|
||||
/* When we've finished loading we're just staying here till the timetable 'runs' out */
|
||||
if (HasBit(v->vehicle_flags, VF_LOADING_FINISHED)) return;
|
||||
|
||||
assert(v->load_unload_time_rem != 0);
|
||||
|
||||
/* We have not waited enough time till the next round of loading/unloading */
|
||||
if (--v->load_unload_time_rem != 0) {
|
||||
if (_settings_game.order.improved_load && (v->current_order.GetLoadType() & OLFB_FULL_LOAD)) {
|
||||
@@ -1799,7 +1814,8 @@ static void LoadUnloadVehicle(Vehicle *v, int *cargo_left)
|
||||
}
|
||||
}
|
||||
|
||||
v->load_unload_time_rem = unloading_time;
|
||||
/* Always wait at least 1, otherwise we'll wait 'infinitively' long. */
|
||||
v->load_unload_time_rem = max(1, unloading_time);
|
||||
|
||||
if (completely_emptied) {
|
||||
TriggerVehicle(v, VEHICLE_TRIGGER_EMPTY);
|
||||
|
@@ -116,7 +116,7 @@ static TrackBits GetRailTrackBitsUniversal(TileIndex t, byte *override)
|
||||
*/
|
||||
static TrackBits MaskWireBits(TileIndex t, TrackBits tracks)
|
||||
{
|
||||
if (!IsTileType(t, MP_RAILWAY) || !IsPlainRailTile(t)) return tracks;
|
||||
if (!IsPlainRailTile(t)) return tracks;
|
||||
|
||||
TrackdirBits neighbour_tdb = TRACKDIR_BIT_NONE;
|
||||
for (DiagDirection d = DIAGDIR_BEGIN; d < DIAGDIR_END; d++) {
|
||||
|
@@ -481,11 +481,11 @@ void StartupOneEngine(Engine *e, Date aging_date)
|
||||
e->flags = 0;
|
||||
e->company_avail = 0;
|
||||
|
||||
/* The magic value of 729 days below comes from the NewGRF spec. If the
|
||||
* base intro date is before 1922 then the random number of days is not
|
||||
* added. */
|
||||
/* Don't randomise the start-date in the first two years after gamestart to ensure availability
|
||||
* of engines in early starting games.
|
||||
* Note: TTDP uses fixed 1922 */
|
||||
r = Random();
|
||||
e->intro_date = ei->base_intro <= ConvertYMDToDate(1922, 0, 1) ? ei->base_intro : (Date)GB(r, 0, 9) + ei->base_intro;
|
||||
e->intro_date = ei->base_intro <= ConvertYMDToDate(_settings_game.game_creation.starting_year + 2, 0, 1) ? ei->base_intro : (Date)GB(r, 0, 9) + ei->base_intro;
|
||||
if (e->intro_date <= _date) {
|
||||
e->age = (aging_date - e->intro_date) >> 5;
|
||||
e->company_avail = (CompanyMask)-1;
|
||||
|
@@ -39,7 +39,7 @@ void StartupEconomy();
|
||||
void StartupCompanies();
|
||||
void StartupDisasters();
|
||||
|
||||
void InitializeGame(uint size_x, uint size_y, bool reset_date);
|
||||
void InitializeGame(uint size_x, uint size_y, bool reset_date, bool reset_settings);
|
||||
|
||||
/* Please only use this variable in genworld.h and genworld.c and
|
||||
* nowhere else. For speed improvements we need it to be global, but
|
||||
@@ -256,7 +256,7 @@ void HandleGeneratingWorldAbortion()
|
||||
* @param size_x The X-size of the map.
|
||||
* @param size_y The Y-size of the map.
|
||||
*/
|
||||
void GenerateWorld(GenerateWorldMode mode, uint size_x, uint size_y)
|
||||
void GenerateWorld(GenerateWorldMode mode, uint size_x, uint size_y, bool reset_settings)
|
||||
{
|
||||
if (_gw.active) return;
|
||||
_gw.mode = mode;
|
||||
@@ -281,7 +281,7 @@ void GenerateWorld(GenerateWorldMode mode, uint size_x, uint size_y)
|
||||
GfxLoadSprites();
|
||||
LoadStringWidthTable();
|
||||
|
||||
InitializeGame(_gw.size_x, _gw.size_y, false);
|
||||
InitializeGame(_gw.size_x, _gw.size_y, false, reset_settings);
|
||||
PrepareGenerateWorldProgress();
|
||||
|
||||
/* Re-init the windowing system */
|
||||
|
@@ -74,7 +74,7 @@ bool IsGenerateWorldThreaded();
|
||||
void GenerateWorldSetCallback(gw_done_proc *proc);
|
||||
void GenerateWorldSetAbortCallback(gw_abort_proc *proc);
|
||||
void WaitTillGeneratedWorld();
|
||||
void GenerateWorld(GenerateWorldMode mode, uint size_x, uint size_y);
|
||||
void GenerateWorld(GenerateWorldMode mode, uint size_x, uint size_y, bool reset_settings = true);
|
||||
void AbortGeneratingWorld();
|
||||
bool IsGeneratingWorldAborted();
|
||||
void HandleGeneratingWorldAbortion();
|
||||
|
@@ -229,16 +229,26 @@ void CheckExternalFiles()
|
||||
|
||||
DEBUG(grf, 1, "Using the %s base graphics set with the %s palette", _used_graphics_set->name, _use_palette == PAL_DOS ? "DOS" : "Windows");
|
||||
|
||||
static const size_t ERROR_MESSAGE_LENGTH = 128;
|
||||
char error_msg[ERROR_MESSAGE_LENGTH * (MAX_GFT + 1)];
|
||||
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 * (MAX_GFT + 1) + 2 * ERROR_MESSAGE_LENGTH];
|
||||
error_msg[0] = '\0';
|
||||
char *add_pos = error_msg;
|
||||
const char *last = lastof(error_msg);
|
||||
|
||||
for (uint i = 0; i < lengthof(_used_graphics_set->files); i++) {
|
||||
if (!FileMD5(_used_graphics_set->files[i])) {
|
||||
add_pos += seprintf(add_pos, last, "Your '%s' file is corrupted or missing! %s\n", _used_graphics_set->files[i].filename, _used_graphics_set->files[i].missing_warning);
|
||||
if (_used_graphics_set->found_grfs != MAX_GFT) {
|
||||
/* Not all files were loaded succesfully, 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.\n\nThe following files are corrupted or missing:\n", _used_graphics_set->name);
|
||||
for (uint i = 0; i < lengthof(_used_graphics_set->files); i++) {
|
||||
if (!FileMD5(_used_graphics_set->files[i])) {
|
||||
add_pos += seprintf(add_pos, last, "\t%s (%s)\n", _used_graphics_set->files[i].filename, _used_graphics_set->files[i].missing_warning);
|
||||
}
|
||||
}
|
||||
add_pos += seprintf(add_pos, last, "\n");
|
||||
}
|
||||
|
||||
bool sound = false;
|
||||
@@ -247,7 +257,8 @@ void CheckExternalFiles()
|
||||
}
|
||||
|
||||
if (!sound) {
|
||||
add_pos += seprintf(add_pos, last, "Your 'sample.cat' file is corrupted or missing! You can find 'sample.cat' on your Transport Tycoon Deluxe CD-ROM.\n");
|
||||
add_pos += seprintf(add_pos, last, "Trying to load sound set, but it is incomplete. The game will probably not run correctly until you properly install this set or select another one.\n\nThe following files are corrupted or missing:\n");
|
||||
add_pos += seprintf(add_pos, last, "\tsample.cat (You can find it on your Transport Tycoon Deluxe CD-ROM.)\n");
|
||||
}
|
||||
|
||||
if (add_pos != error_msg) ShowInfoF("%s", error_msg);
|
||||
@@ -482,6 +493,11 @@ bool OBGFileScanner::AddFile(const char *filename, size_t basepath_length)
|
||||
/* don't allow recursive delete of all remaining items */
|
||||
duplicate->next = NULL;
|
||||
|
||||
/* 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 (_used_graphics_set == duplicate) _used_graphics_set = graphics;
|
||||
|
||||
DEBUG(grf, 1, "Removing %s (%i) as base graphics set (duplicate)", duplicate->name, duplicate->version);
|
||||
delete duplicate;
|
||||
ret = true;
|
||||
|
@@ -99,7 +99,7 @@ static const Widget _graph_legend_widgets[] = {
|
||||
};
|
||||
|
||||
static const WindowDesc _graph_legend_desc(
|
||||
WDP_AUTO, WDP_AUTO, 250, 198, 250, 198,
|
||||
WDP_AUTO, WDP_AUTO, 250, 196, 250, 196,
|
||||
WC_GRAPH_LEGEND, WC_NONE,
|
||||
WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET,
|
||||
_graph_legend_widgets
|
||||
|
@@ -1642,7 +1642,10 @@ static Industry *CreateNewIndustryHelper(TileIndex tile, IndustryType type, DoCo
|
||||
*/
|
||||
CommandCost CmdBuildIndustry(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text)
|
||||
{
|
||||
const IndustrySpec *indspec = GetIndustrySpec(GB(p1, 0, 16));
|
||||
IndustryType it = GB(p1, 0, 16);
|
||||
if (it >= NUM_INDUSTRYTYPES) return CMD_ERROR;
|
||||
|
||||
const IndustrySpec *indspec = GetIndustrySpec(it);
|
||||
const Industry *ind = NULL;
|
||||
|
||||
/* Check if the to-be built/founded industry is available for this climate. */
|
||||
@@ -1681,7 +1684,8 @@ CommandCost CmdBuildIndustry(TileIndex tile, DoCommandFlag flags, uint32 p1, uin
|
||||
} else {
|
||||
int count = indspec->num_table;
|
||||
const IndustryTileTable * const *itt = indspec->table;
|
||||
int num = Clamp(GB(p1, 16, 16), 0, count - 1);
|
||||
int num = GB(p1, 16, 16);
|
||||
if (num >= count) return CMD_ERROR;
|
||||
|
||||
_error_message = STR_0239_SITE_UNSUITABLE;
|
||||
do {
|
||||
|
@@ -643,7 +643,7 @@ public:
|
||||
Industry *i = GetIndustry(this->window_number);
|
||||
int line = this->editbox_line;
|
||||
|
||||
i->production_rate[line] = ClampU(atoi(str), 0, 255);
|
||||
i->production_rate[line] = ClampU(atoi(str) / 8, 0, 255);
|
||||
UpdateIndustryProduction(i);
|
||||
this->SetDirty();
|
||||
}
|
||||
|
@@ -621,7 +621,7 @@ STR_028C_PLACE_ROCKY_AREAS_ON_LANDSCAPE :{BLACK}Placér
|
||||
STR_028D_PLACE_LIGHTHOUSE :{BLACK}Placér fyrtårn
|
||||
STR_028E_PLACE_TRANSMITTER :{BLACK}Placér sender
|
||||
STR_028F_DEFINE_DESERT_AREA :{BLACK}Definer ørkenområde.{}Hold CTRL nede for at fjerne det
|
||||
STR_CREATE_LAKE :{BLACK}Definer vandområde.{}Lav en kanal, med mindre CTRL-tasten holdes ved havniveau, hvorved omgivelserne oversvømmes i stedet
|
||||
STR_CREATE_LAKE :{BLACK}Definer vandområde.{}Lav en kanal, med mindre CTRL-tasten bruges ved havniveau, da omgivelserne i stedet vil blive oversvømmet
|
||||
STR_CREATE_RIVER :{BLACK}Placér floder.
|
||||
STR_0290_DELETE :{BLACK}Slet
|
||||
STR_0291_DELETE_THIS_TOWN_COMPLETELY :{BLACK}Slet denne by fuldstændigt
|
||||
@@ -800,7 +800,7 @@ STR_TOWNNAME_CATALAN :Catalanske
|
||||
############ end of townname region
|
||||
|
||||
STR_CURR_GBP :Pund (£)
|
||||
STR_CURR_USD :Dollar ($)
|
||||
STR_CURR_USD :Dollars ($)
|
||||
STR_CURR_EUR :Euro (€)
|
||||
STR_CURR_YEN :Yen (¥)
|
||||
STR_CURR_ATS :Østrisk Shilling (ATS)
|
||||
@@ -886,7 +886,7 @@ STR_CANT_COPY_ORDER_LIST :{WHITE}Kan ikke
|
||||
STR_END_OF_SHARED_ORDERS :{SETX 10}- - Slut på delt ordreliste - -
|
||||
|
||||
STR_TRAIN_IS_STUCK :{WHITE}{VEHICLE} kan ikke finde en rute at fortsætte ad.
|
||||
STR_TRAIN_IS_LOST :{WHITE}{VEHICLE} er gået tabt.
|
||||
STR_TRAIN_IS_LOST :{WHITE}{VEHICLE} er faret vild.
|
||||
STR_VEHICLE_IS_UNPROFITABLE :{WHITE}{VEHICLE}s indtjening sidste år var {CURRENCY}
|
||||
STR_EURO_INTRODUCE :{BLACK}{BIGFONT}Europæisk fællesvaluta!{}{}Euroen er introduceret som eneste betalingsmiddel i dit land!
|
||||
|
||||
@@ -1301,14 +1301,14 @@ STR_NETWORK_YEARS_CAPTION :{BLACK}År
|
||||
STR_NETWORK_YEARS_CAPTION_TIP :{BLACK}Antallet af år{}spillet varer
|
||||
|
||||
STR_NETWORK_GAME_INFO :{SILVER}SPIL INFO
|
||||
STR_NETWORK_CLIENTS :{SILVER}Klienter: {WHITE}{COMMA} / {COMMA} - {COMMA} / {COMMA}
|
||||
STR_NETWORK_LANGUAGE :{SILVER}Sprog: {WHITE}{STRING}
|
||||
STR_NETWORK_TILESET :{SILVER}Klima: {WHITE}{STRING}
|
||||
STR_NETWORK_MAP_SIZE :{SILVER}Størrelse: {WHITE}{COMMA}x{COMMA}
|
||||
STR_NETWORK_SERVER_VERSION :{SILVER}Server version: {WHITE}{STRING}
|
||||
STR_NETWORK_CLIENTS :{SILVER}Klienter: {WHITE}{COMMA} / {COMMA} - {COMMA} / {COMMA}
|
||||
STR_NETWORK_LANGUAGE :{SILVER}Sprog: {WHITE}{STRING}
|
||||
STR_NETWORK_TILESET :{SILVER}Klima: {WHITE}{STRING}
|
||||
STR_NETWORK_MAP_SIZE :{SILVER}Størrelse: {WHITE}{COMMA}x{COMMA}
|
||||
STR_NETWORK_SERVER_VERSION :{SILVER}Server version: {WHITE}{STRING}
|
||||
STR_NETWORK_SERVER_ADDRESS :{SILVER}Serveradresse: {WHITE}{STRING} : {NUM}
|
||||
STR_NETWORK_START_DATE :{SILVER}Start dato: {WHITE}{DATE_SHORT}
|
||||
STR_NETWORK_CURRENT_DATE :{SILVER}Nuværende dato: {WHITE}{DATE_SHORT}
|
||||
STR_NETWORK_START_DATE :{SILVER}Start dato: {WHITE}{DATE_SHORT}
|
||||
STR_NETWORK_CURRENT_DATE :{SILVER}Nuværende dato: {WHITE}{DATE_SHORT}
|
||||
STR_NETWORK_PASSWORD :{SILVER}Beskyttet af kodeord!
|
||||
STR_NETWORK_SERVER_OFFLINE :{SILVER}SERVEREN ER OFFLINE
|
||||
STR_NETWORK_SERVER_FULL :{SILVER}SERVEREN ER FULD
|
||||
@@ -1390,7 +1390,7 @@ STR_NETWORK_LANG_LATVIAN :Lettisk
|
||||
|
||||
STR_NETWORK_GAME_LOBBY :{WHITE}Netværksspils lobby
|
||||
|
||||
STR_NETWORK_PREPARE_TO_JOIN :{BLACK}Forbereder tilslutning: {ORANGE}{STRING}
|
||||
STR_NETWORK_PREPARE_TO_JOIN :{BLACK}Forbereder tilslutning: {ORANGE}{STRING}
|
||||
STR_NETWORK_COMPANY_LIST_TIP :{BLACK}En liste over alle selskaber i spillet lige nu. Du kan enten tilslutte dig et eller starte et nyt, hvis der er plads til flere selskaber
|
||||
STR_NETWORK_NEW_COMPANY :{BLACK}Nyt selskab
|
||||
STR_NETWORK_NEW_COMPANY_TIP :{BLACK}Opret et nyt selskab
|
||||
@@ -1403,16 +1403,16 @@ STR_NETWORK_REFRESH_TIP :{BLACK}Genopfri
|
||||
|
||||
STR_NETWORK_COMPANY_INFO :{SILVER}SELSKABSINFO
|
||||
|
||||
STR_NETWORK_COMPANY_NAME :{SILVER}Selskabsnavn: {WHITE}{STRING}
|
||||
STR_NETWORK_INAUGURATION_YEAR :{SILVER}Grundlagt: {WHITE}{NUM}
|
||||
STR_NETWORK_VALUE :{SILVER}Virksomhedens værdi: {WHITE}{CURRENCY}
|
||||
STR_NETWORK_CURRENT_BALANCE :{SILVER}Nuværende beholdning: {WHITE}{CURRENCY}
|
||||
STR_NETWORK_LAST_YEARS_INCOME :{SILVER}Sidste års indtægt: {WHITE}{CURRENCY}
|
||||
STR_NETWORK_PERFORMANCE :{SILVER}Præstation: {WHITE}{NUM}
|
||||
STR_NETWORK_COMPANY_NAME :{SILVER}Selskabsnavn: {WHITE}{STRING}
|
||||
STR_NETWORK_INAUGURATION_YEAR :{SILVER}Grundlagt: {WHITE}{NUM}
|
||||
STR_NETWORK_VALUE :{SILVER}Virksomhedens værdi: {WHITE}{CURRENCY}
|
||||
STR_NETWORK_CURRENT_BALANCE :{SILVER}Nuværende beholdning: {WHITE}{CURRENCY}
|
||||
STR_NETWORK_LAST_YEARS_INCOME :{SILVER}Sidste års indtægt: {WHITE}{CURRENCY}
|
||||
STR_NETWORK_PERFORMANCE :{SILVER}Præstation: {WHITE}{NUM}
|
||||
|
||||
STR_NETWORK_VEHICLES :{SILVER}Køretøjer: {WHITE}{NUM} {TRAIN}, {NUM} {LORRY}, {NUM} {BUS}, {NUM} {PLANE}, {NUM} {SHIP}
|
||||
STR_NETWORK_STATIONS :{SILVER}Stationer: {WHITE}{NUM} {TRAIN}, {NUM} {LORRY}, {NUM} {BUS}, {NUM} {PLANE}, {NUM} {SHIP}
|
||||
STR_NETWORK_PLAYERS :{SILVER}Spillere: {WHITE}{STRING}
|
||||
STR_NETWORK_VEHICLES :{SILVER}Køretøjer: {WHITE}{NUM} {TRAIN}, {NUM} {LORRY}, {NUM} {BUS}, {NUM} {PLANE}, {NUM} {SHIP}
|
||||
STR_NETWORK_STATIONS :{SILVER}Stationer: {WHITE}{NUM} {TRAIN}, {NUM} {LORRY}, {NUM} {BUS}, {NUM} {PLANE}, {NUM} {SHIP}
|
||||
STR_NETWORK_PLAYERS :{SILVER}Spillere: {WHITE}{STRING}
|
||||
|
||||
STR_NETWORK_CONNECTING :{WHITE}Tilslutter...
|
||||
|
||||
@@ -1440,22 +1440,22 @@ STR_NETWORK_COMPANY_LIST_SPECTATE :{WHITE}Tilslut
|
||||
STR_NETWORK_COMPANY_LIST_NEW_COMPANY :{WHITE}Nyt firma
|
||||
|
||||
STR_NETWORK_ERR_NOTAVAILABLE :{WHITE} Ingen netværksheder fundet eller kompilet uden ENABLE_NETWORK
|
||||
STR_NETWORK_ERR_NOSERVER :{WHITE} Kunne ikke finde nogen netværksspil
|
||||
STR_NETWORK_ERR_NOCONNECTION :{WHITE} Serveren besvarede ikke denne forspørgsel
|
||||
STR_NETWORK_ERR_NEWGRF_MISMATCH :{WHITE} Kunne ikke tilslutte grundet NewGRF ulighed
|
||||
STR_NETWORK_ERR_DESYNC :{WHITE} Netværks synkroniseringsfejl
|
||||
STR_NETWORK_ERR_LOSTCONNECTION :{WHITE} Netværksforbindelse mistet
|
||||
STR_NETWORK_ERR_SAVEGAMEERROR :{WHITE} Kunne ikke hente gemt spil
|
||||
STR_NETWORK_ERR_SERVER_START :{WHITE} Kunne ikke starte serveren
|
||||
STR_NETWORK_ERR_CLIENT_START :{WHITE} Kunne ikke forbinde
|
||||
STR_NETWORK_ERR_TIMEOUT :{WHITE} Forbindelsen #{NUM} svarer ikke
|
||||
STR_NETWORK_ERR_SERVER_ERROR :{WHITE} Der opstod en protokol-fejl og forbindelse blev lukket
|
||||
STR_NETWORK_ERR_WRONG_REVISION :{WHITE} Revisionen af denne klient passer ikke sammen med serverens revision
|
||||
STR_NETWORK_ERR_WRONG_PASSWORD :{WHITE} Forkert kodeord
|
||||
STR_NETWORK_ERR_SERVER_FULL :{WHITE} Serveren er fuld
|
||||
STR_NETWORK_ERR_SERVER_BANNED :{WHITE} Du har forbud mod at bruge denne server
|
||||
STR_NETWORK_ERR_KICKED :{WHITE} Du blev smidt ud af spillet
|
||||
STR_NETWORK_ERR_CHEATER :{WHITE} Snyderi er ikke tilladt på denne server
|
||||
STR_NETWORK_ERR_NOSERVER :{WHITE}Kunne ikke finde nogen netværksspil
|
||||
STR_NETWORK_ERR_NOCONNECTION :{WHITE}Serveren besvarede ikke denne forspørgsel
|
||||
STR_NETWORK_ERR_NEWGRF_MISMATCH :{WHITE}Kunne ikke tilslutte grundet NewGRF ulighed
|
||||
STR_NETWORK_ERR_DESYNC :{WHITE}Netværks synkroniseringsfejl
|
||||
STR_NETWORK_ERR_LOSTCONNECTION :{WHITE}Netværksforbindelse mistet
|
||||
STR_NETWORK_ERR_SAVEGAMEERROR :{WHITE}Kunne ikke hente gemt spil
|
||||
STR_NETWORK_ERR_SERVER_START :{WHITE}Kunne ikke starte serveren
|
||||
STR_NETWORK_ERR_CLIENT_START :{WHITE}Kunne ikke forbinde
|
||||
STR_NETWORK_ERR_TIMEOUT :{WHITE}Forbindelsen #{NUM} svarer ikke
|
||||
STR_NETWORK_ERR_SERVER_ERROR :{WHITE}Der opstod en protokol-fejl og forbindelse blev lukket
|
||||
STR_NETWORK_ERR_WRONG_REVISION :{WHITE}Revisionen af denne klient passer ikke sammen med serverens revision
|
||||
STR_NETWORK_ERR_WRONG_PASSWORD :{WHITE}Forkert kodeord
|
||||
STR_NETWORK_ERR_SERVER_FULL :{WHITE}Serveren er fuld
|
||||
STR_NETWORK_ERR_SERVER_BANNED :{WHITE}Du har forbud mod at bruge denne server
|
||||
STR_NETWORK_ERR_KICKED :{WHITE}Du blev smidt ud af spillet
|
||||
STR_NETWORK_ERR_CHEATER :{WHITE}Snyderi er ikke tilladt på denne server
|
||||
|
||||
############ Leave those lines in this order!!
|
||||
STR_NETWORK_ERR_CLIENT_GENERAL :generel fejl
|
||||
@@ -1468,7 +1468,7 @@ STR_NETWORK_ERR_CLIENT_NOT_AUTHORIZED :ikke autorisere
|
||||
STR_NETWORK_ERR_CLIENT_NOT_EXPECTED :modtog en underlig pakke
|
||||
STR_NETWORK_ERR_CLIENT_WRONG_REVISION :forkert revision
|
||||
STR_NETWORK_ERR_CLIENT_NAME_IN_USE :navnet er allerede i brug
|
||||
STR_NETWORK_ERR_CLIENT_WRONG_PASSWORD :forkert spil password
|
||||
STR_NETWORK_ERR_CLIENT_WRONG_PASSWORD :forkert spil kodeord
|
||||
STR_NETWORK_ERR_CLIENT_COMPANY_MISMATCH :forkert firma-id i DoCommand
|
||||
STR_NETWORK_ERR_CLIENT_KICKED :smidt ud af serveren
|
||||
STR_NETWORK_ERR_CLIENT_CHEATER :prøvede at snyde
|
||||
@@ -1521,7 +1521,7 @@ STR_NETWORK_SEND :{BLACK}Send
|
||||
|
||||
##### PNG-MAP-Loader
|
||||
|
||||
STR_PNGMAP_ERROR :{WHITE}Kan ikke hente billedet fra PNG...
|
||||
STR_PNGMAP_ERROR :{WHITE}Kan ikke hente landskab fra PNG...
|
||||
STR_PNGMAP_ERR_FILE_NOT_FOUND :{WHITE}...filen blev ikke fundet.
|
||||
STR_PNGMAP_ERR_IMAGE_TYPE :{WHITE}...kan ikke konvertere billedtype. Der skal bruges 8 eller 24-bit PNG.
|
||||
STR_PNGMAP_ERR_MISC :{WHITE}...noget gik galt. Undskyld (Måske en ødelagt fil)
|
||||
@@ -1588,10 +1588,10 @@ STR_1020_SELECT_RAILROAD_DEPOT_ORIENTATIO :{BLACK}Vælg or
|
||||
STR_1021_RAILROAD_TRACK :Jernbaneskinner
|
||||
STR_1023_RAILROAD_TRAIN_DEPOT :Remise
|
||||
STR_1024_AREA_IS_OWNED_BY_ANOTHER :{WHITE}...området ejes af et andet selskab
|
||||
STR_RAILROAD_TRACK_WITH_NORMAL_SIGNALS :Jernbane med almindelige signaler
|
||||
STR_RAILROAD_TRACK_WITH_NORMAL_SIGNALS :Jernbane med blok signaler
|
||||
STR_RAILROAD_TRACK_WITH_PRESIGNALS :Jernbane med præ-signaler
|
||||
STR_RAILROAD_TRACK_WITH_EXITSIGNALS :Jernbane med exit-signaler
|
||||
STR_RAILROAD_TRACK_WITH_COMBOSIGNALS :Jernbaneskinne med kombi-signaler
|
||||
STR_RAILROAD_TRACK_WITH_COMBOSIGNALS :Jernbane med kombi-signaler
|
||||
STR_RAILROAD_TRACK_WITH_PBSSIGNALS :Jernbane med avancerede signaler
|
||||
STR_RAILROAD_TRACK_WITH_NOENTRYSIGNALS :Jernbane med ensrettede avancerede signaler
|
||||
STR_RAILROAD_TRACK_WITH_NORMAL_PRESIGNALS :Jernbanespor med normale og præ-signaler
|
||||
@@ -2731,7 +2731,7 @@ STR_8823_SKIP :{BLACK}Spring o
|
||||
STR_8824_DELETE :{BLACK}Slet
|
||||
STR_8826_GO_TO :{BLACK}Gå til
|
||||
STR_REFIT :{BLACK}Ombyg
|
||||
STR_REFIT_TIP :{BLACK}Vælg hvilken lasttype der skal ombygges til i denne ordre. CTRL-klik for at fjerne ombygningsinstruktion
|
||||
STR_REFIT_TIP :{BLACK}Vælg hvilken lasttype, der skal ombygges til i denne ordre. CTRL-klik for at fjerne ombygningsinstruktion
|
||||
STR_REFIT_ORDER :(Ombyg til {STRING})
|
||||
STR_REFIT_STOP_ORDER :(Ombyg til {STRING} og stop)
|
||||
STR_STOP_ORDER :(Stop)
|
||||
@@ -2815,6 +2815,8 @@ STR_8866_CAN_T_NAME_TRAIN :{WHITE}Kan ikke
|
||||
STR_8867_NAME_TRAIN :{BLACK}Giv toget et navn
|
||||
STR_8868_TRAIN_CRASH_DIE_IN_FIREBALL :{BLACK}{BIGFONT}Tog forulykket!{}{COMMA} døde i flammerne efter kollision
|
||||
STR_ERROR_CAN_T_REVERSE_DIRECTION_TRAIN :{WHITE}Kan ikke vende retningen af toget...
|
||||
STR_ERROR_CAN_T_REVERSE_DIRECTION_RAIL_VEHICLE :{WHITE}Kan ikke vende køretøjet om...
|
||||
STR_ERROR_CAN_T_REVERSE_DIRECTION_RAIL_VEHICLE_MULTIPLE_UNITS :{WHITE}Kan ikke vende et køretøj, der består af flere enheder
|
||||
STR_886A_RENAME_TRAIN_VEHICLE_TYPE :{WHITE}Omdøb tog-/togvognstypen
|
||||
STR_886B_CAN_T_RENAME_TRAIN_VEHICLE :{WHITE}Kan ikke omdøbe tog-/togvognstypen...
|
||||
STR_CLEAR_TIME :{BLACK}Nulstil tid
|
||||
@@ -2902,7 +2904,7 @@ STR_CITIZENS_CELEBRATE_FIRST_PASSENGER_TRAM :{BLACK}{BIGFONT
|
||||
STR_CITIZENS_CELEBRATE_FIRST_CARGO_TRAM :{BLACK}{BIGFONT}Indbyggerne fester . . .{}Første fragt-sporvogn ankommer til {STATION}!
|
||||
STR_9031_ROAD_VEHICLE_CRASH_DRIVER :{BLACK}{BIGFONT}Lastbil forulykket!{}Chauffør dør i flammerne efter sammenstød med tog
|
||||
STR_9032_ROAD_VEHICLE_CRASH_DIE :{BLACK}{BIGFONT}Bus forulykket!{}{COMMA} dør i flammerne efter kollision med et tog
|
||||
STR_ERROR_CAN_T_REVERSE_DIRECTION_RAIL_VEHICLE_MULTIPLE_UNITS :{WHITE}Kan ikke vende et køretøj, der består af flere enheder
|
||||
STR_ERROR_CAN_T_MAKE_ROAD_VEHICLE_TURN :{WHITE}Tillader ikke køretøjer at vende om...
|
||||
STR_9034_RENAME :{BLACK}Omdøb
|
||||
STR_9035_RENAME_ROAD_VEHICLE_TYPE :{BLACK}Omdøb køretøjstypen
|
||||
STR_9036_RENAME_ROAD_VEHICLE_TYPE :{WHITE}Omdøb køretøjstypen
|
||||
|
@@ -2220,8 +2220,8 @@ STR_7030_SELECT_NEW_FACE_FOR_PRESIDENT :{BLACK}Select n
|
||||
STR_7031_CHANGE_THE_COMPANY_VEHICLE :{BLACK}Change the company vehicle livery
|
||||
STR_7032_CHANGE_THE_PRESIDENT_S :{BLACK}Change the manager's name
|
||||
STR_7033_CHANGE_THE_COMPANY_NAME :{BLACK}Change the company name
|
||||
STR_7035_INCREASE_SIZE_OF_LOAN :{BLACK}Increase size of loan
|
||||
STR_7036_REPAY_PART_OF_LOAN :{BLACK}Repay part of loan
|
||||
STR_7035_INCREASE_SIZE_OF_LOAN :{BLACK}Increase size of loan. Ctrl+Click borrows as much as possible
|
||||
STR_7036_REPAY_PART_OF_LOAN :{BLACK}Repay part of loan. Ctrl+Click repays as much loan as possible
|
||||
STR_7037_PRESIDENT :{WHITE}{PRESIDENTNAME}{}{GOLD}(Manager)
|
||||
STR_7038_INAUGURATED :{GOLD}Inaugurated: {WHITE}{NUM}
|
||||
STR_7039_VEHICLES :{GOLD}Vehicles:
|
||||
@@ -3270,7 +3270,7 @@ STR_MASS_START_LIST_TIP :{BLACK}Click to
|
||||
STR_SHORT_DATE :{WHITE}{DATE_TINY}
|
||||
STR_SIGN_LIST_CAPTION :{WHITE}Sign List - {COMMA} Sign{P "" s}
|
||||
|
||||
STR_ORDER_REFIT_FAILED :{WHITE}Order refit failure stopped {VEHICLE}
|
||||
STR_ORDER_REFIT_FAILED :{WHITE}{VEHICLE} stopped because an ordered refit failed
|
||||
|
||||
############ Lists rail types
|
||||
|
||||
|
@@ -1054,6 +1054,7 @@ STR_CONFIG_SETTING_AI_BUILDS_AIRCRAFT :{LTBLUE}Malebli
|
||||
STR_CONFIG_SETTING_AI_BUILDS_SHIPS :{LTBLUE}Malebligu ŝipojn por la komputilo: {ORANGE}{STRING}
|
||||
|
||||
STR_CONFIG_SETTING_AI_IN_MULTIPLAYER :{LTBLUE}Permesu ArtefaritajnIntelektojn en pluropaj ludoj: {ORANGE}{STRING}
|
||||
STR_CONFIG_SETTING_AI_MAX_OPCODES :{LTBLUE}#opcodes antaŭ ArtefariteIntelekto estos prokrestita: {ORANGE}{STRING}
|
||||
|
||||
STR_CONFIG_SETTING_SERVINT_ISPERCENT :{LTBLUE}Prizorgintervala procentaĵo: {ORANGE}{STRING}
|
||||
STR_CONFIG_SETTING_SERVINT_TRAINS :{LTBLUE}Defaŭlta prizorgintervalo por trajnoj: {ORANGE}{STRING} tagoj/%
|
||||
@@ -1590,6 +1591,10 @@ STR_1024_AREA_IS_OWNED_BY_ANOTHER :{WHITE}...regio
|
||||
STR_RAILROAD_TRACK_WITH_NORMAL_SIGNALS :Reloj kun normalaj signaloj
|
||||
STR_RAILROAD_TRACK_WITH_PRESIGNALS :Reloj kun antaŭ-signaloj
|
||||
STR_RAILROAD_TRACK_WITH_EXITSIGNALS :Reloj kun elir-signaloj
|
||||
STR_RAILROAD_TRACK_WITH_COMBOSIGNALS :Reloj kun kombin-signaloj
|
||||
STR_RAILROAD_TRACK_WITH_PBSSIGNALS :Reloj kun pad-signaloj
|
||||
STR_RAILROAD_TRACK_WITH_NOENTRYSIGNALS :Reloj kun unudirektaj pad-signaloj
|
||||
STR_RAILROAD_TRACK_WITH_NORMAL_PRESIGNALS :Reloj kun blok- kaj antaŭ-signaloj
|
||||
|
||||
|
||||
|
||||
|
@@ -310,7 +310,7 @@ STR_015A_COMPANY_LEAGUE_TABLE :Yhtiökilpataul
|
||||
STR_PERFORMANCE_DETAIL_MENU :Suoritearviointi
|
||||
############ range for menu ends
|
||||
|
||||
STR_015B_OPENTTD :{WHITE}Tietoa OpenTTD:stä
|
||||
STR_015B_OPENTTD :{WHITE}Tietoja OpenTTD:stä
|
||||
STR_015C_SAVE_GAME :Tallenna peli
|
||||
STR_015D_LOAD_GAME :Lataa peli
|
||||
STR_015E_QUIT_GAME :Lopeta peli
|
||||
@@ -352,19 +352,19 @@ STR_ENGINE_SORT_CARGO_CAPACITY :Rahtikapasiteet
|
||||
STR_NO_WAITING_CARGO :{BLACK}Minkäänlaista lastia ei ole odottamassa
|
||||
STR_SELECT_ALL_FACILITIES :{BLACK}Valitse kaikki laitteet
|
||||
STR_SELECT_ALL_TYPES :{BLACK}Valitse kaikki lastityypit (myös odottava lasti)
|
||||
STR_AVAILABLE_TRAINS :{BLACK}Käytettävissä olevat junat
|
||||
STR_AVAILABLE_ROAD_VEHICLES :{BLACK}Käytettävissä olevat ajoneuvot
|
||||
STR_AVAILABLE_SHIPS :{BLACK}Käytettävissä olevat laivat
|
||||
STR_AVAILABLE_AIRCRAFT :{BLACK}Käytettävissä olevat ilma-alukset
|
||||
STR_AVAILABLE_TRAINS :{BLACK}Käytett. Junat
|
||||
STR_AVAILABLE_ROAD_VEHICLES :{BLACK}Käytett. Ajoneuvot
|
||||
STR_AVAILABLE_SHIPS :{BLACK}Käytett. Laivat
|
||||
STR_AVAILABLE_AIRCRAFT :{BLACK}Käytett. Ilma-alukset
|
||||
STR_AVAILABLE_ENGINES_TIP :{BLACK}Näytä lista saatavilla olevista moottorityypeistä tälle ajoneuvotyypille.
|
||||
STR_MANAGE_LIST :{BLACK}Muokkaa listaa
|
||||
STR_MANAGE_LIST_TIP :{BLACK}Ohjaa kaikkia listan ajoneuvoja
|
||||
STR_REPLACE_VEHICLES :Korvaa liikennevälineitä
|
||||
STR_REPLACE_VEHICLES :Korvaa liikenneväl.
|
||||
STR_SEND_TRAIN_TO_DEPOT :Lähetä varikolle
|
||||
STR_SEND_ROAD_VEHICLE_TO_DEPOT :Lähetä varikolle
|
||||
STR_SEND_SHIP_TO_DEPOT :Lähetä varikolle
|
||||
STR_SEND_AIRCRAFT_TO_HANGAR :Lähetä varikolle
|
||||
STR_SEND_FOR_SERVICING :Lähetä huollettavaksi
|
||||
STR_SEND_FOR_SERVICING :Lähetä huoltoon
|
||||
|
||||
############ range for months starts
|
||||
STR_0162_JAN :01.
|
||||
@@ -892,10 +892,10 @@ STR_EURO_INTRODUCE :{BLACK}{BIGFONT
|
||||
|
||||
# Start of order review system.
|
||||
# DON'T ADD OR REMOVE LINES HERE
|
||||
STR_VEHICLE_HAS_TOO_FEW_ORDERS :Kulkuneuvon {WHITE}{VEHICLE} aikataulussa on liian vähän käskyjä
|
||||
STR_VEHICLE_HAS_VOID_ORDER :Kulkuneuvon {WHITE}{VEHICLE} aikataulussa on epäkelpo käsky
|
||||
STR_VEHICLE_HAS_TOO_FEW_ORDERS :{WHITE}Kulkuneuvon {VEHICLE} aikataulussa on liian vähän käskyjä
|
||||
STR_VEHICLE_HAS_VOID_ORDER :{WHITE}Kulkuneuvon {VEHICLE} aikataulussa on epäkelpo käsky
|
||||
STR_VEHICLE_HAS_DUPLICATE_ENTRY :{WHITE}Ajoneuvolla {VEHICLE} on toistuvia määräyksiä
|
||||
STR_VEHICLE_HAS_INVALID_ENTRY :Kulkuneuvon {WHITE}{VEHICLE} aikataulussa on virheellinen asema
|
||||
STR_VEHICLE_HAS_INVALID_ENTRY :{WHITE}Kulkuneuvon {VEHICLE} aikataulussa on virheellinen asema
|
||||
# end of order system
|
||||
|
||||
STR_VEHICLE_AUTORENEW_FAILED :{WHITE}Automaattinen korvaus epäonnistui ajoneuvolle {VEHICLE}{}{STRING}
|
||||
@@ -2224,7 +2224,7 @@ STR_7035_INCREASE_SIZE_OF_LOAN :{BLACK}Ota lis
|
||||
STR_7036_REPAY_PART_OF_LOAN :{BLACK}Lyhennä lainaa.
|
||||
STR_7037_PRESIDENT :{WHITE}{PRESIDENTNAME}{}{GOLD}(pääjohtaja)
|
||||
STR_7038_INAUGURATED :{GOLD}Avattu: {WHITE}{NUM}
|
||||
STR_7039_VEHICLES :{GOLD}Liikennevälineet:
|
||||
STR_7039_VEHICLES :{GOLD}Liikenneväl.:
|
||||
STR_TRAINS :{WHITE}{COMMA} juna{P "" a}
|
||||
STR_ROAD_VEHICLES :{WHITE}{COMMA} ajoneuvo{P "" a}
|
||||
STR_AIRCRAFT :{WHITE}{COMMA} lentokone{P "" tta}
|
||||
@@ -3078,9 +3078,9 @@ STR_PERFORMANCE_DETAIL_AMOUNT_INT :{BLACK}({COMMA}
|
||||
STR_PERFORMANCE_DETAIL_PERCENT :{WHITE}{NUM}%
|
||||
STR_PERFORMANCE_DETAIL_INT :{BLACK}{NUM}
|
||||
############ Those following lines need to be in this order!!
|
||||
STR_PERFORMANCE_DETAIL_VEHICLES :{BLACK}Liikennevälineitä:
|
||||
STR_PERFORMANCE_DETAIL_VEHICLES :{BLACK}Liikenneväl.:
|
||||
STR_PERFORMANCE_DETAIL_STATIONS :{BLACK}Asemia:
|
||||
STR_PERFORMANCE_DETAIL_MIN_PROFIT :{BLACK}Vähimmäistuotto:
|
||||
STR_PERFORMANCE_DETAIL_MIN_PROFIT :{BLACK}Väh. tuotto:
|
||||
STR_PERFORMANCE_DETAIL_MIN_INCOME :{BLACK}Vähimmäistulo:
|
||||
STR_PERFORMANCE_DETAIL_MAX_INCOME :{BLACK}Enimmäistulo:
|
||||
STR_PERFORMANCE_DETAIL_DELIVERED :{BLACK}Kuljetettu:
|
||||
@@ -3232,8 +3232,8 @@ STR_VEHICLE_LIST_SHIP_DEPOT :{BLACK}{STRING}
|
||||
STR_VEHICLE_LIST_AIRCRAFT_DEPOT :{BLACK}{STRING} - {COMMA} ilma-alus{P "" ta}
|
||||
|
||||
STR_REPLACE_VEHICLES_WHITE :{WHITE}Korvaa {STRING}
|
||||
STR_REPLACE_VEHICLES_START :{BLACK}Aloita ajoneuvojen korvaaminen
|
||||
STR_REPLACE_VEHICLES_STOP :{BLACK}Lopeta ajoneuvojen korvaaminen
|
||||
STR_REPLACE_VEHICLES_START :{BLACK}Aloita ajoneuvojen korv.
|
||||
STR_REPLACE_VEHICLES_STOP :{BLACK}Lopeta ajoneuvojen korv.
|
||||
STR_NOT_REPLACING :{BLACK}Ei korvata
|
||||
STR_NOT_REPLACING_VEHICLE_SELECTED :{BLACK}Ei liikennevälinettä valittuna
|
||||
STR_REPLACE_HELP_LEFT_ARRAY :{BLACK}Valitse korvattava veturityyppi.
|
||||
|
@@ -685,6 +685,7 @@ STR_TRANSPARENT_SIGNS :{SETX 12}Sinais
|
||||
STR_02D5_LAND_BLOCK_INFO :Información de área de terreo
|
||||
STR_02D6 :
|
||||
STR_CONSOLE_SETTING :Des/Activar Consola
|
||||
STR_AI_DEBUG_MENU :Depuración IA
|
||||
STR_02D7_SCREENSHOT_CTRL_S :Captura de Pantalla (Ctrl-S)
|
||||
STR_02D8_GIANT_SCREENSHOT_CTRL_G :Capt.Pant. Xigante (Ctrl-G)
|
||||
STR_02D9_ABOUT_OPENTTD :Acerca de 'OpenTTD'
|
||||
@@ -842,7 +843,9 @@ STR_OPTIONS_SCREENSHOT_FORMAT :{BLACK}Formato
|
||||
STR_OPTIONS_SCREENSHOT_FORMAT_CBO :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
|
||||
STR_OPTIONS_SCREENSHOT_FORMAT_TIP :{BLACK}Selecciona o formato a utilizar nas capturas de pantalla
|
||||
|
||||
STR_OPTIONS_BASE_GRF :{BLACK}Conxunto básico de gráficos
|
||||
STR_OPTIONS_BASE_GRF_CBO :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
|
||||
STR_OPTIONS_BASE_GRF_TIP :{BLACK}Selecciona o conxunto de gráficos básico a usar
|
||||
STR_AUTOSAVE_FAILED :{WHITE}Autograbado fallido
|
||||
|
||||
STR_MONTH_JAN :Xaneiro
|
||||
@@ -891,6 +894,7 @@ STR_VEHICLE_HAS_DUPLICATE_ENTRY :{WHITE}{VEHICLE
|
||||
STR_VEHICLE_HAS_INVALID_ENTRY :{WHITE}{VEHICLE} ten unha estación inválida nas súas ordes
|
||||
# end of order system
|
||||
|
||||
STR_TRAIN_TOO_LONG_AFTER_REPLACEMENT :{WHITE}{VEHICLE} é demasiado longo despois do reemprazo
|
||||
STR_AUTOREPLACE_NOTHING_TO_DO :{WHITE}Non se aplicaron as regras de autosubstitución/renovación
|
||||
STR_AUTOREPLACE_MONEY_LIMIT :(límite de diñeiro)
|
||||
|
||||
@@ -939,6 +943,7 @@ STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD :{LTBLUE}Permiti
|
||||
STR_CONFIG_SETTING_ADJACENT_STATIONS :{LTBLUE}Permiti-la construción de estacións contiguas: {ORANGE}{STRING}
|
||||
STR_CONFIG_SETTING_DYNAMIC_ENGINES :{LTBLUE}Activar motor para múltiples NewGRF: {ORANGE}{STRING}
|
||||
|
||||
STR_CONFIG_SETTING_DYNAMIC_ENGINES_EXISTING_VEHICLES :{WHITE}Non é posible cambiar esta opción cando hai vehículos.
|
||||
STR_CONFIG_SETTING_SMALL_AIRPORTS :{LTBLUE}Permitir sempre aeroportos pequenos: {ORANGE}{STRING}
|
||||
|
||||
STR_CONFIG_SETTING_WARN_LOST_TRAIN :{LTBLUE}Avisar se un tren se perde: {ORANGE}{STRING}
|
||||
@@ -972,6 +977,7 @@ STR_CONFIG_SETTING_HEIGHTMAP_ROTATION :{LTBLUE}Rotaci
|
||||
STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_COUNTER_CLOCKWISE :Esquerda
|
||||
STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_CLOCKWISE :Dereita
|
||||
STR_CONFIG_SETTING_SE_FLAT_WORLD_HEIGHT :{LTBLUE}Nivel de altitude dun escenario chairo: {ORANGE}{STRING}
|
||||
STR_CONFIG_SETTING_ENABLE_FREEFORM_EDGES :{LTBLUE}Activa-la terraformación nos bordes do mapa: {ORANGE}{STRING}
|
||||
|
||||
# Start of map water border strings.
|
||||
# DON'T ADD OR REMOVE LINES HERE
|
||||
@@ -999,7 +1005,11 @@ STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_COMMAND :Tecla Command
|
||||
STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_CONTROL :Tecla Control
|
||||
STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_OFF :Apagado
|
||||
|
||||
STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING :{LTBLUE}Desprazamento con click esquerdo: {ORANGE}{STRING}
|
||||
|
||||
STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_LONG :longo (31 Dec 2008)
|
||||
STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_SHORT :corto (31-12-2008)
|
||||
STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_ISO :ISO (2008-12-31)
|
||||
|
||||
STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME :{LTBLUE}Pausar automáticamente ó comezo dunha nova partida: {ORANGE}{STRING}
|
||||
STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS :{LTBLUE}Usa-la lista avanzada de vehículos: {ORANGE}{STRING}
|
||||
@@ -1033,6 +1043,7 @@ STR_CONFIG_SETTING_AI_BUILDS_ROADVEH :{LTBLUE}Deshabi
|
||||
STR_CONFIG_SETTING_AI_BUILDS_AIRCRAFT :{LTBLUE}Deshabilita-los avións para o ordenador: {ORANGE}{STRING}
|
||||
STR_CONFIG_SETTING_AI_BUILDS_SHIPS :{LTBLUE}Deshabilita-los barcos para o ordenador: {ORANGE}{STRING}
|
||||
|
||||
STR_CONFIG_SETTING_AI_IN_MULTIPLAYER :{LTBLUE}Permitir IA en multixogador: {ORANGE}{STRING}
|
||||
|
||||
STR_CONFIG_SETTING_SERVINT_ISPERCENT :{LTBLUE}Intervalos de servizo en porcentaxes: {ORANGE}{STRING}
|
||||
STR_CONFIG_SETTING_SERVINT_TRAINS :{LTBLUE}Intervalo de servizo para os trens: {ORANGE}{STRING} días/%
|
||||
@@ -1063,6 +1074,7 @@ STR_CONFIG_SETTING_CYCLE_SIGNAL_NORMAL :Só normais
|
||||
STR_CONFIG_SETTING_CYCLE_SIGNAL_PBS :Só avanzadas
|
||||
STR_CONFIG_SETTING_CYCLE_SIGNAL_ALL :Todas
|
||||
|
||||
STR_CONFIG_SETTING_TOWN_LAYOUT :{LTBLUE}Distribución das estradas en novas cidades: {ORANGE}{STRING}
|
||||
STR_CONFIG_SETTING_TOWN_LAYOUT_DEFAULT :defecto
|
||||
STR_CONFIG_SETTING_TOWN_LAYOUT_BETTER_ROADS :mellores estradas
|
||||
STR_CONFIG_SETTING_TOWN_LAYOUT_2X2_GRID :Reixa 2x2
|
||||
@@ -1093,8 +1105,11 @@ STR_CONFIG_SETTING_VEHICLES :{ORANGE}Vehícu
|
||||
STR_CONFIG_SETTING_STATIONS :{ORANGE}Estacións
|
||||
STR_CONFIG_SETTING_ECONOMY :{ORANGE}Economía
|
||||
STR_CONFIG_SETTING_AI :{ORANGE}Competidores
|
||||
STR_CONFIG_SETTING_DISPLAY_OPTIONS :{ORANGE}Mostrar opcións
|
||||
STR_CONFIG_SETTING_INTERACTION :{ORANGE}Interacción
|
||||
STR_CONFIG_SETTING_CONSTRUCTION_SIGNALS :{ORANGE}Sinais
|
||||
STR_CONFIG_SETTING_AI_NPC :{ORANGE}Xogadores do ordenador
|
||||
STR_CONFIG_SETTING_VEHICLES_AUTORENEW :{ORANGE}Autorenovar
|
||||
STR_CONFIG_SETTING_VEHICLES_TRAINS :{ORANGE}Trens
|
||||
STR_CONFIG_SETTING_ECONOMY_TOWNS :{ORANGE}Cidades
|
||||
STR_CONFIG_SETTING_ECONOMY_INDUSTRIES :{ORANGE}Industrias
|
||||
@@ -1404,10 +1419,11 @@ STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}Introduc
|
||||
STR_NETWORK_NEED_GAME_PASSWORD_CAPTION :{WHITE}O servidor está protexido. Introduce clave
|
||||
STR_NETWORK_NEED_COMPANY_PASSWORD_CAPTION :{WHITE}A compañía está protexida. Introduce clave
|
||||
STR_NETWORK_CLIENT_LIST :{WHITE}Lista de Clientes
|
||||
STR_NETWORK_COMPANY_LIST_SPECTATE :{WHITE}Observar
|
||||
STR_NETWORK_COMPANY_LIST_NEW_COMPANY :{WHITE}Nova Compañía
|
||||
|
||||
STR_NETWORK_ERR_NOTAVAILABLE :{WHITE} Non se atoparon dispositivos de rede ou compilouse sen ENABLE_NETWORK
|
||||
STR_NETWORK_ERR_NOSERVER :{WHITE} Non se atoparon xogos en rede
|
||||
STR_NETWORK_ERR_NOSERVER :{WHITE}Non se atoparon xogos en rede
|
||||
STR_NETWORK_ERR_NOCONNECTION :{WHITE} O servidor non respondeu á solicitude
|
||||
STR_NETWORK_ERR_NEWGRF_MISMATCH :{WHITE}Non se pode conectar debido a un problema cos NewGRF
|
||||
STR_NETWORK_ERR_DESYNC :{WHITE}Sincronización da partida en rede fallida
|
||||
@@ -1443,7 +1459,21 @@ STR_NETWORK_ERR_CLIENT_SERVER_FULL :servidor cheo
|
||||
############ End of leave-in-this-order
|
||||
STR_NETWORK_SERVER_MESSAGE :*** {2:STRING}
|
||||
############ Leave those lines in this order!!
|
||||
STR_NETWORK_SERVER_MESSAGE_GAME_PAUSED_PLAYERS :Partida en pausa (non hai suficientes xogadores)
|
||||
STR_NETWORK_SERVER_MESSAGE_GAME_UNPAUSED_PLAYERS :Partida funcionando (hai suficientes xogadores)
|
||||
STR_NETWORK_SERVER_MESSAGE_GAME_PAUSED_CONNECT :Partida en pausa (cliente conectando)
|
||||
STR_NETWORK_SERVER_MESSAGE_GAME_UNPAUSED_CONNECT :Partida funcionando (cliente conectado)
|
||||
STR_NETWORK_SERVER_MESSAGE_GAME_UNPAUSED_CONNECT_FAIL :Partida funcionando (o cliente non pudio conectar)
|
||||
############ End of leave-in-this-order
|
||||
STR_NETWORK_CLIENT_LEAVING :saíndo
|
||||
STR_NETWORK_CLIENT_JOINED :*** {STRING} uniuse á partida
|
||||
STR_NETWORK_CLIENT_COMPANY_JOIN :*** {STRING} uniuse a compañía #{2:NUM}
|
||||
STR_NETWORK_CLIENT_COMPANY_SPECTATE :*** {STRING} uniuse ós espectadores
|
||||
STR_NETWORK_CLIENT_COMPANY_NEW :*** {STRING} comezou unha nova compañía (#{2:NUM})
|
||||
STR_NETWORK_CLIENT_LEFT :*** {STRING} saiu da partida ({2:STRING})
|
||||
STR_NETWORK_NAME_CHANGE :*** {STRING} cambiou o seu nome a {STRING}
|
||||
STR_NETWORK_GIVE_MONEY :*** {STRING} deu a túa companía {2:CURRENCY}
|
||||
STR_NETWORK_GAVE_MONEY_AWAY :*** Diches a {1:STRING} {2:CURRENCY}
|
||||
STR_NETWORK_CHAT_COMPANY_CAPTION :[Equipo] :
|
||||
STR_NETWORK_CHAT_COMPANY :[Equipo] {STRING}: {WHITE}{STRING}
|
||||
STR_NETWORK_CHAT_TO_COMPANY :[Equipo] A {STRING}: {WHITE}{STRING}
|
||||
@@ -1566,6 +1596,8 @@ STR_RAILROAD_TRACK_WITH_COMBO_PBSSIGNALS :Vía de tren co
|
||||
STR_RAILROAD_TRACK_WITH_COMBO_NOENTRYSIGNALS :Vía de tren con sinais combo e de ruta dun sentido
|
||||
STR_RAILROAD_TRACK_WITH_PBS_NOENTRYSIGNALS :Vía de tren con sinais de ruta e de ruta dun sentido
|
||||
STR_MUST_REMOVE_RAILWAY_STATION_FIRST :{WHITE}debes quita-la estación de tren primeiro
|
||||
STR_CREATE_SPLITTED_STATION :{YELLOW}Construír unha estación separada
|
||||
STR_SELECT_STATION_TO_JOIN :{BLACK}Unir estación
|
||||
|
||||
|
||||
|
||||
@@ -1851,6 +1883,7 @@ STR_4001_LOAD_GAME :{WHITE}Cargar P
|
||||
STR_4002_SAVE :{BLACK}Grabar
|
||||
STR_4003_DELETE :{BLACK}Borrar
|
||||
STR_4004 :{COMPANY}, {STRING}
|
||||
STR_GAME_SAVELOAD_SPECTATOR_SAVEGAME :Espectador, {SKIP}{STRING}
|
||||
STR_4005_BYTES_FREE :{BLACK}{BYTES} libre{P "" s}
|
||||
STR_4006_UNABLE_TO_READ_DRIVE :{BLACK}No se pode lee-la unidade
|
||||
STR_4007_GAME_SAVE_FAILED :{WHITE}Grabación da partida fallida{}{STRING}
|
||||
@@ -1861,6 +1894,7 @@ STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :Partida grabada
|
||||
STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :A partida grabouse cunha versión máis nova do xogo
|
||||
STR_GAME_SAVELOAD_ERROR_FILE_NOT_READABLE :Ficheiro ilexible
|
||||
STR_GAME_SAVELOAD_ERROR_FILE_NOT_WRITEABLE :Non se pode escribir no ficheiro
|
||||
STR_GAME_SAVELOAD_ERROR_DATA_INTEGRITY_CHECK_FAILED :Fallou a comprobación de integridade dos datos
|
||||
STR_400A_LIST_OF_DRIVES_DIRECTORIES :{BLACK}Lista de unidades, directorios e arquivos de partida
|
||||
STR_400B_CURRENTLY_SELECTED_NAME :{BLACK}Nome seleccionado actualmente para o arquivo
|
||||
STR_400C_DELETE_THE_CURRENTLY_SELECTED :{BLACK}Borra-lo arquivo que está seleccionado
|
||||
|
@@ -154,7 +154,7 @@ STR_ABBREV_ALL :{TINYFONT}SMA
|
||||
STR_00AE :{WHITE}{DATE_SHORT}
|
||||
STR_00AF :{WHITE}{DATE_LONG}
|
||||
STR_00B0_MAP :{WHITE}Peta - {STRING}
|
||||
STR_00B1_GAME_OPTIONS :{WHITE}Pilihan permainan
|
||||
STR_00B1_GAME_OPTIONS :{WHITE}Pengaturan permainan
|
||||
STR_00B2_MESSAGE :{YELLOW}Pesan
|
||||
STR_00B3_MESSAGE_FROM :{YELLOW}Pesan dari {STRING}
|
||||
STR_POPUP_CAUTION_CAPTION :{WHITE}Peringatan!
|
||||
@@ -269,7 +269,7 @@ STR_SCENARIO_EDITOR :{BLACK}Editor S
|
||||
|
||||
STR_MAPSIZE :{BLACK}Ukuran Peta:
|
||||
STR_BY :{BLACK}*
|
||||
STR_0148_GAME_OPTIONS :{BLACK}Pilihan Permainan
|
||||
STR_0148_GAME_OPTIONS :{BLACK}Pengaturan Permainan
|
||||
|
||||
STR_0150_SOMEONE :seseorang{SKIP}{SKIP}
|
||||
|
||||
@@ -669,7 +669,7 @@ STR_02BD :{BLACK}{STRING}
|
||||
|
||||
STR_CHECKMARK :{CHECKMARK}
|
||||
############ range for menu starts
|
||||
STR_02C4_GAME_OPTIONS :Pilihan Permainan
|
||||
STR_02C4_GAME_OPTIONS :Pengaturan permainan
|
||||
STR_02C6_DIFFICULTY_SETTINGS :Pengaturan tingkat kesulitan
|
||||
STR_MENU_CONFIG_SETTINGS :Pengaturan lanjutan
|
||||
STR_NEWGRF_SETTINGS :Pengaturan NewGRF
|
||||
@@ -695,7 +695,7 @@ STR_02D9_ABOUT_OPENTTD :Tentang 'OpenTT
|
||||
############ range ends here
|
||||
|
||||
STR_02DB_OFF :{BLACK}Non-aktifkan
|
||||
STR_02DA_ON :{BLACK}Hidup
|
||||
STR_02DA_ON :{BLACK}Aktif
|
||||
STR_02DC_DISPLAY_SUBSIDIES :{BLACK}Tampilkan subsidi
|
||||
STR_02DD_SUBSIDIES :Subsidi
|
||||
STR_02DE_MAP_OF_WORLD :Peta Dunia
|
||||
@@ -1159,7 +1159,7 @@ STR_TOYLAND_LANDSCAPE :Lansekap 'Taman
|
||||
|
||||
STR_CHEATS :{WHITE}Kode Curang
|
||||
STR_CHEATS_TIP :{BLACK}Daftar cek ini mengindikasikan bahwa anda telah menggunakan kode curang ini sebelumnya
|
||||
STR_CHEATS_WARNING :{BLACK}Peringatan! Anda akan mencurangi pemain lainya. Kecurangan ini akan tetap tercatat selama game berjalan.
|
||||
STR_CHEATS_WARNING :{BLACK}Peringatan! Anda akan mencurangi pemain lainnya. Kecurangan ini akan tetap tercatat selama game berjalan.
|
||||
STR_CHEAT_MONEY :{LTBLUE}Tambah uang sebanyak {CURRENCY}
|
||||
STR_CHEAT_CHANGE_COMPANY :{LTBLUE}Bermain sebagai pemain: {ORANGE}{COMMA}
|
||||
STR_CHEAT_EXTRA_DYNAMITE :{LTBLUE}Buldozer ajaib (hancurkan industri, mercu suar dsb): {ORANGE}{STRING}
|
||||
@@ -2161,7 +2161,7 @@ STR_6833_9_MONTHS_AFTER_PLAYER :9 bulan setelah
|
||||
STR_6834_AT_END_OF_LINE_AND_AT_STATIONS :Pada ujung rel, dan pada stasiun
|
||||
STR_6835_AT_END_OF_LINE_ONLY :Hanya pada ujung rel
|
||||
STR_6836_OFF :Non-aktifkan
|
||||
STR_6837_ON :Hidup
|
||||
STR_6837_ON :Aktif
|
||||
STR_6838_SHOW_HI_SCORE_CHART :{BLACK}Tampilkan tabel skor tertinggi
|
||||
STR_PERMISSIVE :Selalu boleh
|
||||
STR_TOLERANT :Toleran
|
||||
|
@@ -607,6 +607,7 @@ STR_CANNOT_GENERATE_TOWN :{WHITE}Kan ikke
|
||||
STR_NO_SPACE_FOR_TOWN :{WHITE}...der er ikke mer plass på kartet
|
||||
STR_023B_INCREASE_SIZE_OF_TOWN :{BLACK}Øk bystørrelse
|
||||
STR_023C_EXPAND :{BLACK}Utvid
|
||||
STR_TOWN_EXPAND_WARN_NO_ROADS :{WHITE}Byen kommer ikke til å bygge veier. Du kan slå på bygging av veier via Avanserte innstillinger->Økonomi->Byer.
|
||||
STR_023D_RANDOM_TOWN :{BLACK}Lag tilfeldig by
|
||||
STR_023E_BUILD_TOWN_IN_RANDOM_LOCATION :{BLACK}Grunnlegg by et tilfeldig sted
|
||||
STR_0285_CAN_T_BUILD_HERE :{WHITE}Kan ikke bygge {STRING} her...
|
||||
@@ -646,6 +647,7 @@ STR_02A2_MEDIUM :{BLACK}Middels
|
||||
STR_02A3_LARGE :{BLACK}Stor
|
||||
STR_SELECT_TOWN_SIZE_RANDOM :{BLACK}Tilfeldig
|
||||
STR_FOUND_TOWN_CITY :{BLACK}By
|
||||
STR_FOUND_TOWN_CITY_TOOLTIP :{BLACK}Store byer vokser raskere enn vanlige byer{}Avhengig av valgte innstillinger er de større når de blir grunnlagt
|
||||
STR_02A4_SELECT_TOWN_SIZE :{BLACK}Velg bystørrelse
|
||||
STR_02A5_TOWN_SIZE :{YELLOW}Bystørrelse:
|
||||
|
||||
@@ -844,7 +846,9 @@ STR_OPTIONS_SCREENSHOT_FORMAT :{BLACK}Filforma
|
||||
STR_OPTIONS_SCREENSHOT_FORMAT_CBO :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
|
||||
STR_OPTIONS_SCREENSHOT_FORMAT_TIP :{BLACK}Velg hvilket format skjermdumpet skal lagers i
|
||||
|
||||
STR_OPTIONS_BASE_GRF :{BLACK}Grafikksett
|
||||
STR_OPTIONS_BASE_GRF_CBO :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
|
||||
STR_OPTIONS_BASE_GRF_TIP :{BLACK}Velg grafikksett som skal brukes
|
||||
|
||||
STR_AUTOSAVE_FAILED :{WHITE}Autolagring feilet
|
||||
|
||||
@@ -942,9 +946,11 @@ STR_CONFIG_SETTING_NONUNIFORM_STATIONS :{LTBLUE}Uensart
|
||||
STR_CONFIG_SETTING_FREIGHT_TRAINS :{LTBLUE}Vektmultiplikator for frakt til å simulere tunge tog: {ORANGE}{STRING}
|
||||
STR_CONFIG_SETTING_PLANE_SPEED :{LTBLUE}Fly hastighet faktor: {ORANGE}1 / {STRING}
|
||||
STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD :{LTBLUE}Tillat gjennomkjøring av stoppesteder på veier som er eid av byene: {ORANGE}{STRING}
|
||||
STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD :{LTBLUE}Tillat gjennomkjøringsstopp på veier som er eid av konkurrenter {ORANGE}{STRING}
|
||||
STR_CONFIG_SETTING_ADJACENT_STATIONS :{LTBLUE}Tillat bygging av nærliggende stasjoner: {ORANGE}{STRING}
|
||||
STR_CONFIG_SETTING_DYNAMIC_ENGINES :{LTBLUE}Sett i gang flere ny grafikk kjerne sets: {ORANGE}{STRING}
|
||||
|
||||
STR_CONFIG_SETTING_DYNAMIC_ENGINES_EXISTING_VEHICLES :{WHITE}Det er ikke mulig å endre denne innstillingen mens det allerede finnes kjøretøy.
|
||||
STR_CONFIG_SETTING_SMALL_AIRPORTS :{LTBLUE}Alltid tillat bygging av små flyplasser: {ORANGE}{STRING}
|
||||
|
||||
STR_CONFIG_SETTING_WARN_LOST_TRAIN :{LTBLUE}Vis en advarsel hvis et tog har kjørt seg vill{ORANGE}{STRING}
|
||||
@@ -978,6 +984,9 @@ STR_CONFIG_SETTING_HEIGHTMAP_ROTATION :{LTBLUE}Høydek
|
||||
STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_COUNTER_CLOCKWISE :Mot klokka
|
||||
STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_CLOCKWISE :Med klokka
|
||||
STR_CONFIG_SETTING_SE_FLAT_WORLD_HEIGHT :{LTBLUE}Høyden et flatt scenariokart får: {ORANGE}{STRING}
|
||||
STR_CONFIG_SETTING_ENABLE_FREEFORM_EDGES :{LTBLUE}Aktiver terraforming av ruter ved endene av kartet: {ORANGE}{STRING}
|
||||
STR_CONFIG_SETTING_EDGES_NOT_EMPTY :{WHITE}En eller flere ruter ved den nordlige kanten av kartet er ikke tom
|
||||
STR_CONFIG_SETTING_EDGES_NOT_WATER :{WHITE}En eller flere ruter ved en av kantene av kartet er ikke vann
|
||||
|
||||
STR_CONFIG_SETTING_STATION_SPREAD :{LTBLUE}Maks stasjonspedning: {ORANGE}{STRING} {RED}Advarsel: Høy instilling gir tregere spill
|
||||
STR_CONFIG_SETTING_SERVICEATHELIPAD :{LTBLUE}Automatisk vedlikehold ved helikopterlandingsteder: {ORANGE}{STRING}
|
||||
@@ -1030,6 +1039,7 @@ STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_LAST :Sist tilgjengel
|
||||
STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_MOST_USED :Mest brukt
|
||||
STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION :{LTBLUE}Vis reserverte spor: {ORANGE}{STRING}
|
||||
STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS :{LTBLUE}La byggingsverktøy være aktiv etter bruk: {ORANGE}{STRING}
|
||||
STR_CONFIG_SETTING_EXPENSES_LAYOUT :{LTBLUE}Gruppér utgifter i firmafinansvinduet: {ORANGE}{STRING}
|
||||
|
||||
STR_CONFIG_SETTING_ALWAYS_BUILD_INFRASTRUCTURE :{LTBLUE}Vis byggingsverktøy når det ikke er noen tilgjengelige kjøretøy: {ORANGE}{STRING}
|
||||
STR_CONFIG_SETTING_MAX_TRAINS :{LTBLUE}Maks antall tog per spiller: {ORANGE}{STRING}
|
||||
@@ -1043,6 +1053,7 @@ STR_CONFIG_SETTING_AI_BUILDS_AIRCRAFT :{LTBLUE}Hindre
|
||||
STR_CONFIG_SETTING_AI_BUILDS_SHIPS :{LTBLUE}Hindre datamaskinen i å bygge skip: {ORANGE}{STRING}
|
||||
|
||||
STR_CONFIG_SETTING_AI_IN_MULTIPLAYER :{LTBLUE}Tillat AIer i flerspiller: {ORANGE}{STRING}
|
||||
STR_CONFIG_SETTING_AI_MAX_OPCODES :{LTBLUE}#opcodes før AI suspenderes: {ORANGE}{STRING}
|
||||
|
||||
STR_CONFIG_SETTING_SERVINT_ISPERCENT :{LTBLUE}Vedlikeholdsintervaller i prosent: {ORANGE}{STRING}
|
||||
STR_CONFIG_SETTING_SERVINT_TRAINS :{LTBLUE}Standard vedlikeholdsintervall for tog: {ORANGE}{STRING} dager
|
||||
@@ -1111,6 +1122,7 @@ STR_CONFIG_SETTING_DISPLAY_OPTIONS :{ORANGE}Visning
|
||||
STR_CONFIG_SETTING_INTERACTION :{ORANGE}Samhandling
|
||||
STR_CONFIG_SETTING_CONSTRUCTION_SIGNALS :{ORANGE}Signaler
|
||||
STR_CONFIG_SETTING_STATIONS_CARGOHANDLING :{ORANGE}Lastehå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
|
||||
@@ -1185,6 +1197,7 @@ STR_CANT_REMOVE_TRAIN_WAYPOINT :{WHITE}Kan ikke
|
||||
STR_BUILD_AUTORAIL_TIP :{BLACK}Bygg jernbane ved hjelp av autobanemodusen
|
||||
|
||||
STR_NO_TOWN_IN_SCENARIO :{WHITE}...det er ingen byer i dette scenarioet
|
||||
STR_COULD_NOT_CREATE_TOWN :{WHITE}Kartgenerering avbrutt...{}...ingen brukbare steder å plassere byene
|
||||
|
||||
STR_MANY_RANDOM_TOWNS :{BLACK}Mange tilfeldige byer
|
||||
STR_RANDOM_TOWNS_TIP :{BLACK}Dekk kartet med tilfeldig plasserte byer
|
||||
@@ -1196,7 +1209,6 @@ STR_LANDSCAPING_TOOLBAR_TIP :{BLACK}Åpne ve
|
||||
STR_LANDSCAPING_TOOLBAR :{WHITE}Landskaping
|
||||
STR_LEVEL_LAND_TOOLTIP :{BLACK}Utjevn land
|
||||
|
||||
|
||||
STR_TREES_RANDOM_TYPE :{BLACK}Trær av tilfeldig type
|
||||
STR_TREES_RANDOM_TYPE_TIP :{BLACK}Plasser trær av tilfeldig type
|
||||
|
||||
@@ -1674,6 +1686,7 @@ STR_200C_CHANGE_TOWN_NAME :{BLACK}Bytt nav
|
||||
STR_200D_PASSENGERS_LAST_MONTH_MAX :{BLACK}Passasjerer forrige måned: {ORANGE}{COMMA}{BLACK} maks: {ORANGE}{COMMA}
|
||||
STR_200E_MAIL_LAST_MONTH_MAX :{BLACK}Post forrige måned: {ORANGE}{COMMA}{BLACK} maks: {ORANGE}{COMMA}
|
||||
STR_CARGO_FOR_TOWNGROWTH :{BLACK}Godsbehov for byekspansjon:
|
||||
STR_CARGO_FOR_TOWNGROWTH_REQUIRED :{SETX 20}{ORANGE}{STRING}{BLACK} påkrevd
|
||||
STR_CARGO_FOR_TOWNGROWTH_LAST_MONTH :{SETX 20}{ORANGE}{CARGO}{BLACK} levert sist måned
|
||||
STR_200F_TALL_OFFICE_BLOCK :Høyhus
|
||||
STR_2010_OFFICE_BLOCK :Kontorblokk
|
||||
@@ -1790,6 +1803,7 @@ STR_3005_TOO_CLOSE_TO_ANOTHER_RAILROAD :{WHITE}For nær
|
||||
STR_3006_ADJOINS_MORE_THAN_ONE_EXISTING :{WHITE}Grenser til mer enn én eksiterende stasjon/lasteterminal
|
||||
STR_3007_TOO_MANY_STATIONS_LOADING :{WHITE}For mange stasjoner/lasteterminaler i byen
|
||||
STR_3008_TOO_MANY_STATIONS_LOADING :{WHITE}For mange stasjoner/lasteterminaler
|
||||
STR_TOO_MANY_STATION_SPECS :{WHITE}For mange enkeltdeler på jernbanestasjonen
|
||||
STR_TOO_MANY_BUS_STOPS :{WHITE}For mange bussholdeplasser
|
||||
STR_TOO_MANY_TRUCK_STOPS :{WHITE}For mange lasteterminaler
|
||||
STR_3009_TOO_CLOSE_TO_ANOTHER_STATION :{WHITE}For nær en annen jernbanestasjon/lasteterminal
|
||||
@@ -2226,6 +2240,7 @@ STR_704A_SELECT_FEMALE_FACES :{BLACK}Velg kvi
|
||||
STR_704B_GENERATE_RANDOM_NEW_FACE :{BLACK}Lag et tilfeldig ansikt
|
||||
STR_704C_KEY :{BLACK}Nøkkel
|
||||
STR_704D_SHOW_KEY_TO_GRAPHS :{BLACK}Vis oversikt over grafvalg
|
||||
STR_SHOW_DETAILED_PERFORMANCE_RATINGS :{BLACK}Vis detaljerte ytelsesmålinger
|
||||
STR_704E_KEY_TO_COMPANY_GRAPHS :{WHITE}Vis oversikt over firmagrafvalg
|
||||
STR_704F_CLICK_HERE_TO_TOGGLE_COMPANY :{BLACK}Trykk her for å vise/skjule et firma
|
||||
STR_7050_UNITS_OF_CARGO_DELIVERED :{WHITE}Antall varer levert
|
||||
@@ -2784,12 +2799,12 @@ STR_TIMETABLE_CLEAR_TIME_TOOLTIP :{BLACK}Fjern va
|
||||
STR_TIMETABLE_RESET_LATENESS_TOOLTIP :{BLACK}Nullstill senhetstelleren slik at kjøretøyet ankommer i tide
|
||||
STR_SERVICE_HINT :{BLACK}Hopp over ordren med mindre vedlikehold trengs.
|
||||
STR_VEHICLE_INFO_COST_WEIGHT_SPEED_POWER :{BLACK}Koster: {CURRENCY} Vekt: {WEIGHT_S}{}Fart: {VELOCITY} Kraft: {POWER}{}Driftkostnader: {CURRENCY}/år{}Kapasitet: {CARGO}
|
||||
STR_885C_BROKEN_DOWN :{RED}Havarert
|
||||
STR_885D_AGE_RUNNING_COST_YR :{BLACK}Alder: {LTBLUE}{STRING}{BLACK} Driftkostnad: {LTBLUE}{CURRENCY}/år
|
||||
STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED :{BLACK}Vekt: {LTBLUE}{WEIGHT_S} {BLACK}Kraft: {LTBLUE}{POWER}{BLACK} Maks. fart: {LTBLUE}{VELOCITY}
|
||||
STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED_MAX_TE :{BLACK}Vekt: {LTBLUE}{WEIGHT_S} {BLACK}Kraft: {LTBLUE}{POWER}{BLACK} Høyeste fart: {LTBLUE}{VELOCITY} {BLACK}Høyeste hastighet.: {LTBLUE}{FORCE}
|
||||
STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED_MAX_TE :{BLACK}Vekt: {LTBLUE}{WEIGHT_S} {BLACK}Kraft: {LTBLUE}{POWER}{BLACK} Maksfart: {LTBLUE}{VELOCITY} {BLACK}Max. T.E.: {LTBLUE}{FORCE}
|
||||
STR_885F_PROFIT_THIS_YEAR_LAST_YEAR :{BLACK}Inntekt i år: {LTBLUE}{CURRENCY} (sist år: {CURRENCY})
|
||||
STR_8860_RELIABILITY_BREAKDOWNS :{BLACK}Pålitelighet: {LTBLUE}{COMMA}{NBSP}% {BLACK}Havarier siden forrige vedlikehold: {LTBLUE}{COMMA}
|
||||
STR_885C_BROKEN_DOWN :{RED}Motorstopp
|
||||
STR_885D_AGE_RUNNING_COST_YR :{BLACK}Alder: {LTBLUE}{STRING}{BLACK} Driftkostnad: {LTBLUE}{CURRENCY}/år
|
||||
STR_8861_STOPPED :{RED}Stoppet
|
||||
STR_8862_CAN_T_MAKE_TRAIN_PASS_SIGNAL :{WHITE}Kan ikke tvinge tog til å kjøre på rødt lys ved fare...
|
||||
STR_8863_CRASHED :{RED}Krasjet
|
||||
@@ -2799,6 +2814,8 @@ STR_8866_CAN_T_NAME_TRAIN :{WHITE}Kan ikke
|
||||
STR_8867_NAME_TRAIN :{BLACK}Navngi tog
|
||||
STR_8868_TRAIN_CRASH_DIE_IN_FIREBALL :{BLACK}{BIGFONT}Togkrasj!{}{COMMA} dør i kollisjonen
|
||||
STR_ERROR_CAN_T_REVERSE_DIRECTION_TRAIN :{WHITE}Kan ikke snu toget...
|
||||
STR_ERROR_CAN_T_REVERSE_DIRECTION_RAIL_VEHICLE :{WHITE}Kan ikke snu kjøreretningen til kjøretøy...
|
||||
STR_ERROR_CAN_T_REVERSE_DIRECTION_RAIL_VEHICLE_MULTIPLE_UNITS :{WHITE}Kan ikke snu kjøretøy som består av flere deler
|
||||
STR_886A_RENAME_TRAIN_VEHICLE_TYPE :{WHITE}Gi tog/vogn nytt navn
|
||||
STR_886B_CAN_T_RENAME_TRAIN_VEHICLE :{WHITE}Kan ikke gi tog/vogn nytt navn...
|
||||
STR_CLEAR_TIME :{BLACK}Nullstill tid
|
||||
@@ -2886,7 +2903,7 @@ STR_CITIZENS_CELEBRATE_FIRST_PASSENGER_TRAM :{BLACK}{BIGFONT
|
||||
STR_CITIZENS_CELEBRATE_FIRST_CARGO_TRAM :{BLACK}{BIGFONT}Borgerne jubler . . .{}Første frakttrikk ankommer {STATION}!
|
||||
STR_9031_ROAD_VEHICLE_CRASH_DRIVER :{BLACK}{BIGFONT}Kollisjon!{}Sjåfør dør etter kollisjon med tog
|
||||
STR_9032_ROAD_VEHICLE_CRASH_DIE :{BLACK}{BIGFONT}Kollisjon!{}{COMMA} dør etter kollisjon med tog
|
||||
STR_ERROR_CAN_T_REVERSE_DIRECTION_RAIL_VEHICLE_MULTIPLE_UNITS :{WHITE}Kan ikke snu kjøretøy som består av flere deler
|
||||
STR_ERROR_CAN_T_MAKE_ROAD_VEHICLE_TURN :{WHITE}Kan ikke snu kjøretøy...
|
||||
STR_9034_RENAME :{BLACK}Endre navn
|
||||
STR_9035_RENAME_ROAD_VEHICLE_TYPE :{BLACK}Endre navnet til kjøretøytypen
|
||||
STR_9036_RENAME_ROAD_VEHICLE_TYPE :{WHITE}Endre navnet til kjøretøytypen
|
||||
@@ -3113,6 +3130,7 @@ STR_NEWGRF_ERROR_UNEXPECTED_SPRITE :Uforventet spri
|
||||
STR_NEWGRF_ERROR_UNKNOWN_PROPERTY :Ukjent hendelse 0 eiendom.
|
||||
STR_NEWGRF_ERROR_INVALID_ID :Forsøk å bruke ugyldig ID.
|
||||
STR_NEWGRF_ERROR_CORRUPT_SPRITE :{YELLOW}{STRING} inneholder en ødelagt grafikk. All ødelagt grafikk vil bli vist som røde spørsmålstegn (?).
|
||||
STR_NEWGRF_ERROR_MULTIPLE_ACTION_8 :Inneholder flere "Action 8" oppføringer
|
||||
|
||||
STR_NEWGRF_PRESET_LIST_TIP :{BLACK}Last den valgte fastsette på forhånd
|
||||
STR_NEWGRF_PRESET_SAVE :{BLACK}Lagre fastsette på forhånd
|
||||
@@ -3153,6 +3171,9 @@ STR_NEWGRF_BROKEN :{WHITE}Oppførs
|
||||
STR_NEWGRF_BROKEN_VEHICLE_LENGTH :{WHITE}Det endrer kjøretøyets lengde for '{1:ENGINE}' når ikke i ett depo.
|
||||
STR_BROKEN_VEHICLE_LENGTH :{WHITE}Tog '{VEHICLE}' tilhører '{COMPANY}' har ugyldig lengde. Det er sannsynligvis forårsaket av problemer med ny grafikk. Spillet kan desynkronisere eller kollidere.
|
||||
|
||||
STR_NEWGRF_BUGGY :{WHITE}NewGRF '{0:STRING}' utgir ukorrekt informasjon.
|
||||
STR_NEWGRF_BUGGY_ARTICULATED_CARGO :{WHITE}Gods-/ombygningsinformasjon 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 loop i produksjonstilbakekallet.
|
||||
STR_LOADGAME_REMOVED_TRAMS :{WHITE}Spillet ble lagret i versjon uten trikk støtte. Alle trikker har blitt fjernet.
|
||||
|
||||
STR_CURRENCY_WINDOW :{WHITE}Vanlig valuta
|
||||
@@ -3344,6 +3365,7 @@ STR_NORTHWEST :{BLACK}Nordvest
|
||||
STR_NORTHEAST :{BLACK}Nordøst
|
||||
STR_SOUTHEAST :{BLACK}Sørøst
|
||||
STR_SOUTHWEST :{BLACK}Sørvest
|
||||
STR_BORDER_FREEFORM :{BLACK}Friform
|
||||
STR_BORDER_WATER :{BLACK}Sjø
|
||||
STR_BORDER_RANDOM :{BLACK}Tilfeldig
|
||||
STR_BORDER_RANDOMIZE :{BLACK}Tilfeldig
|
||||
@@ -3539,6 +3561,9 @@ STR_OSK_KEYBOARD_LAYOUT_CAPS :~!@#$%^&*()_+|Q
|
||||
STR_AI_SETTINGS_BUTTON :{BLACK}AI instillinger
|
||||
STR_AI_SETTINGS_BUTTON_TIP :{BLACK}Vis AI instillinger
|
||||
STR_AI_DEBUG :{WHITE}AI feilsøking
|
||||
STR_AI_DEBUG_NAME_TIP :{BLACK}Navnet til AIen
|
||||
STR_AI_DEBUG_RELOAD :{BLACK}Last inn AI på nytt
|
||||
STR_AI_DEBUG_RELOAD_TIP :{BLACK}Slå av AI, last skript på nytt, og start AI på nytt
|
||||
STR_AI_DEBUG_SERVER_ONLY :{YELLOW}AI feilsøkingsvidu er kun tilgjengelig for serveren
|
||||
STR_AI_CONFIG_CAPTION :{WHITE}AI konfigurasjon
|
||||
STR_AI_CHANGE :{BLACK}Velg AI
|
||||
|
@@ -153,7 +153,7 @@ STR_ABBREV_PLASTIC :{TINYFONT}ПЛ
|
||||
STR_ABBREV_FIZZY_DRINKS :{TINYFONT}ГЗ
|
||||
STR_ABBREV_NONE :{TINYFONT}НЕТ
|
||||
STR_ABBREV_ALL :{TINYFONT}Все
|
||||
STR_00AE :{WHITE}{DATE_SHORT}
|
||||
STR_00AE :{WHITE}{DATE_SHORT} г.
|
||||
STR_00AF :{WHITE}{DATE_LONG}
|
||||
STR_00B0_MAP :{WHITE}Карта - {STRING}
|
||||
STR_00B1_GAME_OPTIONS :{WHITE}Настройки игры
|
||||
@@ -1015,7 +1015,7 @@ STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_OFF :Выкл.
|
||||
STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING :{LTBLUE}Скроллинг по клику левой кнопкой мыши: {ORANGE}{STRING}
|
||||
|
||||
STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES :{LTBLUE}Использовать {ORANGE}{STRING}{LTBLUE} формат даты для имён сохранений
|
||||
STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_LONG :длинный (31-е дек 2008)
|
||||
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)
|
||||
|
||||
@@ -1569,7 +1569,7 @@ STR_100C_MAGLEV_CONSTRUCTION :{WHITE}Магн
|
||||
STR_100D_SELECT_RAIL_BRIDGE :{WHITE}Выберите железнодорожный мост
|
||||
STR_100E_CAN_T_BUILD_TRAIN_DEPOT :{WHITE}Здесь невозможно построить депо...
|
||||
STR_100F_CAN_T_BUILD_RAILROAD_STATION :{WHITE}Здесь невозможно построить станцию...
|
||||
STR_1010_CAN_T_BUILD_SIGNALS_HERE :{WHITE}Здесь невозможно построить светофор...
|
||||
STR_1010_CAN_T_BUILD_SIGNALS_HERE :{WHITE}Здесь невозможно поставить светофор...
|
||||
STR_1011_CAN_T_BUILD_RAILROAD_TRACK :{WHITE}Здесь невозможно проложить рельсы...
|
||||
STR_1012_CAN_T_REMOVE_RAILROAD_TRACK :{WHITE}Невозможно удалить рельсы...
|
||||
STR_1013_CAN_T_REMOVE_SIGNALS_FROM :{WHITE}Невозможно удалить светофор...
|
||||
@@ -1911,14 +1911,14 @@ STR_4007_GAME_SAVE_FAILED :{WHITE}Нево
|
||||
STR_4008_UNABLE_TO_DELETE_FILE :{WHITE}Невозможно удалить файл
|
||||
STR_4009_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_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_400A_LIST_OF_DRIVES_DIRECTORIES :{BLACK}Список дисков, папок и сохраненных игр
|
||||
STR_400A_LIST_OF_DRIVES_DIRECTORIES :{BLACK}Список дисков, папок и сохранённых игр
|
||||
STR_400B_CURRENTLY_SELECTED_NAME :{BLACK}Выбранное имя для сохранения игры
|
||||
STR_400C_DELETE_THE_CURRENTLY_SELECTED :{BLACK}Удалить выбранную сохраненную игру
|
||||
STR_400C_DELETE_THE_CURRENTLY_SELECTED :{BLACK}Удалить выбранную сохранённую игру
|
||||
STR_400D_SAVE_THE_CURRENT_GAME_USING :{BLACK}Сохранить игру, используя выбранное имя
|
||||
STR_4010_GENERATE_RANDOM_NEW_GAME :Сгенерировать случайную карту
|
||||
STR_LOAD_HEIGHTMAP :{WHITE}Загрузить карту
|
||||
@@ -2010,31 +2010,31 @@ STR_BRIDGEHEADS_NOT_SAME_HEIGHT :{WHITE}Опор
|
||||
STR_BRIDGE_TOO_LOW_FOR_TERRAIN :{WHITE}Слишком низкий мост
|
||||
STR_500A_START_AND_END_MUST_BE_IN :{WHITE}Начало и конец должны быть на одной линии
|
||||
STR_500B_SITE_UNSUITABLE_FOR_TUNNEL :{WHITE}Неподходящее место для строительства туннеля
|
||||
STR_500D :{GOLD}{STRING},{} {VELOCITY} {WHITE}{CURRENCY}
|
||||
STR_500E_SUSPENSION_STEEL :Подвесной, Стальной
|
||||
STR_500F_GIRDER_STEEL :Балочный, Стальной
|
||||
STR_5010_CANTILEVER_STEEL :Консольный, Стальной
|
||||
STR_5011_SUSPENSION_CONCRETE :Подвесной, Бетонный
|
||||
STR_500D :{GOLD}{STRING}{}{VELOCITY}; {WHITE}{CURRENCY}
|
||||
STR_500E_SUSPENSION_STEEL :Висячий стальной
|
||||
STR_500F_GIRDER_STEEL :Балочный стальной
|
||||
STR_5010_CANTILEVER_STEEL :Консольный стальной
|
||||
STR_5011_SUSPENSION_CONCRETE :Висячий бетонный
|
||||
STR_5012_WOODEN :Деревянный
|
||||
STR_5013_CONCRETE :Бетонный
|
||||
STR_5014_TUBULAR_STEEL :Трубчатый, Стальной
|
||||
STR_BRIDGE_TUBULAR_SILICON :Трубчатый, Силиконовый
|
||||
STR_5014_TUBULAR_STEEL :Трубчатый стальной
|
||||
STR_BRIDGE_TUBULAR_SILICON :Трубчатый силиконовый
|
||||
STR_5015_CAN_T_BUILD_BRIDGE_HERE :{WHITE}Здесь невозможно построить мост...
|
||||
STR_5016_CAN_T_BUILD_TUNNEL_HERE :{WHITE}Здесь невозможно построить туннель...
|
||||
STR_5017_RAILROAD_TUNNEL :Железнодорожный туннель
|
||||
STR_5018_ROAD_TUNNEL :Автомобильный туннель
|
||||
STR_501B_STEEL_SUSPENSION_RAIL_BRIDGE :Стальной подвесной ж/д мост
|
||||
STR_501B_STEEL_SUSPENSION_RAIL_BRIDGE :Стальной висячий ж/д мост
|
||||
STR_501C_STEEL_GIRDER_RAIL_BRIDGE :Стальной балочный ж/д мост
|
||||
STR_501D_STEEL_CANTILEVER_RAIL_BRIDGE :Стальной консольный ж/д мост
|
||||
STR_501E_REINFORCED_CONCRETE_SUSPENSION :Укреплённый подвесной железобетонный ж/д мост
|
||||
STR_501E_REINFORCED_CONCRETE_SUSPENSION :Железобетонный висячий ж/д мост
|
||||
STR_501F_WOODEN_RAIL_BRIDGE :Деревянный ж/д мост
|
||||
STR_5020_CONCRETE_RAIL_BRIDGE :Бетонный ж/д мост
|
||||
STR_5021_STEEL_SUSPENSION_ROAD_BRIDGE :Стальной подвесной мост
|
||||
STR_5022_STEEL_GIRDER_ROAD_BRIDGE :Стальной балочный мост
|
||||
STR_5023_STEEL_CANTILEVER_ROAD_BRIDGE :Стальной консольный мост
|
||||
STR_5024_REINFORCED_CONCRETE_SUSPENSION :Укреплённый подвесной железобетонный мост
|
||||
STR_5025_WOODEN_ROAD_BRIDGE :Деревянный мост
|
||||
STR_5026_CONCRETE_ROAD_BRIDGE :Бетонный мост
|
||||
STR_5021_STEEL_SUSPENSION_ROAD_BRIDGE :Стальной висячий автомобильный мост
|
||||
STR_5022_STEEL_GIRDER_ROAD_BRIDGE :Стальной балочный автомобильный мост
|
||||
STR_5023_STEEL_CANTILEVER_ROAD_BRIDGE :Стальной консольный автомобильный мост
|
||||
STR_5024_REINFORCED_CONCRETE_SUSPENSION :Железобетонный висячий автомобильный мост
|
||||
STR_5025_WOODEN_ROAD_BRIDGE :Деревянный автомобильный мост
|
||||
STR_5026_CONCRETE_ROAD_BRIDGE :Бетонный автомобильный мост
|
||||
STR_5027_TUBULAR_RAIL_BRIDGE :Трубчатый ж/д мост
|
||||
STR_5028_TUBULAR_ROAD_BRIDGE :Трубчатый автомобильный мост
|
||||
|
||||
@@ -2182,20 +2182,20 @@ STR_700A_COMPANY_NAME :Компани
|
||||
STR_700B_PRESIDENT_S_NAME :Имя директора
|
||||
STR_700C_CAN_T_CHANGE_COMPANY_NAME :{WHITE}Невозможно изменить название компании...
|
||||
STR_700D_CAN_T_CHANGE_PRESIDENT :{WHITE}Невозможно изменить имя директора...
|
||||
STR_700E_FINANCES :{WHITE}{COMPANY} Денежные средства {BLACK}{COMPANYNUM}
|
||||
STR_700E_FINANCES :{WHITE}Финансы - {COMPANY} {BLACK}{COMPANYNUM}
|
||||
STR_700F_EXPENDITURE_INCOME :{WHITE}Расход/доход
|
||||
STR_7010 :{WHITE}{NUM}
|
||||
STR_7011_CONSTRUCTION :{GOLD}Строительство
|
||||
STR_7012_NEW_VEHICLES :{GOLD}Новая техника
|
||||
STR_7013_TRAIN_RUNNING_COSTS :{GOLD}Обслуживание ж/д
|
||||
STR_7014_ROAD_VEH_RUNNING_COSTS :{GOLD}Обслуживание авто
|
||||
STR_7015_AIRCRAFT_RUNNING_COSTS :{GOLD}Обслуживание авиа
|
||||
STR_7016_SHIP_RUNNING_COSTS :{GOLD}Обслуживание кораблей
|
||||
STR_7015_AIRCRAFT_RUNNING_COSTS :{GOLD}Обслуж. авиатранспорта
|
||||
STR_7016_SHIP_RUNNING_COSTS :{GOLD}Обслуж. кораблей
|
||||
STR_7017_PROPERTY_MAINTENANCE :{GOLD}Обслуж. собственности
|
||||
STR_7018_TRAIN_INCOME :{GOLD}Доход от ж/д
|
||||
STR_7019_ROAD_VEHICLES_INCOME :{GOLD}Доход от автотранспорта
|
||||
STR_7019_ROAD_VEHICLES_INCOME :{GOLD}Доход от авто
|
||||
STR_701A_AIRCRAFT_INCOME :{GOLD}Доход от авиации
|
||||
STR_701B_SHIP_INCOME :{GOLD}Доход от водного транспорта
|
||||
STR_701B_SHIP_INCOME :{GOLD}Доход от кораблей
|
||||
STR_701C_LOAN_INTEREST :{GOLD}Проценты по займу
|
||||
STR_701D_OTHER :{GOLD}Прочие расходы
|
||||
STR_701E :{BLACK}-{CURRENCY}
|
||||
@@ -2518,9 +2518,9 @@ STR_80AD_RMT_RUBBER_TRUCK :Грузови
|
||||
STR_80AE_MIGHTYMOVER_SUGAR_TRUCK :Грузовик MightyMover (сахар)
|
||||
STR_80AF_POWERNAUGHT_SUGAR_TRUCK :Грузовик Powernaught (сахар)
|
||||
STR_80B0_WIZZOWOW_SUGAR_TRUCK :Грузовик Wizzowow (сахар)
|
||||
STR_80B1_MIGHTYMOVER_COLA_TRUCK :Грузовик MightyMover (кола)
|
||||
STR_80B2_POWERNAUGHT_COLA_TRUCK :Грузовик Powernaught (кола)
|
||||
STR_80B3_WIZZOWOW_COLA_TRUCK :Грузовик Wizzowow (кола)
|
||||
STR_80B1_MIGHTYMOVER_COLA_TRUCK :Цистерна MightyMover (кола)
|
||||
STR_80B2_POWERNAUGHT_COLA_TRUCK :Цистерна Powernaught (кола)
|
||||
STR_80B3_WIZZOWOW_COLA_TRUCK :Цистерна Wizzowow (кола)
|
||||
STR_80B4_MIGHTYMOVER_COTTON_CANDY :Грузовик MightyMover (сах. вата)
|
||||
STR_80B5_POWERNAUGHT_COTTON_CANDY :Грузовик Powernaught (сах. вата)
|
||||
STR_80B6_WIZZOWOW_COTTON_CANDY_TRUCK :Грузовик Wizzowow (сах. вата)
|
||||
@@ -2531,7 +2531,7 @@ STR_80BA_MIGHTYMOVER_TOY_VAN :Грузови
|
||||
STR_80BB_POWERNAUGHT_TOY_VAN :Грузовик Powernaught (игрушки)
|
||||
STR_80BC_WIZZOWOW_TOY_VAN :Грузовик Wizzowow (игрушки)
|
||||
STR_80BD_MIGHTYMOVER_CANDY_TRUCK :Грузовик MightyMover (конфеты)
|
||||
STR_80BE_POWERNAUGHT_CANDY_TRUCK :Powernaught Грузовик (конфеты)
|
||||
STR_80BE_POWERNAUGHT_CANDY_TRUCK :Грузовик Powernaught (конфеты)
|
||||
STR_80BF_WIZZOWOW_CANDY_TRUCK :Грузовик Wizzowow (конфеты)
|
||||
STR_80C0_MIGHTYMOVER_BATTERY_TRUCK :Грузовик MightyMover (батарейки)
|
||||
STR_80C1_POWERNAUGHT_BATTERY_TRUCK :Грузовик Powernaught (батарейки)
|
||||
@@ -2598,7 +2598,7 @@ STR_80FD_TRICARIO_HELICOPTER :Вертолё
|
||||
STR_80FE_GURU_X2_HELICOPTER :Вертолёт Guru X2
|
||||
STR_80FF_POWERNAUT_HELICOPTER :Вертолёт Powernaut
|
||||
STR_8100_MESSAGE_FROM_VEHICLE_MANUFACTURE :{WHITE}Сообщение от производителя транспорта
|
||||
STR_8101_WE_HAVE_JUST_DESIGNED_A :{GOLD}Мы создали новый {STRING}. Заинтересованы ли вы в его годовом эксклюзивном использовании для проверки перед запуском в серийное производство?
|
||||
STR_8101_WE_HAVE_JUST_DESIGNED_A :{GOLD}Мы создали новую модель {STRING}. Заинтересованы ли вы в его годовом эксклюзивном использовании для проверки перед запуском в серийное производство?
|
||||
STR_8102_RAILROAD_LOCOMOTIVE :ж/д локомотив
|
||||
STR_8103_ROAD_VEHICLE :автомобиль
|
||||
STR_8104_AIRCRAFT :авиатранспорт
|
||||
@@ -2721,7 +2721,7 @@ STR_881D_NEW_MONORAIL_VEHICLES :{WHITE}Новы
|
||||
STR_881E_NEW_MAGLEV_VEHICLES :{WHITE}Новый магниторельс
|
||||
STR_ALL_AVAIL_RAIL_VEHICLES :{WHITE}Поезда
|
||||
|
||||
STR_881F_BUILD_VEHICLE :{BLACK}Построить
|
||||
STR_881F_BUILD_VEHICLE :{BLACK}Купить
|
||||
STR_CLONE_ROAD_VEHICLE :{BLACK}Копировать
|
||||
STR_CLONE_ROAD_VEHICLE_INFO :{BLACK}Создаёт копию автомобиля. Control+щелчок копирует задания
|
||||
STR_CLONE_ROAD_VEHICLE_DEPOT_INFO :{BLACK}Создаёт копию автомобиля. Щёлкнуть на кнопке и затем на машине внутри или снаружи гаража. Control+щелчок копирует и задания
|
||||
@@ -2744,7 +2744,7 @@ STR_ORDER_VIEW_TOOLTIP :{BLACK}Пере
|
||||
STR_8829_ORDERS :{WHITE}{VEHICLE} (Задания)
|
||||
STR_882A_END_OF_ORDERS :{SETX 10}- - Конец заданий - -
|
||||
STR_SERVICE :{BLACK}Обслуж.
|
||||
STR_882B_CAN_T_BUILD_RAILROAD_VEHICLE :{WHITE}Невозможно построить ж/д транспорт...
|
||||
STR_882B_CAN_T_BUILD_RAILROAD_VEHICLE :{WHITE}Невозможно купить ж/д транспорт...
|
||||
STR_882C_BUILT_VALUE :{LTBLUE}{ENGINE}{BLACK} Построен в {LTBLUE}{NUM} г.{BLACK} Стоимость: {LTBLUE}{CURRENCY}
|
||||
STR_882D_VALUE :{LTBLUE}{ENGINE}{BLACK} Стоимость: {LTBLUE}{CURRENCY}
|
||||
STR_882E :{WHITE}{VEHICLE}
|
||||
@@ -2773,11 +2773,11 @@ STR_883C_SERVICING_INTERVAL_DAYS :{BLACK}Осмо
|
||||
STR_SERVICING_INTERVAL_PERCENT :{BLACK}Интервал обслуж.: {LTBLUE}{COMMA}%{BLACK} Последний раз: {LTBLUE}{DATE_LONG}
|
||||
STR_883D_TRAINS_CLICK_ON_TRAIN_FOR :{BLACK}Поезда - нажмите для получения справки
|
||||
STR_883F_TRAINS_CLICK_ON_TRAIN_FOR :{BLACK}Поезда - кликните для получения информации, используйте перетаскивание для изменения состава
|
||||
STR_8840_BUILD_NEW_TRAIN_VEHICLE :{BLACK}Построить новый поезд
|
||||
STR_8840_BUILD_NEW_TRAIN_VEHICLE :{BLACK}Купить новый поезд
|
||||
STR_8841_DRAG_TRAIN_VEHICLE_TO_HERE :{BLACK}Перетащите сюда транспорт, чтобы продать его
|
||||
STR_8842_CENTER_MAIN_VIEW_ON_TRAIN :{BLACK}Показать депо в основном окне
|
||||
STR_8843_TRAIN_VEHICLE_SELECTION :{BLACK}Выбор вагонов - кликните для справки
|
||||
STR_8844_BUILD_THE_HIGHLIGHTED_TRAIN :{BLACK}Построить выделенный вагон
|
||||
STR_8844_BUILD_THE_HIGHLIGHTED_TRAIN :{BLACK}Купить выбранный локомотив/вагон
|
||||
STR_8845_RENAME_TRAIN_VEHICLE_TYPE :{BLACK}Переименовать тип вагона
|
||||
STR_8846_CURRENT_TRAIN_ACTION_CLICK :{BLACK}Текущее действие поезда; кликните для его остановки/запуска
|
||||
STR_8847_SHOW_TRAIN_S_ORDERS :{BLACK}Показать задания
|
||||
@@ -2858,8 +2858,8 @@ STR_9002 :{WHITE}{VEHICLE
|
||||
STR_9003_ROAD_VEHICLE_DEPOT :{WHITE}Гараж {TOWN}
|
||||
STR_9004_NEW_VEHICLES :{BLACK}Новая машина
|
||||
STR_9006_NEW_ROAD_VEHICLES :{WHITE}Новая машина
|
||||
STR_9007_BUILD_VEHICLE :{BLACK}Построить
|
||||
STR_9009_CAN_T_BUILD_ROAD_VEHICLE :{WHITE}Невозможно построить машину...
|
||||
STR_9007_BUILD_VEHICLE :{BLACK}Купить
|
||||
STR_9009_CAN_T_BUILD_ROAD_VEHICLE :{WHITE}Невозможно купить машину...
|
||||
STR_900C_DETAILS :{WHITE}{VEHICLE} (Детали)
|
||||
STR_900D_AGE_RUNNING_COST_YR :{BLACK}Возраст: {LTBLUE}{STRING}{BLACK} Цена обслуживания: {LTBLUE}{CURRENCY}/год
|
||||
STR_900E_MAX_SPEED :{BLACK}Макс. скорость: {LTBLUE}{VELOCITY}
|
||||
@@ -2885,11 +2885,11 @@ STR_901F_SEND_VEHICLE_TO_DEPOT :{BLACK}Отпр
|
||||
STR_9020_FORCE_VEHICLE_TO_TURN_AROUND :{BLACK}Принудительно развернуть автомобиль
|
||||
STR_9021_SHOW_ROAD_VEHICLE_DETAILS :{BLACK}Показать информацию об автомобиле
|
||||
STR_9022_VEHICLES_CLICK_ON_VEHICLE :{BLACK}Автомобили - кликните для получения справки
|
||||
STR_9023_BUILD_NEW_ROAD_VEHICLE :{BLACK}Построить новый автомобиль
|
||||
STR_9023_BUILD_NEW_ROAD_VEHICLE :{BLACK}Купить новый автомобиль
|
||||
STR_9024_DRAG_ROAD_VEHICLE_TO_HERE :{BLACK}Перетащите сюда автомобиль, чтобы продать его
|
||||
STR_9025_CENTER_MAIN_VIEW_ON_ROAD :{BLACK}Показать гараж в главном окне
|
||||
STR_9026_ROAD_VEHICLE_SELECTION :{BLACK}Список автотранспорта - кликните для получения информации
|
||||
STR_9027_BUILD_THE_HIGHLIGHTED_ROAD :{BLACK}Построить выделенный автомобиль
|
||||
STR_9027_BUILD_THE_HIGHLIGHTED_ROAD :{BLACK}Купить выбранный автомобиль
|
||||
STR_902A_COST_SPEED_RUNNING_COST :{BLACK}Цена: {CURRENCY}{}Скорость: {VELOCITY}{}Стоимость обслуживания: {CURRENCY}/год{}Емкость: {CARGO}
|
||||
STR_ARTICULATED_RV_CAPACITY :{BLACK}Ёмкость: {LTBLUE}
|
||||
STR_BARE_CARGO :{CARGO}
|
||||
@@ -2928,12 +2928,12 @@ STR_9804_NEW_SHIPS :{BLACK}Ново
|
||||
STR_9805_SHIPS :{WHITE}{COMPANY} - {COMMA} корабл{P ь я ей}
|
||||
STR_9808_NEW_SHIPS :{WHITE}Покупка кораблей
|
||||
STR_9809_BUILD_SHIP :{BLACK}Купить
|
||||
STR_CLONE_SHIP :{BLACK}Копировать судно
|
||||
STR_CLONE_SHIP :{BLACK}Копировать
|
||||
STR_CLONE_SHIP_INFO :{BLACK}Создаёт копию корабля. Control+клик копирует задания
|
||||
STR_CLONE_SHIP_DEPOT_INFO :{BLACK}Создаёт копию корабля. Щёлкнуть на кнопке и затем на корабле внутри или снаружи дока. Control+клик копирует задания
|
||||
STR_980B_SHIP_MUST_BE_STOPPED_IN :{WHITE}Корабль должен быть остановлен в доке
|
||||
STR_980C_CAN_T_SELL_SHIP :{WHITE}Невозможно продать корабль...
|
||||
STR_980D_CAN_T_BUILD_SHIP :{WHITE}Невозможно построить корабль...
|
||||
STR_980D_CAN_T_BUILD_SHIP :{WHITE}Невозможно купить корабль...
|
||||
STR_980E_SHIP_IN_THE_WAY :{WHITE}Корабль на пути
|
||||
STR_980F :{WHITE}{VEHICLE}
|
||||
STR_9811_DETAILS :{WHITE}{VEHICLE} (Детали)
|
||||
@@ -2954,12 +2954,12 @@ STR_981C_SHIP_IS_WAITING_IN_DEPOT :{WHITE}{VEHICLE
|
||||
STR_981D_BUILD_SHIP_DOCK :{BLACK}Строительство пристаней
|
||||
STR_981E_BUILD_SHIP_DEPOT_FOR_BUILDING :{BLACK}Строительство доков (для строительства и обслуживания кораблей)
|
||||
STR_981F_SHIPS_CLICK_ON_SHIP_FOR :{BLACK}Корабли - нажмите для получения справки
|
||||
STR_9820_BUILD_NEW_SHIP :{BLACK}Построить новый корабль
|
||||
STR_9820_BUILD_NEW_SHIP :{BLACK}Купить новый корабль
|
||||
STR_9821_DRAG_SHIP_TO_HERE_TO_SELL :{BLACK}Перетащите сюда корабль, чтобы продать его
|
||||
STR_9822_CENTER_MAIN_VIEW_ON_SHIP :{BLACK}Показать док в основном окне
|
||||
STR_9823_SHIPS_CLICK_ON_SHIP_FOR :{BLACK}Корабли - нажмите для получения справки
|
||||
STR_9825_SHIP_SELECTION_LIST_CLICK :{BLACK}Список кораблей - нажмите для получения справки
|
||||
STR_9826_BUILD_THE_HIGHLIGHTED_SHIP :{BLACK}Построить выбранный корабль
|
||||
STR_9826_BUILD_THE_HIGHLIGHTED_SHIP :{BLACK}Купить выбранный корабль
|
||||
STR_9827_CURRENT_SHIP_ACTION_CLICK :{BLACK}Текущее действие корабля; кликните для его остановки/запуска
|
||||
STR_9828_SHOW_SHIP_S_ORDERS :{BLACK}Показать задания
|
||||
STR_9829_CENTER_MAIN_VIEW_ON_SHIP :{BLACK}Показать корабль в главном окне
|
||||
@@ -2996,10 +2996,10 @@ STR_A002_AIRCRAFT_HANGAR :{WHITE}Анга
|
||||
STR_A003_NEW_AIRCRAFT :{BLACK}Новое судно
|
||||
STR_CLONE_AIRCRAFT :{BLACK}Копировать
|
||||
STR_CLONE_AIRCRAFT_INFO :{BLACK}Создаёт копию самолёта. Control+клик - копирует задания
|
||||
STR_CLONE_AIRCRAFT_INFO_HANGAR_WINDOW :{BLACK}Построить копию возд. судна. Нажмите на кнопку, а потом на возд. судно в/вне ангара. Ctrl+click - также скопирует и задание.
|
||||
STR_CLONE_AIRCRAFT_INFO_HANGAR_WINDOW :{BLACK}Создаёт копию самолёта. Нажмите на кнопку, а потом на возд. судно в/вне ангара. Ctrl+click - также скопирует и задание.
|
||||
STR_A005_NEW_AIRCRAFT :{WHITE}Новый
|
||||
STR_A006_BUILD_AIRCRAFT :{BLACK}Построить
|
||||
STR_A008_CAN_T_BUILD_AIRCRAFT :{WHITE}Невозможно построить возд. транспорт...
|
||||
STR_A006_BUILD_AIRCRAFT :{BLACK}Купить
|
||||
STR_A008_CAN_T_BUILD_AIRCRAFT :{WHITE}Невозможно купить возд. транспорт...
|
||||
STR_A009_AIRCRAFT :{WHITE}{COMPANY} - {COMMA} единиц{P а ы ""} авиатранспорта
|
||||
STR_A00A :{WHITE}{VEHICLE}
|
||||
STR_A00C_DETAILS :{WHITE}{VEHICLE} (Детали)
|
||||
@@ -3021,15 +3021,14 @@ STR_A019_CAPACITY :{BLACK}Емко
|
||||
STR_A01A_CAPACITY :{BLACK}Емкость: {LTBLUE}{CARGO}{SKIP}{SKIP}{STRING}
|
||||
STR_A01B_AIRCRAFT_MUST_BE_STOPPED :{WHITE}Самолёт должен быть остановлен в ангаре
|
||||
STR_A01C_CAN_T_SELL_AIRCRAFT :{WHITE}Не могу продать авиатранспорт...
|
||||
STR_A01D_AIRPORT_CONSTRUCTION :Строительство аэропорта
|
||||
STR_A01D_AIRPORT_CONSTRUCTION :Строительство аэропортов
|
||||
STR_A01E_BUILD_AIRPORT :{BLACK}Строительство аэропортов
|
||||
STR_A01F_AIRCRAFT_CLICK_ON_AIRCRAFT :{BLACK}Авиатранспорт - нажмите для получения справки
|
||||
STR_A021_AIRCRAFT_CLICK_ON_AIRCRAFT :{BLACK}Авиатранспорт - нажмите для получения справки
|
||||
STR_A022_BUILD_NEW_AIRCRAFT :{BLACK}Построить новый авиатранспорт
|
||||
STR_A022_BUILD_NEW_AIRCRAFT :{BLACK}Купить новый авиатранспорт
|
||||
STR_A023_DRAG_AIRCRAFT_TO_HERE_TO :{BLACK}Перетащите сюда транспорт, чтобы продать его
|
||||
STR_A024_CENTER_MAIN_VIEW_ON_HANGAR :{BLACK}Показать ангар в главном окне
|
||||
STR_A025_AIRCRAFT_SELECTION_LIST :{BLACK}Авиатранспорт - нажмите для получения справки
|
||||
STR_A026_BUILD_THE_HIGHLIGHTED_AIRCRAFT :{BLACK}Построить выделенный авиатранспорт
|
||||
STR_A026_BUILD_THE_HIGHLIGHTED_AIRCRAFT :{BLACK}Купить выбранный авиатранспорт
|
||||
STR_A027_CURRENT_AIRCRAFT_ACTION :{BLACK}Текущее действие воздушного судна; кликните для его остановки/запуска
|
||||
STR_A028_SHOW_AIRCRAFT_S_ORDERS :{BLACK}Показать задания
|
||||
STR_A029_CENTER_MAIN_VIEW_ON_AIRCRAFT :{BLACK}Показать транспорт в главном окне
|
||||
@@ -3387,8 +3386,8 @@ STR_HELIDEPOT :{BLACK}Верт
|
||||
STR_HELISTATION :{BLACK}Вертолётная станция
|
||||
|
||||
STR_SMALL_AIRPORTS :{BLACK}Малые аэропорты
|
||||
STR_LARGE_AIRPORTS :{BLACK}Большие аэропорты
|
||||
STR_HUB_AIRPORTS :{BLACK}Базовые аэропорты
|
||||
STR_LARGE_AIRPORTS :{BLACK}Средние аэропорты
|
||||
STR_HUB_AIRPORTS :{BLACK}Большие аэропорты
|
||||
STR_HELIPORTS :{BLACK}Вертолётные площадки
|
||||
|
||||
############ Tooltip measurment
|
||||
@@ -3599,12 +3598,12 @@ STR_STATION_NOISE :{BLACK}Прои
|
||||
############ Downloading of content from the central server
|
||||
STR_CONTENT_NO_ZLIB :{WHITE}OpenTTD собрана без поддержки библиотеки «zlib»...
|
||||
STR_CONTENT_NO_ZLIB_SUB :{WHITE}...загрузка контента невозможна!
|
||||
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_GRAPHICS :{G=f}Базовая графика
|
||||
STR_CONTENT_TYPE_NEWGRF :{G=m}NewGRF
|
||||
STR_CONTENT_TYPE_AI :{G=m}ИИ
|
||||
STR_CONTENT_TYPE_AI_LIBRARY :{G=f}Библиотека ИИ
|
||||
STR_CONTENT_TYPE_SCENARIO :{G=m}Сценарий
|
||||
STR_CONTENT_TYPE_HEIGHTMAP :{G=f}Карта высот
|
||||
STR_CONTENT_TITLE :{WHITE}Загрузка контента
|
||||
STR_CONTENT_TYPE_CAPTION :{BLACK}Тип
|
||||
STR_CONTENT_TYPE_CAPTION_TIP :{BLACK}Тип контента
|
||||
@@ -3629,7 +3628,7 @@ 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_UPDATE :{SILVER}Он заменит уже имеющ{G ий ую ее ие}ся {STRING}
|
||||
STR_CONTENT_DETAIL_NAME :{SILVER}Наименование: {WHITE}{STRING}
|
||||
STR_CONTENT_DETAIL_VERSION :{SILVER}Версия: {WHITE}{STRING}
|
||||
STR_CONTENT_DETAIL_DESCRIPTION :{SILVER}Описание: {WHITE}{STRING}
|
||||
|
@@ -275,22 +275,55 @@ STR_QUANTITY_MAIZE :{WEIGHT} kukuru
|
||||
STR_QUANTITY_FRUIT :{WEIGHT} voća
|
||||
STR_QUANTITY_DIAMONDS :{COMMA} džak{P "" a ova} dijamanata
|
||||
STR_QUANTITY_FOOD :{WEIGHT} hrane
|
||||
STR_QUANTITY_PAPER :{WEIGHT} nad papir
|
||||
STR_QUANTITY_PAPER :{WEIGHT} papira
|
||||
STR_QUANTITY_GOLD :{COMMA} džak{P "" a ova} zlata
|
||||
STR_QUANTITY_WATER :{VOLUME} nad voda
|
||||
STR_QUANTITY_WHEAT :{WEIGHT} nad pšenica
|
||||
STR_QUANTITY_RUBBER :{VOLUME} nad guma
|
||||
STR_QUANTITY_SUGAR :{WEIGHT} nad zasladiti
|
||||
STR_QUANTITY_WATER :{VOLUME} vode
|
||||
STR_QUANTITY_WHEAT :{WEIGHT} pšenice
|
||||
STR_QUANTITY_RUBBER :{VOLUME} gume
|
||||
STR_QUANTITY_SUGAR :{WEIGHT} šećera
|
||||
STR_QUANTITY_TOYS :{COMMA} igrač{P ka ke aka}
|
||||
STR_QUANTITY_SWEETS :{COMMA} džak{P "" a ova} slatkiša
|
||||
STR_QUANTITY_COLA :{VOLUME} nad kola
|
||||
STR_QUANTITY_CANDYFLOSS :{WEIGHT} nad candyfloss
|
||||
STR_QUANTITY_BUBBLES :{COMMA} mehur{P "" a ova}
|
||||
STR_QUANTITY_TOFFEE :{WEIGHT} nad karamela
|
||||
STR_QUANTITY_COLA :{VOLUME} kole
|
||||
STR_QUANTITY_CANDYFLOSS :{WEIGHT} šećerne vune
|
||||
STR_QUANTITY_BUBBLES :{COMMA} balon{P "" a a}
|
||||
STR_QUANTITY_TOFFEE :{WEIGHT} karamele
|
||||
STR_QUANTITY_BATTERIES :{COMMA} baterij{P a e a}
|
||||
STR_QUANTITY_PLASTIC :{VOLUME} nad plastika
|
||||
STR_QUANTITY_PLASTIC :{VOLUME} plastike
|
||||
STR_QUANTITY_FIZZY_DRINKS :{COMMA} gaziran{P o a a} pić{P 0 e a a}
|
||||
STR_ABBREV_NOTHING :
|
||||
STR_ABBREV_PASSENGERS :{TINYFONT}PS
|
||||
STR_ABBREV_COAL :{TINYFONT}CL
|
||||
STR_ABBREV_MAIL :{TINYFONT}ML
|
||||
STR_ABBREV_OIL :{TINYFONT}OL
|
||||
STR_ABBREV_LIVESTOCK :{TINYFONT}LV
|
||||
STR_ABBREV_GOODS :{TINYFONT}GD
|
||||
STR_ABBREV_GRAIN :{TINYFONT}GR
|
||||
STR_ABBREV_WOOD :{TINYFONT}WD
|
||||
STR_ABBREV_IRON_ORE :{TINYFONT}OR
|
||||
STR_ABBREV_STEEL :{TINYFONT}ST
|
||||
STR_ABBREV_VALUABLES :{TINYFONT}VL
|
||||
STR_ABBREV_COPPER_ORE :{TINYFONT}CO
|
||||
STR_ABBREV_MAIZE :{TINYFONT}MZ
|
||||
STR_ABBREV_FRUIT :{TINYFONT}FT
|
||||
STR_ABBREV_DIAMONDS :{TINYFONT}DM
|
||||
STR_ABBREV_FOOD :{TINYFONT}FD
|
||||
STR_ABBREV_PAPER :{TINYFONT}PR
|
||||
STR_ABBREV_GOLD :{TINYFONT}GD
|
||||
STR_ABBREV_WATER :{TINYFONT}WR
|
||||
STR_ABBREV_WHEAT :{TINYFONT}WH
|
||||
STR_ABBREV_RUBBER :{TINYFONT}RB
|
||||
STR_ABBREV_SUGAR :{TINYFONT}SG
|
||||
STR_ABBREV_TOYS :{TINYFONT}TY
|
||||
STR_ABBREV_SWEETS :{TINYFONT}SW
|
||||
STR_ABBREV_COLA :{TINYFONT}CL
|
||||
STR_ABBREV_CANDYFLOSS :{TINYFONT}CF
|
||||
STR_ABBREV_BUBBLES :{TINYFONT}BU
|
||||
STR_ABBREV_TOFFEE :{TINYFONT}TF
|
||||
STR_ABBREV_BATTERIES :{TINYFONT}BA
|
||||
STR_ABBREV_PLASTIC :{TINYFONT}PL
|
||||
STR_ABBREV_FIZZY_DRINKS :{TINYFONT}FZ
|
||||
STR_ABBREV_NONE :{TINYFONT}NO
|
||||
STR_ABBREV_ALL :{TINYFONT}ALL
|
||||
STR_00AE :{WHITE}{DATE_SHORT}
|
||||
STR_00AF :{WHITE}{DATE_LONG}
|
||||
STR_00B0_MAP :{WHITE}Mapa - {STRING}
|
||||
@@ -300,13 +333,13 @@ STR_00B3_MESSAGE_FROM :{YELLOW}{STRING
|
||||
STR_POPUP_CAUTION_CAPTION :{WHITE}Oprez!
|
||||
STR_00B4_CAN_T_DO_THIS :{WHITE}Neizvodljivo...
|
||||
STR_00B5_CAN_T_CLEAR_THIS_AREA :{WHITE}Područje ne može biti očišćeno...
|
||||
STR_00B6_ORIGINAL_COPYRIGHT :{BLACK}Original copyright {COPYRIGHT} 1995 Chris Sawyer, All rights reserved
|
||||
STR_00B6_ORIGINAL_COPYRIGHT :{BLACK}Originalni kopirajt {COPYRIGHT} 1995 Chris Sawyer, Sva prava zadržana
|
||||
STR_00B7_VERSION :{BLACK}OpenTTD verzija {REV}
|
||||
STR_00BA_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2006 OpenTTD tim
|
||||
|
||||
STR_00C5 :{BLACK}{CROSS}
|
||||
STR_00C6 :{SILVER}{CROSS}
|
||||
STR_00C7_QUIT :{WHITE}Napusti
|
||||
STR_00C7_QUIT :{WHITE}Izađi
|
||||
STR_00C8_YES :{BLACK}Da
|
||||
STR_00C9_NO :{BLACK}Ne
|
||||
STR_00CA_ARE_YOU_SURE_YOU_WANT_TO :{YELLOW}Da li ste sigurni da želite da napustite OpenTTD i vratite se u {STRING}?
|
||||
@@ -327,7 +360,7 @@ STR_00D8_DARK_GREEN :Tamno zelena
|
||||
STR_00D9_BLUE :Plava
|
||||
STR_00DA_CREAM :Krem
|
||||
STR_00DB_MAUVE :Lavanda
|
||||
STR_00DC_PURPLE :Purpurna
|
||||
STR_00DC_PURPLE :Ljubičasta
|
||||
STR_00DD_ORANGE :Narandžasta
|
||||
STR_00DE_BROWN :Braon
|
||||
STR_00DF_GREY :Siva
|
||||
@@ -377,7 +410,7 @@ STR_012A_DESERT :{BLACK}{TINYFON
|
||||
STR_012B_SNOW :{BLACK}{TINYFONT}Sneg
|
||||
STR_012C_MESSAGE :{WHITE}Poruka
|
||||
STR_012D :{WHITE}{STRING}
|
||||
STR_DEFAULT :{BLACK}Propust
|
||||
STR_DEFAULT :{BLACK}Prvobitno
|
||||
STR_012E_CANCEL :{BLACK}Otkaži
|
||||
STR_012F_OK :{BLACK}OK
|
||||
STR_0130_RENAME :{BLACK}Preimenuj
|
||||
@@ -396,18 +429,18 @@ STR_013B_OWNED_BY :{WHITE}...je u
|
||||
STR_013C_CARGO :{BLACK}Tovar
|
||||
STR_013D_INFORMATION :{BLACK}Informacija
|
||||
STR_013E_CAPACITIES :{BLACK}Kapaciteti
|
||||
STR_TOTAL_CARGO :{BLACK}Zbir Tovar
|
||||
STR_TOTAL_CARGO :{BLACK}Ukupni tovar
|
||||
STR_013F_CAPACITY :{BLACK}Kapacitet: {LTBLUE}{CARGO}{STRING}
|
||||
STR_CAPACITY_MULT :{BLACK}Kapacitet: {LTBLUE}{CARGO}{STRING} (x{NUM})
|
||||
STR_TOTAL_CAPACITY_TEXT :{BLACK}Zbir tovar kapacitet nad ova trenirati:
|
||||
STR_TOTAL_CAPACITY_TEXT :{BLACK}Ukupan kapacitet ovog voza:
|
||||
STR_TOTAL_CAPACITY :{LTBLUE}- {CARGO} ({SHORTCARGO})
|
||||
STR_TOTAL_CAPACITY_MULT :{LTBLUE}- {CARGO} ({SHORTCARGO}) (x{NUM})
|
||||
STR_0140_NEW_GAME :{BLACK}Nova igra
|
||||
STR_0141_LOAD_GAME :{BLACK}Učitaj igru
|
||||
STR_MULTIPLAYER :{BLACK}Mreža igra
|
||||
STR_SCENARIO_EDITOR :{BLACK}Scenarij Urednik
|
||||
STR_MULTIPLAYER :{BLACK}Mrežna igra
|
||||
STR_SCENARIO_EDITOR :{BLACK}Editor scenarija
|
||||
|
||||
STR_MAPSIZE :{BLACK}Karta veličina:
|
||||
STR_MAPSIZE :{BLACK}Veličina mapa:
|
||||
STR_BY :{BLACK}*
|
||||
STR_0148_GAME_OPTIONS :{BLACK}Opcije
|
||||
|
||||
@@ -418,7 +451,7 @@ STR_UNITS_METRIC :Metrički
|
||||
STR_UNITS_SI :SI
|
||||
|
||||
STR_UNITS_VELOCITY_IMPERIAL :{COMMA} milja na sat
|
||||
STR_UNITS_VELOCITY_METRIC :{COMMA} kilometar na sat
|
||||
STR_UNITS_VELOCITY_METRIC :{COMMA} km/h
|
||||
STR_UNITS_VELOCITY_SI :{COMMA} m/s
|
||||
|
||||
STR_UNITS_POWER_IMPERIAL :{COMMA}ks
|
||||
@@ -434,7 +467,7 @@ 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_METRIC :{COMMA} lit{P ar ra ara}
|
||||
STR_UNITS_VOLUME_LONG_SI :{COMMA} m³
|
||||
|
||||
STR_UNITS_FORCE_SI :{COMMA} kN
|
||||
@@ -447,7 +480,7 @@ STR_0157_PERFORMANCE_HISTORY_GRAPH :Grafikon istori
|
||||
STR_0158_COMPANY_VALUE_GRAPH :Grafikon vrednosti kompanije
|
||||
STR_0159_CARGO_PAYMENT_RATES :Stope naplate tovara
|
||||
STR_015A_COMPANY_LEAGUE_TABLE :Tabela lige kompanija
|
||||
STR_PERFORMANCE_DETAIL_MENU :Detaljan pergled poslovanja
|
||||
STR_PERFORMANCE_DETAIL_MENU :Detaljan pregled poslovanja
|
||||
############ range for menu ends
|
||||
|
||||
STR_015B_OPENTTD :{WHITE}O OpenTTD-u
|
||||
@@ -462,25 +495,25 @@ STR_SORT_CRITERIA_TIP :{BLACK}Odaberit
|
||||
STR_SORT_BY :{BLACK}Sortiraj po
|
||||
|
||||
STR_SORT_BY_POPULATION :{BLACK}Naseljenost
|
||||
STR_SORT_BY_PRODUCTION :Proizvodnja
|
||||
STR_SORT_BY_TYPE :Vrsta
|
||||
STR_SORT_BY_PRODUCTION :Proizvodnji
|
||||
STR_SORT_BY_TYPE :Vrsti
|
||||
STR_SORT_BY_TRANSPORTED :Transportovano
|
||||
STR_SORT_BY_NAME :{BLACK}Ime
|
||||
STR_SORT_BY_DROPDOWN_NAME :Ime
|
||||
STR_SORT_BY_DATE :{BLACK}Datum
|
||||
STR_SORT_BY_NUMBER :Broj
|
||||
STR_SORT_BY_PROFIT_LAST_YEAR :Zarada prošle godine
|
||||
STR_SORT_BY_PROFIT_THIS_YEAR :Zarada ove godine
|
||||
STR_SORT_BY_AGE :Starost
|
||||
STR_SORT_BY_RELIABILITY :Pouzdanost
|
||||
STR_SORT_BY_TOTAL_CAPACITY_PER_CARGOTYPE :Ukupna nosivost po vrsti tovara
|
||||
STR_SORT_BY_DROPDOWN_NAME :Imenu
|
||||
STR_SORT_BY_DATE :{BLACK}Datumu
|
||||
STR_SORT_BY_NUMBER :Broju
|
||||
STR_SORT_BY_PROFIT_LAST_YEAR :Zaradi prošle godine
|
||||
STR_SORT_BY_PROFIT_THIS_YEAR :Zaradi ove godine
|
||||
STR_SORT_BY_AGE :Starosti
|
||||
STR_SORT_BY_RELIABILITY :Pouzdanosti
|
||||
STR_SORT_BY_TOTAL_CAPACITY_PER_CARGOTYPE :Ukupnoj nosivosti po vrsti tovara
|
||||
STR_SORT_BY_MAX_SPEED :Nejvećoj brzini
|
||||
STR_SORT_BY_MODEL :Model
|
||||
STR_SORT_BY_VALUE :Vrednost
|
||||
STR_SORT_BY_LENGTH :Dužina
|
||||
STR_SORT_BY_LIFE_TIME :Preostao životni vek
|
||||
STR_SORT_BY_FACILITY :Vrsta stanice
|
||||
STR_SORT_BY_WAITING :Vrednost tovara na čekanju
|
||||
STR_SORT_BY_MODEL :Modelu
|
||||
STR_SORT_BY_VALUE :Vrednosti
|
||||
STR_SORT_BY_LENGTH :Dužini
|
||||
STR_SORT_BY_LIFE_TIME :Preostalom životnom veku
|
||||
STR_SORT_BY_FACILITY :Vrsti stanice
|
||||
STR_SORT_BY_WAITING :Vrednosti tovara na čekanju
|
||||
STR_SORT_BY_RATING_MAX :Kvalitet usluge
|
||||
STR_ENGINE_SORT_ENGINE_ID :ID mašine (standardno)
|
||||
STR_ENGINE_SORT_COST :Cena
|
||||
@@ -794,7 +827,7 @@ STR_0299_SAVE_SCENARIO :{WHITE}Sačuvaj
|
||||
STR_029A_PLAY_SCENARIO :{BLACK}Igraj scenario
|
||||
STR_PLAY_HEIGHTMAP :{BLACK}Igra Visina
|
||||
STR_PLAY_HEIGHTMAP_HINT :{BLACK}Start jedan nov igra , pomoću jedan visina ace krajolik
|
||||
STR_QUIT_SCENARIO_QUERY :{YELLOW}Biti te siguran te oskudica za slobodan današji scenarij?
|
||||
STR_QUIT_SCENARIO_QUERY :{YELLOW}Da li ste sigurni da želite da izađete iz ovog scenarija?
|
||||
STR_029D_CAN_ONLY_BE_BUILT_IN_TOWNS :{WHITE}...dozvoljeno izgraditi samo u naseljima sa populacijom od najmanje 1200
|
||||
STR_029E_MOVE_THE_STARTING_DATE :{BLACK}Pomeranje datuma početka za jednu godinu unazad
|
||||
STR_029F_MOVE_THE_STARTING_DATE :{BLACK}Pomeranje datuma početka za jednu godinu unapred
|
||||
@@ -1314,8 +1347,8 @@ STR_SUB_TROPICAL_LANDSCAPE :Suptropski klim
|
||||
STR_TOYLAND_LANDSCAPE :Zemlja igračaka
|
||||
|
||||
STR_CHEATS :{WHITE}Varanja
|
||||
STR_CHEATS_TIP :{BLACK}Štiklirano polje označava da ste i renije koristili ovu opciju
|
||||
STR_CHEATS_WARNING :{BLACK}Upozorenje! Upravo ćete revariti vaše saradnike. Imajte na umu da će takav loš postupak biti trajno upamćen.
|
||||
STR_CHEATS_TIP :{BLACK}Štiklirano polje označava da ste i ranije koristili ovu opciju
|
||||
STR_CHEATS_WARNING :{BLACK}Upozorenje! Upravo ćete prevariti vaše saradnike. Imajte na umu da će takav loš postupak biti trajno upamćen.
|
||||
STR_CHEAT_MONEY :{LTBLUE}Dodati još {CURRENCY}
|
||||
STR_CHEAT_CHANGE_COMPANY :{LTBLUE}Upravljanje kompanijom: {ORANGE}{COMMA}
|
||||
STR_CHEAT_EXTRA_DYNAMITE :{LTBLUE}Magični buldožer (uklonite industrije, nepokretnosti): {ORANGE}{STRING}
|
||||
@@ -1907,14 +1940,14 @@ STR_204A_BUILD_STATUE_OF_COMPANY :Izgradnja statu
|
||||
STR_204B_FUND_NEW_BUILDINGS :Finansiranje novih zgrada
|
||||
STR_204C_BUY_EXCLUSIVE_TRANSPORT :Kupovina ekskluzivnih prava na transport
|
||||
STR_TOWN_BRIBE_THE_LOCAL_AUTHORITY :Podmićivanje lokalne vlasti
|
||||
STR_204D_INITIATE_A_SMALL_LOCAL :{WHITE}{STRING}{}{YELLOW} Ulaganje u manju reklamnu kampanju će doneti kompaniji više putnika i robe iz ovog naselja.{} Trošak: {CURRENCY}
|
||||
STR_204E_INITIATE_A_MEDIUM_LOCAL :{WHITE}{STRING}{}{YELLOW} Ulaganje u reklamnu kampanju srednjeg budžeta će doneti kompaniji više putnika i robe iz ovog naselja.{} Trošak: {CURRENCY}
|
||||
STR_204F_INITIATE_A_LARGE_LOCAL :{WHITE}{STRING}{}{YELLOW} Ulaganje u veliku reklamnu kampanju će doneti kompaniji više putnika i robe iz ovog naselja.{} Trošak: {CURRENCY}
|
||||
STR_2050_FUND_THE_RECONSTRUCTION :{WHITE}{STRING}{}{YELLOW} Finansiranje rekonstrukcije lokalne mreže puteva. Može prouzrokovati kolaps u drumskom saobraćaju u trajanju do 6 meseci.{} Trošak: {CURRENCY}
|
||||
STR_204D_INITIATE_A_SMALL_LOCAL :{WHITE}{STRING}{}{YELLOW} Ulaganje u malu reklamnu kampanju će doneti kompaniji više putnika i robe iz ovog naselja.{} Trošak: {CURRENCY}
|
||||
STR_204E_INITIATE_A_MEDIUM_LOCAL :{WHITE}{STRING}{}{YELLOW} Ulaganje u reklamnu kampanju srednje veličine će doneti kompaniji više putnika i robe iz ovog naselja.{} Trošak: {CURRENCY}
|
||||
STR_204F_INITIATE_A_LARGE_LOCAL :{WHITE}{STRING}{}{YELLOW} Ulaganje u veliku reklamnu kampanju će doneti kompaniji više putnika i robe iz ovog naselja.{} Trošak: {CURRENCY}
|
||||
STR_2050_FUND_THE_RECONSTRUCTION :{WHITE}{STRING}{}{YELLOW} Finansiranje rekonstrukcije lokalne mreže puteva. Može prouzrokovati kolaps u drumskom saobraćaju u trajanju do 6 meseci.{} Trošak: {CURRENCY}
|
||||
STR_2051_BUILD_A_STATUE_IN_HONOR :{WHITE}{STRING}{}{YELLOW} Otkrivanje spomenika kompanije.{} Trošak: {CURRENCY}
|
||||
STR_2052_FUND_THE_CONSTRUCTION_OF :{WHITE}{STRING}{}{YELLOW} Finansiranje izgradnje novih komercijalnih objekata u naselju.{} Trošak: {CURRENCY}
|
||||
STR_2053_BUY_1_YEAR_S_EXCLUSIVE :{WHITE}{STRING}{}{YELLOW} Kupovina ekskluzivnih transportnih prava od lokalne vlasti, osigurava da će lokalni korisnici transporta koristiti isključivo usluge kompanije. Prava ističu nakon godinu dana.{} Trošak: {CURRENCY}
|
||||
STR_TOWN_BRIBE_THE_LOCAL_AUTHORITY_DESC :{WHITE}{STRING}{}{YELLOW} Krumpiranje lokalne vlasti kako bi porastao rejting vaše kompanije, uz rizik velike štete ukoliko se otkrije.{} Cena: {CURRENCY}
|
||||
STR_2053_BUY_1_YEAR_S_EXCLUSIVE :{WHITE}{STRING}{}{YELLOW} Kupovina ekskluzivnih transportnih prava od lokalne vlasti na godinu dana, osigurava da će lokalni korisnici transporta koristiti isključivo usluge vaše kompanije.{} Trošak: {CURRENCY}
|
||||
STR_TOWN_BRIBE_THE_LOCAL_AUTHORITY_DESC :{WHITE}{STRING}{}{YELLOW} Davanje mita lokalnoj vlasti kako bi porastao rejting vaše kompanije, uz rizik velike štete ukoliko se otkrije.{} Cena: {CURRENCY}
|
||||
STR_2055_TRAFFIC_CHAOS_IN_ROAD_REBUILDING :{BIGFONT}{BLACK}{TOWN} - haos na ulicama!{}{}Program rekonstrukcije puteva sponzorisan od strane kompanije {STRING} donosi vozačima 6 meseci agonije!
|
||||
STR_2056 :{TINYFONT}{WHITE}{TOWN}
|
||||
STR_2057 :{ORANGE}{TOWN}{BLACK} ({COMMA})
|
||||
@@ -2578,6 +2611,7 @@ STR_8050_TOY_VAN :Vagon za Igrač
|
||||
STR_8051_BATTERY_TRUCK :Vagon za Baterije
|
||||
STR_8052_FIZZY_DRINK_TRUCK :Vagon za Bezalkoholna Pića
|
||||
STR_8053_PLASTIC_TRUCK :Vagon za Plastiku
|
||||
STR_8054_LEV1_LEVIATHAN_ELECTRIC :Lev1 'Leviathan' (Electric)
|
||||
STR_8059_PASSENGER_CAR :Putnička Kola
|
||||
STR_805A_MAIL_VAN :Poštanski Vagon
|
||||
STR_805B_COAL_CAR :Vagon za Ugalj
|
||||
@@ -3146,10 +3180,10 @@ STR_CURRENCY_CHANGE_PARAMETER :{BLACK}Promena
|
||||
############ End of list of rail types
|
||||
|
||||
|
||||
STR_PURCHASE_INFO_SPEED_POWER :{BLACK}Brzina: {GOLD}{VELOCITY}{BLACK} Snaga: {GOLD}{POWER}
|
||||
STR_PURCHASE_INFO_SPEED_POWER :{BLACK}Brzina: {GOLD}{VELOCITY}{BLACK} Snaga: {GOLD}{POWER}
|
||||
STR_PURCHASE_INFO_SPEED :{BLACK}Brzina: {GOLD}{VELOCITY}
|
||||
STR_PURCHASE_INFO_RUNNINGCOST :{BLACK}Cena odrzavanja: {GOLD}{CURRENCY}/yr
|
||||
STR_PURCHASE_INFO_WEIGHT_CWEIGHT :{BLACK}Tezina: {GOLD}{WEIGHT_S} ({WEIGHT_S})
|
||||
STR_PURCHASE_INFO_WEIGHT_CWEIGHT :{BLACK}Težina: {GOLD}{WEIGHT_S} ({WEIGHT_S})
|
||||
|
||||
########### For showing numbers in widgets
|
||||
|
||||
|
@@ -11,7 +11,7 @@
|
||||
STR_NULL :
|
||||
STR_0001_OFF_EDGE_OF_MAP :{WHITE}超过地图边界
|
||||
STR_0002_TOO_CLOSE_TO_EDGE_OF_MAP :{WHITE}距离地图边界过近
|
||||
STR_0003_NOT_ENOUGH_CASH_REQUIRES :{WHITE}没有足够的资金 - 需要 {CURRENCY}
|
||||
STR_0003_NOT_ENOUGH_CASH_REQUIRES :{WHITE}资金不足 - 需要 {CURRENCY}
|
||||
STR_0004 :{WHITE}{CURRENCY}
|
||||
STR_EMPTY :
|
||||
STR_0007_FLAT_LAND_REQUIRED :{WHITE}需要平坦的地面
|
||||
@@ -32,7 +32,7 @@ STR_0015_GRAIN :谷物
|
||||
STR_0016_WOOD :木材
|
||||
STR_0017_IRON_ORE :铁矿石
|
||||
STR_0018_STEEL :钢材
|
||||
STR_0019_VALUABLES :金块
|
||||
STR_0019_VALUABLES :贵重品
|
||||
STR_001A_COPPER_ORE :铜矿石
|
||||
STR_001B_MAIZE :玉米
|
||||
STR_001C_FRUIT :水果
|
||||
@@ -87,35 +87,35 @@ STR_004C_PLASTIC :塑料
|
||||
STR_004D_FIZZY_DRINK :跳跳水
|
||||
STR_QUANTITY_NOTHING :
|
||||
STR_QUANTITY_PASSENGERS :{COMMA} 位旅客
|
||||
STR_QUANTITY_COAL :{WEIGHT}煤炭
|
||||
STR_QUANTITY_COAL :{WEIGHT} 煤炭
|
||||
STR_QUANTITY_MAIL :{COMMA} 包邮件
|
||||
STR_QUANTITY_OIL :{VOLUME}原油
|
||||
STR_QUANTITY_OIL :{VOLUME} 原油
|
||||
STR_QUANTITY_LIVESTOCK :{COMMA} 头牲畜
|
||||
STR_QUANTITY_GOODS :{COMMA} 件货物
|
||||
STR_QUANTITY_GRAIN :{WEIGHT}谷物
|
||||
STR_QUANTITY_WOOD :{WEIGHT}木材
|
||||
STR_QUANTITY_IRON_ORE :{WEIGHT}铁矿石
|
||||
STR_QUANTITY_STEEL :{WEIGHT}钢材
|
||||
STR_QUANTITY_VALUABLES :{COMMA} 包金块
|
||||
STR_QUANTITY_COPPER_ORE :{WEIGHT}铜矿石
|
||||
STR_QUANTITY_MAIZE :{WEIGHT}玉米
|
||||
STR_QUANTITY_FRUIT :{WEIGHT}水果
|
||||
STR_QUANTITY_GRAIN :{WEIGHT} 谷物
|
||||
STR_QUANTITY_WOOD :{WEIGHT} 木材
|
||||
STR_QUANTITY_IRON_ORE :{WEIGHT} 铁矿石
|
||||
STR_QUANTITY_STEEL :{WEIGHT} 钢材
|
||||
STR_QUANTITY_VALUABLES :{COMMA} 包贵重品
|
||||
STR_QUANTITY_COPPER_ORE :{WEIGHT} 铜矿石
|
||||
STR_QUANTITY_MAIZE :{WEIGHT} 玉米
|
||||
STR_QUANTITY_FRUIT :{WEIGHT} 水果
|
||||
STR_QUANTITY_DIAMONDS :{COMMA} 包钻石
|
||||
STR_QUANTITY_FOOD :{WEIGHT}食品
|
||||
STR_QUANTITY_PAPER :{WEIGHT}纸张
|
||||
STR_QUANTITY_FOOD :{WEIGHT} 食品
|
||||
STR_QUANTITY_PAPER :{WEIGHT} 纸张
|
||||
STR_QUANTITY_GOLD :{COMMA} 包黄金
|
||||
STR_QUANTITY_WATER :{VOLUME}饮用水
|
||||
STR_QUANTITY_WHEAT :{WEIGHT}小麦
|
||||
STR_QUANTITY_RUBBER :{VOLUME}橡胶
|
||||
STR_QUANTITY_SUGAR :{WEIGHT}蔗糖
|
||||
STR_QUANTITY_WATER :{VOLUME} 饮用水
|
||||
STR_QUANTITY_WHEAT :{WEIGHT} 小麦
|
||||
STR_QUANTITY_RUBBER :{VOLUME} 橡胶
|
||||
STR_QUANTITY_SUGAR :{WEIGHT} 蔗糖
|
||||
STR_QUANTITY_TOYS :{COMMA} 件玩具
|
||||
STR_QUANTITY_SWEETS :{COMMA} 包糖果
|
||||
STR_QUANTITY_COLA :{VOLUME}可乐
|
||||
STR_QUANTITY_CANDYFLOSS :{WEIGHT}棉花糖
|
||||
STR_QUANTITY_COLA :{VOLUME} 可乐
|
||||
STR_QUANTITY_CANDYFLOSS :{WEIGHT} 棉花糖
|
||||
STR_QUANTITY_BUBBLES :{COMMA} 个泡泡
|
||||
STR_QUANTITY_TOFFEE :{WEIGHT}太妃糖
|
||||
STR_QUANTITY_TOFFEE :{WEIGHT} 太妃糖
|
||||
STR_QUANTITY_BATTERIES :{COMMA} 箱电池
|
||||
STR_QUANTITY_PLASTIC :{VOLUME}塑料
|
||||
STR_QUANTITY_PLASTIC :{VOLUME} 塑料
|
||||
STR_QUANTITY_FIZZY_DRINKS :{COMMA} 瓶跳跳水
|
||||
STR_ABBREV_NOTHING :
|
||||
STR_ABBREV_PASSENGERS :{TINYFONT}客
|
||||
@@ -128,7 +128,7 @@ STR_ABBREV_GRAIN :{TINYFONT}谷
|
||||
STR_ABBREV_WOOD :{TINYFONT}木
|
||||
STR_ABBREV_IRON_ORE :{TINYFONT}铁
|
||||
STR_ABBREV_STEEL :{TINYFONT}钢
|
||||
STR_ABBREV_VALUABLES :{TINYFONT}金
|
||||
STR_ABBREV_VALUABLES :{TINYFONT}贵
|
||||
STR_ABBREV_COPPER_ORE :{TINYFONT}铜
|
||||
STR_ABBREV_MAIZE :{TINYFONT}黍
|
||||
STR_ABBREV_FRUIT :{TINYFONT}果
|
||||
@@ -177,22 +177,22 @@ STR_00CE_4 :{BLACK}4
|
||||
STR_00CF_5 :{BLACK}5
|
||||
STR_00D0_NOTHING :无
|
||||
STR_00D1_DARK_BLUE :深蓝色
|
||||
STR_00D2_PALE_GREEN :粉绿色
|
||||
STR_00D2_PALE_GREEN :浅绿色
|
||||
STR_00D3_PINK :粉红色
|
||||
STR_00D4_YELLOW :明黄色
|
||||
STR_00D5_RED :红 色
|
||||
STR_00D5_RED :红 色
|
||||
STR_00D6_LIGHT_BLUE :淡蓝色
|
||||
STR_00D7_GREEN :绿 色
|
||||
STR_00D7_GREEN :绿 色
|
||||
STR_00D8_DARK_GREEN :深绿色
|
||||
STR_00D9_BLUE :蓝 色
|
||||
STR_00D9_BLUE :蓝 色
|
||||
STR_00DA_CREAM :奶油色
|
||||
STR_00DB_MAUVE :深紫色
|
||||
STR_00DC_PURPLE :紫 色
|
||||
STR_00DC_PURPLE :紫 色
|
||||
STR_00DD_ORANGE :橘黄色
|
||||
STR_00DE_BROWN :棕 色
|
||||
STR_00DE_BROWN :棕 色
|
||||
STR_00DF_GREY :浅灰色
|
||||
STR_00E0_WHITE :白 色
|
||||
STR_00E1_TOO_MANY_VEHICLES_IN_GAME :{WHITE}游戏中的车辆太多了
|
||||
STR_00E0_WHITE :白 色
|
||||
STR_00E1_TOO_MANY_VEHICLES_IN_GAME :{WHITE}游戏中的车辆过多
|
||||
STR_00E2 :{BLACK}{COMMA}
|
||||
STR_00E3 :{RED}{COMMA}
|
||||
STR_00E4_LOCATION :{BLACK}定位
|
||||
@@ -201,7 +201,7 @@ STR_00E6_VEHICLES :车辆
|
||||
STR_00E7_INDUSTRIES :工业
|
||||
STR_00E8_ROUTES :路线
|
||||
STR_00E9_VEGETATION :植被
|
||||
STR_00EA_OWNERS :公司所属
|
||||
STR_00EA_OWNERS :所有者
|
||||
STR_00EB_ROADS :{BLACK}{TINYFONT}公路
|
||||
STR_00EC_RAILROADS :{BLACK}{TINYFONT}铁路
|
||||
STR_00ED_STATIONS_AIRPORTS_DOCKS :{BLACK}{TINYFONT}车站/机场/码头
|
||||
@@ -259,7 +259,7 @@ STR_013E_CAPACITIES :{BLACK}运载
|
||||
STR_TOTAL_CARGO :{BLACK}全部货物
|
||||
STR_013F_CAPACITY :{BLACK}装载能力:{LTBLUE}{CARGO}{STRING}
|
||||
STR_CAPACITY_MULT :{BLACK}装载能力:{LTBLUE}{CARGO}{STRING} (x{NUM})
|
||||
STR_TOTAL_CAPACITY_TEXT :{BLACK}全车的运载量为:
|
||||
STR_TOTAL_CAPACITY_TEXT :{BLACK}全车的装载能力为:
|
||||
STR_TOTAL_CAPACITY :{LTBLUE}- {CARGO} ({SHORTCARGO})
|
||||
STR_TOTAL_CAPACITY_MULT :{LTBLUE}- {CARGO} ({SHORTCARGO}) (x{NUM})
|
||||
STR_0140_NEW_GAME :{BLACK}新游戏
|
||||
@@ -297,7 +297,7 @@ 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_FORCE_SI :{COMMA} 千牛
|
||||
|
||||
############ range for menu starts
|
||||
STR_0154_OPERATING_PROFIT_GRAPH :利润图表
|
||||
@@ -317,7 +317,7 @@ STR_015E_QUIT_GAME :放弃游戏
|
||||
STR_015F_QUIT :退出
|
||||
STR_ABANDON_GAME_QUERY :{YELLOW}你确定要放弃当前的游戏吗?
|
||||
STR_0161_QUIT_GAME :{WHITE}放弃游戏
|
||||
STR_SORT_ORDER_TIP :{BLACK}选择排序方法 (降序/升序)
|
||||
STR_SORT_ORDER_TIP :{BLACK}选择排序方法 (降序/升序)
|
||||
STR_SORT_CRITERIA_TIP :{BLACK}选择排序标准
|
||||
STR_SORT_BY :{BLACK}排序
|
||||
|
||||
@@ -342,7 +342,7 @@ STR_SORT_BY_LIFE_TIME :剩余寿命年
|
||||
STR_SORT_BY_FACILITY :车站类型
|
||||
STR_SORT_BY_WAITING :等待的货物数量
|
||||
STR_SORT_BY_RATING_MAX :货物评价
|
||||
STR_ENGINE_SORT_ENGINE_ID :引擎ID (默认方式)
|
||||
STR_ENGINE_SORT_ENGINE_ID :引擎ID (默认方式)
|
||||
STR_ENGINE_SORT_COST :售价
|
||||
STR_ENGINE_SORT_POWER :功率
|
||||
STR_ENGINE_SORT_INTRO_DATE :设计日期
|
||||
@@ -385,15 +385,15 @@ STR_016E :{TINYFONT}{STRI
|
||||
STR_016F :{TINYFONT}{STRING}{} {STRING}{}{NUM}
|
||||
STR_0170 :{TINYFONT}{STRING}-
|
||||
STR_0171_PAUSE_GAME :{BLACK}暂停游戏
|
||||
STR_0172_SAVE_GAME_ABANDON_GAME :{BLACK}保存游戏、放弃游戏等
|
||||
STR_0172_SAVE_GAME_ABANDON_GAME :{BLACK}保存游戏、放弃游戏、退出
|
||||
STR_0173_DISPLAY_LIST_OF_COMPANY :{BLACK}显示公司所有的车站列表
|
||||
STR_0174_DISPLAY_MAP :{BLACK}显示地图
|
||||
STR_0175_DISPLAY_MAP_TOWN_DIRECTORY :{BLACK}显示地图和城镇列表等
|
||||
STR_0174_DISPLAY_MAP :{BLACK}显示地图、附加视点或标志列表
|
||||
STR_0175_DISPLAY_MAP_TOWN_DIRECTORY :{BLACK}显示地图和城镇列表
|
||||
STR_0176_DISPLAY_TOWN_DIRECTORY :{BLACK}显示城镇列表
|
||||
STR_0177_DISPLAY_COMPANY_FINANCES :{BLACK}显示公司财务状况
|
||||
STR_0178_DISPLAY_COMPANY_GENERAL :{BLACK}显示公司综合信息
|
||||
STR_0179_DISPLAY_GRAPHS :{BLACK}显示图表
|
||||
STR_017A_DISPLAY_COMPANY_LEAGUE :{BLACK}显示公司评价表
|
||||
STR_017A_DISPLAY_COMPANY_LEAGUE :{BLACK}显示公司名次表
|
||||
STR_017B_DISPLAY_LIST_OF_COMPANY :{BLACK}显示公司的火车列表
|
||||
STR_017C_DISPLAY_LIST_OF_COMPANY :{BLACK}显示公司的汽车列表
|
||||
STR_017D_DISPLAY_LIST_OF_COMPANY :{BLACK}显示公司的船只列表
|
||||
@@ -412,20 +412,20 @@ STR_0189 :{BLACK}{SMALLDO
|
||||
STR_018A_CAN_T_CHANGE_SERVICING :{WHITE}不能改变保养周期……
|
||||
STR_018B_CLOSE_WINDOW :{BLACK}关闭窗口
|
||||
STR_018C_WINDOW_TITLE_DRAG_THIS :{BLACK}窗口标题 - 拖动这里可以移动该窗口
|
||||
STR_STICKY_BUTTON :{BLACK} 锁定窗口 当使用‘关闭所有窗口’{}快捷键(Del)时会保留锁定的窗口
|
||||
STR_RESIZE_BUTTON :{BLACK}点击并拖动这里可以放缩窗口
|
||||
STR_STICKY_BUTTON :{BLACK}锁定窗口 使用“关闭所有窗口”快捷键时保留此窗口
|
||||
STR_RESIZE_BUTTON :{BLACK}点击并拖动这里可以缩放窗口
|
||||
STR_SAVELOAD_HOME_BUTTON :{BLACK}点击这里返回默认的游戏存档目录
|
||||
STR_018D_DEMOLISH_BUILDINGS_ETC :{BLACK}拆除地块上的建筑物等设施
|
||||
STR_018E_LOWER_A_CORNER_OF_LAND :{BLACK}降低地块的一角
|
||||
STR_018F_RAISE_A_CORNER_OF_LAND :{BLACK}升高地块的一角
|
||||
STR_0190_SCROLL_BAR_SCROLLS_LIST :{BLACK}滚动条 - 可让列表上下滚动
|
||||
STR_HSCROLL_BAR_SCROLLS_LIST :{BLACK}滚动条 - 可让列表左右滚动
|
||||
STR_0191_SHOW_LAND_CONTOURS_ON_MAP :{BLACK}显示地形海拔高度
|
||||
STR_0190_SCROLL_BAR_SCROLLS_LIST :{BLACK}滚动条 - 上下滚动列表
|
||||
STR_HSCROLL_BAR_SCROLLS_LIST :{BLACK}滚动条 - 左右滚动列表
|
||||
STR_0191_SHOW_LAND_CONTOURS_ON_MAP :{BLACK}在地图上显示等高线
|
||||
STR_0192_SHOW_VEHICLES_ON_MAP :{BLACK}在地图上显示车辆
|
||||
STR_0193_SHOW_INDUSTRIES_ON_MAP :{BLACK}在地图上显示工业
|
||||
STR_0194_SHOW_TRANSPORT_ROUTES_ON :{BLACK}在地图上显示运输路线
|
||||
STR_0195_SHOW_VEGETATION_ON_MAP :{BLACK}在地图上显示植被分布
|
||||
STR_0196_SHOW_LAND_OWNERS_ON_MAP :{BLACK}显示各公司所属
|
||||
STR_0196_SHOW_LAND_OWNERS_ON_MAP :{BLACK}在地图上显示各公司所属
|
||||
STR_0197_TOGGLE_TOWN_NAMES_ON_OFF :{BLACK}切换是否显示城镇名称
|
||||
STR_0198_PROFIT_THIS_YEAR_LAST_YEAR :{TINYFONT}{BLACK}今年利润:{CURRENCY} (去年利润:{CURRENCY})
|
||||
|
||||
@@ -836,7 +836,7 @@ STR_OPTIONS_LANG_TIP :{BLACK}选择
|
||||
|
||||
STR_OPTIONS_FULLSCREEN :{BLACK}全屏幕
|
||||
STR_OPTIONS_FULLSCREEN_TIP :{BLACK}选择此项可以在全屏幕模式下进行 OpenTTD 游戏
|
||||
STR_FULLSCREEN_FAILED :{WHITE}无法切换到全屏模式
|
||||
STR_FULLSCREEN_FAILED :{WHITE}无法切换到全屏模式{}尝试使用不同的分辨率
|
||||
|
||||
STR_OPTIONS_RES :{BLACK}屏幕分辨率
|
||||
STR_OPTIONS_RES_CBO :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
|
||||
@@ -998,7 +998,7 @@ STR_CONFIG_SETTING_LIVERIES :{LTBLUE}显示
|
||||
STR_CONFIG_SETTING_LIVERIES_NONE :不显示
|
||||
STR_CONFIG_SETTING_LIVERIES_OWN :本公司
|
||||
STR_CONFIG_SETTING_LIVERIES_ALL :所有公司
|
||||
STR_CONFIG_SETTING_PREFER_TEAMCHAT :{LTBLUE}按下<ENTER> 时默认与团队交谈:{ORANGE}{STRING}
|
||||
STR_CONFIG_SETTING_PREFER_TEAMCHAT :{LTBLUE}使用<ENTER>与团队交谈:{ORANGE}{STRING}
|
||||
STR_CONFIG_SETTING_SCROLLWHEEL_SCROLLING :{LTBLUE}鼠标滚轮的作用:{ORANGE}{STRING}
|
||||
STR_CONFIG_SETTING_SCROLLWHEEL_ZOOM :缩放地图
|
||||
STR_CONFIG_SETTING_SCROLLWHEEL_SCROLL :滚动地图
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user