Compare commits

...

64 Commits

Author SHA1 Message Date
Patric Stout
9ae1726eed Update: Changelog for 1.9.0-RC2 and prepare for release 2019-03-24 17:16:15 +01:00
Patric Stout
3f0268b4b3 Update: translations backported from master 2019-03-24 17:16:15 +01:00
Patric Stout
cf7a1fc8c6 Revert: "Change: Allow AI companies to start immediately."
This reverts commit 011257dc88.

This commit was not working properly. Attempts are made to fix it,
but so close to 1.9, it sounds a lot better to revert it from the
1.9 branch, and keep developing it further in 1.10.
2019-03-24 17:16:15 +01:00
Patric Stout
7a9782e6f4 Revert: "Fix #7151: Hang when concurrently starting AIs in multiplayer, or with shift pressed."
This reverts commit b1e40b6b56.

This is a fix for a patch that will be reverted in the next commit.
2019-03-24 17:16:15 +01:00
Peter Nelson
6a1f217d30 Fix #7400: Water class for tree tiles was not converted for old saves preventing industry creation.
As the information is always available from the tree ground type, unconditionally
update the map array for tree tiles.
2019-03-24 17:16:15 +01:00
PeterN
174b0da90f Fix: Filtered file list did not scroll properly. (#7402) 2019-03-24 15:24:21 +01:00
Patric Stout
a2c4f9314d Update: translations backported from master 2019-03-24 15:24:21 +01:00
Patric Stout
652289972e Codechange: fix Intel C++ Compiler linking issues.
GetAircraftFlightLevel<Aircraft> is only used in static functions
inside aircraft_cmd.cpp. With GCC, Clang and MSVC this is not an
issue, but on ICC fails linking, because it doesn't find this
version of this template. Possibly these two pieces of information
are linked.
Explicit defining the function fixes the issue.
2019-03-24 15:24:21 +01:00
Patric Stout
0a5b3b955c Fix: [AzurePipelines] vcpkg is now preinstalled on Windows images
So instead of integrating our own, we only copy our precompiled
binaries into the right folder.
2019-03-24 15:24:21 +01:00
peter1138
79d2acff24 Fix 4da83d2f66: Remove measurement tooltips when completed. 2019-03-24 15:24:21 +01:00
Michael Lutz
e3a082ce7c Fix #7391, 9b99b95: Don't invalidate go to depot orders of non-aircraft when invalidating hangar orders that happen to share IDs.
This was caused because hangars are referred to by station ID, which is not unique with respect to depot IDs.
2019-03-24 15:24:21 +01:00
peter1138
213c490e73 Fix #7384: Industry Chain tooltips did not display on right-click.
This is fixed by handling the new Window::OnTooltip() event instead of OnHover()
2019-03-24 15:24:21 +01:00
peter1138
4e17e2bc6e Codechange: Implement OnTooltip event for custom window tooltips.
This avoids windows from needing to know or care about tooltip delay settings.
2019-03-24 15:24:21 +01:00
peter1138
56a69f1de7 Fix #7386: Measurement tooltip for tunnels, aqueducts & docks did not display or flickered.
Measurement tooltip was auto-closed as the hover/right-click test for tooltips was not
satisfied in this case. This is fixed by keeping the tooltip visible and instead explicitly
closing the tooltip when the PlaceObject is cancelled/completed.
2019-03-24 15:24:21 +01:00
Peter Nelson
64726d5213 Fix: Bounds check NewGRF feature. 2019-03-24 15:24:21 +01:00
Peter Nelson
712936745a Codechange: NewGRF features are documented in hex, so display as hex. 2019-03-24 15:24:21 +01:00
stormcone
2fb4575f5f Fix f58fa80e: Wrong company performance rating when money exceeds INT_MAX. (#7382)
Company performance rating calculation does not take into account the companies' money when those exceeds INT_MAX.
2019-03-24 15:24:21 +01:00
Jonathan G Rennison
5e9d39e8bc Change: Include _current_company in crashlog AI config line
_current_company is not currently logged anywhere in the crashlog.
_local_company is logged, despite being much less useful than
_current_company.
This change logs _current_company alongside _local_company.
2019-03-24 15:24:21 +01:00
peter1138
490d6ad51f Cleanup: Update changed string in language files. 2019-03-24 15:24:21 +01:00
peter1138
38e93182c5 Fix e66cec8f86: Permit loading of industry production callback with invalid cargo type.
It is only an error if the invalid result is actually used. This will be silently ignored at the moment.
It is still an error if a duplicate cargo type is returned.
2019-03-24 15:24:21 +01:00
glx
3a97b541af Fix: [AzurePipelines] run commit checker only for PRs 2019-03-24 15:24:21 +01:00
nikolas
80dd397ce4 Fix: spelling for a few real town names (#7338)
Added special characters to mostly Slovak towns, a few Spanish, and one Turkish.
2019-03-24 15:24:21 +01:00
PeterN
47596d3eda Fix: Runway too short for large aircraft message should not depend on plane crashes setting. (#7325) 2019-03-24 15:24:21 +01:00
glx22
f7f1efc84f Fix: [AzurePipelines] Run commit checker only for PRs and pass it the target branch (#7356) 2019-03-10 13:44:45 +01:00
glx
383e2d1082 Fix e4cc06f67: [AzurePipelines] rebase only for PRs 2019-03-10 13:44:45 +01:00
glx
aefe44e67e Fix: [AzurePipelines] don't assume master as target branch when rebasing PRs 2019-03-10 13:44:45 +01:00
glx22
1de8e1b801 Fix 13962a847, 00d28a500: forgotten squirrel_export run (#7345) 2019-03-10 13:44:45 +01:00
peter1138
54c5bac8f7 Fix #7334: Ship lost after crossing bridge due to path cache not being consumed while on final bridge end. 2019-03-10 13:44:45 +01:00
SamuXarick
948de16255 Cleanup: Remove repeated network error message on connection timeout. (#7327) 2019-03-10 13:44:45 +01:00
Patric Stout
88c5122b39 Update: Changelog for 1.9.0-RC1 and prepare for release 2019-03-03 20:53:40 +01:00
Patric Stout
eb46a89855 Fix: [AzurePipelines] also trigger CI on release branches 2019-03-03 20:26:58 +01:00
frosch
39cda89e85 Add: Detect stable tags automatically, and set the 'stable' flag in '_openttd_newgrf_version' accordingly. (#7317) 2019-03-03 20:08:28 +01:00
translators
8016b8b3e9 Update: Translations from eints
catalan: 62 changes by juanjo
french: 11 changes by glx
2019-03-03 19:45:43 +01:00
Charles Pigott
4ac81b3ebb Fix #7308: SDL linker flags were not added on MinGW 2019-03-03 18:04:36 +00:00
Charles Pigott
d9b4ada7e9 Fix 95ccddd6: SDL static library flags was not updated to use pkg-config format 2019-03-03 18:04:36 +00:00
Charles Pigott
1a663d9efc Fix: Wrong variable was used in zlib detection 2019-03-03 18:04:36 +00:00
peter1138
93a6fd42d1 Fix 23960d0f2c: Company livery window shows incorrect groups when opened from group window in multiplayer. 2019-03-03 13:13:35 +01:00
Niels Martin Hansen
c61acc7fc1 Fix #7280: Save in the right location on desync and server timeout 2019-03-03 12:12:32 +01:00
Peter Nelson
c91e0058c2 Change: Allow vehicle group names to be non-unique.
Group names are visual identifiers, and do not need to be unique.
Group sorting already falls back to group ID if names are the same, so that sorted
list position is stable.
2019-03-03 12:04:29 +01:00
Peter Nelson
5a5944867d Add: Add parent_group_id parameter to CreateGroup() 2019-03-03 09:15:39 +01:00
Peter Nelson
5d3ccae6c5 Add: AI function to get current usage of a group. 2019-03-03 09:15:39 +01:00
Peter Nelson
e0c2ad1b65 Add: AI functions to get/set company colours. 2019-03-03 09:15:39 +01:00
Peter Nelson
3c047b124e Add: AI functions to get current and last year profit of a group. 2019-03-03 09:15:39 +01:00
Peter Nelson
b62452903a Add: AI functions to set/get vehicle group parent. 2019-03-03 09:15:39 +01:00
Eddi-z
8139b14e9c Change: Synchronize introduction date and reliability randomness across vehicles with the same base introduction date (#7147) 2019-03-02 21:28:22 +00:00
Johannes E. Krause
5e40338543 Doc: table alignment when viewing README.md as a monospace textfile 2019-03-02 20:53:50 +01:00
translators
90a4737bf6 Update: Translations from eints
croatian: 6 changes by VoyagerOne
2019-03-02 19:45:43 +01:00
Eddi-z
b242a04c7d Fix #7307: Add WaterClass to MP_TREES, set when trees are on coast tiles (#7309)
This allows allows NewGRF object/industry placement rules to treat trees on coast tiles the same as regular bare coast.
2019-03-02 17:33:16 +00:00
Samu
780593ae60 Fix #6633: Cargo monitor industry delivery now accounts for which IndustryID the cargo was delivered to 2019-03-02 18:14:45 +01:00
PeterN
cbaf52fbe1 Codechange: Sort and filter sign names directly rather than through string system. (#7304)
This provides a notable performance benefit in the Sign List window when there are many signs.
2019-03-02 17:08:45 +00:00
Charles Pigott
c3bc7d657e Codechange: Remove ability for SDL to be dynamically loaded on Windows 2019-03-02 17:13:05 +01:00
PeterN
63fe6c6598 Codechange: Make std::stack use std::vector container in string formatting/drawing. (#7305)
This is a very minor performance increase which can add up during operations such
as sorting. Performance impact my be platform/compiler dependent.
2019-03-02 08:06:02 +00:00
translators
7ecfae8f7f Update: Translations from eints
turkish: 4 changes by DarkSapling
danish: 10 changes by Deb622
norwegian (bokmal): 11 changes by Leifbk
portuguese: 11 changes by vesgo
2019-03-01 19:45:42 +01:00
Eddi-z
1447661d20 Cleanup: spurious TODOs in newgrf.cpp (#7297) 2019-02-28 23:00:50 +00:00
PeterN
9ad5112628 Change: [AzurePipelines] Add freetype dependency for OSX. (#7299) 2019-02-28 19:33:31 +00:00
translators
76f983a8e7 Update: Translations from eints
dutch: 80 changes by JanWillem
2019-02-28 19:45:43 +01:00
SamuXarick
50a0cf1915 Change: Allow towns to build bridges over rails and one-way roads. (#7291) 2019-02-28 17:45:17 +00:00
SamuXarick
03264059e4 Change: Decrease minimum permitted value for script_max_opcode_till_suspend setting (#7243) 2019-02-28 17:37:50 +00:00
translators
adb50cebcc Update: Translations from eints
romanian: 7 changes by alexmerlin1985
2019-02-27 19:45:42 +01:00
Samu
9b99b95955 Fix #6574: Remove go to hangar orders when rebuilding airport
When replacing an airport with another, cancel current orders of type 'go to depot' from aircraft still heading to it if the rebuilt airport doesn't have a hangar (helicopter vs heliport), or if the airplane can't land on the rebuilt airport (airplane vs helistation).

Removes 'go to hangar' orders from all aircraft when replacing an airport with hangar with another without hangar (heliport).
2019-02-27 00:06:57 +01:00
peter1138
7ac17f5ae4 Fix #7281: Unable to select last group in open livery window on group creation. 2019-02-26 11:20:23 +01:00
peter1138
c2e4a8c9bf Fix 195fd0dc60: Sprite cache must still be cleared when using bitmap fonts. 2019-02-25 19:46:03 +00:00
translators
93c6398810 Update: Translations from eints
dutch: 68 changes by JanWillem
danish: 17 changes by nielsmh
hungarian: 3 changes by Brumi
2019-02-25 19:45:43 +01:00
glx22
6ff02f0615 Fix: [Windows] make the installer DPI aware (#7277) 2019-02-25 01:47:00 +01:00
114 changed files with 1954 additions and 1282 deletions

View File

@@ -92,6 +92,7 @@ VERSION := $(shell echo "$(VERSIONS)" | cut -f 1 -d' ')
ISODATE := $(shell echo "$(VERSIONS)" | cut -f 2 -d' ')
GITHASH := $(shell echo "$(VERSIONS)" | cut -f 4 -d' ')
ISTAG := $(shell echo "$(VERSIONS)" | cut -f 5 -d' ')
ISSTABLETAG := $(shell echo "$(VERSIONS)" | cut -f 6 -d' ')
# Make sure we have something in VERSION and ISODATE
ifeq ($(VERSION),)
@@ -277,10 +278,10 @@ endif
# Revision files
$(SRC_DIR)/rev.cpp: $(CONFIG_CACHE_VERSION) $(SRC_DIR)/rev.cpp.in
$(Q)cat $(SRC_DIR)/rev.cpp.in | sed "s@\!\!ISODATE\!\!@$(ISODATE)@g;s@!!VERSION!!@$(VERSION)@g;s@!!MODIFIED!!@$(MODIFIED)@g;s@!!DATE!!@`date +%d.%m.%y`@g;s@!!GITHASH!!@$(GITHASH)@g;s@!!ISTAG!!@$(ISTAG)@g" > $(SRC_DIR)/rev.cpp
$(Q)cat $(SRC_DIR)/rev.cpp.in | sed "s@\!\!ISODATE\!\!@$(ISODATE)@g;s@!!VERSION!!@$(VERSION)@g;s@!!MODIFIED!!@$(MODIFIED)@g;s@!!DATE!!@`date +%d.%m.%y`@g;s@!!GITHASH!!@$(GITHASH)@g;s@!!ISTAG!!@$(ISTAG)@g;s@!!ISSTABLETAG!!@$(ISSTABLETAG)@g" > $(SRC_DIR)/rev.cpp
$(SRC_DIR)/os/windows/ottdres.rc: $(CONFIG_CACHE_VERSION) $(SRC_DIR)/os/windows/ottdres.rc.in
$(Q)cat $(SRC_DIR)/os/windows/ottdres.rc.in | sed "s@\!\!ISODATE\!\!@$(ISODATE)@g;s@!!VERSION!!@$(VERSION)@g;s@!!DATE!!@`date +%d.%m.%y`@g;s@!!GITHASH!!@$(GITHASH)@g;s@!!ISTAG!!@$(ISTAG)@g" > $(SRC_DIR)/os/windows/ottdres.rc
$(Q)cat $(SRC_DIR)/os/windows/ottdres.rc.in | sed "s@\!\!ISODATE\!\!@$(ISODATE)@g;s@!!VERSION!!@$(VERSION)@g;s@!!DATE!!@`date +%d.%m.%y`@g;s@!!GITHASH!!@$(GITHASH)@g;s@!!ISTAG!!@$(ISTAG)@g;s@!!ISSTABLETAG!!@$(ISSTABLETAG)@g" > $(SRC_DIR)/os/windows/ottdres.rc
FORCE:

View File

@@ -310,22 +310,22 @@ your operating system:
Different types of data or extensions go into different subdirectories of the
chosen main OpenTTD directory:
| data type | directory | additional info |
| --- | --- | --- |
| Config File | (no subdirectory) | |
| Screenshots | screenshot | |
| Base Graphics | baseset | (or a subdirectory thereof) |
| Sound Sets | baseset | (or a subdirectory thereof) |
| NewGRFs | newgrf | (or a subdirectory thereof) |
| 32bpp Sets | newgrf | (or a subdirectory thereof) |
| Music Sets | baseset | (or a subdirectory thereof) |
| AIs | ai | (or a subdirectory thereof) |
| AI Libraries | ai/library | (or a subdirectory thereof) |
| Game Scripts (GS) | game | (or a subdirectory thereof) |
| GS Libraries | game/library | (or a subdirectory thereof) |
| Savegames | save | |
| Automatic Savegames | save/autosave | |
| Scenarios | scenario | |
| data type | directory | additional info |
| ------------------- | ----------------- | --------------------------- |
| Config File | (no subdirectory) | |
| Screenshots | screenshot | |
| Base Graphics | baseset | (or a subdirectory thereof) |
| Sound Sets | baseset | (or a subdirectory thereof) |
| NewGRFs | newgrf | (or a subdirectory thereof) |
| 32bpp Sets | newgrf | (or a subdirectory thereof) |
| Music Sets | baseset | (or a subdirectory thereof) |
| AIs | ai | (or a subdirectory thereof) |
| AI Libraries | ai/library | (or a subdirectory thereof) |
| Game Scripts (GS) | game | (or a subdirectory thereof) |
| GS Libraries | game/library | (or a subdirectory thereof) |
| Savegames | save | |
| Automatic Savegames | save/autosave | |
| Scenarios | scenario | |
The (automatically created) directory content_download is for OpenTTD's internal
use and no files should be added to it or its subdirectories manually.

View File

@@ -1,7 +1,9 @@
trigger:
- master
- release/*
pr:
- master
- release/*
jobs:
- job: windows

View File

@@ -1,9 +1,10 @@
steps:
# Rebase to origin/master for every PR. This means users don't have to
# rebase every time master changes. As long as the PR applies cleanly, we
# Rebase to target branch for every PR. This means users don't have to
# rebase every time target branch changes. As long as the PR applies cleanly, we
# will validate it.
- script: |
- bash: |
git config user.email 'info@openttd.org'
git config user.name 'OpenTTD CI'
git rebase origin/master
displayName: 'Rebase to master'
git rebase origin/${SYSTEM_PULLREQUEST_TARGETBRANCH}
displayName: 'Rebase to target branch'
condition: and(succeeded(), eq(variables['Build.Reason'], 'PullRequest'))

View File

@@ -4,11 +4,27 @@ parameters:
ContainerCommand: ''
steps:
# 'envVars' in the 'Docker@1' task is a bit funky. When you want to use a
# variable, you have to quote it. But the quote is also sent directly to
# Docker and ends up in the variable, which you don't want. To work around
# this, we set the correct variable first (which becomes an env-variable), and
# pass that env-variable through to Docker. We cannot use the normal
# 'variables' entry, as we are a template. So that results in this bit of
# Bash code. Not because it is pretty, but it is the only way we found that
# works.
- bash: |
echo "##vso[task.setvariable variable=TARGET_BRANCH]${SYSTEM_PULLREQUEST_TARGETBRANCH}"
echo "Target branch is ${SYSTEM_PULLREQUEST_TARGETBRANCH}"
displayName: "Set target branch"
condition: and(succeeded(), eq(variables['Build.Reason'], 'PullRequest'))
- task: Docker@1
${{ if eq(parameters.Image, 'compile-farm') }}:
displayName: 'Build'
${{ if eq(parameters.Image, 'compile-farm-ci') }}:
displayName: 'Build and test'
# Run the commit-checker only if it is a Pull Request
condition: and(succeeded(), or(ne(variables['Agent.JobName'], 'commit-checker'), eq(variables['Build.Reason'], 'PullRequest')))
inputs:
command: 'Run an image'
imageName: openttd/${{ parameters.Image }}:${{ parameters.Tag }}
@@ -16,3 +32,5 @@ steps:
workingDirectory: '$(Build.SourcesDirectory)'
containerCommand: ${{ parameters.ContainerCommand }}
runInBackground: false
envVars: |
TARGET_BRANCH

View File

@@ -1,11 +1,12 @@
steps:
- script: |
set -ex
HOMEBREW_NO_AUTO_UPDATE=1 brew install pkg-config lzo xz libpng
HOMEBREW_NO_AUTO_UPDATE=1 brew install pkg-config lzo xz libpng freetype
# Remove the dynamic libraries of these libraries, to ensure we use
# the static versions. That is important, as it is unlikely any
# end-user has these brew libraries installed.
rm /usr/local/Cellar/lzo/*/lib/*.dylib
rm /usr/local/Cellar/xz/*/lib/*.dylib
rm /usr/local/Cellar/libpng/*/lib/*.dylib
rm /usr/local/Cellar/freetype/*/lib/*.dylib
displayName: 'Install dependencies'

View File

@@ -1,10 +1,14 @@
steps:
- bash: |
set -ex
curl -L https://github.com/OpenTTD/CompileFarm/releases/download/latest/windows-dependencies.zip > windows-dependencies.zip
unzip windows-dependencies.zip
rm -f windows-dependencies.zip
displayName: 'Download dependencies'
workingDirectory: $(Build.ArtifactStagingDirectory)
- script: $(Build.ArtifactStagingDirectory)\windows-dependencies\vcpkg.exe integrate install
mv windows-dependencies/installed /c/vcpkg/
rm -rf windows-dependencies
displayName: 'Install dependencies'
workingDirectory: $(Build.ArtifactStagingDirectory)
- script: c:\vcpkg\vcpkg.exe integrate install
displayName: 'Integrate vcpkg'

View File

@@ -374,3 +374,10 @@ AIBridge.GetName <- function(bridge_id)
{
return AIBridge._GetName(bridge_id, AIVehicle.VT_RAIL);
}
/* 1.9 adds parent_group_id to CreateGroup function */
AIGroup._CreateGroup <- AIGroup.CreateGroup;
AIGroup.CreateGroup <- function(vehicle_type)
{
return AIGroup._CreateGroup(vehicle_type, AIGroup.GROUP_INVALID);
}

View File

@@ -126,3 +126,10 @@ AIBridge.GetName <- function(bridge_id)
{
return AIBridge._GetName(bridge_id, AIVehicle.VT_RAIL);
}
/* 1.9 adds parent_group_id to CreateGroup function */
AIGroup._CreateGroup <- AIGroup.CreateGroup;
AIGroup.CreateGroup <- function(vehicle_type)
{
return AIGroup._CreateGroup(vehicle_type, AIGroup.GROUP_INVALID);
}

View File

@@ -63,3 +63,10 @@ AIBridge.GetName <- function(bridge_id)
{
return AIBridge._GetName(bridge_id, AIVehicle.VT_RAIL);
}
/* 1.9 adds parent_group_id to CreateGroup function */
AIGroup._CreateGroup <- AIGroup.CreateGroup;
AIGroup.CreateGroup <- function(vehicle_type)
{
return AIGroup._CreateGroup(vehicle_type, AIGroup.GROUP_INVALID);
}

View File

@@ -15,3 +15,10 @@ AIBridge.GetName <- function(bridge_id)
{
return AIBridge._GetName(bridge_id, AIVehicle.VT_RAIL);
}
/* 1.9 adds parent_group_id to CreateGroup function */
AIGroup._CreateGroup <- AIGroup.CreateGroup;
AIGroup.CreateGroup <- function(vehicle_type)
{
return AIGroup._CreateGroup(vehicle_type, AIGroup.GROUP_INVALID);
}

View File

@@ -15,3 +15,10 @@ AIBridge.GetName <- function(bridge_id)
{
return AIBridge._GetName(bridge_id, AIVehicle.VT_RAIL);
}
/* 1.9 adds parent_group_id to CreateGroup function */
AIGroup._CreateGroup <- AIGroup.CreateGroup;
AIGroup.CreateGroup <- function(vehicle_type)
{
return AIGroup._CreateGroup(vehicle_type, AIGroup.GROUP_INVALID);
}

View File

@@ -15,3 +15,10 @@ AIBridge.GetName <- function(bridge_id)
{
return AIBridge._GetName(bridge_id, AIVehicle.VT_RAIL);
}
/* 1.9 adds parent_group_id to CreateGroup function */
AIGroup._CreateGroup <- AIGroup.CreateGroup;
AIGroup.CreateGroup <- function(vehicle_type)
{
return AIGroup._CreateGroup(vehicle_type, AIGroup.GROUP_INVALID);
}

View File

@@ -15,3 +15,10 @@ AIBridge.GetName <- function(bridge_id)
{
return AIBridge._GetName(bridge_id, AIVehicle.VT_RAIL);
}
/* 1.9 adds parent_group_id to CreateGroup function */
AIGroup._CreateGroup <- AIGroup.CreateGroup;
AIGroup.CreateGroup <- function(vehicle_type)
{
return AIGroup._CreateGroup(vehicle_type, AIGroup.GROUP_INVALID);
}

View File

@@ -15,3 +15,10 @@ AIBridge.GetName <- function(bridge_id)
{
return AIBridge._GetName(bridge_id, AIVehicle.VT_RAIL);
}
/* 1.9 adds parent_group_id to CreateGroup function */
AIGroup._CreateGroup <- AIGroup.CreateGroup;
AIGroup.CreateGroup <- function(vehicle_type)
{
return AIGroup._CreateGroup(vehicle_type, AIGroup.GROUP_INVALID);
}

View File

@@ -15,3 +15,10 @@ AIBridge.GetName <- function(bridge_id)
{
return AIBridge._GetName(bridge_id, AIVehicle.VT_RAIL);
}
/* 1.9 adds parent_group_id to CreateGroup function */
AIGroup._CreateGroup <- AIGroup.CreateGroup;
AIGroup.CreateGroup <- function(vehicle_type)
{
return AIGroup._CreateGroup(vehicle_type, AIGroup.GROUP_INVALID);
}

View File

@@ -15,3 +15,10 @@ AIBridge.GetName <- function(bridge_id)
{
return AIBridge._GetName(bridge_id, AIVehicle.VT_RAIL);
}
/* 1.9 adds parent_group_id to CreateGroup function */
AIGroup._CreateGroup <- AIGroup.CreateGroup;
AIGroup.CreateGroup <- function(vehicle_type)
{
return AIGroup._CreateGroup(vehicle_type, AIGroup.GROUP_INVALID);
}

View File

@@ -574,7 +574,7 @@ function Regression::Group()
local vehicle = AIVehicle.BuildVehicle(10000, 116);
print(" AIVehicle.BuildVehicle(): " + vehicle);
print(" GetNumEngines(): " + AIGroup.GetNumEngines(AIGroup.GROUP_ALL, 116));
local group = AIGroup.CreateGroup(AIVehicle.VT_ROAD);
local group = AIGroup.CreateGroup(AIVehicle.VT_ROAD, AIGroup.GROUP_INVALID);
print(" CreateGroup(): " + group);
print(" MoveVehicle(): " + AIGroup.MoveVehicle(group, vehicle));
print(" GetNumEngines(): " + AIGroup.GetNumEngines(group, 116));

View File

@@ -1,3 +1,28 @@
1.9.0-RC2 (2019-03-24)
------------------------------------------------------------------------
- Fix #7400: WaterClass for tree tiles was not converted for old saves preventing industry creation (#7405)
- Fix: Filtered file list did not scroll properly (#7402)
- Fix #7391: Don't invalidate go to depot orders of non-aircraft when invalidating hangar orders that happen to share IDs (#7392)
- Fix #7386: Measurement tooltip for tunnels, aqueducts & docks did not display or flickered (#7389)
- Fix: Wrong company performance rating when money exceeds INT_MAX (#7382)
- Fix: Permit loading of industry production callback with invalid cargo type (#7364)
- Fix: Spelling for a few real town names (#7338)
- Fix: Runway too short for large aircraft message should not depend on plane crashes setting (#7325)
- Fix #7334: Ship lost after crossing bridge due to path cache not being consumed while on final bridge end (#7335)
1.9.0-RC1 (2019-03-03)
------------------------------------------------------------------------
- Add: Various AI/GS functions for vehicle groups (#7225)
- Change: Synchronise introduction date and reliability randomness across vehicles with the same base introduction date (#7147)
- Change: Allow towns to build bridges over rails and one-way roads (#7291)
- Fix: Detection of coast tiles with trees on them (#7309)
- Fix: Emergency netsave saved the title game instead of the broken game in question (#7298)
- Fix: Company livery window showed incorrect groups when opened in multiplayer (#7288)
- Fix: Unable to select last group in open livery window (#7283)
- Fix: Goto hangar orders were not invalidated when rebuilding airports (#7100)
1.9.0-beta3 (2019-02-24)
------------------------------------------------------------------------
- Feature: Option to adjust font size separately from GUI size (#7003)
@@ -24,10 +49,12 @@
- Fix #7197: Invalidate depot buttons when necessary (#7212)
- Doc: [AI] UnshareOrders empties the orders list of the vehicle
1.9.0-beta2 (2019-02-09)
------------------------------------------------------------------------
- Fix: Non-Windows builds did not get correct git hash
1.9.0-beta1 (2019-02-09)
------------------------------------------------------------------------
Note: OpenTTD was migrated to GitHub for 1.9, so SVN revision and FlySpray numbers have been replaced with Pull Requests and Issue numbers

View File

@@ -820,7 +820,7 @@ check_params() {
pre_detect_with_zlib=$with_zlib
detect_zlib
if [ "$with_zlib" = "0" ] || [ -z "$zlib-config" ]; then
if [ "$with_zlib" = "0" ] || [ -z "$zlib_config" ]; then
log 1 "WARNING: zlib was not detected or disabled"
log 1 "WARNING: OpenTTD doesn't require zlib, but it does mean that many features"
log 1 "WARNING: (like loading most old savegames/scenarios, loading heightmaps,"
@@ -1681,12 +1681,10 @@ make_cflags_and_ldflags() {
CFLAGS="$CFLAGS -DWITH_SDL"
# SDL must not add _GNU_SOURCE as it breaks many platforms
CFLAGS="$CFLAGS `$sdl_config --cflags | sed 's@-D_GNU_SOURCE[^ ]*@@'`"
if [ "$os" != "MINGW" ] && [ "$os" != "CYGWIN" ]; then
if [ "$enable_static" != "0" ]; then
LIBS="$LIBS `$sdl_config --static-libs`"
else
LIBS="$LIBS `$sdl_config --libs`"
fi
if [ "$enable_static" != "0" ]; then
LIBS="$LIBS `$sdl_config --static --libs`"
else
LIBS="$LIBS `$sdl_config --libs`"
fi
fi

View File

@@ -759,6 +759,7 @@
<td valign=top nowrap>&nbsp;</td>
<td>
<ul>
<li>m1 bits 6..5: water class (sea or land)</li>
<li>m1 bits 4..0: <a href="#OwnershipInfo">owner</a> (normally <tt>10</tt>)</li>
<li>m2 bits 8..6: ground
<table>

View File

@@ -194,7 +194,7 @@ the array so you can quickly see what is used and what is not.
<td class="caption">trees</td>
<td class="bits">XXXX XXXX</td>
<td class="bits">XXXX XXXX</td>
<td class="bits"><span class="free">OOO</span><span class="option">~ ~~~~</span></td>
<td class="bits"><span class="free">O</span>XX<span class="option">~ ~~~~</span></td>
<td class="bits"><span class="free">OOOO OOO</span>X XXXX XXXX</td>
<td class="bits"><span class="option">~~</span>XX XXXX</td>
<td class="bits"><span class="free">OOOO OOOO</span></td>

View File

@@ -83,9 +83,15 @@ if [ -d "$ROOT_DIR/.git" ]; then
if [ -n "$TAG" ]; then
VERSION="${TAG}"
ISTAG="1"
if [ -n "`echo \"${TAG}\" | grep \"^[0-9.]*$\"`" ]; then
ISSTABLETAG="1"
else
ISSTABLETAG="0"
fi
else
VERSION="${ISODATE}-${BRANCH}${hashprefix}${SHORTHASH}"
ISTAG="0"
ISSTABLETAG="0"
fi
elif [ -f "$ROOT_DIR/.ottdrev" ]; then
@@ -102,6 +108,7 @@ else
TAG=""
VERSION=""
ISTAG="0"
ISSTABLETAG="0"
fi
echo "$VERSION $ISODATE $MODIFIED $HASH $ISTAG"
echo "$VERSION $ISODATE $MODIFIED $HASH $ISTAG $ISSTABLETAG"

View File

@@ -1,6 +1,6 @@
OpenTTD's known bugs
Last updated: 2019-02-24
Release version: 1.9.0-beta3
Last updated: 2019-03-24
Release version: 1.9.0-RC2
------------------------------------------------------------------------

View File

@@ -1,3 +1,15 @@
openttd (1.9.0~RC2-0) unstable; urgency=low
* New upstream release 1.9.0-RC2
-- OpenTTD <info@openttd.org> Sun, 24 Mar 2019 23:00:00 +0000
openttd (1.9.0~RC1-0) unstable; urgency=low
* New upstream release 1.9.0-RC1
-- OpenTTD <info@openttd.org> Sun, 3 Mar 2019 23:00:00 +0000
openttd (1.9.0~beta3-0) unstable; urgency=low
* New upstream release 1.9.0-beta3

View File

@@ -17,9 +17,9 @@
#
Name: openttd
Version: 1.9.beta3
Version: 1.9.RC2
Release: 0
%define srcver 1.9.0-beta3
%define srcver 1.9.0-RC2
Summary: An open source reimplementation of Chris Sawyer's Transport Tycoon Deluxe
License: GPL-2.0
Group: Amusements/Games/Strategy/Other

View File

@@ -2,8 +2,8 @@
!define APPV_MAJOR 1
!define APPV_MINOR 9
!define APPV_MAINT 0
!define APPV_BUILD 2
!define APPV_EXTRA "-beta3"
!define APPV_BUILD 4
!define APPV_EXTRA "-RC2"
!define APPNAME "OpenTTD" ; Define application name
!define APPVERSION "${APPV_MAJOR}.${APPV_MINOR}.${APPV_MAINT}${APPV_EXTRA}" ; Define application version
@@ -24,6 +24,7 @@
!define MUI_HEADERIMAGE
!define MUI_HEADERIMAGE_BITMAP "top.bmp"
ManifestDPIAware true
BrandingText "OpenTTD Installer"
SetCompressor LZMA

View File

@@ -21,7 +21,7 @@ Sub FindReplaceInFile(filename, to_find, replacement)
file.Close
End Sub
Sub UpdateFile(modified, isodate, version, cur_date, githash, istag, filename)
Sub UpdateFile(modified, isodate, version, cur_date, githash, istag, isstabletag, filename)
FSO.CopyFile filename & ".in", filename
FindReplaceInFile filename, "!!MODIFIED!!", modified
FindReplaceInFile filename, "!!ISODATE!!", isodate
@@ -29,10 +29,11 @@ Sub UpdateFile(modified, isodate, version, cur_date, githash, istag, filename)
FindReplaceInFile filename, "!!DATE!!", cur_date
FindReplaceInFile filename, "!!GITHASH!!", githash
FindReplaceInFile filename, "!!ISTAG!!", istag
FindReplaceInFile filename, "!!ISSTABLETAG!!", isstabletag
End Sub
Sub UpdateFiles(version)
Dim modified, isodate, cur_date, githash, istag
Dim modified, isodate, cur_date, githash, istag, isstabletag
cur_date = DatePart("D", Date) & "." & DatePart("M", Date) & "." & DatePart("YYYY", Date)
If InStr(version, Chr(9)) Then
@@ -41,20 +42,23 @@ Sub UpdateFiles(version)
modified = Mid(isodate, InStr(isodate, Chr(9)) + 1)
githash = Mid(modified, InStr(modified, Chr(9)) + 1)
istag = Mid(githash, InStr(githash, Chr(9)) + 1)
isstabletag = Mid(istag, InStr(istag, Chr(9)) + 1)
' Remove tails from fields
version = Mid(version, 1, InStr(version, Chr(9)) - 1)
isodate = Mid(isodate, 1, InStr(isodate, Chr(9)) - 1)
modified = Mid(modified, 1, InStr(modified, Chr(9)) - 1)
githash = Mid(githash, 1, InStr(githash, Chr(9)) - 1)
istag = Mid(istag, 1, InStr(istag, Chr(9)) - 1)
Else
isodate = 0
modified = 1
githash = ""
istag = 0
isstabletag = 0
End If
UpdateFile modified, isodate, version, cur_date, githash, istag, "../src/rev.cpp"
UpdateFile modified, isodate, version, cur_date, githash, istag, "../src/os/windows/ottdres.rc"
UpdateFile modified, isodate, version, cur_date, githash, istag, isstabletag, "../src/rev.cpp"
UpdateFile modified, isodate, version, cur_date, githash, istag, isstabletag, "../src/os/windows/ottdres.rc"
End Sub
Function DetermineVersion()
@@ -143,7 +147,7 @@ Function DetermineVersion()
DetermineVersion = "norev000"
modified = 1
Else
Dim version, hashprefix, istag
Dim version, hashprefix, istag, isstabletag
If modified = 0 Then
hashprefix = "-g"
ElseIf modified = 2 Then
@@ -155,12 +159,21 @@ Function DetermineVersion()
If tag <> "" Then
version = tag
istag = 1
Set stable_regexp = New RegExp
stable_regexp.Pattern = "^[0-9.]*$"
If stable_regexp.Test(tag) Then
isstabletag = 1
Else
isstabletag = 0
End If
Else
version = isodate & "-" & branch & hashprefix & shorthash
istag = 0
isstabletag = 0
End If
DetermineVersion = version & Chr(9) & isodate & Chr(9) & modified & Chr(9) & hash & Chr(9) & istag
DetermineVersion = version & Chr(9) & isodate & Chr(9) & modified & Chr(9) & hash & Chr(9) & istag & Chr(9) & isstabletag
End If
End Function

View File

@@ -410,7 +410,6 @@
<ClCompile Include="..\src\road.cpp" />
<ClCompile Include="..\src\roadstop.cpp" />
<ClCompile Include="..\src\screenshot.cpp" />
<ClCompile Include="..\src\sdl.cpp" />
<ClCompile Include="..\src\settings.cpp" />
<ClCompile Include="..\src\signal.cpp" />
<ClCompile Include="..\src\signs.cpp" />
@@ -623,7 +622,6 @@
<ClInclude Include="..\src\roadveh.h" />
<ClInclude Include="..\src\safeguards.h" />
<ClInclude Include="..\src\screenshot.h" />
<ClInclude Include="..\src\sdl.h" />
<ClInclude Include="..\src\sound\sdl_s.h" />
<ClInclude Include="..\src\video\sdl_v.h" />
<ClInclude Include="..\src\settings_func.h" />

View File

@@ -318,9 +318,6 @@
<ClCompile Include="..\src\screenshot.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\src\sdl.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\src\settings.cpp">
<Filter>Source Files</Filter>
</ClCompile>
@@ -957,9 +954,6 @@
<ClInclude Include="..\src\screenshot.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\src\sdl.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\src\sound\sdl_s.h">
<Filter>Header Files</Filter>
</ClInclude>

View File

@@ -410,7 +410,6 @@
<ClCompile Include="..\src\road.cpp" />
<ClCompile Include="..\src\roadstop.cpp" />
<ClCompile Include="..\src\screenshot.cpp" />
<ClCompile Include="..\src\sdl.cpp" />
<ClCompile Include="..\src\settings.cpp" />
<ClCompile Include="..\src\signal.cpp" />
<ClCompile Include="..\src\signs.cpp" />
@@ -623,7 +622,6 @@
<ClInclude Include="..\src\roadveh.h" />
<ClInclude Include="..\src\safeguards.h" />
<ClInclude Include="..\src\screenshot.h" />
<ClInclude Include="..\src\sdl.h" />
<ClInclude Include="..\src\sound\sdl_s.h" />
<ClInclude Include="..\src\video\sdl_v.h" />
<ClInclude Include="..\src\settings_func.h" />

View File

@@ -318,9 +318,6 @@
<ClCompile Include="..\src\screenshot.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\src\sdl.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\src\settings.cpp">
<Filter>Source Files</Filter>
</ClCompile>
@@ -957,9 +954,6 @@
<ClInclude Include="..\src\screenshot.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\src\sdl.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\src\sound\sdl_s.h">
<Filter>Header Files</Filter>
</ClInclude>

View File

@@ -410,7 +410,6 @@
<ClCompile Include="..\src\road.cpp" />
<ClCompile Include="..\src\roadstop.cpp" />
<ClCompile Include="..\src\screenshot.cpp" />
<ClCompile Include="..\src\sdl.cpp" />
<ClCompile Include="..\src\settings.cpp" />
<ClCompile Include="..\src\signal.cpp" />
<ClCompile Include="..\src\signs.cpp" />
@@ -623,7 +622,6 @@
<ClInclude Include="..\src\roadveh.h" />
<ClInclude Include="..\src\safeguards.h" />
<ClInclude Include="..\src\screenshot.h" />
<ClInclude Include="..\src\sdl.h" />
<ClInclude Include="..\src\sound\sdl_s.h" />
<ClInclude Include="..\src\video\sdl_v.h" />
<ClInclude Include="..\src\settings_func.h" />

View File

@@ -318,9 +318,6 @@
<ClCompile Include="..\src\screenshot.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\src\sdl.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\src\settings.cpp">
<Filter>Source Files</Filter>
</ClCompile>
@@ -957,9 +954,6 @@
<ClInclude Include="..\src\screenshot.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\src\sdl.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\src\sound\sdl_s.h">
<Filter>Header Files</Filter>
</ClInclude>

View File

@@ -71,9 +71,6 @@ rev.cpp
road.cpp
roadstop.cpp
screenshot.cpp
#if SDL
sdl.cpp
#end
settings.cpp
signal.cpp
signs.cpp
@@ -312,7 +309,6 @@ roadstop_base.h
roadveh.h
safeguards.h
screenshot.h
sdl.h
sound/sdl_s.h
video/sdl_v.h
settings_func.h

View File

@@ -32,7 +32,7 @@ public:
START_NEXT_EASY = DAYS_IN_YEAR * 2,
START_NEXT_MEDIUM = DAYS_IN_YEAR,
START_NEXT_HARD = DAYS_IN_YEAR / 2,
START_NEXT_MIN = 0,
START_NEXT_MIN = 1,
START_NEXT_MAX = 3600,
START_NEXT_DEVIATION = 60,
};

View File

@@ -127,14 +127,3 @@ void AIConfig::SetSetting(const char *name, int value)
ScriptConfig::SetSetting(name, value);
}
void AIConfig::AddRandomDeviation()
{
int start_date = this->GetSetting("start_date");
ScriptConfig::AddRandomDeviation();
/* start_date = 0 is a special case, where random deviation does not occur.
* If start_date was not already 0, then a minimum value of 1 must apply. */
this->SetSetting("start_date", start_date != 0 ? max(1, this->GetSetting("start_date")) : 0);
}

View File

@@ -32,7 +32,6 @@ public:
/* virtual */ int GetSetting(const char *name) const;
/* virtual */ void SetSetting(const char *name, int value);
/* virtual */ void AddRandomDeviation();
/**
* When ever the AI Scanner is reloaded, all infos become invalid. This

View File

@@ -783,6 +783,7 @@ int GetAircraftFlightLevel(T *v, bool takeoff)
}
template int GetAircraftFlightLevel(DisasterVehicle *v, bool takeoff);
template int GetAircraftFlightLevel(Aircraft *v, bool takeoff);
/**
* Find the entry point to an airport depending on direction which
@@ -2103,7 +2104,19 @@ void UpdateAirplanesOnNewStation(const Station *st)
FOR_ALL_AIRCRAFT(v) {
if (!v->IsNormalAircraft() || v->targetairport != st->index) continue;
assert(v->state == FLYING);
Order *o = &v->current_order;
/* The aircraft is heading to a hangar, but the new station doesn't have one,
* or the aircraft can't land on the new station. Cancel current order. */
if (o->IsType(OT_GOTO_DEPOT) && !(o->GetDepotOrderType() & ODTFB_PART_OF_ORDERS) && o->GetDestination() == st->index &&
(!st->airport.HasHangar() || !CanVehicleUseStation(v, st))) {
o->MakeDummy();
SetWindowWidgetDirty(WC_VEHICLE_VIEW, v->index, WID_VV_START_STOP);
}
v->pos = v->previous_pos = AircraftGetEntryPoint(v, ap, rotation);
UpdateAircraftCache(v);
}
/* Heliports don't have a hangar. Invalidate all go to hangar orders from all aircraft. */
if (!st->airport.HasHangar()) RemoveOrderFromAllVehicles(OT_GOTO_DEPOT, st->index, true);
}

View File

@@ -117,8 +117,9 @@ int32 GetPickupAmount(CargoMonitorID monitor, bool keep_monitoring)
* @param src_type type of \a src.
* @param src index of source.
* @param st station where the cargo is delivered to.
* @param dest industry index where the cargo is delivered to.
*/
void AddCargoDelivery(CargoID cargo_type, CompanyID company, uint32 amount, SourceType src_type, SourceID src, const Station *st)
void AddCargoDelivery(CargoID cargo_type, CompanyID company, uint32 amount, SourceType src_type, SourceID src, const Station *st, IndustryID dest)
{
if (amount == 0) return;
@@ -151,6 +152,7 @@ void AddCargoDelivery(CargoID cargo_type, CompanyID company, uint32 amount, Sour
/* Industry delivery. */
for (const Industry * const *ip = st->industries_near.Begin(); ip != st->industries_near.End(); ip++) {
if ((*ip)->index != dest) continue;
CargoMonitorID num = EncodeCargoIndustryMonitor(company, cargo_type, (*ip)->index);
CargoMonitorMap::iterator iter = _cargo_deliveries.find(num);
if (iter != _cargo_deliveries.end()) iter->second += amount;

View File

@@ -149,6 +149,6 @@ void ClearCargoPickupMonitoring(CompanyID company = INVALID_OWNER);
void ClearCargoDeliveryMonitoring(CompanyID company = INVALID_OWNER);
int32 GetDeliveryAmount(CargoMonitorID monitor, bool keep_monitoring);
int32 GetPickupAmount(CargoMonitorID monitor, bool keep_monitoring);
void AddCargoDelivery(CargoID cargo_type, CompanyID company, uint32 amount, SourceType src_type, SourceID src, const Station *st);
void AddCargoDelivery(CargoID cargo_type, CompanyID company, uint32 amount, SourceType src_type, SourceID src, const Station *st, IndustryID dest = INVALID_INDUSTRY);
#endif /* CARGOMONITOR_H */

View File

@@ -283,7 +283,7 @@ static const Command _command_proc_table[] = {
DEF_CMD(CmdTurnRoadVeh, 0, CMDT_VEHICLE_MANAGEMENT ), // CMD_TURN_ROADVEH
DEF_CMD(CmdPause, CMD_SERVER | CMD_NO_EST, CMDT_SERVER_SETTING ), // CMD_PAUSE
DEF_CMD(CmdPause, CMD_SERVER, CMDT_SERVER_SETTING ), // CMD_PAUSE
DEF_CMD(CmdBuyShareInCompany, 0, CMDT_MONEY_MANAGEMENT ), // CMD_BUY_SHARE_IN_COMPANY
DEF_CMD(CmdSellShareInCompany, 0, CMDT_MONEY_MANAGEMENT ), // CMD_SELL_SHARE_IN_COMPANY
@@ -307,7 +307,7 @@ static const Command _command_proc_table[] = {
DEF_CMD(CmdChangeBankBalance, CMD_DEITY, CMDT_MONEY_MANAGEMENT ), // CMD_CHANGE_BANK_BALANCE
DEF_CMD(CmdBuildCanal, CMD_AUTO, CMDT_LANDSCAPE_CONSTRUCTION), // CMD_BUILD_CANAL
DEF_CMD(CmdCreateSubsidy, CMD_DEITY, CMDT_OTHER_MANAGEMENT ), // CMD_CREATE_SUBSIDY
DEF_CMD(CmdCompanyCtrl, CMD_SPECTATOR | CMD_CLIENT_ID | CMD_NO_EST, CMDT_SERVER_SETTING ), // CMD_COMPANY_CTRL
DEF_CMD(CmdCompanyCtrl, CMD_SPECTATOR | CMD_CLIENT_ID, CMDT_SERVER_SETTING ), // CMD_COMPANY_CTRL
DEF_CMD(CmdCustomNewsItem, CMD_STR_CTRL | CMD_DEITY, CMDT_OTHER_MANAGEMENT ), // CMD_CUSTOM_NEWS_ITEM
DEF_CMD(CmdCreateGoal, CMD_STR_CTRL | CMD_DEITY, CMDT_OTHER_MANAGEMENT ), // CMD_CREATE_GOAL
DEF_CMD(CmdRemoveGoal, CMD_DEITY, CMDT_OTHER_MANAGEMENT ), // CMD_REMOVE_GOAL
@@ -558,7 +558,7 @@ bool DoCommandP(TileIndex tile, uint32 p1, uint32 p2, uint32 cmd, CommandCallbac
bool estimate_only = _shift_pressed && IsLocalCompany() &&
!_generating_world &&
!(cmd & CMD_NETWORK_COMMAND) &&
!(GetCommandFlags(cmd) & CMD_NO_EST);
(cmd & CMD_ID_MASK) != CMD_PAUSE;
/* We're only sending the command, so don't do
* fancy things for 'success'. */

View File

@@ -395,7 +395,6 @@ enum CommandFlags {
CMD_CLIENT_ID = 0x080, ///< set p2 with the ClientID of the sending client.
CMD_DEITY = 0x100, ///< the command may be executed by COMPANY_DEITY
CMD_STR_CTRL = 0x200, ///< the command's string may contain control strings
CMD_NO_EST = 0x400, ///< the command is never estimated.
};
DECLARE_ENUM_AS_BIT_SET(CommandFlags)

View File

@@ -595,10 +595,10 @@ void StartupCompanies()
}
/** Start a new competitor company if possible. */
static bool MaybeStartNewCompany()
static void MaybeStartNewCompany()
{
#ifdef ENABLE_NETWORK
if (_networking && Company::GetNumItems() >= _settings_client.network.max_companies) return false;
if (_networking && Company::GetNumItems() >= _settings_client.network.max_companies) return;
#endif /* ENABLE_NETWORK */
Company *c;
@@ -612,10 +612,8 @@ static bool 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 */
return DoCommandP(0, CCA_NEW_AI | INVALID_COMPANY << 16, 0, CMD_COMPANY_CTRL);
DoCommandP(0, CCA_NEW_AI | INVALID_COMPANY << 16, 0, CMD_COMPANY_CTRL);
}
return false;
}
/** Initialize the pool of companies. */
@@ -716,19 +714,11 @@ void OnTick_Companies()
}
if (_next_competitor_start == 0) {
/* AI::GetStartNextTime() can return 0. */
_next_competitor_start = max(1, AI::GetStartNextTime() * DAY_TICKS);
_next_competitor_start = AI::GetStartNextTime() * DAY_TICKS;
}
if (_game_mode != GM_MENU && AI::CanStartNew() && --_next_competitor_start == 0) {
/* Allow multiple AIs to possibly start in the same tick. */
do {
if (!MaybeStartNewCompany()) break;
/* In networking mode, we can only send a command to start but it
* didn't execute yet, so we cannot loop. */
if (_networking) break;
} while (AI::GetStartNextTime() == 0);
if (AI::CanStartNew() && _game_mode != GM_MENU && --_next_competitor_start == 0) {
MaybeStartNewCompany();
}
_cur_company_tick_index = (_cur_company_tick_index + 1) % MAX_COMPANIES;

View File

@@ -707,7 +707,7 @@ public:
this->BuildGroupList(company);
this->SetRows();
} else {
this->SetSelectedGroup(group);
this->SetSelectedGroup(company, group);
}
this->FinishInitNested(company);
@@ -715,7 +715,7 @@ public:
this->InvalidateData(1);
}
void SetSelectedGroup(GroupID group)
void SetSelectedGroup(CompanyID company, GroupID group)
{
this->RaiseWidget(this->livery_class + WID_SCL_CLASS_GENERAL);
const Group *g = Group::Get(group);
@@ -730,7 +730,7 @@ public:
this->LowerWidget(this->livery_class + WID_SCL_CLASS_GENERAL);
this->groups.ForceRebuild();
this->BuildGroupList((CompanyID)this->window_number);
this->BuildGroupList(company);
this->SetRows();
/* Position scrollbar to selected group */
@@ -1025,9 +1025,15 @@ public:
if (data != -1) {
/* data contains a VehicleType, rebuild list if it displayed */
if (this->livery_class == data + LC_GROUP_RAIL) {
if (!Group::IsValidID(this->sel)) this->sel = INVALID_GROUP;
this->groups.ForceRebuild();
this->BuildGroupList((CompanyID)this->window_number);
this->SetRows();
if (!Group::IsValidID(this->sel)) {
this->sel = INVALID_GROUP;
if (this->groups.Length() > 0) this->sel = this->groups[0]->index;
}
this->SetDirty();
}
return;
@@ -1099,7 +1105,7 @@ void ShowCompanyLiveryWindow(CompanyID company, GroupID group)
if (w == NULL) {
new SelectCompanyLiveryWindow(&_select_company_livery_desc, company, group);
} else if (group != INVALID_GROUP) {
w->SetSelectedGroup(group);
w->SetSelectedGroup(company, group);
}
}

View File

@@ -62,7 +62,6 @@
#include <lzo/lzo1x.h>
#endif
#ifdef WITH_SDL
# include "sdl.h"
# include <SDL.h>
#endif /* WITH_SDL */
#ifdef WITH_ZLIB
@@ -195,7 +194,7 @@ char *CrashLog::LogConfiguration(char *buffer, const char *last) const
FontCache::Get(FS_MONO)->GetFontName()
);
buffer += seprintf(buffer, last, "AI Configuration (local: %i):\n", (int)_local_company);
buffer += seprintf(buffer, last, "AI Configuration (local: %i) (current: %i):\n", (int)_local_company, (int)_current_company);
const Company *c;
FOR_ALL_COMPANIES(c) {
if (c->ai_info == NULL) {
@@ -268,14 +267,8 @@ char *CrashLog::LogLibraries(char *buffer, const char *last) const
#endif /* WITH_PNG */
#ifdef WITH_SDL
#ifdef DYNAMICALLY_LOADED_SDL
if (SDL_CALL SDL_Linked_Version != NULL) {
#else
{
#endif
const SDL_version *v = SDL_CALL SDL_Linked_Version();
buffer += seprintf(buffer, last, " SDL: %d.%d.%d\n", v->major, v->minor, v->patch);
}
const SDL_version *v = SDL_Linked_Version();
buffer += seprintf(buffer, last, " SDL: %d.%d.%d\n", v->major, v->minor, v->patch);
#endif /* WITH_SDL */
#ifdef WITH_ZLIB

View File

@@ -260,7 +260,7 @@ int UpdateCompanyRatingAndValue(Company *c, bool update)
/* Skip the total */
if (i == SCORE_TOTAL) continue;
/* Check the score */
s = Clamp(_score_part[owner][i], 0, _score_info[i].needed) * _score_info[i].score / _score_info[i].needed;
s = Clamp<int64>(_score_part[owner][i], 0, _score_info[i].needed) * _score_info[i].score / _score_info[i].needed;
score += s;
total_score += _score_info[i].score;
}
@@ -1030,9 +1030,10 @@ static SmallIndustryList _cargo_delivery_destinations;
* @param cargo_type Type of cargo delivered
* @param num_pieces Amount of cargo delivered
* @param source The source of the cargo
* @param company The company delivering the cargo
* @return actually accepted pieces of cargo
*/
static uint DeliverGoodsToIndustry(const Station *st, CargoID cargo_type, uint num_pieces, IndustryID source)
static uint DeliverGoodsToIndustry(const Station *st, CargoID cargo_type, uint num_pieces, IndustryID source, CompanyID company)
{
/* Find the nearest industrytile to the station sign inside the catchment area, whose industry accepts the cargo.
* This fails in three cases:
@@ -1065,6 +1066,9 @@ static uint DeliverGoodsToIndustry(const Station *st, CargoID cargo_type, uint n
ind->last_cargo_accepted_at[cargo_index] = _date;
num_pieces -= amount;
accepted += amount;
/* Update the cargo monitor. */
AddCargoDelivery(cargo_type, company, amount, ST_INDUSTRY, source, st, ind->index);
}
return accepted;
@@ -1090,30 +1094,30 @@ static Money DeliverGoods(int num_pieces, CargoID cargo_type, StationID dest, Ti
Station *st = Station::Get(dest);
/* Give the goods to the industry. */
uint accepted = DeliverGoodsToIndustry(st, cargo_type, num_pieces, src_type == ST_INDUSTRY ? src : INVALID_INDUSTRY);
uint accepted_ind = DeliverGoodsToIndustry(st, cargo_type, num_pieces, src_type == ST_INDUSTRY ? src : INVALID_INDUSTRY, company->index);
/* If this cargo type is always accepted, accept all */
if (HasBit(st->always_accepted, cargo_type)) accepted = num_pieces;
uint accepted_total = HasBit(st->always_accepted, cargo_type) ? num_pieces : accepted_ind;
/* Update station statistics */
if (accepted > 0) {
if (accepted_total > 0) {
SetBit(st->goods[cargo_type].status, GoodsEntry::GES_EVER_ACCEPTED);
SetBit(st->goods[cargo_type].status, GoodsEntry::GES_CURRENT_MONTH);
SetBit(st->goods[cargo_type].status, GoodsEntry::GES_ACCEPTED_BIGTICK);
}
/* Update company statistics */
company->cur_economy.delivered_cargo[cargo_type] += accepted;
company->cur_economy.delivered_cargo[cargo_type] += accepted_total;
/* Increase town's counter for town effects */
const CargoSpec *cs = CargoSpec::Get(cargo_type);
st->town->received[cs->town_effect].new_act += accepted;
st->town->received[cs->town_effect].new_act += accepted_total;
/* Determine profit */
Money profit = GetTransportedGoodsIncome(accepted, DistanceManhattan(source_tile, st->xy), days_in_transit, cargo_type);
Money profit = GetTransportedGoodsIncome(accepted_total, DistanceManhattan(source_tile, st->xy), days_in_transit, cargo_type);
/* Update the cargo monitor. */
AddCargoDelivery(cargo_type, company->index, accepted, src_type, src, st);
AddCargoDelivery(cargo_type, company->index, accepted_total - accepted_ind, src_type, src, st);
/* Modify profit if a subsidy is in effect */
if (CheckSubsidised(cargo_type, company->index, src_type, src, st)) {

View File

@@ -652,7 +652,14 @@ void StartupOneEngine(Engine *e, Date aging_date)
/* 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 */
SavedRandomSeeds saved_seeds;
SaveRandomSeeds(&saved_seeds);
SetRandomSeed(_settings_game.game_creation.generation_seed ^
ei->base_intro ^
e->type ^
e->GetGRFID());
uint32 r = Random();
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;
@@ -672,6 +679,7 @@ void StartupOneEngine(Engine *e, Date aging_date)
e->reliability_spd_dec = ei->decay_speed << 2;
RestoreRandomSeeds(saved_seeds);
CalcEngineReliability(e);
/* prevent certain engines from ever appearing. */

View File

@@ -437,12 +437,15 @@ public:
GfxFillRect(r.left + 1, r.top + 1, r.right, r.bottom, PC_BLACK);
uint y = r.top + WD_FRAMERECT_TOP;
for (uint pos = this->vscroll->GetPosition(); pos < this->fios_items.Length(); pos++) {
if (!this->fios_items_shown[pos]) {
uint scroll_pos = this->vscroll->GetPosition();
for (uint row = 0; row < this->fios_items.Length(); row++) {
if (!this->fios_items_shown[row]) {
/* The current item is filtered out : we do not show it */
scroll_pos++;
continue;
}
const FiosItem *item = this->fios_items.Get(pos);
if (row < scroll_pos) continue;
const FiosItem *item = this->fios_items.Get(row);
if (item == this->selected) {
GfxFillRect(r.left + 1, y, r.right, y + this->resize.step_height, PC_DARK_BLUE);

View File

@@ -19,6 +19,7 @@
#include <map>
#include <string>
#include <stack>
#include <vector>
#ifdef WITH_ICU_LAYOUT
#include "layout/ParagraphLayout.h"
@@ -35,7 +36,7 @@ struct FontState {
FontSize fontsize; ///< Current font size.
TextColour cur_colour; ///< Current text colour.
std::stack<TextColour> colour_stack; ///< Stack of colours to assist with colour switching.
std::stack<TextColour, std::vector<TextColour>> colour_stack; ///< Stack of colours to assist with colour switching.
FontState() : fontsize(FS_END), cur_colour(TC_INVALID) {}
FontState(TextColour colour, FontSize fontsize) : fontsize(fontsize), cur_colour(colour) {}

View File

@@ -408,17 +408,6 @@ CommandCost CmdDeleteGroup(TileIndex tile, DoCommandFlag flags, uint32 p1, uint3
return CommandCost();
}
static bool IsUniqueGroupNameForVehicleType(const char *name, VehicleType type)
{
const Group *g;
FOR_ALL_GROUPS(g) {
if (g->name != NULL && g->vehicle_type == type && strcmp(g->name, name) == 0) return false;
}
return true;
}
/**
* Alter a group
* @param tile unused
@@ -442,7 +431,6 @@ CommandCost CmdAlterGroup(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32
if (!reset) {
if (Utf8StringLength(text) >= MAX_LENGTH_GROUP_NAME_CHARS) return CMD_ERROR;
if (!IsUniqueGroupNameForVehicleType(text, g->vehicle_type)) return_cmd_error(STR_ERROR_NAME_MUST_BE_UNIQUE);
}
if (flags & DC_EXEC) {

View File

@@ -2753,12 +2753,12 @@ struct IndustryCargoesWindow : public Window {
}
}
virtual void OnHover(Point pt, int widget)
bool OnTooltip(Point pt, int widget, TooltipCloseCondition close_cond)
{
if (widget != WID_IC_PANEL) return;
if (widget != WID_IC_PANEL) return false;
Point fieldxy, xy;
if (!CalculatePositionInWidget(pt, &fieldxy, &xy)) return;
if (!CalculatePositionInWidget(pt, &fieldxy, &xy)) return false;
const CargoesField *fld = this->fields[fieldxy.y].columns + fieldxy.x;
CargoID cid = INVALID_CARGO;
@@ -2777,9 +2777,9 @@ struct IndustryCargoesWindow : public Window {
case CFT_INDUSTRY:
if (fld->u.industry.ind_type < NUM_INDUSTRYTYPES && (this->ind_cargo >= NUM_INDUSTRYTYPES || fieldxy.x != 2)) {
GuiShowTooltips(this, STR_INDUSTRY_CARGOES_INDUSTRY_TOOLTIP, 0, NULL, TCC_HOVER);
GuiShowTooltips(this, STR_INDUSTRY_CARGOES_INDUSTRY_TOOLTIP, 0, NULL, close_cond);
}
return;
return true;
default:
break;
@@ -2788,8 +2788,11 @@ struct IndustryCargoesWindow : public Window {
const CargoSpec *csp = CargoSpec::Get(cid);
uint64 params[5];
params[0] = csp->name;
GuiShowTooltips(this, STR_INDUSTRY_CARGOES_CARGO_TOOLTIP, 1, params, TCC_HOVER);
GuiShowTooltips(this, STR_INDUSTRY_CARGOES_CARGO_TOOLTIP, 1, params, close_cond);
return true;
}
return false;
}
virtual void OnResize()

View File

@@ -190,6 +190,8 @@ STR_COLOUR_ORANGE :{G=Masculin}Tar
STR_COLOUR_BROWN :{G=Masculin}Marró
STR_COLOUR_GREY :{G=Masculin}Gris
STR_COLOUR_WHITE :{G=Masculin}Blanc
STR_COLOUR_RANDOM :Aleatori
STR_COLOUR_DEFAULT :Per defecte
# Units used in OpenTTD
STR_UNITS_VELOCITY_IMPERIAL :{COMMA}{NBSP}mph
@@ -465,6 +467,7 @@ STR_TOOLBAR_SOUND_MUSIC :So/música
############ range for message menu starts
STR_NEWS_MENU_LAST_MESSAGE_NEWS_REPORT :Darrer missatge/notícia
STR_NEWS_MENU_MESSAGE_HISTORY_MENU :Historial de missatges
STR_NEWS_MENU_DELETE_ALL_MESSAGES :Esborra tots els missatges
############ range ends here
############ range for about menu starts
@@ -816,6 +819,7 @@ STR_NEWS_MERGER_TAKEOVER_TITLE :{BIG_FONT}{BLAC
STR_PRESIDENT_NAME_MANAGER :{BLACK}{PRESIDENT_NAME}{}(President)
STR_NEWS_NEW_TOWN :{BLACK}{BIG_FONT}{STRING} ha patrocinat la construcció d'una nova població, anomenada {TOWN}
STR_NEWS_NEW_TOWN_UNSPONSORED :{BLACK}{BIG_FONT}S'ha fundat una nova població que es diu {TOWN}!
STR_NEWS_INDUSTRY_CONSTRUCTION :{BIG_FONT}{BLACK}No{G u va} {STRING} en construcció prop de {TOWN}
STR_NEWS_INDUSTRY_PLANTED :{BIG_FONT}{BLACK}S'està plantant {G un una} {G nou nova} {STRING} prop de {TOWN}
@@ -928,6 +932,8 @@ STR_GAME_OPTIONS_CURRENCY_ZAR :Rand sud-afric
STR_GAME_OPTIONS_CURRENCY_CUSTOM :Personalitzada
STR_GAME_OPTIONS_CURRENCY_GEL :Lari georgià (GEL)
STR_GAME_OPTIONS_CURRENCY_IRR :Rial iranià (IRR)
STR_GAME_OPTIONS_CURRENCY_RUB :Ruble rus modern (RUB)
STR_GAME_OPTIONS_CURRENCY_MXN :Peso mexicà (MXN)
############ end of currency region
STR_GAME_OPTIONS_ROAD_VEHICLES_FRAME :{BLACK}Vehicles de carretera
@@ -990,7 +996,12 @@ STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_NORMAL :Normal
STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_2X_ZOOM :Doble
STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_4X_ZOOM :Quàdruple
STR_GAME_OPTIONS_FONT_ZOOM :{BLACK}Mida de la lletra
STR_GAME_OPTIONS_FONT_ZOOM_DROPDOWN_TOOLTIP :{BLACK}Seleccioneu la mida de les fonts de la interfície.
STR_GAME_OPTIONS_FONT_ZOOM_DROPDOWN_NORMAL :Normal
STR_GAME_OPTIONS_FONT_ZOOM_DROPDOWN_2X_ZOOM :Doble
STR_GAME_OPTIONS_FONT_ZOOM_DROPDOWN_4X_ZOOM :Quàdruple
STR_GAME_OPTIONS_BASE_GRF :{BLACK}Conjunt de gràfics base
STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Selecciona el conjunt de gràfics base a utilitzar
@@ -1259,6 +1270,8 @@ STR_CONFIG_SETTING_DYNAMIC_ENGINES_EXISTING_VEHICLES :{WHITE}No es po
STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE :Manteniment de la infraestructura: {STRING}
STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE_HELPTEXT :Quan està activat, la infraestructura provoca costos de manteniment. El cost creix proporcionalment al tamany de la xarxa de transport, afectant en conseqüència més a les companyies grosses que a les petites
STR_CONFIG_SETTING_COMPANY_STARTING_COLOUR :Color inicial de la companyia: {STRING}
STR_CONFIG_SETTING_COMPANY_STARTING_COLOUR_HELPTEXT :Escolliu el color inicial de la vostra companyia.
STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS :Els aeroports mai caduquen: {STRING}
STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS_HELPTEXT :Activant aquesta opció fa que cada tipus d'aeroport estigui disponible per sempre després de la seva introducció
@@ -1817,6 +1830,7 @@ STR_CHEAT_CHANGE_DATE_QUERY_CAPT :{WHITE}Canvia l
STR_CHEAT_SETUP_PROD :{LTBLUE}Activa la modificació dels valors de producció: {ORANGE}{STRING}
# Livery window
STR_LIVERY_CAPTION :{WHITE}{COMPANY} - Esquema de colors nou
STR_LIVERY_GENERAL_TOOLTIP :{BLACK}Mostra esquemes de colors generals
STR_LIVERY_TRAIN_TOOLTIP :{BLACK}Mostra els esquemes de colors dels trens
@@ -2076,6 +2090,7 @@ STR_NETWORK_CONNECTION_DISCONNECT :{BLACK}Desconne
STR_NETWORK_NEED_GAME_PASSWORD_CAPTION :{WHITE}Servidor protegit: escriviu-ne la contrasenya
STR_NETWORK_NEED_COMPANY_PASSWORD_CAPTION :{WHITE}Companyia protegida: escriviu-ne la contrasenya
STR_NETWORK_COMPANY_LIST_CLIENT_LIST_CAPTION :{WHITE}Llista de clients
# Network company list added strings
STR_NETWORK_COMPANY_LIST_CLIENT_LIST :Llista de clients
@@ -2376,7 +2391,7 @@ STR_BUILD_SIGNAL_ELECTRIC_COMBO_TOOLTIP :{BLACK}Senyal p
STR_BUILD_SIGNAL_ELECTRIC_PBS_TOOLTIP :{BLACK}Senyal de ruta (elèctric){}Un senyal de ruta permet entrar més d'un tren dins de la mateixa secció de vies. Cal, però, que sigui capaç de reservar una ruta fins un punt de parada segur sense creuar-se amb cap altre tren. Es pot travessar en el sentit contrari al senyal.
STR_BUILD_SIGNAL_ELECTRIC_PBS_OWAY_TOOLTIP :{BLACK}Senyal de ruta d'un sentit (elèctric){}Un senyal de ruta permet entrar més d'un tren dins de la mateixa secció de vies. Cal, però, que sigui capaç de reservar una ruta fins un punt de parada segur sense creuar-se amb cap altre tren. No es pot travessar en el sentit contrari al senyal.
STR_BUILD_SIGNAL_CONVERT_TOOLTIP :{BLACK}Conversió de senyals{}Quan aquest botó està premut, si es clica un senyal existent el converteix al tipus de senyal seleccionat. Ctrl+Clic commuta la variant existent. Maj+Clic mostra el cost estimat de conversió.
STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_TOOLTIP :{BLACK}Espaiat entre senyals
STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_TOOLTIP :{BLACK}Distància entre senyals
STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_DECREASE_TOOLTIP :{BLACK}Disminueix l'espai entre senyals consecutives situades automàticament quan s'arrossega el ratolí o es manté premuda la tecla Ctrl.
STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_INCREASE_TOOLTIP :{BLACK}Augmenta l'espai entre senyals consecutives situades automàticament quan s'arrossega el ratolí o es manté premuda la tecla Ctrl.
@@ -2703,36 +2718,39 @@ STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD
# Framerate display window
STR_FRAMERATE_CAPTION :{WHITE}Fotogrames per segon
STR_FRAMERATE_CAPTION_SMALL :{STRING}{WHITE} (x{DECIMAL})
STR_FRAMERATE_RATE_GAMELOOP :{WHITE}Velocitat de simulació: {STRING}
STR_FRAMERATE_RATE_GAMELOOP :{BLACK}Velocitat de simulació: {STRING}
STR_FRAMERATE_RATE_GAMELOOP_TOOLTIP :{BLACK}Nombre de tics del joc per segon.
STR_FRAMERATE_RATE_BLITTER :{WHITE}Fotogrames per segon: {STRING}
STR_FRAMERATE_RATE_BLITTER :{BLACK}Fotogrames per segon: {STRING}
STR_FRAMERATE_RATE_BLITTER_TOOLTIP :{BLACK}Nombre de fotogrames renderitzats per segon.
STR_FRAMERATE_SPEED_FACTOR :{WHITE}Factor de velocitat actual: x{DECIMAL}
STR_FRAMERATE_SPEED_FACTOR :{BLACK}Factor de velocitat actual: x{DECIMAL}
STR_FRAMERATE_SPEED_FACTOR_TOOLTIP :{BLACK}Quant ràpid va la partida actual, comparant-ho amb l'estimació de la velocitat normal.
STR_FRAMERATE_CURRENT :{WHITE}Actual
STR_FRAMERATE_AVERAGE :{WHITE}Mitjana
STR_FRAMERATE_DATA_POINTS :{WHITE}Dades basades en {COMMA} mesures.
STR_FRAMERATE_MS_GOOD :{LTBLUE}{DECIMAL}{WHITE}{NBSP}ms
STR_FRAMERATE_MS_WARN :{YELLOW}{DECIMAL}{WHITE}{NBSP}ms
STR_FRAMERATE_MS_BAD :{RED}{DECIMAL}{WHITE}{NBSP}ms
STR_FRAMERATE_FPS_GOOD :{LTBLUE}{DECIMAL}{WHITE}{NBSP}fps
STR_FRAMERATE_FPS_WARN :{YELLOW}{DECIMAL}{WHITE}{NBSP}fps
STR_FRAMERATE_FPS_BAD :{RED}{DECIMAL}{WHITE}{NBSP}fps
STR_FRAMERATE_DATA_POINTS :{BLACK}Dades basades en {COMMA} mesures.
STR_FRAMERATE_MS_GOOD :{LTBLUE}{DECIMAL}{NBSP}ms
STR_FRAMERATE_MS_WARN :{YELLOW}{DECIMAL}{NBSP}ms
STR_FRAMERATE_MS_BAD :{RED}{DECIMAL}{NBSP}ms
STR_FRAMERATE_FPS_GOOD :{LTBLUE}{DECIMAL}{NBSP}fps
STR_FRAMERATE_FPS_WARN :{YELLOW}{DECIMAL}{NBSP}fps
STR_FRAMERATE_FPS_BAD :{RED}{DECIMAL}{NBSP}fps
STR_FRAMERATE_GRAPH_MILLISECONDS :{TINY_FONT}{COMMA}{NBSP}ms
STR_FRAMERATE_GRAPH_SECONDS :{TINY_FONT}{COMMA}{NBSP}s
############ Leave those lines in this order!!
STR_FRAMERATE_GAMELOOP :{WHITE}Total del bucle:
STR_FRAMERATE_GL_ECONOMY :{WHITE} Tractament de la càrrega:
STR_FRAMERATE_GL_TRAINS :{WHITE} Tics de tren:
STR_FRAMERATE_GL_ROADVEHS :{WHITE} Tics de vehicles de carretera:
STR_FRAMERATE_GL_SHIPS :{WHITE} Tics de vaixell:
STR_FRAMERATE_GL_AIRCRAFT :{WHITE} Tics d'aeronau:
STR_FRAMERATE_GL_LANDSCAPE :{WHITE} Tics del mapa:
STR_FRAMERATE_GL_LINKGRAPH :{WHITE} Retard del graf de distribució:
STR_FRAMERATE_DRAWING :{WHITE}Renderitzat de gràfics:
STR_FRAMERATE_DRAWING_VIEWPORTS :{WHITE} Vistes del mapa:
STR_FRAMERATE_VIDEO :{WHITE}Sortida de vídeo:
STR_FRAMERATE_SOUND :{WHITE}Mescla de so:
STR_FRAMERATE_GAMELOOP :{BLACK}Total del bucle:
STR_FRAMERATE_GL_ECONOMY :{BLACK} Tractament de càrrega:
STR_FRAMERATE_GL_TRAINS :{BLACK} Tics de trens:
STR_FRAMERATE_GL_ROADVEHS :{BLACK} Tics de vehicles de carretera:
STR_FRAMERATE_GL_SHIPS :{BLACK} Tics de vaixells:
STR_FRAMERATE_GL_AIRCRAFT :{BLACK} Tics d'aeronaus:
STR_FRAMERATE_GL_LANDSCAPE :{BLACK} Tics del mapa:
STR_FRAMERATE_GL_LINKGRAPH :{BLACK} Retard del graf de distribució:
STR_FRAMERATE_DRAWING :{BLACK}Renderitzat de gràfics:
STR_FRAMERATE_DRAWING_VIEWPORTS :{BLACK} Vistes del mapa:
STR_FRAMERATE_VIDEO :{BLACK}Sortida de vídeo:
STR_FRAMERATE_SOUND :{BLACK}Mescla de so:
STR_FRAMERATE_ALLSCRIPTS :{BLACK} Total GS/IA:
STR_FRAMERATE_GAMESCRIPT :{BLACK} Script de partida:
STR_FRAMERATE_AI :{BLACK} IA {NUM} {STRING}
############ End of leave-in-this-order
############ Leave those lines in this order!!
STR_FRAMETIME_CAPTION_GAMELOOP :Bucle
@@ -2747,6 +2765,9 @@ STR_FRAMETIME_CAPTION_DRAWING :Renderitzat de
STR_FRAMETIME_CAPTION_DRAWING_VIEWPORTS :Renderitzat de la vista del mapa
STR_FRAMETIME_CAPTION_VIDEO :Sortida de vídeo
STR_FRAMETIME_CAPTION_SOUND :Mescla de so
STR_FRAMETIME_CAPTION_ALLSCRIPTS :Total de scripts d'IA/GS
STR_FRAMETIME_CAPTION_GAMESCRIPT :Script de partida
STR_FRAMETIME_CAPTION_AI :AI {NUM}: {STRING}
############ End of leave-in-this-order
@@ -2772,6 +2793,9 @@ STR_SAVELOAD_DETAIL_CAPTION :{BLACK}Detalls
STR_SAVELOAD_DETAIL_NOT_AVAILABLE :{BLACK}No hi ha informació disponible
STR_SAVELOAD_DETAIL_COMPANY_INDEX :{SILVER}{COMMA}: {WHITE}{STRING}
STR_SAVELOAD_DETAIL_GRFSTATUS :{SILVER}NewGRF: {WHITE}{STRING}
STR_SAVELOAD_FILTER_TITLE :{BLACK}Cadena de filtre:
STR_SAVELOAD_OVERWRITE_TITLE :{WHITE}Sobreescriu fitxer
STR_SAVELOAD_OVERWRITE_WARNING :{YELLOW}Esteu segur que voleu sobreescriure el fitxer?
STR_SAVELOAD_OSKTITLE :{BLACK}Posa el nom amb què desar la partida actual
@@ -2889,7 +2913,12 @@ STR_NEWGRF_SETTINGS_VERSION :{BLACK}Versió:
STR_NEWGRF_SETTINGS_MIN_VERSION :{BLACK}Mín. versió compatible: {SILVER}{NUM}
STR_NEWGRF_SETTINGS_MD5SUM :{BLACK}MD5sum: {SILVER}{STRING}
STR_NEWGRF_SETTINGS_PALETTE :{BLACK}Paleta: {SILVER}{STRING}
STR_NEWGRF_SETTINGS_PALETTE_DEFAULT :Per defecte (D)
STR_NEWGRF_SETTINGS_PALETTE_DEFAULT_32BPP :Per defecte (D) / 32 bpp
STR_NEWGRF_SETTINGS_PALETTE_LEGACY :Antic (W)
STR_NEWGRF_SETTINGS_PALETTE_LEGACY_32BPP :Antic (W) / 32 bpp
STR_NEWGRF_SETTINGS_PARAMETER :{BLACK}Paràmetres: {SILVER}{STRING}
STR_NEWGRF_SETTINGS_PARAMETER_NONE :Cap
STR_NEWGRF_SETTINGS_NO_INFO :{BLACK}No hi ha informació disponible
STR_NEWGRF_SETTINGS_NOT_FOUND :{RED}No s'ha trobat cap arxiu coincident
@@ -2970,6 +2999,8 @@ STR_NEWGRF_ERROR_READ_BOUNDS :S'ha llegit des
STR_NEWGRF_ERROR_GRM_FAILED :Els recursos GRF demanats no estan disponibles (sprite {3:NUM})
STR_NEWGRF_ERROR_FORCEFULLY_DISABLED :{1:STRING} ha estat desactivat per {STRING}
STR_NEWGRF_ERROR_INVALID_SPRITE_LAYOUT :Format de disposició de sprite no vàlid o desconegut (sprite {3:NUM}).
STR_NEWGRF_ERROR_LIST_PROPERTY_TOO_LONG :Hi ha massa elements a la llista de valors de propietats (sprite {3:NUM}, propietat {4:HEX})
STR_NEWGRF_ERROR_INDPROD_CALLBACK :«Callback» de producció d'indústria no vàlid (sprite {3:NUM}, «{2:STRING}»).
# NewGRF related 'general' warnings
STR_NEWGRF_POPUP_CAUTION_CAPTION :{WHITE}Alerta!
@@ -3095,6 +3126,7 @@ STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_BRIBE :{YELLOW}Suborna
# Goal window
STR_GOALS_CAPTION :{WHITE}{COMPANY} Objectius
STR_GOALS_SPECTATOR_CAPTION :{WHITE}Objectius globals
STR_GOALS_SPECTATOR :Objectius globals
STR_GOALS_GLOBAL_TITLE :{BLACK}Objectius globals:
STR_GOALS_TEXT :{ORANGE}{STRING}
STR_GOALS_NONE :{ORANGE}- Cap -
@@ -3143,6 +3175,7 @@ STR_SUBSIDIES_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Clica al
# Story book window
STR_STORY_BOOK_CAPTION :{WHITE}Llibre de Partida de {COMPANY}
STR_STORY_BOOK_SPECTATOR_CAPTION :{WHITE}Llibre Global de Partida
STR_STORY_BOOK_SPECTATOR :Llibre de partida global
STR_STORY_BOOK_TITLE :{YELLOW}{STRING}
STR_STORY_BOOK_GENERIC_PAGE_ITEM :Pàgina {NUM}
STR_STORY_BOOK_SEL_PAGE_TOOLTIP :{BLACK}Salteu a una pàgina seleccionant-la en aquesta llista desplegable.
@@ -3347,6 +3380,9 @@ STR_INDUSTRY_VIEW_LOCATION_TOOLTIP :{BLACK}Centra l
STR_INDUSTRY_VIEW_PRODUCTION_LEVEL :{BLACK}Nivell de producció: {YELLOW}{COMMA}%
STR_INDUSTRY_VIEW_INDUSTRY_ANNOUNCED_CLOSURE :{YELLOW}La indústria ha anunciat la seva clausura imminent!
STR_INDUSTRY_VIEW_REQUIRES_N_CARGO :{BLACK}Requereix: {YELLOW}{STRING}{STRING}
STR_INDUSTRY_VIEW_PRODUCES_N_CARGO :{BLACK}Produeix: {YELLOW}{STRING}{STRING}
STR_INDUSTRY_VIEW_CARGO_LIST_EXTENSION :, {STRING}{STRING}
STR_INDUSTRY_VIEW_REQUIRES :{BLACK}Necessita:
STR_INDUSTRY_VIEW_ACCEPT_CARGO :{YELLOW}{STRING}{BLACK}{3:STRING}
@@ -3404,6 +3440,7 @@ STR_GROUPS_CLICK_ON_GROUP_FOR_TOOLTIP :{BLACK}Grups -
STR_GROUP_CREATE_TOOLTIP :{BLACK}Clica per crear un grup
STR_GROUP_DELETE_TOOLTIP :{BLACK}Elimina el grup seleccionat
STR_GROUP_RENAME_TOOLTIP :{BLACK}Canvia el nom del grup seleccionat
STR_GROUP_LIVERY_TOOLTIP :{BLACK}Canvia l'aspecte dels vehicles del grup seleccionat.
STR_GROUP_REPLACE_PROTECTION_TOOLTIP :{BLACK}Clica per protegir aquest grup de l'autosubstitueix global
STR_QUERY_GROUP_DELETE_CAPTION :{WHITE}Esborrar grup
@@ -3447,6 +3484,7 @@ STR_PURCHASE_INFO_AIRCRAFT_CAPACITY :{BLACK}Capacita
STR_PURCHASE_INFO_PWAGPOWER_PWAGWEIGHT :{BLACK}Vagons Automotrius: {GOLD}+{POWER}{BLACK} Pes: {GOLD}+{WEIGHT_SHORT}
STR_PURCHASE_INFO_REFITTABLE_TO :{BLACK}Remodelable a: {GOLD}{STRING}
STR_PURCHASE_INFO_ALL_TYPES :Totes les càrregues
STR_PURCHASE_INFO_NONE :Cap
STR_PURCHASE_INFO_ALL_BUT :Qualsevol excepte {CARGO_LIST}
STR_PURCHASE_INFO_MAX_TE :{BLACK}Esforç de tracció màxim: {GOLD}{FORCE}
STR_PURCHASE_INFO_AIRCRAFT_RANGE :{BLACK}Abast: {GOLD}{COMMA} cel·les
@@ -3846,6 +3884,7 @@ STR_ORDER_CONDITIONAL_AGE :Antiguitat (any
STR_ORDER_CONDITIONAL_REQUIRES_SERVICE :Necessita revisió
STR_ORDER_CONDITIONAL_UNCONDITIONALLY :Sempre
STR_ORDER_CONDITIONAL_REMAINING_LIFETIME :Temps de vida restant (anys)
STR_ORDER_CONDITIONAL_MAX_RELIABILITY :Fiabilitat màxima
STR_ORDER_CONDITIONAL_COMPARATOR_TOOLTIP :{BLACK}Com comparar les dades del vehicle al valor donat
STR_ORDER_CONDITIONAL_COMPARATOR_EQUALS :és igual a

View File

@@ -2843,6 +2843,9 @@ STR_FRAMERATE_DRAWING :{BLACK}Prikaz g
STR_FRAMERATE_DRAWING_VIEWPORTS :{BLACK} Prikazi svijeta:
STR_FRAMERATE_VIDEO :{BLACK}Video izlaz:
STR_FRAMERATE_SOUND :{BLACK}Miksanje zvukova:
STR_FRAMERATE_ALLSCRIPTS :{BLACK} Ukupni broj GS/AI:
STR_FRAMERATE_GAMESCRIPT :{BLACK} Skripta Igre:
STR_FRAMERATE_AI :{BLACK} AI {NUM} {STRING}
############ End of leave-in-this-order
############ Leave those lines in this order!!
STR_FRAMETIME_CAPTION_GAMELOOP :Petlja igre
@@ -2857,6 +2860,9 @@ STR_FRAMETIME_CAPTION_DRAWING :Prikaz grafike
STR_FRAMETIME_CAPTION_DRAWING_VIEWPORTS :Prikazi svijeta
STR_FRAMETIME_CAPTION_VIDEO :Video izlaz
STR_FRAMETIME_CAPTION_SOUND :Miksanje zvukova
STR_FRAMETIME_CAPTION_ALLSCRIPTS :GS/AI broj skripti
STR_FRAMETIME_CAPTION_GAMESCRIPT :Skripta Igre
STR_FRAMETIME_CAPTION_AI :AI {NUM} {STRING}
############ End of leave-in-this-order
@@ -3089,7 +3095,7 @@ STR_NEWGRF_ERROR_GRM_FAILED :Zatraženi GRF
STR_NEWGRF_ERROR_FORCEFULLY_DISABLED :{1:STRING} je isključen od strane {STRING}
STR_NEWGRF_ERROR_INVALID_SPRITE_LAYOUT :Pogrešan/nepoznat format raspored sprite-a (sprite {3:NUM})
STR_NEWGRF_ERROR_LIST_PROPERTY_TOO_LONG :Previše elemenata na listi postavki varijabli (sprite {3:NUM}, postavka {4:HEX})
STR_NEWGRF_ERROR_INDPROD_CALLBACK :Pogrešna callback funkcija za industrijsku proizvodnju (sprite {3:NUM}, "{1:STRING}")
STR_NEWGRF_ERROR_INDPROD_CALLBACK :Pogrešna callback funkcija za industrijsku proizvodnju (sprite {3:NUM}, "{2:STRING}")
# NewGRF related 'general' warnings
STR_NEWGRF_POPUP_CAUTION_CAPTION :{WHITE}Oprez!
@@ -3121,6 +3127,7 @@ STR_NEWGRF_BUGGY :{WHITE}NewGRF '
STR_NEWGRF_BUGGY_ARTICULATED_CARGO :{WHITE}Informacija o teretu/remontu za '{1:ENGINE}' je različita od kupovne liste nakon izgradnje. Zbog toga bi automatsko obnavljanje/zamjena mogla biti neuspješna
STR_NEWGRF_BUGGY_ENDLESS_PRODUCTION_CALLBACK :{G=male}{WHITE}'{1:STRING}' je uzrokovao beskonačnu petlju u pozivu za povrat produkcije
STR_NEWGRF_BUGGY_UNKNOWN_CALLBACK_RESULT :{WHITE}Povratnica {1:HEX} je vratio nepoznat/nemoguć rezultat {2:HEX}
STR_NEWGRF_BUGGY_INVALID_CARGO_PRODUCTION_CALLBACK :{WHITE}'{1:STRING}' callback funkcija za proizvodnju je vratila nevažeći teret na {2:HEX}
# 'User removed essential NewGRFs'-placeholders for stuff without specs
STR_NEWGRF_INVALID_CARGO :<pogrešan teret>
@@ -3635,7 +3642,7 @@ STR_DEPOT_VEHICLE_TOOLTIP :{BLACK}{ENGINE}
STR_DEPOT_VEHICLE_TOOLTIP_CHAIN :{BLACK}{NUM} vozil{P o a a}{STRING}
STR_DEPOT_VEHICLE_TOOLTIP_CARGO :{}{CARGO_LONG} ({CARGO_SHORT})
STR_DEPOT_TRAIN_LIST_TOOLTIP :{BLACK}Vlakovi - drži lijevi klik i vuci vozilo za dodavanje/skidanjed iz vlaka, desni klik za informacije. Drži tipku Ctrl da obje funkcije rade na slijedu
STR_DEPOT_TRAIN_LIST_TOOLTIP :{BLACK}Vlakovi - drži lijevi klik i vuci vozilo za dodavanje/skidanje iz vlaka, desni klik za informacije. Drži tipku Ctrl da obje funkcije rade na slijedu
STR_DEPOT_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Vozila - desni klik na vozilo za informacije
STR_DEPOT_SHIP_LIST_TOOLTIP :{BLACK}Brodovi - desni klik na brod za informacije
STR_DEPOT_AIRCRAFT_LIST_TOOLTIP :{BLACK}Zrakoplov - desni klik na zrakoplov za informacije

View File

@@ -373,7 +373,7 @@ STR_SCENEDIT_FILE_MENU_QUIT :Afslut
############ range for SE file menu starts
############ range for settings menu starts
STR_SETTINGS_MENU_GAME_OPTIONS :Spilvalg
STR_SETTINGS_MENU_GAME_OPTIONS :Opsætning
STR_SETTINGS_MENU_CONFIG_SETTINGS_TREE :Indstillinger
STR_SETTINGS_MENU_SCRIPT_SETTINGS :AI/spilscript-indstillinger
STR_SETTINGS_MENU_NEWGRF_SETTINGS :NewGRF indstillinger
@@ -391,7 +391,7 @@ STR_SETTINGS_MENU_TRANSPARENT_SIGNS :Gennemsigtige s
############ range for file menu starts
STR_FILE_MENU_SAVE_GAME :Gem spil
STR_FILE_MENU_LOAD_GAME :Hent spil
STR_FILE_MENU_LOAD_GAME :Fortsæt spil
STR_FILE_MENU_QUIT_GAME :Forlad spillet
STR_FILE_MENU_SEPARATOR :
STR_FILE_MENU_EXIT :Afslut
@@ -840,7 +840,7 @@ STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL :{BIG_FONT}{BLAC
STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_FARM :{BIG_FONT}{BLACK}Insekter foresager kaos ved {INDUSTRY}!{}Produktionen er faldet med 50%
STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_SMOOTH :{BIG_FONT}{BLACK}{STRING}produktionen på {INDUSTRY} sænkes med {COMMA}%!
STR_NEWS_TRAIN_IS_WAITING :{WHITE}{VEHICLE} venter i remisen
STR_NEWS_TRAIN_IS_WAITING :{WHITE}{VEHICLE} afventer i remisen
STR_NEWS_ROAD_VEHICLE_IS_WAITING :{WHITE}{VEHICLE} venter på værkstedet
STR_NEWS_SHIP_IS_WAITING :{WHITE}{VEHICLE} venter i skibsdokken
STR_NEWS_AIRCRAFT_IS_WAITING :{WHITE}{VEHICLE} venter i hangaren
@@ -892,7 +892,7 @@ STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW :{BLACK}Flyt hov
STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW_TT :{BLACK}Bevæg hovedvisningen til samme sted som dette vindue
# Game options window
STR_GAME_OPTIONS_CAPTION :{WHITE}Spilvalg
STR_GAME_OPTIONS_CAPTION :{WHITE}Opsætning
STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}Valutaenhed
STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}Valg af valutaenhed
@@ -1422,8 +1422,8 @@ STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE :Vis ankomst og
STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE_HELPTEXT :Vis forventede ankomst-og afgangstider i tidsplaner
STR_CONFIG_SETTING_QUICKGOTO :Hurtig oprettelse af køretøjsordrer: {STRING}
STR_CONFIG_SETTING_QUICKGOTO_HELPTEXT :Forvælg 'gå-til' når du åbner ordrer vinduet
STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE :Standard skinnetype (efter nyt spil/hentet spil): {STRING}
STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_HELPTEXT :Hvilken sportype der skal vælges efter start eller hentning af et spil. 'første tilgængelige' vælger den ældste type spor, 'sidste tilgængelige' vælger den nyeste form for spor, og 'mest anvendte' vælger den type, der i øjeblikket er mest i brug
STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE :Standard sportype (efter nyt spil/indlæst spil): {STRING}
STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_HELPTEXT :Hvilken sportype der skal vælges efter start eller indlæsning af et spil. 'Første tilgængelige' vælger den ældste type spor, 'sidste tilgængelige' vælger den nyeste form for spor, og 'mest anvendte' vælger den type, der i øjeblikket er mest i brug
STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_FIRST :Første tilgængelige
STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_LAST :Sidste tilgængelige
STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_MOST_USED :Mest anvendte
@@ -1749,13 +1749,13 @@ STR_CONFIG_ERROR_SPRITECACHE_TOO_BIG :{WHITE}Allokeri
STR_INTRO_CAPTION :{WHITE}OpenTTD {REV}
STR_INTRO_NEW_GAME :{BLACK}Nyt spil
STR_INTRO_LOAD_GAME :{BLACK}Hent spil
STR_INTRO_LOAD_GAME :{BLACK}Fortsæt spil
STR_INTRO_PLAY_SCENARIO :{BLACK}Spil et scenarie
STR_INTRO_PLAY_HEIGHTMAP :{BLACK}Spil højdekort
STR_INTRO_SCENARIO_EDITOR :{BLACK}Scenarieeditor
STR_INTRO_MULTIPLAYER :{BLACK}Netværksspil
STR_INTRO_GAME_OPTIONS :{BLACK}Spilvalg
STR_INTRO_GAME_OPTIONS :{BLACK}Opsætning
STR_INTRO_HIGHSCORE :{BLACK} Topresultater
STR_INTRO_CONFIG_SETTINGS_TREE :{BLACK}Indstillinger
STR_INTRO_NEWGRF_SETTINGS :{BLACK}NewGRF indstillinger
@@ -1764,7 +1764,7 @@ STR_INTRO_SCRIPT_SETTINGS :{BLACK}AI/Spils
STR_INTRO_QUIT :{BLACK}Afslut
STR_INTRO_TOOLTIP_NEW_GAME :{BLACK}Start et nyt spil. Ctrl+Klik springer kortindstillingerne over.
STR_INTRO_TOOLTIP_LOAD_GAME :{BLACK}Hent et gemt spil
STR_INTRO_TOOLTIP_LOAD_GAME :{BLACK}Fortsæt et gemt spil
STR_INTRO_TOOLTIP_PLAY_HEIGHTMAP :{BLACK}Start et nyt spil med et højdekort som landskab
STR_INTRO_TOOLTIP_PLAY_SCENARIO :{BLACK}Start et nyt spil med et brugerdefineret scenarie
STR_INTRO_TOOLTIP_SCENARIO_EDITOR :{BLACK}Lav en brugerdefineret verden/scenarie
@@ -1775,7 +1775,7 @@ STR_INTRO_TOOLTIP_SUB_ARCTIC_LANDSCAPE :{BLACK}Vælg 's
STR_INTRO_TOOLTIP_SUB_TROPICAL_LANDSCAPE :{BLACK}Vælg 'subtropisk' landskab
STR_INTRO_TOOLTIP_TOYLAND_LANDSCAPE :{BLACK}Vælg 'legetøjsland' landskab
STR_INTRO_TOOLTIP_GAME_OPTIONS :{BLACK}Vis spilvalg
STR_INTRO_TOOLTIP_GAME_OPTIONS :{BLACK}Sæt spillet op
STR_INTRO_TOOLTIP_HIGHSCORE :{BLACK}Hvis topscoreliste
STR_INTRO_TOOLTIP_CONFIG_SETTINGS_TREE :{BLACK}Skærm indstillinger
STR_INTRO_TOOLTIP_NEWGRF_SETTINGS :{BLACK}Vis NewGRF-indstillinger
@@ -1882,7 +1882,7 @@ STR_FACE_SIMPLE :{BLACK}Simpel
STR_FACE_SIMPLE_TOOLTIP :{BLACK}Simpelt valg af ansigt.
STR_FACE_LOAD :{BLACK}Hent
STR_FACE_LOAD_TOOLTIP :{BLACK}Hent favoritansigt
STR_FACE_LOAD_DONE :{WHITE}Dit favoritansigt er hentet fra OpenTTD-konfigurationsfilen.
STR_FACE_LOAD_DONE :{WHITE}Dit favoritansigt er indlæst fra OpenTTD konfigurationsfilen.
STR_FACE_FACECODE :{BLACK}Spiller ansigtsnr.
STR_FACE_FACECODE_TOOLTIP :{BLACK}Vis og/eller indstil spillers ansigtsnummer
STR_FACE_FACECODE_CAPTION :{WHITE}Vis og/eller indstil spillers ansigtsnummer
@@ -2062,8 +2062,8 @@ STR_NETWORK_GAME_LOBBY_PLAYERS :{SILVER}Spiller
STR_NETWORK_GAME_LOBBY_NEW_COMPANY :{BLACK}Nyt selskab
STR_NETWORK_GAME_LOBBY_NEW_COMPANY_TOOLTIP :{BLACK}Opret et nyt selskab
STR_NETWORK_GAME_LOBBY_SPECTATE_GAME :{BLACK}Tilskuer spil
STR_NETWORK_GAME_LOBBY_SPECTATE_GAME_TOOLTIP :{BLACK}Se et spil som tilskuer
STR_NETWORK_GAME_LOBBY_SPECTATE_GAME :{BLACK}Tilskuer
STR_NETWORK_GAME_LOBBY_SPECTATE_GAME_TOOLTIP :{BLACK}Tilslut spillet som tilskuer
STR_NETWORK_GAME_LOBBY_JOIN_COMPANY :{BLACK}Tilslut dig selskab
STR_NETWORK_GAME_LOBBY_JOIN_COMPANY_TOOLTIP :{BLACK}Hjælp med at bestyrre dette selskab
@@ -2152,7 +2152,7 @@ STR_NETWORK_ERROR_SERVER_ERROR :{WHITE}Der opst
STR_NETWORK_ERROR_WRONG_REVISION :{WHITE}Revisionen af denne klient passer ikke sammen med serverens revision
STR_NETWORK_ERROR_WRONG_PASSWORD :{WHITE}Forkert kodeord
STR_NETWORK_ERROR_SERVER_FULL :{WHITE}Serveren er fuld
STR_NETWORK_ERROR_SERVER_BANNED :{WHITE}Du har forbud mod at bruge denne server
STR_NETWORK_ERROR_SERVER_BANNED :{WHITE}Du er bandlyst fra denne server
STR_NETWORK_ERROR_KICKED :{WHITE}Du blev smidt ud af spillet
STR_NETWORK_ERROR_CHEATER :{WHITE}Snyderi er ikke tilladt på denne server
STR_NETWORK_ERROR_TOO_MANY_COMMANDS :{WHITE}Du sendte for mange kommandoer til serveren
@@ -2348,7 +2348,7 @@ STR_RAIL_TOOLBAR_TOOLTIP_CONVERT_RAIL :{BLACK}Ombyg/op
STR_RAIL_NAME_RAILROAD :Jernbane
STR_RAIL_NAME_ELRAIL :Elektrisk jernbane
STR_RAIL_NAME_MONORAIL :Monorail
STR_RAIL_NAME_MAGLEV :Magnetskinne
STR_RAIL_NAME_MAGLEV :Magnetsvævebane
# Rail depot construction window
STR_BUILD_DEPOT_TRAIN_ORIENTATION_CAPTION :{WHITE}Retning af remise
@@ -2772,12 +2772,12 @@ STR_FRAMETIME_CAPTION_AI :AI {NUM} {STRIN
# Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}Gem spil
STR_SAVELOAD_LOAD_CAPTION :{WHITE}Hent spil
STR_SAVELOAD_LOAD_CAPTION :{WHITE}Fortsæt spil
STR_SAVELOAD_SAVE_SCENARIO :{WHITE}Gem scenarie
STR_SAVELOAD_LOAD_SCENARIO :{WHITE}Hent scenarie
STR_SAVELOAD_LOAD_HEIGHTMAP :{WHITE}Hent højdekort
STR_SAVELOAD_SAVE_HEIGHTMAP :{WHITE}Gem højdekort
STR_SAVELOAD_HOME_BUTTON :{BLACK}Klik her for at gå til det nuværende standard gemme/hente bibliotek
STR_SAVELOAD_HOME_BUTTON :{BLACK}Klik her for at gå til den nuværende standard gem/indlæs mappe
STR_SAVELOAD_BYTES_FREE :{BLACK}{BYTES} fri
STR_SAVELOAD_LIST_TOOLTIP :{BLACK}Liste over drev, biblioteker og gemte spilfiler
STR_SAVELOAD_EDITBOX_TOOLTIP :{BLACK}Nuværende gemte spils navn
@@ -2999,7 +2999,7 @@ STR_NEWGRF_ERROR_GRM_FAILED :De ønskede GRF
STR_NEWGRF_ERROR_FORCEFULLY_DISABLED :{1:STRING} blev deaktiveret af {2:STRING}
STR_NEWGRF_ERROR_INVALID_SPRITE_LAYOUT :Ugyldigt/ukendt sprite layoutformat (sprite {3:NUM})
STR_NEWGRF_ERROR_LIST_PROPERTY_TOO_LONG :For mange elementer i værdiliste for egenskab (sprite {3:NUM}, egenskab {4:HEX})
STR_NEWGRF_ERROR_INDPROD_CALLBACK :Ugyldig produktion-callback for industri (sprite {3:NUM}, "{1:STRING}")
STR_NEWGRF_ERROR_INDPROD_CALLBACK :Ugyldig produktion-callback for industri (sprite {3:NUM}, "{2:STRING}")
# NewGRF related 'general' warnings
STR_NEWGRF_POPUP_CAUTION_CAPTION :{WHITE}Advarsel!
@@ -3031,6 +3031,7 @@ STR_NEWGRF_BUGGY :{WHITE}NewGRF '
STR_NEWGRF_BUGGY_ARTICULATED_CARGO :{WHITE}Fragt-/ombygningsinformation for '{1:ENGINE}' afviger fra indkøbslisten efter konstruktion. Dette kan medføre, at autofornyelse ikke fungerer korrekt.
STR_NEWGRF_BUGGY_ENDLESS_PRODUCTION_CALLBACK :{WHITE}'{1:STRING}' forårsagede en uendelig løkke i produktions-callback'en.
STR_NEWGRF_BUGGY_UNKNOWN_CALLBACK_RESULT :{WHITE}Callback {1:HEX} returnerede ukendt/ugyldigt resultat {2:HEX}
STR_NEWGRF_BUGGY_INVALID_CARGO_PRODUCTION_CALLBACK :{WHITE}'{1:STRING}' returnerede ugyldig godstype i produktion-callback ved {2:HEX}
# 'User removed essential NewGRFs'-placeholders for stuff without specs
STR_NEWGRF_INVALID_CARGO :<ikke gyldigt gods>
@@ -3258,7 +3259,7 @@ STR_STATION_VIEW_SCHEDULED_SHIPS_TOOLTIP :{BLACK}Vis alle
STR_STATION_VIEW_RENAME_STATION_CAPTION :Omdøb stationen/fragtcentralen
STR_STATION_VIEW_CLOSE_AIRPORT :{BLACK}Luk lufthavn
STR_STATION_VIEW_CLOSE_AIRPORT_TOOLTIP :{BLACK}Undgå at fly lander i denne lufthavn
STR_STATION_VIEW_CLOSE_AIRPORT_TOOLTIP :{BLACK}Forhindre at fly lander i denne lufthavn
# Waypoint/buoy view window
STR_WAYPOINT_VIEW_CAPTION :{WHITE}{WAYPOINT}
@@ -3457,7 +3458,7 @@ STR_GROUP_OCCUPANCY_VALUE :{NUM}%
# Build vehicle window
STR_BUY_VEHICLE_TRAIN_RAIL_CAPTION :Nye jernbanekøretøjer
STR_BUY_VEHICLE_TRAIN_ELRAIL_CAPTION :Nyt elektrisk lokomotiv
STR_BUY_VEHICLE_TRAIN_ELRAIL_CAPTION :Nye elektriske jernbanekøretøjer
STR_BUY_VEHICLE_TRAIN_MONORAIL_CAPTION :Nye monorailkøretøjer
STR_BUY_VEHICLE_TRAIN_MAGLEV_CAPTION :Nye magnetskinnekøretøjer
@@ -3585,7 +3586,7 @@ STR_DEPOT_CLONE_AIRCRAFT :{BLACK}Klon fly
STR_DEPOT_CLONE_TRAIN_DEPOT_INFO :{BLACK}Dette vil købe en kopi af toget inklusiv alle vogne. Klik på denne knap og så på et tog indeni eller udenfor remisen. Ctrl-klik vil kopiere ordrer. Shift-klik vil vise prisoverslag.
STR_DEPOT_CLONE_ROAD_VEHICLE_DEPOT_INFO :{BLACK}Dette vil købe en kopi af køretøjet. Klik på denne knap og så på et køretøj indeni eller udenfor værkstedet. Ctrl-klik vil dele ordrer. Shift-klik viser anslået pris uden køb
STR_DEPOT_CLONE_SHIP_DEPOT_INFO :{BLACK}Dette vil købe en kopi af skibet. Klik på denne knap og så på et skib indeni eller udenfor dokken. Ctrl-klik vil dele ordrer. Shift-klik vil vise prisoverslag.
STR_DEPOT_CLONE_AIRCRAFT_INFO_HANGAR_WINDOW :{BLACK}Dette vil købe en kopi af et fly. Klik på denne knap og så på et fly indeni eller udenfor hangaren. Ctrl-klik vil dele ordrer. Shift-klik vil vise prisoverslag.
STR_DEPOT_CLONE_AIRCRAFT_INFO_HANGAR_WINDOW :{BLACK}Dette vil købe en kopi af et fly. Klik på denne knap og så på et fly indeni eller udenfor hangaren. Ctrl-klik vil dele ordrer. Shift-klik viser estimerede omkostninger uden at indkøbe
STR_DEPOT_TRAIN_LOCATION_TOOLTIP :{BLACK}Centrer skærmen over remisens lokalitet. Ctrl+Klik åbner et nyt vindue ved remisens lokalitet.
STR_DEPOT_ROAD_VEHICLE_LOCATION_TOOLTIP :{BLACK}Centrer skærmen over værkstedets lokalitet. Ctrl+Klik åbner et nyt vindue ved køretøjsværkstedets lokalitet.
@@ -3595,7 +3596,7 @@ STR_DEPOT_AIRCRAFT_LOCATION_TOOLTIP :{BLACK}Centrér
STR_DEPOT_VEHICLE_ORDER_LIST_TRAIN_TOOLTIP :{BLACK}Vis en liste over alle tog med denne remise i ordrelisten
STR_DEPOT_VEHICLE_ORDER_LIST_ROAD_VEHICLE_TOOLTIP :{BLACK}Vis liste over alle køretøjer med dette værksted i ordrelisten
STR_DEPOT_VEHICLE_ORDER_LIST_SHIP_TOOLTIP :{BLACK}Vis liste over alle skibe med denne skibsdok i ordrelisten
STR_DEPOT_VEHICLE_ORDER_LIST_AIRCRAFT_TOOLTIP :{BLACK}Vis liste over alle fly med en hangar ved denne lufthavn i ordrelisten
STR_DEPOT_VEHICLE_ORDER_LIST_AIRCRAFT_TOOLTIP :{BLACK}Hent en liste over alle fly der har hvilken som helst hangar ved denne lufthavn i deres ordrer
STR_DEPOT_MASS_STOP_DEPOT_TRAIN_TOOLTIP :{BLACK}Klik for at stoppe alle toge i remisen
STR_DEPOT_MASS_STOP_DEPOT_ROAD_VEHICLE_TOOLTIP :{BLACK}Klik for at stoppe alle køretøjer i værkstedet
@@ -3617,7 +3618,7 @@ STR_ENGINE_PREVIEW_ROAD_VEHICLE :vejkøretøj
STR_ENGINE_PREVIEW_AIRCRAFT :fly
STR_ENGINE_PREVIEW_SHIP :skib
STR_ENGINE_PREVIEW_MONORAIL_LOCOMOTIVE :monoraillokomotiv
STR_ENGINE_PREVIEW_MAGLEV_LOCOMOTIVE :magnetskinnelokomotiv
STR_ENGINE_PREVIEW_MAGLEV_LOCOMOTIVE :magnettog
STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER :{BLACK}Pris: {CURRENCY_LONG} Vægt: {WEIGHT_SHORT}{}Hastighed: {VELOCITY} Styrke: {POWER}{}Driftsomkostninger: {CURRENCY_LONG}/år{}Kapacitet: {CARGO_LONG}
STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER_MAX_TE :{BLACK}Pris: {CURRENCY_LONG} Vægt: {WEIGHT_SHORT}{}Hastighed: {VELOCITY} Hestekræfter: {POWER} Maks. Trækkraft: {6:FORCE}{}Driftsomkostning: {4:CURRENCY_LONG}/år{}Kapacitet: {5:CARGO_LONG}
@@ -4052,7 +4053,7 @@ STR_DATE_YEAR_TOOLTIP :{BLACK}Vælg å
# AI debug window
STR_AI_DEBUG :{WHITE}Computerspiller/Spilscript-debug
STR_AI_DEBUG :{WHITE}KI/Spilscript-debug
STR_AI_DEBUG_NAME_AND_VERSION :{BLACK}{STRING} (v{NUM})
STR_AI_DEBUG_NAME_TOOLTIP :{BLACK}Navn på scriptet
STR_AI_DEBUG_SETTINGS :{BLACK}Indstillinger
@@ -4089,7 +4090,7 @@ STR_AI_CONFIG_MOVE_DOWN :{BLACK}Flyt ned
STR_AI_CONFIG_MOVE_DOWN_TOOLTIP :{BLACK}Flyt valgte computerspiller ned i listen
STR_AI_CONFIG_GAMESCRIPT :{SILVER}Spilscript
STR_AI_CONFIG_AI :{SILVER}AIer
STR_AI_CONFIG_AI :{SILVER}KI'er
STR_AI_CONFIG_CHANGE :{BLACK}Vælg {STRING}
STR_AI_CONFIG_CHANGE_NONE :Ingen ændringer
@@ -4165,7 +4166,7 @@ STR_ERROR_AUTOSAVE_FAILED :{WHITE}Fejl und
STR_ERROR_UNABLE_TO_READ_DRIVE :{BLACK}Kan ikke læse drevet
STR_ERROR_GAME_SAVE_FAILED :{WHITE}Fejl under gemning af spil{}{STRING}
STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}Kan ikke slette fil
STR_ERROR_GAME_LOAD_FAILED :{WHITE}Fejl under hentning af spil{}{STRING}
STR_ERROR_GAME_LOAD_FAILED :{WHITE}Fejl under indlæsning af spil{}{STRING}
STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :Intern fejl: {STRING}
STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :Ødelagt gemt spil - {STRING}
STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :Spillet er gemt med en nyere version
@@ -4179,12 +4180,12 @@ STR_WARNING_LOADGAME_REMOVED_TRAMS :{WHITE}Spillet
STR_ERROR_COULD_NOT_CREATE_TOWN :{WHITE}Kortgenerering afbrudt...{}... ingen brugbare lokaliteter til byer
STR_ERROR_NO_TOWN_IN_SCENARIO :{WHITE}... der er ingen byer i dette scenarie
STR_ERROR_PNGMAP :{WHITE}Kan ikke hente landskab fra PNG...
STR_ERROR_PNGMAP :{WHITE}Kan ikke indlæse landskab fra PNG...
STR_ERROR_PNGMAP_FILE_NOT_FOUND :{WHITE}... filen blev ikke fundet.
STR_ERROR_PNGMAP_IMAGE_TYPE :{WHITE}... kan ikke konvertere billedtype. Der skal bruges 8 eller 24-bit PNG.
STR_ERROR_PNGMAP_MISC :{WHITE}... noget gik galt. Undskyld (Måske en ødelagt fil)
STR_ERROR_BMPMAP :{WHITE}Kan ikke hente landskab fra BMP...
STR_ERROR_BMPMAP :{WHITE}Kan ikke indlæse landskab fra BMP...
STR_ERROR_BMPMAP_IMAGE_TYPE :{WHITE}... kunne ikke konvertere billedtypen.
STR_ERROR_HEIGHTMAP_TOO_LARGE :{WHITE}... billede er for stort

File diff suppressed because it is too large Load Diff

View File

@@ -2999,7 +2999,7 @@ STR_NEWGRF_ERROR_GRM_FAILED :Requested GRF r
STR_NEWGRF_ERROR_FORCEFULLY_DISABLED :{1:RAW_STRING} was disabled by {2:RAW_STRING}
STR_NEWGRF_ERROR_INVALID_SPRITE_LAYOUT :Invalid/unknown sprite layout format (sprite {3:NUM})
STR_NEWGRF_ERROR_LIST_PROPERTY_TOO_LONG :Too many elements in property value list (sprite {3:NUM}, property {4:HEX})
STR_NEWGRF_ERROR_INDPROD_CALLBACK :Invalid industry production callback (sprite {3:NUM}, "{1:RAW_STRING}")
STR_NEWGRF_ERROR_INDPROD_CALLBACK :Invalid industry production callback (sprite {3:NUM}, "{2:RAW_STRING}")
# NewGRF related 'general' warnings
STR_NEWGRF_POPUP_CAUTION_CAPTION :{WHITE}Caution!
@@ -3031,6 +3031,7 @@ STR_NEWGRF_BUGGY :{WHITE}NewGRF '
STR_NEWGRF_BUGGY_ARTICULATED_CARGO :{WHITE}Cargo/refit information for '{1:ENGINE}' differs from purchase list after construction. This might cause autorenew/-replace to fail refitting correctly
STR_NEWGRF_BUGGY_ENDLESS_PRODUCTION_CALLBACK :{WHITE}'{1:STRING}' caused an endless loop in the production callback
STR_NEWGRF_BUGGY_UNKNOWN_CALLBACK_RESULT :{WHITE}Callback {1:HEX} returned unknown/invalid result {2:HEX}
STR_NEWGRF_BUGGY_INVALID_CARGO_PRODUCTION_CALLBACK :{WHITE}'{1:STRING}' returned invalid cargo type in the production callback at {2:HEX}
# 'User removed essential NewGRFs'-placeholders for stuff without specs
STR_NEWGRF_INVALID_CARGO :<invalid cargo>

View File

@@ -995,7 +995,12 @@ STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_NORMAL :Normal
STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_2X_ZOOM :Double size
STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_4X_ZOOM :Quad size
STR_GAME_OPTIONS_FONT_ZOOM :{BLACK}Font size
STR_GAME_OPTIONS_FONT_ZOOM_DROPDOWN_TOOLTIP :{BLACK}Select the interface font size to use
STR_GAME_OPTIONS_FONT_ZOOM_DROPDOWN_NORMAL :Normal
STR_GAME_OPTIONS_FONT_ZOOM_DROPDOWN_2X_ZOOM :Double size
STR_GAME_OPTIONS_FONT_ZOOM_DROPDOWN_4X_ZOOM :Quad size
STR_GAME_OPTIONS_BASE_GRF :{BLACK}Base graphics set
STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Select the base graphics set to use
@@ -2742,6 +2747,9 @@ STR_FRAMERATE_DRAWING :{BLACK}Graphics
STR_FRAMERATE_DRAWING_VIEWPORTS :{BLACK} World viewports:
STR_FRAMERATE_VIDEO :{BLACK}Video output:
STR_FRAMERATE_SOUND :{BLACK}Sound mixing:
STR_FRAMERATE_ALLSCRIPTS :{BLACK} GS/AI total:
STR_FRAMERATE_GAMESCRIPT :{BLACK} Game script:
STR_FRAMERATE_AI :{BLACK} AI {NUM} {STRING}
############ End of leave-in-this-order
############ Leave those lines in this order!!
STR_FRAMETIME_CAPTION_GAMELOOP :Game loop
@@ -2756,6 +2764,9 @@ STR_FRAMETIME_CAPTION_DRAWING :Graphics render
STR_FRAMETIME_CAPTION_DRAWING_VIEWPORTS :World viewport rendering
STR_FRAMETIME_CAPTION_VIDEO :Video output
STR_FRAMETIME_CAPTION_SOUND :Sound mixing
STR_FRAMETIME_CAPTION_ALLSCRIPTS :GS/AI scripts total
STR_FRAMETIME_CAPTION_GAMESCRIPT :Game script
STR_FRAMETIME_CAPTION_AI :AI {NUM} {STRING}
############ End of leave-in-this-order
@@ -2988,7 +2999,7 @@ STR_NEWGRF_ERROR_GRM_FAILED :Requested GRF r
STR_NEWGRF_ERROR_FORCEFULLY_DISABLED :{1:STRING} was disabled by {2:STRING}
STR_NEWGRF_ERROR_INVALID_SPRITE_LAYOUT :Invalid/unknown sprite layout format (sprite {3:NUM})
STR_NEWGRF_ERROR_LIST_PROPERTY_TOO_LONG :Too many elements in property value list (sprite {3:NUM}, property {4:HEX})
STR_NEWGRF_ERROR_INDPROD_CALLBACK :Invalid industry production callback (sprite {3:NUM}, "{1:STRING}")
STR_NEWGRF_ERROR_INDPROD_CALLBACK :Invalid industry production callback (sprite {3:NUM}, "{2:STRING}")
# NewGRF related 'general' warnings
STR_NEWGRF_POPUP_CAUTION_CAPTION :{WHITE}Caution!

File diff suppressed because it is too large Load Diff

View File

@@ -996,7 +996,12 @@ STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_NORMAL :Normal
STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_2X_ZOOM :Taille double
STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_4X_ZOOM :Taille quadruple
STR_GAME_OPTIONS_FONT_ZOOM :{BLACK}Taille de police
STR_GAME_OPTIONS_FONT_ZOOM_DROPDOWN_TOOLTIP :{BLACK}Choisir la taille de police d'interface à utiliser
STR_GAME_OPTIONS_FONT_ZOOM_DROPDOWN_NORMAL :Normal
STR_GAME_OPTIONS_FONT_ZOOM_DROPDOWN_2X_ZOOM :Taille double
STR_GAME_OPTIONS_FONT_ZOOM_DROPDOWN_4X_ZOOM :Taille quadruple
STR_GAME_OPTIONS_BASE_GRF :{BLACK}Graphiques de base
STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Sélectionner les graphiques de base à utiliser
@@ -2743,6 +2748,9 @@ STR_FRAMERATE_DRAWING :{BLACK}Rendu de
STR_FRAMERATE_DRAWING_VIEWPORTS :{BLACK} Vues{NBSP}:
STR_FRAMERATE_VIDEO :{BLACK}Sortie vidéo{NBSP}:
STR_FRAMERATE_SOUND :{BLACK}Mixage sonore{NBSP}:
STR_FRAMERATE_ALLSCRIPTS :{BLACK} Total GS/IA{NBSP}:
STR_FRAMERATE_GAMESCRIPT :{BLACK} Script de jeu{NBSP}:
STR_FRAMERATE_AI :{BLACK} IA {NUM} {STRING}
############ End of leave-in-this-order
############ Leave those lines in this order!!
STR_FRAMETIME_CAPTION_GAMELOOP :Boucle de jeu
@@ -2757,6 +2765,9 @@ STR_FRAMETIME_CAPTION_DRAWING :Rendu des graph
STR_FRAMETIME_CAPTION_DRAWING_VIEWPORTS :Rendu des vues
STR_FRAMETIME_CAPTION_VIDEO :Sortie vidéo
STR_FRAMETIME_CAPTION_SOUND :Mixage sonore
STR_FRAMETIME_CAPTION_ALLSCRIPTS :Total des scripts GS/IA
STR_FRAMETIME_CAPTION_GAMESCRIPT :Script de jeu
STR_FRAMETIME_CAPTION_AI :IA {NUM} {STRING}
############ End of leave-in-this-order
@@ -2989,7 +3000,7 @@ STR_NEWGRF_ERROR_GRM_FAILED :Indisponibilit
STR_NEWGRF_ERROR_FORCEFULLY_DISABLED :{1:STRING} a été désactivé par {STRING}
STR_NEWGRF_ERROR_INVALID_SPRITE_LAYOUT :Format de sprite invalide ou inconnu (sprite {3:NUM})
STR_NEWGRF_ERROR_LIST_PROPERTY_TOO_LONG :Trop d'éléments dans la liste des valeurs de la propriété (sprite {3:NUM}, propriété {4:HEX})
STR_NEWGRF_ERROR_INDPROD_CALLBACK :Fonction de rappel de production d'industrie invalide (sprite {3:NUM}, "{1:STRING}")
STR_NEWGRF_ERROR_INDPROD_CALLBACK :Fonction de rappel de production d'industrie invalide (sprite {3:NUM}, "{2:STRING}")
# NewGRF related 'general' warnings
STR_NEWGRF_POPUP_CAUTION_CAPTION :{WHITE}Attention{NBSP}!

View File

@@ -2987,7 +2987,7 @@ STR_NEWGRF_ERROR_GRM_FAILED :Die angefordert
STR_NEWGRF_ERROR_FORCEFULLY_DISABLED :{1:STRING} wurde von {STRING} deaktiviert
STR_NEWGRF_ERROR_INVALID_SPRITE_LAYOUT :Ungültiges oder unbekanntes Format für Spritelayout (Sprite {3:NUM})
STR_NEWGRF_ERROR_LIST_PROPERTY_TOO_LONG :Zu viele Elemente in Eigenschaftswert-Liste (Sprite {3:NUM}, Eigenschaft {4:HEX})
STR_NEWGRF_ERROR_INDPROD_CALLBACK :Ungültige Produktions-Rückruffunktion (Sprite {3:NUM}, "{1:STRING}")
STR_NEWGRF_ERROR_INDPROD_CALLBACK :Ungültige Produktions-Rückruffunktion (Sprite {3:NUM}, "{2:STRING}")
# NewGRF related 'general' warnings
STR_NEWGRF_POPUP_CAUTION_CAPTION :{WHITE}Achtung!

View File

@@ -2793,9 +2793,9 @@ STR_FRAMERATE_DATA_POINTS :{BLACK}Adatok {
STR_FRAMERATE_MS_GOOD :{LTBLUE}{DECIMAL} ms
STR_FRAMERATE_MS_WARN :{YELLOW}{DECIMAL} ms
STR_FRAMERATE_MS_BAD :{RED}{DECIMAL} ms
STR_FRAMERATE_FPS_GOOD :{LTBLUE}{DECIMAL} képkocka/másodperc
STR_FRAMERATE_FPS_WARN :{YELLOW}{DECIMAL} képkocka/másodperc
STR_FRAMERATE_FPS_BAD :{RED}{DECIMAL} képkocka/másodperc
STR_FRAMERATE_FPS_GOOD :{LTBLUE}{DECIMAL} frame/s
STR_FRAMERATE_FPS_WARN :{YELLOW}{DECIMAL} frame/s
STR_FRAMERATE_FPS_BAD :{RED}{DECIMAL} frame/s
STR_FRAMERATE_GRAPH_MILLISECONDS :{TINY_FONT}{COMMA} ms
STR_FRAMERATE_GRAPH_SECONDS :{TINY_FONT}{COMMA} s
############ Leave those lines in this order!!
@@ -3063,7 +3063,7 @@ STR_NEWGRF_ERROR_GRM_FAILED :Kért GRF forr
STR_NEWGRF_ERROR_FORCEFULLY_DISABLED :{1:STRING} kikapcsolva {STRING} által
STR_NEWGRF_ERROR_INVALID_SPRITE_LAYOUT :Érvénytelen/ismeretlen sprite szerkezet formátum (sprite {3:NUM})
STR_NEWGRF_ERROR_LIST_PROPERTY_TOO_LONG :Túl sok érték a tulajdonságlistában (sprite {3:NUM}, property {4:HEX})
STR_NEWGRF_ERROR_INDPROD_CALLBACK :Érvénytelen termelési callback gazdasági épületben (sprite {3:NUM}, "{1:STRING}")
STR_NEWGRF_ERROR_INDPROD_CALLBACK :Érvénytelen termelési callback gazdasági épületben (sprite {3:NUM}, "{2:STRING}")
# NewGRF related 'general' warnings
STR_NEWGRF_POPUP_CAUTION_CAPTION :{WHITE}Figyelem!

View File

@@ -3029,7 +3029,7 @@ STR_NEWGRF_ERROR_GRM_FAILED :Risorsa GRF ric
STR_NEWGRF_ERROR_FORCEFULLY_DISABLED :{1:STRING} è stato disabilitato da {STRING}
STR_NEWGRF_ERROR_INVALID_SPRITE_LAYOUT :Formato di layout dello sprite sconosciuto o non valido (sprite {3:NUM})
STR_NEWGRF_ERROR_LIST_PROPERTY_TOO_LONG :Troppi elementi nella lista valori di una proprietà (sprite {3:NUM}, proprietà {4:HEX})
STR_NEWGRF_ERROR_INDPROD_CALLBACK :Callback di produzione industria non valido (sprite {3:NUM}, "{1:STRING}")
STR_NEWGRF_ERROR_INDPROD_CALLBACK :Callback di produzione industria non valido (sprite {3:NUM}, "{2:STRING}")
# NewGRF related 'general' warnings
STR_NEWGRF_POPUP_CAUTION_CAPTION :{WHITE}Attenzione!

View File

@@ -467,6 +467,7 @@ STR_TOOLBAR_SOUND_MUSIC :효과음/배
############ range for message menu starts
STR_NEWS_MENU_LAST_MESSAGE_NEWS_REPORT :최근 메시지/뉴스 기록
STR_NEWS_MENU_MESSAGE_HISTORY_MENU :과거 메시지 목록
STR_NEWS_MENU_DELETE_ALL_MESSAGES :모든 뉴스 메시지 삭제
############ range ends here
############ range for about menu starts
@@ -989,13 +990,18 @@ STR_GAME_OPTIONS_RESOLUTION_TOOLTIP :{BLACK}사용
STR_GAME_OPTIONS_RESOLUTION_OTHER :기타
STR_GAME_OPTIONS_GUI_ZOOM_FRAME :{BLACK}인터페이스 크기
STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_TOOLTIP :{BLACK}인터페이스의 크기를 선택하십시오.
STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_TOOLTIP :{BLACK}인터페이스의 크기를 선택합니다.
STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_NORMAL :보통
STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_NORMAL :기본 크기
STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_2X_ZOOM :2배 크기
STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_4X_ZOOM :4배 크기
STR_GAME_OPTIONS_FONT_ZOOM :{BLACK}글씨 크기
STR_GAME_OPTIONS_FONT_ZOOM_DROPDOWN_TOOLTIP :{BLACK}인터페이스에서 사용할 글씨 크기를 선택합니다.
STR_GAME_OPTIONS_FONT_ZOOM_DROPDOWN_NORMAL :기본 크기
STR_GAME_OPTIONS_FONT_ZOOM_DROPDOWN_2X_ZOOM :2배 크기
STR_GAME_OPTIONS_FONT_ZOOM_DROPDOWN_4X_ZOOM :4배 크기
STR_GAME_OPTIONS_BASE_GRF :{BLACK}기본 그래픽 세트
STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}사용하실 기본 그래픽을 선택하세요.
@@ -2084,6 +2090,7 @@ STR_NETWORK_CONNECTION_DISCONNECT :{BLACK}접속
STR_NETWORK_NEED_GAME_PASSWORD_CAPTION :{WHITE}서버 암호가 걸려있습니다. 암호를 입력하세요.
STR_NETWORK_NEED_COMPANY_PASSWORD_CAPTION :{WHITE}회사 암호가 걸려있습니다. 암호를 입력하세요.
STR_NETWORK_COMPANY_LIST_CLIENT_LIST_CAPTION :{WHITE}접속자 목록
# Network company list added strings
STR_NETWORK_COMPANY_LIST_CLIENT_LIST :접속자 목록
@@ -2741,6 +2748,9 @@ STR_FRAMERATE_DRAWING :{BLACK}그래
STR_FRAMERATE_DRAWING_VIEWPORTS :{BLACK} 세계 화면:
STR_FRAMERATE_VIDEO :{BLACK}비디오 출력:
STR_FRAMERATE_SOUND :{BLACK}사운드 합성:
STR_FRAMERATE_ALLSCRIPTS :{BLACK} 총 게임 스크립트/AI:
STR_FRAMERATE_GAMESCRIPT :{BLACK} 게임 스크립트:
STR_FRAMERATE_AI :{BLACK} 인공지능 {NUM} {STRING}
############ End of leave-in-this-order
############ Leave those lines in this order!!
STR_FRAMETIME_CAPTION_GAMELOOP :게임 루프
@@ -2755,6 +2765,9 @@ STR_FRAMETIME_CAPTION_DRAWING :그래픽 렌
STR_FRAMETIME_CAPTION_DRAWING_VIEWPORTS :세계 화면 렌더링
STR_FRAMETIME_CAPTION_VIDEO :비디오 출력
STR_FRAMETIME_CAPTION_SOUND :사운드 합성
STR_FRAMETIME_CAPTION_ALLSCRIPTS :게임 스크립트/인공지능의 전체 스크립트 양입니다.
STR_FRAMETIME_CAPTION_GAMESCRIPT :게임 스크립트
STR_FRAMETIME_CAPTION_AI :인공지능 {NUM} {STRING}
############ End of leave-in-this-order
@@ -2987,7 +3000,7 @@ STR_NEWGRF_ERROR_GRM_FAILED :요청한 GRF
STR_NEWGRF_ERROR_FORCEFULLY_DISABLED :{1:STRING}(은)는 {STRING} 때문에 사용할 수 없습니다
STR_NEWGRF_ERROR_INVALID_SPRITE_LAYOUT :유효하지 않은/알 수 없는 스프라이트 구조 유형 (스프라이트 {3:NUM})
STR_NEWGRF_ERROR_LIST_PROPERTY_TOO_LONG :속성값 목록에 너무 많은 요소가 있음 (스프라이트 {3:NUM}, 속성 {4:HEX})
STR_NEWGRF_ERROR_INDPROD_CALLBACK :유효하지 않은 산업 생산 콜백 (스프라이트 {3:NUM}, "{1:STRING}")
STR_NEWGRF_ERROR_INDPROD_CALLBACK :유효하지 않은 산업 생산 콜백 (스프라이트 {3:NUM}, "{2:STRING}")
# NewGRF related 'general' warnings
STR_NEWGRF_POPUP_CAUTION_CAPTION :{WHITE}경고!
@@ -3019,6 +3032,7 @@ STR_NEWGRF_BUGGY :{WHITE}NewGRF '
STR_NEWGRF_BUGGY_ARTICULATED_CARGO :{WHITE}{1:ENGINE}(을)를 만들기 이전과 이후의 화물/개조 정보가 현재의 구매 목록과 다릅니다. 이 경우 자동 교체시 열차 개조에 실패할 수도 있습니다.
STR_NEWGRF_BUGGY_ENDLESS_PRODUCTION_CALLBACK :{WHITE}'{1:STRING}' 때문에 결과물 콜백 과정에서 무한 루프가 발생하고 있습니다.
STR_NEWGRF_BUGGY_UNKNOWN_CALLBACK_RESULT :{WHITE}콜백 함수({1:HEX})가 알 수 없거나 잘못된 결과 값({2:HEX})을 반환했습니다.
STR_NEWGRF_BUGGY_INVALID_CARGO_PRODUCTION_CALLBACK :{WHITE}'{1:STRING}' - 생산 콜백 함수의 {2:HEX}에서 잘못된 화물 종류를 반환했습니다.
# 'User removed essential NewGRFs'-placeholders for stuff without specs
STR_NEWGRF_INVALID_CARGO :<알 수 없는 화물>
@@ -3113,6 +3127,7 @@ STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_BRIBE :{YELLOW}성취
# Goal window
STR_GOALS_CAPTION :{WHITE}{COMPANY} 목표
STR_GOALS_SPECTATOR_CAPTION :{WHITE}전체 목표
STR_GOALS_SPECTATOR :전체 목표
STR_GOALS_GLOBAL_TITLE :{BLACK}전체 목표:
STR_GOALS_TEXT :{ORANGE}{STRING}
STR_GOALS_NONE :{ORANGE}- 없음 -
@@ -3161,6 +3176,7 @@ STR_SUBSIDIES_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}산업
# Story book window
STR_STORY_BOOK_CAPTION :{WHITE}{COMPANY}의 스토리 북
STR_STORY_BOOK_SPECTATOR_CAPTION :{WHITE}전체 스토리 북
STR_STORY_BOOK_SPECTATOR :전체 스토리 북
STR_STORY_BOOK_TITLE :{YELLOW}{STRING}
STR_STORY_BOOK_GENERIC_PAGE_ITEM :{NUM}쪽
STR_STORY_BOOK_SEL_PAGE_TOOLTIP :{BLACK}드롭 다운 목록에서 이동하고자 하는 쪽수를 선택하세요.

View File

@@ -189,6 +189,7 @@ STR_COLOUR_ORANGE :Orange
STR_COLOUR_BROWN :Brong
STR_COLOUR_GREY :Gro
STR_COLOUR_WHITE :Wäiss
STR_COLOUR_RANDOM :Zoufälleg
# Units used in OpenTTD
STR_UNITS_VELOCITY_IMPERIAL :{COMMA}{NBSP}mph
@@ -475,6 +476,7 @@ STR_ABOUT_MENU_SCREENSHOT :Screenshot (Ctr
STR_ABOUT_MENU_ZOOMIN_SCREENSHOT :Voll eragezoomte Screenshot
STR_ABOUT_MENU_DEFAULTZOOM_SCREENSHOT :Standard Zoom Screenshot
STR_ABOUT_MENU_GIANT_SCREENSHOT :Screenshot vun der ganzer Kaart
STR_ABOUT_MENU_SHOW_FRAMERATE :Biller pro Sekonn uweisen
STR_ABOUT_MENU_ABOUT_OPENTTD :Iwwert 'OpenTTD'
STR_ABOUT_MENU_SPRITE_ALIGNER :Sprite Alignéirer
STR_ABOUT_MENU_TOGGLE_BOUNDING_BOXES :Zeechen-Boxen un/aus
@@ -650,6 +652,7 @@ STR_MUSIC_RULER_MARKER :{TINY_FONT}{BLA
STR_MUSIC_TRACK_NONE :{TINY_FONT}{DKGREEN}--
STR_MUSIC_TRACK_DIGIT :{TINY_FONT}{DKGREEN}{ZEROFILL_NUM}
STR_MUSIC_TITLE_NONE :{TINY_FONT}{DKGREEN}------
STR_MUSIC_TITLE_NOMUSIC :{TINY_FONT}{DKGREEN}Keng Musik verfügbar
STR_MUSIC_TITLE_NAME :{TINY_FONT}{DKGREEN}"{STRING}"
STR_MUSIC_TRACK :{TINY_FONT}{BLACK}Nummer
STR_MUSIC_XTITLE :{TINY_FONT}{BLACK}Titel
@@ -674,7 +677,9 @@ STR_PLAYLIST_TRACK_NAME :{TINY_FONT}{LTB
STR_PLAYLIST_TRACK_INDEX :{TINY_FONT}{BLACK}Lidder Index
STR_PLAYLIST_PROGRAM :{TINY_FONT}{BLACK}Programm - '{STRING}'
STR_PLAYLIST_CLEAR :{TINY_FONT}{BLACK}Läschen
STR_PLAYLIST_CHANGE_SET :{BLACK}Set wiesselen
STR_PLAYLIST_TOOLTIP_CLEAR_CURRENT_PROGRAM_CUSTOM1 :{BLACK}De gewielte Program reseten (nëmmen Benotzerdéf.1 oder Benotzerdéf.2)
STR_PLAYLIST_TOOLTIP_CHANGE_SET :{BLACK}Wiessel d'Musikselektioun op en anert installéiert Set
STR_PLAYLIST_TOOLTIP_CLICK_TO_ADD_TRACK :{BLACK}Klick op d'Lidd fir et zum aktuellen Program dobäi zesetzen (nëmme Benotzerdéf.1 oder Benotzerdéf.2)
STR_PLAYLIST_TOOLTIP_CLICK_TO_REMOVE_TRACK :{BLACK}Klick op d'Lidd fir et vum aktuellen Programm ze läschen (Benotzerdefinéiert 1 an 2 nëmmen)
@@ -810,6 +815,7 @@ STR_NEWS_MERGER_TAKEOVER_TITLE :{BIG_FONT}{BLAC
STR_PRESIDENT_NAME_MANAGER :{BLACK}{PRESIDENT_NAME}{}(Manager)
STR_NEWS_NEW_TOWN :{BLACK}{BIG_FONT}{STRING} huet Kontruktioun vun der Stad {TOWN} gesponsort!
STR_NEWS_NEW_TOWN_UNSPONSORED :{BLACK}{BIG_FONT}En neit Duerf mam Numm {TOWN} gouf gegrënnt!
STR_NEWS_INDUSTRY_CONSTRUCTION :{BIG_FONT}{BLACK}{STRING} gëtt bei {TOWN} gebaut!
STR_NEWS_INDUSTRY_PLANTED :{BIG_FONT}{BLACK}{STRING} gëtt bei {TOWN} geplanzt!
@@ -985,6 +991,8 @@ STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_2X_ZOOM :Duebel
STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_4X_ZOOM :Véierfach
STR_GAME_OPTIONS_FONT_ZOOM_DROPDOWN_NORMAL :Normal
STR_GAME_OPTIONS_FONT_ZOOM_DROPDOWN_4X_ZOOM :Véierfach
STR_GAME_OPTIONS_BASE_GRF :{BLACK}Basis Grafikset
STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Wielt de Basis Grafikset dee soll benotzt ginn
@@ -1337,6 +1345,7 @@ STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_HELPTEXT :Faarf vum Terra
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_GREEN :Gréng
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_DARK_GREEN :Donkelgréng
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_VIOLET :Mof
STR_CONFIG_SETTING_SCROLLMODE_LMB :Kaart mat der lénker Maustast bewegen
STR_CONFIG_SETTING_SMOOTH_SCROLLING :Feine Scrolling: {STRING}
STR_CONFIG_SETTING_SMOOTH_SCROLLING_HELPTEXT :Kontrolléiert wéi d'Haptusiicht op eng bestëmmten Positioun scrollt, wann een op déi kléng Kaart klickt oder en Befehl fir ob en spezifescht Objet ze scrollen gëtt. Wann ugeschalt, gëtt bis dohin gescrollt, wann ausgeschalt, spréngt d'Vue op den Zielobjet
STR_CONFIG_SETTING_MEASURE_TOOLTIP :Weis en Mooss-Tooltip wann verschidde Bau-Tools benotzt ginn: {STRING}
@@ -1579,7 +1588,7 @@ STR_CONFIG_SETTING_SOFT_LIMIT_HELPTEXT :Unzuel un net-g
STR_CONFIG_SETTING_SOFT_LIMIT_VALUE :{COMMA}
STR_CONFIG_SETTING_SOFT_LIMIT_DISABLED :ausgeschalt
STR_CONFIG_SETTING_ZOOM_MIN :Maximalen Ranzoom Level: {STRING}
STR_CONFIG_SETTING_ZOOM_MIN_HELPTEXT :Maximal Ranzoomstuf fir Usiichtsfënsteren. Et gëtt méi Späicher gebraucht wann d'Stufen ze grouss ginn
STR_CONFIG_SETTING_ZOOM_MIN_HELPTEXT :Maximal Razoomstuf fir Usiichtsfënsteren. Et gëtt méi Späicher gebraucht wann d'Stufen ze grouss ginn
STR_CONFIG_SETTING_ZOOM_MAX :Maximalen Rauszoom Level: {STRING}
STR_CONFIG_SETTING_ZOOM_MAX_HELPTEXT :Maximal Rauszoom-Stuf fir Usiichtsfënsteren. Méi grouss Rauszoom-Stufen kënnen Ruckeler verursaachen
STR_CONFIG_SETTING_ZOOM_LVL_MIN :4x
@@ -1805,6 +1814,7 @@ STR_CHEAT_CHANGE_DATE_QUERY_CAPT :{WHITE}Wiessel
STR_CHEAT_SETUP_PROD :{LTBLUE}Erlaabt d'ännere vun de Produktiounswäerter: {ORANGE}{STRING}
# Livery window
STR_LIVERY_CAPTION :{WHITE}{COMPANY} - Neie Faarfschema
STR_LIVERY_GENERAL_TOOLTIP :{BLACK}Weis generell Faarfschemen
STR_LIVERY_TRAIN_TOOLTIP :{BLACK}Weis Zuch Faarfschemen
@@ -2688,9 +2698,21 @@ STR_ABOUT_VERSION :{BLACK}OpenTTD
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2019 D'OpenTTD team
# Framerate display window
STR_FRAMERATE_AVERAGE :{WHITE}Mëttel
STR_FRAMERATE_MS_GOOD :{LTBLUE}{DECIMAL} ms
STR_FRAMERATE_MS_WARN :{YELLOW}{DECIMAL} ms
STR_FRAMERATE_FPS_GOOD :{LTBLUE}{DECIMAL} Biller/s
STR_FRAMERATE_FPS_BAD :{RED}{DECIMAL} Biller/s
STR_FRAMERATE_GRAPH_SECONDS :{TINY_FONT}{COMMA} s
############ Leave those lines in this order!!
STR_FRAMERATE_GL_ROADVEHS :{BLACK} Stroossegefierer Ticken:
STR_FRAMERATE_DRAWING :{BLACK}Graphikrendering:
STR_FRAMERATE_VIDEO :{BLACK}Video-output:
############ End of leave-in-this-order
############ Leave those lines in this order!!
STR_FRAMETIME_CAPTION_GL_ROADVEHS :Stroossegefierer Ticken
STR_FRAMETIME_CAPTION_GL_SHIPS :Schëffticker
STR_FRAMETIME_CAPTION_SOUND :Soundmixing
############ End of leave-in-this-order
@@ -2833,6 +2855,7 @@ STR_NEWGRF_SETTINGS_VERSION :{BLACK}Versioun
STR_NEWGRF_SETTINGS_MIN_VERSION :{BLACK}Min. kompatibel Versioun: {SILVER}{NUM}
STR_NEWGRF_SETTINGS_MD5SUM :{BLACK}MD5sum: {SILVER}{STRING}
STR_NEWGRF_SETTINGS_PALETTE :{BLACK}Palette: {SILVER}{STRING}
STR_NEWGRF_SETTINGS_PALETTE_LEGACY :Legacy (W)
STR_NEWGRF_SETTINGS_PARAMETER :{BLACK}Parameter: {SILVER}{STRING}
STR_NEWGRF_SETTINGS_NO_INFO :{BLACK}Keng Info verfügbar
@@ -2914,6 +2937,7 @@ STR_NEWGRF_ERROR_READ_BOUNDS :Lanscht d'Enn v
STR_NEWGRF_ERROR_GRM_FAILED :Ugefroten GRF Ressource net verfügbar (sprite {3:NUM})
STR_NEWGRF_ERROR_FORCEFULLY_DISABLED :{1:STRING} gouf ausgeschalt vun {STRING}
STR_NEWGRF_ERROR_INVALID_SPRITE_LAYOUT :Invalid/onbekannten Sprite Layout Format (Sprite {3:NUM})
STR_NEWGRF_ERROR_LIST_PROPERTY_TOO_LONG :Zevill Elementer an der Eegeschaftewert-Lëscht (Sprite {3:NUM}, Eegeschaft {4:HEX})
# NewGRF related 'general' warnings
STR_NEWGRF_POPUP_CAUTION_CAPTION :{WHITE}Opgepasst!
@@ -3346,6 +3370,7 @@ STR_GROUPS_CLICK_ON_GROUP_FOR_TOOLTIP :{BLACK}Gruppen
STR_GROUP_CREATE_TOOLTIP :{BLACK}Klick fir eng Grupp ze maachen
STR_GROUP_DELETE_TOOLTIP :{BLACK}Déi ungewielte Grupp läschen
STR_GROUP_RENAME_TOOLTIP :{BLACK}Déi ungewielte Grupp ëmbenennen
STR_GROUP_LIVERY_TOOLTIP :{BLACK}Wiessel d'Faarwschema vun dem ausgewielte Grupp
STR_GROUP_REPLACE_PROTECTION_TOOLTIP :{BLACK}Klick fir déi Grupp vum globalen "Autoersetzen" auszeschléissen
STR_QUERY_GROUP_DELETE_CAPTION :{WHITE}Grupp läschen
@@ -4220,6 +4245,7 @@ STR_ERROR_DRIVE_THROUGH_ON_TOWN_ROAD :{WHITE}... d'St
STR_ERROR_DRIVE_THROUGH_DIRECTION :{WHITE}... Strooss geet an dei falsch Richtung
STR_ERROR_DRIVE_THROUGH_CORNER :{WHITE}... Duerchfahrtstops kënnen keng Kéiren hunn
STR_ERROR_DRIVE_THROUGH_JUNCTION :{WHITE}... Duerchfahrtstops kënnen keng Kräizungen hunn
STR_ERROR_DRIVE_THROUGH_ON_ONEWAY_ROAD :{WHITE}... Einbahnstrooss oder blockéiert
# Station destruction related errors
STR_ERROR_CAN_T_REMOVE_PART_OF_STATION :{WHITE}Kann den Deel vun der Gare net ofrappen...
@@ -4471,6 +4497,7 @@ STR_BASESOUNDS_DOS_DESCRIPTION :Original Transp
STR_BASESOUNDS_WIN_DESCRIPTION :Original Transport Tycoon Deluxe Windows Editioun Sound.
STR_BASESOUNDS_NONE_DESCRIPTION :E Soundpack ouni iergendee Sound.
STR_BASEMUSIC_WIN_DESCRIPTION :Original Transport Tycoon Deluxe Windows Editioun Musik.
STR_BASEMUSIC_TTO_DESCRIPTION :Original Transport Tycoon (Original/World Editor) DOS Editioun-Musik.
STR_BASEMUSIC_NONE_DESCRIPTION :E Musikpack ouni aktuell Musik.
##id 0x2000

View File

@@ -997,7 +997,12 @@ STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_NORMAL :Normal
STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_2X_ZOOM :2 ganger størrelse
STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_4X_ZOOM :4 ganger størrelse
STR_GAME_OPTIONS_FONT_ZOOM :{BLACK}Skriftstørrelse
STR_GAME_OPTIONS_FONT_ZOOM_DROPDOWN_TOOLTIP :{BLACK}Velg skriftstørrelse for grensesnitt
STR_GAME_OPTIONS_FONT_ZOOM_DROPDOWN_NORMAL :Normal
STR_GAME_OPTIONS_FONT_ZOOM_DROPDOWN_2X_ZOOM :Dobbel størrelse
STR_GAME_OPTIONS_FONT_ZOOM_DROPDOWN_4X_ZOOM :Firedobbel størrelse
STR_GAME_OPTIONS_BASE_GRF :{BLACK}Grafikksett
STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Velg grafikksett som skal brukes
@@ -2746,6 +2751,9 @@ STR_FRAMERATE_DRAWING :{BLACK}Grafikkt
STR_FRAMERATE_DRAWING_VIEWPORTS :{BLACK} Synsfelt for spillverden:
STR_FRAMERATE_VIDEO :{BLACK}Video output:
STR_FRAMERATE_SOUND :{BLACK}Lydmiksing:
STR_FRAMERATE_ALLSCRIPTS :{BLACK} GS/AI total:
STR_FRAMERATE_GAMESCRIPT :{BLACK} Game script:
STR_FRAMERATE_AI :{BLACK} AI {NUM} {STRING}
############ End of leave-in-this-order
############ Leave those lines in this order!!
STR_FRAMETIME_CAPTION_GAMELOOP :Spill-løkke
@@ -2760,6 +2768,9 @@ STR_FRAMETIME_CAPTION_DRAWING :Grafikktegning
STR_FRAMETIME_CAPTION_DRAWING_VIEWPORTS :Tegning av synsfelt for spillverden
STR_FRAMETIME_CAPTION_VIDEO :Video output
STR_FRAMETIME_CAPTION_SOUND :Lydmiksing
STR_FRAMETIME_CAPTION_ALLSCRIPTS :GS/AI scripts total
STR_FRAMETIME_CAPTION_GAMESCRIPT :Game script
STR_FRAMETIME_CAPTION_AI :AI {NUM} {STRING}
############ End of leave-in-this-order
@@ -2992,7 +3003,7 @@ STR_NEWGRF_ERROR_GRM_FAILED :Etterspurte GRF
STR_NEWGRF_ERROR_FORCEFULLY_DISABLED :{1:STRING} ble deaktivert av {STRING}
STR_NEWGRF_ERROR_INVALID_SPRITE_LAYOUT :Ugyldig/ukjent sprite layout-format (figur {3:NUM})
STR_NEWGRF_ERROR_LIST_PROPERTY_TOO_LONG :For mange elementer i fortegnelse over eiendomsverdier (sprite {3:NUM}, property {4:HEX})
STR_NEWGRF_ERROR_INDPROD_CALLBACK :Ugyldig industriprodukjson callback (sprite {3:NUM}, "{1:STRING}")
STR_NEWGRF_ERROR_INDPROD_CALLBACK :Ugyldig industriprodukjson callback (sprite {3:NUM}, "{2:STRING}")
# NewGRF related 'general' warnings
STR_NEWGRF_POPUP_CAUTION_CAPTION :{WHITE}Advarsel!
@@ -3024,6 +3035,7 @@ STR_NEWGRF_BUGGY :{WHITE}NewGRF '
STR_NEWGRF_BUGGY_ARTICULATED_CARGO :{WHITE}Vare-/ombyggingsinformasjon for '{1:ENGINE}' er forskjellig fra kjøpelisten etter konstruksjonen. Dette kan resultere i at autofornying ikke fungerer på riktig måte.
STR_NEWGRF_BUGGY_ENDLESS_PRODUCTION_CALLBACK :{WHITE}'{1:STRING}' forårsaket en uendelig løkke i produksjonstilbakekallet.
STR_NEWGRF_BUGGY_UNKNOWN_CALLBACK_RESULT :{WHITE}Tilbakekall {1:HEX} rapporterte ukjent/ugyldig resultat {2:HEX}
STR_NEWGRF_BUGGY_INVALID_CARGO_PRODUCTION_CALLBACK :{WHITE}'{1:STRING}' ugyldig varetype i produksjonscallback at {2:HEX}
# 'User removed essential NewGRFs'-placeholders for stuff without specs
STR_NEWGRF_INVALID_CARGO :<invalid cargo>

View File

@@ -1374,6 +1374,7 @@ STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_2X_ZOOM :Podwójny
STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_4X_ZOOM :Poczwórny
STR_GAME_OPTIONS_FONT_ZOOM_DROPDOWN_4X_ZOOM :Poczwórny
STR_GAME_OPTIONS_BASE_GRF :{BLACK}Podstawowy zestaw grafik
STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Wybierz podstawowy zestaw grafik do użycia
@@ -2762,7 +2763,7 @@ STR_BUILD_SIGNAL_ELECTRIC_PBS_OWAY_TOOLTIP :{BLACK}Jednokie
STR_BUILD_SIGNAL_CONVERT_TOOLTIP :{BLACK}Zamiana sygnałów{}Jeżeli włączone, kliknięcie na istniejący sygnał spowoduje zamianę go na wybrany typ i wariant. CTRL+klik przełącza istniejący wariant. Shift+klik pokazuje szacowany koszt zamiany
STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_TOOLTIP :{BLACK}Gęstość sygnałów przy przeciąganiu
STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_DECREASE_TOOLTIP :{BLACK}Zmniejsz odległość między sygnałami przy przeciąganiu
STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_INCREASE_TOOLTIP :{BLACK}Zwiększ gęstość sygnałów przy przeciąganiu
STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_INCREASE_TOOLTIP :{BLACK}Zwiększ odległość między sygnałami przy przeciąganiu
# Bridge selection window
STR_SELECT_RAIL_BRIDGE_CAPTION :{WHITE}Wybierz rodzaj mostu kolejowego
@@ -3086,6 +3087,7 @@ STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD
# Framerate display window
STR_FRAMERATE_CAPTION :{WHITE}Ilość klatek na sekundę
STR_FRAMERATE_CAPTION_SMALL :{STRING}{WHITE} ({DECIMAL}x)
STR_FRAMERATE_RATE_GAMELOOP_TOOLTIP :{BLACK}Liczba ticków gry symulowanych na sekundę.
STR_FRAMERATE_RATE_BLITTER_TOOLTIP :{BLACK}Liczba renderowanych klatek wideo na sekundę.
STR_FRAMERATE_SPEED_FACTOR_TOOLTIP :{BLACK}Jak szybko gra obecnie działa, w porównaniu do oczekiwanej prędkości przy normalnym tempie symulacji.
@@ -3110,6 +3112,7 @@ STR_FRAMERATE_SOUND :{WHITE}Miksowan
############ End of leave-in-this-order
############ Leave those lines in this order!!
STR_FRAMETIME_CAPTION_GAMELOOP :Pętla gry
STR_FRAMETIME_CAPTION_GL_ECONOMY :Obsługa ładunku
STR_FRAMETIME_CAPTION_GL_LINKGRAPH :Opóźnienie wykresu połączeń
STR_FRAMETIME_CAPTION_DRAWING :Renderowanie grafiki
STR_FRAMETIME_CAPTION_DRAWING_VIEWPORTS :Renderowanie okna podgląu świata
@@ -3469,6 +3472,7 @@ STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_BRIBE :{YELLOW}Daj ła
# Goal window
STR_GOALS_CAPTION :{WHITE}Cele firmy {COMPANY}
STR_GOALS_SPECTATOR_CAPTION :{WHITE}Cele globalne
STR_GOALS_SPECTATOR :Cele globalne
STR_GOALS_GLOBAL_TITLE :{BLACK}Cele globalne:
STR_GOALS_TEXT :{ORANGE}{STRING}
STR_GOALS_NONE :{ORANGE}- Brak -
@@ -3517,6 +3521,7 @@ STR_SUBSIDIES_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Klik na
# Story book window
STR_STORY_BOOK_CAPTION :{WHITE}Dziennik Historii Firmy {COMPANY}
STR_STORY_BOOK_SPECTATOR_CAPTION :{WHITE}Ogólny przewodnik
STR_STORY_BOOK_SPECTATOR :Ogólny przewodnik
STR_STORY_BOOK_TITLE :{YELLOW}{STRING}
STR_STORY_BOOK_GENERIC_PAGE_ITEM :Strona {NUM}
STR_STORY_BOOK_SEL_PAGE_TOOLTIP :{BLACK}Skocz na właściwą stronę wybierając ją z listy.

View File

@@ -996,7 +996,12 @@ STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_NORMAL :Normal
STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_2X_ZOOM :Dobro do tamanho
STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_4X_ZOOM :Quádruplo do tamanho
STR_GAME_OPTIONS_FONT_ZOOM :{BLACK}Tamanho da fonte
STR_GAME_OPTIONS_FONT_ZOOM_DROPDOWN_TOOLTIP :{BLACK}Seleccionar tamanho da fonte de interface a usar
STR_GAME_OPTIONS_FONT_ZOOM_DROPDOWN_NORMAL :Normal
STR_GAME_OPTIONS_FONT_ZOOM_DROPDOWN_2X_ZOOM :Dobro do tamanho
STR_GAME_OPTIONS_FONT_ZOOM_DROPDOWN_4X_ZOOM :Quádruplo do tamanho
STR_GAME_OPTIONS_BASE_GRF :{BLACK}Conjunto de gráficos base
STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Seleccione o conjunto de gráficos base a usar
@@ -2743,6 +2748,9 @@ STR_FRAMERATE_DRAWING :{BLACK}Renderiz
STR_FRAMERATE_DRAWING_VIEWPORTS :{BLACK} Janelas de exibição do mundo:
STR_FRAMERATE_VIDEO :{BLACK}Saída de video:
STR_FRAMERATE_SOUND :{BLACK}Mistura de Som:
STR_FRAMERATE_ALLSCRIPTS :{BLACK} GS/AI total:
STR_FRAMERATE_GAMESCRIPT :{BLACK} Script de jogo:
STR_FRAMERATE_AI :{BLACK} AI {NUM} {STRING}
############ End of leave-in-this-order
############ Leave those lines in this order!!
STR_FRAMETIME_CAPTION_GAMELOOP :Loop de jogo
@@ -2757,6 +2765,9 @@ STR_FRAMETIME_CAPTION_DRAWING :Renderização
STR_FRAMETIME_CAPTION_DRAWING_VIEWPORTS :Renderização de janela de exibição do mundo
STR_FRAMETIME_CAPTION_VIDEO :Saída de video
STR_FRAMETIME_CAPTION_SOUND :Mistura de Som
STR_FRAMETIME_CAPTION_ALLSCRIPTS :total scripts GS/AI
STR_FRAMETIME_CAPTION_GAMESCRIPT :Script de jogo
STR_FRAMETIME_CAPTION_AI :AI {NUM} {STRING}
############ End of leave-in-this-order
@@ -2989,7 +3000,7 @@ STR_NEWGRF_ERROR_GRM_FAILED :Recursos GRF pe
STR_NEWGRF_ERROR_FORCEFULLY_DISABLED :{1:STRING} foi desactivado por {STRING}
STR_NEWGRF_ERROR_INVALID_SPRITE_LAYOUT :Formato de Gráfico Inválido ou desconhecido (sprite {3:NUM})
STR_NEWGRF_ERROR_LIST_PROPERTY_TOO_LONG :Demasiados elementos na lista de valores de propriedade (sprite {3:NUM}, propriedade {4:HEX})
STR_NEWGRF_ERROR_INDPROD_CALLBACK :Revogação da produção industrial inválida (sprite {3:NUM}, "{1:STRING}")
STR_NEWGRF_ERROR_INDPROD_CALLBACK :Revogação da produção industrial inválida (sprite {3:NUM}, "{2:STRING}")
# NewGRF related 'general' warnings
STR_NEWGRF_POPUP_CAUTION_CAPTION :{WHITE}Alerta!

View File

@@ -475,6 +475,7 @@ STR_ABOUT_MENU_SCREENSHOT :Capturează ecr
STR_ABOUT_MENU_ZOOMIN_SCREENSHOT :Captură mărită
STR_ABOUT_MENU_DEFAULTZOOM_SCREENSHOT :Mărimea implicită a capturii
STR_ABOUT_MENU_GIANT_SCREENSHOT :Capturează toată harta
STR_ABOUT_MENU_SHOW_FRAMERATE :Arată FPS
STR_ABOUT_MENU_ABOUT_OPENTTD :Despre 'OpenTTD'
STR_ABOUT_MENU_SPRITE_ALIGNER :Aliniere imagini
STR_ABOUT_MENU_TOGGLE_BOUNDING_BOXES :Afişează/ascunde casetele de încadrare
@@ -923,6 +924,7 @@ STR_GAME_OPTIONS_CURRENCY_ZAR :Rand sud-africa
STR_GAME_OPTIONS_CURRENCY_CUSTOM :Personalizată...
STR_GAME_OPTIONS_CURRENCY_GEL :Lari Georgian (GEL)
STR_GAME_OPTIONS_CURRENCY_IRR :Rial Iranian (IRR)
STR_GAME_OPTIONS_CURRENCY_RUB :Ruble rusești (RUB)
############ end of currency region
STR_GAME_OPTIONS_ROAD_VEHICLES_FRAME :{BLACK}Autovehiculele circulă...
@@ -1103,6 +1105,7 @@ STR_CONFIG_SETTING_TYPE_COMPANY_MENU :Setări compani
STR_CONFIG_SETTING_TYPE_COMPANY_INGAME :Setări companie (stocate în fişierul de salvare; afectează doar compania curentă)
STR_CONFIG_SETTING_RESTRICT_CATEGORY :{BLACK}Categorie:
STR_CONFIG_SETTING_RESTRICT_TYPE :{BLACK}Tip:
STR_CONFIG_SETTING_RESTRICT_DROPDOWN_HELPTEXT :{BLACK}Arată în lista de mai jos doar setările modificate
STR_CONFIG_SETTING_RESTRICT_BASIC :Setări de bază (afişează numai setări importante)
STR_CONFIG_SETTING_RESTRICT_ADVANCED :Setări avansate (afişează majoritatea setărilor)
@@ -1118,6 +1121,7 @@ STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_INGAME :Setări joc (st
STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_MENU :Setări companie (stocate în salvări; afectează doar jocurile noi)
STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_INGAME :Setări compenia (stocate în salvări; afectează doar compania curentă)
STR_CONFIG_SETTING_CATEGORY_HIDES :{BLACK}Arată toate rezultatele de căutare setând{}{SILVER}Categoria {BLACK}în {WHITE}{STRING}
STR_CONFIG_SETTING_TYPE_HIDES :{BLACK}Arată toate rezultatele de căutare setând{}{SILVER}Tipul {BLACK}în {WHITE}Toate tipurile de setări
STR_CONFIG_SETTINGS_NONE :{WHITE}- Nespecificat -
STR_CONFIG_SETTING_OFF :Inactiv
@@ -1309,6 +1313,7 @@ STR_CONFIG_SETTING_TREE_PLACER_HELPTEXT :Alegeți distri
STR_CONFIG_SETTING_TREE_PLACER_NONE :Niciunul
STR_CONFIG_SETTING_TREE_PLACER_ORIGINAL :Original
STR_CONFIG_SETTING_TREE_PLACER_IMPROVED :Îmbunătăţit
STR_CONFIG_SETTING_ROAD_SIDE :Autovehicule: {STRING}
STR_CONFIG_SETTING_ROAD_SIDE_HELPTEXT :Alege banda pentru condus
STR_CONFIG_SETTING_HEIGHTMAP_ROTATION :Rotaţie hartă înălţimi: {STRING}
STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_COUNTER_CLOCKWISE :Spre stânga
@@ -1328,6 +1333,7 @@ STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_HELPTEXT :Culoarea terenu
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_GREEN :Verde
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_DARK_GREEN :Verde închis
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_VIOLET :Mov
STR_CONFIG_SETTING_SCROLLMODE_RMB_LOCKED :Mută harta ținând apăsat click dreapta, poziția cursorului rămânând fixă
STR_CONFIG_SETTING_SMOOTH_SCROLLING :Derulare uşoară ecran: {STRING}
STR_CONFIG_SETTING_SMOOTH_SCROLLING_HELPTEXT :Controlează modul de deplasare a imaginii din ecranul principal când se face click pe harta mică sau când se execută o comandă de deplasare către un obiect anume de pe hartă. Dacă este activată, imaginea se deplasează în mod fluid, altfel imaginea sare direct la zona dorită
STR_CONFIG_SETTING_MEASURE_TOOLTIP :Arată o indicaţie de distanţă la folosirea uneltelor de construcţie: {STRING}
@@ -1360,6 +1366,7 @@ STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_CONTROL :Control+Click
STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_OFF :Oprit
STR_CONFIG_SETTING_AUTOSAVE :Autosalvare: {STRING}
STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES :Foloseşte formatul datei {STRING} pentru numele salvărilor
STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_HELPTEXT :Formatul datei in numele salvărilor
@@ -1598,6 +1605,7 @@ STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED :Modalitatea de
STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT :Modalitatea de distribuire pentru alte clase de cargo: {STRING}
STR_CONFIG_SETTING_LINKGRAPH_ACCURACY :Acurateţea distribuţiei: {STRING}
STR_CONFIG_SETTING_DEMAND_DISTANCE :Efectul distanţei asupra cererii: {STRING}
STR_CONFIG_SETTING_DEMAND_DISTANCE_HELPTEXT :Dacă setezi această valoare peste 0, distanța dintre stația origine A al mărfii și o posibilă stație B va afecta cantitatea de marfă trimisă din punctul A în B. Cu cât e mai departe B de A cu atât va fi mai mică cantitatea de marfă transportată. Cu cât mărești această valoare, cu atât mai puțină marfă se livrează spre destinațiile îndepărtate si cu atât mai multă la cele mai apropiate.
STR_CONFIG_SETTING_DEMAND_SIZE :Cantitatea de cargo la întoarcere pentru modul simetric: {STRING}
STR_CONFIG_SETTING_SHORT_PATH_SATURATION :Saturaţia căilor de capacitate mică înainte de a utiliza căi de capacitate mare: {STRING}
@@ -1638,6 +1646,7 @@ STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_METRIC :Metric (m)
STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_SI :SI (m)
STR_CONFIG_SETTING_LOCALISATION :{ORANGE}Localizare
STR_CONFIG_SETTING_GRAPHICS :{ORANGE}Grafică
STR_CONFIG_SETTING_SOUND :{ORANGE}Efecte sonore
STR_CONFIG_SETTING_INTERFACE :{ORANGE}Interfaţă
STR_CONFIG_SETTING_INTERFACE_GENERAL :{ORANGE}General
@@ -2660,6 +2669,7 @@ STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD
STR_FRAMERATE_RATE_GAMELOOP_TOOLTIP :{BLACK}Număr de evenimente de joc simulate per secundă.
STR_FRAMERATE_AVERAGE :{WHITE}Medie
STR_FRAMERATE_DATA_POINTS :{BLACK}Date bazate pe măsurători {COMMA}
STR_FRAMERATE_MS_GOOD :{LTBLUE}{DECIMAL} ms
STR_FRAMERATE_GRAPH_MILLISECONDS :{TINY_FONT}{COMMA} ms
############ Leave those lines in this order!!
STR_FRAMERATE_VIDEO :{BLACK}Ieșire video:
@@ -2690,6 +2700,7 @@ STR_SAVELOAD_DETAIL_CAPTION :{BLACK}Detalii
STR_SAVELOAD_DETAIL_NOT_AVAILABLE :{BLACK}Nicio informaţie disponibilă
STR_SAVELOAD_DETAIL_COMPANY_INDEX :{SILVER}{COMMA}: {WHITE}{STRING}
STR_SAVELOAD_DETAIL_GRFSTATUS :{SILVER}NewGRF: {WHITE}{STRING}
STR_SAVELOAD_FILTER_TITLE :{BLACK}Filtrare după:
STR_SAVELOAD_OSKTITLE :{BLACK}Introduceţi un nume pentru salvare
@@ -2815,6 +2826,7 @@ STR_NEWGRF_SETTINGS_DISABLED :{RED}Dezactivat
STR_NEWGRF_SETTINGS_INCOMPATIBLE :{RED}Incompatibil cu această versiune de OpenTTD
# NewGRF save preset window
STR_SAVE_PRESET_TITLE :{BLACK}Adaugă denumire presetare
STR_SAVE_PRESET_CANCEL :{BLACK}Anulează
STR_SAVE_PRESET_CANCEL_TOOLTIP :{BLACK}Nu schimba setarea implicită
STR_SAVE_PRESET_SAVE_TOOLTIP :{BLACK}Salvează setarea pe numele selectat
@@ -3323,6 +3335,7 @@ STR_GROUP_REMOVE_ALL_VEHICLES :Elimină toate
STR_GROUP_RENAME_CAPTION :{BLACK}Redenumeşte un grup
STR_GROUP_OCCUPANCY :Utilizare curentă:
STR_GROUP_OCCUPANCY_VALUE :{NUM}%
# Build vehicle window
STR_BUY_VEHICLE_TRAIN_RAIL_CAPTION :Noi vehicule feroviare
@@ -3489,6 +3502,7 @@ STR_ENGINE_PREVIEW_MAGLEV_LOCOMOTIVE :locomotivă per
STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER :{BLACK}Cost: {CURRENCY_LONG} Greutate: {WEIGHT_SHORT}{}Vitezã: {VELOCITY} Putere: {POWER}{}Cost de rulare: {CURRENCY_LONG}/an{}Capacitate: {CARGO_LONG}
STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER_MAX_TE :{BLACK}Cost: {CURRENCY_LONG} Greutate: {WEIGHT_SHORT}{}Viteză: {VELOCITY} Putere: {POWER} Ef. T. Max.: {6:FORCE}{}Cost rulaj: {4:CURRENCY_LONG}/an{}Capacitate: {5:CARGO_LONG}
STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAP_RUNCOST :{BLACK}Cost: {CURRENCY_LONG} Viteză max.: {VELOCITY}{}Capacitate: {CARGO_LONG}{}Mentenanţă: {CURRENCY_LONG}/an
STR_ENGINE_PREVIEW_COST_MAX_SPEED_TYPE_RANGE_CAP_CAP_RUNCOST :{BLACK}Cost: {CURRENCY_LONG} Viteza maximă: {VELOCITY}{}Tip avion: {STRING} Rază: {COMMA} pătrățele{}Capacitate: {CARGO_LONG}, {CARGO_LONG}{}Cost întreținere: {CURRENCY_LONG}/an
# Autoreplace window
STR_REPLACE_VEHICLES_WHITE :{WHITE}Înlocuieşte {STRING} - {STRING}
@@ -4423,6 +4437,7 @@ STR_BASESOUNDS_DOS_DESCRIPTION :Setul de sunete
STR_BASESOUNDS_WIN_DESCRIPTION :Setul de sunete original al Transport Tycoon Deluxe pentru Windows.
STR_BASESOUNDS_NONE_DESCRIPTION :Un set de sunete fără nici un sunet inclus.
STR_BASEMUSIC_WIN_DESCRIPTION :Setul de muzică original al Transport Tycoon Deluxe pentru Windows.
STR_BASEMUSIC_DOS_DESCRIPTION :Setul de muzică original al Transport Tycoon Deluxe pentru DOS.
STR_BASEMUSIC_NONE_DESCRIPTION :Un set de muzică fără muzică inclusă.
##id 0x2000

View File

@@ -3179,7 +3179,7 @@ STR_NEWGRF_ERROR_GRM_FAILED :Запроше
STR_NEWGRF_ERROR_FORCEFULLY_DISABLED :{1:STRING} был отключён из-за {2:STRING}
STR_NEWGRF_ERROR_INVALID_SPRITE_LAYOUT :Недопустимый/неизвестный формат расположения спрайтов (спрайт {3:NUM})
STR_NEWGRF_ERROR_LIST_PROPERTY_TOO_LONG :Слишком много элементов в списке значений (спрайт {3:NUM}, свойство {4:HEX})
STR_NEWGRF_ERROR_INDPROD_CALLBACK :Неверная обработка продукции предприятия (спрайт {3:NUM}, "{1:STRING}")
STR_NEWGRF_ERROR_INDPROD_CALLBACK :Неверная обработка продукции предприятия (спрайт {3:NUM}, "{2:STRING}")
# NewGRF related 'general' warnings
STR_NEWGRF_POPUP_CAUTION_CAPTION :{WHITE}Осторожно!
@@ -3211,6 +3211,7 @@ STR_NEWGRF_BUGGY :{WHITE}NewGRF
STR_NEWGRF_BUGGY_ARTICULATED_CARGO :{WHITE}Информация о вместимости/переоборудовании для локомотива «{1:ENGINE}» после постройки отличается от сведений в списке покупки, что может помешать функции автообновления/автозамены корректно произвести переоборудование.
STR_NEWGRF_BUGGY_ENDLESS_PRODUCTION_CALLBACK :{WHITE}Модуль «{1:STRING}» вызвал бесконечный цикл
STR_NEWGRF_BUGGY_UNKNOWN_CALLBACK_RESULT :{WHITE}Функция обратного вызова {1:HEX} вернула непонятный/неверный результат {2:HEX}
STR_NEWGRF_BUGGY_INVALID_CARGO_PRODUCTION_CALLBACK :{WHITE}«{1:STRING}» вернул неверный тип груза по адресу {2:HEX}
# 'User removed essential NewGRFs'-placeholders for stuff without specs
STR_NEWGRF_INVALID_CARGO :<неизвестный груз>

View File

@@ -3000,7 +3000,7 @@ STR_NEWGRF_ERROR_GRM_FAILED :Recursos GRF so
STR_NEWGRF_ERROR_FORCEFULLY_DISABLED :{1:STRING} fue desactivado por {STRING}
STR_NEWGRF_ERROR_INVALID_SPRITE_LAYOUT :Formato de colocación de sprites no válido o desconocido (sprite {3:NUM})
STR_NEWGRF_ERROR_LIST_PROPERTY_TOO_LONG :Demasiados elementos en la lista de valores de propiedad (sprite {3:NUM}, property {4:HEX})
STR_NEWGRF_ERROR_INDPROD_CALLBACK :Llamada de producción de industria no válida (sprite {3:NUM}, "{1:STRING}")
STR_NEWGRF_ERROR_INDPROD_CALLBACK :Llamada de producción de industria no válida (sprite {3:NUM}, "{2:STRING}")
# NewGRF related 'general' warnings
STR_NEWGRF_POPUP_CAUTION_CAPTION :{WHITE}¡Precaución!

View File

@@ -2986,7 +2986,7 @@ STR_NEWGRF_ERROR_GRM_FAILED :Efterfrågade G
STR_NEWGRF_ERROR_FORCEFULLY_DISABLED :{1:STRING} har inaktiverats av {2:STRING}
STR_NEWGRF_ERROR_INVALID_SPRITE_LAYOUT :Felaktigt/okänt layout-format av spriteobjekt (spriteobjekt {3:NUM})
STR_NEWGRF_ERROR_LIST_PROPERTY_TOO_LONG :För många poster i listan med egenskapsvärden (spriteobjekt {3:NUM}, egenskap {4:HEX})
STR_NEWGRF_ERROR_INDPROD_CALLBACK :Ogiltig industriproduktions-callback (spriteobjekt {3:NUM}, "{1:STRING}")
STR_NEWGRF_ERROR_INDPROD_CALLBACK :Ogiltig industriproduktions-callback (spriteobjekt {3:NUM}, "{2:STRING}")
# NewGRF related 'general' warnings
STR_NEWGRF_POPUP_CAUTION_CAPTION :{WHITE}Varning!

View File

@@ -996,7 +996,10 @@ STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_NORMAL :Normal
STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_2X_ZOOM :İki kat büyük
STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_4X_ZOOM :Dört kat büyük
STR_GAME_OPTIONS_FONT_ZOOM_DROPDOWN_TOOLTIP :Arayüz boyutunu seç
STR_GAME_OPTIONS_FONT_ZOOM_DROPDOWN_NORMAL :Normal
STR_GAME_OPTIONS_FONT_ZOOM_DROPDOWN_2X_ZOOM :Yazı iki kat büyük
STR_GAME_OPTIONS_BASE_GRF :{BLACK}Temel grafik kümesi
STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Kullanılacak temel grafik kümesini seçin
@@ -2743,6 +2746,7 @@ STR_FRAMERATE_DRAWING :{BLACK}Grafik i
STR_FRAMERATE_DRAWING_VIEWPORTS :{BLACK} Dünya görüş alanları:
STR_FRAMERATE_VIDEO :{BLACK}Video çıkışı:
STR_FRAMERATE_SOUND :{BLACK}Ses karıştırma:
STR_FRAMERATE_GAMESCRIPT :Oyun scripti
############ End of leave-in-this-order
############ Leave those lines in this order!!
STR_FRAMETIME_CAPTION_GAMELOOP :Oyun döngüsü
@@ -2989,7 +2993,7 @@ STR_NEWGRF_ERROR_GRM_FAILED :İstenen GRF ka
STR_NEWGRF_ERROR_FORCEFULLY_DISABLED :{1:STRING} {STRING} tarafından deaktive edildi
STR_NEWGRF_ERROR_INVALID_SPRITE_LAYOUT :Geçersiz/bilinmeyen nesne yerleşim biçimi (nesne {3:NUM})
STR_NEWGRF_ERROR_LIST_PROPERTY_TOO_LONG :Özellik değeri listesinde çok fazla öğe (sprite {3:NUM}, özellik {4:HEX})
STR_NEWGRF_ERROR_INDPROD_CALLBACK :Geçersiz endüstri üretim geri çağrımı (sprite {3:NUM}, "{1:STRING}")
STR_NEWGRF_ERROR_INDPROD_CALLBACK :Geçersiz endüstri üretim geri çağrımı (sprite {3:NUM}, "{2:STRING}")
# NewGRF related 'general' warnings
STR_NEWGRF_POPUP_CAUTION_CAPTION :{WHITE}Uyarı!

View File

@@ -314,6 +314,8 @@ STR_COLOUR_ORANGE :Помаран
STR_COLOUR_BROWN :Коричневий
STR_COLOUR_GREY :Сірий
STR_COLOUR_WHITE :Білий
STR_COLOUR_RANDOM :Випадково
STR_COLOUR_DEFAULT :Звичайний
# Units used in OpenTTD
STR_UNITS_VELOCITY_IMPERIAL :{COMMA}{NBSP}миль/год
@@ -589,6 +591,7 @@ STR_TOOLBAR_SOUND_MUSIC :Звук/Муз
############ range for message menu starts
STR_NEWS_MENU_LAST_MESSAGE_NEWS_REPORT :Останнє повідомлення
STR_NEWS_MENU_MESSAGE_HISTORY_MENU :Історія повідомлень
STR_NEWS_MENU_DELETE_ALL_MESSAGES :Видалити всі повідомлення
############ range ends here
############ range for about menu starts
@@ -600,6 +603,7 @@ STR_ABOUT_MENU_SCREENSHOT :Знімок е
STR_ABOUT_MENU_ZOOMIN_SCREENSHOT :Знімок екрану з максимальним збільшенням
STR_ABOUT_MENU_DEFAULTZOOM_SCREENSHOT :Знімок екрану зі стандартним збільшенням
STR_ABOUT_MENU_GIANT_SCREENSHOT :Знімок всієї карти
STR_ABOUT_MENU_SHOW_FRAMERATE :Швидкість генерації гри
STR_ABOUT_MENU_ABOUT_OPENTTD :Про гру 'OpenTTD'
STR_ABOUT_MENU_SPRITE_ALIGNER :Вирівнювання спрайтів
STR_ABOUT_MENU_TOGGLE_BOUNDING_BOXES :Вкл./відкл. обмежуючі рамки
@@ -778,6 +782,7 @@ STR_MUSIC_RULER_MARKER :{TINY_FONT}{BLA
STR_MUSIC_TRACK_NONE :{TINY_FONT}{DKGREEN}--
STR_MUSIC_TRACK_DIGIT :{TINY_FONT}{DKGREEN}{ZEROFILL_NUM}
STR_MUSIC_TITLE_NONE :{TINY_FONT}{DKGREEN}------
STR_MUSIC_TITLE_NOMUSIC :{TINY_FONT}{DKGREEN}Немає доступної музики
STR_MUSIC_TITLE_NAME :{TINY_FONT}{DKGREEN}"{STRING}"
STR_MUSIC_TRACK :{TINY_FONT}{BLACK}Доріжка
STR_MUSIC_XTITLE :{TINY_FONT}{BLACK}Заголовок
@@ -798,11 +803,14 @@ STR_MUSIC_TOOLTIP_TOGGLE_PROGRAM_SHUFFLE :{BLACK}Вкл./
STR_MUSIC_TOOLTIP_SHOW_MUSIC_TRACK_SELECTION :{BLACK}Показує вікно вибору музичної програми
# Playlist window
STR_PLAYLIST_MUSIC_SELECTION_SETNAME :{WHITE}Музична програма - '{STRING}'
STR_PLAYLIST_TRACK_NAME :{TINY_FONT}{LTBLUE}{ZEROFILL_NUM} "{STRING}"
STR_PLAYLIST_TRACK_INDEX :{TINY_FONT}{BLACK}Назва доріжки
STR_PLAYLIST_PROGRAM :{TINY_FONT}{BLACK}Програма - '{STRING}'
STR_PLAYLIST_CLEAR :{TINY_FONT}{BLACK}Очистити
STR_PLAYLIST_CHANGE_SET :{BLACK}Змінити набір
STR_PLAYLIST_TOOLTIP_CLEAR_CURRENT_PROGRAM_CUSTOM1 :{BLACK}Очистити програму (тільки для Набору 1 або Набору 2)
STR_PLAYLIST_TOOLTIP_CHANGE_SET :{BLACK}Виберіть інший набір музичного оформлення
STR_PLAYLIST_TOOLTIP_CLICK_TO_ADD_TRACK :{BLACK}Виберіть доріжку, щоб додати до програми (тільки для Набору 1 або Набору 2)
STR_PLAYLIST_TOOLTIP_CLICK_TO_REMOVE_TRACK :{BLACK}Клацніть мишою на мелодії для її видалення зі списку (лише Набір1 та Набір2)
@@ -938,6 +946,7 @@ STR_NEWS_MERGER_TAKEOVER_TITLE :{BIG_FONT}{BLAC
STR_PRESIDENT_NAME_MANAGER :{BLACK}{PRESIDENT_NAME}{}(Керівник)
STR_NEWS_NEW_TOWN :{BLACK}{BIG_FONT}{STRING} субсидував спорудження нового міста {TOWN}!
STR_NEWS_NEW_TOWN_UNSPONSORED :{BLACK}{BIG_FONT}Нове місто {TOWN} побудовано!
STR_NEWS_INDUSTRY_CONSTRUCTION :{BIG_FONT}{BLACK}Будується {STRING} біля {TOWN}!
STR_NEWS_INDUSTRY_PLANTED :{BIG_FONT}{BLACK}Насаджено {STRING} біля {TOWN}!
@@ -1005,9 +1014,9 @@ STR_NEWS_EXCLUSIVE_RIGHTS_DESCRIPTION :{BIG_FONT}{BLAC
# Extra view window
STR_EXTRA_VIEW_PORT_TITLE :{WHITE}Вікно {COMMA}
STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN :{BLACK}Копіювати до вікна
STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN :{BLACK}Змінити вікно
STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN_TT :{BLACK}Копіювати місцеположення з основного екрану до цього вікна
STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW :{BLACK}Вставити з вікна
STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW :{BLACK}Вставити в головне вікно
STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW_TT :{BLACK}Перейти на основному екрані до цього місця
# Game options window
@@ -1051,6 +1060,7 @@ STR_GAME_OPTIONS_CURRENCY_CUSTOM :Власна...
STR_GAME_OPTIONS_CURRENCY_GEL :Грузинські ларі (GEL)
STR_GAME_OPTIONS_CURRENCY_IRR :Іранський ріал (IRR)
STR_GAME_OPTIONS_CURRENCY_RUB :Російський новий рубель (RUB)
STR_GAME_OPTIONS_CURRENCY_MXN :Мексиканське песо (MXN)
############ end of currency region
STR_GAME_OPTIONS_ROAD_VEHICLES_FRAME :{BLACK}Сторона руху транспорту
@@ -1113,7 +1123,12 @@ STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_NORMAL :Нормаль
STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_2X_ZOOM :Подвійний розмір
STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_4X_ZOOM :Почетверний розмір
STR_GAME_OPTIONS_FONT_ZOOM :{BLACK}Розмір шрифту
STR_GAME_OPTIONS_FONT_ZOOM_DROPDOWN_TOOLTIP :{BLACK}Виберть розмір шрифту інтерфейсу
STR_GAME_OPTIONS_FONT_ZOOM_DROPDOWN_NORMAL :Нормальний
STR_GAME_OPTIONS_FONT_ZOOM_DROPDOWN_2X_ZOOM :Подвійний розмір
STR_GAME_OPTIONS_FONT_ZOOM_DROPDOWN_4X_ZOOM :Почетверний розмір
STR_GAME_OPTIONS_BASE_GRF :{BLACK}Базовий набір графіки
STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Оберіть, яку основну графіку використовувати
@@ -1382,6 +1397,8 @@ STR_CONFIG_SETTING_DYNAMIC_ENGINES_EXISTING_VEHICLES :{WHITE}Цю н
STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE :Витрати на утримання інфраструктури: {STRING}
STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE_HELPTEXT :При включенні інфраструктура потребує коштів для утримання. Витрати збільшуються не пропорційно з ростом розміру мережі, більше впливаючи на великі компанії ніж на малі
STR_CONFIG_SETTING_COMPANY_STARTING_COLOUR :Колір компанії: {STRING}
STR_CONFIG_SETTING_COMPANY_STARTING_COLOUR_HELPTEXT :Виберіть початковий колір для компанії
STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS :Аеропорти не застарівають: {STRING}
STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS_HELPTEXT :При включенні кожен аеропорт буде доступним для будівництва безстроково після його впровадження.
@@ -1466,6 +1483,12 @@ STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_HELPTEXT :Колір по
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_GREEN :зелений
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_DARK_GREEN :темнозелений
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_VIOLET :фіолетовий
STR_CONFIG_SETTING_SCROLLMODE :Переміщення вікна обзору: {STRING}
STR_CONFIG_SETTING_SCROLLMODE_HELPTEXT :Спосіб пересування ігрового поля
STR_CONFIG_SETTING_SCROLLMODE_DEFAULT :Переміщувати ПКМ, зафіксувавши курсор
STR_CONFIG_SETTING_SCROLLMODE_RMB_LOCKED :Переміщувати карту ПКМ, зафіксувавши курсор
STR_CONFIG_SETTING_SCROLLMODE_RMB :Переміщувати карту ПКМ
STR_CONFIG_SETTING_SCROLLMODE_LMB :Переміщувати ЛКМ
STR_CONFIG_SETTING_SMOOTH_SCROLLING :Плавна прокрутка у вікні: {STRING}
STR_CONFIG_SETTING_SMOOTH_SCROLLING_HELPTEXT :Налаштування способу прокрутки основного екрану при клацанні мишою по зменшенній карті, або інших діях, що призводять до переміщення по карті (кнопки "Оглянути", тощо). При включенні опції переміщення карти відбувається плавно. При виключенні - відбувається моментальне переміщення в необхідну точку
STR_CONFIG_SETTING_MEASURE_TOOLTIP :Показувати підказки про розміри під час будівництва: {STRING}
@@ -1497,6 +1520,8 @@ STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_COMMAND :Команда+
STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_CONTROL :Ctrl+клац мишою
STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_OFF :не емулювати
STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE :Закрити вікно правою кнопкою миші: {STRING}
STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE_HELPTEXT :Закривати вікно кліком правої кнопки миші по ньому. При цьому віключається поява підказок за правою кнопкою.
STR_CONFIG_SETTING_AUTOSAVE :Автозбереження: {STRING}
STR_CONFIG_SETTING_AUTOSAVE_HELPTEXT :Оберіть проміжок між автоматичними збереженнями гри
@@ -1886,6 +1911,7 @@ STR_INTRO_TOOLTIP_ONLINE_CONTENT :{BLACK}Пере
STR_INTRO_TOOLTIP_SCRIPT_SETTINGS :{BLACK}Показати налаштування AI / Ігрового Скрипта
STR_INTRO_TOOLTIP_QUIT :{BLACK}Вийти з OpenTTD
STR_INTRO_BASESET :{BLACK}В обраному наборі базової графіки немає {NUM} спрайт{P а ів ів}. Будь ласка, оновіть набір графіки.
STR_INTRO_TRANSLATION :{BLACK}Переклад має {NUM} неперекладених рядків. Зареєструйтесь як перекладач вашої мови та покращіть OpenTTD. Детальніше читайте в readme.txt.
# Quit window
@@ -1931,6 +1957,7 @@ STR_CHEAT_CHANGE_DATE_QUERY_CAPT :{WHITE}Змін
STR_CHEAT_SETUP_PROD :{LTBLUE}Дозволити зміну рівня виробництва: {ORANGE}{STRING}
# Livery window
STR_LIVERY_CAPTION :{WHITE}Кольори компанії «{COMPANY}»
STR_LIVERY_GENERAL_TOOLTIP :{BLACK}Показати загальне фарбування
STR_LIVERY_TRAIN_TOOLTIP :{BLACK}Показати фарбування поїздів
@@ -2190,6 +2217,7 @@ STR_NETWORK_CONNECTION_DISCONNECT :{BLACK}Роз'
STR_NETWORK_NEED_GAME_PASSWORD_CAPTION :{WHITE}Сервер захищено паролем. Введіть пароль
STR_NETWORK_NEED_COMPANY_PASSWORD_CAPTION :{WHITE}Компанія захищена паролем. Введіть пароль
STR_NETWORK_COMPANY_LIST_CLIENT_LIST_CAPTION :{WHITE}Список клієнтів
# Network company list added strings
STR_NETWORK_COMPANY_LIST_CLIENT_LIST :Список клієнтів
@@ -2405,6 +2433,7 @@ STR_LINKGRAPH_LEGEND_CAPTION :{BLACK}Леге
STR_LINKGRAPH_LEGEND_ALL :{BLACK}Усе
STR_LINKGRAPH_LEGEND_NONE :{BLACK}Немає
STR_LINKGRAPH_LEGEND_SELECT_COMPANIES :{BLACK}Виберіть компанії для відображення
STR_LINKGRAPH_LEGEND_COMPANY_TOOLTIP :{BLACK}{STRING}{}{COMPANY}
# Linkgraph legend window and linkgraph legend in smallmap
STR_LINKGRAPH_LEGEND_UNUSED :{TINY_FONT}{BLACK}не використовується
@@ -2492,9 +2521,9 @@ STR_BUILD_SIGNAL_ELECTRIC_COMBO_TOOLTIP :{BLACK}Комб
STR_BUILD_SIGNAL_ELECTRIC_PBS_TOOLTIP :{BLACK}Розширений сигнал (електричний){}Розширений сигнал дозволяє більше ніж одному поїзду одночасно заходити до блоку сигналів, якщо поїзд може зарезервувати шлях до безпечної точки зупинки. Розширені сигнали дозволяють проїжджати їх з обох сторін
STR_BUILD_SIGNAL_ELECTRIC_PBS_OWAY_TOOLTIP :{BLACK}Односторонній розширений сигнал (електричний){}Розширений сигнал дозволяє більше ніж одному поїзду одночасно заходити до блоку сигналів, якщо поїзд може зарезервувати шлях до безпечної точки зупинки. Односторонні розширені сигнали не дозволяють вїжджати з іншої сторони
STR_BUILD_SIGNAL_CONVERT_TOOLTIP :{BLACK}Заміна сигналів{}Коли обрано, натискання на існуючому сигналі замінить його на обраний тип і варіант сигналу, CTRL+натискання замінить існуючий варіант. Утримуйте Shift для показу витрат на заміну
STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_TOOLTIP :{BLACK}Частота сигналів при перетаскуванні
STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_DECREASE_TOOLTIP :{BLACK}Зменшити частоту сигналів
STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_INCREASE_TOOLTIP :{BLACK}Збільшити частоту сигналів
STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_TOOLTIP :{BLACK}Відстань між сигналами при перетаскуванні
STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_DECREASE_TOOLTIP :{BLACK}Зменшити відстань між сигналами
STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_INCREASE_TOOLTIP :{BLACK}Збільшити відстань між сигналами
# Bridge selection window
STR_SELECT_RAIL_BRIDGE_CAPTION :{WHITE}Виберіть міст
@@ -2715,6 +2744,7 @@ STR_LAND_AREA_INFORMATION_AIRPORTTILE_NAME :{BLACK}Назв
STR_LAND_AREA_INFORMATION_NEWGRF_NAME :{BLACK}NewGRF: {LTBLUE}{STRING}
STR_LAND_AREA_INFORMATION_CARGO_ACCEPTED :{BLACK}Приймає: {LTBLUE}
STR_LAND_AREA_INFORMATION_CARGO_EIGHTS :({COMMA}/8 {STRING})
STR_LANG_AREA_INFORMATION_RAIL_TYPE :{BLACK}Тип зал.колії: {LTBLUE}{STRING}
STR_LANG_AREA_INFORMATION_RAIL_SPEED_LIMIT :{BLACK}Ліміт швидкості залізниці: {LTBLUE}{VELOCITY}
STR_LANG_AREA_INFORMATION_ROAD_SPEED_LIMIT :{BLACK}Ліміт швидкості авто: {LTBLUE}{VELOCITY}
@@ -2727,29 +2757,29 @@ STR_LAI_CLEAR_DESCRIPTION_FIELDS :Поле
STR_LAI_CLEAR_DESCRIPTION_SNOW_COVERED_LAND :Засніжена земля
STR_LAI_CLEAR_DESCRIPTION_DESERT :Пустеля
STR_LAI_RAIL_DESCRIPTION_TRACK :Звичайна колія
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_SIGNALS :Звичайна колія з блок-сигналами
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRESIGNALS :Звичайна колія з пресигналами
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXITSIGNALS :Звичайна колія з вихідними сигналами
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBOSIGNALS :Звичайна колія з комбосигналами
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PBSSIGNALS :Звичайна колія з маршрутними сигналами
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NOENTRYSIGNALS :Звичайна колія з односторонніми маршрутними сигналами
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_PRESIGNALS :Звичайна колія з блок-сигналами і пресигналами
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_EXITSIGNALS :Звичайна колія з блок-сигналами і вихідними сигналами
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_COMBOSIGNALS :Звичайна колія з блок-сигналами і комбосигналами
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_PBSSIGNALS :Звичайна колія з блок-сигналами та маршрутними сигналами
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_NOENTRYSIGNALS :Звичайна колія з блок-сигналами та одност. маршрутними сигналами
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_EXITSIGNALS :Звичайна колія з пресигналами і вихідними сигналами
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_COMBOSIGNALS :Звичайна колія з пресигналами і комбосигналами
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_PBSSIGNALS :Звичайна колія з пресигналами і маршрутними сигналами
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_NOENTRYSIGNALS :Звичайна колія з пресигналами і одност. маршрутними сигналами
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_COMBOSIGNALS :Звичайна колія з вихідними сигналами та комбосигналами
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_PBSSIGNALS :Звичайна колія з вихідними та маршрутними сигналами
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_NOENTRYSIGNALS :Звичайна колія з вихідними та одност. маршрутними сигналами
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_PBSSIGNALS :Звичайна колія з комбосигналами і маршрутними сигналами
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_NOENTRYSIGNALS :Звичайна колія з комбосигналами та одност. маршрутними сигналами
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PBS_NOENTRYSIGNALS :Звичайна колія з маршрутними та одност. маршрутними сигналами
STR_LAI_RAIL_DESCRIPTION_TRAIN_DEPOT :Звичайна колія залізничне депо
STR_LAI_RAIL_DESCRIPTION_TRACK :Залізнична колія
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_SIGNALS :Залізнична колія з блок-сигналами
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRESIGNALS :Залізнична колія з пресигналами
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXITSIGNALS :Залізнична колія з вихідними сигналами
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBOSIGNALS :Залізнична колія з комбосигналами
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PBSSIGNALS :Залізнична колія з маршрутними сигналами
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NOENTRYSIGNALS :Залізнична колія з односторонніми маршрутними сигналами
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_PRESIGNALS :Залізнична колія з блок-сигналами і пресигналами
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_EXITSIGNALS :Залізнична колія з блок-сигналами і вихідними сигналами
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_COMBOSIGNALS :Залізнична колія з блок-сигналами і комбосигналами
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_PBSSIGNALS :Залізнична колія з блок-сигналами та маршрутними сигналами
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_NOENTRYSIGNALS :Залізнична колія з блок-сигналами та одност. маршрутними сигналами
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_EXITSIGNALS :Залізнична колія з пресигналами і вихідними сигналами
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_COMBOSIGNALS :Залізнична колія з пресигналами і комбосигналами
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_PBSSIGNALS :Залізнична колія з пресигналами і маршрутними сигналами
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_NOENTRYSIGNALS :Залізнична колія з пресигналами і одност. маршрутними сигналами
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_COMBOSIGNALS :Залізнична колія з вихідними сигналами та комбосигналами
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_PBSSIGNALS :Залізнична колія з вихідними та маршрутними сигналами
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_NOENTRYSIGNALS :Залізнична колія з вихідними та одност. маршрутними сигналами
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_PBSSIGNALS :Залізнична колія з комбосигналами і маршрутними сигналами
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_NOENTRYSIGNALS :Залізнична колія з комбосигналами та одност. маршрутними сигналами
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PBS_NOENTRYSIGNALS :Залізнична колія з маршрутними та одност. маршрутними сигналами
STR_LAI_RAIL_DESCRIPTION_TRAIN_DEPOT :Залізничне депо
STR_LAI_ROAD_DESCRIPTION_ROAD :Дорога
STR_LAI_ROAD_DESCRIPTION_ROAD_WITH_STREETLIGHTS :Дорога з вуличними ліхтарями
@@ -2816,13 +2846,58 @@ STR_ABOUT_VERSION :{BLACK}OpenTTD
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2019 команда OpenTTD
# Framerate display window
STR_FRAMERATE_CAPTION :{WHITE}Швидкість гри
STR_FRAMERATE_CAPTION_SMALL :{STRING}{WHITE} ({DECIMAL}x)
STR_FRAMERATE_RATE_GAMELOOP :{BLACK}Швидкість прорахунку гри: {STRING}
STR_FRAMERATE_RATE_GAMELOOP_TOOLTIP :{BLACK}Кількість ігрових циклів в секунду.
STR_FRAMERATE_RATE_BLITTER :{BLACK}Виведення на екран: {STRING}
STR_FRAMERATE_RATE_BLITTER_TOOLTIP :{BLACK}Кількість кадрів побудованих за секунду
STR_FRAMERATE_SPEED_FACTOR :{BLACK}Наявна швидкість гри: {DECIMAL}x
STR_FRAMERATE_SPEED_FACTOR_TOOLTIP :{BLACK} Як швидко гра біжить в даний час, в порівнянні з очікуваною швидкістю при звичайній швидкості моделювання.
STR_FRAMERATE_CURRENT :{WHITE}Зараз
STR_FRAMERATE_AVERAGE :{WHITE}Середнє
STR_FRAMERATE_DATA_POINTS :{BLACK}Дані отримано з {COMMA} вимірюван {P "ня" "нь" "нь" }
STR_FRAMERATE_MS_GOOD :{LTBLUE}{DECIMAL} ms
STR_FRAMERATE_MS_GOOD :{LTBLUE}{DECIMAL} мс
STR_FRAMERATE_MS_WARN :{YELLOW}{DECIMAL} ms
STR_FRAMERATE_MS_BAD :{RED}{DECIMAL} мс
STR_FRAMERATE_FPS_GOOD :{LTBLUE}{DECIMAL} кадрів/сек
STR_FRAMERATE_FPS_WARN :{YELLOW}{DECIMAL} кадр{P "" "и" "ів"}/сек
STR_FRAMERATE_FPS_BAD :{RED}{DECIMAL} кадрів/сек
STR_FRAMERATE_GRAPH_MILLISECONDS :{TINY_FONT}{COMMA} мс
STR_FRAMERATE_GRAPH_SECONDS :{TINY_FONT}{COMMA} с
############ Leave those lines in this order!!
STR_FRAMERATE_GAMELOOP :{BLACK}Швидкість прорахунку гри:
STR_FRAMERATE_GL_ECONOMY :{BLACK} Розрахунок вантажів:
STR_FRAMERATE_GL_TRAINS :{BLACK} Рух поїздів:
STR_FRAMERATE_GL_ROADVEHS :{BLACK} Рух автомобілів:
STR_FRAMERATE_GL_SHIPS :{BLACK} Рух кораблів:
STR_FRAMERATE_GL_AIRCRAFT :{BLACK} Рух літаків:
STR_FRAMERATE_GL_LANDSCAPE :{BLACK} Зміни на карті:
STR_FRAMERATE_GL_LINKGRAPH :{BLACK} Затримка графу розподілу:
STR_FRAMERATE_DRAWING :{BLACK}Побудова зображень:
STR_FRAMERATE_DRAWING_VIEWPORTS :{BLACK} Додаткові вікна:
STR_FRAMERATE_VIDEO :{BLACK}Виведення на екран:
STR_FRAMERATE_SOUND :{BLACK}Обробка звуків:
STR_FRAMERATE_ALLSCRIPTS :{BLACK} Виконання скриптів:
STR_FRAMERATE_GAMESCRIPT :{BLACK} Ігровий Скрипт:
STR_FRAMERATE_AI :{BLACK} ШІ {NUM} {STRING}
############ End of leave-in-this-order
############ Leave those lines in this order!!
STR_FRAMETIME_CAPTION_GAMELOOP :Прорахунок ігрового циклу
STR_FRAMETIME_CAPTION_GL_ECONOMY :Розрахунок обсягу вантажів
STR_FRAMETIME_CAPTION_GL_TRAINS :Прорахунок поїздів
STR_FRAMETIME_CAPTION_GL_ROADVEHS :Рух автомобілів
STR_FRAMETIME_CAPTION_GL_SHIPS :Рух кораблів
STR_FRAMETIME_CAPTION_GL_AIRCRAFT :Прорахунок літаків
STR_FRAMETIME_CAPTION_GL_LANDSCAPE :Розрахунок змін на карті
STR_FRAMETIME_CAPTION_GL_LINKGRAPH :Затримка графу розподілу
STR_FRAMETIME_CAPTION_DRAWING :Відображення графіки
STR_FRAMETIME_CAPTION_DRAWING_VIEWPORTS :Додаткові вікна перегляду
STR_FRAMETIME_CAPTION_VIDEO :Виведення на екран
STR_FRAMETIME_CAPTION_SOUND :Обробка звуку
STR_FRAMETIME_CAPTION_ALLSCRIPTS :Час виконання скриптів
STR_FRAMETIME_CAPTION_GAMESCRIPT :Час виконання ігрового скрипту
STR_FRAMETIME_CAPTION_AI :ШІ {NUM} {STRING}
############ End of leave-in-this-order
@@ -2848,6 +2923,9 @@ STR_SAVELOAD_DETAIL_CAPTION :{BLACK}Дета
STR_SAVELOAD_DETAIL_NOT_AVAILABLE :{BLACK}Інформація відсутня
STR_SAVELOAD_DETAIL_COMPANY_INDEX :{SILVER}{COMMA}: {WHITE}{STRING}
STR_SAVELOAD_DETAIL_GRFSTATUS :{SILVER}NewGRF: {WHITE}{STRING}
STR_SAVELOAD_FILTER_TITLE :{BLACK}Фільтр:
STR_SAVELOAD_OVERWRITE_TITLE :{WHITE}Перезаписати файл
STR_SAVELOAD_OVERWRITE_WARNING :{YELLOW} Ви справді хочете перезаписати існуючий файл?
STR_SAVELOAD_OSKTITLE :{BLACK}Введіть назву файла збереженої гри
@@ -2965,7 +3043,12 @@ STR_NEWGRF_SETTINGS_VERSION :{BLACK}Верс
STR_NEWGRF_SETTINGS_MIN_VERSION :{BLACK}Мінімальна підтримувана версія: {SILVER}{NUM}
STR_NEWGRF_SETTINGS_MD5SUM :{BLACK}MD5сума: {SILVER}{STRING}
STR_NEWGRF_SETTINGS_PALETTE :{BLACK}Палітра: {SILVER}{STRING}
STR_NEWGRF_SETTINGS_PALETTE_DEFAULT :Звичайна (D)
STR_NEWGRF_SETTINGS_PALETTE_DEFAULT_32BPP :Стандартна (D) / 32 bpp
STR_NEWGRF_SETTINGS_PALETTE_LEGACY :Застаріла
STR_NEWGRF_SETTINGS_PALETTE_LEGACY_32BPP :Застаріла (W) / 32 bpp
STR_NEWGRF_SETTINGS_PARAMETER :{BLACK}Параметри: {SILVER}{STRING}
STR_NEWGRF_SETTINGS_PARAMETER_NONE :нема
STR_NEWGRF_SETTINGS_NO_INFO :{BLACK}Немає доступної інформації
STR_NEWGRF_SETTINGS_NOT_FOUND :{RED}Таких файлів не знайдено
@@ -3046,6 +3129,7 @@ STR_NEWGRF_ERROR_READ_BOUNDS :Вихід за
STR_NEWGRF_ERROR_GRM_FAILED :Недоступні необхідні ресурси GRF (спрайт {3:NUM})
STR_NEWGRF_ERROR_FORCEFULLY_DISABLED :{1:STRING} був вимкнений {STRING}
STR_NEWGRF_ERROR_INVALID_SPRITE_LAYOUT :Некоректний або невідомий формат розміщення спрайтів (спрайт {3:NUM})
STR_NEWGRF_ERROR_LIST_PROPERTY_TOO_LONG :Дуже багато елементів у списку значень (спрайт {3:NUM}, властивість {4:HEX})
# NewGRF related 'general' warnings
STR_NEWGRF_POPUP_CAUTION_CAPTION :{WHITE}Обережно!
@@ -3110,6 +3194,7 @@ STR_EDIT_SIGN_SIGN_OSKTITLE :{BLACK}Введ
STR_TOWN_DIRECTORY_CAPTION :{WHITE}Міста
STR_TOWN_DIRECTORY_NONE :{ORANGE}- немає -
STR_TOWN_DIRECTORY_TOWN :{ORANGE}{TOWN}{BLACK} ({COMMA})
STR_TOWN_DIRECTORY_CITY :{ORANGE}{TOWN}{YELLOW} (Мегаполіс){BLACK} ({COMMA})
STR_TOWN_DIRECTORY_LIST_TOOLTIP :{BLACK}Назви міст - натисніть на назву, щоб показати місто у центрі екрану. Ctrl+клац мишою відкриває нове вікно з видом на місто
STR_TOWN_POPULATION :{BLACK}Населення світу: {COMMA}
@@ -3117,6 +3202,7 @@ STR_TOWN_POPULATION :{BLACK}Насе
STR_TOWN_VIEW_TOWN_CAPTION :{WHITE}{TOWN}
STR_TOWN_VIEW_CITY_CAPTION :{WHITE}{TOWN} (місто)
STR_TOWN_VIEW_POPULATION_HOUSES :{BLACK}Населення: {ORANGE}{COMMA}{BLACK} Будинки: {ORANGE}{COMMA}
STR_TOWN_VIEW_CARGO_LAST_MONTH_MAX :{BLACK}{CARGO_LIST} минулого місяця: {ORANGE}{COMMA}{BLACK} макс: {ORANGE}{COMMA}
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH :{BLACK}Вантаж, потрібний для зростання міста:
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_GENERAL :{ORANGE}{STRING}{RED} потрібно
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_WINTER :{ORANGE}{STRING}{BLACK} потрібно взимку
@@ -3169,6 +3255,7 @@ STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_BRIBE :{YELLOW}Під
# Goal window
STR_GOALS_CAPTION :{WHITE}Цілі {COMPANY}
STR_GOALS_SPECTATOR_CAPTION :{WHITE}Глобальні цілі:
STR_GOALS_SPECTATOR :Загальні задачі
STR_GOALS_GLOBAL_TITLE :{BLACK}Глобальні цілі:
STR_GOALS_TEXT :{ORANGE}{STRING}
STR_GOALS_NONE :{ORANGE}- нема -
@@ -3217,6 +3304,7 @@ STR_SUBSIDIES_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Нати
# Story book window
STR_STORY_BOOK_CAPTION :{WHITE}Історія {COMPANY}
STR_STORY_BOOK_SPECTATOR_CAPTION :{WHITE}Світова історія
STR_STORY_BOOK_SPECTATOR :Всесвітня історія
STR_STORY_BOOK_TITLE :{YELLOW}{STRING}
STR_STORY_BOOK_GENERIC_PAGE_ITEM :Стор. {NUM}
STR_STORY_BOOK_SEL_PAGE_TOOLTIP :{BLACK}Перейти до сторінки, вибраної в цьому списку.
@@ -3421,7 +3509,13 @@ STR_INDUSTRY_VIEW_LOCATION_TOOLTIP :{BLACK}Пока
STR_INDUSTRY_VIEW_PRODUCTION_LEVEL :{BLACK}Обсяг виробництва: {YELLOW}{COMMA}%
STR_INDUSTRY_VIEW_INDUSTRY_ANNOUNCED_CLOSURE :{YELLOW}Підприємство оголосило про близьке закриття!
STR_INDUSTRY_VIEW_REQUIRES_N_CARGO :{BLACK}Потребує: {YELLOW}{STRING}{STRING}
STR_INDUSTRY_VIEW_PRODUCES_N_CARGO :{BLACK}Виробляє: {YELLOW}{STRING}{STRING}
STR_INDUSTRY_VIEW_CARGO_LIST_EXTENSION :, {STRING}{STRING}
STR_INDUSTRY_VIEW_REQUIRES :{BLACK}Потребує:
STR_INDUSTRY_VIEW_ACCEPT_CARGO :{YELLOW}{STRING}{BLACK}{3:STRING}
STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT :{YELLOW}{STRING}{BLACK}: {CARGO_SHORT} очікує{STRING}
STR_CONFIG_GAME_PRODUCTION :{WHITE}Змінити виробництво (кратне 8, до 2040)
STR_CONFIG_GAME_PRODUCTION_LEVEL :{WHITE}Змінити обсяг виробництва (до 800%)
@@ -3475,6 +3569,7 @@ STR_GROUPS_CLICK_ON_GROUP_FOR_TOOLTIP :{BLACK}Груп
STR_GROUP_CREATE_TOOLTIP :{BLACK}Клацніть мишою, щоб створити групу
STR_GROUP_DELETE_TOOLTIP :{BLACK}Стерти вибрану групу
STR_GROUP_RENAME_TOOLTIP :{BLACK}Перейменувати вибрану групу
STR_GROUP_LIVERY_TOOLTIP :{BLACK}Змінити колір вибраної групи
STR_GROUP_REPLACE_PROTECTION_TOOLTIP :{BLACK}Клацніть мишою, щоб захистити групу від глобальної автозаміни
STR_QUERY_GROUP_DELETE_CAPTION :{WHITE}Видалити групу
@@ -3485,6 +3580,10 @@ STR_GROUP_REMOVE_ALL_VEHICLES :Позбути
STR_GROUP_RENAME_CAPTION :{BLACK}Перейменувати групу
STR_GROUP_PROFIT_THIS_YEAR :Прибуток цього року:
STR_GROUP_PROFIT_LAST_YEAR :Прибуток минулого року:
STR_GROUP_OCCUPANCY :Використання:
STR_GROUP_OCCUPANCY_VALUE :{NUM}%
# Build vehicle window
STR_BUY_VEHICLE_TRAIN_RAIL_CAPTION :Новий неелектрифікований поїзд
@@ -3514,9 +3613,11 @@ STR_PURCHASE_INFO_AIRCRAFT_CAPACITY :{BLACK}Міст
STR_PURCHASE_INFO_PWAGPOWER_PWAGWEIGHT :{BLACK}Потужність: {GOLD}+{POWER}{BLACK} Вага: {GOLD}+{WEIGHT_SHORT}
STR_PURCHASE_INFO_REFITTABLE_TO :{BLACK}Може бути переобладненим на: {GOLD}{STRING}
STR_PURCHASE_INFO_ALL_TYPES :Всі типи вантажів
STR_PURCHASE_INFO_NONE :Нема
STR_PURCHASE_INFO_ALL_BUT :Всі, крім {CARGO_LIST}
STR_PURCHASE_INFO_MAX_TE :{BLACK}Максимальна тягова сила: {GOLD}{FORCE}
STR_PURCHASE_INFO_AIRCRAFT_RANGE :{BLACK}Дальність: {GOLD}{COMMA} клітинок
STR_PURCHASE_INFO_AIRCRAFT_TYPE :{BLACK}Тип літака: {GOLD}{STRING}
STR_BUY_VEHICLE_TRAIN_LIST_TOOLTIP :{BLACK}Список поїздів. Клацніть на поїзд для інформації. Ctrl+клац мишою вимикає показ типу транспорту
STR_BUY_VEHICLE_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Список автомобілів. Клацніть на авто для отримання інформації. Ctrl+клац мишою вимикає показ типу транспорту
@@ -3651,6 +3752,10 @@ STR_ENGINE_PREVIEW_MAGLEV_LOCOMOTIVE :магнітн
STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER :{BLACK}Ціна: {CURRENCY_LONG} Вага: {WEIGHT_SHORT}{}Швидкість: {VELOCITY}{}Потужність: {POWER}{}Вартість експлуатації: {CURRENCY_LONG}/рік{}Місткість: {CARGO_LONG}
STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER_MAX_TE :{BLACK}Вартість: {CURRENCY_LONG} Вага: {WEIGHT_SHORT}{}Швидкість: {VELOCITY} Потужність: {POWER} Макс. тяга: {6:FORCE}{}Вартість експлуатації: {4:CURRENCY_LONG}/рік{}Місткість: {5:CARGO_LONG}
STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAP_RUNCOST :{BLACK}Вартість: {CURRENCY_LONG} Макс. швидкість: {VELOCITY}{}Місткість: {CARGO_LONG}{}Вартість експлуатації: {CURRENCY_LONG}/рік
STR_ENGINE_PREVIEW_COST_MAX_SPEED_TYPE_CAP_CAP_RUNCOST :{BLACK}Вартість: {CURRENCY_LONG} Макс. швидкість: {VELOCITY}{}Тип: {STRING}{}Місткість: {CARGO_LONG}, {CARGO_LONG}{}Вартість експлуатації: {CURRENCY_LONG}/рік
STR_ENGINE_PREVIEW_COST_MAX_SPEED_TYPE_CAP_RUNCOST :{BLACK}Вартість: {CURRENCY_LONG} Макс. швидкість: {VELOCITY}{}Тип: {STRING}{}Місткість: {CARGO_LONG}{}Експлуатація: {CURRENCY_LONG}/рік
STR_ENGINE_PREVIEW_COST_MAX_SPEED_TYPE_RANGE_CAP_CAP_RUNCOST :{BLACK}Вартість: {CURRENCY_LONG} Макс. швидкість: {VELOCITY}{}Тип: {STRING} Дальність: {COMMA} клітин{P ка ки ок}Місткість: {CARGO_LONG}, {CARGO_LONG}{}Експлуатація: {CURRENCY_LONG}/рік
STR_ENGINE_PREVIEW_COST_MAX_SPEED_TYPE_RANGE_CAP_RUNCOST :{BLACK}Вартість: {CURRENCY_LONG} Макс. швидкість: {VELOCITY}{}Тип: {STRING} Дальність: {COMMA} клітин{P ка ки ок}Місткість: {CARGO_LONG}{}Експлуатація: {CURRENCY_LONG}/рік
# Autoreplace window
STR_REPLACE_VEHICLES_WHITE :{WHITE}Оновити {STRING} - {STRING}
@@ -3680,6 +3785,7 @@ STR_REPLACE_HELP_STOP_BUTTON :{BLACK}Нати
STR_REPLACE_ENGINE_WAGON_SELECT_HELP :{BLACK}Переключення між вікнами заміни потягів та вагонів.
STR_REPLACE_ENGINES :Локомотиви
STR_REPLACE_WAGONS :Вагони
STR_REPLACE_ALL_RAILTYPE :Весь з/д транспорт
STR_REPLACE_HELP_RAILTYPE :{BLACK}Виберіть тип колії, для якого ви збираєтесь оновити потяги
STR_REPLACE_HELP_REPLACE_INFO_TAB :{BLACK}Показує, яким потягом буде замінено потяг, вибраний ліворуч
@@ -3772,6 +3878,8 @@ STR_VEHICLE_INFO_AGE :{COMMA} р{P і
STR_VEHICLE_INFO_AGE_RED :{RED}{COMMA} р{P ік оки оків} ({COMMA})
STR_VEHICLE_INFO_MAX_SPEED :{BLACK}Макс. швидкість: {LTBLUE}{VELOCITY}
STR_VEHICLE_INFO_MAX_SPEED_TYPE :{BLACK}Макс. швидкість: {LTBLUE}{VELOCITY} {BLACK}Тип: {LTBLUE}{STRING}
STR_VEHICLE_INFO_MAX_SPEED_TYPE_RANGE :{BLACK}Макс. швидкість: {LTBLUE}{VELOCITY} {BLACK}Тип: {LTBLUE}{STRING} {BLACK}Дальність: {LTBLUE}{COMMA} клітин{P ка ки ок }
STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED :{BLACK}Вага: {LTBLUE}{WEIGHT_SHORT} {BLACK}Потужність: {LTBLUE}{POWER}{BLACK} Макс. швидкість: {LTBLUE}{VELOCITY}
STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED_MAX_TE :{BLACK}Вага: {LTBLUE}{WEIGHT_SHORT} {BLACK}Потужність: {LTBLUE}{POWER}{BLACK} Макс. швидкість: {LTBLUE}{VELOCITY} {BLACK}Макс. тяга: {LTBLUE}{FORCE}
@@ -3905,6 +4013,7 @@ STR_ORDER_CONDITIONAL_AGE :Вік (рок
STR_ORDER_CONDITIONAL_REQUIRES_SERVICE :Потребує техогляду
STR_ORDER_CONDITIONAL_UNCONDITIONALLY :Завжди
STR_ORDER_CONDITIONAL_REMAINING_LIFETIME :Залишок строку служби (років)
STR_ORDER_CONDITIONAL_MAX_RELIABILITY :Максимальна надійність
STR_ORDER_CONDITIONAL_COMPARATOR_TOOLTIP :{BLACK}Як порівнювати дані транспорту з заданим значенням
STR_ORDER_CONDITIONAL_COMPARATOR_EQUALS :дорівнює
@@ -4337,6 +4446,7 @@ STR_ERROR_DRIVE_THROUGH_ON_TOWN_ROAD :{WHITE}... ця
STR_ERROR_DRIVE_THROUGH_DIRECTION :{WHITE}... дорога не в тому напрямку
STR_ERROR_DRIVE_THROUGH_CORNER :{WHITE}... проїзні зупинки не можуть мати поворотів
STR_ERROR_DRIVE_THROUGH_JUNCTION :{WHITE}... проїзні зупинки не можуть мати перехресть
STR_ERROR_DRIVE_THROUGH_ON_ONEWAY_ROAD :{WHITE}... дорога одностороння або заблокована
# Station destruction related errors
STR_ERROR_CAN_T_REMOVE_PART_OF_STATION :{WHITE}Не можна зруйнувати частину станції...
@@ -4589,6 +4699,7 @@ STR_BASESOUNDS_WIN_DESCRIPTION :Оригіна
STR_BASESOUNDS_NONE_DESCRIPTION :Порожній набір звуків.
STR_BASEMUSIC_WIN_DESCRIPTION :Оригінальна музика з Transport Tycoon Deluxe Windows edition.
STR_BASEMUSIC_DOS_DESCRIPTION :Оригінальна музика Transport Tycoon Deluxe(DOS)
STR_BASEMUSIC_TTO_DESCRIPTION :Оригінальна музика Transport Tycoon Deluxe(DOS)
STR_BASEMUSIC_NONE_DESCRIPTION :Порожній набір музики.
##id 0x2000

View File

@@ -559,7 +559,7 @@ void LinkGraphLegendWindow::DrawWidget(const Rect &r, int widget) const
}
}
bool LinkGraphLegendWindow::OnHoverCommon(Point pt, int widget, TooltipCloseCondition close_cond)
bool LinkGraphLegendWindow::OnTooltip(Point pt, int widget, TooltipCloseCondition close_cond)
{
if (IsInsideMM(widget, WID_LGL_COMPANY_FIRST, WID_LGL_COMPANY_LAST + 1)) {
if (this->IsWidgetDisabled(widget)) {
@@ -584,19 +584,6 @@ bool LinkGraphLegendWindow::OnHoverCommon(Point pt, int widget, TooltipCloseCond
return false;
}
void LinkGraphLegendWindow::OnHover(Point pt, int widget)
{
this->OnHoverCommon(pt, widget, TCC_HOVER);
}
bool LinkGraphLegendWindow::OnRightClick(Point pt, int widget)
{
if (_settings_client.gui.hover_delay_ms == 0) {
return this->OnHoverCommon(pt, widget, TCC_RIGHT_CLICK);
}
return false;
}
/**
* Update the overlay with the new company selection.
*/

View File

@@ -106,8 +106,7 @@ public:
virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize);
virtual void DrawWidget(const Rect &r, int widget) const;
virtual void OnHover(Point pt, int widget);
virtual bool OnRightClick(Point pt, int widget);
virtual bool OnTooltip(Point pt, int widget, TooltipCloseCondition close_cond);
virtual void OnClick(Point pt, int widget, int click_count);
virtual void OnInvalidateData(int data = 0, bool gui_scope = true);
@@ -116,7 +115,6 @@ private:
void UpdateOverlayCompanies();
void UpdateOverlayCargoes();
bool OnHoverCommon(Point pt, int widget, TooltipCloseCondition close_cond);
};
#endif /* LINKGRAPH_GUI_H */

View File

@@ -724,8 +724,8 @@ struct TooltipsWindow : public Window
* we are dragging the tool. Normal tooltips work with hover or rmb. */
switch (this->close_cond) {
case TCC_RIGHT_CLICK: if (!_right_button_down) delete this; break;
case TCC_LEFT_CLICK: if (!_left_button_down) delete this; break;
case TCC_HOVER: if (!_mouse_hovering) delete this; break;
case TCC_NONE: break;
}
}
};

View File

@@ -125,6 +125,7 @@ struct PacketReader : LoadFilter {
void ClientNetworkEmergencySave()
{
if (!_settings_client.gui.autosave_on_network_disconnect) return;
if (!_networking) return;
const char *filename = "netsave.sav";
DEBUG(net, 0, "Client: Performing emergency save (%s)", filename);
@@ -212,6 +213,8 @@ void ClientNetworkGameSocketHandler::ClientError(NetworkRecvStatus res)
SendError(errorno);
}
ClientNetworkEmergencySave();
_switch_mode = SM_MENU;
this->CloseConnection(res);
_networking = false;
@@ -1172,8 +1175,6 @@ void ClientNetworkGameSocketHandler::CheckConnection()
* the server will forcefully disconnect you. */
if (lag > 20) {
this->NetworkGameSocketHandler::CloseConnection();
ShowErrorMessage(STR_NETWORK_ERROR_LOSTCONNECTION, INVALID_STRING_ID, WL_CRITICAL);
ClientNetworkEmergencySave();
return;
}

View File

@@ -2103,7 +2103,7 @@ static ChangeInfoResult CanalChangeInfo(uint id, int numinfo, int prop, ByteRead
ChangeInfoResult ret = CIR_SUCCESS;
if (id + numinfo > CF_END) {
grfmsg(1, "CanalChangeInfo: Canal feature %u is invalid, max %u, ignoring", id + numinfo, CF_END);
grfmsg(1, "CanalChangeInfo: Canal feature 0x%02X is invalid, max %u, ignoring", id + numinfo, CF_END);
return CIR_INVALID_ID;
}
@@ -4530,11 +4530,16 @@ static void FeatureChangeInfo(ByteReader *buf)
uint numinfo = buf->ReadByte();
uint engine = buf->ReadExtendedByte();
grfmsg(6, "FeatureChangeInfo: feature %d, %d properties, to apply to %d+%d",
if (feature >= GSF_END) {
grfmsg(1, "FeatureChangeInfo: Unsupported feature 0x%02X, skipping", feature);
return;
}
grfmsg(6, "FeatureChangeInfo: Feature 0x%02X, %d properties, to apply to %d+%d",
feature, numprops, engine, numinfo);
if (feature >= lengthof(handler) || handler[feature] == NULL) {
if (feature != GSF_CARGOES) grfmsg(1, "FeatureChangeInfo: Unsupported feature %d, skipping", feature);
if (feature != GSF_CARGOES) grfmsg(1, "FeatureChangeInfo: Unsupported feature 0x%02X, skipping", feature);
return;
}
@@ -4649,9 +4654,15 @@ static void NewSpriteSet(ByteReader *buf)
}
uint16 num_ents = buf->ReadExtendedByte();
if (feature >= GSF_END) {
_cur.skip_sprites = num_sets * num_ents;
grfmsg(1, "NewSpriteSet: Unsupported feature 0x%02X, skipping %d sprites", feature, _cur.skip_sprites);
return;
}
_cur.AddSpriteSets(feature, _cur.spriteid, first_set, num_sets, num_ents);
grfmsg(7, "New sprite set at %d of type %d, consisting of %d sets with %d views each (total %d)",
grfmsg(7, "New sprite set at %d of feature 0x%02X, consisting of %d sets with %d views each (total %d)",
_cur.spriteid, feature, num_sets, num_ents, num_sets * num_ents
);
@@ -4743,6 +4754,11 @@ static void NewSpriteGroup(ByteReader *buf)
SpriteGroup *act_group = NULL;
uint8 feature = buf->ReadByte();
if (feature >= GSF_END) {
grfmsg(1, "NewSpriteGroup: Unsupported feature 0x%02X, skipping", feature);
return;
}
uint8 setid = buf->ReadByte();
uint8 type = buf->ReadByte();
@@ -5005,7 +5021,12 @@ static void NewSpriteGroup(ByteReader *buf)
for (uint i = 0; i < group->num_input; i++) {
byte rawcargo = buf->ReadByte();
CargoID cargo = GetCargoTranslation(rawcargo, _cur.grffile);
if (std::find(group->cargo_input, group->cargo_input + i, cargo) != group->cargo_input + i) {
if (cargo == CT_INVALID) {
/* The mapped cargo is invalid. This is permitted at this point,
* as long as the result is not used. Mark it invalid so this
* can be tested later. */
group->version = 0xFF;
} else if (std::find(group->cargo_input, group->cargo_input + i, cargo) != group->cargo_input + i) {
GRFError *error = DisableGrf(STR_NEWGRF_ERROR_INDPROD_CALLBACK);
error->data = stredup("duplicate input cargo");
return;
@@ -5022,7 +5043,10 @@ static void NewSpriteGroup(ByteReader *buf)
for (uint i = 0; i < group->num_output; i++) {
byte rawcargo = buf->ReadByte();
CargoID cargo = GetCargoTranslation(rawcargo, _cur.grffile);
if (std::find(group->cargo_output, group->cargo_output + i, cargo) != group->cargo_output + i) {
if (cargo == CT_INVALID) {
/* Mark this result as invalid to use */
group->version = 0xFF;
} else if (std::find(group->cargo_output, group->cargo_output + i, cargo) != group->cargo_output + i) {
GRFError *error = DisableGrf(STR_NEWGRF_ERROR_INDPROD_CALLBACK);
error->data = stredup("duplicate output cargo");
return;
@@ -5038,7 +5062,7 @@ static void NewSpriteGroup(ByteReader *buf)
}
/* Loading of Tile Layout and Production Callback groups would happen here */
default: grfmsg(1, "NewSpriteGroup: Unsupported feature %d, skipping", feature);
default: grfmsg(1, "NewSpriteGroup: Unsupported feature 0x%02X, skipping", feature);
}
}
}
@@ -5565,6 +5589,11 @@ static void FeatureMapSpriteGroup(ByteReader *buf)
uint8 feature = buf->ReadByte();
uint8 idcount = buf->ReadByte();
if (feature >= GSF_END) {
grfmsg(1, "FeatureMapSpriteGroup: Unsupported feature 0x%02X, skipping", feature);
return;
}
/* If idcount is zero, this is a feature callback */
if (idcount == 0) {
/* Skip number of cargo ids? */
@@ -5572,7 +5601,7 @@ static void FeatureMapSpriteGroup(ByteReader *buf)
uint16 groupid = buf->ReadWord();
if (!IsValidGroupID(groupid, "FeatureMapSpriteGroup")) return;
grfmsg(6, "FeatureMapSpriteGroup: Adding generic feature callback for feature %d", feature);
grfmsg(6, "FeatureMapSpriteGroup: Adding generic feature callback for feature 0x%02X", feature);
AddGenericCallback(feature, _cur.grffile, _cur.spritegroups[groupid]);
return;
@@ -5581,7 +5610,7 @@ static void FeatureMapSpriteGroup(ByteReader *buf)
/* Mark the feature as used by the grf (generic callbacks do not count) */
SetBit(_cur.grffile->grf_features, feature);
grfmsg(6, "FeatureMapSpriteGroup: Feature %d, %d ids", feature, idcount);
grfmsg(6, "FeatureMapSpriteGroup: Feature 0x%02X, %d ids", feature, idcount);
switch (feature) {
case GSF_TRAINS:
@@ -5632,7 +5661,7 @@ static void FeatureMapSpriteGroup(ByteReader *buf)
return;
default:
grfmsg(1, "FeatureMapSpriteGroup: Unsupported feature %d, skipping", feature);
grfmsg(1, "FeatureMapSpriteGroup: Unsupported feature 0x%02X, skipping", feature);
return;
}
}
@@ -5659,6 +5688,11 @@ static void FeatureNewName(ByteReader *buf)
bool new_scheme = _cur.grffile->grf_version >= 7;
uint8 feature = buf->ReadByte();
if (feature >= GSF_END) {
grfmsg(1, "FeatureNewName: Unsupported feature 0x%02X, skipping", feature);
return;
}
uint8 lang = buf->ReadByte();
uint8 num = buf->ReadByte();
bool generic = HasBit(lang, 7);
@@ -5675,7 +5709,7 @@ static void FeatureNewName(ByteReader *buf)
uint16 endid = id + num;
grfmsg(6, "FeatureNewName: About to rename engines %d..%d (feature %d) in language 0x%02X",
grfmsg(6, "FeatureNewName: About to rename engines %d..%d (feature 0x%02X) in language 0x%02X",
id, endid, feature, lang);
for (; id < endid && buf->HasData(); id++) {
@@ -5828,7 +5862,6 @@ static void GraphicsNew(ByteReader *buf)
* B graphics-type What set of graphics the sprites define.
* E num-sprites How many sprites are in this set?
* V other data Graphics type specific data. Currently unused. */
/* TODO */
uint8 type = buf->ReadByte();
uint16 num = buf->ReadExtendedByte();
@@ -6216,7 +6249,6 @@ static void SkipIf(ByteReader *buf)
* B condition-type
* V value
* B num-sprites */
/* TODO: More params. More condition types. */
uint32 cond_val = 0;
uint32 mask = 0;
bool result;
@@ -6902,12 +6934,6 @@ static void ParamSet(ByteReader *buf)
src2 = (src2 == 0xFF) ? data : GetParamVal(src2, NULL);
}
/* TODO: You can access the parameters of another GRF file by using
* source2=FE, source1=the other GRF's parameter number and data=GRF
* ID. This is only valid with operation 00 (set). If the GRF ID
* cannot be found, a value of 0 is used for the parameter value
* instead. */
uint32 res;
switch (oper) {
case 0x00:
@@ -7008,13 +7034,13 @@ static void ParamSet(ByteReader *buf)
break;
}
/* @todo implement */
case 0x93: // Tile refresh offset to left
/* not implemented */
case 0x93: // Tile refresh offset to left -- Intended to allow support for larger sprites, not necessary for OTTD
case 0x94: // Tile refresh offset to right
case 0x95: // Tile refresh offset upwards
case 0x96: // Tile refresh offset downwards
case 0x97: // Snow line height
case 0x99: // Global ID offset
case 0x97: // Snow line height -- Better supported by feature 8 property 10h (snow line table) TODO: implement by filling the entire snow line table with the given value
case 0x99: // Global ID offset -- Not necessary since IDs are remapped automatically
grfmsg(7, "ParamSet: Skipping unimplemented target 0x%02X", target);
break;
@@ -8237,7 +8263,6 @@ static void ResetNewGRFErrors()
/**
* Reset all NewGRF loaded data
* TODO
*/
void ResetNewGRFData()
{

View File

@@ -605,6 +605,17 @@ void IndustryProductionCallback(Industry *ind, int reason)
if (tgroup == NULL || tgroup->type != SGT_INDUSTRY_PRODUCTION) break;
const IndustryProductionSpriteGroup *group = (const IndustryProductionSpriteGroup *)tgroup;
if (group->version == 0xFF) {
/* Result was marked invalid on load, display error message */
SetDParamStr(0, spec->grf_prop.grffile->filename);
SetDParam(1, spec->name);
SetDParam(2, ind->location.tile);
ShowErrorMessage(STR_NEWGRF_BUGGY, STR_NEWGRF_BUGGY_INVALID_CARGO_PRODUCTION_CALLBACK, WL_WARNING);
/* abort the function early, this error isn't critical and will allow the game to continue to run */
break;
}
bool deref = (group->version >= 1);
if (group->version < 2) {

View File

@@ -277,7 +277,7 @@ struct TileLayoutSpriteGroup : SpriteGroup {
struct IndustryProductionSpriteGroup : SpriteGroup {
IndustryProductionSpriteGroup() : SpriteGroup(SGT_INDUSTRY_PRODUCTION) {}
uint8 version;
uint8 version; ///< Production callback version used, or 0xFF if marked invalid
uint8 num_input; ///< How many subtract_input values are valid
int16 subtract_input[INDUSTRY_NUM_INPUTS]; ///< Take this much of the input cargo (can be negative, is indirect in cb version 1+)
CargoID cargo_input[INDUSTRY_NUM_INPUTS]; ///< Which input cargoes to take from (only cb version 2)

View File

@@ -256,15 +256,19 @@ CommandCost CmdClearOrderBackup(TileIndex tile, DoCommandFlag flags, uint32 p1,
* Removes an order from all vehicles. Triggers when, say, a station is removed.
* @param type The type of the order (OT_GOTO_[STATION|DEPOT|WAYPOINT]).
* @param destination The destination. Can be a StationID, DepotID or WaypointID.
* @param hangar Only used for airports in the destination.
* When false, remove airport and hangar orders.
* When true, remove either airport or hangar order.
*/
/* static */ void OrderBackup::RemoveOrder(OrderType type, DestinationID destination)
/* static */ void OrderBackup::RemoveOrder(OrderType type, DestinationID destination, bool hangar)
{
OrderBackup *ob;
FOR_ALL_ORDER_BACKUPS(ob) {
for (Order *order = ob->orders; order != NULL; order = order->next) {
OrderType ot = order->GetType();
if (ot == OT_GOTO_DEPOT && (order->GetDepotActionType() & ODATFB_NEAREST_DEPOT) != 0) continue;
if (ot == OT_IMPLICIT || (IsHangarTile(ob->tile) && ot == OT_GOTO_DEPOT)) ot = OT_GOTO_STATION;
if (ot == OT_GOTO_DEPOT && hangar && !IsHangarTile(ob->tile)) continue; // Not an aircraft? Can't have a hangar order.
if (ot == OT_IMPLICIT || (IsHangarTile(ob->tile) && ot == OT_GOTO_DEPOT && !hangar)) ot = OT_GOTO_STATION;
if (ot == type && order->GetDestination() == destination) {
/* Remove the order backup! If a station/depot gets removed, we can't/shouldn't restore those broken orders. */
delete ob;

View File

@@ -63,7 +63,7 @@ public:
static void ClearGroup(GroupID group);
static void ClearVehicle(const Vehicle *v);
static void RemoveOrder(OrderType type, DestinationID destination);
static void RemoveOrder(OrderType type, DestinationID destination, bool hangar);
};
/**

View File

@@ -1798,7 +1798,6 @@ void CheckOrders(const Vehicle *v)
} else if (v->type == VEH_AIRCRAFT &&
(AircraftVehInfo(v->engine_type)->subtype & AIR_FAST) &&
(st->airport.GetFTA()->flags & AirportFTAClass::SHORT_STRIP) &&
_settings_game.vehicle.plane_crashes != 0 &&
!_cheats.no_jetcrash.value &&
message == INVALID_STRING_ID) {
message = STR_NEWS_PLANE_USES_TOO_SHORT_RUNWAY;
@@ -1834,8 +1833,11 @@ void CheckOrders(const Vehicle *v)
* Removes an order from all vehicles. Triggers when, say, a station is removed.
* @param type The type of the order (OT_GOTO_[STATION|DEPOT|WAYPOINT]).
* @param destination The destination. Can be a StationID, DepotID or WaypointID.
* @param hangar Only used for airports in the destination.
* When false, remove airport and hangar orders.
* When true, remove either airport or hangar order.
*/
void RemoveOrderFromAllVehicles(OrderType type, DestinationID destination)
void RemoveOrderFromAllVehicles(OrderType type, DestinationID destination, bool hangar)
{
Vehicle *v;
@@ -1848,8 +1850,8 @@ void RemoveOrderFromAllVehicles(OrderType type, DestinationID destination)
Order *order;
order = &v->current_order;
if ((v->type == VEH_AIRCRAFT && order->IsType(OT_GOTO_DEPOT) ? OT_GOTO_STATION : order->GetType()) == type &&
v->current_order.GetDestination() == destination) {
if ((v->type == VEH_AIRCRAFT && order->IsType(OT_GOTO_DEPOT) && !hangar ? OT_GOTO_STATION : order->GetType()) == type &&
(!hangar || v->type == VEH_AIRCRAFT) && v->current_order.GetDestination() == destination) {
order->MakeDummy();
SetWindowDirty(WC_VEHICLE_VIEW, v->index);
}
@@ -1862,7 +1864,8 @@ restart:
OrderType ot = order->GetType();
if (ot == OT_GOTO_DEPOT && (order->GetDepotActionType() & ODATFB_NEAREST_DEPOT) != 0) continue;
if (ot == OT_IMPLICIT || (v->type == VEH_AIRCRAFT && ot == OT_GOTO_DEPOT)) ot = OT_GOTO_STATION;
if (ot == OT_GOTO_DEPOT && hangar && v->type != VEH_AIRCRAFT) continue; // Not an aircraft? Can't have a hangar order.
if (ot == OT_IMPLICIT || (v->type == VEH_AIRCRAFT && ot == OT_GOTO_DEPOT && !hangar)) ot = OT_GOTO_STATION;
if (ot == type && order->GetDestination() == destination) {
/* We want to clear implicit orders, but we don't want to make them
* dummy orders. They should just vanish. Also check the actual order
@@ -1896,7 +1899,7 @@ restart:
}
}
OrderBackup::RemoveOrder(type, destination);
OrderBackup::RemoveOrder(type, destination, hangar);
}
/**

View File

@@ -17,7 +17,7 @@
#include "company_type.h"
/* Functions */
void RemoveOrderFromAllVehicles(OrderType type, DestinationID destination);
void RemoveOrderFromAllVehicles(OrderType type, DestinationID destination, bool hangar = false);
void InvalidateVehicleOrder(const Vehicle *v, int data);
void CheckOrders(const Vehicle*);
void DeleteVehicleOrders(Vehicle *v, bool keep_orderlist = false, bool reset_order_indices = true);

View File

@@ -82,7 +82,7 @@ const byte _openttd_revision_tagged = !!ISTAG!!;
* final release will always have a lower version number than the released
* version, thus making comparisons on specific revisions easy.
*/
const uint32 _openttd_newgrf_version = 1 << 28 | 9 << 24 | 0 << 20 | 0 << 19 | 28004;
const uint32 _openttd_newgrf_version = 1 << 28 | 9 << 24 | 0 << 20 | !!ISSTABLETAG!! << 19 | 28004;
#ifdef __MORPHOS__
/**

View File

@@ -3080,6 +3080,13 @@ bool AfterLoadGame()
}
}
{
/* Update water class for trees for all current savegame versions. */
for (TileIndex t = 0; t < map_size; t++) {
if (IsTileType(t, MP_TREES)) SetWaterClass(t, GetTreeGround(t) == TREE_GROUND_SHORE ? WATER_CLASS_SEA : WATER_CLASS_INVALID);
}
}
/* Station acceptance is some kind of cache */
if (IsSavegameVersionBefore(SLV_127)) {
Station *st;

View File

@@ -21,16 +21,57 @@ void SQAICompany_Register(Squirrel *engine)
SQAICompany.PreRegister(engine);
SQAICompany.AddConstructor<void (ScriptCompany::*)(), 1>(engine, "x");
SQAICompany.DefSQConst(engine, ScriptCompany::CURRENT_QUARTER, "CURRENT_QUARTER");
SQAICompany.DefSQConst(engine, ScriptCompany::EARLIEST_QUARTER, "EARLIEST_QUARTER");
SQAICompany.DefSQConst(engine, ScriptCompany::COMPANY_FIRST, "COMPANY_FIRST");
SQAICompany.DefSQConst(engine, ScriptCompany::COMPANY_LAST, "COMPANY_LAST");
SQAICompany.DefSQConst(engine, ScriptCompany::COMPANY_INVALID, "COMPANY_INVALID");
SQAICompany.DefSQConst(engine, ScriptCompany::COMPANY_SELF, "COMPANY_SELF");
SQAICompany.DefSQConst(engine, ScriptCompany::COMPANY_SPECTATOR, "COMPANY_SPECTATOR");
SQAICompany.DefSQConst(engine, ScriptCompany::GENDER_MALE, "GENDER_MALE");
SQAICompany.DefSQConst(engine, ScriptCompany::GENDER_FEMALE, "GENDER_FEMALE");
SQAICompany.DefSQConst(engine, ScriptCompany::GENDER_INVALID, "GENDER_INVALID");
SQAICompany.DefSQConst(engine, ScriptCompany::CURRENT_QUARTER, "CURRENT_QUARTER");
SQAICompany.DefSQConst(engine, ScriptCompany::EARLIEST_QUARTER, "EARLIEST_QUARTER");
SQAICompany.DefSQConst(engine, ScriptCompany::COMPANY_FIRST, "COMPANY_FIRST");
SQAICompany.DefSQConst(engine, ScriptCompany::COMPANY_LAST, "COMPANY_LAST");
SQAICompany.DefSQConst(engine, ScriptCompany::COMPANY_INVALID, "COMPANY_INVALID");
SQAICompany.DefSQConst(engine, ScriptCompany::COMPANY_SELF, "COMPANY_SELF");
SQAICompany.DefSQConst(engine, ScriptCompany::COMPANY_SPECTATOR, "COMPANY_SPECTATOR");
SQAICompany.DefSQConst(engine, ScriptCompany::GENDER_MALE, "GENDER_MALE");
SQAICompany.DefSQConst(engine, ScriptCompany::GENDER_FEMALE, "GENDER_FEMALE");
SQAICompany.DefSQConst(engine, ScriptCompany::GENDER_INVALID, "GENDER_INVALID");
SQAICompany.DefSQConst(engine, ScriptCompany::LS_DEFAULT, "LS_DEFAULT");
SQAICompany.DefSQConst(engine, ScriptCompany::LS_STEAM, "LS_STEAM");
SQAICompany.DefSQConst(engine, ScriptCompany::LS_DIESEL, "LS_DIESEL");
SQAICompany.DefSQConst(engine, ScriptCompany::LS_ELECTRIC, "LS_ELECTRIC");
SQAICompany.DefSQConst(engine, ScriptCompany::LS_MONORAIL, "LS_MONORAIL");
SQAICompany.DefSQConst(engine, ScriptCompany::LS_MAGLEV, "LS_MAGLEV");
SQAICompany.DefSQConst(engine, ScriptCompany::LS_DMU, "LS_DMU");
SQAICompany.DefSQConst(engine, ScriptCompany::LS_EMU, "LS_EMU");
SQAICompany.DefSQConst(engine, ScriptCompany::LS_PASSENGER_WAGON_STEAM, "LS_PASSENGER_WAGON_STEAM");
SQAICompany.DefSQConst(engine, ScriptCompany::LS_PASSENGER_WAGON_DIESEL, "LS_PASSENGER_WAGON_DIESEL");
SQAICompany.DefSQConst(engine, ScriptCompany::LS_PASSENGER_WAGON_ELECTRIC, "LS_PASSENGER_WAGON_ELECTRIC");
SQAICompany.DefSQConst(engine, ScriptCompany::LS_PASSENGER_WAGON_MONORAIL, "LS_PASSENGER_WAGON_MONORAIL");
SQAICompany.DefSQConst(engine, ScriptCompany::LS_PASSENGER_WAGON_MAGLEV, "LS_PASSENGER_WAGON_MAGLEV");
SQAICompany.DefSQConst(engine, ScriptCompany::LS_FREIGHT_WAGON, "LS_FREIGHT_WAGON");
SQAICompany.DefSQConst(engine, ScriptCompany::LS_BUS, "LS_BUS");
SQAICompany.DefSQConst(engine, ScriptCompany::LS_TRUCK, "LS_TRUCK");
SQAICompany.DefSQConst(engine, ScriptCompany::LS_PASSENGER_SHIP, "LS_PASSENGER_SHIP");
SQAICompany.DefSQConst(engine, ScriptCompany::LS_FREIGHT_SHIP, "LS_FREIGHT_SHIP");
SQAICompany.DefSQConst(engine, ScriptCompany::LS_HELICOPTER, "LS_HELICOPTER");
SQAICompany.DefSQConst(engine, ScriptCompany::LS_SMALL_PLANE, "LS_SMALL_PLANE");
SQAICompany.DefSQConst(engine, ScriptCompany::LS_LARGE_PLANE, "LS_LARGE_PLANE");
SQAICompany.DefSQConst(engine, ScriptCompany::LS_PASSENGER_TRAM, "LS_PASSENGER_TRAM");
SQAICompany.DefSQConst(engine, ScriptCompany::LS_FREIGHT_TRAM, "LS_FREIGHT_TRAM");
SQAICompany.DefSQConst(engine, ScriptCompany::LS_INVALID, "LS_INVALID");
SQAICompany.DefSQConst(engine, ScriptCompany::COLOUR_DARK_BLUE, "COLOUR_DARK_BLUE");
SQAICompany.DefSQConst(engine, ScriptCompany::COLOUR_PALE_GREEN, "COLOUR_PALE_GREEN");
SQAICompany.DefSQConst(engine, ScriptCompany::COLOUR_PINK, "COLOUR_PINK");
SQAICompany.DefSQConst(engine, ScriptCompany::COLOUR_YELLOW, "COLOUR_YELLOW");
SQAICompany.DefSQConst(engine, ScriptCompany::COLOUR_RED, "COLOUR_RED");
SQAICompany.DefSQConst(engine, ScriptCompany::COLOUR_LIGHT_BLUE, "COLOUR_LIGHT_BLUE");
SQAICompany.DefSQConst(engine, ScriptCompany::COLOUR_GREEN, "COLOUR_GREEN");
SQAICompany.DefSQConst(engine, ScriptCompany::COLOUR_DARK_GREEN, "COLOUR_DARK_GREEN");
SQAICompany.DefSQConst(engine, ScriptCompany::COLOUR_BLUE, "COLOUR_BLUE");
SQAICompany.DefSQConst(engine, ScriptCompany::COLOUR_CREAM, "COLOUR_CREAM");
SQAICompany.DefSQConst(engine, ScriptCompany::COLOUR_MAUVE, "COLOUR_MAUVE");
SQAICompany.DefSQConst(engine, ScriptCompany::COLOUR_PURPLE, "COLOUR_PURPLE");
SQAICompany.DefSQConst(engine, ScriptCompany::COLOUR_ORANGE, "COLOUR_ORANGE");
SQAICompany.DefSQConst(engine, ScriptCompany::COLOUR_BROWN, "COLOUR_BROWN");
SQAICompany.DefSQConst(engine, ScriptCompany::COLOUR_GREY, "COLOUR_GREY");
SQAICompany.DefSQConst(engine, ScriptCompany::COLOUR_WHITE, "COLOUR_WHITE");
SQAICompany.DefSQConst(engine, ScriptCompany::COLOUR_INVALID, "COLOUR_INVALID");
SQAICompany.DefSQStaticMethod(engine, &ScriptCompany::ResolveCompanyID, "ResolveCompanyID", 2, ".i");
SQAICompany.DefSQStaticMethod(engine, &ScriptCompany::IsMine, "IsMine", 2, ".i");
@@ -59,6 +100,10 @@ void SQAICompany_Register(Squirrel *engine)
SQAICompany.DefSQStaticMethod(engine, &ScriptCompany::GetAutoRenewMonths, "GetAutoRenewMonths", 2, ".i");
SQAICompany.DefSQStaticMethod(engine, &ScriptCompany::SetAutoRenewMoney, "SetAutoRenewMoney", 2, ".i");
SQAICompany.DefSQStaticMethod(engine, &ScriptCompany::GetAutoRenewMoney, "GetAutoRenewMoney", 2, ".i");
SQAICompany.DefSQStaticMethod(engine, &ScriptCompany::SetPrimaryLiveryColour, "SetPrimaryLiveryColour", 3, ".ii");
SQAICompany.DefSQStaticMethod(engine, &ScriptCompany::SetSecondaryLiveryColour, "SetSecondaryLiveryColour", 3, ".ii");
SQAICompany.DefSQStaticMethod(engine, &ScriptCompany::GetPrimaryLiveryColour, "GetPrimaryLiveryColour", 2, ".i");
SQAICompany.DefSQStaticMethod(engine, &ScriptCompany::GetSecondaryLiveryColour, "GetSecondaryLiveryColour", 2, ".i");
SQAICompany.PostRegister(engine);
}

View File

@@ -26,11 +26,13 @@ void SQAIGroup_Register(Squirrel *engine)
SQAIGroup.DefSQConst(engine, ScriptGroup::GROUP_INVALID, "GROUP_INVALID");
SQAIGroup.DefSQStaticMethod(engine, &ScriptGroup::IsValidGroup, "IsValidGroup", 2, ".i");
SQAIGroup.DefSQStaticMethod(engine, &ScriptGroup::CreateGroup, "CreateGroup", 2, ".i");
SQAIGroup.DefSQStaticMethod(engine, &ScriptGroup::CreateGroup, "CreateGroup", 3, ".ii");
SQAIGroup.DefSQStaticMethod(engine, &ScriptGroup::DeleteGroup, "DeleteGroup", 2, ".i");
SQAIGroup.DefSQStaticMethod(engine, &ScriptGroup::GetVehicleType, "GetVehicleType", 2, ".i");
SQAIGroup.DefSQStaticMethod(engine, &ScriptGroup::SetName, "SetName", 3, ".i.");
SQAIGroup.DefSQStaticMethod(engine, &ScriptGroup::GetName, "GetName", 2, ".i");
SQAIGroup.DefSQStaticMethod(engine, &ScriptGroup::SetParent, "SetParent", 3, ".ii");
SQAIGroup.DefSQStaticMethod(engine, &ScriptGroup::GetParent, "GetParent", 2, ".i");
SQAIGroup.DefSQStaticMethod(engine, &ScriptGroup::EnableAutoReplaceProtection, "EnableAutoReplaceProtection", 3, ".ib");
SQAIGroup.DefSQStaticMethod(engine, &ScriptGroup::GetAutoReplaceProtection, "GetAutoReplaceProtection", 2, ".i");
SQAIGroup.DefSQStaticMethod(engine, &ScriptGroup::GetNumEngines, "GetNumEngines", 3, ".ii");
@@ -40,6 +42,9 @@ void SQAIGroup_Register(Squirrel *engine)
SQAIGroup.DefSQStaticMethod(engine, &ScriptGroup::SetAutoReplace, "SetAutoReplace", 4, ".iii");
SQAIGroup.DefSQStaticMethod(engine, &ScriptGroup::GetEngineReplacement, "GetEngineReplacement", 3, ".ii");
SQAIGroup.DefSQStaticMethod(engine, &ScriptGroup::StopAutoReplace, "StopAutoReplace", 3, ".ii");
SQAIGroup.DefSQStaticMethod(engine, &ScriptGroup::GetProfitThisYear, "GetProfitThisYear", 2, ".i");
SQAIGroup.DefSQStaticMethod(engine, &ScriptGroup::GetProfitLastYear, "GetProfitLastYear", 2, ".i");
SQAIGroup.DefSQStaticMethod(engine, &ScriptGroup::GetCurrentUsage, "GetCurrentUsage", 2, ".i");
SQAIGroup.PostRegister(engine);
}

View File

@@ -20,9 +20,16 @@
* 1.9.0 is not yet released. The following changes are not set in stone yet.
* API additions:
* \li AIAirport::GetMonthlyMaintenanceCost
* \li AIGroup::SetParent
* \li AIGroup::GetParent
* \li AICompany::SetPrimaryLiveryColour
* \li AICompany::SetSecondaryLiveryColour
* \li AICompany::GetPrimaryLiveryColour
* \li AICompany::GetSecondaryLiveryColour
*
* Other changes:
* \li AIBridge::GetName takes one extra parameter to refer the vehicle type
* \li AIGroup::CreateGroup gains parent_group_id parameter
*
* \b 1.8.0
*

View File

@@ -21,30 +21,71 @@ void SQGSCompany_Register(Squirrel *engine)
SQGSCompany.PreRegister(engine);
SQGSCompany.AddConstructor<void (ScriptCompany::*)(), 1>(engine, "x");
SQGSCompany.DefSQConst(engine, ScriptCompany::CURRENT_QUARTER, "CURRENT_QUARTER");
SQGSCompany.DefSQConst(engine, ScriptCompany::EARLIEST_QUARTER, "EARLIEST_QUARTER");
SQGSCompany.DefSQConst(engine, ScriptCompany::COMPANY_FIRST, "COMPANY_FIRST");
SQGSCompany.DefSQConst(engine, ScriptCompany::COMPANY_LAST, "COMPANY_LAST");
SQGSCompany.DefSQConst(engine, ScriptCompany::COMPANY_INVALID, "COMPANY_INVALID");
SQGSCompany.DefSQConst(engine, ScriptCompany::COMPANY_SELF, "COMPANY_SELF");
SQGSCompany.DefSQConst(engine, ScriptCompany::COMPANY_SPECTATOR, "COMPANY_SPECTATOR");
SQGSCompany.DefSQConst(engine, ScriptCompany::GENDER_MALE, "GENDER_MALE");
SQGSCompany.DefSQConst(engine, ScriptCompany::GENDER_FEMALE, "GENDER_FEMALE");
SQGSCompany.DefSQConst(engine, ScriptCompany::GENDER_INVALID, "GENDER_INVALID");
SQGSCompany.DefSQConst(engine, ScriptCompany::EXPENSES_CONSTRUCTION, "EXPENSES_CONSTRUCTION");
SQGSCompany.DefSQConst(engine, ScriptCompany::EXPENSES_NEW_VEHICLES, "EXPENSES_NEW_VEHICLES");
SQGSCompany.DefSQConst(engine, ScriptCompany::EXPENSES_TRAIN_RUN, "EXPENSES_TRAIN_RUN");
SQGSCompany.DefSQConst(engine, ScriptCompany::EXPENSES_ROADVEH_RUN, "EXPENSES_ROADVEH_RUN");
SQGSCompany.DefSQConst(engine, ScriptCompany::EXPENSES_AIRCRAFT_RUN, "EXPENSES_AIRCRAFT_RUN");
SQGSCompany.DefSQConst(engine, ScriptCompany::EXPENSES_SHIP_RUN, "EXPENSES_SHIP_RUN");
SQGSCompany.DefSQConst(engine, ScriptCompany::EXPENSES_PROPERTY, "EXPENSES_PROPERTY");
SQGSCompany.DefSQConst(engine, ScriptCompany::EXPENSES_TRAIN_INC, "EXPENSES_TRAIN_INC");
SQGSCompany.DefSQConst(engine, ScriptCompany::EXPENSES_ROADVEH_INC, "EXPENSES_ROADVEH_INC");
SQGSCompany.DefSQConst(engine, ScriptCompany::EXPENSES_AIRCRAFT_INC, "EXPENSES_AIRCRAFT_INC");
SQGSCompany.DefSQConst(engine, ScriptCompany::EXPENSES_SHIP_INC, "EXPENSES_SHIP_INC");
SQGSCompany.DefSQConst(engine, ScriptCompany::EXPENSES_LOAN_INT, "EXPENSES_LOAN_INT");
SQGSCompany.DefSQConst(engine, ScriptCompany::EXPENSES_OTHER, "EXPENSES_OTHER");
SQGSCompany.DefSQConst(engine, ScriptCompany::EXPENSES_INVALID, "EXPENSES_INVALID");
SQGSCompany.DefSQConst(engine, ScriptCompany::CURRENT_QUARTER, "CURRENT_QUARTER");
SQGSCompany.DefSQConst(engine, ScriptCompany::EARLIEST_QUARTER, "EARLIEST_QUARTER");
SQGSCompany.DefSQConst(engine, ScriptCompany::COMPANY_FIRST, "COMPANY_FIRST");
SQGSCompany.DefSQConst(engine, ScriptCompany::COMPANY_LAST, "COMPANY_LAST");
SQGSCompany.DefSQConst(engine, ScriptCompany::COMPANY_INVALID, "COMPANY_INVALID");
SQGSCompany.DefSQConst(engine, ScriptCompany::COMPANY_SELF, "COMPANY_SELF");
SQGSCompany.DefSQConst(engine, ScriptCompany::COMPANY_SPECTATOR, "COMPANY_SPECTATOR");
SQGSCompany.DefSQConst(engine, ScriptCompany::GENDER_MALE, "GENDER_MALE");
SQGSCompany.DefSQConst(engine, ScriptCompany::GENDER_FEMALE, "GENDER_FEMALE");
SQGSCompany.DefSQConst(engine, ScriptCompany::GENDER_INVALID, "GENDER_INVALID");
SQGSCompany.DefSQConst(engine, ScriptCompany::LS_DEFAULT, "LS_DEFAULT");
SQGSCompany.DefSQConst(engine, ScriptCompany::LS_STEAM, "LS_STEAM");
SQGSCompany.DefSQConst(engine, ScriptCompany::LS_DIESEL, "LS_DIESEL");
SQGSCompany.DefSQConst(engine, ScriptCompany::LS_ELECTRIC, "LS_ELECTRIC");
SQGSCompany.DefSQConst(engine, ScriptCompany::LS_MONORAIL, "LS_MONORAIL");
SQGSCompany.DefSQConst(engine, ScriptCompany::LS_MAGLEV, "LS_MAGLEV");
SQGSCompany.DefSQConst(engine, ScriptCompany::LS_DMU, "LS_DMU");
SQGSCompany.DefSQConst(engine, ScriptCompany::LS_EMU, "LS_EMU");
SQGSCompany.DefSQConst(engine, ScriptCompany::LS_PASSENGER_WAGON_STEAM, "LS_PASSENGER_WAGON_STEAM");
SQGSCompany.DefSQConst(engine, ScriptCompany::LS_PASSENGER_WAGON_DIESEL, "LS_PASSENGER_WAGON_DIESEL");
SQGSCompany.DefSQConst(engine, ScriptCompany::LS_PASSENGER_WAGON_ELECTRIC, "LS_PASSENGER_WAGON_ELECTRIC");
SQGSCompany.DefSQConst(engine, ScriptCompany::LS_PASSENGER_WAGON_MONORAIL, "LS_PASSENGER_WAGON_MONORAIL");
SQGSCompany.DefSQConst(engine, ScriptCompany::LS_PASSENGER_WAGON_MAGLEV, "LS_PASSENGER_WAGON_MAGLEV");
SQGSCompany.DefSQConst(engine, ScriptCompany::LS_FREIGHT_WAGON, "LS_FREIGHT_WAGON");
SQGSCompany.DefSQConst(engine, ScriptCompany::LS_BUS, "LS_BUS");
SQGSCompany.DefSQConst(engine, ScriptCompany::LS_TRUCK, "LS_TRUCK");
SQGSCompany.DefSQConst(engine, ScriptCompany::LS_PASSENGER_SHIP, "LS_PASSENGER_SHIP");
SQGSCompany.DefSQConst(engine, ScriptCompany::LS_FREIGHT_SHIP, "LS_FREIGHT_SHIP");
SQGSCompany.DefSQConst(engine, ScriptCompany::LS_HELICOPTER, "LS_HELICOPTER");
SQGSCompany.DefSQConst(engine, ScriptCompany::LS_SMALL_PLANE, "LS_SMALL_PLANE");
SQGSCompany.DefSQConst(engine, ScriptCompany::LS_LARGE_PLANE, "LS_LARGE_PLANE");
SQGSCompany.DefSQConst(engine, ScriptCompany::LS_PASSENGER_TRAM, "LS_PASSENGER_TRAM");
SQGSCompany.DefSQConst(engine, ScriptCompany::LS_FREIGHT_TRAM, "LS_FREIGHT_TRAM");
SQGSCompany.DefSQConst(engine, ScriptCompany::LS_INVALID, "LS_INVALID");
SQGSCompany.DefSQConst(engine, ScriptCompany::COLOUR_DARK_BLUE, "COLOUR_DARK_BLUE");
SQGSCompany.DefSQConst(engine, ScriptCompany::COLOUR_PALE_GREEN, "COLOUR_PALE_GREEN");
SQGSCompany.DefSQConst(engine, ScriptCompany::COLOUR_PINK, "COLOUR_PINK");
SQGSCompany.DefSQConst(engine, ScriptCompany::COLOUR_YELLOW, "COLOUR_YELLOW");
SQGSCompany.DefSQConst(engine, ScriptCompany::COLOUR_RED, "COLOUR_RED");
SQGSCompany.DefSQConst(engine, ScriptCompany::COLOUR_LIGHT_BLUE, "COLOUR_LIGHT_BLUE");
SQGSCompany.DefSQConst(engine, ScriptCompany::COLOUR_GREEN, "COLOUR_GREEN");
SQGSCompany.DefSQConst(engine, ScriptCompany::COLOUR_DARK_GREEN, "COLOUR_DARK_GREEN");
SQGSCompany.DefSQConst(engine, ScriptCompany::COLOUR_BLUE, "COLOUR_BLUE");
SQGSCompany.DefSQConst(engine, ScriptCompany::COLOUR_CREAM, "COLOUR_CREAM");
SQGSCompany.DefSQConst(engine, ScriptCompany::COLOUR_MAUVE, "COLOUR_MAUVE");
SQGSCompany.DefSQConst(engine, ScriptCompany::COLOUR_PURPLE, "COLOUR_PURPLE");
SQGSCompany.DefSQConst(engine, ScriptCompany::COLOUR_ORANGE, "COLOUR_ORANGE");
SQGSCompany.DefSQConst(engine, ScriptCompany::COLOUR_BROWN, "COLOUR_BROWN");
SQGSCompany.DefSQConst(engine, ScriptCompany::COLOUR_GREY, "COLOUR_GREY");
SQGSCompany.DefSQConst(engine, ScriptCompany::COLOUR_WHITE, "COLOUR_WHITE");
SQGSCompany.DefSQConst(engine, ScriptCompany::COLOUR_INVALID, "COLOUR_INVALID");
SQGSCompany.DefSQConst(engine, ScriptCompany::EXPENSES_CONSTRUCTION, "EXPENSES_CONSTRUCTION");
SQGSCompany.DefSQConst(engine, ScriptCompany::EXPENSES_NEW_VEHICLES, "EXPENSES_NEW_VEHICLES");
SQGSCompany.DefSQConst(engine, ScriptCompany::EXPENSES_TRAIN_RUN, "EXPENSES_TRAIN_RUN");
SQGSCompany.DefSQConst(engine, ScriptCompany::EXPENSES_ROADVEH_RUN, "EXPENSES_ROADVEH_RUN");
SQGSCompany.DefSQConst(engine, ScriptCompany::EXPENSES_AIRCRAFT_RUN, "EXPENSES_AIRCRAFT_RUN");
SQGSCompany.DefSQConst(engine, ScriptCompany::EXPENSES_SHIP_RUN, "EXPENSES_SHIP_RUN");
SQGSCompany.DefSQConst(engine, ScriptCompany::EXPENSES_PROPERTY, "EXPENSES_PROPERTY");
SQGSCompany.DefSQConst(engine, ScriptCompany::EXPENSES_TRAIN_INC, "EXPENSES_TRAIN_INC");
SQGSCompany.DefSQConst(engine, ScriptCompany::EXPENSES_ROADVEH_INC, "EXPENSES_ROADVEH_INC");
SQGSCompany.DefSQConst(engine, ScriptCompany::EXPENSES_AIRCRAFT_INC, "EXPENSES_AIRCRAFT_INC");
SQGSCompany.DefSQConst(engine, ScriptCompany::EXPENSES_SHIP_INC, "EXPENSES_SHIP_INC");
SQGSCompany.DefSQConst(engine, ScriptCompany::EXPENSES_LOAN_INT, "EXPENSES_LOAN_INT");
SQGSCompany.DefSQConst(engine, ScriptCompany::EXPENSES_OTHER, "EXPENSES_OTHER");
SQGSCompany.DefSQConst(engine, ScriptCompany::EXPENSES_INVALID, "EXPENSES_INVALID");
SQGSCompany.DefSQStaticMethod(engine, &ScriptCompany::ResolveCompanyID, "ResolveCompanyID", 2, ".i");
SQGSCompany.DefSQStaticMethod(engine, &ScriptCompany::SetName, "SetName", 2, "..");
@@ -69,6 +110,10 @@ void SQGSCompany_Register(Squirrel *engine)
SQGSCompany.DefSQStaticMethod(engine, &ScriptCompany::GetAutoRenewStatus, "GetAutoRenewStatus", 2, ".i");
SQGSCompany.DefSQStaticMethod(engine, &ScriptCompany::GetAutoRenewMonths, "GetAutoRenewMonths", 2, ".i");
SQGSCompany.DefSQStaticMethod(engine, &ScriptCompany::GetAutoRenewMoney, "GetAutoRenewMoney", 2, ".i");
SQGSCompany.DefSQStaticMethod(engine, &ScriptCompany::SetPrimaryLiveryColour, "SetPrimaryLiveryColour", 3, ".ii");
SQGSCompany.DefSQStaticMethod(engine, &ScriptCompany::SetSecondaryLiveryColour, "SetSecondaryLiveryColour", 3, ".ii");
SQGSCompany.DefSQStaticMethod(engine, &ScriptCompany::GetPrimaryLiveryColour, "GetPrimaryLiveryColour", 2, ".i");
SQGSCompany.DefSQStaticMethod(engine, &ScriptCompany::GetSecondaryLiveryColour, "GetSecondaryLiveryColour", 2, ".i");
SQGSCompany.PostRegister(engine);
}

View File

@@ -466,6 +466,7 @@ void SQGSWindow_Register(Squirrel *engine)
SQGSWindow.DefSQConst(engine, ScriptWindow::WID_FRW_TIMES_NAMES, "WID_FRW_TIMES_NAMES");
SQGSWindow.DefSQConst(engine, ScriptWindow::WID_FRW_TIMES_CURRENT, "WID_FRW_TIMES_CURRENT");
SQGSWindow.DefSQConst(engine, ScriptWindow::WID_FRW_TIMES_AVERAGE, "WID_FRW_TIMES_AVERAGE");
SQGSWindow.DefSQConst(engine, ScriptWindow::WID_FRW_SCROLLBAR, "WID_FRW_SCROLLBAR");
SQGSWindow.DefSQConst(engine, ScriptWindow::WID_FGW_CAPTION, "WID_FGW_CAPTION");
SQGSWindow.DefSQConst(engine, ScriptWindow::WID_FGW_GRAPH, "WID_FGW_GRAPH");
SQGSWindow.DefSQConst(engine, ScriptWindow::WID_GL_TEMPERATE, "WID_GL_TEMPERATE");
@@ -1030,7 +1031,6 @@ void SQGSWindow_Register(Squirrel *engine)
SQGSWindow.DefSQConst(engine, ScriptWindow::WID_GO_RESOLUTION_DROPDOWN, "WID_GO_RESOLUTION_DROPDOWN");
SQGSWindow.DefSQConst(engine, ScriptWindow::WID_GO_FULLSCREEN_BUTTON, "WID_GO_FULLSCREEN_BUTTON");
SQGSWindow.DefSQConst(engine, ScriptWindow::WID_GO_GUI_ZOOM_DROPDOWN, "WID_GO_GUI_ZOOM_DROPDOWN");
SQGSWindow.DefSQConst(engine, ScriptWindow::WID_GO_FONT_ZOOM_DROPDOWN, "WID_GO_FONT_ZOOM_DROPDOWN");
SQGSWindow.DefSQConst(engine, ScriptWindow::WID_GO_BASE_GRF_DROPDOWN, "WID_GO_BASE_GRF_DROPDOWN");
SQGSWindow.DefSQConst(engine, ScriptWindow::WID_GO_BASE_GRF_STATUS, "WID_GO_BASE_GRF_STATUS");
SQGSWindow.DefSQConst(engine, ScriptWindow::WID_GO_BASE_GRF_TEXTFILE, "WID_GO_BASE_GRF_TEXTFILE");
@@ -1042,6 +1042,7 @@ void SQGSWindow_Register(Squirrel *engine)
SQGSWindow.DefSQConst(engine, ScriptWindow::WID_GO_BASE_MUSIC_STATUS, "WID_GO_BASE_MUSIC_STATUS");
SQGSWindow.DefSQConst(engine, ScriptWindow::WID_GO_BASE_MUSIC_TEXTFILE, "WID_GO_BASE_MUSIC_TEXTFILE");
SQGSWindow.DefSQConst(engine, ScriptWindow::WID_GO_BASE_MUSIC_DESCRIPTION, "WID_GO_BASE_MUSIC_DESCRIPTION");
SQGSWindow.DefSQConst(engine, ScriptWindow::WID_GO_FONT_ZOOM_DROPDOWN, "WID_GO_FONT_ZOOM_DROPDOWN");
SQGSWindow.DefSQConst(engine, ScriptWindow::WID_GS_FILTER, "WID_GS_FILTER");
SQGSWindow.DefSQConst(engine, ScriptWindow::WID_GS_OPTIONSPANEL, "WID_GS_OPTIONSPANEL");
SQGSWindow.DefSQConst(engine, ScriptWindow::WID_GS_SCROLLBAR, "WID_GS_SCROLLBAR");

View File

@@ -296,3 +296,33 @@
return ::Company::Get((CompanyID)company)->settings.engine_renew_money;
}
/* static */ bool ScriptCompany::SetPrimaryLiveryColour(LiveryScheme scheme, Colours colour)
{
return ScriptObject::DoCommand(0, scheme, colour, CMD_SET_COMPANY_COLOUR);
}
/* static */ bool ScriptCompany::SetSecondaryLiveryColour(LiveryScheme scheme, Colours colour)
{
return ScriptObject::DoCommand(0, scheme | 1 << 8, colour, CMD_SET_COMPANY_COLOUR);
}
/* static */ ScriptCompany::Colours ScriptCompany::GetPrimaryLiveryColour(ScriptCompany::LiveryScheme scheme)
{
if ((::LiveryScheme)scheme < LS_BEGIN || (::LiveryScheme)scheme >= LS_END) return COLOUR_INVALID;
const Company *c = ::Company::GetIfValid(_current_company);
if (c == NULL) return COLOUR_INVALID;
return (ScriptCompany::Colours)c->livery[scheme].colour1;
}
/* static */ ScriptCompany::Colours ScriptCompany::GetSecondaryLiveryColour(ScriptCompany::LiveryScheme scheme)
{
if ((::LiveryScheme)scheme < LS_BEGIN || (::LiveryScheme)scheme >= LS_END) return COLOUR_INVALID;
const Company *c = ::Company::GetIfValid(_current_company);
if (c == NULL) return COLOUR_INVALID;
return (ScriptCompany::Colours)c->livery[scheme].colour2;
}

View File

@@ -14,6 +14,8 @@
#include "script_text.hpp"
#include "../../economy_type.h"
#include "../../livery.h"
#include "../../gfx_type.h"
/**
* Class that handles all company related functions.
@@ -46,6 +48,55 @@ public:
GENDER_INVALID = -1, ///< An invalid gender.
};
/** List of different livery schemes. */
enum LiveryScheme {
LS_DEFAULT, ///< Default scheme.
LS_STEAM, ///< Steam engines.
LS_DIESEL, ///< Diesel engines.
LS_ELECTRIC, ///< Electric engines.
LS_MONORAIL, ///< Monorail engines.
LS_MAGLEV, ///< Maglev engines.
LS_DMU, ///< DMUs and their passenger wagons.
LS_EMU, ///< EMUs and their passenger wagons.
LS_PASSENGER_WAGON_STEAM, ///< Passenger wagons attached to steam engines.
LS_PASSENGER_WAGON_DIESEL, ///< Passenger wagons attached to diesel engines.
LS_PASSENGER_WAGON_ELECTRIC, ///< Passenger wagons attached to electric engines.
LS_PASSENGER_WAGON_MONORAIL, ///< Passenger wagons attached to monorail engines.
LS_PASSENGER_WAGON_MAGLEV, ///< Passenger wagons attached to maglev engines.
LS_FREIGHT_WAGON, ///< Freight wagons.
LS_BUS, ///< Buses.
LS_TRUCK, ///< Trucks.
LS_PASSENGER_SHIP, ///< Passenger ships.
LS_FREIGHT_SHIP, ///< Freight ships.
LS_HELICOPTER, ///< Helicopters.
LS_SMALL_PLANE, ///< Small aeroplanes.
LS_LARGE_PLANE, ///< Large aeroplanes.
LS_PASSENGER_TRAM, ///< Passenger trams.
LS_FREIGHT_TRAM, ///< Freight trams.
LS_INVALID = -1,
};
/** List of colours. */
enum Colours {
COLOUR_DARK_BLUE,
COLOUR_PALE_GREEN,
COLOUR_PINK,
COLOUR_YELLOW,
COLOUR_RED,
COLOUR_LIGHT_BLUE,
COLOUR_GREEN,
COLOUR_DARK_GREEN,
COLOUR_BLUE,
COLOUR_CREAM,
COLOUR_MAUVE,
COLOUR_PURPLE,
COLOUR_ORANGE,
COLOUR_BROWN,
COLOUR_GREY,
COLOUR_WHITE,
COLOUR_INVALID = ::INVALID_COLOUR
};
/**
* Types of expenses.
* @api -ai
@@ -331,6 +382,36 @@ public:
* @return The minimum required money for autorenew to work.
*/
static Money GetAutoRenewMoney(CompanyID company);
/**
* Set primary colour for your company.
* @param scheme Livery scheme to set.
* @param colour Colour to set.
* @return False if unable to set primary colour of the livery scheme (e.g. colour in use).
*/
static bool SetPrimaryLiveryColour(LiveryScheme scheme, Colours colour);
/**
* Set secondary colour for your company.
* @param scheme Livery scheme to set.
* @param colour Colour to set.
* @return False if unable to set secondary colour of the livery scheme.
*/
static bool SetSecondaryLiveryColour(LiveryScheme scheme, Colours colour);
/**
* Get primary colour of a livery for your company.
* @param scheme Livery scheme to get.
* @return Primary colour of livery.
*/
static ScriptCompany::Colours GetPrimaryLiveryColour(LiveryScheme scheme);
/**
* Get secondary colour of a livery for your company.
* @param scheme Livery scheme to get.
* @return Secondary colour of livery.
*/
static ScriptCompany::Colours GetSecondaryLiveryColour(LiveryScheme scheme);
};
DECLARE_POSTFIX_INCREMENT(ScriptCompany::CompanyID)

View File

@@ -17,6 +17,7 @@
#include "../../strings_func.h"
#include "../../autoreplace_func.h"
#include "../../settings_func.h"
#include "../../vehicle_base.h"
#include "table/strings.h"
#include "../../safeguards.h"
@@ -27,9 +28,9 @@
return g != NULL && g->owner == ScriptObject::GetCompany();
}
/* static */ ScriptGroup::GroupID ScriptGroup::CreateGroup(ScriptVehicle::VehicleType vehicle_type)
/* static */ ScriptGroup::GroupID ScriptGroup::CreateGroup(ScriptVehicle::VehicleType vehicle_type, GroupID parent_group_id)
{
if (!ScriptObject::DoCommand(0, (::VehicleType)vehicle_type, INVALID_GROUP, CMD_CREATE_GROUP, NULL, &ScriptInstance::DoCommandReturnGroupID)) return GROUP_INVALID;
if (!ScriptObject::DoCommand(0, (::VehicleType)vehicle_type, parent_group_id, CMD_CREATE_GROUP, NULL, &ScriptInstance::DoCommandReturnGroupID)) return GROUP_INVALID;
/* In case of test-mode, we return GroupID 0 */
return (ScriptGroup::GroupID)0;
@@ -70,6 +71,22 @@
return GetString(STR_GROUP_NAME);
}
/* static */ bool ScriptGroup::SetParent(GroupID group_id, GroupID parent_group_id)
{
EnforcePrecondition(false, IsValidGroup(group_id));
EnforcePrecondition(false, IsValidGroup(parent_group_id));
return ScriptObject::DoCommand(0, group_id | 1 << 16, parent_group_id, CMD_ALTER_GROUP);
}
/* static */ ScriptGroup::GroupID ScriptGroup::GetParent(GroupID group_id)
{
EnforcePrecondition((ScriptGroup::GroupID)INVALID_GROUP, IsValidGroup(group_id));
const Group *g = ::Group::GetIfValid(group_id);
return (ScriptGroup::GroupID)g->parent;
}
/* static */ bool ScriptGroup::EnableAutoReplaceProtection(GroupID group_id, bool enable)
{
EnforcePrecondition(false, IsValidGroup(group_id));
@@ -132,3 +149,48 @@
return ScriptObject::DoCommand(0, group_id << 16, (::INVALID_ENGINE << 16) | engine_id, CMD_SET_AUTOREPLACE);
}
/* static */ Money ScriptGroup::GetProfitThisYear(GroupID group_id)
{
if (!IsValidGroup(group_id)) return -1;
Money profit = 0;
const Vehicle *v;
FOR_ALL_VEHICLES(v) {
if (v->group_id != group_id) continue;
if (!v->IsPrimaryVehicle()) continue;
profit += v->GetDisplayProfitThisYear();
}
return profit;
}
/* static */ Money ScriptGroup::GetProfitLastYear(GroupID group_id)
{
if (!IsValidGroup(group_id)) return -1;
return ::Group::Get(group_id)->statistics.profit_last_year;
}
/* static */ uint32 ScriptGroup::GetCurrentUsage(GroupID group_id)
{
if (!IsValidGroup(group_id)) return -1;
uint32 occupancy = 0;
uint32 vehicle_count = 0;
const Vehicle *v;
FOR_ALL_VEHICLES(v) {
if (v->group_id != group_id) continue;
if (!v->IsPrimaryVehicle()) continue;
occupancy += v->trip_occupancy;
vehicle_count++;
}
if (vehicle_count == 0) return -1;
return occupancy / vehicle_count;
}

View File

@@ -42,11 +42,12 @@ public:
/**
* Create a new group.
* @param vehicle_type The type of vehicle to create a group for.
* @param parent_group_id The parent group id to create this group under, INVALID_GROUP for top-level.
* @return The GroupID of the new group, or an invalid GroupID when
* it failed. Check the return value using IsValidGroup(). In test-mode
* 0 is returned if it was successful; any other value indicates failure.
*/
static GroupID CreateGroup(ScriptVehicle::VehicleType vehicle_type);
static GroupID CreateGroup(ScriptVehicle::VehicleType vehicle_type, GroupID parent_group_id);
/**
* Delete the given group. When the deletion succeeds all vehicles in the
@@ -84,6 +85,24 @@ public:
*/
static char *GetName(GroupID group_id);
/**
* Set parent group of a group.
* @param group_id The group to set the parent for.
* @param parent_group_id The parent group to set.
* @pre IsValidGroup(group_id).
* @pre IsValidGroup(parent_group_id).
* @return True if and only if the parent group was changed.
*/
static bool SetParent(GroupID group_id, GroupID parent_group_id);
/**
* Get parent group of a group.
* @param group_id The group to get the parent of.
* @pre IsValidGroup(group_id).
* @return The group id of the parent group.
*/
static GroupID GetParent(GroupID group_id);
/**
* Enable or disable autoreplace protected. If the protection is
* enabled, global autoreplace won't affect vehicles in this group.
@@ -171,6 +190,30 @@ public:
* @return True if and if the replacing was successfully stopped.
*/
static bool StopAutoReplace(GroupID group_id, EngineID engine_id);
/**
* Get the current profit of a group.
* @param group_id The group to get the profit of.
* @pre IsValidGroup(group_id).
* @return The current profit the group has.
*/
static Money GetProfitThisYear(GroupID group_id);
/**
* Get the profit of last year of a group.
* @param group_id The group to get the profit of.
* @pre IsValidGroup(group_id).
* @return The current profit the group had last year.
*/
static Money GetProfitLastYear(GroupID group_id);
/**
* Get the current vehicle usage of a group.
* @param group_id The group to get the current usage of.
* @pre IsValidGroup(group_id).
* @return The current usage of the group.
*/
static uint32 GetCurrentUsage(GroupID group_id);
};
#endif /* SCRIPT_GROUP_HPP */

View File

@@ -19,6 +19,10 @@ namespace SQConvert {
template <> inline int Return<ScriptCompany::CompanyID>(HSQUIRRELVM vm, ScriptCompany::CompanyID res) { sq_pushinteger(vm, (int32)res); return 1; }
template <> inline ScriptCompany::Gender GetParam(ForceType<ScriptCompany::Gender>, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQInteger tmp; sq_getinteger(vm, index, &tmp); return (ScriptCompany::Gender)tmp; }
template <> inline int Return<ScriptCompany::Gender>(HSQUIRRELVM vm, ScriptCompany::Gender res) { sq_pushinteger(vm, (int32)res); return 1; }
template <> inline ScriptCompany::LiveryScheme GetParam(ForceType<ScriptCompany::LiveryScheme>, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQInteger tmp; sq_getinteger(vm, index, &tmp); return (ScriptCompany::LiveryScheme)tmp; }
template <> inline int Return<ScriptCompany::LiveryScheme>(HSQUIRRELVM vm, ScriptCompany::LiveryScheme res) { sq_pushinteger(vm, (int32)res); return 1; }
template <> inline ScriptCompany::Colours GetParam(ForceType<ScriptCompany::Colours>, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQInteger tmp; sq_getinteger(vm, index, &tmp); return (ScriptCompany::Colours)tmp; }
template <> inline int Return<ScriptCompany::Colours>(HSQUIRRELVM vm, ScriptCompany::Colours res) { sq_pushinteger(vm, (int32)res); return 1; }
template <> inline ScriptCompany::ExpensesType GetParam(ForceType<ScriptCompany::ExpensesType>, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQInteger tmp; sq_getinteger(vm, index, &tmp); return (ScriptCompany::ExpensesType)tmp; }
template <> inline int Return<ScriptCompany::ExpensesType>(HSQUIRRELVM vm, ScriptCompany::ExpensesType res) { sq_pushinteger(vm, (int32)res); return 1; }

View File

@@ -139,7 +139,7 @@ public:
/**
* Randomize all settings the Script requested to be randomized.
*/
virtual void AddRandomDeviation();
void AddRandomDeviation();
/**
* Is this config attached to an Script? In other words, is there a Script

View File

@@ -1,119 +0,0 @@
/* $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 sdl.cpp Implementation of SDL support. */
#include "stdafx.h"
#ifdef WITH_SDL
#include "sdl.h"
#include <SDL.h>
/** Number of users of the SDL library. */
static int _sdl_usage;
#ifdef DYNAMICALLY_LOADED_SDL
#include "os/windows/win32.h"
#define M(x) x "\0"
static const char sdl_files[] =
M("sdl.dll")
M("SDL_Init")
M("SDL_InitSubSystem")
M("SDL_GetError")
M("SDL_QuitSubSystem")
M("SDL_UpdateRect")
M("SDL_UpdateRects")
M("SDL_SetColors")
M("SDL_WM_SetCaption")
M("SDL_ShowCursor")
M("SDL_FreeSurface")
M("SDL_PollEvent")
M("SDL_WarpMouse")
M("SDL_GetTicks")
M("SDL_OpenAudio")
M("SDL_PauseAudio")
M("SDL_CloseAudio")
M("SDL_LockSurface")
M("SDL_UnlockSurface")
M("SDL_GetModState")
M("SDL_Delay")
M("SDL_Quit")
M("SDL_SetVideoMode")
M("SDL_EnableKeyRepeat")
M("SDL_EnableUNICODE")
M("SDL_VideoDriverName")
M("SDL_ListModes")
M("SDL_GetKeyState")
M("SDL_LoadBMP_RW")
M("SDL_RWFromFile")
M("SDL_SetColorKey")
M("SDL_WM_SetIcon")
M("SDL_MapRGB")
M("SDL_VideoModeOK")
M("SDL_Linked_Version")
M("")
;
#undef M
SDLProcs sdl_proc;
static const char *LoadSdlDLL()
{
if (sdl_proc.SDL_Init != NULL) {
return NULL;
}
if (!LoadLibraryList((Function *)(void *)&sdl_proc, sdl_files)) {
return "Unable to load sdl.dll";
}
return NULL;
}
#endif /* DYNAMICALLY_LOADED_SDL */
#include "safeguards.h"
/**
* Open the SDL library.
* @param x The subsystem to load.
*/
const char *SdlOpen(uint32 x)
{
#ifdef DYNAMICALLY_LOADED_SDL
{
const char *s = LoadSdlDLL();
if (s != NULL) return s;
}
#endif
if (_sdl_usage++ == 0) {
if (SDL_CALL SDL_Init(x | SDL_INIT_NOPARACHUTE) == -1) return SDL_CALL SDL_GetError();
} else if (x != 0) {
if (SDL_CALL SDL_InitSubSystem(x) == -1) return SDL_CALL SDL_GetError();
}
return NULL;
}
/**
* Close the SDL library.
* @param x The subsystem to close.
*/
void SdlClose(uint32 x)
{
if (x != 0) {
SDL_CALL SDL_QuitSubSystem(x);
}
if (--_sdl_usage == 0) {
SDL_CALL SDL_Quit();
}
}
#endif

View File

@@ -1,71 +0,0 @@
/* $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 sdl.h SDL support. */
#ifndef SDL_H
#define SDL_H
const char *SdlOpen(uint32 x);
void SdlClose(uint32 x);
#ifdef _WIN32
#define DYNAMICALLY_LOADED_SDL
#endif
#ifdef DYNAMICALLY_LOADED_SDL
#include <SDL.h>
struct SDLProcs {
int (SDLCALL *SDL_Init)(Uint32);
int (SDLCALL *SDL_InitSubSystem)(Uint32);
char *(SDLCALL *SDL_GetError)();
void (SDLCALL *SDL_QuitSubSystem)(Uint32);
void (SDLCALL *SDL_UpdateRect)(SDL_Surface *, Sint32, Sint32, Uint32, Uint32);
void (SDLCALL *SDL_UpdateRects)(SDL_Surface *, int, SDL_Rect *);
int (SDLCALL *SDL_SetColors)(SDL_Surface *, SDL_Color *, int, int);
void (SDLCALL *SDL_WM_SetCaption)(const char *, const char *);
int (SDLCALL *SDL_ShowCursor)(int);
void (SDLCALL *SDL_FreeSurface)(SDL_Surface *);
int (SDLCALL *SDL_PollEvent)(SDL_Event *);
void (SDLCALL *SDL_WarpMouse)(Uint16, Uint16);
uint32 (SDLCALL *SDL_GetTicks)();
int (SDLCALL *SDL_OpenAudio)(SDL_AudioSpec *, SDL_AudioSpec*);
void (SDLCALL *SDL_PauseAudio)(int);
void (SDLCALL *SDL_CloseAudio)();
int (SDLCALL *SDL_LockSurface)(SDL_Surface*);
void (SDLCALL *SDL_UnlockSurface)(SDL_Surface*);
SDLMod (SDLCALL *SDL_GetModState)();
void (SDLCALL *SDL_Delay)(Uint32);
void (SDLCALL *SDL_Quit)();
SDL_Surface *(SDLCALL *SDL_SetVideoMode)(int, int, int, Uint32);
int (SDLCALL *SDL_EnableKeyRepeat)(int, int);
void (SDLCALL *SDL_EnableUNICODE)(int);
void (SDLCALL *SDL_VideoDriverName)(char *, int);
SDL_Rect **(SDLCALL *SDL_ListModes)(void *, int);
Uint8 *(SDLCALL *SDL_GetKeyState)(int *);
SDL_Surface *(SDLCALL *SDL_LoadBMP_RW)(SDL_RWops *, int);
SDL_RWops *(SDLCALL *SDL_RWFromFile)(const char *, const char *);
int (SDLCALL *SDL_SetColorKey)(SDL_Surface *, Uint32, Uint32);
void (SDLCALL *SDL_WM_SetIcon)(SDL_Surface *, Uint8 *);
Uint32 (SDLCALL *SDL_MapRGB)(SDL_PixelFormat *, Uint8, Uint8, Uint8);
int (SDLCALL *SDL_VideoModeOK)(int, int, int, Uint32);
SDL_version *(SDLCALL *SDL_Linked_Version)();
int (SDLCALL *SDL_BlitSurface)(SDL_Surface *, SDL_Rect *, SDL_Surface *, SDL_Rect *);
SDL_Surface *(SDLCALL *SDL_CreateRGBSurface)(Uint32, int, int, int, Uint32, Uint32, Uint32, Uint32);
};
extern SDLProcs sdl_proc;
#define SDL_CALL sdl_proc.
#else
#define SDL_CALL
#endif
#endif /* SDL_H */

Some files were not shown because too many files have changed in this diff Show More