Compare commits
56 Commits
feat/font_
...
1.9.3-RC1
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
e5021a0587 | ||
|
|
fb51a18357 | ||
|
|
9f1d80e93b | ||
|
|
6369e0693d | ||
|
|
da086a3fde | ||
|
|
83f1839e71 | ||
|
|
8afc1a7253 | ||
|
|
c70d12ee38 | ||
|
|
ee7ca008c9 | ||
|
|
b18c2d140c | ||
|
|
a76e5e1970 | ||
|
|
59e4ccd7dc | ||
|
|
a82f21f24d | ||
|
|
46908fb63a | ||
|
|
8efa99f445 | ||
|
|
c6251426d9 | ||
|
|
9026736cc1 | ||
|
|
b7a2166962 | ||
|
|
8ea68421b1 | ||
|
|
afc5962881 | ||
|
|
9239381d56 | ||
|
|
9dded61af9 | ||
|
|
8fbc5c090b | ||
|
|
00bdd316d7 | ||
|
|
f34284f1a0 | ||
|
|
c77659c995 | ||
|
|
e6877d0823 | ||
|
|
beba12f9d6 | ||
|
|
95fd4ec649 | ||
|
|
0fa41c7493 | ||
|
|
60cbcf0742 | ||
|
|
e38a4e1e57 | ||
|
|
5965f184c2 | ||
|
|
db20c7f461 | ||
|
|
e2e8872e82 | ||
|
|
4750d2836c | ||
|
|
b1c31f9500 | ||
|
|
a6879e9180 | ||
|
|
5eb7d49024 | ||
|
|
69c0332813 | ||
|
|
b11942cf44 | ||
|
|
ef6995e8d4 | ||
|
|
c0fd2b969b | ||
|
|
683778fd7a | ||
|
|
63eeadef17 | ||
|
|
e526b2ccd3 | ||
|
|
b61ef7e0d2 | ||
|
|
120d76c5c1 | ||
|
|
316ecb07ee | ||
|
|
2c21f52e1d | ||
|
|
0a8e9e9757 | ||
|
|
6bfec89fcf | ||
|
|
1f39a31eb7 | ||
|
|
abc0325ef1 | ||
|
|
54451a18c6 | ||
|
|
d3e9e8c2ce |
@@ -38,10 +38,14 @@ jobs:
|
||||
|
||||
strategy:
|
||||
matrix:
|
||||
commit-checker: {}
|
||||
linux-amd64-clang-3.8: {}
|
||||
linux-amd64-gcc-6: {}
|
||||
linux-i386-gcc-6: {}
|
||||
commit-checker:
|
||||
Tag: 'commit-checker'
|
||||
linux-amd64-clang-3.8:
|
||||
Tag: 'linux-amd64-clang-3.8'
|
||||
linux-amd64-gcc-6:
|
||||
Tag: 'linux-amd64-gcc-6'
|
||||
linux-i386-gcc-6:
|
||||
Tag: 'linux-i386-gcc-6'
|
||||
|
||||
steps:
|
||||
- template: azure-pipelines/templates/ci-git-rebase.yml
|
||||
@@ -50,7 +54,7 @@ jobs:
|
||||
- template: azure-pipelines/templates/linux-build.yml
|
||||
parameters:
|
||||
Image: compile-farm-ci
|
||||
Tag: $(Agent.JobName)
|
||||
Tag: $(Tag)
|
||||
|
||||
- job: macos
|
||||
displayName: 'MacOS'
|
||||
|
||||
@@ -24,7 +24,7 @@ steps:
|
||||
${{ 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')))
|
||||
condition: and(succeeded(), or(not(contains(variables['Agent.JobName'], 'commit-checker')), eq(variables['Build.Reason'], 'PullRequest')))
|
||||
inputs:
|
||||
command: 'Run an image'
|
||||
imageName: openttd/${{ parameters.Image }}:${{ parameters.Tag }}
|
||||
|
||||
@@ -110,14 +110,22 @@ jobs:
|
||||
|
||||
strategy:
|
||||
matrix:
|
||||
linux-ubuntu-xenial-i386-gcc: {}
|
||||
linux-ubuntu-xenial-amd64-gcc: {}
|
||||
linux-ubuntu-bionic-i386-gcc: {}
|
||||
linux-ubuntu-bionic-amd64-gcc: {}
|
||||
linux-debian-jessie-i386-gcc: {}
|
||||
linux-debian-jessie-amd64-gcc: {}
|
||||
linux-debian-stretch-i386-gcc: {}
|
||||
linux-debian-stretch-amd64-gcc: {}
|
||||
linux-ubuntu-xenial-i386-gcc:
|
||||
Tag: 'linux-ubuntu-xenial-i386-gcc'
|
||||
linux-ubuntu-xenial-amd64-gcc:
|
||||
Tag: 'linux-ubuntu-xenial-amd64-gcc'
|
||||
linux-ubuntu-bionic-i386-gcc:
|
||||
Tag: 'linux-ubuntu-bionic-i386-gcc'
|
||||
linux-ubuntu-bionic-amd64-gcc:
|
||||
Tag: 'linux-ubuntu-bionic-amd64-gcc'
|
||||
linux-debian-jessie-i386-gcc:
|
||||
Tag: 'linux-debian-jessie-i386-gcc'
|
||||
linux-debian-jessie-amd64-gcc:
|
||||
Tag: 'linux-debian-jessie-amd64-gcc'
|
||||
linux-debian-stretch-i386-gcc:
|
||||
Tag: 'linux-debian-stretch-i386-gcc'
|
||||
linux-debian-stretch-amd64-gcc:
|
||||
Tag: 'linux-debian-stretch-amd64-gcc'
|
||||
|
||||
steps:
|
||||
- template: release-fetch-source.yml
|
||||
@@ -125,7 +133,7 @@ jobs:
|
||||
parameters:
|
||||
Image: compile-farm
|
||||
ContainerCommand: '$(Build.BuildNumber)'
|
||||
Tag: $(Agent.JobName)
|
||||
Tag: $(Tag)
|
||||
- template: linux-claim-bundles.yml
|
||||
- template: release-bundles.yml
|
||||
|
||||
|
||||
@@ -1,3 +1,54 @@
|
||||
1.9.3-RC1 (2019-09-07)
|
||||
------------------------------------------------------------------------
|
||||
- Add: Can now click industries to make orders to their neutral station (e.g. oil rig) (#7709)
|
||||
- Fix #7644: [OSX] Poor framerate on certain systems (#7721)
|
||||
- Fix #7702: Highscore screen UI scaling (#7714)
|
||||
- Fix #7704: [OSX] Handle malformed UTF8 strings, leading to crashes in server browser (#7705)
|
||||
- Fix #7188: [AI] Possible crash when reloading an AI in multiplayer games (#7701, #7725)
|
||||
- Fix: RemoveAirport function now returns 'Aircraft in the way' error message when occupied (#7690)
|
||||
- Fix: Spelling in running costs setting help text (#7686)
|
||||
- Fix #7655: 'Decrease' buttons in cheat window not working properly with UI scaling (#7669)
|
||||
- Fix: [GS] Could not create elements on Storybook pages with ID > 255 (#7657)
|
||||
- Fix #7626: Allow building road stops over town-owned one-way roads, instead of crashing (#7627)
|
||||
|
||||
|
||||
1.9.2 (2019-07-07)
|
||||
------------------------------------------------------------------------
|
||||
- Change: Set default setting in server browser of "Advertised" to "Yes" (#7568)
|
||||
- Change: Allow building road stops over self-owned one-way/blocked road (#7547)
|
||||
- Fix #7463: Promote scroll mode setting to basic category (#7586)
|
||||
- Fix: Inconsistent GUI scaling (#7539)
|
||||
- Fix #7491: Send company update admin message when bankruptcy counter changes (#7492)
|
||||
- Fix #7553: Check bounds when loading strings (#7554)
|
||||
- Fix: Really increase the maximum number of GameScript texts to 64k (#7555)
|
||||
- Fix: Crash when attempting to load old save game with GRFs set (#7546)
|
||||
- Fix #6507: Don't try to load invalid depots from older savegames (#7546)
|
||||
- Fix: Railtype bits were moved too late, leading to rails under bridges losing their type (#7546)
|
||||
- Fix: Bounds check access to railtype_map (#7529)
|
||||
- Fix: Spurious errors when using more than 32 railtypes (#7533)
|
||||
- Fix #7633: Allow zero-cost track conversion to succeed (#7634)
|
||||
- Fix #7577: Check if linkgraph station index is valid before dereferencing (#7583)
|
||||
- Fix #7224: Drag and drop vehicle group creation does not work correctly (#7581)
|
||||
- Fix #7570: Show Github URL in the crashlog window (#7571)
|
||||
- Fix: Clicking on scrollbar 'thumb' moved position up instantly (#7549)
|
||||
- Fix #7255: Prevent crashlog corruption by only printing the 32 most recent news messages (#7542)
|
||||
- Fix #5685: Check for free wagons in ScriptVehicleList (#7617)
|
||||
- Fix: Make GSGoal.QuestionClient work correctly at least for clients with ID < 2**16 (#7560)
|
||||
- Fix #6666: Mismatched parentheses in RTL languages (#7480)
|
||||
- Fix: [Windows] Various reliability and correctness improvements to MIDI on Windows (#7620)
|
||||
|
||||
|
||||
1.9.1 (2019-04-08)
|
||||
------------------------------------------------------------------------
|
||||
- Fix #6564: Enforce types of arguments for station name strings (#7419)
|
||||
- Fix #7433: Don't use AirportSpec substitute if it's not enabled (#7435)
|
||||
- Fix #7447, #7466, #7476: Missing NewGRF strings due to Action 4 feature check skipping pseudo-feature 48 (#7449)
|
||||
- Fix #6222: Advanced sprite layout sometimes showed incorrect railtype ground tile. (#7460)
|
||||
- Fix #7439: CompanyRemoveReason overwritten by ClientID (#7465)
|
||||
- Fix: [Windows] Incorrect error handling could lead to cascading error windows (#7482)
|
||||
- Fix #7478: Don't remove NewGRF objects on company take-over. (#7483)
|
||||
|
||||
|
||||
1.9.0 (2019-04-01)
|
||||
------------------------------------------------------------------------
|
||||
- Fix #7411: Use industry production callback (if used) on initial industry cargo generation (#7412)
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
OpenTTD's known bugs
|
||||
Last updated: 2019-04-01
|
||||
Release version: 1.9.0
|
||||
Last updated: 2019-09-07
|
||||
Release version: 1.9.3-RC1
|
||||
------------------------------------------------------------------------
|
||||
|
||||
|
||||
|
||||
@@ -1,3 +1,21 @@
|
||||
openttd (1.9.3~RC1-0) unstable; urgency=low
|
||||
|
||||
* New upstream release 1.9.3-RC1
|
||||
|
||||
-- OpenTTD <info@openttd.org> Sat, 07 Sep 2019 23:30:00 +0200
|
||||
|
||||
openttd (1.9.2-0) unstable; urgency=low
|
||||
|
||||
* New upstream release 1.9.2
|
||||
|
||||
-- OpenTTD <info@openttd.org> Sun, 07 Jul 2019 23:00:00 +0200
|
||||
|
||||
openttd (1.9.1-0) unstable; urgency=low
|
||||
|
||||
* New upstream release 1.9.1
|
||||
|
||||
-- OpenTTD <info@openttd.org> Mon, 08 Apr 2019 20:00:00 +0100
|
||||
|
||||
openttd (1.9.0-0) unstable; urgency=low
|
||||
|
||||
* New upstream release 1.9.0
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
@echo off
|
||||
|
||||
set OPENTTD_VERSION=1.9.0
|
||||
set OPENTTD_VERSION=1.9.3
|
||||
set OPENSFX_VERSION=0.8.0
|
||||
set NOSOUND_VERSION=0.8.0
|
||||
set OPENGFX_VERSION=1.2.0
|
||||
|
||||
@@ -17,9 +17,9 @@
|
||||
#
|
||||
|
||||
Name: openttd
|
||||
Version: 1.9
|
||||
Version: 1.9.3-RC1
|
||||
Release: 0
|
||||
%define srcver 1.9.0
|
||||
%define srcver 1.9.3-RC1
|
||||
Summary: An open source reimplementation of Chris Sawyer's Transport Tycoon Deluxe
|
||||
License: GPL-2.0
|
||||
Group: Amusements/Games/Strategy/Other
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
# Version numbers to update
|
||||
!define APPV_MAJOR 1
|
||||
!define APPV_MINOR 9
|
||||
!define APPV_MAINT 0
|
||||
!define APPV_BUILD 5
|
||||
!define APPV_EXTRA ""
|
||||
!define APPV_MAINT 3
|
||||
!define APPV_BUILD 0
|
||||
!define APPV_EXTRA "-RC1"
|
||||
|
||||
!define APPNAME "OpenTTD" ; Define application name
|
||||
!define APPVERSION "${APPV_MAJOR}.${APPV_MINOR}.${APPV_MAINT}${APPV_EXTRA}" ; Define application version
|
||||
|
||||
@@ -1284,7 +1284,7 @@ struct AIDebugWindow : public Window {
|
||||
case WID_AID_RELOAD_TOGGLE:
|
||||
if (ai_debug_company == OWNER_DEITY) break;
|
||||
/* First kill the company of the AI, then start a new one. This should start the current AI again */
|
||||
DoCommandP(0, CCA_DELETE | ai_debug_company << 16, CRR_MANUAL, CMD_COMPANY_CTRL);
|
||||
DoCommandP(0, CCA_DELETE | ai_debug_company << 16 | CRR_MANUAL << 24, 0, CMD_COMPANY_CTRL);
|
||||
DoCommandP(0, CCA_NEW_AI | ai_debug_company << 16, 0, CMD_COMPANY_CTRL);
|
||||
break;
|
||||
|
||||
|
||||
@@ -248,8 +248,9 @@ ScriptInfo *AIInstance::FindLibrary(const char *library, int version)
|
||||
* @param tile The tile on which the command was executed.
|
||||
* @param p1 p1 as given to DoCommandPInternal.
|
||||
* @param p2 p2 as given to DoCommandPInternal.
|
||||
* @param cmd cmd as given to DoCommandPInternal.
|
||||
*/
|
||||
void CcAI(const CommandCost &result, TileIndex tile, uint32 p1, uint32 p2)
|
||||
void CcAI(const CommandCost &result, TileIndex tile, uint32 p1, uint32 p2, uint32 cmd)
|
||||
{
|
||||
/*
|
||||
* The company might not exist anymore. Check for this.
|
||||
@@ -260,8 +261,9 @@ void CcAI(const CommandCost &result, TileIndex tile, uint32 p1, uint32 p2)
|
||||
const Company *c = Company::GetIfValid(_current_company);
|
||||
if (c == NULL || c->ai_instance == NULL) return;
|
||||
|
||||
c->ai_instance->DoCommandCallback(result, tile, p1, p2);
|
||||
c->ai_instance->Continue();
|
||||
if (c->ai_instance->DoCommandCallback(result, tile, p1, p2, cmd)) {
|
||||
c->ai_instance->Continue();
|
||||
}
|
||||
}
|
||||
|
||||
CommandCallback *AIInstance::GetDoCommandCallback()
|
||||
|
||||
@@ -42,7 +42,7 @@ static void ShowBuildAirportPicker(Window *parent);
|
||||
|
||||
SpriteID GetCustomAirportSprite(const AirportSpec *as, byte layout);
|
||||
|
||||
void CcBuildAirport(const CommandCost &result, TileIndex tile, uint32 p1, uint32 p2)
|
||||
void CcBuildAirport(const CommandCost &result, TileIndex tile, uint32 p1, uint32 p2, uint32 cmd)
|
||||
{
|
||||
if (result.Failed()) return;
|
||||
|
||||
|
||||
@@ -57,8 +57,9 @@ typedef GUIList<BuildBridgeData> GUIBridgeList; ///< List of bridges, used in #B
|
||||
* - p2 = (bit 0- 7) - bridge type (hi bh)
|
||||
* - p2 = (bit 8-13) - rail type or road types.
|
||||
* - p2 = (bit 15-16) - transport type.
|
||||
* @param cmd unused
|
||||
*/
|
||||
void CcBuildBridge(const CommandCost &result, TileIndex end_tile, uint32 p1, uint32 p2)
|
||||
void CcBuildBridge(const CommandCost &result, TileIndex end_tile, uint32 p1, uint32 p2, uint32 cmd)
|
||||
{
|
||||
if (result.Failed()) return;
|
||||
if (_settings_client.sound.confirm) SndPlayTileFx(SND_27_BLACKSMITH_ANVIL, end_tile);
|
||||
|
||||
@@ -370,7 +370,7 @@ struct CheatWindow : Window {
|
||||
|
||||
default:
|
||||
/* Take whatever the function returns */
|
||||
value = ce->proc(value + ((x >= 20 + SETTING_BUTTON_WIDTH / 2) ? 1 : -1), (x >= 10 + this->box_width + SETTING_BUTTON_WIDTH / 2) ? 1 : -1);
|
||||
value = ce->proc(value + ((x >= 10 + this->box_width + SETTING_BUTTON_WIDTH / 2) ? 1 : -1), (x >= 10 + this->box_width + SETTING_BUTTON_WIDTH / 2) ? 1 : -1);
|
||||
|
||||
/* The first cheat (money), doesn't return a different value. */
|
||||
if (value != oldvalue || btn == CHT_MONEY) this->clicked = btn * 2 + 1 + ((x >= 10 + this->box_width + SETTING_BUTTON_WIDTH / 2) != rtl ? 1 : 0);
|
||||
|
||||
@@ -597,7 +597,7 @@ bool DoCommandP(TileIndex tile, uint32 p1, uint32 p2, uint32 cmd, CommandCallbac
|
||||
}
|
||||
|
||||
if (!estimate_only && !only_sending && callback != NULL) {
|
||||
callback(res, tile, p1, p2);
|
||||
callback(res, tile, p1, p2, cmd);
|
||||
}
|
||||
|
||||
return res.Succeeded();
|
||||
|
||||
@@ -467,7 +467,7 @@ struct Command {
|
||||
* @param p1 Additional data of the command
|
||||
* @see CommandProc
|
||||
*/
|
||||
typedef void CommandCallback(const CommandCost &result, TileIndex tile, uint32 p1, uint32 p2);
|
||||
typedef void CommandCallback(const CommandCost &result, TileIndex tile, uint32 p1, uint32 p2, uint32 cmd);
|
||||
|
||||
/**
|
||||
* Structure for buffering the build command when selecting a station to join.
|
||||
|
||||
@@ -805,10 +805,9 @@ void CompanyAdminRemove(CompanyID company_id, CompanyRemoveReason reason)
|
||||
* @param flags operation to perform
|
||||
* @param p1 various functionality
|
||||
* - bits 0..15: CompanyCtrlAction
|
||||
* - bits 16..24: CompanyID
|
||||
* @param p2 various depending on CompanyCtrlAction
|
||||
* - bits 0..31: ClientID (with CCA_NEW)
|
||||
* - bits 0..1: CompanyRemoveReason (with CCA_DELETE)
|
||||
* - bits 16..23: CompanyID
|
||||
* - bits 24..31: CompanyRemoveReason (with CCA_DELETE)
|
||||
* @param p2 ClientID
|
||||
* @param text unused
|
||||
* @return the cost of this operation or an error
|
||||
*/
|
||||
@@ -882,7 +881,7 @@ CommandCost CmdCompanyCtrl(TileIndex tile, DoCommandFlag flags, uint32 p1, uint3
|
||||
}
|
||||
|
||||
case CCA_DELETE: { // Delete a company
|
||||
CompanyRemoveReason reason = (CompanyRemoveReason)GB(p2, 0, 2);
|
||||
CompanyRemoveReason reason = (CompanyRemoveReason)GB(p1, 24, 8);
|
||||
if (reason >= CRR_END) return CMD_ERROR;
|
||||
|
||||
Company *c = Company::GetIfValid(company_id);
|
||||
|
||||
@@ -836,7 +836,7 @@ DEF_CONSOLE_CMD(ConResetCompany)
|
||||
}
|
||||
|
||||
/* It is safe to remove this company */
|
||||
DoCommandP(0, CCA_DELETE | index << 16, CRR_MANUAL, CMD_COMPANY_CTRL);
|
||||
DoCommandP(0, CCA_DELETE | index << 16 | CRR_MANUAL << 24, 0, CMD_COMPANY_CTRL);
|
||||
IConsolePrint(CC_DEFAULT, "Company deleted.");
|
||||
|
||||
return true;
|
||||
@@ -1213,7 +1213,7 @@ DEF_CONSOLE_CMD(ConReloadAI)
|
||||
}
|
||||
|
||||
/* First kill the company of the AI, then start a new one. This should start the current AI again */
|
||||
DoCommandP(0, CCA_DELETE | company_id << 16, CRR_MANUAL, CMD_COMPANY_CTRL);
|
||||
DoCommandP(0, CCA_DELETE | company_id << 16 | CRR_MANUAL << 24, 0,CMD_COMPANY_CTRL);
|
||||
DoCommandP(0, CCA_NEW_AI | company_id << 16, 0, CMD_COMPANY_CTRL);
|
||||
IConsolePrint(CC_DEFAULT, "AI reloaded.");
|
||||
|
||||
@@ -1250,7 +1250,7 @@ DEF_CONSOLE_CMD(ConStopAI)
|
||||
}
|
||||
|
||||
/* Now kill the company of the AI. */
|
||||
DoCommandP(0, CCA_DELETE | company_id << 16, CRR_MANUAL, CMD_COMPANY_CTRL);
|
||||
DoCommandP(0, CCA_DELETE | company_id << 16 | CRR_MANUAL << 24, 0, CMD_COMPANY_CTRL);
|
||||
IConsolePrint(CC_DEFAULT, "AI stopped, company deleted.");
|
||||
|
||||
return true;
|
||||
|
||||
@@ -12,18 +12,20 @@
|
||||
#ifndef ENUM_TYPE_HPP
|
||||
#define ENUM_TYPE_HPP
|
||||
|
||||
#include <type_traits>
|
||||
|
||||
/** Some enums need to have allowed incrementing (i.e. StationClassID) */
|
||||
#define DECLARE_POSTFIX_INCREMENT(type) \
|
||||
inline type operator ++(type& e, int) \
|
||||
#define DECLARE_POSTFIX_INCREMENT(enum_type) \
|
||||
inline enum_type operator ++(enum_type& e, int) \
|
||||
{ \
|
||||
type e_org = e; \
|
||||
e = (type)((int)e + 1); \
|
||||
enum_type e_org = e; \
|
||||
e = (enum_type)((std::underlying_type<enum_type>::type)e + 1); \
|
||||
return e_org; \
|
||||
} \
|
||||
inline type operator --(type& e, int) \
|
||||
inline enum_type operator --(enum_type& e, int) \
|
||||
{ \
|
||||
type e_org = e; \
|
||||
e = (type)((int)e - 1); \
|
||||
enum_type e_org = e; \
|
||||
e = (enum_type)((std::underlying_type<enum_type>::type)e - 1); \
|
||||
return e_org; \
|
||||
}
|
||||
|
||||
@@ -31,13 +33,13 @@
|
||||
|
||||
/** Operators to allow to work with enum as with type safe bit set in C++ */
|
||||
# define DECLARE_ENUM_AS_BIT_SET(mask_t) \
|
||||
inline mask_t operator | (mask_t m1, mask_t m2) {return (mask_t)((int)m1 | m2);} \
|
||||
inline mask_t operator & (mask_t m1, mask_t m2) {return (mask_t)((int)m1 & m2);} \
|
||||
inline mask_t operator ^ (mask_t m1, mask_t m2) {return (mask_t)((int)m1 ^ m2);} \
|
||||
inline mask_t operator | (mask_t m1, mask_t m2) {return (mask_t)((std::underlying_type<mask_t>::type)m1 | m2);} \
|
||||
inline mask_t operator & (mask_t m1, mask_t m2) {return (mask_t)((std::underlying_type<mask_t>::type)m1 & m2);} \
|
||||
inline mask_t operator ^ (mask_t m1, mask_t m2) {return (mask_t)((std::underlying_type<mask_t>::type)m1 ^ m2);} \
|
||||
inline mask_t& operator |= (mask_t& m1, mask_t m2) {m1 = m1 | m2; return m1;} \
|
||||
inline mask_t& operator &= (mask_t& m1, mask_t m2) {m1 = m1 & m2; return m1;} \
|
||||
inline mask_t& operator ^= (mask_t& m1, mask_t m2) {m1 = m1 ^ m2; return m1;} \
|
||||
inline mask_t operator ~(mask_t m) {return (mask_t)(~(int)m);}
|
||||
inline mask_t operator ~(mask_t m) {return (mask_t)(~(std::underlying_type<mask_t>::type)m);}
|
||||
|
||||
|
||||
/**
|
||||
|
||||
@@ -303,7 +303,7 @@ char *CrashLog::LogGamelog(char *buffer, const char *last) const
|
||||
}
|
||||
|
||||
/**
|
||||
* Writes any recent news messages to the buffer.
|
||||
* Writes up to 32 recent news messages to the buffer, with the most recent first.
|
||||
* @param buffer The begin where to write at.
|
||||
* @param last The last position in the buffer to write to.
|
||||
* @return the position of the \c '\0' character after the buffer.
|
||||
@@ -312,7 +312,8 @@ char *CrashLog::LogRecentNews(char *buffer, const char *last) const
|
||||
{
|
||||
buffer += seprintf(buffer, last, "Recent news messages:\n");
|
||||
|
||||
for (NewsItem *news = _oldest_news; news != NULL; news = news->next) {
|
||||
int i = 0;
|
||||
for (NewsItem *news = _latest_news; i < 32 && news != NULL; news = news->prev, i++) {
|
||||
YearMonthDay ymd;
|
||||
ConvertDateToYMD(news->date, &ymd);
|
||||
buffer += seprintf(buffer, last, "(%i-%02i-%02i) StringID: %u, Type: %u, Ref1: %u, %u, Ref2: %u, %u\n",
|
||||
|
||||
@@ -117,8 +117,9 @@ extern void DepotSortList(VehicleList *list);
|
||||
* @param tile unused
|
||||
* @param p1 unused
|
||||
* @param p2 unused
|
||||
* @param cmd unused
|
||||
*/
|
||||
void CcCloneVehicle(const CommandCost &result, TileIndex tile, uint32 p1, uint32 p2)
|
||||
void CcCloneVehicle(const CommandCost &result, TileIndex tile, uint32 p1, uint32 p2, uint32 cmd)
|
||||
{
|
||||
if (result.Failed()) return;
|
||||
|
||||
|
||||
@@ -40,7 +40,7 @@ static void ShowBuildDocksDepotPicker(Window *parent);
|
||||
|
||||
static Axis _ship_depot_direction;
|
||||
|
||||
void CcBuildDocks(const CommandCost &result, TileIndex tile, uint32 p1, uint32 p2)
|
||||
void CcBuildDocks(const CommandCost &result, TileIndex tile, uint32 p1, uint32 p2, uint32 cmd)
|
||||
{
|
||||
if (result.Failed()) return;
|
||||
|
||||
@@ -48,7 +48,7 @@ void CcBuildDocks(const CommandCost &result, TileIndex tile, uint32 p1, uint32 p
|
||||
if (!_settings_client.gui.persistent_buildingtools) ResetObjectToPlace();
|
||||
}
|
||||
|
||||
void CcPlaySound_SPLAT_WATER(const CommandCost &result, TileIndex tile, uint32 p1, uint32 p2)
|
||||
void CcPlaySound_SPLAT_WATER(const CommandCost &result, TileIndex tile, uint32 p1, uint32 p2, uint32 cmd)
|
||||
{
|
||||
if (result.Succeeded() && _settings_client.sound.confirm) SndPlayTileFx(SND_02_SPLAT_WATER, tile);
|
||||
}
|
||||
|
||||
@@ -572,8 +572,10 @@ static void CompanyCheckBankrupt(Company *c)
|
||||
{
|
||||
/* If the company has money again, it does not go bankrupt */
|
||||
if (c->money - c->current_loan >= -_economy.max_loan) {
|
||||
int previous_months_of_bankruptcy = CeilDiv(c->months_of_bankruptcy, 3);
|
||||
c->months_of_bankruptcy = 0;
|
||||
c->bankrupt_asked = 0;
|
||||
if (previous_months_of_bankruptcy != 0) CompanyAdminUpdate(c);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -642,10 +644,15 @@ static void CompanyCheckBankrupt(Company *c)
|
||||
* that changing the current company is okay. In case of single
|
||||
* player we are sure (the above check) that we are not the local
|
||||
* company and thus we won't be moved. */
|
||||
if (!_networking || _network_server) DoCommandP(0, CCA_DELETE | (c->index << 16), CRR_BANKRUPT, CMD_COMPANY_CTRL);
|
||||
if (!_networking || _network_server) {
|
||||
DoCommandP(0, CCA_DELETE | (c->index << 16) | (CRR_BANKRUPT << 24), 0, CMD_COMPANY_CTRL);
|
||||
return;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (CeilDiv(c->months_of_bankruptcy, 3) != CeilDiv(c->months_of_bankruptcy - 1, 3)) CompanyAdminUpdate(c);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -255,11 +255,13 @@ void GameInstance::Died()
|
||||
* @param tile The tile on which the command was executed.
|
||||
* @param p1 p1 as given to DoCommandPInternal.
|
||||
* @param p2 p2 as given to DoCommandPInternal.
|
||||
* @param cmd cmd as given to DoCommandPInternal.
|
||||
*/
|
||||
void CcGame(const CommandCost &result, TileIndex tile, uint32 p1, uint32 p2)
|
||||
void CcGame(const CommandCost &result, TileIndex tile, uint32 p1, uint32 p2, uint32 cmd)
|
||||
{
|
||||
Game::GetGameInstance()->DoCommandCallback(result, tile, p1, p2);
|
||||
Game::GetGameInstance()->Continue();
|
||||
if (Game::GetGameInstance()->DoCommandCallback(result, tile, p1, p2, cmd)) {
|
||||
Game::GetGameInstance()->Continue();
|
||||
}
|
||||
}
|
||||
|
||||
CommandCallback *GameInstance::GetDoCommandCallback()
|
||||
|
||||
@@ -308,7 +308,7 @@ GameStrings *LoadTranslations()
|
||||
/** Compile the language. */
|
||||
void GameStrings::Compile()
|
||||
{
|
||||
StringData data(1);
|
||||
StringData data(32);
|
||||
StringListReader master_reader(data, this->raw_strings[0], true, false);
|
||||
master_reader.ParseFile();
|
||||
if (_errors != 0) throw std::exception();
|
||||
|
||||
@@ -208,7 +208,7 @@ public:
|
||||
LEErrorCode status = LE_NO_ERROR;
|
||||
/* ParagraphLayout does not copy "buff", so it must stay valid.
|
||||
* "runs" is copied according to the ICU source, but the documentation does not specify anything, so this might break somewhen. */
|
||||
icu::ParagraphLayout *p = new icu::ParagraphLayout(buff, length, &runs, NULL, NULL, NULL, _current_text_dir == TD_RTL ? UBIDI_DEFAULT_RTL : UBIDI_DEFAULT_LTR, false, status);
|
||||
icu::ParagraphLayout *p = new icu::ParagraphLayout(buff, length, &runs, NULL, NULL, NULL, _current_text_dir == TD_RTL ? 1 : 0, false, status);
|
||||
if (status != LE_NO_ERROR) {
|
||||
delete p;
|
||||
return NULL;
|
||||
|
||||
27
src/goal.cpp
27
src/goal.cpp
@@ -236,10 +236,11 @@ CommandCost CmdSetGoalCompleted(TileIndex tile, DoCommandFlag flags, uint32 p1,
|
||||
* @param flags type of operation
|
||||
* @param p1 various bitstuffed elements
|
||||
* - p1 = (bit 0 - 15) - Unique ID to use for this question.
|
||||
* - p1 = (bit 16 - 23) - Company or client for which this question is.
|
||||
* - p1 = (bit 24 - 25) - Question type.
|
||||
* - p1 = (bit 31) - Question target: 0 - company, 1 - client.
|
||||
* @param p2 Buttons of the question.
|
||||
* - p1 = (bit 16 - 31) - Company or client for which this question is.
|
||||
* @param p2 various bitstuffed elements
|
||||
* - p2 = (bit 0 - 17) - Buttons of the question.
|
||||
* - p2 = (bit 29 - 30) - Question type.
|
||||
* - p2 = (bit 31) - Question target: 0 - company, 1 - client.
|
||||
* @param text Text of the question.
|
||||
* @return the cost of this operation or an error
|
||||
*/
|
||||
@@ -248,36 +249,38 @@ CommandCost CmdGoalQuestion(TileIndex tile, DoCommandFlag flags, uint32 p1, uint
|
||||
uint16 uniqueid = (GoalType)GB(p1, 0, 16);
|
||||
CompanyID company = (CompanyID)GB(p1, 16, 8);
|
||||
#ifdef ENABLE_NETWORK
|
||||
ClientIndex client = (ClientIndex)GB(p1, 16, 8);
|
||||
ClientID client = (ClientID)GB(p1, 16, 16);
|
||||
#endif
|
||||
byte type = GB(p1, 24, 2);
|
||||
bool is_client = HasBit(p1, 31);
|
||||
|
||||
assert_compile(GOAL_QUESTION_BUTTON_COUNT < 29);
|
||||
uint32 button_mask = GB(p2, 0, GOAL_QUESTION_BUTTON_COUNT);
|
||||
byte type = GB(p2, 29, 2);
|
||||
bool is_client = HasBit(p2, 31);
|
||||
|
||||
if (_current_company != OWNER_DEITY) return CMD_ERROR;
|
||||
if (StrEmpty(text)) return CMD_ERROR;
|
||||
if (is_client) {
|
||||
#ifdef ENABLE_NETWORK
|
||||
if (!NetworkClientInfo::IsValidID(client)) return CMD_ERROR;
|
||||
if (NetworkClientInfo::GetByClientID(client) == nullptr) return CMD_ERROR;
|
||||
#else
|
||||
return CMD_ERROR;
|
||||
#endif
|
||||
} else {
|
||||
if (company != INVALID_COMPANY && !Company::IsValidID(company)) return CMD_ERROR;
|
||||
}
|
||||
if (CountBits(p2) < 1 || CountBits(p2) > 3) return CMD_ERROR;
|
||||
if (p2 >= (1 << GOAL_QUESTION_BUTTON_COUNT)) return CMD_ERROR;
|
||||
if (CountBits(button_mask) < 1 || CountBits(button_mask) > 3) return CMD_ERROR;
|
||||
if (type >= GOAL_QUESTION_TYPE_COUNT) return CMD_ERROR;
|
||||
|
||||
if (flags & DC_EXEC) {
|
||||
if (is_client) {
|
||||
#ifdef ENABLE_NETWORK
|
||||
if (NetworkClientInfo::Get(client)->client_id != _network_own_client_id) return CommandCost();
|
||||
if (client != _network_own_client_id) return CommandCost();
|
||||
#endif
|
||||
} else {
|
||||
if (company == INVALID_COMPANY && !Company::IsValidID(_local_company)) return CommandCost();
|
||||
if (company != INVALID_COMPANY && company != _local_company) return CommandCost();
|
||||
}
|
||||
ShowGoalQuestion(uniqueid, type, p2, text);
|
||||
ShowGoalQuestion(uniqueid, type, button_mask, text);
|
||||
}
|
||||
|
||||
return CommandCost();
|
||||
|
||||
@@ -536,7 +536,7 @@ CommandCost CmdAddVehicleGroup(TileIndex tile, DoCommandFlag flags, uint32 p1, u
|
||||
|
||||
if (new_g == NEW_GROUP) {
|
||||
/* Create new group. */
|
||||
CommandCost ret = CmdCreateGroup(0, flags, v->type, 0, NULL);
|
||||
CommandCost ret = CmdCreateGroup(0, flags, v->type, INVALID_GROUP, NULL);
|
||||
if (ret.Failed()) return ret;
|
||||
|
||||
new_g = _new_group_id;
|
||||
|
||||
@@ -989,9 +989,10 @@ static inline VehicleGroupWindow *FindVehicleGroupWindow(VehicleType vt, Owner o
|
||||
* @param tile Unused.
|
||||
* @param p1 Vehicle type.
|
||||
* @param p2 Unused.
|
||||
* @param cmd Unused.
|
||||
* @see CmdCreateGroup
|
||||
*/
|
||||
void CcCreateGroup(const CommandCost &result, TileIndex tile, uint32 p1, uint32 p2)
|
||||
void CcCreateGroup(const CommandCost &result, TileIndex tile, uint32 p1, uint32 p2, uint32 cmd)
|
||||
{
|
||||
if (result.Failed()) return;
|
||||
assert(p1 <= VEH_AIRCRAFT);
|
||||
@@ -1006,13 +1007,14 @@ void CcCreateGroup(const CommandCost &result, TileIndex tile, uint32 p1, uint32
|
||||
* @param tile Unused.
|
||||
* @param p1 Unused.
|
||||
* @param p2 Bit 0-19: Vehicle ID.
|
||||
* @param cmd Unused.
|
||||
*/
|
||||
void CcAddVehicleNewGroup(const CommandCost &result, TileIndex tile, uint32 p1, uint32 p2)
|
||||
void CcAddVehicleNewGroup(const CommandCost &result, TileIndex tile, uint32 p1, uint32 p2, uint32 cmd)
|
||||
{
|
||||
if (result.Failed()) return;
|
||||
assert(Vehicle::IsValidID(GB(p2, 0, 20)));
|
||||
|
||||
CcCreateGroup(result, 0, Vehicle::Get(GB(p2, 0, 20))->type, 0);
|
||||
CcCreateGroup(result, 0, Vehicle::Get(GB(p2, 0, 20))->type, 0, cmd);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -22,6 +22,7 @@
|
||||
#include "company_base.h"
|
||||
#include "strings_func.h"
|
||||
#include "hotkeys.h"
|
||||
#include "zoom_func.h"
|
||||
|
||||
#include "widgets/highscore_widget.h"
|
||||
|
||||
@@ -132,7 +133,7 @@ struct EndGameWindow : EndGameHighScoreBaseWindow {
|
||||
virtual void OnPaint()
|
||||
{
|
||||
this->SetupHighScoreEndWindow();
|
||||
Point pt = this->GetTopLeft(640, 480);
|
||||
Point pt = this->GetTopLeft(ScaleGUITrad(640), ScaleGUITrad(480));
|
||||
|
||||
const Company *c = Company::GetIfValid(_local_company);
|
||||
if (c == NULL) return;
|
||||
@@ -143,11 +144,11 @@ struct EndGameWindow : EndGameHighScoreBaseWindow {
|
||||
SetDParam(0, c->index);
|
||||
SetDParam(1, c->index);
|
||||
SetDParam(2, EndGameGetPerformanceTitleFromValue(c->old_economy[0].performance_history));
|
||||
DrawStringMultiLine(pt.x + 15, pt.x + 640 - 25, pt.y + 90, pt.y + 160, STR_HIGHSCORE_PRESIDENT_OF_COMPANY_ACHIEVES_STATUS, TC_FROMSTRING, SA_CENTER);
|
||||
DrawStringMultiLine(pt.x + ScaleGUITrad(15), pt.x + ScaleGUITrad(640) - ScaleGUITrad(25), pt.y + ScaleGUITrad(90), pt.y + ScaleGUITrad(160), STR_HIGHSCORE_PRESIDENT_OF_COMPANY_ACHIEVES_STATUS, TC_FROMSTRING, SA_CENTER);
|
||||
} else {
|
||||
SetDParam(0, c->index);
|
||||
SetDParam(1, EndGameGetPerformanceTitleFromValue(c->old_economy[0].performance_history));
|
||||
DrawStringMultiLine(pt.x + 36, pt.x + 640, pt.y + 140, pt.y + 206, STR_HIGHSCORE_COMPANY_ACHIEVES_STATUS, TC_FROMSTRING, SA_CENTER);
|
||||
DrawStringMultiLine(pt.x + ScaleGUITrad(36), pt.x + ScaleGUITrad(640), pt.y + ScaleGUITrad(140), pt.y + ScaleGUITrad(206), STR_HIGHSCORE_COMPANY_ACHIEVES_STATUS, TC_FROMSTRING, SA_CENTER);
|
||||
}
|
||||
}
|
||||
};
|
||||
@@ -182,24 +183,24 @@ struct HighScoreWindow : EndGameHighScoreBaseWindow {
|
||||
const HighScore *hs = _highscore_table[this->window_number];
|
||||
|
||||
this->SetupHighScoreEndWindow();
|
||||
Point pt = this->GetTopLeft(640, 480);
|
||||
Point pt = this->GetTopLeft(ScaleGUITrad(640), ScaleGUITrad(480));
|
||||
|
||||
SetDParam(0, ORIGINAL_END_YEAR);
|
||||
DrawStringMultiLine(pt.x + 70, pt.x + 570, pt.y, pt.y + 140, !_networking ? STR_HIGHSCORE_TOP_COMPANIES_WHO_REACHED : STR_HIGHSCORE_TOP_COMPANIES_NETWORK_GAME, TC_FROMSTRING, SA_CENTER);
|
||||
DrawStringMultiLine(pt.x + ScaleGUITrad(70), pt.x + ScaleGUITrad(570), pt.y, pt.y + ScaleGUITrad(140), !_networking ? STR_HIGHSCORE_TOP_COMPANIES_WHO_REACHED : STR_HIGHSCORE_TOP_COMPANIES_NETWORK_GAME, TC_FROMSTRING, SA_CENTER);
|
||||
|
||||
/* Draw Highscore peepz */
|
||||
for (uint8 i = 0; i < lengthof(_highscore_table[0]); i++) {
|
||||
SetDParam(0, i + 1);
|
||||
DrawString(pt.x + 40, pt.x + 600, pt.y + 140 + (i * 55), STR_HIGHSCORE_POSITION);
|
||||
DrawString(pt.x + ScaleGUITrad(40), pt.x + ScaleGUITrad(600), pt.y + ScaleGUITrad(140 + i * 55), STR_HIGHSCORE_POSITION);
|
||||
|
||||
if (hs[i].company[0] != '\0') {
|
||||
TextColour colour = (this->rank == i) ? TC_RED : TC_BLACK; // draw new highscore in red
|
||||
|
||||
SetDParamStr(0, hs[i].company);
|
||||
DrawString(pt.x + 71, pt.x + 569, pt.y + 140 + (i * 55), STR_JUST_BIG_RAW_STRING, colour);
|
||||
DrawString(pt.x + ScaleGUITrad(71), pt.x + ScaleGUITrad(569), pt.y + ScaleGUITrad(140 + i * 55), STR_JUST_BIG_RAW_STRING, colour);
|
||||
SetDParam(0, hs[i].title);
|
||||
SetDParam(1, hs[i].score);
|
||||
DrawString(pt.x + 71, pt.x + 569, pt.y + 140 + FONT_HEIGHT_LARGE + (i * 55), STR_HIGHSCORE_STATS, colour);
|
||||
DrawString(pt.x + ScaleGUITrad(71), pt.x + ScaleGUITrad(569), pt.y + ScaleGUITrad(140) + FONT_HEIGHT_LARGE + ScaleGUITrad(i * 55), STR_HIGHSCORE_STATS, colour);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -222,8 +222,9 @@ void SortIndustryTypes()
|
||||
* @param tile Tile where the industry is placed.
|
||||
* @param p1 Additional data of the #CMD_BUILD_INDUSTRY command.
|
||||
* @param p2 Additional data of the #CMD_BUILD_INDUSTRY command.
|
||||
* @param cmd Unused.
|
||||
*/
|
||||
void CcBuildIndustry(const CommandCost &result, TileIndex tile, uint32 p1, uint32 p2)
|
||||
void CcBuildIndustry(const CommandCost &result, TileIndex tile, uint32 p1, uint32 p2, uint32 cmd)
|
||||
{
|
||||
if (result.Succeeded()) return;
|
||||
|
||||
|
||||
@@ -282,7 +282,7 @@ STR_SORT_BY_TIMETABLE_DELAY :تاخير جد
|
||||
STR_SORT_BY_FACILITY :نوع المحطة
|
||||
STR_SORT_BY_RATING_MAX :اعلى نسبة شحن
|
||||
STR_SORT_BY_RATING_MIN :اقل نسبة شحن
|
||||
STR_SORT_BY_ENGINE_ID :نوع المحرك (قياسي(
|
||||
STR_SORT_BY_ENGINE_ID :نوع المحرك (قياسي)
|
||||
STR_SORT_BY_COST :التكلفة
|
||||
STR_SORT_BY_POWER :الطاقة
|
||||
STR_SORT_BY_TRACTIVE_EFFORT :قوة الجذب
|
||||
@@ -1147,7 +1147,7 @@ STR_CONFIG_SETTING_INDUSTRY_DENSITY :الكثافة
|
||||
STR_CONFIG_SETTING_INDUSTRY_DENSITY_HELPTEXT :إختر مقدار الصناعات التي يجب تكوينها وعلى اي مستوى يجب ان تكون خلال اللعبة
|
||||
STR_CONFIG_SETTING_SNOWLINE_HEIGHT :ارتفاع خط الثلج: {STRING}
|
||||
STR_CONFIG_SETTING_SNOWLINE_HEIGHT_HELPTEXT :تحكم على اي ارتفاع يبدأ نزول الثلج في المناطق القطبية,تؤثر الثلوج على مستوى تطور القطاع الصناعي ونمو المدن
|
||||
STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN :خشونة التضاريس (صفر التكوين فقط ) :({STRING}
|
||||
STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN :خشونة التضاريس: {STRING}
|
||||
STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_HELPTEXT :(TerraGenesis only)إختر تكرار الهضبات: الاراض المستويه تحتوي على البضع منها,هضبات موزعه عرضيا اكثر,الاراض الوعرة تحتوي الكثير من الهضاب,التي من الممكن ان تكون متكررة
|
||||
STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_SMOOTH :ناعم جدا
|
||||
STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_SMOOTH :ناعم
|
||||
@@ -1946,7 +1946,7 @@ STR_RAIL_TOOLBAR_MAGLEV_CONSTRUCTION_CAPTION :بناء الس
|
||||
|
||||
STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TRACK :{BLACK}بناء سكة حديد
|
||||
STR_RAIL_TOOLBAR_TOOLTIP_BUILD_AUTORAIL :{BLACK}بناء سكة القطار باستخدام البناء التلقائي
|
||||
STR_RAIL_TOOLBAR_TOOLTIP_BUILD_TRAIN_DEPOT_FOR_BUILDING :{BLACK}بناء ورشة قطارات (لصيانة و شراء القطارات).
|
||||
STR_RAIL_TOOLBAR_TOOLTIP_BUILD_TRAIN_DEPOT_FOR_BUILDING :{BLACK}بناء ورشة قطارات (لصيانة و شراء القطارات)
|
||||
STR_RAIL_TOOLBAR_TOOLTIP_CONVERT_RAIL_TO_WAYPOINT :{BLACK}غير السكة الى نقطة عبور
|
||||
STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_STATION :{BLACK}بناء محطة قطار. مفتاح كنترول يسمح بضم المحطات
|
||||
STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_SIGNALS :{BLACK}بناء إشارات السكك الحديدية.
|
||||
@@ -2028,7 +2028,7 @@ STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_SECTION :{BLACK}بناء
|
||||
STR_ROAD_TOOLBAR_TOOLTIP_BUILD_AUTOROAD :{BLACK}بناء الطرق باستخدام النظام الآلي
|
||||
STR_ROAD_TOOLBAR_TOOLTIP_BUILD_AUTOTRAM :{BLACK}بناء سكة القطار باستخدام النظام الآلي
|
||||
STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_VEHICLE_DEPOT :{BLACK}بناء ورشة صيانة لعربات الطرق (لشراء و صيانة العربات).
|
||||
STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAM_VEHICLE_DEPOT :{BLACK}بناء ورشة لصيانة عربات الترام (لشراء و صيانة عربات الترام).
|
||||
STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAM_VEHICLE_DEPOT :{BLACK}بناء ورشة لصيانة عربات الترام (لشراء و صيانة عربات الترام)
|
||||
STR_ROAD_TOOLBAR_TOOLTIP_BUILD_BUS_STATION :{BLACK}بناء محطة باصات
|
||||
STR_ROAD_TOOLBAR_TOOLTIP_BUILD_PASSENGER_TRAM_STATION :{BLACK}بناء محطة ركاب ترام.
|
||||
STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRUCK_LOADING_BAY :{BLACK}بناء محطة تحميل عربات. مفتاح كنترول يسمح بمجاورة المحطات.
|
||||
@@ -2590,7 +2590,8 @@ STR_EDIT_SIGN_SIGN_OSKTITLE :{BLACK}ادخل
|
||||
# Town directory window
|
||||
STR_TOWN_DIRECTORY_CAPTION :{WHITE}مدن/ بلدات
|
||||
STR_TOWN_DIRECTORY_NONE :{ORANGE}-بدون-
|
||||
STR_TOWN_DIRECTORY_TOWN :{ORANGE}{TOWN}{BLACK} ) {COMMA})
|
||||
STR_TOWN_DIRECTORY_TOWN :{ORANGE}{RLE}{TOWN}{BLACK} {RLM}({COMMA})
|
||||
STR_TOWN_DIRECTORY_CITY :{ORANGE}{RLE}{TOWN}{YELLOW} (مدينة){BLACK} {RLM}({COMMA})
|
||||
STR_TOWN_DIRECTORY_LIST_TOOLTIP :{BLACK}اسم المدينة - اضغط على الاسم لتوسيط الشاشة عليها. اضغط + كنترول لفتح شاشة عرض جديدة للضاحية.
|
||||
STR_TOWN_POPULATION :{BLACK}سكان العالم: {COMMA}
|
||||
|
||||
@@ -2678,7 +2679,7 @@ STR_STATION_LIST_STATION :{YELLOW}{STATIO
|
||||
STR_STATION_LIST_WAYPOINT :{YELLOW}{WAYPOINT}
|
||||
STR_STATION_LIST_NONE :{YELLOW}- بدون -
|
||||
STR_STATION_LIST_SELECT_ALL_FACILITIES :{BLACK}اختر جميع المرافق
|
||||
STR_STATION_LIST_SELECT_ALL_TYPES :{BLACK}اختر كل انواع الشحن (حتى غير المنتظرة(
|
||||
STR_STATION_LIST_SELECT_ALL_TYPES :{BLACK}اختر كل انواع الشحن (حتى غير المنتظرة)
|
||||
STR_STATION_LIST_NO_WAITING_CARGO :{BLACK}لا يوجد اي شحنة منتظرة
|
||||
|
||||
# Station view window
|
||||
@@ -2897,7 +2898,7 @@ STR_PURCHASE_INFO_SPEED_OCEAN :{BLACK}السر
|
||||
STR_PURCHASE_INFO_SPEED_CANAL :{BLACK}السرعة في القناة/النهر: {GOLD}{VELOCITY}
|
||||
STR_PURCHASE_INFO_RUNNINGCOST :{BLACK}تكلفة التشغيل: {GOLD}{CURRENCY_LONG}/ سنة
|
||||
STR_PURCHASE_INFO_CAPACITY :{BLACK}السعة: {GOLD}{CARGO_LONG} {STRING}
|
||||
STR_PURCHASE_INFO_REFITTABLE :)قابل لتغيير(
|
||||
STR_PURCHASE_INFO_REFITTABLE :(قابل لتغيي)
|
||||
STR_PURCHASE_INFO_DESIGNED_LIFE :{BLACK}تصميم: {GOLD}{NUM}{BLACK} العمر الافتراضي: {GOLD}{COMMA} سنة
|
||||
STR_PURCHASE_INFO_RELIABILITY :{BLACK}الاعتمادية القصوى: {GOLD}{COMMA}%
|
||||
STR_PURCHASE_INFO_COST :{BLACK}التكلفة: {GOLD}{CURRENCY_LONG}
|
||||
@@ -3193,7 +3194,7 @@ STR_VEHICLE_DETAILS_TRAIN_TOTAL_CARGO_TOOLTIP :{BLACK} عرض
|
||||
STR_VEHICLE_DETAILS_TRAIN_ARTICULATED_RV_CAPACITY :{BLACK}السعة: {LTBLUE}
|
||||
|
||||
# Vehicle refit
|
||||
STR_REFIT_CAPTION :{WHITE}{VEHICLE} )تغيير(
|
||||
STR_REFIT_CAPTION :{WHITE}{VEHICLE} (تغيير)
|
||||
STR_REFIT_TITLE :{GOLD}اختر نوع الحمولة ...
|
||||
STR_REFIT_NEW_CAPACITY_COST_OF_REFIT :{BLACK}السعة الجديدة: {GOLD}{CARGO_LONG}{}{BLACK}تكلفة التغيير: {RED}{CURRENCY_LONG}
|
||||
STR_REFIT_NEW_CAPACITY_COST_OF_AIRCRAFT_REFIT :{BLACK}السعة الجديدة: {GOLD}{CARGO_LONG}, {GOLD}{CARGO_LONG}{}{BLACK}تكلفة اعادة التهيئة: {RED}{CURRENCY_LONG}
|
||||
@@ -3415,7 +3416,7 @@ STR_TIMETABLE_RESET_LATENESS :{BLACK}اعد
|
||||
STR_TIMETABLE_RESET_LATENESS_TOOLTIP :{BLACK}عدل وقت التاخير للعداد حتى تصل المركبة في الوقت المحدد
|
||||
|
||||
STR_TIMETABLE_AUTOFILL :{BLACK}تهيئة تلقائية
|
||||
STR_TIMETABLE_AUTOFILL_TOOLTIP :{BLACK}املأ الجدولة تلقائيا بقيم الرحلة التالية (مفتاح كنترول لمحاولة ابقائ وقت الانتظار).
|
||||
STR_TIMETABLE_AUTOFILL_TOOLTIP :{BLACK}مفتاح كنترول لمحاولة ابقائ وقت الانتظار (املأ الجدولة تلقائيا بقيم الرحلة التالية)
|
||||
|
||||
STR_TIMETABLE_EXPECTED :{BLACK}متوقع
|
||||
STR_TIMETABLE_SCHEDULED :{BLACK}مجدول
|
||||
|
||||
@@ -4586,7 +4586,6 @@ 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}... на прахадных прыпынках нельга рабіць скрыжаваньнi
|
||||
STR_ERROR_DRIVE_THROUGH_ON_ONEWAY_ROAD :{WHITE}... дарога аднабаковая ці заблакавана
|
||||
|
||||
# Station destruction related errors
|
||||
STR_ERROR_CAN_T_REMOVE_PART_OF_STATION :{WHITE}Немагчыма выдаліць частку станцыi...
|
||||
|
||||
@@ -4276,7 +4276,6 @@ STR_ERROR_DRIVE_THROUGH_ON_TOWN_ROAD :{WHITE}... é u
|
||||
STR_ERROR_DRIVE_THROUGH_DIRECTION :{WHITE}... rua na direção errada
|
||||
STR_ERROR_DRIVE_THROUGH_CORNER :{WHITE}... paradas "drive-thru" não podem ter esquinas
|
||||
STR_ERROR_DRIVE_THROUGH_JUNCTION :{WHITE}... paradas "drive-thru" não podem ter junções
|
||||
STR_ERROR_DRIVE_THROUGH_ON_ONEWAY_ROAD :{WHITE}... rua é mão única ou está bloqueada
|
||||
|
||||
# Station destruction related errors
|
||||
STR_ERROR_CAN_T_REMOVE_PART_OF_STATION :{WHITE}Impossível remover parte da estação...
|
||||
|
||||
@@ -191,6 +191,7 @@ STR_COLOUR_ORANGE :Оранжев
|
||||
STR_COLOUR_BROWN :Кафяво
|
||||
STR_COLOUR_GREY :Сиво
|
||||
STR_COLOUR_WHITE :Бяло
|
||||
STR_COLOUR_DEFAULT :По подразбиране
|
||||
|
||||
# Units used in OpenTTD
|
||||
STR_UNITS_VELOCITY_IMPERIAL :{COMMA} мил{P я и}/ч
|
||||
@@ -462,6 +463,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
|
||||
@@ -473,6 +475,7 @@ STR_ABOUT_MENU_SCREENSHOT :Screenshot
|
||||
STR_ABOUT_MENU_ZOOMIN_SCREENSHOT :Напълно увеличен в кадъра.
|
||||
STR_ABOUT_MENU_DEFAULTZOOM_SCREENSHOT :Увеличение по подразбиране
|
||||
STR_ABOUT_MENU_GIANT_SCREENSHOT :Огромен Screenshot
|
||||
STR_ABOUT_MENU_SHOW_FRAMERATE :Показване на честотата на кадрите
|
||||
STR_ABOUT_MENU_ABOUT_OPENTTD :Относно 'OpenTTD'
|
||||
STR_ABOUT_MENU_SPRITE_ALIGNER :Подравнител на спрайтове
|
||||
STR_ABOUT_MENU_TOGGLE_BOUNDING_BOXES :Активиране слепване на прозорците
|
||||
@@ -704,11 +707,13 @@ STR_SMALLMAP_TYPE_OWNERS :Собстве
|
||||
STR_SMALLMAP_TOOLTIP_SHOW_LAND_CONTOURS_ON_MAP :{BLACK}Покажи земните контури на картата
|
||||
STR_SMALLMAP_TOOLTIP_SHOW_VEHICLES_ON_MAP :{BLACK}Покажи превозните средства
|
||||
STR_SMALLMAP_TOOLTIP_SHOW_INDUSTRIES_ON_MAP :{BLACK}Покажи индустриите на картата
|
||||
STR_SMALLMAP_TOOLTIP_SHOW_LINK_STATS_ON_MAP :{BLACK}Покажи на картата потока на товарите
|
||||
STR_SMALLMAP_TOOLTIP_SHOW_TRANSPORT_ROUTES_ON :{BLACK}Покажи транспортните маршрути на картата
|
||||
STR_SMALLMAP_TOOLTIP_SHOW_VEGETATION_ON_MAP :{BLACK}Покажи растителността на картата
|
||||
STR_SMALLMAP_TOOLTIP_SHOW_LAND_OWNERS_ON_MAP :{BLACK}Покажи собствениците на земя на картата
|
||||
STR_SMALLMAP_TOOLTIP_INDUSTRY_SELECTION :{BLACK}Натисни върху вид индустрия за превключване на показването.Click on an industry type to toggle displaying it. Ctrl деактивира всички освен избраната. Ctrl отново за активиране на всички
|
||||
STR_SMALLMAP_TOOLTIP_COMPANY_SELECTION :{BLACK}Натисни върху компания за показване/скриване на нейната собственост. Ctrl деактивира всички компании освен избраната. Ctrl отново за активиране на всички компании
|
||||
STR_SMALLMAP_TOOLTIP_CARGO_SELECTION :{BLACK}Кликнете върху товара, за да превключите показването на неговите данни. Ctrl+Click изключва всички товари без текущо избрания. Направете отново Ctrl+Click въху него, за да включите отново всички товари
|
||||
|
||||
STR_SMALLMAP_LEGENDA_ROADS :{TINY_FONT}{BLACK}Пътища
|
||||
STR_SMALLMAP_LEGENDA_RAILROADS :{TINY_FONT}{BLACK}ЖП
|
||||
@@ -1107,6 +1112,7 @@ STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_MENU :Игрови н
|
||||
STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_INGAME :Игрови настройки (съхраняват се в записаната игра; важат само за текущата игра)
|
||||
STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_MENU :Настройки за компанията (съхраняват се в записаната игра; важат само за нови игри)
|
||||
STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_INGAME :Настройки за компанията (съхраняват се в записаната игра; важат само за текущата компания)
|
||||
STR_CONFIG_SETTING_CATEGORY_AND_TYPE_HIDES :{BLACK}Покажете всички резултати от търсенето като зададете{}{SILVER}Категория {BLACK}на {WHITE}{STRING} {BLACK}и {SILVER}Тип {BLACK}на {WHITE}Всички видове настройки
|
||||
STR_CONFIG_SETTINGS_NONE :{WHITE}- Нищо -
|
||||
|
||||
STR_CONFIG_SETTING_OFF :изключено
|
||||
@@ -1283,10 +1289,12 @@ STR_CONFIG_SETTING_POPULATION_IN_LABEL_HELPTEXT :Показва
|
||||
STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS :Дебелина на линиите в графиките: {STRING}
|
||||
STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS_HELPTEXT :Дебелина на линиите в графиките. Тънките линии са по-лесни за разчитане, но по-дебелите се забелязват и разграничават по-лесно.
|
||||
|
||||
STR_CONFIG_SETTING_LANDSCAPE :Пейзаж: {STRING}
|
||||
STR_CONFIG_SETTING_LANDSCAPE :Терен: {STRING}
|
||||
STR_CONFIG_SETTING_LAND_GENERATOR :Генератор на земя: {STRING}
|
||||
STR_CONFIG_SETTING_LAND_GENERATOR_ORIGINAL :оригинален
|
||||
STR_CONFIG_SETTING_LAND_GENERATOR_TERRA_GENESIS :тера-генезис
|
||||
STR_CONFIG_SETTING_TERRAIN_TYPE_HELPTEXT :(само за TerraGenesis) Хълмистост на терена
|
||||
STR_CONFIG_SETTING_INDUSTRY_DENSITY_HELPTEXT :Задайте колко индустрии да се генерират и какво ниво да се поддържа по време на играта
|
||||
STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE :Максимално разстояние от ръба за нефтените рафинерии: {STRING}
|
||||
STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE_HELPTEXT :Нефтените рафинерии се изграждат само близо до края на картата
|
||||
STR_CONFIG_SETTING_SNOWLINE_HEIGHT :Снежната ивица: {STRING}
|
||||
@@ -1296,6 +1304,7 @@ STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_SMOOTH :полегат
|
||||
STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_ROUGH :стръмен
|
||||
STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_ROUGH :много стръмен
|
||||
STR_CONFIG_SETTING_RIVER_AMOUNT :Количество на реките: {STRING}
|
||||
STR_CONFIG_SETTING_RIVER_AMOUNT_HELPTEXT :Изберете колко реки да се генерират
|
||||
STR_CONFIG_SETTING_TREE_PLACER :Алгоритъм за поставяне на дървета: {STRING}
|
||||
STR_CONFIG_SETTING_TREE_PLACER_NONE :без дървета
|
||||
STR_CONFIG_SETTING_TREE_PLACER_ORIGINAL :оригинален
|
||||
@@ -1583,6 +1592,11 @@ STR_CONFIG_SETTING_LARGER_TOWNS_DISABLED :Без
|
||||
STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER :Множител за големината на града: {STRING}
|
||||
STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER_HELPTEXT :Относителен размер на мегаполисите в сравнение с градовете в началото на играта
|
||||
|
||||
STR_CONFIG_SETTING_LINKGRAPH_TIME :Вземи {STRING}{NBSP}дни{P 0:2 "" s} за преизчисляване на графа за резпределение
|
||||
STR_CONFIG_SETTING_DISTRIBUTION_MANUAL :ръчно
|
||||
STR_CONFIG_SETTING_DISTRIBUTION_SYMMETRIC :симетричен
|
||||
STR_CONFIG_SETTING_DISTRIBUTION_PAX_HELPTEXT :"симетрично" означава, че приблизително един и същ брой пътници ще пътуват от спирка А до спирка Б и обратно. "асиметрично" означава, че произволен брой пътници могат да пътуват във всяка от посоките. "ръчно" означава, че няма да има автоматично разпределение за пътниците.
|
||||
STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT :Режим на разпределение на други класове товари: {STRING}
|
||||
STR_CONFIG_SETTING_DEMAND_SIZE :Количество на връщания товар при симетричнен режим: {STRING}
|
||||
|
||||
STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY :Единици за скорост: {STRING}
|
||||
@@ -1628,6 +1642,7 @@ STR_CONFIG_SETTING_INTERFACE_GENERAL :{ORANGE}Осн
|
||||
STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :{ORANGE}Строене
|
||||
STR_CONFIG_SETTING_VEHICLES :{ORANGE}Автомобили
|
||||
STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}Маршрутизация
|
||||
STR_CONFIG_SETTING_LIMITATIONS :{ORANGE}Ограничения
|
||||
STR_CONFIG_SETTING_ENVIRONMENT_AUTHORITIES :{ORANGE}Права
|
||||
STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :{ORANGE}Градове
|
||||
STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :{ORANGE}Индустрии
|
||||
@@ -1908,6 +1923,7 @@ STR_NETWORK_START_SERVER_SET_PASSWORD :{BLACK}Пост
|
||||
STR_NETWORK_START_SERVER_PASSWORD_TOOLTIP :{BLACK}Защитаване на вашата игра с парола за да не е публично достъпна
|
||||
|
||||
STR_NETWORK_START_SERVER_UNADVERTISED :Не
|
||||
STR_NETWORK_START_SERVER_ADVERTISED :Да
|
||||
STR_NETWORK_START_SERVER_CLIENTS_SELECT :{BLACK}{NUM} клиент{P "" s}
|
||||
STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS :{BLACK}Макс. брой играчи:
|
||||
STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS_TOOLTIP :{BLACK}Избор на максималния брой клиенти. Не всички слотове трябва да се попълнят
|
||||
@@ -2630,9 +2646,21 @@ STR_ABOUT_VERSION :{BLACK}OpenTTD
|
||||
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2019 The OpenTTD team
|
||||
|
||||
# Framerate display window
|
||||
STR_FRAMERATE_CAPTION :{WHITE}Скорост на кадрите
|
||||
STR_FRAMERATE_RATE_GAMELOOP :{BLACK}Скороср на симулация: {STRING}
|
||||
STR_FRAMERATE_SPEED_FACTOR :{BLACK}Текущ коефициент за скорост на играта: {DECIMAL}x
|
||||
STR_FRAMERATE_CURRENT :{WHITE}Текущ
|
||||
STR_FRAMERATE_AVERAGE :{WHITE}Средно
|
||||
STR_FRAMERATE_FPS_BAD :{RED}{DECIMAL} кадри/сек
|
||||
############ Leave those lines in this order!!
|
||||
STR_FRAMERATE_GL_ECONOMY :Обработка на товари:
|
||||
STR_FRAMERATE_GL_LANDSCAPE :{BLACK} Тактове на света:
|
||||
############ End of leave-in-this-order
|
||||
############ Leave those lines in this order!!
|
||||
STR_FRAMETIME_CAPTION_GAMELOOP :Цикъл на играта
|
||||
STR_FRAMETIME_CAPTION_DRAWING :Графична обработка
|
||||
STR_FRAMETIME_CAPTION_VIDEO :Видео изход
|
||||
STR_FRAMETIME_CAPTION_ALLSCRIPTS :Общо GS/AI скриптове
|
||||
############ End of leave-in-this-order
|
||||
|
||||
|
||||
@@ -2782,6 +2810,7 @@ STR_NEWGRF_SETTINGS_DISABLED :{RED}Изклю
|
||||
STR_NEWGRF_SETTINGS_INCOMPATIBLE :{G=n}{RED}Несъвместимо с тази версия на OpenTTD
|
||||
|
||||
# NewGRF save preset window
|
||||
STR_SAVE_PRESET_LIST_TOOLTIP :{BLACK}Списък на наличните предварително зададени настройки. Изберете една, за да я откопирате в името за запис по-долу
|
||||
STR_SAVE_PRESET_TITLE :{BLACK}Въведи име за шаблона
|
||||
STR_SAVE_PRESET_EDITBOX_TOOLTIP :{BLACK}Текущо избраното име за именуване на шаблона
|
||||
STR_SAVE_PRESET_CANCEL :{BLACK}Отказ
|
||||
@@ -2879,6 +2908,7 @@ STR_NEWGRF_BUGGY :{WHITE}NewGRF '
|
||||
STR_NEWGRF_BUGGY_ARTICULATED_CARGO :{WHITE}Информация за товар/преобразувания на '{1:ENGINE}' се различава от листа с покупките. Това може да доведе до грешка при подновяване/преустройване
|
||||
STR_NEWGRF_BUGGY_ENDLESS_PRODUCTION_CALLBACK :{WHITE}'{1:STRING}' предизвика вечен цикъл в callback на производството
|
||||
STR_NEWGRF_BUGGY_UNKNOWN_CALLBACK_RESULT :{WHITE}Подизпълнение {1:HEX} върна неизвестен/невалиден резултат {2:HEX}
|
||||
STR_NEWGRF_BUGGY_INVALID_CARGO_PRODUCTION_CALLBACK :{WHITE}'{1:STRING}' Върнат е невалиден тип товар в продуктивен callback на {2:HEX}
|
||||
|
||||
# 'User removed essential NewGRFs'-placeholders for stuff without specs
|
||||
STR_NEWGRF_INVALID_CARGO :<невалиден товар>
|
||||
@@ -2912,6 +2942,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}
|
||||
|
||||
@@ -3311,6 +3342,7 @@ 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} полета
|
||||
@@ -3626,7 +3658,7 @@ STR_VEHICLE_DETAILS_TRAIN_ARTICULATED_RV_CAPACITY :{BLACK}Капа
|
||||
# Vehicle refit
|
||||
STR_REFIT_CAPTION :{WHITE}{VEHICLE} (Преустройване)
|
||||
STR_REFIT_TITLE :{GOLD}Изберете вид товар за превозване:
|
||||
STR_REFIT_NEW_CAPACITY_COST_OF_REFIT :{BLACK}Нов капацитет: {GOLD}{CARGO_LONG}{}{BLACK}Цена за преустройство: {RED}{CURRENCY_LONG}
|
||||
STR_REFIT_NEW_CAPACITY_COST_OF_REFIT :{BLACK}Нов капацитет: {GOLD}{CARGO_LONG}{}{BLACK}Цена за преустройсване: {RED}{CURRENCY_LONG}
|
||||
STR_REFIT_NEW_CAPACITY_INCOME_FROM_REFIT :{BLACK}Нов капцитет: {GOLD}{CARGO_LONG}{}{BLACK}Приход от преустройване: {GREEN}{CURRENCY_LONG}
|
||||
STR_REFIT_NEW_CAPACITY_COST_OF_AIRCRAFT_REFIT :{BLACK}Нова вместимост: {GOLD}{CARGO_LONG}, {GOLD}{CARGO_LONG}{}{BLACK}Цена за преоборудване: {RED}{CURRENCY_LONG}
|
||||
STR_REFIT_NEW_CAPACITY_INCOME_FROM_AIRCRAFT_REFIT :{BLACK}Нов капацитет: {GOLD}{CARGO_LONG}, {GOLD}{CARGO_LONG}{}{BLACK}Проход от преустройване: {GREEN}{CURRENCY_LONG}
|
||||
@@ -3812,9 +3844,12 @@ STR_TIMETABLE_TOOLTIP :{BLACK}Разп
|
||||
STR_TIMETABLE_NO_TRAVEL :Без преминаване
|
||||
STR_TIMETABLE_NOT_TIMETABLEABLE :Пътувай (автоматично; включено в разписанието, чрез следващата ваша заповед)
|
||||
STR_TIMETABLE_TRAVEL_NOT_TIMETABLED :Пътувай (без разписание)
|
||||
STR_TIMETABLE_TRAVEL_NOT_TIMETABLED_SPEED :Пътувай с не повече от {2:VELOCITY} (not timetabled)
|
||||
STR_TIMETABLE_TRAVEL_NOT_TIMETABLED_SPEED :Пътувай (без разписание) с не повече от {2:VELOCITY}
|
||||
STR_TIMETABLE_TRAVEL_FOR :Пътувай за {STRING}
|
||||
STR_TIMETABLE_TRAVEL_FOR_SPEED :Пътувай за {STRING} с не повече от {VELOCITY}
|
||||
STR_TIMETABLE_TRAVEL_FOR_ESTIMATED :Пътувай (за {STRING}, без разписание)
|
||||
STR_TIMETABLE_STAY_FOR_ESTIMATED :(престой за {STRING}, без разписание)
|
||||
STR_TIMETABLE_AND_TRAVEL_FOR_ESTIMATED :(Пътувай към {STRING}, без разписание)
|
||||
STR_TIMETABLE_STAY_FOR :и остани за {STRING}
|
||||
STR_TIMETABLE_AND_TRAVEL_FOR :и отпътувай към {STRING}
|
||||
STR_TIMETABLE_DAYS :{COMMA}{NBSP}ден{P "" а}
|
||||
@@ -3830,6 +3865,7 @@ STR_TIMETABLE_STATUS_NOT_STARTED :{BLACK}Това
|
||||
STR_TIMETABLE_STATUS_START_AT :{BLACK}Това разписание ще започне на {STRING}
|
||||
|
||||
STR_TIMETABLE_STARTING_DATE :{BLACK}Дата на започване
|
||||
STR_TIMETABLE_STARTING_DATE_TOOLTIP :{BLACK} Изберете начална дата на това разписание. Ctrl + Click задава началната дата и равномерно разпределя всички превозни средства, които споделят тази поръчка, на базата на тяхната относителна поръчка, ако поръчката е изцяло по разписание
|
||||
|
||||
STR_TIMETABLE_CHANGE_TIME :{BLACK}Промени времето
|
||||
STR_TIMETABLE_WAIT_TIME_TOOLTIP :{BLACK}Промени времетраенето на маркираната заповед
|
||||
@@ -4382,6 +4418,7 @@ STR_BASESOUNDS_DOS_DESCRIPTION :Оригина
|
||||
STR_BASESOUNDS_WIN_DESCRIPTION :Оригинални звуци на Transport Tycoon Deluxe за Windows.
|
||||
STR_BASESOUNDS_NONE_DESCRIPTION :Празен звуков пакет.
|
||||
STR_BASEMUSIC_WIN_DESCRIPTION :Оригинална музика на Transport Tycoon Deluxe за Windows.
|
||||
STR_BASEMUSIC_TTO_DESCRIPTION :Оригинална Transport Tycoon (Original/World Editor) музика за DOS.
|
||||
STR_BASEMUSIC_NONE_DESCRIPTION :Празен музикален пакет.
|
||||
|
||||
##id 0x2000
|
||||
|
||||
@@ -4317,7 +4317,6 @@ STR_ERROR_DRIVE_THROUGH_ON_TOWN_ROAD :{WHITE}... aque
|
||||
STR_ERROR_DRIVE_THROUGH_DIRECTION :{WHITE}... sentit de la carretera en la direcció incorrecta
|
||||
STR_ERROR_DRIVE_THROUGH_CORNER :{WHITE}... les estacions d'autobús de pas no poden tenir cantonades
|
||||
STR_ERROR_DRIVE_THROUGH_JUNCTION :{WHITE}... les estacions d'autobús de pas no poden tenir interseccions
|
||||
STR_ERROR_DRIVE_THROUGH_ON_ONEWAY_ROAD :{WHITE}... la carretera és d'un sol sentit o està blocada.
|
||||
|
||||
# Station destruction related errors
|
||||
STR_ERROR_CAN_T_REMOVE_PART_OF_STATION :{WHITE}No es pot treure part de la estació...
|
||||
|
||||
@@ -3120,7 +3120,7 @@ STR_NEWGRF_LIST_MISSING :{RED}Nedostaju
|
||||
STR_NEWGRF_BROKEN :{WHITE}Ponašanje NewGRF '{0:STRING}' će vjerojatno uzrokovati deharmonizaciju i/ili rušenje igre
|
||||
STR_NEWGRF_BROKEN_POWERED_WAGON :{WHITE}Promijenjen status motoriziranog vagona za '{1:ENGINE}' kad vozilo nije u spremištu.
|
||||
STR_NEWGRF_BROKEN_VEHICLE_LENGTH :{WHITE}Ovo mijenja dužinu vozila za '{1:ENGINE}' kada vozilo nije unutar spremišta
|
||||
STR_NEWGRF_BROKEN_CAPACITY :{WHITE}Promijenilo je kapacitet vozila za '{1:ENGINE}' kada nije u spremšta ili se remontira
|
||||
STR_NEWGRF_BROKEN_CAPACITY :{WHITE}Promijenilo je kapacitet vozila za '{1:ENGINE}' kada nije u spremištu ili se prenamjenjuje
|
||||
STR_BROKEN_VEHICLE_LENGTH :{WHITE}Vlak'{VEHICLE}' koji pripada tvrtci '{COMPANY}' neispravne je dužine. Uzrok problema je vjerojatno u NewGRF datotekama. Igra će se možda deharmonizirati ili srušiti
|
||||
|
||||
STR_NEWGRF_BUGGY :{WHITE}NewGRF '{0:STRING}' daje netočne informacije
|
||||
@@ -3903,9 +3903,9 @@ STR_VEHICLE_DETAILS_TRAIN_ARTICULATED_RV_CAPACITY :{BLACK}Nosivost
|
||||
STR_REFIT_CAPTION :{WHITE}{VEHICLE} (Prenamijeni)
|
||||
STR_REFIT_TITLE :{GOLD}Odaberi vrstu tereta za prijevoz:
|
||||
STR_REFIT_NEW_CAPACITY_COST_OF_REFIT :{BLACK}Nova nosivost: {GOLD}{CARGO_LONG}{}{BLACK}Cijena prenamjene: {RED}{CURRENCY_LONG}
|
||||
STR_REFIT_NEW_CAPACITY_INCOME_FROM_REFIT :{BLACK}Novi kapacitet: {GOLD}{CARGO_LONG}{}{BLACK}Prihod od remonta: {GREEN}{CURRENCY_LONG}
|
||||
STR_REFIT_NEW_CAPACITY_COST_OF_AIRCRAFT_REFIT :{BLACK}Novi kapacitet: {GOLD}{CARGO_LONG}, {GOLD}{CARGO_LONG}{}{BLACK}Trošak remonta: {RED}{CURRENCY_LONG}
|
||||
STR_REFIT_NEW_CAPACITY_INCOME_FROM_AIRCRAFT_REFIT :{BLACK}Novi kapacitet: {GOLD}{CARGO_LONG}, {GOLD}{CARGO_LONG}{}{BLACK}Prihod od remonta: {GREEN}{CURRENCY_LONG}
|
||||
STR_REFIT_NEW_CAPACITY_INCOME_FROM_REFIT :{BLACK}Novi kapacitet: {GOLD}{CARGO_LONG}{}{BLACK}Prihod od prenamjene: {GREEN}{CURRENCY_LONG}
|
||||
STR_REFIT_NEW_CAPACITY_COST_OF_AIRCRAFT_REFIT :{BLACK}Novi kapacitet: {GOLD}{CARGO_LONG}, {GOLD}{CARGO_LONG}{}{BLACK}Cijena prenamjene: {RED}{CURRENCY_LONG}
|
||||
STR_REFIT_NEW_CAPACITY_INCOME_FROM_AIRCRAFT_REFIT :{BLACK}Novi kapacitet: {GOLD}{CARGO_LONG}, {GOLD}{CARGO_LONG}{}{BLACK}Prihod od prenamjene: {GREEN}{CURRENCY_LONG}
|
||||
STR_REFIT_SELECT_VEHICLES_TOOLTIP :{BLACK}Odaberi vozila za remont. Povlačenje mišem dopušta odabir više vozila. Klik na prazninu će označiti cijelo vozilo. Ctrl+Klik će označiti vozilo i niz koji slijedi.
|
||||
|
||||
STR_REFIT_TRAIN_LIST_TOOLTIP :{BLACK}Odaberi vrstu tereta koju će vlak prevoziti
|
||||
@@ -4413,7 +4413,6 @@ STR_ERROR_DRIVE_THROUGH_ON_TOWN_ROAD :{WHITE}... ovo
|
||||
STR_ERROR_DRIVE_THROUGH_DIRECTION :{WHITE}... cesta je orijentirana u krivom smjeru
|
||||
STR_ERROR_DRIVE_THROUGH_CORNER :{WHITE}... prolazne postaje ne mogu imati zavoje
|
||||
STR_ERROR_DRIVE_THROUGH_JUNCTION :{WHITE}... prolazne postaje ne mogu imati raskrižja
|
||||
STR_ERROR_DRIVE_THROUGH_ON_ONEWAY_ROAD :{WHITE}... cesta je jednosmjerna ili je blokirana
|
||||
|
||||
# Station destruction related errors
|
||||
STR_ERROR_CAN_T_REMOVE_PART_OF_STATION :{WHITE}Nije moguće ukloniti dio postaje...
|
||||
|
||||
@@ -264,6 +264,7 @@ STR_COLOUR_ORANGE :Oranžová
|
||||
STR_COLOUR_BROWN :Hnědá
|
||||
STR_COLOUR_GREY :Šedá
|
||||
STR_COLOUR_WHITE :Bílá
|
||||
STR_COLOUR_RANDOM :Náhodná
|
||||
|
||||
# Units used in OpenTTD
|
||||
STR_UNITS_VELOCITY_IMPERIAL :{COMMA}{NBSP}m{P íle íle il}/h
|
||||
@@ -539,6 +540,7 @@ STR_TOOLBAR_SOUND_MUSIC :Zvuk/Hudba
|
||||
############ range for message menu starts
|
||||
STR_NEWS_MENU_LAST_MESSAGE_NEWS_REPORT :Poslední zpráva nebo článek
|
||||
STR_NEWS_MENU_MESSAGE_HISTORY_MENU :Historie zpráv
|
||||
STR_NEWS_MENU_DELETE_ALL_MESSAGES :Smazat všechny zprávy
|
||||
############ range ends here
|
||||
|
||||
############ range for about menu starts
|
||||
@@ -1077,6 +1079,7 @@ STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_2X_ZOOM :Dvojnásobná v
|
||||
STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_4X_ZOOM :Čtyřnásobná velikost
|
||||
|
||||
|
||||
STR_GAME_OPTIONS_FONT_ZOOM_DROPDOWN_NORMAL :Běžné
|
||||
|
||||
STR_GAME_OPTIONS_BASE_GRF :{BLACK}Základní sada grafiky
|
||||
STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Zvol základní sadu grafiky
|
||||
@@ -1429,6 +1432,7 @@ STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_HELPTEXT :Barva terénu n
|
||||
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_GREEN :zelená
|
||||
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_DARK_GREEN :tmavě zelená
|
||||
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_VIOLET :fialová
|
||||
STR_CONFIG_SETTING_SCROLLMODE_RMB_LOCKED :Pohyb v mapě pomocí pravého tlačítka myši, poloha myši uzamčena
|
||||
STR_CONFIG_SETTING_SMOOTH_SCROLLING :Plynulé posouvání po mapě: {STRING}
|
||||
STR_CONFIG_SETTING_SMOOTH_SCROLLING_HELPTEXT :Ovládá jak se hlavní pohled posouvá na specifické místo na mapě, kliknutím na minimapu nebo spuštěním příkazu na posun na specifický objekt na mapě. Pokud zapnuto, pohled se posouvá plynule, pokud vypnuto, skáče pohled přímo na cílové místo
|
||||
STR_CONFIG_SETTING_MEASURE_TOOLTIP :Ukázat rozměry při použití stavebních nástrojů: {STRING}
|
||||
@@ -2791,7 +2795,10 @@ STR_FRAMERATE_CAPTION :{WHITE}Počet s
|
||||
STR_FRAMERATE_RATE_BLITTER_TOOLTIP :{BLACK}Počet snímků videa vykreslovaných za sekundu.
|
||||
STR_FRAMERATE_SPEED_FACTOR :{WHITE}Aktuální činitel rychlosti hry: {DECIMAL}x
|
||||
STR_FRAMERATE_SPEED_FACTOR_TOOLTIP :{BLACK}Rychlost, kterou hra právě běží, v porovnání s očekávanou rychlostí při běžné rychlosti simulace.
|
||||
STR_FRAMERATE_CURRENT :{WHITE}Aktuální
|
||||
STR_FRAMERATE_AVERAGE :{WHITE}Průměr
|
||||
STR_FRAMERATE_DATA_POINTS :{BLACK}Podle {COMMA} měření
|
||||
STR_FRAMERATE_MS_GOOD :{LTBLUE}{DECIMAL} ms
|
||||
STR_FRAMERATE_MS_BAD :{RED}{DECIMAL}{WHITE} ms
|
||||
STR_FRAMERATE_FPS_WARN :{YELLOW}{DECIMAL}{WHITE} sním{P "ek" "ky" "ků"}/s
|
||||
STR_FRAMERATE_FPS_BAD :{RED}{DECIMAL}{WHITE} sním{P "ek" "ky" "ků"}/s
|
||||
@@ -2799,12 +2806,20 @@ STR_FRAMERATE_GRAPH_MILLISECONDS :{TINY_FONT}{COM
|
||||
STR_FRAMERATE_GRAPH_SECONDS :{TINY_FONT}{COMMA} s
|
||||
############ Leave those lines in this order!!
|
||||
STR_FRAMERATE_GL_ECONOMY :{WHITE} Manipulace s nákladem:
|
||||
STR_FRAMERATE_GL_LINKGRAPH :{BLACK} Zpoždění grafu spojení:
|
||||
STR_FRAMERATE_DRAWING :{WHITE}Vykreslování grafiky:
|
||||
STR_FRAMERATE_DRAWING_VIEWPORTS :{BLACK} Pohledy:
|
||||
STR_FRAMERATE_VIDEO :{BLACK}Video:
|
||||
STR_FRAMERATE_SOUND :{BLACK}Míchání zvuků:
|
||||
STR_FRAMERATE_GAMESCRIPT :{BLACK} Herní skript:
|
||||
############ End of leave-in-this-order
|
||||
############ Leave those lines in this order!!
|
||||
STR_FRAMETIME_CAPTION_GAMELOOP :Herní smyčka
|
||||
STR_FRAMETIME_CAPTION_GL_ECONOMY :Manipulace s nákladem
|
||||
STR_FRAMETIME_CAPTION_DRAWING :Vykreslování grafiky
|
||||
STR_FRAMETIME_CAPTION_SOUND :Míchání zvuků
|
||||
STR_FRAMETIME_CAPTION_GAMESCRIPT :Herní skript
|
||||
STR_FRAMETIME_CAPTION_AI :AI {NUM} {STRING}
|
||||
############ End of leave-in-this-order
|
||||
|
||||
|
||||
@@ -2830,6 +2845,8 @@ STR_SAVELOAD_DETAIL_CAPTION :{BLACK}Vlastnos
|
||||
STR_SAVELOAD_DETAIL_NOT_AVAILABLE :{BLACK}Není dostupná žádná informace
|
||||
STR_SAVELOAD_DETAIL_COMPANY_INDEX :{SILVER}{COMMA}: {WHITE}{STRING}
|
||||
STR_SAVELOAD_DETAIL_GRFSTATUS :{SILVER}Grafiky: {WHITE}{STRING}
|
||||
STR_SAVELOAD_FILTER_TITLE :{BLACK}Filtr:
|
||||
STR_SAVELOAD_OVERWRITE_TITLE :{WHITE}Přepsat soubor
|
||||
|
||||
STR_SAVELOAD_OSKTITLE :{BLACK}Zadej jméno pro uloženou hru
|
||||
|
||||
@@ -2948,6 +2965,7 @@ STR_NEWGRF_SETTINGS_MIN_VERSION :{BLACK}Minimál
|
||||
STR_NEWGRF_SETTINGS_MD5SUM :{BLACK}MD5sum: {SILVER}{STRING}
|
||||
STR_NEWGRF_SETTINGS_PALETTE :{BLACK}Paleta: {SILVER}{STRING}
|
||||
STR_NEWGRF_SETTINGS_PARAMETER :{BLACK}Parametry: {SILVER}{STRING}
|
||||
STR_NEWGRF_SETTINGS_PARAMETER_NONE :Žádný
|
||||
|
||||
STR_NEWGRF_SETTINGS_NO_INFO :{BLACK}Informace nejsou k dispozici
|
||||
STR_NEWGRF_SETTINGS_NOT_FOUND :{RED}Nenalezen odpovídající soubor
|
||||
@@ -3201,6 +3219,7 @@ STR_SUBSIDIES_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Kliknut
|
||||
# Story book window
|
||||
STR_STORY_BOOK_CAPTION :{WHITE}{COMPANY} Kniha příběhů
|
||||
STR_STORY_BOOK_SPECTATOR_CAPTION :{WHITE}Globální kniha příběhů
|
||||
STR_STORY_BOOK_SPECTATOR :Globální kniha příběhů
|
||||
STR_STORY_BOOK_TITLE :{YELLOW}{STRING}
|
||||
STR_STORY_BOOK_GENERIC_PAGE_ITEM :Strana {NUM}
|
||||
STR_STORY_BOOK_SEL_PAGE_TOOLTIP :{BLACK}Skoč na určitou stranu vybranou v tomto seznamu
|
||||
@@ -3405,6 +3424,7 @@ STR_INDUSTRY_VIEW_LOCATION_TOOLTIP :{BLACK}Vystřed
|
||||
STR_INDUSTRY_VIEW_PRODUCTION_LEVEL :{BLACK}Produkce: {YELLOW}{COMMA}%
|
||||
STR_INDUSTRY_VIEW_INDUSTRY_ANNOUNCED_CLOSURE :{YELLOW}Průmysl oznámila blížící se uzavření!
|
||||
|
||||
STR_INDUSTRY_VIEW_REQUIRES_N_CARGO :{BLACK}Vyžaduje: {YELLOW}{STRING}{STRING}
|
||||
|
||||
STR_INDUSTRY_VIEW_REQUIRES :{BLACK}Vyžaduje:
|
||||
STR_INDUSTRY_VIEW_ACCEPT_CARGO :{YELLOW}{STRING}{BLACK}{3:STRING}
|
||||
@@ -4339,7 +4359,6 @@ STR_ERROR_DRIVE_THROUGH_ON_TOWN_ROAD :{WHITE}... tato
|
||||
STR_ERROR_DRIVE_THROUGH_DIRECTION :{WHITE}... silnice je otočena jiným směrem
|
||||
STR_ERROR_DRIVE_THROUGH_CORNER :{WHITE}... průjezdné zastávky nemohou být v zatáčce
|
||||
STR_ERROR_DRIVE_THROUGH_JUNCTION :{WHITE}... průjezdné zastávky nemohou být na křižovatce
|
||||
STR_ERROR_DRIVE_THROUGH_ON_ONEWAY_ROAD :{WHITE}... silnice je jednosměrná nebo uzavřená.
|
||||
|
||||
# Station destruction related errors
|
||||
STR_ERROR_CAN_T_REMOVE_PART_OF_STATION :{WHITE}Nelze odstranit část stanice...
|
||||
|
||||
@@ -4317,7 +4317,6 @@ STR_ERROR_DRIVE_THROUGH_ON_TOWN_ROAD :{WHITE}... denn
|
||||
STR_ERROR_DRIVE_THROUGH_DIRECTION :{WHITE}... vejen peger i den forkerte retning
|
||||
STR_ERROR_DRIVE_THROUGH_CORNER :{WHITE}... drive-through stops kan ikke have hjørner
|
||||
STR_ERROR_DRIVE_THROUGH_JUNCTION :{WHITE}... drive-through stops kan ikke have kryds
|
||||
STR_ERROR_DRIVE_THROUGH_ON_ONEWAY_ROAD :{WHITE}vejen er ensrettet eller blokeret
|
||||
|
||||
# Station destruction related errors
|
||||
STR_ERROR_CAN_T_REMOVE_PART_OF_STATION :{WHITE}Kan ikke fjerne en del af en station...
|
||||
|
||||
@@ -98,7 +98,7 @@ STR_QUANTITY_NOTHING :
|
||||
STR_QUANTITY_PASSENGERS :{COMMA}{NBSP}passagier{P "" s}
|
||||
STR_QUANTITY_COAL :{WEIGHT_LONG} kolen
|
||||
STR_QUANTITY_MAIL :{COMMA}{NBSP}zak{P "" ken} post
|
||||
STR_QUANTITY_OIL :{VOLUME_LONG} Vaten olie
|
||||
STR_QUANTITY_OIL :{VOLUME_LONG} vaten olie
|
||||
STR_QUANTITY_LIVESTOCK :{COMMA}{NBSP}stuk{P "" s} vee
|
||||
STR_QUANTITY_GOODS :{COMMA}{NBSP}krat{P "" ten} goederen
|
||||
STR_QUANTITY_GRAIN :{WEIGHT_LONG} graan
|
||||
@@ -1860,7 +1860,7 @@ STR_LIVERY_PASSENGER_SHIP :Passagiersschip
|
||||
STR_LIVERY_FREIGHT_SHIP :Vrachtschip
|
||||
STR_LIVERY_HELICOPTER :Helikopter
|
||||
STR_LIVERY_SMALL_PLANE :Klein vliegtuig
|
||||
STR_LIVERY_LARGE_PLANE :Groot Vliegtuig
|
||||
STR_LIVERY_LARGE_PLANE :Groot vliegtuig
|
||||
STR_LIVERY_PASSENGER_TRAM :Passagierstram
|
||||
STR_LIVERY_FREIGHT_TRAM :Vrachttram
|
||||
|
||||
@@ -2412,7 +2412,7 @@ STR_BRIDGE_TUBULAR_SILICON :Buis, silicium
|
||||
|
||||
# Road construction toolbar
|
||||
STR_ROAD_TOOLBAR_ROAD_CONSTRUCTION_CAPTION :{WHITE}Wegen bouwen
|
||||
STR_ROAD_TOOLBAR_TRAM_CONSTRUCTION_CAPTION :{WHITE}Bouw tramsporen
|
||||
STR_ROAD_TOOLBAR_TRAM_CONSTRUCTION_CAPTION :{WHITE}Tramsporen bouwen
|
||||
STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_SECTION :{BLACK}Weg bouwen. Ctrl schakelt tussen bouwen/verwijderen van de weg. Shift schakelt tussen bouwen/inschatting van de kosten.
|
||||
STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_SECTION :{BLACK}Bouw tramsporen. Ctrl schakelt tussen bouwen/verwijderen van tramsporen. Shift schakelt tussen bouwen/inschatting van de kosten
|
||||
STR_ROAD_TOOLBAR_TOOLTIP_BUILD_AUTOROAD :{BLACK}Wegen bouwen met de automatische methode. Ctrl schakelt tussen bouwen/verwijderen van de weg. Shift schakelt tussen bouwen/inschatting van de kosten.
|
||||
@@ -2856,7 +2856,7 @@ STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_QUERY_CAPT :{WHITE}Verander
|
||||
# Map generation progress
|
||||
STR_GENERATION_WORLD :{WHITE}Bezig met wereldontwikkeling...
|
||||
STR_GENERATION_ABORT :{BLACK}Stop
|
||||
STR_GENERATION_ABORT_CAPTION :{WHITE}Stop Wereldontwikkeling
|
||||
STR_GENERATION_ABORT_CAPTION :{WHITE}Wereldontwikkeling stoppen
|
||||
STR_GENERATION_ABORT_MESSAGE :{YELLOW}Weet je zeker dat je de actie wilt stoppen?
|
||||
STR_GENERATION_PROGRESS :{WHITE}{NUM}% compleet
|
||||
STR_GENERATION_PROGRESS_NUM :{BLACK}{NUM} / {NUM}
|
||||
@@ -3117,7 +3117,7 @@ STR_LOCAL_AUTHORITY_ACTION_BRIBE :Gemeentebestuur
|
||||
STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_SMALL_ADVERTISING :{YELLOW}Begin een kleine reclamecampagne om meer passagiers en vracht naar jouw transportdiensten te trekken.{}Kosten: {CURRENCY_LONG}
|
||||
STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_MEDIUM_ADVERTISING :{YELLOW}Begin een middelgrote reclamecampagne om meer passagiers en vracht naar jouw transportdiensten te trekken.{}Kosten: {CURRENCY_LONG}
|
||||
STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_LARGE_ADVERTISING :{YELLOW}Begin een grote reclamecampagne om meer passagiers en vracht naar jouw transportdiensten te trekken.{}Kosten: {CURRENCY_LONG}
|
||||
STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_ROAD_RECONSTRUCTION :{YELLOW}Financier een herstelling van het wegennetwerk. Veroorzaakt tot 6 maanden lang een aanzienlijke verstoring van het wegverkeer.{}Kosten: {CURRENCY_LONG}
|
||||
STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_ROAD_RECONSTRUCTION :{YELLOW}Financier een reconstructie van het wegennetwerk. Veroorzaakt tot 6 maanden lang een aanzienlijke verstoring van het wegverkeer.{}Kosten: {CURRENCY_LONG}
|
||||
STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_STATUE_OF_COMPANY :{YELLOW}Een standbeeld bouwen ter ere van jouw bedrijf.{}Kosten: {CURRENCY_LONG}
|
||||
STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_NEW_BUILDINGS :{YELLOW}De bouw van nieuwe commerciële gebouwen in de stad financieren.{}Kosten: {CURRENCY_LONG}
|
||||
STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_EXCLUSIVE_TRANSPORT :{YELLOW}1 jaar exclusieve transportrechten kopen in deze plaats. Het gemeentebestuur staat alleen passagiers en vracht toe bij jouw stations.{}Kosten: {CURRENCY_LONG}
|
||||
@@ -4023,7 +4023,7 @@ STR_TIMETABLE_WAIT_TIME_TOOLTIP :{BLACK}Verander
|
||||
STR_TIMETABLE_CLEAR_TIME :{BLACK}Tijd wissen
|
||||
STR_TIMETABLE_CLEAR_TIME_TOOLTIP :{BLACK}Verwijder de tijdsduur die de geselecteerde order mag duren
|
||||
|
||||
STR_TIMETABLE_CHANGE_SPEED :{BLACK}Wijzig Maximumsnelheid
|
||||
STR_TIMETABLE_CHANGE_SPEED :{BLACK}Maximumsnelheid wijzigen
|
||||
STR_TIMETABLE_CHANGE_SPEED_TOOLTIP :{BLACK}Wijzig de maximumsnelheid voor de gekozen order
|
||||
|
||||
STR_TIMETABLE_CLEAR_SPEED :{BLACK}Snelheidslimiet wissen
|
||||
@@ -4317,7 +4317,6 @@ STR_ERROR_DRIVE_THROUGH_ON_TOWN_ROAD :{WHITE}... deze
|
||||
STR_ERROR_DRIVE_THROUGH_DIRECTION :{WHITE}... weg is in de verkeerde richting
|
||||
STR_ERROR_DRIVE_THROUGH_CORNER :{WHITE}... doorrij haltes kunnen geen bochten hebben
|
||||
STR_ERROR_DRIVE_THROUGH_JUNCTION :{WHITE}... doorrij haltes kunnen geen kruisingen hebben
|
||||
STR_ERROR_DRIVE_THROUGH_ON_ONEWAY_ROAD :{WHITE}... weg is eenrichtingsverkeer of geblokkeerd
|
||||
|
||||
# Station destruction related errors
|
||||
STR_ERROR_CAN_T_REMOVE_PART_OF_STATION :{WHITE}Kan deel van station niet verwijderen...
|
||||
|
||||
@@ -1159,7 +1159,7 @@ STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_HELPTEXT :Maximum amount
|
||||
STR_CONFIG_SETTING_INTEREST_RATE :Interest rate: {STRING2}
|
||||
STR_CONFIG_SETTING_INTEREST_RATE_HELPTEXT :Loan interest rate; also controls inflation, if enabled
|
||||
STR_CONFIG_SETTING_RUNNING_COSTS :Running costs: {STRING2}
|
||||
STR_CONFIG_SETTING_RUNNING_COSTS_HELPTEXT :Set level of maintainance and running costs of vehicles and infrastructure
|
||||
STR_CONFIG_SETTING_RUNNING_COSTS_HELPTEXT :Set level of maintenance and running costs of vehicles and infrastructure
|
||||
STR_CONFIG_SETTING_CONSTRUCTION_SPEED :Construction speed: {STRING2}
|
||||
STR_CONFIG_SETTING_CONSTRUCTION_SPEED_HELPTEXT :Limit the amount of construction actions for AIs
|
||||
STR_CONFIG_SETTING_VEHICLE_BREAKDOWNS :Vehicle breakdowns: {STRING2}
|
||||
@@ -4317,7 +4317,6 @@ STR_ERROR_DRIVE_THROUGH_ON_TOWN_ROAD :{WHITE}... this
|
||||
STR_ERROR_DRIVE_THROUGH_DIRECTION :{WHITE}... road facing in the wrong direction
|
||||
STR_ERROR_DRIVE_THROUGH_CORNER :{WHITE}... drive through stops can't have corners
|
||||
STR_ERROR_DRIVE_THROUGH_JUNCTION :{WHITE}... drive through stops can't have junctions
|
||||
STR_ERROR_DRIVE_THROUGH_ON_ONEWAY_ROAD :{WHITE}... road is one way or blocked
|
||||
|
||||
# Station destruction related errors
|
||||
STR_ERROR_CAN_T_REMOVE_PART_OF_STATION :{WHITE}Can't remove part of station...
|
||||
|
||||
@@ -1159,7 +1159,7 @@ STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_HELPTEXT :Maximum amount
|
||||
STR_CONFIG_SETTING_INTEREST_RATE :Interest rate: {STRING}
|
||||
STR_CONFIG_SETTING_INTEREST_RATE_HELPTEXT :Loan interest rate; also controls inflation, if enabled
|
||||
STR_CONFIG_SETTING_RUNNING_COSTS :Running costs: {STRING}
|
||||
STR_CONFIG_SETTING_RUNNING_COSTS_HELPTEXT :Set level of maintainance and running costs of vehicles and infrastructure
|
||||
STR_CONFIG_SETTING_RUNNING_COSTS_HELPTEXT :Set level of maintenance and running costs of vehicles and infrastructure
|
||||
STR_CONFIG_SETTING_CONSTRUCTION_SPEED :Construction speed: {STRING}
|
||||
STR_CONFIG_SETTING_CONSTRUCTION_SPEED_HELPTEXT :Limit the amount of construction actions for AIs
|
||||
STR_CONFIG_SETTING_VEHICLE_BREAKDOWNS :Vehicle breakdowns: {STRING}
|
||||
@@ -1648,7 +1648,7 @@ STR_CONFIG_SETTING_DEMAND_DISTANCE_HELPTEXT :If you set this
|
||||
STR_CONFIG_SETTING_DEMAND_SIZE :Amount of returning cargo for symmetric mode: {STRING}
|
||||
STR_CONFIG_SETTING_DEMAND_SIZE_HELPTEXT :Setting this to less than 100% makes the symmetric distribution behave more like the asymmetric one. Less cargo will be forcibly sent back if a certain amount is sent to a station. If you set it to 0% the symmetric distribution behaves just like the asymmetric one.
|
||||
STR_CONFIG_SETTING_SHORT_PATH_SATURATION :Saturation of short paths before using high-capacity paths: {STRING}
|
||||
STR_CONFIG_SETTING_SHORT_PATH_SATURATION_HELPTEXT :Frequently there are multiple paths between two given stations. Cargodist will saturate the shortest path first, then use the second shortest path until that is saturated and so on. Saturation is determined by an estimation of capacity and planned usage. Once it has saturated all paths, if there is still demand left, it will overload all paths, prefering the ones with high capacity. Most of the time the algorithm will not estimate the capacity accurately, though. This setting allows you to specify up to which percentage a shorter path must be saturated in the first pass before choosing the next longer one. Set it to less than 100% to avoid overcrowded stations in case of overestimated capacity.
|
||||
STR_CONFIG_SETTING_SHORT_PATH_SATURATION_HELPTEXT :Frequently there are multiple paths between two given stations. Cargodist will saturate the shortest path first, then use the second shortest path until that is saturated and so on. Saturation is determined by an estimation of capacity and planned usage. Once it has saturated all paths, if there is still demand left, it will overload all paths, preferring the ones with high capacity. Most of the time the algorithm will not estimate the capacity accurately, though. This setting allows you to specify up to which percentage a shorter path must be saturated in the first pass before choosing the next longer one. Set it to less than 100% to avoid overcrowded stations in case of overestimated capacity.
|
||||
|
||||
STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY :Speed units: {STRING}
|
||||
STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_HELPTEXT :Whenever a speed is shown in the user interface, show it in the selected units
|
||||
@@ -4317,7 +4317,6 @@ STR_ERROR_DRIVE_THROUGH_ON_TOWN_ROAD :{WHITE}... this
|
||||
STR_ERROR_DRIVE_THROUGH_DIRECTION :{WHITE}... road facing in the wrong direction
|
||||
STR_ERROR_DRIVE_THROUGH_CORNER :{WHITE}... drive through stops can't have corners
|
||||
STR_ERROR_DRIVE_THROUGH_JUNCTION :{WHITE}... drive through stops can't have junctions
|
||||
STR_ERROR_DRIVE_THROUGH_ON_ONEWAY_ROAD :{WHITE}... road is one way or blocked
|
||||
|
||||
# Station destruction related errors
|
||||
STR_ERROR_CAN_T_REMOVE_PART_OF_STATION :{WHITE}Can't remove part of station...
|
||||
|
||||
@@ -4284,7 +4284,6 @@ STR_ERROR_DRIVE_THROUGH_ON_TOWN_ROAD :{WHITE}... see
|
||||
STR_ERROR_DRIVE_THROUGH_DIRECTION :{WHITE}... tee on vales suunas
|
||||
STR_ERROR_DRIVE_THROUGH_CORNER :{WHITE}... nurgad ei saa läbisõidupeatustes olla
|
||||
STR_ERROR_DRIVE_THROUGH_JUNCTION :{WHITE}... ristmikud ei saa olla läbisõidupeatustes
|
||||
STR_ERROR_DRIVE_THROUGH_ON_ONEWAY_ROAD :{WHITE}... tee on ühesuunaline või blokeeritud
|
||||
|
||||
# Station destruction related errors
|
||||
STR_ERROR_CAN_T_REMOVE_PART_OF_STATION :{WHITE}Siinset jaamablokki ei saa lammutada...
|
||||
|
||||
@@ -4317,7 +4317,6 @@ STR_ERROR_DRIVE_THROUGH_ON_TOWN_ROAD :{WHITE}... kunt
|
||||
STR_ERROR_DRIVE_THROUGH_DIRECTION :{WHITE}... tie on väärin päin
|
||||
STR_ERROR_DRIVE_THROUGH_CORNER :{WHITE}... läpiajettavissa pysäkeissä ei voi olla mutkia
|
||||
STR_ERROR_DRIVE_THROUGH_JUNCTION :{WHITE}... läpiajettavissa pysäkeissä ei voi olla risteyksiä
|
||||
STR_ERROR_DRIVE_THROUGH_ON_ONEWAY_ROAD :{WHITE}... tie on yksisuuntainen tai suljettu
|
||||
|
||||
# Station destruction related errors
|
||||
STR_ERROR_CAN_T_REMOVE_PART_OF_STATION :{WHITE}Aseman osaa ei voi poistaa...
|
||||
|
||||
@@ -3025,13 +3025,14 @@ STR_NEWGRF_LIST_MISSING :{RED}Modules ma
|
||||
STR_NEWGRF_BROKEN :{WHITE}Le comportement du NewGRF "{0:STRING}" peut provoquer des erreurs de synchronisation et/ou des plantages
|
||||
STR_NEWGRF_BROKEN_POWERED_WAGON :{WHITE}Il a modifié l'état de wagon motorisé pour "{1:ENGINE}" en dehors du dépôt
|
||||
STR_NEWGRF_BROKEN_VEHICLE_LENGTH :{WHITE}Il a modifié la longueur de véhicule pour "{1:ENGINE}" en dehors du dépôt
|
||||
STR_NEWGRF_BROKEN_CAPACITY :{WHITE}Il a changé la capacité pour '{1:ENGINE}' hors d'un dépôt ou d'un réaménagement
|
||||
STR_NEWGRF_BROKEN_CAPACITY :{WHITE}Il a changé la capacité pour "{1:ENGINE}" hors d'un dépôt ou d'un réaménagement
|
||||
STR_BROKEN_VEHICLE_LENGTH :{WHITE}Le train "{VEHICLE}" appartenant à "{COMPANY}" a une longueur invalide. Cela est probablement dû à des problèmes avec des NewGRFs, et peut provoquer des erreurs de synchronisation ou planter le jeu.
|
||||
|
||||
STR_NEWGRF_BUGGY :{WHITE}Le module NewGRF "{0:STRING}" fournit une information incorrecte
|
||||
STR_NEWGRF_BUGGY_ARTICULATED_CARGO :{WHITE}Les informations de cargaison/réaménagement pour "{1:ENGINE}" après sa construction sont différentes de celles de la liste d'achat. Cela peut causer un échec de réaménagement lors de l'auto-renouvellement/remplacement.
|
||||
STR_NEWGRF_BUGGY_ENDLESS_PRODUCTION_CALLBACK :{WHITE}"{1:STRING}" a causé une boucle infinie dans la fonction de rappel de production
|
||||
STR_NEWGRF_BUGGY_UNKNOWN_CALLBACK_RESULT :{WHITE}Callback {1:HEX} a retourné un résultat invalide {2:HEX}
|
||||
STR_NEWGRF_BUGGY_UNKNOWN_CALLBACK_RESULT :{WHITE}La fonction de rappel {1:HEX} a retourné un résultat invalide {2:HEX}
|
||||
STR_NEWGRF_BUGGY_INVALID_CARGO_PRODUCTION_CALLBACK :{WHITE}"{1:STRING}" a renvoyé un type de cargaison invalide dans la fonction de rappel de production à {2:HEX}
|
||||
|
||||
# 'User removed essential NewGRFs'-placeholders for stuff without specs
|
||||
STR_NEWGRF_INVALID_CARGO :<marchandise invalide>
|
||||
@@ -4317,7 +4318,6 @@ STR_ERROR_DRIVE_THROUGH_ON_TOWN_ROAD :{WHITE}... cett
|
||||
STR_ERROR_DRIVE_THROUGH_DIRECTION :{WHITE}... mauvaise orientation de la route
|
||||
STR_ERROR_DRIVE_THROUGH_CORNER :{WHITE}... les arrêts ne peuvent pas avoir de virages
|
||||
STR_ERROR_DRIVE_THROUGH_JUNCTION :{WHITE}... les arrêts ne peuvent pas avoir de jonctions
|
||||
STR_ERROR_DRIVE_THROUGH_ON_ONEWAY_ROAD :{WHITE}... la route est à sens unique ou bloquée
|
||||
|
||||
# Station destruction related errors
|
||||
STR_ERROR_CAN_T_REMOVE_PART_OF_STATION :{WHITE}Impossible de supprimer une partie de la gare...
|
||||
|
||||
@@ -4496,7 +4496,6 @@ STR_ERROR_DRIVE_THROUGH_ON_TOWN_ROAD :{WHITE}... tha
|
||||
STR_ERROR_DRIVE_THROUGH_DIRECTION :{WHITE}... tha comhair an rathaid cearr
|
||||
STR_ERROR_DRIVE_THROUGH_CORNER :{WHITE}... chan urrainn dha dh’oiseanan a bhith aig stèiseanan draibhidh troimhe
|
||||
STR_ERROR_DRIVE_THROUGH_JUNCTION :{WHITE}... chan urrainn dha ghoibhlean a bhith aig stèiseanan draibhidh troimhe
|
||||
STR_ERROR_DRIVE_THROUGH_ON_ONEWAY_ROAD :{WHITE}... rathad aon-shligheach no bacte
|
||||
|
||||
# Station destruction related errors
|
||||
STR_ERROR_CAN_T_REMOVE_PART_OF_STATION :{WHITE}Cha ghabh pàirt dhen stèisean toirt air falbh...
|
||||
|
||||
@@ -4302,7 +4302,6 @@ STR_ERROR_DRIVE_THROUGH_ON_TOWN_ROAD :{WHITE}... dies
|
||||
STR_ERROR_DRIVE_THROUGH_DIRECTION :{WHITE}... Straße verläuft in die falsche Richtung
|
||||
STR_ERROR_DRIVE_THROUGH_CORNER :{WHITE}... Bus- und Lkw-Haltestellen können nicht um die Kurve gehen
|
||||
STR_ERROR_DRIVE_THROUGH_JUNCTION :{WHITE}... Bus- und Lkw-Haltestellen können keine Abzweigung haben
|
||||
STR_ERROR_DRIVE_THROUGH_ON_ONEWAY_ROAD :{WHITE}...Einbahnstraße oder blockierter Weg
|
||||
|
||||
# Station destruction related errors
|
||||
STR_ERROR_CAN_T_REMOVE_PART_OF_STATION :{WHITE}Dieser Teil der Station kann nicht entfernt werden...
|
||||
|
||||
@@ -4430,7 +4430,6 @@ 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}Δεν μπορεί να αφαιρεθεί μέρος του σταθμού...
|
||||
|
||||
@@ -4275,7 +4275,6 @@ 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}... לא ניתן לבטל חלק מהתחנה
|
||||
|
||||
@@ -4381,7 +4381,6 @@ STR_ERROR_DRIVE_THROUGH_ON_TOWN_ROAD :{WHITE}... ez e
|
||||
STR_ERROR_DRIVE_THROUGH_DIRECTION :{WHITE}... az út a másik irányba vezet
|
||||
STR_ERROR_DRIVE_THROUGH_CORNER :{WHITE}... áthaladó megállóhelyeken nem lehet kanyar
|
||||
STR_ERROR_DRIVE_THROUGH_JUNCTION :{WHITE}... áthaladó megállóhelyeken nem lehet elágazás
|
||||
STR_ERROR_DRIVE_THROUGH_ON_ONEWAY_ROAD :{WHITE}... az út egyirányú vagy blokkolt
|
||||
|
||||
# Station destruction related errors
|
||||
STR_ERROR_CAN_T_REMOVE_PART_OF_STATION :{WHITE}Nem lehet eltávolítani az állomás részét...
|
||||
|
||||
@@ -464,6 +464,7 @@ STR_TOOLBAR_SOUND_MUSIC :Suara/musik
|
||||
############ range for message menu starts
|
||||
STR_NEWS_MENU_LAST_MESSAGE_NEWS_REPORT :Pesan/Berita terakhir
|
||||
STR_NEWS_MENU_MESSAGE_HISTORY_MENU :Berita Lampau
|
||||
STR_NEWS_MENU_DELETE_ALL_MESSAGES :Hapus semua pesan
|
||||
############ range ends here
|
||||
|
||||
############ range for about menu starts
|
||||
@@ -475,6 +476,7 @@ STR_ABOUT_MENU_SCREENSHOT :Ambil gambar
|
||||
STR_ABOUT_MENU_ZOOMIN_SCREENSHOT :Ambil gambar dengan diperbesar
|
||||
STR_ABOUT_MENU_DEFAULTZOOM_SCREENSHOT :Ambil gambar dengan perbesaran normal
|
||||
STR_ABOUT_MENU_GIANT_SCREENSHOT :Ambil gambar keseluruhan peta
|
||||
STR_ABOUT_MENU_SHOW_FRAMERATE :Tampilkan laju bingkai
|
||||
STR_ABOUT_MENU_ABOUT_OPENTTD :Tentang 'OpenTTD'
|
||||
STR_ABOUT_MENU_SPRITE_ALIGNER :Penjajar Sprite
|
||||
STR_ABOUT_MENU_TOGGLE_BOUNDING_BOXES :Hidup/Matikan kotak batas
|
||||
@@ -989,7 +991,10 @@ STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_NORMAL :Normal
|
||||
STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_2X_ZOOM :Kali dua
|
||||
STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_4X_ZOOM :Kali empat
|
||||
|
||||
STR_GAME_OPTIONS_FONT_ZOOM :{BLACK}Ukuran font
|
||||
|
||||
STR_GAME_OPTIONS_FONT_ZOOM_DROPDOWN_NORMAL :Normal
|
||||
STR_GAME_OPTIONS_FONT_ZOOM_DROPDOWN_4X_ZOOM :4 kali
|
||||
|
||||
STR_GAME_OPTIONS_BASE_GRF :{BLACK}Set Grafik Dasar
|
||||
STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Pilih grafik dasar yang digunakan
|
||||
@@ -1221,7 +1226,7 @@ STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT :Tujuan baru sta
|
||||
STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT_HELPTEXT :Biasanya, kendaraan akan berhenti di setiap stasiun yang di lewati. Dengan mengaktifkan pengaturan ini, maka kendaraan akan melewati semua stasiun dalam perjalanan ke tujuan akhir. Perhatikan, bahwa pengaturan ini hanya mendefinisikan nilai default. Perintah individu dapat diatur
|
||||
STR_CONFIG_SETTING_STOP_LOCATION :Order kereta yang baru aslinya berhenti {STRING} dari stasiun
|
||||
STR_CONFIG_SETTING_STOP_LOCATION_HELPTEXT :Tempat kereta akan berhenti di peron stasiun. 'Dekat akhir' berarti dekat dengan titik masuk, 'tengah' berarti di tengah-tengah peron, dan 'jauh dari akhir' berarti jauh dari titik masuk
|
||||
STR_CONFIG_SETTING_STOP_LOCATION_NEAR_END :hampir selesai
|
||||
STR_CONFIG_SETTING_STOP_LOCATION_NEAR_END :tepi terdekat
|
||||
STR_CONFIG_SETTING_STOP_LOCATION_MIDDLE :tengah
|
||||
STR_CONFIG_SETTING_STOP_LOCATION_FAR_END :jauh di belakang
|
||||
STR_CONFIG_SETTING_AUTOSCROLL :Geser tampilan saat mouse ada di tepi: {STRING}
|
||||
@@ -1258,6 +1263,7 @@ STR_CONFIG_SETTING_DYNAMIC_ENGINES_EXISTING_VEHICLES :{WHITE}Tidak di
|
||||
STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE :Pemeliharaan Infrastruktur: {STRING}
|
||||
STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE_HELPTEXT :Jika dinyalakan, infrastruktur membutuhkan biaya pemeliharaan. Biaya berkembang secara proporsional sesuai dengan ukuran jaringan, lebih berdampak pada perusahaan besar dari pada perusahaan kecil
|
||||
|
||||
STR_CONFIG_SETTING_COMPANY_STARTING_COLOUR_HELPTEXT :Pilih warna awal perusahaan
|
||||
|
||||
STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS :Bandara tidak kedaluarsa: {STRING}
|
||||
STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS_HELPTEXT :Menyalakan setelan ini membuat semua jenis bandara tetap ada selamanya sejak pendesainanya
|
||||
@@ -1812,6 +1818,7 @@ STR_CHEAT_CHANGE_DATE_QUERY_CAPT :{WHITE}Ubah tah
|
||||
STR_CHEAT_SETUP_PROD :{LTBLUE}Aktifkan modifikasi nilai produksi: {ORANGE}{STRING}
|
||||
|
||||
# Livery window
|
||||
STR_LIVERY_CAPTION :{WHITE}{COMPANY} - Skema Warna
|
||||
|
||||
STR_LIVERY_GENERAL_TOOLTIP :{BLACK}Tampilkan skema warna umum
|
||||
STR_LIVERY_TRAIN_TOOLTIP :{BLACK}Tampilkan skema warna kereta
|
||||
@@ -2698,6 +2705,7 @@ STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD
|
||||
# Framerate display window
|
||||
STR_FRAMERATE_CAPTION_SMALL :{STRING}{WHITE} ({DECIMAL}x)
|
||||
STR_FRAMERATE_RATE_GAMELOOP :{WHITE}Rata simulasi: {STRING}
|
||||
STR_FRAMERATE_RATE_GAMELOOP_TOOLTIP :{BLACK}Jumlah detak permainan tersimulasi per detik.
|
||||
STR_FRAMERATE_SPEED_FACTOR_TOOLTIP :{BLACK}Beberapa cepat permainan lagi berjalan, dibanding dengan kecepatan diharapkan memakai rata simulasi biasa.
|
||||
STR_FRAMERATE_CURRENT :{WHITE}Sekarang
|
||||
STR_FRAMERATE_DATA_POINTS :{WHITE}Data tergantung oleh ukuran {COMMA}
|
||||
@@ -2714,6 +2722,7 @@ STR_FRAMERATE_GL_SHIPS :{WHITE} Titik k
|
||||
STR_FRAMERATE_GL_AIRCRAFT :{WHITE} Titik pesawat:
|
||||
STR_FRAMERATE_GL_LANDSCAPE :{WHITE} Titik dunia:
|
||||
STR_FRAMERATE_DRAWING_VIEWPORTS :{WHITE} Viewport dunia:
|
||||
STR_FRAMERATE_VIDEO :{BLACK}Keluaran Video:
|
||||
STR_FRAMERATE_SOUND :{WHITE}Mixing suara:
|
||||
############ End of leave-in-this-order
|
||||
############ Leave those lines in this order!!
|
||||
@@ -2724,6 +2733,7 @@ STR_FRAMETIME_CAPTION_GL_SHIPS :Titik kapal
|
||||
STR_FRAMETIME_CAPTION_GL_AIRCRAFT :Titik pesawat
|
||||
STR_FRAMETIME_CAPTION_GL_LANDSCAPE :Titik dunia
|
||||
STR_FRAMETIME_CAPTION_SOUND :Mixing suara
|
||||
STR_FRAMETIME_CAPTION_AI :AI {NUM} {STRING}
|
||||
############ End of leave-in-this-order
|
||||
|
||||
|
||||
@@ -2913,6 +2923,7 @@ STR_SPRITE_ALIGNER_PREVIOUS_BUTTON :{BLACK}Sprite s
|
||||
STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}Lanjutkan ke sprite normal sebelumnya, lewati sembarang sprite bayangan/warna ulang/huruf dan pembungkus saat mulai
|
||||
STR_SPRITE_ALIGNER_SPRITE_TOOLTIP :{BLACK}Mewakili sprite yang sedang dipilih. Penjajaran diabaikan ketika sprite ini digambar
|
||||
STR_SPRITE_ALIGNER_MOVE_TOOLTIP :{BLACK}Pindahkan sprite, mengubah offset X dan Y
|
||||
STR_SPRITE_ALIGNER_RESET_BUTTON :{BLACK}Reset relatif
|
||||
STR_SPRITE_ALIGNER_PICKER_BUTTON :{BLACK}Pilih sprite
|
||||
STR_SPRITE_ALIGNER_PICKER_TOOLTIP :{BLACK}Pilih sebuah sprite di manapun pada layar
|
||||
|
||||
@@ -3146,11 +3157,11 @@ STR_STATION_VIEW_ACCEPTS_TOOLTIP :{BLACK}Tampilka
|
||||
STR_STATION_VIEW_ACCEPTS_CARGO :{BLACK}Menerima: {WHITE}{CARGO_LIST}
|
||||
|
||||
STR_STATION_VIEW_EXCLUSIVE_RIGHTS_SELF :{BLACK}Stasiun memiliki hak transportasi eksklusif di kota ini
|
||||
STR_STATION_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{YELLOW}{COMPANY}{BLACK} beli hak transportasi eksklusif di kota ini
|
||||
STR_STATION_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{YELLOW}{COMPANY}{BLACK} memiliki hak transportasi eksklusif di kota ini
|
||||
|
||||
STR_STATION_VIEW_RATINGS_BUTTON :{BLACK}Peringkat
|
||||
STR_STATION_VIEW_RATINGS_TOOLTIP :{BLACK}Tampilkna peringkat dari stasiun
|
||||
STR_STATION_VIEW_SUPPLY_RATINGS_TITLE :{BLACK}Asupan bulanan dan penilaian tempatan:
|
||||
STR_STATION_VIEW_SUPPLY_RATINGS_TITLE :{BLACK}Asupan bulanan dan peringkat layanan:
|
||||
STR_STATION_VIEW_CARGO_SUPPLY_RATING :{WHITE}{STRING}: {YELLOW}{COMMA} / {STRING} ({COMMA}%)
|
||||
|
||||
STR_STATION_VIEW_GROUP :{BLACK}Pengelompokkan
|
||||
@@ -4249,7 +4260,6 @@ STR_ERROR_DRIVE_THROUGH_ON_TOWN_ROAD :{WHITE}... jala
|
||||
STR_ERROR_DRIVE_THROUGH_DIRECTION :{WHITE}... menghadap pada arah yang salah
|
||||
STR_ERROR_DRIVE_THROUGH_CORNER :{WHITE}... terminal lintas-lalu tak bisa memiliki sudut
|
||||
STR_ERROR_DRIVE_THROUGH_JUNCTION :{WHITE}... terminal lintas-lalu tak bisa memiliki simpangan
|
||||
STR_ERROR_DRIVE_THROUGH_ON_ONEWAY_ROAD :{WHITE}... jalannya satu arah atau terhalang
|
||||
|
||||
# Station destruction related errors
|
||||
STR_ERROR_CAN_T_REMOVE_PART_OF_STATION :{WHITE}Tidak dapat menghapus bagian dari stasiun...
|
||||
|
||||
@@ -3492,8 +3492,8 @@ STR_BUY_VEHICLE_TRAIN_ELRAIL_CAPTION :Nuovi veicoli f
|
||||
STR_BUY_VEHICLE_TRAIN_MONORAIL_CAPTION :Nuovi veicoli monorotaia
|
||||
STR_BUY_VEHICLE_TRAIN_MAGLEV_CAPTION :Nuovi veicoli maglev
|
||||
|
||||
STR_BUY_VEHICLE_TRAIN_ALL_CAPTION :Veicoli ferroviari
|
||||
STR_BUY_VEHICLE_ROAD_VEHICLE_CAPTION :Nuovi automezzi
|
||||
STR_BUY_VEHICLE_TRAIN_ALL_CAPTION :Nuovi veicoli ferroviari
|
||||
STR_BUY_VEHICLE_ROAD_VEHICLE_CAPTION :Nuovi veicoli stradali
|
||||
STR_BUY_VEHICLE_SHIP_CAPTION :Nuove navi
|
||||
STR_BUY_VEHICLE_AIRCRAFT_CAPTION :Nuovo aeromobile
|
||||
|
||||
@@ -3644,7 +3644,7 @@ STR_DEPOT_SELL_CONFIRMATION_TEXT :{YELLOW}Stai pe
|
||||
STR_ENGINE_PREVIEW_CAPTION :{WHITE}Messaggio da un costruttore di veicoli
|
||||
STR_ENGINE_PREVIEW_MESSAGE :{GOLD}Abbiamo appena progettato un{G "" "" a} nuov{G o o a} {STRING} - È interessato ad un anno di uso esclusivo di questo veicolo, in modo da permetterci di valutarne le prestazioni prima di renderlo disponibile sul mercato?
|
||||
STR_ENGINE_PREVIEW_RAILROAD_LOCOMOTIVE :{G=f}locomotiva
|
||||
STR_ENGINE_PREVIEW_ROAD_VEHICLE :{G=m}automezzo
|
||||
STR_ENGINE_PREVIEW_ROAD_VEHICLE :{G=m}veicolo stradale
|
||||
STR_ENGINE_PREVIEW_AIRCRAFT :{G=m}aeromobile
|
||||
STR_ENGINE_PREVIEW_SHIP :{G=f}nave
|
||||
STR_ENGINE_PREVIEW_MONORAIL_LOCOMOTIVE :{G=f}motrice monorotaia
|
||||
@@ -4347,7 +4347,6 @@ STR_ERROR_DRIVE_THROUGH_ON_TOWN_ROAD :{WHITE}... ques
|
||||
STR_ERROR_DRIVE_THROUGH_DIRECTION :{WHITE}... strada rivolta nella direzione sbagliata
|
||||
STR_ERROR_DRIVE_THROUGH_CORNER :{WHITE}... le fermate passanti non possono trovarsi in curva
|
||||
STR_ERROR_DRIVE_THROUGH_JUNCTION :{WHITE}... le fermate passanti non possono avere raccordi
|
||||
STR_ERROR_DRIVE_THROUGH_ON_ONEWAY_ROAD :{WHITE}... la strada è bloccata o a senso unico
|
||||
|
||||
# Station destruction related errors
|
||||
STR_ERROR_CAN_T_REMOVE_PART_OF_STATION :{WHITE}Impossibile rimuovere parte della stazione...
|
||||
|
||||
1165
src/lang/korean.txt
1165
src/lang/korean.txt
File diff suppressed because it is too large
Load Diff
@@ -4479,7 +4479,6 @@ STR_ERROR_DRIVE_THROUGH_ON_TOWN_ROAD :{WHITE}... via
|
||||
STR_ERROR_DRIVE_THROUGH_DIRECTION :{WHITE}... viae directio non convenit
|
||||
STR_ERROR_DRIVE_THROUGH_CORNER :{WHITE}... stationi perviae non licet esse curva
|
||||
STR_ERROR_DRIVE_THROUGH_JUNCTION :{WHITE}... stationi perviae non licet compita habere
|
||||
STR_ERROR_DRIVE_THROUGH_ON_ONEWAY_ROAD :{WHITE}... via est monodromus vel obstructa
|
||||
|
||||
# Station destruction related errors
|
||||
STR_ERROR_CAN_T_REMOVE_PART_OF_STATION :{WHITE}Non licet partem stationis removere...
|
||||
|
||||
@@ -226,8 +226,8 @@ STR_UNITS_HEIGHT_METRIC :{COMMA}{NBSP}m
|
||||
STR_UNITS_HEIGHT_SI :{COMMA}{NBSP}m
|
||||
|
||||
# Common window strings
|
||||
STR_LIST_FILTER_TITLE :{BLACK}Filter String:
|
||||
STR_LIST_FILTER_OSKTITLE :{BLACK}Filter String
|
||||
STR_LIST_FILTER_TITLE :{BLACK}Filter-String:
|
||||
STR_LIST_FILTER_OSKTITLE :{BLACK}Filter-String
|
||||
STR_LIST_FILTER_TOOLTIP :{BLACK}Filter d'Lëscht op e Wuert
|
||||
|
||||
STR_TOOLTIP_GROUP_ORDER :{BLACK}Wiel Gruppéierreihefollëg
|
||||
@@ -675,6 +675,7 @@ STR_MUSIC_TOOLTIP_TOGGLE_PROGRAM_SHUFFLE :{BLACK}Schalt d
|
||||
STR_MUSIC_TOOLTIP_SHOW_MUSIC_TRACK_SELECTION :{BLACK}Weis d'Fënster fir Musik ze wielen
|
||||
|
||||
# Playlist window
|
||||
STR_PLAYLIST_MUSIC_SELECTION_SETNAME :{WHITE}Musik-Programm - '{STRING}'
|
||||
STR_PLAYLIST_TRACK_NAME :{TINY_FONT}{LTBLUE}{ZEROFILL_NUM} "{STRING}"
|
||||
STR_PLAYLIST_TRACK_INDEX :{TINY_FONT}{BLACK}Lidder Index
|
||||
STR_PLAYLIST_PROGRAM :{TINY_FONT}{BLACK}Programm - '{STRING}'
|
||||
@@ -995,6 +996,7 @@ STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_2X_ZOOM :Duebel
|
||||
STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_4X_ZOOM :Véierfach
|
||||
|
||||
STR_GAME_OPTIONS_FONT_ZOOM :{BLACK}Schrëftgréisst
|
||||
STR_GAME_OPTIONS_FONT_ZOOM_DROPDOWN_TOOLTIP :{BLACK}Wiel d'Interface-Schrëftgréisst aus
|
||||
|
||||
STR_GAME_OPTIONS_FONT_ZOOM_DROPDOWN_NORMAL :Normal
|
||||
STR_GAME_OPTIONS_FONT_ZOOM_DROPDOWN_2X_ZOOM :Duebel Gréisst
|
||||
@@ -1355,6 +1357,7 @@ STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_VIOLET :Mof
|
||||
STR_CONFIG_SETTING_SCROLLMODE :Usiicht-Scrollverhalen: {STRING}
|
||||
STR_CONFIG_SETTING_SCROLLMODE_HELPTEXT :Verhalen beim Scrolle vun der Kaart
|
||||
STR_CONFIG_SETTING_SCROLLMODE_DEFAULT :D'Usiicht mat der rietser Maustast bewegen, Maus-Positioun gespaart
|
||||
STR_CONFIG_SETTING_SCROLLMODE_RMB :D'Kaart mat der rietser Maustast bewegen
|
||||
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
|
||||
@@ -2709,13 +2712,19 @@ STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD
|
||||
|
||||
# Framerate display window
|
||||
STR_FRAMERATE_CAPTION :{WHITE}Biller pro Sekonn
|
||||
STR_FRAMERATE_CAPTION_SMALL :{STRING}{WHITE} ({DECIMAL}x)
|
||||
STR_FRAMERATE_RATE_GAMELOOP_TOOLTIP :{BLACK}Unzuel Gameticks déi pro Sekonn simuléiert ginn.
|
||||
STR_FRAMERATE_RATE_BLITTER :{BLACK}Grafikframerate: {STRING}
|
||||
STR_FRAMERATE_RATE_BLITTER_TOOLTIP :{BLACK}Unzuel u Videobiller déi pro Sekonn gerendert ginn.
|
||||
STR_FRAMERATE_SPEED_FACTOR :{BLACK}Aktuelle Spillgeschw.-Faktor: {DECIMAL}x
|
||||
STR_FRAMERATE_SPEED_FACTOR_TOOLTIP :{BLACK}Wéi séier d'Spill aktuell leeft, am Verglach mat der Geschw. vun der normaler Simulatioun.
|
||||
STR_FRAMERATE_CURRENT :{WHITE}Aktuell
|
||||
STR_FRAMERATE_AVERAGE :{WHITE}Mëttel
|
||||
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} Biller/s
|
||||
STR_FRAMERATE_FPS_WARN :{YELLOW}{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!!
|
||||
@@ -2723,10 +2732,12 @@ STR_FRAMERATE_GAMELOOP :{BLACK}Spill to
|
||||
STR_FRAMERATE_GL_TRAINS :{BLACK} Zuchticks:
|
||||
STR_FRAMERATE_GL_ROADVEHS :{BLACK} Stroossegefierer Ticken:
|
||||
STR_FRAMERATE_GL_LINKGRAPH :{BLACK} Linkgrafik-Verzögerung:
|
||||
STR_FRAMERATE_DRAWING :{BLACK}Graphikrendering:
|
||||
STR_FRAMERATE_DRAWING :{BLACK}Grafikrendering:
|
||||
STR_FRAMERATE_DRAWING_VIEWPORTS :{BLACK} Welt-Usiichten:
|
||||
STR_FRAMERATE_VIDEO :{BLACK}Video-output:
|
||||
STR_FRAMERATE_ALLSCRIPTS :{BLACK} GS/KI Total:
|
||||
STR_FRAMERATE_GAMESCRIPT :{BLACK} Gamescript:
|
||||
STR_FRAMERATE_AI :{BLACK} KI {NUM} {STRING}
|
||||
############ End of leave-in-this-order
|
||||
############ Leave those lines in this order!!
|
||||
STR_FRAMETIME_CAPTION_GAMELOOP :Spill-Loop
|
||||
@@ -2734,8 +2745,14 @@ STR_FRAMETIME_CAPTION_GL_ECONOMY :Wuerenhandling
|
||||
STR_FRAMETIME_CAPTION_GL_TRAINS :Zuchticks
|
||||
STR_FRAMETIME_CAPTION_GL_ROADVEHS :Stroossegefierer Ticken
|
||||
STR_FRAMETIME_CAPTION_GL_SHIPS :Schëffticker
|
||||
STR_FRAMETIME_CAPTION_GL_LANDSCAPE :Weltticks
|
||||
STR_FRAMETIME_CAPTION_DRAWING :Grafikrendering
|
||||
STR_FRAMETIME_CAPTION_DRAWING_VIEWPORTS :Weltusiicht-Rendering
|
||||
STR_FRAMETIME_CAPTION_VIDEO :Video-output
|
||||
STR_FRAMETIME_CAPTION_SOUND :Soundmixing
|
||||
STR_FRAMETIME_CAPTION_ALLSCRIPTS :GS/KI Scripttotaler
|
||||
STR_FRAMETIME_CAPTION_GAMESCRIPT :Spill-Script
|
||||
STR_FRAMETIME_CAPTION_AI :KI {NUM} {STRING}
|
||||
############ End of leave-in-this-order
|
||||
|
||||
|
||||
@@ -2761,6 +2778,7 @@ STR_SAVELOAD_DETAIL_CAPTION :{BLACK}Detailer
|
||||
STR_SAVELOAD_DETAIL_NOT_AVAILABLE :{BLACK}Keng Informatioun do
|
||||
STR_SAVELOAD_DETAIL_COMPANY_INDEX :{SILVER}{COMMA}: {WHITE}{STRING}
|
||||
STR_SAVELOAD_DETAIL_GRFSTATUS :{SILVER}NewGRF: {WHITE}{STRING}
|
||||
STR_SAVELOAD_FILTER_TITLE :{BLACK}Filter-String:
|
||||
STR_SAVELOAD_OVERWRITE_TITLE :{WHITE}Datei iwwerschreiwen
|
||||
|
||||
STR_SAVELOAD_OSKTITLE :{BLACK}Gëff dem Spillstand en Numm
|
||||
@@ -2879,6 +2897,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_DEFAULT :Standard (S)
|
||||
STR_NEWGRF_SETTINGS_PALETTE_DEFAULT_32BPP :Standard (S) / 32 bpp
|
||||
STR_NEWGRF_SETTINGS_PALETTE_LEGACY :Legacy (W)
|
||||
STR_NEWGRF_SETTINGS_PARAMETER :{BLACK}Parameter: {SILVER}{STRING}
|
||||
@@ -3037,7 +3056,7 @@ STR_TOWN_VIEW_TOWN_CAPTION :{WHITE}{TOWN}
|
||||
STR_TOWN_VIEW_CITY_CAPTION :{WHITE}{TOWN} (Stad)
|
||||
STR_TOWN_VIEW_POPULATION_HOUSES :{BLACK}Awunner: {ORANGE}{COMMA}{BLACK} Haiser: {ORANGE}{COMMA}
|
||||
STR_TOWN_VIEW_CARGO_LAST_MONTH_MAX :{BLACK}{CARGO_LIST} leschte Mount: {ORANGE}{COMMA}{BLACK} Max: {ORANGE}{COMMA}
|
||||
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH :{BLACK}Gidder gebraucht fir Stadwuesstem:
|
||||
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH :{BLACK}Gidder gebraucht fir Stadwuesstum:
|
||||
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_GENERAL :{ORANGE}{STRING}{RED} gebraucht
|
||||
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_WINTER :{ORANGE}{STRING}{BLACK} gebraucht am Wanter
|
||||
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_DELIVERED_GENERAL :{ORANGE}{STRING}{GREEN} geliwwert
|
||||
@@ -3342,6 +3361,7 @@ STR_INDUSTRY_VIEW_LOCATION_TOOLTIP :{BLACK}Zentréi
|
||||
STR_INDUSTRY_VIEW_PRODUCTION_LEVEL :{BLACK}Produktiounslevel: {YELLOW}{COMMA}%
|
||||
STR_INDUSTRY_VIEW_INDUSTRY_ANNOUNCED_CLOSURE :{YELLOW}D'Industrie annoncéiert dass se zougemaach gëtt
|
||||
|
||||
STR_INDUSTRY_VIEW_PRODUCES_N_CARGO :{BLACK}Produzéiert: {YELLOW}{STRING}{STRING}
|
||||
STR_INDUSTRY_VIEW_CARGO_LIST_EXTENSION :, {STRING}{STRING}
|
||||
|
||||
STR_INDUSTRY_VIEW_REQUIRES :{BLACK}Brauch:
|
||||
@@ -3820,7 +3840,7 @@ STR_ORDER_DROP_TRANSFER :Transferéieren
|
||||
STR_ORDER_DROP_NO_UNLOADING :Net entlueden
|
||||
STR_ORDER_TOOLTIP_UNLOAD :{BLACK}Wiesselt d'Entluedverhale vun dem ungewielten Optrag
|
||||
|
||||
STR_ORDER_REFIT :{BLACK}Ëmbauen
|
||||
STR_ORDER_REFIT :{BLACK}Embauen
|
||||
STR_ORDER_REFIT_TOOLTIP :{BLACK}Wielt an wéi een Luedungstyp sollt emgebaut ginn. Ctrl+Klick fir den Ëmbau ze läschen
|
||||
STR_ORDER_REFIT_AUTO :{BLACK}Embauen an der Statioun
|
||||
STR_ORDER_REFIT_AUTO_TOOLTIP :{BLACK}Wiel wellëch Wuerentypen sollen auto-ersat ginn an dësem Optrag. Ctrl+Klick fir all Auto-Erneierungen wechzehuelen. Auto-Erneiern geht just wann d'Gefier ët erlaabt
|
||||
@@ -3916,8 +3936,8 @@ STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY :(Net entlueden
|
||||
STR_ORDER_NO_UNLOAD_NO_LOAD :(Keen Ent- an Belueden)
|
||||
|
||||
STR_ORDER_AUTO_REFIT :(Embauen op {STRING})
|
||||
STR_ORDER_FULL_LOAD_REFIT :(Voll lueden mat Embauen op {STRING})
|
||||
STR_ORDER_FULL_LOAD_ANY_REFIT :(Voll lueden mat all Wueren mat Embauen op {STRING})
|
||||
STR_ORDER_FULL_LOAD_REFIT :(Voll lueden mat ëmbauen op {STRING})
|
||||
STR_ORDER_FULL_LOAD_ANY_REFIT :(Voll lueden mat all Wueren mat ëmbauen op {STRING})
|
||||
STR_ORDER_UNLOAD_REFIT :(Entlueden an Wueren lueden mat Embauen op {STRING})
|
||||
STR_ORDER_UNLOAD_FULL_LOAD_REFIT :(Entlueden an op voll Luedung waarden mat Embauen op {STRING})
|
||||
STR_ORDER_UNLOAD_FULL_LOAD_ANY_REFIT :(Entlueden an waard op iergendeng Volluedung mat Embauen op {STRING})
|
||||
@@ -4276,7 +4296,6 @@ 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...
|
||||
|
||||
@@ -838,7 +838,7 @@ STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_COAL :{BIG_FONT}{BLAC
|
||||
STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_OIL :{BIG_FONT}{BLACK}Nye oljereserver funnet i {INDUSTRY}!{}En dobling i produksjonen ventes!
|
||||
STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_FARM :{BIG_FONT}{BLACK}Forbedring i gårdbruksmetoder på {INDUSTRY} forventes å doble produksjonen!
|
||||
STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_SMOOTH :{BIG_FONT}{BLACK}Produksjonen av {STRING} ved {INDUSTRY} øker med {COMMA}{NBSP}%!
|
||||
STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL :{BIG_FONT}{BLACK}{INDUSTRY} sin produksjon har sunket med 50{NBSP}%
|
||||
STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL :{BIG_FONT}{BLACK}Produksjonen ved {INDUSTRY} har sunket med 50{NBSP}%
|
||||
STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_FARM :{BIG_FONT}{BLACK}Insektinvasjon gjør stor skade på {INDUSTRY}!{}Produksjonen synker med 50{NBSP}%
|
||||
STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_SMOOTH :{BIG_FONT}{BLACK}Produksjonen av {STRING} ved {INDUSTRY} synker med {COMMA}{NBSP}%!
|
||||
|
||||
@@ -1240,9 +1240,9 @@ STR_CONFIG_SETTING_STOP_LOCATION_FAR_END :bortenden
|
||||
STR_CONFIG_SETTING_AUTOSCROLL :Flytt på bildet hvis pilen er nær ytterkantene av skjermen: {STRING}
|
||||
STR_CONFIG_SETTING_AUTOSCROLL_HELPTEXT :Når aktivert, vil synsfeltet begynne å rulle når musen er nær kanten av vinduet
|
||||
STR_CONFIG_SETTING_AUTOSCROLL_DISABLED :Deaktivert
|
||||
STR_CONFIG_SETTING_AUTOSCROLL_MAIN_VIEWPORT_FULLSCREEN :Hoved tillegsvindu, bare fullskjerm
|
||||
STR_CONFIG_SETTING_AUTOSCROLL_MAIN_VIEWPORT :hoved tillegsvindu
|
||||
STR_CONFIG_SETTING_AUTOSCROLL_EVERY_VIEWPORT :alle tillegsvindu
|
||||
STR_CONFIG_SETTING_AUTOSCROLL_MAIN_VIEWPORT_FULLSCREEN :Hovedvindu, bare fullskjerm
|
||||
STR_CONFIG_SETTING_AUTOSCROLL_MAIN_VIEWPORT :Hovedvindu
|
||||
STR_CONFIG_SETTING_AUTOSCROLL_EVERY_VIEWPORT :alle tilleggsvindu
|
||||
STR_CONFIG_SETTING_BRIBE :Tillat bestikkelser av bystyret: {STRING}
|
||||
STR_CONFIG_SETTING_BRIBE_HELPTEXT :Tillat firmaer å prøve å bestikke de lokale myndighetene i byen. Hvis bestikkelsen blir oppdaget av en inspektør, vil selskapet ikke være i stand til å gjøre forretninger i byen de neste seks månedene
|
||||
STR_CONFIG_SETTING_BRIBE_HELPTEXT.small :firma
|
||||
@@ -1416,7 +1416,7 @@ STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_CONSTRUCTION :Alt utenom kons
|
||||
STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_LANDSCAPING :Alt utenom landskapsendringer
|
||||
STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_ACTIONS :Alle handlinger
|
||||
STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS :Bruk grupper i kjøretøyliste: {STRING}
|
||||
STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS_HELPTEXT :Aktiver bruk av de avanserte kjøretøyslistene for guppering av kjøretøy
|
||||
STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS_HELPTEXT :Aktiver bruk av avanserte kjøretøylister for guppering av kjøretøy
|
||||
STR_CONFIG_SETTING_LOADING_INDICATORS :Bruk lastingsindikatorer: {STRING}
|
||||
STR_CONFIG_SETTING_LOADING_INDICATORS_HELPTEXT :Velg hvorvidt lasteindikatorer vises over kjøretøy som lastes eller losses
|
||||
STR_CONFIG_SETTING_TIMETABLE_IN_TICKS :Vis rutetabell i antall tikk i stedet for antall dager: {STRING}
|
||||
@@ -1467,7 +1467,7 @@ STR_CONFIG_SETTING_MAX_SHIPS_HELPTEXT :Maksimalt antal
|
||||
|
||||
STR_CONFIG_SETTING_AI_BUILDS_TRAINS :Hindre datamaskinen i å bygge tog: {STRING}
|
||||
STR_CONFIG_SETTING_AI_BUILDS_TRAINS_HELPTEXT :Aktivering av denne innstillingen gjør bygging av tog umulig for en datamaskin-spiller
|
||||
STR_CONFIG_SETTING_AI_BUILDS_ROAD_VEHICLES :Hindre datamaskinen i å bygge kjøretøy: {STRING}
|
||||
STR_CONFIG_SETTING_AI_BUILDS_ROAD_VEHICLES :Hindre datamaskinen i å bygge veikjøretøy: {STRING}
|
||||
STR_CONFIG_SETTING_AI_BUILDS_ROAD_VEHICLES_HELPTEXT :Aktivering av denne innstillingen gjør bygging av veikjøretøy umulig for en datamaskin-spiller
|
||||
STR_CONFIG_SETTING_AI_BUILDS_AIRCRAFT :Hindre datamaskinen i å bygge luftfartøy: {STRING}
|
||||
STR_CONFIG_SETTING_AI_BUILDS_AIRCRAFT_HELPTEXT :Aktivering av denne innstillingen gjør bygging av fly umulig for en datamaskin-spiller
|
||||
@@ -3616,7 +3616,7 @@ STR_DEPOT_SELL_CONFIRMATION_TEXT :{YELLOW}Du er n
|
||||
|
||||
# Engine preview window
|
||||
STR_ENGINE_PREVIEW_CAPTION :{WHITE}Melding fra kjøretøysprodusent
|
||||
STR_ENGINE_PREVIEW_MESSAGE :{GOLD}Vi har nettopp designet e{G n i t} ny{G "" "" tt} {STRING} - er du interessert i et års ekslusivt bruk av dette, slik at vi kan se hvordan det virker før det blir allment tilgjengelig?
|
||||
STR_ENGINE_PREVIEW_MESSAGE :{GOLD}Vi har nettopp designet e{G n i t} ny{G "" "" tt} {STRING} - er du interessert i ett års ekslusivt bruk av dette, slik at vi kan se hvordan det virker før det blir allment tilgjengelig?
|
||||
STR_ENGINE_PREVIEW_RAILROAD_LOCOMOTIVE :{G=neuter}lokomotiv
|
||||
STR_ENGINE_PREVIEW_ROAD_VEHICLE :{G=neuter}kjøretøy
|
||||
STR_ENGINE_PREVIEW_AIRCRAFT :{G=neuter}luftfartøy
|
||||
@@ -3660,7 +3660,7 @@ STR_REPLACE_HELP_STOP_BUTTON :{BLACK}Klikk de
|
||||
STR_REPLACE_ENGINE_WAGON_SELECT_HELP :{BLACK}Veksle mellom tog- og vognerstatningsvinduet
|
||||
STR_REPLACE_ENGINES :Lokomotiv
|
||||
STR_REPLACE_WAGONS :Vogner
|
||||
STR_REPLACE_ALL_RAILTYPE :Status: Mangler
|
||||
STR_REPLACE_ALL_RAILTYPE :Alle jernbanekjøretøy
|
||||
|
||||
STR_REPLACE_HELP_RAILTYPE :{BLACK}Velg jernbanetypen du vil bytte ut lokomotiv på
|
||||
STR_REPLACE_HELP_REPLACE_INFO_TAB :{BLACK}Viser hvilket lokomotiv som overtar for det valgte lokomotivet på venstresiden
|
||||
@@ -3752,11 +3752,11 @@ STR_VEHICLE_INFO_AGE_RUNNING_COST_YR :{BLACK}Alder: {
|
||||
STR_VEHICLE_INFO_AGE :{COMMA} år ({COMMA})
|
||||
STR_VEHICLE_INFO_AGE_RED :{RED}{COMMA} år ({COMMA})
|
||||
|
||||
STR_VEHICLE_INFO_MAX_SPEED :{BLACK}Maks hastighet: {LTBLUE}{VELOCITY}
|
||||
STR_VEHICLE_INFO_MAX_SPEED_TYPE :{BLACK}Maks. hastighet: {LTBLUE}{VELOCITY} {BLACK}Flytype: {LTBLUE}{STRING}
|
||||
STR_VEHICLE_INFO_MAX_SPEED_TYPE_RANGE :{BLACK}Maks. hastighet: {LTBLUE}{VELOCITY} {BLACK}Flytype: {LTBLUE}{STRING} {BLACK}Rekkevidde: {LTBLUE}{COMMA} ruter
|
||||
STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED :{BLACK}Vekt: {LTBLUE}{WEIGHT_SHORT} {BLACK}Kraft: {LTBLUE}{POWER}{BLACK} Maks hastighet: {LTBLUE}{VELOCITY}
|
||||
STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED_MAX_TE :{BLACK}Vekt: {LTBLUE}{WEIGHT_SHORT} {BLACK}Kraft: {LTBLUE}{POWER}{BLACK} Maks hastighet: {LTBLUE}{VELOCITY} {BLACK}Maks trekkraft: {LTBLUE}{FORCE}
|
||||
STR_VEHICLE_INFO_MAX_SPEED :{BLACK}Topphastighet: {LTBLUE}{VELOCITY}
|
||||
STR_VEHICLE_INFO_MAX_SPEED_TYPE :{BLACK}Topphastighet: {LTBLUE}{VELOCITY} {BLACK}Flytype: {LTBLUE}{STRING}
|
||||
STR_VEHICLE_INFO_MAX_SPEED_TYPE_RANGE :{BLACK}Topphastighet: {LTBLUE}{VELOCITY} {BLACK}Flytype: {LTBLUE}{STRING} {BLACK}Rekkevidde: {LTBLUE}{COMMA} ruter
|
||||
STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED :{BLACK}Vekt: {LTBLUE}{WEIGHT_SHORT} {BLACK}Kraft: {LTBLUE}{POWER}{BLACK} Topphastighet: {LTBLUE}{VELOCITY}
|
||||
STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED_MAX_TE :{BLACK}Vekt: {LTBLUE}{WEIGHT_SHORT} {BLACK}Kraft: {LTBLUE}{POWER}{BLACK} Topphastighet: {LTBLUE}{VELOCITY} {BLACK}Maks trekkraft: {LTBLUE}{FORCE}
|
||||
|
||||
STR_VEHICLE_INFO_PROFIT_THIS_YEAR_LAST_YEAR :{BLACK}Fortjeneste i år: {LTBLUE}{CURRENCY_LONG} (i fjor: {CURRENCY_LONG})
|
||||
STR_VEHICLE_INFO_RELIABILITY_BREAKDOWNS :{BLACK}Pålitelighet: {LTBLUE}{COMMA}{NBSP}% {BLACK}Havarier siden siste vedlikehold: {LTBLUE}{COMMA}
|
||||
@@ -3883,7 +3883,7 @@ STR_ORDER_CONDITIONAL_VARIABLE_TOOLTIP :{BLACK}Kjøret
|
||||
# Conditional order variables, must follow order of OrderConditionVariable enum
|
||||
STR_ORDER_CONDITIONAL_LOAD_PERCENTAGE :Lastprosent
|
||||
STR_ORDER_CONDITIONAL_RELIABILITY :Pålitelighet
|
||||
STR_ORDER_CONDITIONAL_MAX_SPEED :Maks hastighet
|
||||
STR_ORDER_CONDITIONAL_MAX_SPEED :Topphastighet
|
||||
STR_ORDER_CONDITIONAL_AGE :Alder (år)
|
||||
STR_ORDER_CONDITIONAL_REQUIRES_SERVICE :Trenger vedlikehold
|
||||
STR_ORDER_CONDITIONAL_UNCONDITIONALLY :Alltid
|
||||
@@ -4322,7 +4322,6 @@ STR_ERROR_DRIVE_THROUGH_ON_TOWN_ROAD :{WHITE}... denn
|
||||
STR_ERROR_DRIVE_THROUGH_DIRECTION :{WHITE}... veien vender i feil retning
|
||||
STR_ERROR_DRIVE_THROUGH_CORNER :{WHITE}... gjennomkjøringsstopper kan ikke ha hjørner
|
||||
STR_ERROR_DRIVE_THROUGH_JUNCTION :{WHITE}... gjennomkjøringsstopper kan ikke ha kryss
|
||||
STR_ERROR_DRIVE_THROUGH_ON_ONEWAY_ROAD :{WHITE}... veien er enveiskjørt eller blokkert
|
||||
|
||||
# Station destruction related errors
|
||||
STR_ERROR_CAN_T_REMOVE_PART_OF_STATION :{WHITE}Kan ikke fjerne del av stasjonen...
|
||||
|
||||
@@ -4666,7 +4666,6 @@ STR_ERROR_DRIVE_THROUGH_ON_TOWN_ROAD :{WHITE}... ta d
|
||||
STR_ERROR_DRIVE_THROUGH_DIRECTION :{WHITE}... droga jest zorientowana w złym kierunku
|
||||
STR_ERROR_DRIVE_THROUGH_CORNER :{WHITE}... przystanki przelotowe nie mogą mieć zakrętów
|
||||
STR_ERROR_DRIVE_THROUGH_JUNCTION :{WHITE}... przystanki przelotowe nie mogą mieć skrzyżowań
|
||||
STR_ERROR_DRIVE_THROUGH_ON_ONEWAY_ROAD :{WHITE}... droga jest jednokierunkowa lub zablokowana
|
||||
|
||||
# Station destruction related errors
|
||||
STR_ERROR_CAN_T_REMOVE_PART_OF_STATION :{WHITE}Nie można usunąć części stacji...
|
||||
|
||||
@@ -2534,7 +2534,6 @@ STR_QUERY_RESET_LANDSCAPE_CAPTION :{WHITE}Repor Te
|
||||
STR_RESET_LANDSCAPE_CONFIRMATION_TEXT :{WHITE}Tem a certeza que quer apagar todas as propriedades das empresas?
|
||||
|
||||
# Town generation window (SE)
|
||||
|
||||
STR_FOUND_TOWN_CAPTION :{WHITE}Gerar Localidades
|
||||
STR_FOUND_TOWN_NEW_TOWN_BUTTON :{BLACK}Nova Localidade
|
||||
STR_FOUND_TOWN_NEW_TOWN_TOOLTIP :{BLACK}Fundar nova localidade. Shift+Clique mostra apenas o custo estimado
|
||||
@@ -2542,6 +2541,7 @@ STR_FOUND_TOWN_RANDOM_TOWN_BUTTON :{BLACK}Localida
|
||||
STR_FOUND_TOWN_RANDOM_TOWN_TOOLTIP :{BLACK}Fundar uma localidade num local aleatório
|
||||
STR_FOUND_TOWN_MANY_RANDOM_TOWNS :{BLACK}Várias localidades aleatórias
|
||||
STR_FOUND_TOWN_RANDOM_TOWNS_TOOLTIP :{BLACK}Cobrir o mapa com localidades colocadas aleatoriamente
|
||||
|
||||
STR_FOUND_TOWN_NAME_TITLE :{YELLOW}Nome da localidade:
|
||||
STR_FOUND_TOWN_NAME_EDITOR_TITLE :{BLACK}Introduza o nome da localidade
|
||||
STR_FOUND_TOWN_NAME_EDITOR_HELP :{BLACK}Clique para introduzir o nome da localidade
|
||||
@@ -4318,7 +4318,6 @@ STR_ERROR_DRIVE_THROUGH_ON_TOWN_ROAD :{WHITE}... esta
|
||||
STR_ERROR_DRIVE_THROUGH_DIRECTION :{WHITE}... estrada orientada na direcção incorrecta
|
||||
STR_ERROR_DRIVE_THROUGH_CORNER :{WHITE}... estações de passagem não podem ter curvas
|
||||
STR_ERROR_DRIVE_THROUGH_JUNCTION :{WHITE}... estações de passagem não podem ter cruzamentos
|
||||
STR_ERROR_DRIVE_THROUGH_ON_ONEWAY_ROAD :{WHITE}... estrada de sentido único ou bloqueada
|
||||
|
||||
# Station destruction related errors
|
||||
STR_ERROR_CAN_T_REMOVE_PART_OF_STATION :{WHITE}Não é possível remover parte da estação...
|
||||
|
||||
@@ -1574,8 +1574,8 @@ STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE :Показыв
|
||||
STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE_HELPTEXT :Показывать ожидаемое время прибытия и отправления в графиках движения
|
||||
STR_CONFIG_SETTING_QUICKGOTO :Быстрое создание заданий транспорта: {STRING}
|
||||
STR_CONFIG_SETTING_QUICKGOTO_HELPTEXT :Открывать окно маршрута с нажатой кнопкой «Следовать»
|
||||
STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE :Тип рельсов по умолчанию (после старта/загрузки): {STRING}
|
||||
STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_HELPTEXT :Тип рельсов, выбираемый по умолчанию после старта или загрузки игры.{}«Первые доступные» - самый старый тип рельсов.{}«Последние доступные» - самый новый тип.{}«Наиболее используемые» - тип рельсов, наиболее широко используемых в игре.
|
||||
STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE :Тип ж/д путей по умолчанию (после старта/загрузки): {STRING}
|
||||
STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_HELPTEXT :Тип железнодорожных путей, выбираемый по умолчанию после старта или загрузки игры.{}«Первые доступные» - самый старый тип рельсов.{}«Последние доступные» - самый новый тип.{}«Наиболее используемые» - тип рельсов, наиболее широко используемых в игре.
|
||||
STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_FIRST :первые доступные
|
||||
STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_LAST :последние доступные
|
||||
STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_MOST_USED :наиболее используемые
|
||||
@@ -2830,9 +2830,9 @@ 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 :Дорога с уличным освещением
|
||||
STR_LAI_ROAD_DESCRIPTION_TREE_LINED_ROAD :Дорога с озеленением
|
||||
STR_LAI_ROAD_DESCRIPTION_ROAD :Автодорога
|
||||
STR_LAI_ROAD_DESCRIPTION_ROAD_WITH_STREETLIGHTS :Освещённая автодорога
|
||||
STR_LAI_ROAD_DESCRIPTION_TREE_LINED_ROAD :Автодорога с озеленением
|
||||
STR_LAI_ROAD_DESCRIPTION_ROAD_VEHICLE_DEPOT :Гараж
|
||||
STR_LAI_ROAD_DESCRIPTION_ROAD_RAIL_LEVEL_CROSSING :Железнодорожный переезд
|
||||
STR_LAI_ROAD_DESCRIPTION_TRAMWAY :Трамвайные пути
|
||||
@@ -3301,7 +3301,7 @@ STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_ROAD_RECONSTRUCTION :{YELLOW}Про
|
||||
STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_STATUE_OF_COMPANY :{YELLOW}Установить статую в честь вашей компании.{}Цена: {CURRENCY_LONG}
|
||||
STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_NEW_BUILDINGS :{YELLOW}Профинансировать строительство новых коммерческих зданий в городе.{}Цена: {CURRENCY_LONG}
|
||||
STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_EXCLUSIVE_TRANSPORT :{YELLOW}Купить годовые эксклюзивные права на транспортные перевозки в городе. Администрация разрешит пользоваться ТОЛЬКО вашими станциями.{}Цена: {CURRENCY_LONG}
|
||||
STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_BRIBE :{YELLOW}Дать взятку городской администрации для повышения рейтинга. Существует риск санкций, если факт взятки раскроется.{}Цена: {CURRENCY_LONG}
|
||||
STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_BRIBE :{YELLOW}Дать взятку городской администрации для повышения рейтинга. Существует риск санкций, если факт подкупа раскроется.{}Цена: {CURRENCY_LONG}
|
||||
|
||||
# Goal window
|
||||
STR_GOALS_CAPTION :{WHITE}Задачи компании «{COMPANY}»
|
||||
@@ -3645,7 +3645,7 @@ STR_BUY_VEHICLE_TRAIN_MAGLEV_CAPTION :Новый ма
|
||||
STR_BUY_VEHICLE_TRAIN_ALL_CAPTION :Новый поезд
|
||||
STR_BUY_VEHICLE_ROAD_VEHICLE_CAPTION :Новый автомобиль
|
||||
STR_BUY_VEHICLE_SHIP_CAPTION :Новый корабль
|
||||
STR_BUY_VEHICLE_AIRCRAFT_CAPTION :Новый авиатранспорт
|
||||
STR_BUY_VEHICLE_AIRCRAFT_CAPTION :Новое воздушное судно
|
||||
|
||||
STR_PURCHASE_INFO_COST_WEIGHT :{BLACK}Цена: {GOLD}{CURRENCY_LONG}{BLACK} Вес: {GOLD}{WEIGHT_SHORT}
|
||||
STR_PURCHASE_INFO_SPEED_POWER :{BLACK}Скорость: {GOLD}{VELOCITY}{BLACK} Мощность: {GOLD}{POWER}
|
||||
@@ -3830,8 +3830,8 @@ STR_REPLACE_VEHICLE_VEHICLES_IN_USE_TOOLTIP :{BLACK}Здес
|
||||
STR_REPLACE_VEHICLE_AVAILABLE_VEHICLES :{YELLOW}Доступные ТС
|
||||
STR_REPLACE_VEHICLE_AVAILABLE_VEHICLES_TOOLTIP :{BLACK}Здесь перечислены модели транспортных средств, доступные для замены
|
||||
|
||||
STR_REPLACE_HELP_LEFT_ARRAY :{BLACK}Выбор типа транспорта для замены
|
||||
STR_REPLACE_HELP_RIGHT_ARRAY :{BLACK}Выбор типа транспорта, на который следует заменить
|
||||
STR_REPLACE_HELP_LEFT_ARRAY :{BLACK}Выбор заменяемой модели транспортного средства
|
||||
STR_REPLACE_HELP_RIGHT_ARRAY :{BLACK}Выбор заменяющей модели транспортного средства
|
||||
|
||||
STR_REPLACE_VEHICLES_START :{BLACK}Начать замену
|
||||
STR_REPLACE_VEHICLES_NOW :Начать замену всех ТС
|
||||
@@ -4507,7 +4507,6 @@ 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}Невозможно удалить часть станции...
|
||||
|
||||
@@ -4443,7 +4443,6 @@ STR_ERROR_DRIVE_THROUGH_ON_TOWN_ROAD :{WHITE}... ova
|
||||
STR_ERROR_DRIVE_THROUGH_DIRECTION :{WHITE}... ulica je okrenuta u drugom pravcu
|
||||
STR_ERROR_DRIVE_THROUGH_CORNER :{WHITE}... stajalište ne može biti na krivini
|
||||
STR_ERROR_DRIVE_THROUGH_JUNCTION :{WHITE}... stajalište ne može biti na raskrsnici
|
||||
STR_ERROR_DRIVE_THROUGH_ON_ONEWAY_ROAD :{WHITE}... put je jednosmeran ili blokiran.
|
||||
|
||||
# Station destruction related errors
|
||||
STR_ERROR_CAN_T_REMOVE_PART_OF_STATION :{WHITE}Deo stanice se ne može ukloniti...
|
||||
|
||||
@@ -963,6 +963,7 @@ STR_NEWS_MERGER_TAKEOVER_TITLE :{BIG_FONT}{BLAC
|
||||
STR_PRESIDENT_NAME_MANAGER :{BLACK}{PRESIDENT_NAME}{}(Direktor)
|
||||
|
||||
STR_NEWS_NEW_TOWN :{BLACK}{BIG_FONT}{STRING} sponzorirana gradnja novega mesta {TOWN}!
|
||||
STR_NEWS_NEW_TOWN_UNSPONSORED :{BLACK}{BIG_FONT}Novo mesto z imenom {TOWN} je bilo zgrajeno!
|
||||
|
||||
STR_NEWS_INDUSTRY_CONSTRUCTION :{BIG_FONT}{BLACK}Na novo se gradi {STRING} blizu mesta {TOWN}!
|
||||
STR_NEWS_INDUSTRY_PLANTED :{BIG_FONT}{BLACK}Postavlja se {STRING} blizu mesta {TOWN}!
|
||||
@@ -1956,6 +1957,7 @@ STR_CHEAT_CHANGE_DATE_QUERY_CAPT :{WHITE}Spremeni
|
||||
STR_CHEAT_SETUP_PROD :{LTBLUE}Omogoči spreminjanje proizvodnih vrednosti: {ORANGE}{STRING}
|
||||
|
||||
# Livery window
|
||||
STR_LIVERY_CAPTION :{WHITE}{COMPANY} - Barvna shema
|
||||
|
||||
STR_LIVERY_GENERAL_TOOLTIP :{BLACK}Prikaz glavnih barvnih shem
|
||||
STR_LIVERY_TRAIN_TOOLTIP :{BLACK}Prikaz barvnih shem vlakov
|
||||
@@ -3924,6 +3926,7 @@ STR_ORDER_CONDITIONAL_AGE :Starost (leta)
|
||||
STR_ORDER_CONDITIONAL_REQUIRES_SERVICE :Potrebuje servis
|
||||
STR_ORDER_CONDITIONAL_UNCONDITIONALLY :Vedno
|
||||
STR_ORDER_CONDITIONAL_REMAINING_LIFETIME :Preostala življenjska doba (let)
|
||||
STR_ORDER_CONDITIONAL_MAX_RELIABILITY :Največja zanesljivost
|
||||
|
||||
STR_ORDER_CONDITIONAL_COMPARATOR_TOOLTIP :{BLACK}Kako primerjati podatke vozila na podano vrednost
|
||||
STR_ORDER_CONDITIONAL_COMPARATOR_EQUALS :je enaka
|
||||
@@ -4607,6 +4610,7 @@ STR_BASESOUNDS_DOS_DESCRIPTION :Originalni zvok
|
||||
STR_BASESOUNDS_WIN_DESCRIPTION :Originalni zvoki Transport Tycoon Deluxe različice oken(windows).
|
||||
STR_BASESOUNDS_NONE_DESCRIPTION :Zvočni paket brez zvoka.
|
||||
STR_BASEMUSIC_WIN_DESCRIPTION :Originalna glasba Transport Tycoon Deluxe različice oken(windows).
|
||||
STR_BASEMUSIC_DOS_DESCRIPTION :Originalna glasba Transport Tycoon Deluxe DOS različice
|
||||
STR_BASEMUSIC_NONE_DESCRIPTION :Glasbeni paket z vključeno glasbo.
|
||||
|
||||
##id 0x2000
|
||||
|
||||
@@ -191,6 +191,7 @@ STR_COLOUR_BROWN :Marrón
|
||||
STR_COLOUR_GREY :Gris
|
||||
STR_COLOUR_WHITE :Blanco
|
||||
STR_COLOUR_RANDOM :Aleatorio
|
||||
STR_COLOUR_DEFAULT :Por Defecto
|
||||
|
||||
# Units used in OpenTTD
|
||||
STR_UNITS_VELOCITY_IMPERIAL :{COMMA}{NBSP}mph
|
||||
@@ -466,6 +467,7 @@ STR_TOOLBAR_SOUND_MUSIC :Sonido/música
|
||||
############ range for message menu starts
|
||||
STR_NEWS_MENU_LAST_MESSAGE_NEWS_REPORT :Último mensaje/noticia
|
||||
STR_NEWS_MENU_MESSAGE_HISTORY_MENU :Historial de mensajes
|
||||
STR_NEWS_MENU_DELETE_ALL_MESSAGES :Borrar todos los mensajes
|
||||
############ range ends here
|
||||
|
||||
############ range for about menu starts
|
||||
@@ -994,7 +996,12 @@ STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_NORMAL :Normal
|
||||
STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_2X_ZOOM :Tamaño doble
|
||||
STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_4X_ZOOM :Tamaño cuádruple
|
||||
|
||||
STR_GAME_OPTIONS_FONT_ZOOM :{BLACK}Tamaño de letra
|
||||
STR_GAME_OPTIONS_FONT_ZOOM_DROPDOWN_TOOLTIP :{BLACK}Selecciona el tamaño de letra a utilizar en la interfaz
|
||||
|
||||
STR_GAME_OPTIONS_FONT_ZOOM_DROPDOWN_NORMAL :Normal
|
||||
STR_GAME_OPTIONS_FONT_ZOOM_DROPDOWN_2X_ZOOM :Tamaño doble
|
||||
STR_GAME_OPTIONS_FONT_ZOOM_DROPDOWN_4X_ZOOM :Tamaño cuádruple
|
||||
|
||||
STR_GAME_OPTIONS_BASE_GRF :{BLACK}Conjunto de gráficos base
|
||||
STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Selecciona el conjunto de gráficos base a usar
|
||||
@@ -1263,6 +1270,8 @@ STR_CONFIG_SETTING_DYNAMIC_ENGINES_EXISTING_VEHICLES :{WHITE}Cambiar
|
||||
STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE :Mantenimiento de infraestructuras: {STRING}
|
||||
STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE_HELPTEXT :Cuando se activa, las infraestructuras tienen costes de mantenimiento. Los costes de la infraestructura aumentan con el tamaño de la red, con lo cual afectan a compañías grandes en mayor grado que a las pequeñas
|
||||
|
||||
STR_CONFIG_SETTING_COMPANY_STARTING_COLOUR :Color inicial de la empresa: {STRING}
|
||||
STR_CONFIG_SETTING_COMPANY_STARTING_COLOUR_HELPTEXT :Selecciona el color inicial de la empresa
|
||||
|
||||
STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS :Aeropuertos nunca caducan: {STRING}
|
||||
STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS_HELPTEXT :Permite a todos los aeropuertos estar disponibles permanentemente una vez han sido introducidos
|
||||
@@ -1347,6 +1356,12 @@ STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_HELPTEXT :Color a usar pa
|
||||
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_GREEN :Verde
|
||||
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_DARK_GREEN :Verde oscuro
|
||||
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_VIOLET :Violeta
|
||||
STR_CONFIG_SETTING_SCROLLMODE :Desplazamiento de vista: {STRING}
|
||||
STR_CONFIG_SETTING_SCROLLMODE_HELPTEXT :Comportamiento al desplazar el mapa
|
||||
STR_CONFIG_SETTING_SCROLLMODE_DEFAULT :Desplazar la vista con clic derecho, ratón en posición fija
|
||||
STR_CONFIG_SETTING_SCROLLMODE_RMB_LOCKED :Recorrer mapa con clic derecho, ratón en posición fija
|
||||
STR_CONFIG_SETTING_SCROLLMODE_RMB :Mueve el mapa con el botón derecho del ratón
|
||||
STR_CONFIG_SETTING_SCROLLMODE_LMB :Mueve el mapa con el botón izquierdo del ratón
|
||||
STR_CONFIG_SETTING_SMOOTH_SCROLLING :Desplazamiento de vista suavizado: {STRING}
|
||||
STR_CONFIG_SETTING_SMOOTH_SCROLLING_HELPTEXT :Controla la forma en la que la vista principal se mueve a una posición específica como resultado de hacer click en el mapa o al enviar la orden de moverse a un objeto determinado del mapa. Si se activa, la vista se mueve de forma suave. Si se desactiva, la vista se mueve directamente al destino
|
||||
STR_CONFIG_SETTING_MEASURE_TOOLTIP :Mostrar medidas usando las herramientas de construcción: {STRING}
|
||||
@@ -1560,7 +1575,7 @@ STR_CONFIG_SETTING_TOWN_LAYOUT_3X3_GRID :rejilla 3x3
|
||||
STR_CONFIG_SETTING_TOWN_LAYOUT_RANDOM :Aleatorio
|
||||
STR_CONFIG_SETTING_ALLOW_TOWN_ROADS :Permitir que los municipios construyan carreteras: {STRING}
|
||||
STR_CONFIG_SETTING_ALLOW_TOWN_ROADS_HELPTEXT :Permite a los municipios construir carreteras para crecer. Si se deshabilita, las autoridades municipales no podrán construir ninguna carretera
|
||||
STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS :Permitir a las ciudades construir pasos a nivel: {STRING}
|
||||
STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS :Permitir a los municipios construir pasos a nivel: {STRING}
|
||||
STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS_HELPTEXT :Permite a los municipios construir pasos a nivel
|
||||
STR_CONFIG_SETTING_NOISE_LEVEL :Permitir al municipio controlar el nivel de ruido de los aeropuertos: {STRING}
|
||||
STR_CONFIG_SETTING_NOISE_LEVEL_HELPTEXT :Con esta opción desactivada, solamente puede haber dos aeropuertos por municipio. Si se activa, el número de aeropuertos en el municipio depende del nivel de aceptación de ruido del mismo, el cual depende de la población, del tamaño de los aeropuertos y de la distancia a la que estén
|
||||
@@ -1606,7 +1621,7 @@ STR_CONFIG_SETTING_TOWN_GROWTH_NORMAL :Normal
|
||||
STR_CONFIG_SETTING_TOWN_GROWTH_FAST :Rápida
|
||||
STR_CONFIG_SETTING_TOWN_GROWTH_VERY_FAST :Muy rápida
|
||||
STR_CONFIG_SETTING_LARGER_TOWNS :Proporción de municipios que se convertirán en ciudades: {STRING}
|
||||
STR_CONFIG_SETTING_LARGER_TOWNS_HELPTEXT :Número de pueblos que se convertirán en ciudades. Las ciudades comienzan siendo más grandes y crecen más rápido
|
||||
STR_CONFIG_SETTING_LARGER_TOWNS_HELPTEXT :Número de municipios que se convertirán en ciudades. Las ciudades comienzan siendo más grandes y crecen más rápido
|
||||
STR_CONFIG_SETTING_LARGER_TOWNS_VALUE :1 de cada {COMMA}
|
||||
STR_CONFIG_SETTING_LARGER_TOWNS_DISABLED :Ninguna
|
||||
STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER :Multiplicador inicial del tamaño de ciudad: {STRING}
|
||||
@@ -2075,6 +2090,7 @@ STR_NETWORK_CONNECTION_DISCONNECT :{BLACK}Desconec
|
||||
|
||||
STR_NETWORK_NEED_GAME_PASSWORD_CAPTION :{WHITE}Servidor protegido. Introduzca la contraseña
|
||||
STR_NETWORK_NEED_COMPANY_PASSWORD_CAPTION :{WHITE}Empresa protegida. Introduzca la contraseña
|
||||
STR_NETWORK_COMPANY_LIST_CLIENT_LIST_CAPTION :{WHITE}Lista de Clientes
|
||||
|
||||
# Network company list added strings
|
||||
STR_NETWORK_COMPANY_LIST_CLIENT_LIST :Lista de clientes
|
||||
@@ -2539,7 +2555,7 @@ STR_FOUND_TOWN_INITIAL_SIZE_LARGE_BUTTON :{BLACK}Grande
|
||||
STR_FOUND_TOWN_SIZE_RANDOM :{BLACK}Aleatorio
|
||||
STR_FOUND_TOWN_INITIAL_SIZE_TOOLTIP :{BLACK}Seleccione el tamaño del municipio
|
||||
STR_FOUND_TOWN_CITY :{BLACK}Ciudad
|
||||
STR_FOUND_TOWN_CITY_TOOLTIP :{BLACK}Las ciudades crecen más rápido que los pueblos{}Dependiendo de los ajustes, son mayores al ser fundadas
|
||||
STR_FOUND_TOWN_CITY_TOOLTIP :{BLACK}Las ciudades crecen más rápido que los municipios{}Dependiendo de los ajustes, son mayores al ser fundadas
|
||||
|
||||
STR_FOUND_TOWN_ROAD_LAYOUT :{YELLOW}Patrón de carretera:
|
||||
STR_FOUND_TOWN_SELECT_TOWN_ROAD_LAYOUT :{BLACK}Seleccionar patrón de carreteras para este municipio
|
||||
@@ -2701,7 +2717,13 @@ STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD
|
||||
|
||||
# Framerate display window
|
||||
STR_FRAMERATE_CAPTION :{WHITE}Fotogramas por segundo - FPS
|
||||
STR_FRAMERATE_CAPTION_SMALL :{STRING}{WHITE} ({DECIMAL}x)
|
||||
STR_FRAMERATE_RATE_GAMELOOP :{BLACK}Tasa de Simulación: {STRING}
|
||||
STR_FRAMERATE_RATE_GAMELOOP_TOOLTIP :{BLACK}Número de ticks de juego simulados por segundo.
|
||||
STR_FRAMERATE_RATE_BLITTER :{BLACK}FPS de gráficos: {STRING}
|
||||
STR_FRAMERATE_RATE_BLITTER_TOOLTIP :{BLACK}Número de fotogramas renderizados por segundo.
|
||||
STR_FRAMERATE_SPEED_FACTOR :{BLACK}Factor de velocidad de juego actual: {DECIMAL}x
|
||||
STR_FRAMERATE_SPEED_FACTOR_TOOLTIP :{BLACK}Rapidez actual del juego comparada con la esperada durante una simulación normal.
|
||||
STR_FRAMERATE_CURRENT :{WHITE}Actual
|
||||
STR_FRAMERATE_AVERAGE :{WHITE}Medio
|
||||
STR_FRAMERATE_DATA_POINTS :{BLACK}Datos basados en {COMMA} medidas
|
||||
@@ -2714,21 +2736,38 @@ STR_FRAMERATE_FPS_BAD :{RED}{DECIMAL}
|
||||
STR_FRAMERATE_GRAPH_MILLISECONDS :{TINY_FONT}{COMMA} ms
|
||||
STR_FRAMERATE_GRAPH_SECONDS :{TINY_FONT}{COMMA} s
|
||||
############ Leave those lines in this order!!
|
||||
STR_FRAMERATE_GAMELOOP :{BLACK}Bucles de juego totales:
|
||||
STR_FRAMERATE_GL_ECONOMY :{BLACK} Manejo de cargamento
|
||||
STR_FRAMERATE_GL_TRAINS :{BLACK} Ticks de trenes:
|
||||
STR_FRAMERATE_GL_ROADVEHS :{BLACK} Ticks de vehículos de carretera:
|
||||
STR_FRAMERATE_GL_SHIPS :{BLACK} Ticks de barcos:
|
||||
STR_FRAMERATE_GL_AIRCRAFT :{BLACK} Ticks de aeronaves:
|
||||
STR_FRAMERATE_GL_LANDSCAPE :{BLACK} Ticks de mapa:
|
||||
STR_FRAMERATE_GL_LINKGRAPH :{BLACK} Retraso del gráfico de distribución:
|
||||
STR_FRAMERATE_DRAWING :{BLACK}Renderizado gráfico:
|
||||
STR_FRAMERATE_DRAWING_VIEWPORTS :{BLACK} Ventanas de vista generales:
|
||||
STR_FRAMERATE_VIDEO :{BLACK}Salida de vídeo:
|
||||
STR_FRAMERATE_SOUND :{BLACK}Mezcla de sonido:
|
||||
STR_FRAMERATE_ALLSCRIPTS :{BLACK} Total de scripts:
|
||||
STR_FRAMERATE_GAMESCRIPT :{BLACK} Script de juego:
|
||||
STR_FRAMERATE_AI :{BLACK} IA {NUM} {STRING}
|
||||
############ End of leave-in-this-order
|
||||
############ Leave those lines in this order!!
|
||||
STR_FRAMETIME_CAPTION_GAMELOOP :Bucle de juego
|
||||
STR_FRAMETIME_CAPTION_GL_ECONOMY :Manejo de cargamento
|
||||
STR_FRAMETIME_CAPTION_GL_TRAINS :Ticks de trenes
|
||||
STR_FRAMETIME_CAPTION_GL_ROADVEHS :Ticks de vehículo de carretera
|
||||
STR_FRAMETIME_CAPTION_GL_SHIPS :Ticks de barcos
|
||||
STR_FRAMETIME_CAPTION_GL_AIRCRAFT :Ticks de aeronaves
|
||||
STR_FRAMETIME_CAPTION_GL_LANDSCAPE :Ticks de mapa
|
||||
STR_FRAMETIME_CAPTION_GL_LINKGRAPH :Retraso del gráfico de distribución
|
||||
STR_FRAMETIME_CAPTION_DRAWING :Renderizado gráfico
|
||||
STR_FRAMETIME_CAPTION_DRAWING_VIEWPORTS :Representación de la vista del Mundo
|
||||
STR_FRAMETIME_CAPTION_VIDEO :Salida de vídeo
|
||||
STR_FRAMETIME_CAPTION_SOUND :Mezcla de sonido
|
||||
STR_FRAMETIME_CAPTION_ALLSCRIPTS :Scripts de juego e IA en total
|
||||
STR_FRAMETIME_CAPTION_GAMESCRIPT :Script de juego
|
||||
STR_FRAMETIME_CAPTION_AI :IA {NUM} {STRING}
|
||||
############ End of leave-in-this-order
|
||||
|
||||
|
||||
@@ -2755,6 +2794,8 @@ STR_SAVELOAD_DETAIL_NOT_AVAILABLE :{BLACK}No hay i
|
||||
STR_SAVELOAD_DETAIL_COMPANY_INDEX :{SILVER}{COMMA}: {WHITE}{STRING}
|
||||
STR_SAVELOAD_DETAIL_GRFSTATUS :{SILVER}NewGRF: {WHITE}{STRING}
|
||||
STR_SAVELOAD_FILTER_TITLE :{BLACK}Patrón de filtrado:
|
||||
STR_SAVELOAD_OVERWRITE_TITLE :{WHITE}Sobrescribir Archivo
|
||||
STR_SAVELOAD_OVERWRITE_WARNING :{YELLOW}¿Está seguro de querer sobrescribir el archivo existente?
|
||||
|
||||
STR_SAVELOAD_OSKTITLE :{BLACK}Introduce un nombre para el juego guardado
|
||||
|
||||
@@ -2874,6 +2915,8 @@ STR_NEWGRF_SETTINGS_MD5SUM :{BLACK}MD5sum:
|
||||
STR_NEWGRF_SETTINGS_PALETTE :{BLACK}Paleta: {SILVER}{STRING}
|
||||
STR_NEWGRF_SETTINGS_PALETTE_DEFAULT :Por Defecto (D)
|
||||
STR_NEWGRF_SETTINGS_PALETTE_DEFAULT_32BPP :Por Defecto (D) / 32 bpp
|
||||
STR_NEWGRF_SETTINGS_PALETTE_LEGACY :Viejo (W)
|
||||
STR_NEWGRF_SETTINGS_PALETTE_LEGACY_32BPP :Viejo (W) / 32 bpp
|
||||
STR_NEWGRF_SETTINGS_PARAMETER :{BLACK}Parámetros: {SILVER}{STRING}
|
||||
STR_NEWGRF_SETTINGS_PARAMETER_NONE :Ninguno
|
||||
|
||||
@@ -2957,6 +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 invá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}, propiedad {4:HEX})
|
||||
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!
|
||||
@@ -2988,6 +3032,7 @@ STR_NEWGRF_BUGGY :{WHITE}El NewGR
|
||||
STR_NEWGRF_BUGGY_ARTICULATED_CARGO :{WHITE}La información de carga/reforma para '{1:ENGINE}' difiere de la de lista de compra después de la construcción. Esto puede causar que la renovación/reemplazo automático no haga la reforma correcta
|
||||
STR_NEWGRF_BUGGY_ENDLESS_PRODUCTION_CALLBACK :{WHITE}'{1:STRING}' ha causado un bucle sin fin en la 'callback' de producción
|
||||
STR_NEWGRF_BUGGY_UNKNOWN_CALLBACK_RESULT :{WHITE}'Callback' {1:HEX} devolvió el resultado desconocido o inválido {2:HEX}
|
||||
STR_NEWGRF_BUGGY_INVALID_CARGO_PRODUCTION_CALLBACK :{WHITE}'{1:STRING}' ha retornado tipo de carga inválida en el 'callback' de producción en {2:HEX}
|
||||
|
||||
# 'User removed essential NewGRFs'-placeholders for stuff without specs
|
||||
STR_NEWGRF_INVALID_CARGO :<carga incorrecta>
|
||||
@@ -3082,6 +3127,7 @@ STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_BRIBE :{YELLOW}Soborna
|
||||
# Goal window
|
||||
STR_GOALS_CAPTION :{WHITE}Metas de {COMPANY}
|
||||
STR_GOALS_SPECTATOR_CAPTION :{WHITE}Metas Globales
|
||||
STR_GOALS_SPECTATOR :Metas Globales
|
||||
STR_GOALS_GLOBAL_TITLE :{BLACK}Metas globales:
|
||||
STR_GOALS_TEXT :{ORANGE}{STRING}
|
||||
STR_GOALS_NONE :{ORANGE}- Ninguna -
|
||||
@@ -3130,6 +3176,7 @@ STR_SUBSIDIES_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Click so
|
||||
# Story book window
|
||||
STR_STORY_BOOK_CAPTION :{WHITE}Historial de {COMPANY}
|
||||
STR_STORY_BOOK_SPECTATOR_CAPTION :{WHITE}Historial Global
|
||||
STR_STORY_BOOK_SPECTATOR :Historial Global
|
||||
STR_STORY_BOOK_TITLE :{YELLOW}{STRING}
|
||||
STR_STORY_BOOK_GENERIC_PAGE_ITEM :Página {NUM}
|
||||
STR_STORY_BOOK_SEL_PAGE_TOOLTIP :{BLACK}Permite saltar a una página específica al seleccionarla en esta lista desplegable
|
||||
@@ -3336,6 +3383,7 @@ STR_INDUSTRY_VIEW_INDUSTRY_ANNOUNCED_CLOSURE :{YELLOW}La indu
|
||||
|
||||
STR_INDUSTRY_VIEW_REQUIRES_N_CARGO :{BLACK}Requiere: {YELLOW}{STRING}{STRING}
|
||||
STR_INDUSTRY_VIEW_PRODUCES_N_CARGO :{BLACK}Produce: {YELLOW}{STRING}{STRING}
|
||||
STR_INDUSTRY_VIEW_CARGO_LIST_EXTENSION :, {STRING}{STRING}
|
||||
|
||||
STR_INDUSTRY_VIEW_REQUIRES :{BLACK}Necesita:
|
||||
STR_INDUSTRY_VIEW_ACCEPT_CARGO :{YELLOW}{STRING}{BLACK}{3:STRING}
|
||||
@@ -3393,6 +3441,7 @@ STR_GROUPS_CLICK_ON_GROUP_FOR_TOOLTIP :{BLACK}Grupos -
|
||||
STR_GROUP_CREATE_TOOLTIP :{BLACK}Click para crear un grupo
|
||||
STR_GROUP_DELETE_TOOLTIP :{BLACK}Borrar el grupo seleccionado
|
||||
STR_GROUP_RENAME_TOOLTIP :{BLACK}Renombrar el grupo seleccionado
|
||||
STR_GROUP_LIVERY_TOOLTIP :{BLACK}Cambiar el color del grupo seleccionado
|
||||
STR_GROUP_REPLACE_PROTECTION_TOOLTIP :{BLACK}Click para proteger este grupo del auto reemplazado global
|
||||
|
||||
STR_QUERY_GROUP_DELETE_CAPTION :{WHITE}Borrar Grupo
|
||||
@@ -3436,6 +3485,7 @@ STR_PURCHASE_INFO_AIRCRAFT_CAPACITY :{BLACK}Capacida
|
||||
STR_PURCHASE_INFO_PWAGPOWER_PWAGWEIGHT :{BLACK}Vagones con motor: {GOLD}+{POWER}{BLACK} Peso: {GOLD}+{WEIGHT_SHORT}
|
||||
STR_PURCHASE_INFO_REFITTABLE_TO :{BLACK}Reformable a: {GOLD}{STRING}
|
||||
STR_PURCHASE_INFO_ALL_TYPES :Todos los tipos de carga
|
||||
STR_PURCHASE_INFO_NONE :Sin carga
|
||||
STR_PURCHASE_INFO_ALL_BUT :Todo excepto {CARGO_LIST}
|
||||
STR_PURCHASE_INFO_MAX_TE :{BLACK}F.T máxima: {GOLD}{FORCE}
|
||||
STR_PURCHASE_INFO_AIRCRAFT_RANGE :{BLACK}Alcance: {GOLD}{COMMA} casillas
|
||||
@@ -4268,7 +4318,6 @@ STR_ERROR_DRIVE_THROUGH_ON_TOWN_ROAD :{WHITE}... esta
|
||||
STR_ERROR_DRIVE_THROUGH_DIRECTION :{WHITE}... carretera en la dirección incorrecta
|
||||
STR_ERROR_DRIVE_THROUGH_CORNER :{WHITE}... las estaciones de autobús de paso no pueden tener esquinas
|
||||
STR_ERROR_DRIVE_THROUGH_JUNCTION :{WHITE}... las estaciones de autobús de paso no pueden tener intersecciones
|
||||
STR_ERROR_DRIVE_THROUGH_ON_ONEWAY_ROAD :{WHITE}... carretera de un solo sentido o bloqueada
|
||||
|
||||
# Station destruction related errors
|
||||
STR_ERROR_CAN_T_REMOVE_PART_OF_STATION :{WHITE}No se puede retirar parte de la estación...
|
||||
|
||||
@@ -4318,7 +4318,6 @@ STR_ERROR_DRIVE_THROUGH_ON_TOWN_ROAD :{WHITE}... esta
|
||||
STR_ERROR_DRIVE_THROUGH_DIRECTION :{WHITE}... carretera en el sentido incorrecto
|
||||
STR_ERROR_DRIVE_THROUGH_CORNER :{WHITE}... las estaciones y paradas intermedias no pueden ponerse sobre esquinas
|
||||
STR_ERROR_DRIVE_THROUGH_JUNCTION :{WHITE}... las estaciones y paradas intermedias no pueden ponerse sobre intersecciones
|
||||
STR_ERROR_DRIVE_THROUGH_ON_ONEWAY_ROAD :{WHITE}... la carretera está bloqueada o es de un solo sentido
|
||||
|
||||
# Station destruction related errors
|
||||
STR_ERROR_CAN_T_REMOVE_PART_OF_STATION :{WHITE}No se puede quitar parte de la estación...
|
||||
|
||||
@@ -466,6 +466,7 @@ STR_TOOLBAR_SOUND_MUSIC :Ljud/musik
|
||||
############ range for message menu starts
|
||||
STR_NEWS_MENU_LAST_MESSAGE_NEWS_REPORT :Senaste meddelandet/nyheten
|
||||
STR_NEWS_MENU_MESSAGE_HISTORY_MENU :Meddelandehistorik
|
||||
STR_NEWS_MENU_DELETE_ALL_MESSAGES :Ta bort alla meddelanden
|
||||
############ range ends here
|
||||
|
||||
############ range for about menu starts
|
||||
@@ -988,13 +989,18 @@ STR_GAME_OPTIONS_RESOLUTION_TOOLTIP :{BLACK}Välj vi
|
||||
STR_GAME_OPTIONS_RESOLUTION_OTHER :annan
|
||||
|
||||
STR_GAME_OPTIONS_GUI_ZOOM_FRAME :{BLACK}Gränssnittstorlek
|
||||
STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_TOOLTIP :{BLACK}Välj vilken gränssnittsstorlek som används
|
||||
STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_TOOLTIP :{BLACK}Välj vilken gränssnittsstorlek som ska användas
|
||||
|
||||
STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_NORMAL :Normal
|
||||
STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_2X_ZOOM :Dubbel storlek
|
||||
STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_4X_ZOOM :Fyrdubbel storlek
|
||||
|
||||
STR_GAME_OPTIONS_FONT_ZOOM :{BLACK}Storlek på typsnitt
|
||||
STR_GAME_OPTIONS_FONT_ZOOM_DROPDOWN_TOOLTIP :{BLACK}Välj vilken storlek som ska användas på gränssnittets typsnitt
|
||||
|
||||
STR_GAME_OPTIONS_FONT_ZOOM_DROPDOWN_NORMAL :Normal
|
||||
STR_GAME_OPTIONS_FONT_ZOOM_DROPDOWN_2X_ZOOM :Dubbel storlek
|
||||
STR_GAME_OPTIONS_FONT_ZOOM_DROPDOWN_4X_ZOOM :Kvadrupel storlek
|
||||
|
||||
STR_GAME_OPTIONS_BASE_GRF :{BLACK}Grafikpaket som standard
|
||||
STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Välj vilket grafikpaket som ska användas som standard
|
||||
@@ -2083,6 +2089,7 @@ STR_NETWORK_CONNECTION_DISCONNECT :{BLACK}Koppla i
|
||||
|
||||
STR_NETWORK_NEED_GAME_PASSWORD_CAPTION :{WHITE}Servern är skyddad. Ange lösenord
|
||||
STR_NETWORK_NEED_COMPANY_PASSWORD_CAPTION :{WHITE}Företaget är skyddat. Ange lösenord
|
||||
STR_NETWORK_COMPANY_LIST_CLIENT_LIST_CAPTION :{WHITE}Klientlista
|
||||
|
||||
# Network company list added strings
|
||||
STR_NETWORK_COMPANY_LIST_CLIENT_LIST :Klientlista
|
||||
@@ -2740,6 +2747,9 @@ STR_FRAMERATE_DRAWING :{BLACK}Grafikå
|
||||
STR_FRAMERATE_DRAWING_VIEWPORTS :{BLACK} Vyfönster:
|
||||
STR_FRAMERATE_VIDEO :{BLACK}Videoutmatning:
|
||||
STR_FRAMERATE_SOUND :{BLACK}Ljudmixning:
|
||||
STR_FRAMERATE_ALLSCRIPTS :{BLACK} GS/AI totalt:
|
||||
STR_FRAMERATE_GAMESCRIPT :{BLACK} Spelskript:
|
||||
STR_FRAMERATE_AI :{BLACK} AI {NUM} {STRING}
|
||||
############ End of leave-in-this-order
|
||||
############ Leave those lines in this order!!
|
||||
STR_FRAMETIME_CAPTION_GAMELOOP :Spel-loop
|
||||
@@ -2754,6 +2764,9 @@ STR_FRAMETIME_CAPTION_DRAWING :Grafikåtergivn
|
||||
STR_FRAMETIME_CAPTION_DRAWING_VIEWPORTS :Återgivning av vyer
|
||||
STR_FRAMETIME_CAPTION_VIDEO :Videoutmatning
|
||||
STR_FRAMETIME_CAPTION_SOUND :Ljudmixning
|
||||
STR_FRAMETIME_CAPTION_ALLSCRIPTS :GS/AI skripts totalt
|
||||
STR_FRAMETIME_CAPTION_GAMESCRIPT :Spelskript
|
||||
STR_FRAMETIME_CAPTION_AI :AI {NUM} {STRING}
|
||||
############ End of leave-in-this-order
|
||||
|
||||
|
||||
@@ -3018,6 +3031,7 @@ STR_NEWGRF_BUGGY :{WHITE}NewGRF '
|
||||
STR_NEWGRF_BUGGY_ARTICULATED_CARGO :{WHITE}Last/återställnings information för '{1:ENGINE}' är skilld ifrån köp lista efter konstruktion. Detta kan leda till att utomatisk förnyelse/uppgradering misslyckas med att anpassa fordonen/vagnarna korrekt
|
||||
STR_NEWGRF_BUGGY_ENDLESS_PRODUCTION_CALLBACK :{WHITE}'{1:STRING}' skapade en oändlig loop i en produktions-callback-funktion
|
||||
STR_NEWGRF_BUGGY_UNKNOWN_CALLBACK_RESULT :{WHITE}Callback-funktion {1:HEX} returnerade ett okänt/ogiltligt resultat {2:HEX}
|
||||
STR_NEWGRF_BUGGY_INVALID_CARGO_PRODUCTION_CALLBACK :{WHITE}'{1:STRING}' returnerade ogiltig lasttyp i produktions-callback vid {2:HEX}
|
||||
|
||||
# 'User removed essential NewGRFs'-placeholders for stuff without specs
|
||||
STR_NEWGRF_INVALID_CARGO :<invalid cargo>
|
||||
@@ -3112,6 +3126,7 @@ STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_BRIBE :{YELLOW} Muta d
|
||||
# Goal window
|
||||
STR_GOALS_CAPTION :{WHITE}{COMPANY} Mål
|
||||
STR_GOALS_SPECTATOR_CAPTION :{WHITE}Globala mål
|
||||
STR_GOALS_SPECTATOR :Globala mål
|
||||
STR_GOALS_GLOBAL_TITLE :{BLACK}Globala mål:
|
||||
STR_GOALS_TEXT :{ORANGE}{STRING}
|
||||
STR_GOALS_NONE :{ORANGE}- Inga -
|
||||
@@ -3160,6 +3175,7 @@ STR_SUBSIDIES_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Klicka f
|
||||
# Story book window
|
||||
STR_STORY_BOOK_CAPTION :{WHITE}{COMPANY} berättelsebok
|
||||
STR_STORY_BOOK_SPECTATOR_CAPTION :{WHITE}Global berättelsebok
|
||||
STR_STORY_BOOK_SPECTATOR :Global berättelsebok
|
||||
STR_STORY_BOOK_TITLE :{YELLOW}{STRING}
|
||||
STR_STORY_BOOK_GENERIC_PAGE_ITEM :Sida {NUM}
|
||||
STR_STORY_BOOK_SEL_PAGE_TOOLTIP :{BLACK}Hoppa till valfri sida genom att välja sidan i denna lista
|
||||
@@ -3790,7 +3806,7 @@ STR_VEHICLE_DETAILS_TRAIN_ARTICULATED_RV_CAPACITY :{BLACK}Kapacite
|
||||
# Vehicle refit
|
||||
STR_REFIT_CAPTION :{WHITE}{VEHICLE} (Anpassa)
|
||||
STR_REFIT_TITLE :{GOLD}Välj godstyp att frakta:
|
||||
STR_REFIT_NEW_CAPACITY_COST_OF_REFIT :{BLACK}Ny kapacitet: {GOLD}{CARGO_LONG}{}{BLACK}Anpassningens kostnad: {RED}{CURRENCY_LONG}
|
||||
STR_REFIT_NEW_CAPACITY_COST_OF_REFIT :{BLACK}Ny kapacitet: {GOLD}{CARGO_LONG}{}{BLACK}Kostnad för anpassning: {RED}{CURRENCY_LONG}
|
||||
STR_REFIT_NEW_CAPACITY_INCOME_FROM_REFIT :{BLACK}Ny kapacitet: {GOLD}{CARGO_LONG}{}{BLACK}Inkomstens vinst: {GREEN}{CURRENCY_LONG}
|
||||
STR_REFIT_NEW_CAPACITY_COST_OF_AIRCRAFT_REFIT :{BLACK}Ny kapacitet: {GOLD}{CARGO_LONG}, {GOLD}{CARGO_LONG}{}{BLACK}Kostnad för anpassning: {RED}{CURRENCY_LONG}
|
||||
STR_REFIT_NEW_CAPACITY_INCOME_FROM_AIRCRAFT_REFIT :{BLACK}Ny kapacitet: {GOLD}{CARGO_LONG}. {GOLD}{CARGO_LONG}{}{BLACK}Inkomstens vinst: {GREEN}{CURRENCY_LONG}
|
||||
@@ -4301,7 +4317,6 @@ STR_ERROR_DRIVE_THROUGH_ON_TOWN_ROAD :{WHITE}... dett
|
||||
STR_ERROR_DRIVE_THROUGH_DIRECTION :{WHITE}... vägen pekar i fel riktning
|
||||
STR_ERROR_DRIVE_THROUGH_CORNER :{WHITE}... genomfartshållplatser kan inte ha gatuhörn
|
||||
STR_ERROR_DRIVE_THROUGH_JUNCTION :{WHITE}... genomfartshållplatser kan inte ha korsningar
|
||||
STR_ERROR_DRIVE_THROUGH_ON_ONEWAY_ROAD :{WHITE}... vägen är enkelriktad eller blockerad
|
||||
|
||||
# Station destruction related errors
|
||||
STR_ERROR_CAN_T_REMOVE_PART_OF_STATION :{WHITE}Kan ej ta bort del av station...
|
||||
|
||||
@@ -4310,7 +4310,6 @@ STR_ERROR_DRIVE_THROUGH_ON_TOWN_ROAD :{WHITE}... bu y
|
||||
STR_ERROR_DRIVE_THROUGH_DIRECTION :{WHITE}... yol yanlış yönde
|
||||
STR_ERROR_DRIVE_THROUGH_CORNER :{WHITE}... yol üstü duraklar köşe üzerine inşa edilemez
|
||||
STR_ERROR_DRIVE_THROUGH_JUNCTION :{WHITE}... yol üstü duraklar kavşak üzerine inşa edilemez
|
||||
STR_ERROR_DRIVE_THROUGH_ON_ONEWAY_ROAD :{WHITE}... yol tek yön ya da engellenmiş
|
||||
|
||||
# Station destruction related errors
|
||||
STR_ERROR_CAN_T_REMOVE_PART_OF_STATION :{WHITE}İstasyonun parçasi kaldırılamaz...
|
||||
|
||||
@@ -567,7 +567,7 @@ STR_RAIL_MENU_MAGLEV_CONSTRUCTION :Будівни
|
||||
|
||||
############ range for road construction menu starts
|
||||
STR_ROAD_MENU_ROAD_CONSTRUCTION :Будівництво автомобільних доріг
|
||||
STR_ROAD_MENU_TRAM_CONSTRUCTION :Будівництво трамвайних доріг
|
||||
STR_ROAD_MENU_TRAM_CONSTRUCTION :Будівництво трамвайних колій
|
||||
############ range ends here
|
||||
|
||||
############ range for waterways construction menu starts
|
||||
@@ -2543,7 +2543,7 @@ STR_BRIDGE_TUBULAR_SILICON :Трубчас
|
||||
|
||||
# Road construction toolbar
|
||||
STR_ROAD_TOOLBAR_ROAD_CONSTRUCTION_CAPTION :{WHITE}Автомобільне будівництво
|
||||
STR_ROAD_TOOLBAR_TRAM_CONSTRUCTION_CAPTION :{WHITE}Трамвайне будівництво
|
||||
STR_ROAD_TOOLBAR_TRAM_CONSTRUCTION_CAPTION :{WHITE}Будівництво трамвайних колій
|
||||
STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_SECTION :{BLACK}Будувати дорогу. Ctrl переключає побудову/знесення для будівництва доріг. Утримуйте Shift для показу витрат
|
||||
STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_SECTION :{BLACK}Будувати трамвайну колію. Ctrl переключає побудову/знесення для будівництва трамвайної колії. Утримуйте Shift для показу витрат на будівництво
|
||||
STR_ROAD_TOOLBAR_TOOLTIP_BUILD_AUTOROAD :{BLACK}Будувати дорогу в режимі Автобудування. Ctrl переключає побудову/знесення для будівництва доріг. Утримуйте Shift для показу витрат на будівництво
|
||||
@@ -4446,7 +4446,6 @@ 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}Не можна зруйнувати частину станції...
|
||||
@@ -4462,7 +4461,7 @@ STR_ERROR_MUST_DEMOLISH_RAILROAD :{WHITE}Споч
|
||||
STR_ERROR_MUST_DEMOLISH_BUS_STATION_FIRST :{WHITE}Спочатку зруйнуйте зупинку
|
||||
STR_ERROR_MUST_DEMOLISH_TRUCK_STATION_FIRST :{WHITE}Спочатку зруйнуйте вантажну станцію
|
||||
STR_ERROR_MUST_DEMOLISH_PASSENGER_TRAM_STATION_FIRST :{WHITE}Спочатку треба знести пасажирську трамвайну станцію
|
||||
STR_ERROR_MUST_DEMOLISH_CARGO_TRAM_STATION_FIRST :{WHITE}Спочатку треба знести вантажну трамвайну станцію
|
||||
STR_ERROR_MUST_DEMOLISH_CARGO_TRAM_STATION_FIRST :{WHITE}Спочатку зруйнуйте товарну трамвайну станцію
|
||||
STR_ERROR_MUST_DEMOLISH_DOCK_FIRST :{WHITE}Спочатку зруйнуйте порт
|
||||
STR_ERROR_MUST_DEMOLISH_AIRPORT_FIRST :{WHITE}Спочатку зруйнуйте аеропорт
|
||||
|
||||
|
||||
@@ -4279,7 +4279,6 @@ STR_ERROR_DRIVE_THROUGH_ON_TOWN_ROAD :{WHITE}... đâ
|
||||
STR_ERROR_DRIVE_THROUGH_DIRECTION :{WHITE}... đường quay mặt sai hướng
|
||||
STR_ERROR_DRIVE_THROUGH_CORNER :{WHITE}... đi qua điểm dừng không thể đi qua góc
|
||||
STR_ERROR_DRIVE_THROUGH_JUNCTION :{WHITE}... đi qua điểm dừng không thể có ngã rẽ
|
||||
STR_ERROR_DRIVE_THROUGH_ON_ONEWAY_ROAD :{WHITE}... đường 1 chiều hoặc bị chặn
|
||||
|
||||
# Station destruction related errors
|
||||
STR_ERROR_CAN_T_REMOVE_PART_OF_STATION :{WHITE}Không thể xoá bỏ một phần của ga...
|
||||
|
||||
@@ -674,6 +674,7 @@ STR_PLAYLIST_TRACK_NAME :{TINY_FONT}{LTB
|
||||
STR_PLAYLIST_TRACK_INDEX :{TINY_FONT}{BLACK}Indecs Traciau
|
||||
STR_PLAYLIST_PROGRAM :{TINY_FONT}{BLACK}Rhaglen - '{STRING}'
|
||||
STR_PLAYLIST_CLEAR :{TINY_FONT}{BLACK}Clirio
|
||||
STR_PLAYLIST_CHANGE_SET :{BLACK}Newid set
|
||||
STR_PLAYLIST_TOOLTIP_CLEAR_CURRENT_PROGRAM_CUSTOM1 :{BLACK}Clirio'r rhaglen gyfredol (Cyfaddas 1 neu Cyfaddas 2)
|
||||
STR_PLAYLIST_TOOLTIP_CLICK_TO_ADD_TRACK :{BLACK}Cliciwch i ychwanegu trac cerddoriaeth i'r rhaglen gyfredol (Cyfaddas 1 Neu Cyfaddas 2 yn unig)
|
||||
STR_PLAYLIST_TOOLTIP_CLICK_TO_REMOVE_TRACK :{BLACK}Cliciwch i dynnu trac cerddoriaeth o'r rhaglen gyfredol (Cyfaddas 1 Neu Cyfaddas 2 yn unig)
|
||||
@@ -922,6 +923,7 @@ STR_GAME_OPTIONS_CURRENCY_ZAR :Rand De Affrica
|
||||
STR_GAME_OPTIONS_CURRENCY_CUSTOM :Addasedig...
|
||||
STR_GAME_OPTIONS_CURRENCY_GEL :Lari Georgia (GEL)
|
||||
STR_GAME_OPTIONS_CURRENCY_IRR :Rial Iran (IRR)
|
||||
STR_GAME_OPTIONS_CURRENCY_RUB :Rwbl Rwsaidd Newydd (RUB)
|
||||
############ end of currency region
|
||||
|
||||
STR_GAME_OPTIONS_ROAD_VEHICLES_FRAME :{BLACK}Cerbydau Ffordd
|
||||
@@ -1805,6 +1807,7 @@ STR_CHEAT_CHANGE_DATE_QUERY_CAPT :{WHITE}Newid y
|
||||
STR_CHEAT_SETUP_PROD :{LTBLUE}Galluogi newid graddfeydd cynhyrchu: {ORANGE}{STRING}
|
||||
|
||||
# Livery window
|
||||
STR_LIVERY_CAPTION :{WHITE}{COMPANY} - Cynllun Lliw
|
||||
|
||||
STR_LIVERY_GENERAL_TOOLTIP :{BLACK}Dangos cynllun lliw cyffredinol
|
||||
STR_LIVERY_TRAIN_TOOLTIP :{BLACK}Dangos cynllun lliw trenau
|
||||
@@ -2688,9 +2691,14 @@ STR_ABOUT_VERSION :{BLACK}fersiwn
|
||||
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2019 Y tîm OpenTTD
|
||||
|
||||
# Framerate display window
|
||||
STR_FRAMERATE_RATE_BLITTER_TOOLTIP :{BLACK}Nifer o fframiau fideo a lunir bob eiliad.
|
||||
STR_FRAMERATE_SPEED_FACTOR_TOOLTIP :{BLACK}Pa mor gyflym mae'r gêm yn rhedeg, o gymharu a'r cyflymder i'w ddisgwyl ar gyfradd efelychu arferol.
|
||||
STR_FRAMERATE_FPS_GOOD :{LTBLUE}{DECIMAL} frâm yr eiliad
|
||||
############ Leave those lines in this order!!
|
||||
STR_FRAMERATE_GL_ECONOMY :{BLACK} Trin cargo:
|
||||
############ End of leave-in-this-order
|
||||
############ Leave those lines in this order!!
|
||||
STR_FRAMETIME_CAPTION_VIDEO :Allbwn fideo
|
||||
############ End of leave-in-this-order
|
||||
|
||||
|
||||
@@ -2945,6 +2953,7 @@ STR_NEWGRF_BUGGY :{WHITE}Mae NewG
|
||||
STR_NEWGRF_BUGGY_ARTICULATED_CARGO :{WHITE}Mae'r wybodaeth llwyth/ailffitio ar gyfer '{1:ENGINE}' yn wahanol i'r rhestr brynu wedi'r adeiladu. Gall hyn beri i awtoadnewyddu/-ddisodli fethu ag ailfitio'n gywir
|
||||
STR_NEWGRF_BUGGY_ENDLESS_PRODUCTION_CALLBACK :{WHITE}'{1:STRING}' wedi creu lŵp diddiwedd yn y system adalw cynhyrchu
|
||||
STR_NEWGRF_BUGGY_UNKNOWN_CALLBACK_RESULT :{WHITE}Dychwelodd adalwad {1:HEX} ganlyniad anhysbys/annilys {2:HEX}
|
||||
STR_NEWGRF_BUGGY_INVALID_CARGO_PRODUCTION_CALLBACK :{WHITE}'{1:STRING}' wedi dychwelyd math cargo annilys yn yr adalwad cynhyrchu yn {2:HEX}
|
||||
|
||||
# 'User removed essential NewGRFs'-placeholders for stuff without specs
|
||||
STR_NEWGRF_INVALID_CARGO :<llwyth annilys>
|
||||
@@ -3788,6 +3797,7 @@ STR_ORDER_CONDITIONAL_AGE :Oed (blynyddoed
|
||||
STR_ORDER_CONDITIONAL_REQUIRES_SERVICE :Angen gwasanaeth
|
||||
STR_ORDER_CONDITIONAL_UNCONDITIONALLY :Bob tro
|
||||
STR_ORDER_CONDITIONAL_REMAINING_LIFETIME :Oes yn weddill (blynyddoedd)
|
||||
STR_ORDER_CONDITIONAL_MAX_RELIABILITY :Dibynadwyedd uchafsymol
|
||||
|
||||
STR_ORDER_CONDITIONAL_COMPARATOR_TOOLTIP :{BLACK}Sut i gymharu'r data cerbyd i'r gwerth a roddwyd
|
||||
STR_ORDER_CONDITIONAL_COMPARATOR_EQUALS :yn hafal i
|
||||
@@ -4471,6 +4481,8 @@ STR_BASESOUNDS_DOS_DESCRIPTION :Effeithiau sain
|
||||
STR_BASESOUNDS_WIN_DESCRIPTION :Effeithiau sain gwreiddiol fersiwn Windows o Transport Tycoon Deluxe.
|
||||
STR_BASESOUNDS_NONE_DESCRIPTION :Pecyn sain heb unrhyw effeithiau sain ynddo.
|
||||
STR_BASEMUSIC_WIN_DESCRIPTION :Cerddoriaeth gwreiddiol fersion Windows o Transport Tycoon Deluxe.
|
||||
STR_BASEMUSIC_DOS_DESCRIPTION :Cerddoriaeth gwreiddiol fersiwn DOS o Transport Tycoon Deluxe.
|
||||
STR_BASEMUSIC_TTO_DESCRIPTION :Cerddoriaeth gwreiddiol fersion DOS o Transport Tycoon Deluxe (Gwreiddiol/Golygydd Byd).
|
||||
STR_BASEMUSIC_NONE_DESCRIPTION :Pecyn cerddoriaeth heb unrhyw gerddoriaeth ynddo.
|
||||
|
||||
##id 0x2000
|
||||
|
||||
@@ -51,7 +51,7 @@
|
||||
static int _rename_id = 1;
|
||||
static int _rename_what = -1;
|
||||
|
||||
void CcGiveMoney(const CommandCost &result, TileIndex tile, uint32 p1, uint32 p2)
|
||||
void CcGiveMoney(const CommandCost &result, TileIndex tile, uint32 p1, uint32 p2, uint32 cmd)
|
||||
{
|
||||
#ifdef ENABLE_NETWORK
|
||||
if (result.Failed() || !_settings_game.economy.give_money) return;
|
||||
@@ -119,7 +119,7 @@ bool HandlePlacePushButton(Window *w, int widget, CursorID cursor, HighLightStyl
|
||||
}
|
||||
|
||||
|
||||
void CcPlaySound_EXPLOSION(const CommandCost &result, TileIndex tile, uint32 p1, uint32 p2)
|
||||
void CcPlaySound_EXPLOSION(const CommandCost &result, TileIndex tile, uint32 p1, uint32 p2, uint32 cmd)
|
||||
{
|
||||
if (result.Succeeded() && _settings_client.sound.confirm) SndPlayTileFx(SND_12_EXPLOSION, tile);
|
||||
}
|
||||
@@ -205,6 +205,16 @@ void ZoomInOrOutToCursorWindow(bool in, Window *w)
|
||||
}
|
||||
}
|
||||
|
||||
void FixTitleGameZoom()
|
||||
{
|
||||
if (_game_mode != GM_MENU) return;
|
||||
|
||||
ViewPort *vp = FindWindowByClass(WC_MAIN_WINDOW)->viewport;
|
||||
vp->zoom = _gui_zoom;
|
||||
vp->virtual_width = ScaleByZoom(vp->width, vp->zoom);
|
||||
vp->virtual_height = ScaleByZoom(vp->height, vp->zoom);
|
||||
}
|
||||
|
||||
static const struct NWidgetPart _nested_main_window_widgets[] = {
|
||||
NWidget(NWID_VIEWPORT, INVALID_COLOUR, WID_M_VIEWPORT), SetResize(1, 1),
|
||||
};
|
||||
|
||||
@@ -538,19 +538,19 @@ static void TransmitChannelMsg(IDirectMusicBuffer *buffer, REFERENCE_TIME rt, by
|
||||
}
|
||||
}
|
||||
|
||||
static void TransmitSysex(IDirectMusicBuffer *buffer, REFERENCE_TIME rt, byte *&msg_start, size_t &remaining)
|
||||
static void TransmitSysex(IDirectMusicBuffer *buffer, REFERENCE_TIME rt, const byte *&msg_start, size_t &remaining)
|
||||
{
|
||||
/* Find end of message. */
|
||||
byte *msg_end = msg_start;
|
||||
const byte *msg_end = msg_start;
|
||||
while (*msg_end != MIDIST_ENDSYSEX) msg_end++;
|
||||
msg_end++; // Also include SysEx end byte.
|
||||
|
||||
if (buffer->PackUnstructured(rt, 0, msg_end - msg_start, msg_start) == E_OUTOFMEMORY) {
|
||||
if (buffer->PackUnstructured(rt, 0, msg_end - msg_start, const_cast<LPBYTE>(msg_start)) == E_OUTOFMEMORY) {
|
||||
/* Buffer is full, clear it and try again. */
|
||||
_port->PlayBuffer(buffer);
|
||||
buffer->Flush();
|
||||
|
||||
buffer->PackUnstructured(rt, 0, msg_end - msg_start, msg_start);
|
||||
buffer->PackUnstructured(rt, 0, msg_end - msg_start, const_cast<LPBYTE>(msg_start));
|
||||
}
|
||||
|
||||
/* Update position in buffer. */
|
||||
@@ -558,9 +558,11 @@ static void TransmitSysex(IDirectMusicBuffer *buffer, REFERENCE_TIME rt, byte *&
|
||||
msg_start = msg_end;
|
||||
}
|
||||
|
||||
static void TransmitSysexConst(IDirectMusicBuffer *buffer, REFERENCE_TIME rt, byte *msg_start, size_t length)
|
||||
static void TransmitStandardSysex(IDirectMusicBuffer *buffer, REFERENCE_TIME rt, MidiSysexMessage msg)
|
||||
{
|
||||
TransmitSysex(buffer, rt, msg_start, length);
|
||||
size_t length = 0;
|
||||
const byte *data = MidiGetStandardSysexMessage(msg, length);
|
||||
TransmitSysex(buffer, rt, data, length);
|
||||
}
|
||||
|
||||
/** Transmit 'Note off' messages to all MIDI channels. */
|
||||
@@ -571,27 +573,16 @@ static void TransmitNotesOff(IDirectMusicBuffer *buffer, REFERENCE_TIME block_ti
|
||||
TransmitChannelMsg(_buffer, block_time + 10, MIDIST_CONTROLLER | ch, MIDICT_SUSTAINSW, 0);
|
||||
TransmitChannelMsg(_buffer, block_time + 10, MIDIST_CONTROLLER | ch, MIDICT_MODE_RESETALLCTRL, 0);
|
||||
}
|
||||
/* Explicitly flush buffer to make sure the note off messages are processed
|
||||
* before we send any additional control messages. */
|
||||
|
||||
/* Performing a GM reset stops all sound and resets all parameters. */
|
||||
TransmitStandardSysex(_buffer, block_time + 20, MidiSysexMessage::ResetGM);
|
||||
TransmitStandardSysex(_buffer, block_time + 30, MidiSysexMessage::RolandSetReverb);
|
||||
|
||||
/* Explicitly flush buffer to make sure the messages are processed,
|
||||
* as we want sound to stop immediately. */
|
||||
_port->PlayBuffer(_buffer);
|
||||
_buffer->Flush();
|
||||
|
||||
/* Some songs change the "Pitch bend range" registered parameter. If
|
||||
* this doesn't get reset, everything else will start sounding wrong. */
|
||||
for (int ch = 0; ch < 16; ch++) {
|
||||
/* Running status, only need status for first message
|
||||
* Select RPN 00.00, set value to 02.00, and de-select again */
|
||||
TransmitChannelMsg(_buffer, block_time + 10, MIDIST_CONTROLLER | ch, MIDICT_RPN_SELECT_LO, 0x00);
|
||||
TransmitChannelMsg(_buffer, block_time + 10, MIDICT_RPN_SELECT_HI, 0x00);
|
||||
TransmitChannelMsg(_buffer, block_time + 10, MIDICT_DATAENTRY, 0x02);
|
||||
TransmitChannelMsg(_buffer, block_time + 10, MIDICT_DATAENTRY_LO, 0x00);
|
||||
TransmitChannelMsg(_buffer, block_time + 10, MIDICT_RPN_SELECT_LO, 0x7F);
|
||||
TransmitChannelMsg(_buffer, block_time + 10, MIDICT_RPN_SELECT_HI, 0x7F);
|
||||
|
||||
_port->PlayBuffer(_buffer);
|
||||
_buffer->Flush();
|
||||
}
|
||||
|
||||
/* Wait until message time has passed. */
|
||||
Sleep(Clamp((block_time - cur_time) / MS_TO_REFTIME, 5, 1000));
|
||||
}
|
||||
@@ -616,13 +607,6 @@ static void MidiThreadProc(void *)
|
||||
REFERENCE_TIME cur_time;
|
||||
clock->GetTime(&cur_time);
|
||||
|
||||
/* Standard "Enable General MIDI" message */
|
||||
static byte gm_enable_sysex[] = { 0xF0, 0x7E, 0x00, 0x09, 0x01, 0xF7 };
|
||||
TransmitSysexConst(_buffer, cur_time, &gm_enable_sysex[0], sizeof(gm_enable_sysex));
|
||||
/* Roland-specific reverb room control, used by the original game */
|
||||
static byte roland_reverb_sysex[] = { 0xF0, 0x41, 0x10, 0x42, 0x12, 0x40, 0x01, 0x30, 0x02, 0x04, 0x00, 0x40, 0x40, 0x00, 0x00, 0x09, 0xF7 };
|
||||
TransmitSysexConst(_buffer, cur_time, &roland_reverb_sysex[0], sizeof(roland_reverb_sysex));
|
||||
|
||||
_port->PlayBuffer(_buffer);
|
||||
_buffer->Flush();
|
||||
|
||||
@@ -665,7 +649,7 @@ static void MidiThreadProc(void *)
|
||||
_playback.do_start = false;
|
||||
}
|
||||
|
||||
/* Turn all notes off in case we are seeking between music titles. */
|
||||
/* Reset playback device between songs. */
|
||||
clock->GetTime(&cur_time);
|
||||
TransmitNotesOff(_buffer, block_time, cur_time);
|
||||
|
||||
@@ -751,7 +735,7 @@ static void MidiThreadProc(void *)
|
||||
block_time = playback_start_time + block.realtime * MIDITIME_TO_REFTIME;
|
||||
DEBUG(driver, 9, "DMusic thread: Streaming block " PRINTF_SIZE " (cur=" OTTD_PRINTF64 ", block=" OTTD_PRINTF64 ")", current_block, (long long)(current_time / MS_TO_REFTIME), (long long)(block_time / MS_TO_REFTIME));
|
||||
|
||||
byte *data = block.data.Begin();
|
||||
const byte *data = block.data.Begin();
|
||||
size_t remaining = block.data.Length();
|
||||
byte last_status = 0;
|
||||
while (remaining > 0) {
|
||||
|
||||
@@ -141,4 +141,19 @@ enum MidiController {
|
||||
MIDICT_MODE_POLY = 127,
|
||||
};
|
||||
|
||||
|
||||
/** Well-known MIDI system exclusive message values for use with the MidiGetStandardSysexMessage function. */
|
||||
enum class MidiSysexMessage {
|
||||
/** Reset device to General MIDI defaults */
|
||||
ResetGM,
|
||||
/** Reset device to (Roland) General Standard defaults */
|
||||
ResetGS,
|
||||
/** Reset device to (Yamaha) XG defaults */
|
||||
ResetXG,
|
||||
/** Set up Roland SoundCanvas reverb room as TTD does */
|
||||
RolandSetReverb,
|
||||
};
|
||||
|
||||
const byte *MidiGetStandardSysexMessage(MidiSysexMessage msg, size_t &length);
|
||||
|
||||
#endif /* MUSIC_MIDI_H */
|
||||
|
||||
@@ -27,6 +27,37 @@
|
||||
|
||||
static MidiFile *_midifile_instance = NULL;
|
||||
|
||||
/**
|
||||
* Retrieve a well-known MIDI system exclusive message.
|
||||
* @param msg Which sysex message to retrieve
|
||||
* @param[out] length Receives the length of the returned buffer
|
||||
* @return Pointer to byte buffer with sysex message
|
||||
*/
|
||||
const byte *MidiGetStandardSysexMessage(MidiSysexMessage msg, size_t &length)
|
||||
{
|
||||
static byte reset_gm_sysex[] = { 0xF0, 0x7E, 0x7F, 0x09, 0x01, 0xF7 };
|
||||
static byte reset_gs_sysex[] = { 0xF0, 0x41, 0x10, 0x42, 0x12, 0x40, 0x00, 0x7F, 0x00, 0x41, 0xF7 };
|
||||
static byte reset_xg_sysex[] = { 0xF0, 0x43, 0x10, 0x4C, 0x00, 0x00, 0x7E, 0x00, 0xF7 };
|
||||
static byte roland_reverb_sysex[] = { 0xF0, 0x41, 0x10, 0x42, 0x12, 0x40, 0x01, 0x30, 0x02, 0x04, 0x00, 0x40, 0x40, 0x00, 0x00, 0x09, 0xF7 };
|
||||
|
||||
switch (msg) {
|
||||
case MidiSysexMessage::ResetGM:
|
||||
length = lengthof(reset_gm_sysex);
|
||||
return reset_gm_sysex;
|
||||
case MidiSysexMessage::ResetGS:
|
||||
length = lengthof(reset_gs_sysex);
|
||||
return reset_gs_sysex;
|
||||
case MidiSysexMessage::ResetXG:
|
||||
length = lengthof(reset_xg_sysex);
|
||||
return reset_xg_sysex;
|
||||
case MidiSysexMessage::RolandSetReverb:
|
||||
length = lengthof(roland_reverb_sysex);
|
||||
return roland_reverb_sysex;
|
||||
default:
|
||||
NOT_REACHED();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Owning byte buffer readable as a stream.
|
||||
* RAII-compliant to make teardown in error situations easier.
|
||||
|
||||
@@ -35,7 +35,7 @@ static struct {
|
||||
CRITICAL_SECTION lock; ///< synchronization for playback status fields
|
||||
|
||||
bool playing; ///< flag indicating that playback is active
|
||||
bool do_start; ///< flag for starting playback of next_file at next opportunity
|
||||
int do_start; ///< flag for starting playback of next_file at next opportunity
|
||||
bool do_stop; ///< flag for stopping playback at next opportunity
|
||||
byte current_volume; ///< current effective volume setting
|
||||
byte new_volume; ///< volume setting to change to
|
||||
@@ -73,10 +73,10 @@ static void TransmitChannelMsg(byte status, byte p1, byte p2 = 0)
|
||||
midiOutShortMsg(_midi.midi_out, status | (p1 << 8) | (p2 << 16));
|
||||
}
|
||||
|
||||
static void TransmitSysex(byte *&msg_start, size_t &remaining)
|
||||
static void TransmitSysex(const byte *&msg_start, size_t &remaining)
|
||||
{
|
||||
/* find end of message */
|
||||
byte *msg_end = msg_start;
|
||||
const byte *msg_end = msg_start;
|
||||
while (*msg_end != MIDIST_ENDSYSEX) msg_end++;
|
||||
msg_end++; /* also include sysex end byte */
|
||||
|
||||
@@ -97,9 +97,11 @@ static void TransmitSysex(byte *&msg_start, size_t &remaining)
|
||||
msg_start = msg_end;
|
||||
}
|
||||
|
||||
static void TransmitSysexConst(byte *msg_start, size_t length)
|
||||
static void TransmitStandardSysex(MidiSysexMessage msg)
|
||||
{
|
||||
TransmitSysex(msg_start, length);
|
||||
size_t length = 0;
|
||||
const byte *data = MidiGetStandardSysexMessage(msg, length);
|
||||
TransmitSysex(data, length);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -108,82 +110,94 @@ static void TransmitSysexConst(byte *msg_start, size_t length)
|
||||
*/
|
||||
void CALLBACK TimerCallback(UINT uTimerID, UINT, DWORD_PTR dwUser, DWORD_PTR, DWORD_PTR)
|
||||
{
|
||||
/* Try to check playback status changes.
|
||||
* If _midi is already locked, skip checking for this cycle and try again
|
||||
* next cycle, instead of waiting for locks in the realtime callback. */
|
||||
if (TryEnterCriticalSection(&_midi.lock)) {
|
||||
/* check for stop */
|
||||
if (_midi.do_stop) {
|
||||
DEBUG(driver, 2, "Win32-MIDI: timer: do_stop is set");
|
||||
midiOutReset(_midi.midi_out);
|
||||
_midi.playing = false;
|
||||
_midi.do_stop = false;
|
||||
/* Ensure only one timer callback is running at once, and prevent races on status flags */
|
||||
if (!TryEnterCriticalSection(&_midi.lock)) return;
|
||||
|
||||
/* check for stop */
|
||||
if (_midi.do_stop) {
|
||||
DEBUG(driver, 2, "Win32-MIDI: timer: do_stop is set");
|
||||
midiOutReset(_midi.midi_out);
|
||||
_midi.playing = false;
|
||||
_midi.do_stop = false;
|
||||
LeaveCriticalSection(&_midi.lock);
|
||||
return;
|
||||
}
|
||||
|
||||
/* check for start/restart/change song */
|
||||
if (_midi.do_start != 0) {
|
||||
/* Have a delay between playback start steps, prevents jumbled-together notes at the start of song */
|
||||
if (timeGetTime() - _midi.playback_start_time < 50) {
|
||||
LeaveCriticalSection(&_midi.lock);
|
||||
return;
|
||||
}
|
||||
DEBUG(driver, 2, "Win32-MIDI: timer: do_start step %d", _midi.do_start);
|
||||
|
||||
/* check for start/restart/change song */
|
||||
if (_midi.do_start) {
|
||||
DEBUG(driver, 2, "Win32-MIDI: timer: do_start is set");
|
||||
if (_midi.playing) {
|
||||
midiOutReset(_midi.midi_out);
|
||||
/* Some songs change the "Pitch bend range" registered
|
||||
* parameter. If this doesn't get reset, everything else
|
||||
* will start sounding wrong. */
|
||||
for (int ch = 0; ch < 16; ch++) {
|
||||
/* Running status, only need status for first message */
|
||||
/* Select RPN 00.00, set value to 02.00, and unselect again */
|
||||
TransmitChannelMsg(MIDIST_CONTROLLER | ch, MIDICT_RPN_SELECT_LO, 0x00);
|
||||
TransmitChannelMsg(MIDICT_RPN_SELECT_HI, 0x00);
|
||||
TransmitChannelMsg(MIDICT_DATAENTRY, 0x02);
|
||||
TransmitChannelMsg(MIDICT_DATAENTRY_LO, 0x00);
|
||||
TransmitChannelMsg(MIDICT_RPN_SELECT_LO, 0x7F);
|
||||
TransmitChannelMsg(MIDICT_RPN_SELECT_HI, 0x7F);
|
||||
}
|
||||
}
|
||||
if (_midi.do_start == 1) {
|
||||
/* Send "all notes off" */
|
||||
midiOutReset(_midi.midi_out);
|
||||
_midi.playback_start_time = timeGetTime();
|
||||
_midi.do_start = 2;
|
||||
|
||||
LeaveCriticalSection(&_midi.lock);
|
||||
return;
|
||||
} else if (_midi.do_start == 2) {
|
||||
/* Reset the device to General MIDI defaults */
|
||||
TransmitStandardSysex(MidiSysexMessage::ResetGM);
|
||||
_midi.playback_start_time = timeGetTime();
|
||||
_midi.do_start = 3;
|
||||
|
||||
LeaveCriticalSection(&_midi.lock);
|
||||
return;
|
||||
} else if (_midi.do_start == 3) {
|
||||
/* Set up device-specific effects */
|
||||
TransmitStandardSysex(MidiSysexMessage::RolandSetReverb);
|
||||
_midi.playback_start_time = timeGetTime();
|
||||
_midi.do_start = 4;
|
||||
|
||||
LeaveCriticalSection(&_midi.lock);
|
||||
return;
|
||||
} else if (_midi.do_start == 4) {
|
||||
/* Load the new file */
|
||||
_midi.current_file.MoveFrom(_midi.next_file);
|
||||
std::swap(_midi.next_segment, _midi.current_segment);
|
||||
_midi.current_segment.start_block = 0;
|
||||
_midi.playback_start_time = timeGetTime();
|
||||
_midi.playing = true;
|
||||
_midi.do_start = false;
|
||||
_midi.do_start = 0;
|
||||
_midi.current_block = 0;
|
||||
|
||||
MemSetT<byte>(_midi.channel_volumes, 127, lengthof(_midi.channel_volumes));
|
||||
} else if (!_midi.playing) {
|
||||
/* not playing, stop the timer */
|
||||
DEBUG(driver, 2, "Win32-MIDI: timer: not playing, stopping timer");
|
||||
timeKillEvent(uTimerID);
|
||||
_midi.timer_id = 0;
|
||||
LeaveCriticalSection(&_midi.lock);
|
||||
return;
|
||||
}
|
||||
|
||||
/* check for volume change */
|
||||
static int volume_throttle = 0;
|
||||
if (_midi.current_volume != _midi.new_volume) {
|
||||
if (volume_throttle == 0) {
|
||||
DEBUG(driver, 2, "Win32-MIDI: timer: volume change");
|
||||
_midi.current_volume = _midi.new_volume;
|
||||
volume_throttle = 20 / _midi.time_period;
|
||||
for (int ch = 0; ch < 16; ch++) {
|
||||
int vol = ScaleVolume(_midi.channel_volumes[ch], _midi.current_volume);
|
||||
TransmitChannelMsg(MIDIST_CONTROLLER | ch, MIDICT_CHANVOLUME, vol);
|
||||
}
|
||||
}
|
||||
else {
|
||||
volume_throttle--;
|
||||
}
|
||||
}
|
||||
|
||||
} else if (!_midi.playing) {
|
||||
/* not playing, stop the timer */
|
||||
DEBUG(driver, 2, "Win32-MIDI: timer: not playing, stopping timer");
|
||||
timeKillEvent(uTimerID);
|
||||
_midi.timer_id = 0;
|
||||
LeaveCriticalSection(&_midi.lock);
|
||||
return;
|
||||
}
|
||||
|
||||
/* check for volume change */
|
||||
static int volume_throttle = 0;
|
||||
if (_midi.current_volume != _midi.new_volume) {
|
||||
if (volume_throttle == 0) {
|
||||
DEBUG(driver, 2, "Win32-MIDI: timer: volume change");
|
||||
_midi.current_volume = _midi.new_volume;
|
||||
volume_throttle = 20 / _midi.time_period;
|
||||
for (int ch = 0; ch < 16; ch++) {
|
||||
byte vol = ScaleVolume(_midi.channel_volumes[ch], _midi.current_volume);
|
||||
TransmitChannelMsg(MIDIST_CONTROLLER | ch, MIDICT_CHANVOLUME, vol);
|
||||
}
|
||||
} else {
|
||||
volume_throttle--;
|
||||
}
|
||||
}
|
||||
|
||||
/* skip beginning of file? */
|
||||
if (_midi.current_segment.start > 0 && _midi.current_block == 0 && _midi.current_segment.start_block == 0) {
|
||||
/* find first block after start time and pretend playback started earlier
|
||||
* this is to allow all blocks prior to the actual start to still affect playback,
|
||||
* as they may contain important controller and program changes */
|
||||
* this is to allow all blocks prior to the actual start to still affect playback,
|
||||
* as they may contain important controller and program changes */
|
||||
uint preload_bytes = 0;
|
||||
for (size_t bl = 0; bl < _midi.current_file.blocks.size(); bl++) {
|
||||
MidiFile::DataBlock &block = _midi.current_file.blocks[bl];
|
||||
@@ -200,7 +214,7 @@ void CALLBACK TimerCallback(UINT uTimerID, UINT, DWORD_PTR dwUser, DWORD_PTR, DW
|
||||
* The delay compensation is needed to avoid time-compression of following messages.
|
||||
*/
|
||||
DEBUG(driver, 2, "Win32-MIDI: timer: start from block %d (ticktime %d, realtime %.3f, bytes %d)", (int)bl, (int)block.ticktime, ((int)block.realtime) / 1000.0, (int)preload_bytes);
|
||||
_midi.playback_start_time -= block.realtime / 1000 - preload_bytes * 1000 / 3125;
|
||||
_midi.playback_start_time -= block.realtime / 1000 - (DWORD)(preload_bytes * 1000 / 3125);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -229,7 +243,7 @@ void CALLBACK TimerCallback(UINT uTimerID, UINT, DWORD_PTR dwUser, DWORD_PTR, DW
|
||||
break;
|
||||
}
|
||||
|
||||
byte *data = block.data.Begin();
|
||||
const byte *data = block.data.Begin();
|
||||
size_t remaining = block.data.Length();
|
||||
byte last_status = 0;
|
||||
while (remaining > 0) {
|
||||
@@ -308,25 +322,28 @@ void CALLBACK TimerCallback(UINT uTimerID, UINT, DWORD_PTR dwUser, DWORD_PTR, DW
|
||||
_midi.do_stop = true;
|
||||
}
|
||||
}
|
||||
|
||||
LeaveCriticalSection(&_midi.lock);
|
||||
}
|
||||
|
||||
void MusicDriver_Win32::PlaySong(const MusicSongInfo &song)
|
||||
{
|
||||
DEBUG(driver, 2, "Win32-MIDI: PlaySong: entry");
|
||||
|
||||
MidiFile new_song;
|
||||
if (!new_song.LoadSong(song)) return;
|
||||
DEBUG(driver, 2, "Win32-MIDI: PlaySong: Loaded song");
|
||||
|
||||
EnterCriticalSection(&_midi.lock);
|
||||
|
||||
if (!_midi.next_file.LoadSong(song)) {
|
||||
LeaveCriticalSection(&_midi.lock);
|
||||
return;
|
||||
}
|
||||
|
||||
_midi.next_file.MoveFrom(new_song);
|
||||
_midi.next_segment.start = song.override_start;
|
||||
_midi.next_segment.end = song.override_end;
|
||||
_midi.next_segment.loop = song.loop;
|
||||
|
||||
DEBUG(driver, 2, "Win32-MIDI: PlaySong: setting flag");
|
||||
_midi.do_stop = _midi.playing;
|
||||
_midi.do_start = true;
|
||||
_midi.do_start = 1;
|
||||
|
||||
if (_midi.timer_id == 0) {
|
||||
DEBUG(driver, 2, "Win32-MIDI: PlaySong: starting timer");
|
||||
@@ -347,7 +364,7 @@ void MusicDriver_Win32::StopSong()
|
||||
|
||||
bool MusicDriver_Win32::IsSongPlaying()
|
||||
{
|
||||
return _midi.playing || _midi.do_start;
|
||||
return _midi.playing || (_midi.do_start != 0);
|
||||
}
|
||||
|
||||
void MusicDriver_Win32::SetVolume(byte vol)
|
||||
@@ -381,14 +398,6 @@ const char *MusicDriver_Win32::Start(const char * const *parm)
|
||||
|
||||
midiOutReset(_midi.midi_out);
|
||||
|
||||
/* Standard "Enable General MIDI" message */
|
||||
static byte gm_enable_sysex[] = { 0xF0, 0x7E, 0x00, 0x09, 0x01, 0xF7 };
|
||||
TransmitSysexConst(&gm_enable_sysex[0], sizeof(gm_enable_sysex));
|
||||
|
||||
/* Roland-specific reverb room control, used by the original game */
|
||||
static byte roland_reverb_sysex[] = { 0xF0, 0x41, 0x10, 0x42, 0x12, 0x40, 0x01, 0x30, 0x02, 0x04, 0x00, 0x40, 0x40, 0x00, 0x00, 0x09, 0xF7 };
|
||||
TransmitSysexConst(&roland_reverb_sysex[0], sizeof(roland_reverb_sysex));
|
||||
|
||||
/* prepare multimedia timer */
|
||||
TIMECAPS timecaps;
|
||||
if (timeGetDevCaps(&timecaps, sizeof(timecaps)) == MMSYSERR_NOERROR) {
|
||||
|
||||
@@ -1675,7 +1675,7 @@ static void NetworkAutoCleanCompanies()
|
||||
/* Is the company empty for autoclean_unprotected-months, and is there no protection? */
|
||||
if (_settings_client.network.autoclean_unprotected != 0 && _network_company_states[c->index].months_empty > _settings_client.network.autoclean_unprotected && StrEmpty(_network_company_states[c->index].password)) {
|
||||
/* Shut the company down */
|
||||
DoCommandP(0, CCA_DELETE | c->index << 16, CRR_AUTOCLEAN, CMD_COMPANY_CTRL);
|
||||
DoCommandP(0, CCA_DELETE | c->index << 16 | CRR_AUTOCLEAN << 24, 0, CMD_COMPANY_CTRL);
|
||||
IConsolePrintF(CC_DEFAULT, "Auto-cleaned company #%d with no password", c->index + 1);
|
||||
}
|
||||
/* Is the company empty for autoclean_protected-months, and there is a protection? */
|
||||
@@ -1689,7 +1689,7 @@ static void NetworkAutoCleanCompanies()
|
||||
/* Is the company empty for autoclean_novehicles-months, and has no vehicles? */
|
||||
if (_settings_client.network.autoclean_novehicles != 0 && _network_company_states[c->index].months_empty > _settings_client.network.autoclean_novehicles && vehicles_in_company[c->index] == 0) {
|
||||
/* Shut the company down */
|
||||
DoCommandP(0, CCA_DELETE | c->index << 16, CRR_AUTOCLEAN, CMD_COMPANY_CTRL);
|
||||
DoCommandP(0, CCA_DELETE | c->index << 16 | CRR_AUTOCLEAN << 24, 0, CMD_COMPANY_CTRL);
|
||||
IConsolePrintF(CC_DEFAULT, "Auto-cleaned company #%d with no vehicles", c->index + 1);
|
||||
}
|
||||
} else {
|
||||
|
||||
@@ -5480,7 +5480,8 @@ static void RailTypeMapSpriteGroup(ByteReader *buf, uint8 idcount)
|
||||
{
|
||||
uint8 *railtypes = AllocaM(uint8, idcount);
|
||||
for (uint i = 0; i < idcount; i++) {
|
||||
railtypes[i] = _cur.grffile->railtype_map[buf->ReadByte()];
|
||||
uint8 id = buf->ReadByte();
|
||||
railtypes[i] = id < RAILTYPE_END ? _cur.grffile->railtype_map[id] : INVALID_RAILTYPE;
|
||||
}
|
||||
|
||||
uint8 cidcount = buf->ReadByte();
|
||||
@@ -5688,7 +5689,7 @@ static void FeatureNewName(ByteReader *buf)
|
||||
bool new_scheme = _cur.grffile->grf_version >= 7;
|
||||
|
||||
uint8 feature = buf->ReadByte();
|
||||
if (feature >= GSF_END) {
|
||||
if (feature >= GSF_END && feature != 0x48) {
|
||||
grfmsg(1, "FeatureNewName: Unsupported feature 0x%02X, skipping", feature);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -163,7 +163,7 @@ struct GRFLoadedFeatures {
|
||||
uint64 used_liveries; ///< Bitmask of #LiveryScheme used by the defined engines.
|
||||
bool has_newhouses; ///< Set if there are any newhouses loaded.
|
||||
bool has_newindustries; ///< Set if there are any newindustries loaded.
|
||||
ShoreReplacement shore; ///< It which way shore sprites were replaced.
|
||||
ShoreReplacement shore; ///< In which way shore sprites were replaced.
|
||||
};
|
||||
|
||||
/**
|
||||
|
||||
@@ -100,6 +100,7 @@ AirportSpec AirportSpec::specs[NUM_AIRPORTS]; ///< Airport specifications.
|
||||
assert(type < lengthof(AirportSpec::specs));
|
||||
const AirportSpec *as = &AirportSpec::specs[type];
|
||||
if (type >= NEW_AIRPORT_OFFSET && !as->enabled) {
|
||||
if (_airport_mngr.GetGRFID(type) == 0) return as;
|
||||
byte subst_id = _airport_mngr.GetSubstituteID(type);
|
||||
if (subst_id == AT_INVALID) return as;
|
||||
as = &AirportSpec::specs[subst_id];
|
||||
|
||||
@@ -45,8 +45,8 @@ const NewsItem *_statusbar_news_item = NULL;
|
||||
|
||||
static uint MIN_NEWS_AMOUNT = 30; ///< preferred minimum amount of news messages
|
||||
static uint _total_news = 0; ///< current number of news items
|
||||
NewsItem *_oldest_news = NULL; ///< head of news items queue
|
||||
static NewsItem *_latest_news = NULL; ///< tail of news items queue
|
||||
static NewsItem *_oldest_news = NULL; ///< head of news items queue
|
||||
NewsItem *_latest_news = NULL; ///< tail of news items queue
|
||||
|
||||
/**
|
||||
* Forced news item.
|
||||
@@ -54,7 +54,7 @@ static NewsItem *_latest_news = NULL; ///< tail of news items queue
|
||||
* If the message being shown was forced by the user, a pointer is stored
|
||||
* in _forced_news. Otherwise, \a _forced_news variable is NULL.
|
||||
*/
|
||||
static const NewsItem *_forced_news = NULL; ///< item the user has asked for
|
||||
static const NewsItem *_forced_news = NULL;
|
||||
|
||||
/** Current news item (last item shown regularly). */
|
||||
static const NewsItem *_current_news = NULL;
|
||||
@@ -331,6 +331,11 @@ struct NewsWindow : Window {
|
||||
*size = maxdim(*size, GetSpriteSize(SPR_GRADIENT));
|
||||
break;
|
||||
|
||||
case WID_N_MGR_NAME:
|
||||
SetDParamStr(0, static_cast<const CompanyNewsInformation *>(this->ni->free_data)->president_name);
|
||||
str = STR_JUST_RAW_STRING;
|
||||
break;
|
||||
|
||||
case WID_N_MESSAGE:
|
||||
CopyInDParam(0, this->ni->params, lengthof(this->ni->params));
|
||||
str = this->ni->string_id;
|
||||
|
||||
@@ -17,6 +17,6 @@
|
||||
void ShowLastNewsMessage();
|
||||
void ShowMessageHistory();
|
||||
|
||||
extern NewsItem *_oldest_news;
|
||||
extern NewsItem *_latest_news;
|
||||
|
||||
#endif /* NEWS_GUI_H */
|
||||
|
||||
@@ -772,9 +772,10 @@ static void ChangeTileOwner_Object(TileIndex tile, Owner old_owner, Owner new_ow
|
||||
|
||||
bool do_clear = false;
|
||||
|
||||
if (IsObjectType(tile, OBJECT_OWNED_LAND) && new_owner != INVALID_OWNER) {
|
||||
ObjectType type = GetObjectType(tile);
|
||||
if ((type == OBJECT_OWNED_LAND || type >= NEW_OBJECT_OFFSET) && new_owner != INVALID_OWNER) {
|
||||
SetTileOwner(tile, new_owner);
|
||||
} else if (IsObjectType(tile, OBJECT_STATUE)) {
|
||||
} else if (type == OBJECT_STATUE) {
|
||||
Town *t = Object::GetByTile(tile)->town;
|
||||
ClrBit(t->statues, old_owner);
|
||||
if (new_owner != INVALID_OWNER && !HasBit(t->statues, new_owner)) {
|
||||
|
||||
@@ -62,6 +62,7 @@
|
||||
#include "town.h"
|
||||
#include "subsidy_func.h"
|
||||
#include "gfx_layout.h"
|
||||
#include "viewport_func.h"
|
||||
#include "viewport_sprite_sorter.h"
|
||||
#include "framerate_type.h"
|
||||
|
||||
@@ -339,6 +340,7 @@ static void LoadIntroGame(bool load_newgrfs = true)
|
||||
SetLocalCompany(COMPANY_FIRST);
|
||||
}
|
||||
|
||||
FixTitleGameZoom();
|
||||
_pause_mode = PM_UNPAUSED;
|
||||
_cursor.fix_at = false;
|
||||
|
||||
|
||||
@@ -24,6 +24,7 @@
|
||||
#include "tilehighlight_func.h"
|
||||
#include "network/network.h"
|
||||
#include "station_base.h"
|
||||
#include "industry.h"
|
||||
#include "waypoint_base.h"
|
||||
#include "core/geometry_func.hpp"
|
||||
#include "hotkeys.h"
|
||||
@@ -389,11 +390,18 @@ static Order GetOrderCmdFromTile(const Vehicle *v, TileIndex tile)
|
||||
return order;
|
||||
}
|
||||
|
||||
if (IsTileType(tile, MP_STATION)) {
|
||||
StationID st_index = GetStationIndex(tile);
|
||||
const Station *st = Station::Get(st_index);
|
||||
/* check for station or industry with neutral station */
|
||||
if (IsTileType(tile, MP_STATION) || IsTileType(tile, MP_INDUSTRY)) {
|
||||
const Station *st = nullptr;
|
||||
|
||||
if (st->owner == _local_company || st->owner == OWNER_NONE) {
|
||||
if (IsTileType(tile, MP_INDUSTRY)) {
|
||||
const Industry *in = Industry::GetByTile(tile);
|
||||
tile = in->location.tile;
|
||||
}
|
||||
|
||||
if (IsTileType(tile, MP_STATION)) st = Station::GetByTile(tile);
|
||||
|
||||
if (st != nullptr && (st->owner == _local_company || st->owner == OWNER_NONE)) {
|
||||
byte facil;
|
||||
(facil = FACIL_DOCK, v->type == VEH_SHIP) ||
|
||||
(facil = FACIL_TRAIN, v->type == VEH_TRAIN) ||
|
||||
@@ -401,6 +409,7 @@ static Order GetOrderCmdFromTile(const Vehicle *v, TileIndex tile)
|
||||
(facil = FACIL_BUS_STOP, v->type == VEH_ROAD && RoadVehicle::From(v)->IsBus()) ||
|
||||
(facil = FACIL_TRUCK_STOP, 1);
|
||||
if (st->facilities & facil) {
|
||||
StationID st_index = GetStationIndex(st->xy);
|
||||
order.MakeGoToStation(st_index);
|
||||
if (_ctrl_pressed) order.SetLoadType(OLF_FULL_LOAD_ANY);
|
||||
if (_settings_client.gui.new_nonstop && v->IsGroundVehicle()) order.SetNonStopType(ONSF_NO_STOP_AT_INTERMEDIATE_STATIONS);
|
||||
|
||||
@@ -203,7 +203,7 @@ public:
|
||||
char message[1024];
|
||||
seprintf(message, lastof(message),
|
||||
"Please send the generated crash information and the last (auto)save to the developers. "
|
||||
"This will greatly help debugging. The correct place to do this is http://bugs.openttd.org.\n\n"
|
||||
"This will greatly help debugging. The correct place to do this is https://github.com/OpenTTD/OpenTTD/issues.\n\n"
|
||||
"Generated file(s):\n%s\n%s\n%s",
|
||||
this->filename_log, this->filename_save, this->filename_screenshot);
|
||||
|
||||
|
||||
@@ -305,6 +305,13 @@ int MacOSStringCompare(const char *s1, const char *s2)
|
||||
CFStringRef cf1 = CFStringCreateWithCString(kCFAllocatorDefault, s1, kCFStringEncodingUTF8);
|
||||
CFStringRef cf2 = CFStringCreateWithCString(kCFAllocatorDefault, s2, kCFStringEncodingUTF8);
|
||||
|
||||
/* If any CFString could not be created (e.g., due to UTF8 invalid chars), return OS unsupported functionality */
|
||||
if (cf1 == nullptr || cf2 == nullptr) {
|
||||
if (cf1 != nullptr) CFRelease(cf1);
|
||||
if (cf2 != nullptr) CFRelease(cf2);
|
||||
return 0;
|
||||
}
|
||||
|
||||
CFComparisonResult res = CFStringCompareWithOptionsAndLocale(cf1, cf2, CFRangeMake(0, CFStringGetLength(cf1)), flags, _osx_locale);
|
||||
|
||||
CFRelease(cf1);
|
||||
|
||||
@@ -582,7 +582,7 @@ static bool _expanded;
|
||||
static const TCHAR _crash_desc[] =
|
||||
_T("A serious fault condition occurred in the game. The game will shut down.\n")
|
||||
_T("Please send the crash information and the crash.dmp file (if any) to the developers.\n")
|
||||
_T("This will greatly help debugging. The correct place to do this is http://bugs.openttd.org. ")
|
||||
_T("This will greatly help debugging. The correct place to do this is https://github.com/OpenTTD/OpenTTD/issues. ")
|
||||
_T("The information contained in the report is displayed below.\n")
|
||||
_T("Press \"Emergency save\" to attempt saving the game. Generated file(s):\n")
|
||||
_T("%s");
|
||||
|
||||
@@ -79,8 +79,8 @@ END
|
||||
//
|
||||
|
||||
VS_VERSION_INFO VERSIONINFO
|
||||
FILEVERSION 1,9,0,!!ISODATE!!
|
||||
PRODUCTVERSION 1,9,0,!!ISODATE!!
|
||||
FILEVERSION 1,9,3,!!ISODATE!!
|
||||
PRODUCTVERSION 1,9,3,!!ISODATE!!
|
||||
FILEFLAGSMASK 0x3fL
|
||||
#ifdef _DEBUG
|
||||
FILEFLAGS 0x1L
|
||||
|
||||
@@ -78,7 +78,7 @@ bool LoadLibraryList(Function proc[], const char *dll)
|
||||
void ShowOSErrorBox(const char *buf, bool system)
|
||||
{
|
||||
MyShowCursor(true);
|
||||
MessageBox(GetActiveWindow(), OTTD2FS(buf), _T("Error!"), MB_ICONSTOP);
|
||||
MessageBox(GetActiveWindow(), OTTD2FS(buf), _T("Error!"), MB_ICONSTOP | MB_TASKMODAL);
|
||||
}
|
||||
|
||||
void OSOpenBrowser(const char *url)
|
||||
|
||||
@@ -1565,6 +1565,7 @@ CommandCost CmdConvertRail(TileIndex tile, DoCommandFlag flags, uint32 p1, uint3
|
||||
|
||||
CommandCost cost(EXPENSES_CONSTRUCTION);
|
||||
CommandCost error = CommandCost(STR_ERROR_NO_SUITABLE_RAILROAD_TRACK); // by default, there is no track to convert.
|
||||
bool found_convertible_track = false; // whether we actually did convert some track (see bug #7633)
|
||||
|
||||
TileIterator *iter = diagonal ? (TileIterator *)new DiagonalTileIterator(area_start, area_end) : new OrthogonalTileIterator(area_start, area_end);
|
||||
for (; (tile = *iter) != INVALID_TILE; ++(*iter)) {
|
||||
@@ -1660,6 +1661,7 @@ CommandCost CmdConvertRail(TileIndex tile, DoCommandFlag flags, uint32 p1, uint3
|
||||
InvalidateWindowData(WC_VEHICLE_DEPOT, tile);
|
||||
InvalidateWindowData(WC_BUILD_VEHICLE, tile);
|
||||
}
|
||||
found_convertible_track = true;
|
||||
cost.AddCost(RailConvertCost(type, totype));
|
||||
break;
|
||||
|
||||
@@ -1671,6 +1673,7 @@ CommandCost CmdConvertRail(TileIndex tile, DoCommandFlag flags, uint32 p1, uint3
|
||||
YapfNotifyTrackLayoutChange(tile, RemoveFirstTrack(&tracks));
|
||||
}
|
||||
}
|
||||
found_convertible_track = true;
|
||||
cost.AddCost(RailConvertCost(type, totype) * CountBits(GetTrackBits(tile)));
|
||||
break;
|
||||
}
|
||||
@@ -1733,6 +1736,7 @@ CommandCost CmdConvertRail(TileIndex tile, DoCommandFlag flags, uint32 p1, uint3
|
||||
}
|
||||
}
|
||||
|
||||
found_convertible_track = true;
|
||||
cost.AddCost((GetTunnelBridgeLength(tile, endtile) + 2) * RailConvertCost(type, totype));
|
||||
break;
|
||||
}
|
||||
@@ -1743,6 +1747,7 @@ CommandCost CmdConvertRail(TileIndex tile, DoCommandFlag flags, uint32 p1, uint3
|
||||
YapfNotifyTrackLayoutChange(tile, track);
|
||||
}
|
||||
|
||||
found_convertible_track = true;
|
||||
cost.AddCost(RailConvertCost(type, totype));
|
||||
break;
|
||||
}
|
||||
@@ -1760,7 +1765,7 @@ CommandCost CmdConvertRail(TileIndex tile, DoCommandFlag flags, uint32 p1, uint3
|
||||
}
|
||||
|
||||
delete iter;
|
||||
return (cost.GetCost() == 0) ? error : cost;
|
||||
return found_convertible_track ? cost : error;
|
||||
}
|
||||
|
||||
static CommandCost RemoveTrainDepot(TileIndex tile, DoCommandFlag flags)
|
||||
|
||||
@@ -86,7 +86,7 @@ static bool IsStationAvailable(const StationSpec *statspec)
|
||||
return Convert8bitBooleanCallback(statspec->grf_prop.grffile, CBID_STATION_AVAILABILITY, cb_res);
|
||||
}
|
||||
|
||||
void CcPlaySound_SPLAT_RAIL(const CommandCost &result, TileIndex tile, uint32 p1, uint32 p2)
|
||||
void CcPlaySound_SPLAT_RAIL(const CommandCost &result, TileIndex tile, uint32 p1, uint32 p2, uint32 cmd)
|
||||
{
|
||||
if (result.Succeeded() && _settings_client.sound.confirm) SndPlayTileFx(SND_20_SPLAT_RAIL, tile);
|
||||
}
|
||||
@@ -129,7 +129,7 @@ static const DiagDirection _place_depot_extra_dir[12] = {
|
||||
DIAGDIR_NW, DIAGDIR_NE, DIAGDIR_NW, DIAGDIR_NE,
|
||||
};
|
||||
|
||||
void CcRailDepot(const CommandCost &result, TileIndex tile, uint32 p1, uint32 p2)
|
||||
void CcRailDepot(const CommandCost &result, TileIndex tile, uint32 p1, uint32 p2, uint32 cmd)
|
||||
{
|
||||
if (result.Failed()) return;
|
||||
|
||||
@@ -170,7 +170,7 @@ static void PlaceRail_Waypoint(TileIndex tile)
|
||||
}
|
||||
}
|
||||
|
||||
void CcStation(const CommandCost &result, TileIndex tile, uint32 p1, uint32 p2)
|
||||
void CcStation(const CommandCost &result, TileIndex tile, uint32 p1, uint32 p2, uint32 cmd)
|
||||
{
|
||||
if (result.Failed()) return;
|
||||
|
||||
@@ -272,7 +272,7 @@ static void PlaceRail_Bridge(TileIndex tile, Window *w)
|
||||
}
|
||||
|
||||
/** Command callback for building a tunnel */
|
||||
void CcBuildRailTunnel(const CommandCost &result, TileIndex tile, uint32 p1, uint32 p2)
|
||||
void CcBuildRailTunnel(const CommandCost &result, TileIndex tile, uint32 p1, uint32 p2, uint32 cmd)
|
||||
{
|
||||
if (result.Succeeded()) {
|
||||
if (_settings_client.sound.confirm) SndPlayTileFx(SND_20_SPLAT_RAIL, tile);
|
||||
|
||||
@@ -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 | !!ISSTABLETAG!! << 19 | 28004;
|
||||
const uint32 _openttd_newgrf_version = 1 << 28 | 9 << 24 | 3 << 20 | !!ISSTABLETAG!! << 19 | 28004;
|
||||
|
||||
#ifdef __MORPHOS__
|
||||
/**
|
||||
|
||||
@@ -64,7 +64,7 @@ static RoadType _cur_roadtype;
|
||||
static DiagDirection _road_depot_orientation;
|
||||
static DiagDirection _road_station_picker_orientation;
|
||||
|
||||
void CcPlaySound_SPLAT_OTHER(const CommandCost &result, TileIndex tile, uint32 p1, uint32 p2)
|
||||
void CcPlaySound_SPLAT_OTHER(const CommandCost &result, TileIndex tile, uint32 p1, uint32 p2, uint32 cmd)
|
||||
{
|
||||
if (result.Succeeded() && _settings_client.sound.confirm) SndPlayTileFx(SND_1F_SPLAT_OTHER, tile);
|
||||
}
|
||||
@@ -92,8 +92,9 @@ static void PlaceRoad_Bridge(TileIndex tile, Window *w)
|
||||
* @param p1 bit 0-3 railtype or roadtypes
|
||||
* bit 8-9 transport type
|
||||
* @param p2 unused
|
||||
* @param cmd unused
|
||||
*/
|
||||
void CcBuildRoadTunnel(const CommandCost &result, TileIndex start_tile, uint32 p1, uint32 p2)
|
||||
void CcBuildRoadTunnel(const CommandCost &result, TileIndex start_tile, uint32 p1, uint32 p2, uint32 cmd)
|
||||
{
|
||||
if (result.Succeeded()) {
|
||||
if (_settings_client.sound.confirm) SndPlayTileFx(SND_1F_SPLAT_OTHER, start_tile);
|
||||
@@ -172,7 +173,7 @@ void ConnectRoadToStructure(TileIndex tile, DiagDirection direction)
|
||||
}
|
||||
}
|
||||
|
||||
void CcRoadDepot(const CommandCost &result, TileIndex tile, uint32 p1, uint32 p2)
|
||||
void CcRoadDepot(const CommandCost &result, TileIndex tile, uint32 p1, uint32 p2, uint32 cmd)
|
||||
{
|
||||
if (result.Failed()) return;
|
||||
|
||||
@@ -194,9 +195,10 @@ void CcRoadDepot(const CommandCost &result, TileIndex tile, uint32 p1, uint32 p2
|
||||
* bit 5: Allow stations directly adjacent to other stations.
|
||||
* bit 6..7: Entrance direction (#DiagDirection).
|
||||
* bit 16..31: Station ID to join (NEW_STATION if build new one).
|
||||
* @param cmd Unused.
|
||||
* @see CmdBuildRoadStop
|
||||
*/
|
||||
void CcRoadStop(const CommandCost &result, TileIndex tile, uint32 p1, uint32 p2)
|
||||
void CcRoadStop(const CommandCost &result, TileIndex tile, uint32 p1, uint32 p2, uint32 cmd)
|
||||
{
|
||||
if (result.Failed()) return;
|
||||
|
||||
|
||||
@@ -1132,6 +1132,38 @@ bool AfterLoadGame()
|
||||
}
|
||||
}
|
||||
|
||||
/* Railtype moved from m3 to m8 in version SLV_EXTEND_RAILTYPES. */
|
||||
if (IsSavegameVersionBefore(SLV_EXTEND_RAILTYPES)) {
|
||||
for (TileIndex t = 0; t < map_size; t++) {
|
||||
switch (GetTileType(t)) {
|
||||
case MP_RAILWAY:
|
||||
SetRailType(t, (RailType)GB(_m[t].m3, 0, 4));
|
||||
break;
|
||||
|
||||
case MP_ROAD:
|
||||
if (IsLevelCrossing(t)) {
|
||||
SetRailType(t, (RailType)GB(_m[t].m3, 0, 4));
|
||||
}
|
||||
break;
|
||||
|
||||
case MP_STATION:
|
||||
if (HasStationRail(t)) {
|
||||
SetRailType(t, (RailType)GB(_m[t].m3, 0, 4));
|
||||
}
|
||||
break;
|
||||
|
||||
case MP_TUNNELBRIDGE:
|
||||
if (GetTunnelBridgeTransportType(t) == TRANSPORT_RAIL) {
|
||||
SetRailType(t, (RailType)GB(_m[t].m3, 0, 4));
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (IsSavegameVersionBefore(SLV_42)) {
|
||||
Vehicle *v;
|
||||
|
||||
@@ -1213,38 +1245,6 @@ bool AfterLoadGame()
|
||||
}
|
||||
}
|
||||
|
||||
/* Railtype moved from m3 to m8 in version SLV_EXTEND_RAILTYPES. */
|
||||
if (IsSavegameVersionBefore(SLV_EXTEND_RAILTYPES)) {
|
||||
for (TileIndex t = 0; t < map_size; t++) {
|
||||
switch (GetTileType(t)) {
|
||||
case MP_RAILWAY:
|
||||
SetRailType(t, (RailType)GB(_m[t].m3, 0, 4));
|
||||
break;
|
||||
|
||||
case MP_ROAD:
|
||||
if (IsLevelCrossing(t)) {
|
||||
SetRailType(t, (RailType)GB(_m[t].m3, 0, 4));
|
||||
}
|
||||
break;
|
||||
|
||||
case MP_STATION:
|
||||
if (HasStationRail(t)) {
|
||||
SetRailType(t, (RailType)GB(_m[t].m3, 0, 4));
|
||||
}
|
||||
break;
|
||||
|
||||
case MP_TUNNELBRIDGE:
|
||||
if (GetTunnelBridgeTransportType(t) == TRANSPORT_RAIL) {
|
||||
SetRailType(t, (RailType)GB(_m[t].m3, 0, 4));
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* Elrails got added in rev 24 */
|
||||
if (IsSavegameVersionBefore(SLV_24)) {
|
||||
RailType min_rail = RAILTYPE_ELECTRIC;
|
||||
@@ -1893,6 +1893,7 @@ bool AfterLoadGame()
|
||||
}
|
||||
|
||||
if (IsSavegameVersionBefore(SLV_62)) {
|
||||
GroupStatistics::UpdateAfterLoad(); // Ensure statistics pool is initialised before trying to delete vehicles
|
||||
/* Remove all trams from savegames without tram support.
|
||||
* There would be trams without tram track under causing crashes sooner or later. */
|
||||
RoadVehicle *v;
|
||||
@@ -2304,6 +2305,14 @@ bool AfterLoadGame()
|
||||
if (IsSavegameVersionBefore(SLV_128)) {
|
||||
const Depot *d;
|
||||
FOR_ALL_DEPOTS(d) {
|
||||
/* At some point, invalid depots were saved into the game (possibly those removed in the past?)
|
||||
* Remove them here, so they don't cause issues further down the line */
|
||||
if (!IsDepotTile(d->xy)) {
|
||||
DEBUG(sl, 0, "Removing invalid depot %d at %d, %d", d->index, TileX(d->xy), TileY(d->xy));
|
||||
delete d;
|
||||
d = nullptr;
|
||||
continue;
|
||||
}
|
||||
_m[d->xy].m2 = d->index;
|
||||
if (IsTileType(d->xy, MP_WATER)) _m[GetOtherShipDepotTile(d->xy)].m2 = d->index;
|
||||
}
|
||||
|
||||
@@ -233,7 +233,8 @@ void AfterLoadLinkGraphs()
|
||||
LinkGraph *lg;
|
||||
FOR_ALL_LINK_GRAPHS(lg) {
|
||||
for (NodeID node_id = 0; node_id < lg->Size(); ++node_id) {
|
||||
(*lg)[node_id].UpdateLocation(Station::Get((*lg)[node_id].Station())->xy);
|
||||
const Station *st = Station::GetIfValid((*lg)[node_id].Station());
|
||||
if (st != nullptr) (*lg)[node_id].UpdateLocation(st->xy);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -241,7 +242,8 @@ void AfterLoadLinkGraphs()
|
||||
FOR_ALL_LINK_GRAPH_JOBS(lgj) {
|
||||
lg = &(const_cast<LinkGraph &>(lgj->Graph()));
|
||||
for (NodeID node_id = 0; node_id < lg->Size(); ++node_id) {
|
||||
(*lg)[node_id].UpdateLocation(Station::Get((*lg)[node_id].Station())->xy);
|
||||
const Station *st = Station::GetIfValid((*lg)[node_id].Station());
|
||||
if (st != nullptr) (*lg)[node_id].UpdateLocation(st->xy);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2889,36 +2889,3 @@ void FileToSaveLoad::SetTitle(const char *title)
|
||||
{
|
||||
strecpy(this->title, title, lastof(this->title));
|
||||
}
|
||||
|
||||
#if 0
|
||||
/**
|
||||
* Function to get the type of the savegame by looking at the file header.
|
||||
* NOTICE: Not used right now, but could be used if extensions of savegames are garbled
|
||||
* @param file Savegame to be checked
|
||||
* @return SL_OLD_LOAD or SL_LOAD of the file
|
||||
*/
|
||||
int GetSavegameType(char *file)
|
||||
{
|
||||
const SaveLoadFormat *fmt;
|
||||
uint32 hdr;
|
||||
FILE *f;
|
||||
int mode = SL_OLD_LOAD;
|
||||
|
||||
f = fopen(file, "rb");
|
||||
if (fread(&hdr, sizeof(hdr), 1, f) != 1) {
|
||||
DEBUG(sl, 0, "Savegame is obsolete or invalid format");
|
||||
mode = SL_LOAD; // don't try to get filename, just show name as it is written
|
||||
} else {
|
||||
/* see if we have any loader for this type. */
|
||||
for (fmt = _saveload_formats; fmt != endof(_saveload_formats); fmt++) {
|
||||
if (fmt->tag == hdr) {
|
||||
mode = SL_LOAD; // new type of savegame
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fclose(f);
|
||||
return mode;
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -17,7 +17,6 @@
|
||||
*
|
||||
* \b 1.9.0
|
||||
*
|
||||
* 1.9.0 is not yet released. The following changes are not set in stone yet.
|
||||
* API additions:
|
||||
* \li AIAirport::GetMonthlyMaintenanceCost
|
||||
* \li AIGroup::SetParent
|
||||
|
||||
@@ -17,7 +17,6 @@
|
||||
*
|
||||
* \b 1.9.0
|
||||
*
|
||||
* 1.9.0 is not yet released. The following changes are not set in stone yet.
|
||||
* API additions:
|
||||
* \li GSAirport::GetMonthlyMaintenanceCost
|
||||
* \li GSClient
|
||||
|
||||
@@ -109,7 +109,7 @@
|
||||
return g != NULL && g->completed;
|
||||
}
|
||||
|
||||
/* static */ bool ScriptGoal::DoQuestion(uint16 uniqueid, uint8 target, bool is_client, Text *question, QuestionType type, int buttons)
|
||||
/* static */ bool ScriptGoal::DoQuestion(uint16 uniqueid, uint32 target, bool is_client, Text *question, QuestionType type, uint32 buttons)
|
||||
{
|
||||
CCountedPtr<Text> counter(question);
|
||||
|
||||
@@ -121,7 +121,7 @@
|
||||
EnforcePrecondition(false, buttons < (1 << ::GOAL_QUESTION_BUTTON_COUNT));
|
||||
EnforcePrecondition(false, (int)type < ::GOAL_QUESTION_TYPE_COUNT);
|
||||
|
||||
return ScriptObject::DoCommand(0, uniqueid | (target << 16) | (type << 24) | (is_client ? (1 << 31) : 0), buttons, CMD_GOAL_QUESTION, text);
|
||||
return ScriptObject::DoCommand(0, uniqueid | (target << 16), buttons | (type << 29) | (is_client ? (1 << 31) : 0), CMD_GOAL_QUESTION, text);
|
||||
}
|
||||
|
||||
/* static */ bool ScriptGoal::Question(uint16 uniqueid, ScriptCompany::CompanyID company, Text *question, QuestionType type, int buttons)
|
||||
@@ -138,8 +138,9 @@
|
||||
EnforcePrecondition(false, ScriptGame::IsMultiplayer());
|
||||
EnforcePrecondition(false, ScriptClient::ResolveClientID(client) != ScriptClient::CLIENT_INVALID);
|
||||
#ifdef ENABLE_NETWORK
|
||||
ClientIndex c = NetworkClientInfo::GetByClientID((::ClientID)client)->index;
|
||||
return DoQuestion(uniqueid, c, true, question, type, buttons);
|
||||
/* Can only send 16 bits of client_id before proper fix is implemented */
|
||||
EnforcePrecondition(false, client < (1 << 16));
|
||||
return DoQuestion(uniqueid, client, true, question, type, buttons);
|
||||
#else
|
||||
return false;
|
||||
#endif
|
||||
|
||||
@@ -211,7 +211,7 @@ protected:
|
||||
/**
|
||||
* Does common checks and asks the question.
|
||||
*/
|
||||
static bool DoQuestion(uint16 uniqueid, uint8 target, bool is_client, Text *question, QuestionType type, int buttons);
|
||||
static bool DoQuestion(uint16 uniqueid, uint32 target, bool is_client, Text *question, QuestionType type, uint32 buttons);
|
||||
};
|
||||
|
||||
#endif /* SCRIPT_GOAL_HPP */
|
||||
|
||||
@@ -23,6 +23,7 @@
|
||||
#include "../script_instance.hpp"
|
||||
#include "../script_fatalerror.hpp"
|
||||
#include "script_error.hpp"
|
||||
#include "../../debug.h"
|
||||
|
||||
#include "../../safeguards.h"
|
||||
|
||||
@@ -83,6 +84,27 @@ ScriptObject::ActiveInstance::~ActiveInstance()
|
||||
return GetStorage()->mode_instance;
|
||||
}
|
||||
|
||||
/* static */ void ScriptObject::SetLastCommand(TileIndex tile, uint32 p1, uint32 p2, uint32 cmd)
|
||||
{
|
||||
ScriptStorage *s = GetStorage();
|
||||
DEBUG(script, 6, "SetLastCommand company=%02d tile=%06x p1=%08x p2=%08x cmd=%d", s->root_company, tile, p1, p2, cmd);
|
||||
s->last_tile = tile;
|
||||
s->last_p1 = p1;
|
||||
s->last_p2 = p2;
|
||||
s->last_cmd = cmd & CMD_ID_MASK;
|
||||
}
|
||||
|
||||
/* static */ bool ScriptObject::CheckLastCommand(TileIndex tile, uint32 p1, uint32 p2, uint32 cmd)
|
||||
{
|
||||
ScriptStorage *s = GetStorage();
|
||||
DEBUG(script, 6, "CheckLastCommand company=%02d tile=%06x p1=%08x p2=%08x cmd=%d", s->root_company, tile, p1, p2, cmd);
|
||||
if (s->last_tile != tile) return false;
|
||||
if (s->last_p1 != p1) return false;
|
||||
if (s->last_p2 != p2) return false;
|
||||
if (s->last_cmd != (cmd & CMD_ID_MASK)) return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
/* static */ void ScriptObject::SetDoCommandCosts(Money value)
|
||||
{
|
||||
GetStorage()->costs = CommandCost(value);
|
||||
@@ -306,6 +328,9 @@ ScriptObject::ActiveInstance::~ActiveInstance()
|
||||
if (GetCommandFlags(cmd) & CMD_CLIENT_ID && p2 == 0) p2 = UINT32_MAX;
|
||||
#endif
|
||||
|
||||
/* Store the command for command callback validation. */
|
||||
if (!estimate_only && _networking && !_generating_world) SetLastCommand(tile, p1, p2, cmd);
|
||||
|
||||
/* Try to perform the command. */
|
||||
CommandCost res = ::DoCommandPInternal(tile, p1, p2, cmd, (_networking && !_generating_world) ? ScriptObject::GetActiveInstance()->GetDoCommandCallback() : NULL, text, false, estimate_only);
|
||||
|
||||
|
||||
@@ -71,6 +71,16 @@ protected:
|
||||
*/
|
||||
static bool DoCommand(TileIndex tile, uint32 p1, uint32 p2, uint cmd, const char *text = NULL, Script_SuspendCallbackProc *callback = NULL);
|
||||
|
||||
/**
|
||||
* Store the latest command executed by the script.
|
||||
*/
|
||||
static void SetLastCommand(TileIndex tile, uint32 p1, uint32 p2, uint cmd);
|
||||
|
||||
/**
|
||||
* Check if it's the latest command executed by the script.
|
||||
*/
|
||||
static bool CheckLastCommand(TileIndex tile, uint32 p1, uint32 p2, uint cmd);
|
||||
|
||||
/**
|
||||
* Sets the DoCommand costs counter to a value.
|
||||
*/
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user