Merge tag '1.11.0-beta2' into jgrpp
# Conflicts: # .github/workflows/ci-build.yml # .github/workflows/release.yml # CMakeLists.txt # src/blitter/32bpp_optimized.cpp # src/debug.cpp # src/gfx.cpp # src/gfx_func.h # src/lang/czech.txt # src/lang/english.txt # src/lang/italian.txt # src/lang/swedish.txt # src/lang/ukrainian.txt # src/network/network_server.cpp # src/os/windows/crashlog_win.cpp # src/os/windows/win32.cpp # src/pathfinder/follow_track.hpp # src/screenshot.cpp # src/settings_type.h # src/spritecache.cpp # src/vehicle_gui.cpp # src/video/sdl2_v.cpp # src/video/video_driver.cpp # src/video/video_driver.hpp # src/video/win32_v.cpp
This commit is contained in:
1
src/3rdparty/CMakeLists.txt
vendored
1
src/3rdparty/CMakeLists.txt
vendored
@@ -1,5 +1,6 @@
|
||||
add_subdirectory(md5)
|
||||
add_subdirectory(squirrel)
|
||||
add_subdirectory(opengl)
|
||||
add_subdirectory(os2)
|
||||
add_subdirectory(cpp-btree)
|
||||
add_subdirectory(mingw-std-threads)
|
||||
|
||||
10
src/3rdparty/opengl/CMakeLists.txt
vendored
Normal file
10
src/3rdparty/opengl/CMakeLists.txt
vendored
Normal file
@@ -0,0 +1,10 @@
|
||||
add_files(
|
||||
khrplatform.h
|
||||
glext.h
|
||||
CONDITION OPENGL_FOUND
|
||||
)
|
||||
|
||||
add_files(
|
||||
wglext.h
|
||||
CONDITION WIN32 AND OPENGL_FOUND
|
||||
)
|
||||
12861
src/3rdparty/opengl/glext.h
vendored
Normal file
12861
src/3rdparty/opengl/glext.h
vendored
Normal file
File diff suppressed because it is too large
Load Diff
290
src/3rdparty/opengl/khrplatform.h
vendored
Normal file
290
src/3rdparty/opengl/khrplatform.h
vendored
Normal file
@@ -0,0 +1,290 @@
|
||||
#ifndef __khrplatform_h_
|
||||
#define __khrplatform_h_
|
||||
|
||||
/*
|
||||
** Copyright (c) 2008-2018 The Khronos Group Inc.
|
||||
**
|
||||
** Permission is hereby granted, free of charge, to any person obtaining a
|
||||
** copy of this software and/or associated documentation files (the
|
||||
** "Materials"), to deal in the Materials without restriction, including
|
||||
** without limitation the rights to use, copy, modify, merge, publish,
|
||||
** distribute, sublicense, and/or sell copies of the Materials, and to
|
||||
** permit persons to whom the Materials are furnished to do so, subject to
|
||||
** the following conditions:
|
||||
**
|
||||
** The above copyright notice and this permission notice shall be included
|
||||
** in all copies or substantial portions of the Materials.
|
||||
**
|
||||
** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
||||
** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||
** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
|
||||
*/
|
||||
|
||||
/* Khronos platform-specific types and definitions.
|
||||
*
|
||||
* The master copy of khrplatform.h is maintained in the Khronos EGL
|
||||
* Registry repository at https://github.com/KhronosGroup/EGL-Registry
|
||||
* The last semantic modification to khrplatform.h was at commit ID:
|
||||
* 67a3e0864c2d75ea5287b9f3d2eb74a745936692
|
||||
*
|
||||
* Adopters may modify this file to suit their platform. Adopters are
|
||||
* encouraged to submit platform specific modifications to the Khronos
|
||||
* group so that they can be included in future versions of this file.
|
||||
* Please submit changes by filing pull requests or issues on
|
||||
* the EGL Registry repository linked above.
|
||||
*
|
||||
*
|
||||
* See the Implementer's Guidelines for information about where this file
|
||||
* should be located on your system and for more details of its use:
|
||||
* http://www.khronos.org/registry/implementers_guide.pdf
|
||||
*
|
||||
* This file should be included as
|
||||
* #include <KHR/khrplatform.h>
|
||||
* by Khronos client API header files that use its types and defines.
|
||||
*
|
||||
* The types in khrplatform.h should only be used to define API-specific types.
|
||||
*
|
||||
* Types defined in khrplatform.h:
|
||||
* khronos_int8_t signed 8 bit
|
||||
* khronos_uint8_t unsigned 8 bit
|
||||
* khronos_int16_t signed 16 bit
|
||||
* khronos_uint16_t unsigned 16 bit
|
||||
* khronos_int32_t signed 32 bit
|
||||
* khronos_uint32_t unsigned 32 bit
|
||||
* khronos_int64_t signed 64 bit
|
||||
* khronos_uint64_t unsigned 64 bit
|
||||
* khronos_intptr_t signed same number of bits as a pointer
|
||||
* khronos_uintptr_t unsigned same number of bits as a pointer
|
||||
* khronos_ssize_t signed size
|
||||
* khronos_usize_t unsigned size
|
||||
* khronos_float_t signed 32 bit floating point
|
||||
* khronos_time_ns_t unsigned 64 bit time in nanoseconds
|
||||
* khronos_utime_nanoseconds_t unsigned time interval or absolute time in
|
||||
* nanoseconds
|
||||
* khronos_stime_nanoseconds_t signed time interval in nanoseconds
|
||||
* khronos_boolean_enum_t enumerated boolean type. This should
|
||||
* only be used as a base type when a client API's boolean type is
|
||||
* an enum. Client APIs which use an integer or other type for
|
||||
* booleans cannot use this as the base type for their boolean.
|
||||
*
|
||||
* Tokens defined in khrplatform.h:
|
||||
*
|
||||
* KHRONOS_FALSE, KHRONOS_TRUE Enumerated boolean false/true values.
|
||||
*
|
||||
* KHRONOS_SUPPORT_INT64 is 1 if 64 bit integers are supported; otherwise 0.
|
||||
* KHRONOS_SUPPORT_FLOAT is 1 if floats are supported; otherwise 0.
|
||||
*
|
||||
* Calling convention macros defined in this file:
|
||||
* KHRONOS_APICALL
|
||||
* KHRONOS_APIENTRY
|
||||
* KHRONOS_APIATTRIBUTES
|
||||
*
|
||||
* These may be used in function prototypes as:
|
||||
*
|
||||
* KHRONOS_APICALL void KHRONOS_APIENTRY funcname(
|
||||
* int arg1,
|
||||
* int arg2) KHRONOS_APIATTRIBUTES;
|
||||
*/
|
||||
|
||||
#if defined(__SCITECH_SNAP__) && !defined(KHRONOS_STATIC)
|
||||
# define KHRONOS_STATIC 1
|
||||
#endif
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
* Definition of KHRONOS_APICALL
|
||||
*-------------------------------------------------------------------------
|
||||
* This precedes the return type of the function in the function prototype.
|
||||
*/
|
||||
#if defined(KHRONOS_STATIC)
|
||||
/* If the preprocessor constant KHRONOS_STATIC is defined, make the
|
||||
* header compatible with static linking. */
|
||||
# define KHRONOS_APICALL
|
||||
#elif defined(_WIN32)
|
||||
# define KHRONOS_APICALL __declspec(dllimport)
|
||||
#elif defined (__SYMBIAN32__)
|
||||
# define KHRONOS_APICALL IMPORT_C
|
||||
#elif defined(__ANDROID__)
|
||||
# define KHRONOS_APICALL __attribute__((visibility("default")))
|
||||
#else
|
||||
# define KHRONOS_APICALL
|
||||
#endif
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
* Definition of KHRONOS_APIENTRY
|
||||
*-------------------------------------------------------------------------
|
||||
* This follows the return type of the function and precedes the function
|
||||
* name in the function prototype.
|
||||
*/
|
||||
#if defined(_WIN32) && !defined(_WIN32_WCE) && !defined(__SCITECH_SNAP__)
|
||||
/* Win32 but not WinCE */
|
||||
# define KHRONOS_APIENTRY __stdcall
|
||||
#else
|
||||
# define KHRONOS_APIENTRY
|
||||
#endif
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
* Definition of KHRONOS_APIATTRIBUTES
|
||||
*-------------------------------------------------------------------------
|
||||
* This follows the closing parenthesis of the function prototype arguments.
|
||||
*/
|
||||
#if defined (__ARMCC_2__)
|
||||
#define KHRONOS_APIATTRIBUTES __softfp
|
||||
#else
|
||||
#define KHRONOS_APIATTRIBUTES
|
||||
#endif
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
* basic type definitions
|
||||
*-----------------------------------------------------------------------*/
|
||||
#if (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) || defined(__GNUC__) || defined(__SCO__) || defined(__USLC__)
|
||||
|
||||
|
||||
/*
|
||||
* Using <stdint.h>
|
||||
*/
|
||||
#include <stdint.h>
|
||||
typedef int32_t khronos_int32_t;
|
||||
typedef uint32_t khronos_uint32_t;
|
||||
typedef int64_t khronos_int64_t;
|
||||
typedef uint64_t khronos_uint64_t;
|
||||
#define KHRONOS_SUPPORT_INT64 1
|
||||
#define KHRONOS_SUPPORT_FLOAT 1
|
||||
|
||||
#elif defined(__VMS ) || defined(__sgi)
|
||||
|
||||
/*
|
||||
* Using <inttypes.h>
|
||||
*/
|
||||
#include <inttypes.h>
|
||||
typedef int32_t khronos_int32_t;
|
||||
typedef uint32_t khronos_uint32_t;
|
||||
typedef int64_t khronos_int64_t;
|
||||
typedef uint64_t khronos_uint64_t;
|
||||
#define KHRONOS_SUPPORT_INT64 1
|
||||
#define KHRONOS_SUPPORT_FLOAT 1
|
||||
|
||||
#elif defined(_WIN32) && !defined(__SCITECH_SNAP__)
|
||||
|
||||
/*
|
||||
* Win32
|
||||
*/
|
||||
typedef __int32 khronos_int32_t;
|
||||
typedef unsigned __int32 khronos_uint32_t;
|
||||
typedef __int64 khronos_int64_t;
|
||||
typedef unsigned __int64 khronos_uint64_t;
|
||||
#define KHRONOS_SUPPORT_INT64 1
|
||||
#define KHRONOS_SUPPORT_FLOAT 1
|
||||
|
||||
#elif defined(__sun__) || defined(__digital__)
|
||||
|
||||
/*
|
||||
* Sun or Digital
|
||||
*/
|
||||
typedef int khronos_int32_t;
|
||||
typedef unsigned int khronos_uint32_t;
|
||||
#if defined(__arch64__) || defined(_LP64)
|
||||
typedef long int khronos_int64_t;
|
||||
typedef unsigned long int khronos_uint64_t;
|
||||
#else
|
||||
typedef long long int khronos_int64_t;
|
||||
typedef unsigned long long int khronos_uint64_t;
|
||||
#endif /* __arch64__ */
|
||||
#define KHRONOS_SUPPORT_INT64 1
|
||||
#define KHRONOS_SUPPORT_FLOAT 1
|
||||
|
||||
#elif 0
|
||||
|
||||
/*
|
||||
* Hypothetical platform with no float or int64 support
|
||||
*/
|
||||
typedef int khronos_int32_t;
|
||||
typedef unsigned int khronos_uint32_t;
|
||||
#define KHRONOS_SUPPORT_INT64 0
|
||||
#define KHRONOS_SUPPORT_FLOAT 0
|
||||
|
||||
#else
|
||||
|
||||
/*
|
||||
* Generic fallback
|
||||
*/
|
||||
#include <stdint.h>
|
||||
typedef int32_t khronos_int32_t;
|
||||
typedef uint32_t khronos_uint32_t;
|
||||
typedef int64_t khronos_int64_t;
|
||||
typedef uint64_t khronos_uint64_t;
|
||||
#define KHRONOS_SUPPORT_INT64 1
|
||||
#define KHRONOS_SUPPORT_FLOAT 1
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
/*
|
||||
* Types that are (so far) the same on all platforms
|
||||
*/
|
||||
typedef signed char khronos_int8_t;
|
||||
typedef unsigned char khronos_uint8_t;
|
||||
typedef signed short int khronos_int16_t;
|
||||
typedef unsigned short int khronos_uint16_t;
|
||||
|
||||
/*
|
||||
* Types that differ between LLP64 and LP64 architectures - in LLP64,
|
||||
* pointers are 64 bits, but 'long' is still 32 bits. Win64 appears
|
||||
* to be the only LLP64 architecture in current use.
|
||||
*/
|
||||
#ifdef _WIN64
|
||||
typedef signed long long int khronos_intptr_t;
|
||||
typedef unsigned long long int khronos_uintptr_t;
|
||||
typedef signed long long int khronos_ssize_t;
|
||||
typedef unsigned long long int khronos_usize_t;
|
||||
#else
|
||||
typedef signed long int khronos_intptr_t;
|
||||
typedef unsigned long int khronos_uintptr_t;
|
||||
typedef signed long int khronos_ssize_t;
|
||||
typedef unsigned long int khronos_usize_t;
|
||||
#endif
|
||||
|
||||
#if KHRONOS_SUPPORT_FLOAT
|
||||
/*
|
||||
* Float type
|
||||
*/
|
||||
typedef float khronos_float_t;
|
||||
#endif
|
||||
|
||||
#if KHRONOS_SUPPORT_INT64
|
||||
/* Time types
|
||||
*
|
||||
* These types can be used to represent a time interval in nanoseconds or
|
||||
* an absolute Unadjusted System Time. Unadjusted System Time is the number
|
||||
* of nanoseconds since some arbitrary system event (e.g. since the last
|
||||
* time the system booted). The Unadjusted System Time is an unsigned
|
||||
* 64 bit value that wraps back to 0 every 584 years. Time intervals
|
||||
* may be either signed or unsigned.
|
||||
*/
|
||||
typedef khronos_uint64_t khronos_utime_nanoseconds_t;
|
||||
typedef khronos_int64_t khronos_stime_nanoseconds_t;
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Dummy value used to pad enum types to 32 bits.
|
||||
*/
|
||||
#ifndef KHRONOS_MAX_ENUM
|
||||
#define KHRONOS_MAX_ENUM 0x7FFFFFFF
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Enumerated boolean type
|
||||
*
|
||||
* Values other than zero should be considered to be true. Therefore
|
||||
* comparisons should not be made against KHRONOS_TRUE.
|
||||
*/
|
||||
typedef enum {
|
||||
KHRONOS_FALSE = 0,
|
||||
KHRONOS_TRUE = 1,
|
||||
KHRONOS_BOOLEAN_ENUM_FORCE_SIZE = KHRONOS_MAX_ENUM
|
||||
} khronos_boolean_enum_t;
|
||||
|
||||
#endif /* __khrplatform_h_ */
|
||||
845
src/3rdparty/opengl/wglext.h
vendored
Normal file
845
src/3rdparty/opengl/wglext.h
vendored
Normal file
@@ -0,0 +1,845 @@
|
||||
#ifndef __wgl_wglext_h_
|
||||
#define __wgl_wglext_h_ 1
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/*
|
||||
** Copyright 2013-2020 The Khronos Group Inc.
|
||||
** SPDX-License-Identifier: MIT
|
||||
**
|
||||
** This header is generated from the Khronos OpenGL / OpenGL ES XML
|
||||
** API Registry. The current version of the Registry, generator scripts
|
||||
** used to make the header, and the header can be found at
|
||||
** https://github.com/KhronosGroup/OpenGL-Registry
|
||||
*/
|
||||
|
||||
#if defined(_WIN32) && !defined(APIENTRY) && !defined(__CYGWIN__) && !defined(__SCITECH_SNAP__)
|
||||
#define WIN32_LEAN_AND_MEAN 1
|
||||
#include <windows.h>
|
||||
#endif
|
||||
|
||||
#define WGL_WGLEXT_VERSION 20200813
|
||||
|
||||
/* Generated C header for:
|
||||
* API: wgl
|
||||
* Versions considered: .*
|
||||
* Versions emitted: _nomatch_^
|
||||
* Default extensions included: wgl
|
||||
* Additional extensions included: _nomatch_^
|
||||
* Extensions removed: _nomatch_^
|
||||
*/
|
||||
|
||||
#ifndef WGL_ARB_buffer_region
|
||||
#define WGL_ARB_buffer_region 1
|
||||
#define WGL_FRONT_COLOR_BUFFER_BIT_ARB 0x00000001
|
||||
#define WGL_BACK_COLOR_BUFFER_BIT_ARB 0x00000002
|
||||
#define WGL_DEPTH_BUFFER_BIT_ARB 0x00000004
|
||||
#define WGL_STENCIL_BUFFER_BIT_ARB 0x00000008
|
||||
typedef HANDLE (WINAPI * PFNWGLCREATEBUFFERREGIONARBPROC) (HDC hDC, int iLayerPlane, UINT uType);
|
||||
typedef VOID (WINAPI * PFNWGLDELETEBUFFERREGIONARBPROC) (HANDLE hRegion);
|
||||
typedef BOOL (WINAPI * PFNWGLSAVEBUFFERREGIONARBPROC) (HANDLE hRegion, int x, int y, int width, int height);
|
||||
typedef BOOL (WINAPI * PFNWGLRESTOREBUFFERREGIONARBPROC) (HANDLE hRegion, int x, int y, int width, int height, int xSrc, int ySrc);
|
||||
#ifdef WGL_WGLEXT_PROTOTYPES
|
||||
HANDLE WINAPI wglCreateBufferRegionARB (HDC hDC, int iLayerPlane, UINT uType);
|
||||
VOID WINAPI wglDeleteBufferRegionARB (HANDLE hRegion);
|
||||
BOOL WINAPI wglSaveBufferRegionARB (HANDLE hRegion, int x, int y, int width, int height);
|
||||
BOOL WINAPI wglRestoreBufferRegionARB (HANDLE hRegion, int x, int y, int width, int height, int xSrc, int ySrc);
|
||||
#endif
|
||||
#endif /* WGL_ARB_buffer_region */
|
||||
|
||||
#ifndef WGL_ARB_context_flush_control
|
||||
#define WGL_ARB_context_flush_control 1
|
||||
#define WGL_CONTEXT_RELEASE_BEHAVIOR_ARB 0x2097
|
||||
#define WGL_CONTEXT_RELEASE_BEHAVIOR_NONE_ARB 0
|
||||
#define WGL_CONTEXT_RELEASE_BEHAVIOR_FLUSH_ARB 0x2098
|
||||
#endif /* WGL_ARB_context_flush_control */
|
||||
|
||||
#ifndef WGL_ARB_create_context
|
||||
#define WGL_ARB_create_context 1
|
||||
#define WGL_CONTEXT_DEBUG_BIT_ARB 0x00000001
|
||||
#define WGL_CONTEXT_FORWARD_COMPATIBLE_BIT_ARB 0x00000002
|
||||
#define WGL_CONTEXT_MAJOR_VERSION_ARB 0x2091
|
||||
#define WGL_CONTEXT_MINOR_VERSION_ARB 0x2092
|
||||
#define WGL_CONTEXT_LAYER_PLANE_ARB 0x2093
|
||||
#define WGL_CONTEXT_FLAGS_ARB 0x2094
|
||||
#define ERROR_INVALID_VERSION_ARB 0x2095
|
||||
typedef HGLRC (WINAPI * PFNWGLCREATECONTEXTATTRIBSARBPROC) (HDC hDC, HGLRC hShareContext, const int *attribList);
|
||||
#ifdef WGL_WGLEXT_PROTOTYPES
|
||||
HGLRC WINAPI wglCreateContextAttribsARB (HDC hDC, HGLRC hShareContext, const int *attribList);
|
||||
#endif
|
||||
#endif /* WGL_ARB_create_context */
|
||||
|
||||
#ifndef WGL_ARB_create_context_no_error
|
||||
#define WGL_ARB_create_context_no_error 1
|
||||
#define WGL_CONTEXT_OPENGL_NO_ERROR_ARB 0x31B3
|
||||
#endif /* WGL_ARB_create_context_no_error */
|
||||
|
||||
#ifndef WGL_ARB_create_context_profile
|
||||
#define WGL_ARB_create_context_profile 1
|
||||
#define WGL_CONTEXT_PROFILE_MASK_ARB 0x9126
|
||||
#define WGL_CONTEXT_CORE_PROFILE_BIT_ARB 0x00000001
|
||||
#define WGL_CONTEXT_COMPATIBILITY_PROFILE_BIT_ARB 0x00000002
|
||||
#define ERROR_INVALID_PROFILE_ARB 0x2096
|
||||
#endif /* WGL_ARB_create_context_profile */
|
||||
|
||||
#ifndef WGL_ARB_create_context_robustness
|
||||
#define WGL_ARB_create_context_robustness 1
|
||||
#define WGL_CONTEXT_ROBUST_ACCESS_BIT_ARB 0x00000004
|
||||
#define WGL_LOSE_CONTEXT_ON_RESET_ARB 0x8252
|
||||
#define WGL_CONTEXT_RESET_NOTIFICATION_STRATEGY_ARB 0x8256
|
||||
#define WGL_NO_RESET_NOTIFICATION_ARB 0x8261
|
||||
#endif /* WGL_ARB_create_context_robustness */
|
||||
|
||||
#ifndef WGL_ARB_extensions_string
|
||||
#define WGL_ARB_extensions_string 1
|
||||
typedef const char *(WINAPI * PFNWGLGETEXTENSIONSSTRINGARBPROC) (HDC hdc);
|
||||
#ifdef WGL_WGLEXT_PROTOTYPES
|
||||
const char *WINAPI wglGetExtensionsStringARB (HDC hdc);
|
||||
#endif
|
||||
#endif /* WGL_ARB_extensions_string */
|
||||
|
||||
#ifndef WGL_ARB_framebuffer_sRGB
|
||||
#define WGL_ARB_framebuffer_sRGB 1
|
||||
#define WGL_FRAMEBUFFER_SRGB_CAPABLE_ARB 0x20A9
|
||||
#endif /* WGL_ARB_framebuffer_sRGB */
|
||||
|
||||
#ifndef WGL_ARB_make_current_read
|
||||
#define WGL_ARB_make_current_read 1
|
||||
#define ERROR_INVALID_PIXEL_TYPE_ARB 0x2043
|
||||
#define ERROR_INCOMPATIBLE_DEVICE_CONTEXTS_ARB 0x2054
|
||||
typedef BOOL (WINAPI * PFNWGLMAKECONTEXTCURRENTARBPROC) (HDC hDrawDC, HDC hReadDC, HGLRC hglrc);
|
||||
typedef HDC (WINAPI * PFNWGLGETCURRENTREADDCARBPROC) (void);
|
||||
#ifdef WGL_WGLEXT_PROTOTYPES
|
||||
BOOL WINAPI wglMakeContextCurrentARB (HDC hDrawDC, HDC hReadDC, HGLRC hglrc);
|
||||
HDC WINAPI wglGetCurrentReadDCARB (void);
|
||||
#endif
|
||||
#endif /* WGL_ARB_make_current_read */
|
||||
|
||||
#ifndef WGL_ARB_multisample
|
||||
#define WGL_ARB_multisample 1
|
||||
#define WGL_SAMPLE_BUFFERS_ARB 0x2041
|
||||
#define WGL_SAMPLES_ARB 0x2042
|
||||
#endif /* WGL_ARB_multisample */
|
||||
|
||||
#ifndef WGL_ARB_pbuffer
|
||||
#define WGL_ARB_pbuffer 1
|
||||
DECLARE_HANDLE(HPBUFFERARB);
|
||||
#define WGL_DRAW_TO_PBUFFER_ARB 0x202D
|
||||
#define WGL_MAX_PBUFFER_PIXELS_ARB 0x202E
|
||||
#define WGL_MAX_PBUFFER_WIDTH_ARB 0x202F
|
||||
#define WGL_MAX_PBUFFER_HEIGHT_ARB 0x2030
|
||||
#define WGL_PBUFFER_LARGEST_ARB 0x2033
|
||||
#define WGL_PBUFFER_WIDTH_ARB 0x2034
|
||||
#define WGL_PBUFFER_HEIGHT_ARB 0x2035
|
||||
#define WGL_PBUFFER_LOST_ARB 0x2036
|
||||
typedef HPBUFFERARB (WINAPI * PFNWGLCREATEPBUFFERARBPROC) (HDC hDC, int iPixelFormat, int iWidth, int iHeight, const int *piAttribList);
|
||||
typedef HDC (WINAPI * PFNWGLGETPBUFFERDCARBPROC) (HPBUFFERARB hPbuffer);
|
||||
typedef int (WINAPI * PFNWGLRELEASEPBUFFERDCARBPROC) (HPBUFFERARB hPbuffer, HDC hDC);
|
||||
typedef BOOL (WINAPI * PFNWGLDESTROYPBUFFERARBPROC) (HPBUFFERARB hPbuffer);
|
||||
typedef BOOL (WINAPI * PFNWGLQUERYPBUFFERARBPROC) (HPBUFFERARB hPbuffer, int iAttribute, int *piValue);
|
||||
#ifdef WGL_WGLEXT_PROTOTYPES
|
||||
HPBUFFERARB WINAPI wglCreatePbufferARB (HDC hDC, int iPixelFormat, int iWidth, int iHeight, const int *piAttribList);
|
||||
HDC WINAPI wglGetPbufferDCARB (HPBUFFERARB hPbuffer);
|
||||
int WINAPI wglReleasePbufferDCARB (HPBUFFERARB hPbuffer, HDC hDC);
|
||||
BOOL WINAPI wglDestroyPbufferARB (HPBUFFERARB hPbuffer);
|
||||
BOOL WINAPI wglQueryPbufferARB (HPBUFFERARB hPbuffer, int iAttribute, int *piValue);
|
||||
#endif
|
||||
#endif /* WGL_ARB_pbuffer */
|
||||
|
||||
#ifndef WGL_ARB_pixel_format
|
||||
#define WGL_ARB_pixel_format 1
|
||||
#define WGL_NUMBER_PIXEL_FORMATS_ARB 0x2000
|
||||
#define WGL_DRAW_TO_WINDOW_ARB 0x2001
|
||||
#define WGL_DRAW_TO_BITMAP_ARB 0x2002
|
||||
#define WGL_ACCELERATION_ARB 0x2003
|
||||
#define WGL_NEED_PALETTE_ARB 0x2004
|
||||
#define WGL_NEED_SYSTEM_PALETTE_ARB 0x2005
|
||||
#define WGL_SWAP_LAYER_BUFFERS_ARB 0x2006
|
||||
#define WGL_SWAP_METHOD_ARB 0x2007
|
||||
#define WGL_NUMBER_OVERLAYS_ARB 0x2008
|
||||
#define WGL_NUMBER_UNDERLAYS_ARB 0x2009
|
||||
#define WGL_TRANSPARENT_ARB 0x200A
|
||||
#define WGL_TRANSPARENT_RED_VALUE_ARB 0x2037
|
||||
#define WGL_TRANSPARENT_GREEN_VALUE_ARB 0x2038
|
||||
#define WGL_TRANSPARENT_BLUE_VALUE_ARB 0x2039
|
||||
#define WGL_TRANSPARENT_ALPHA_VALUE_ARB 0x203A
|
||||
#define WGL_TRANSPARENT_INDEX_VALUE_ARB 0x203B
|
||||
#define WGL_SHARE_DEPTH_ARB 0x200C
|
||||
#define WGL_SHARE_STENCIL_ARB 0x200D
|
||||
#define WGL_SHARE_ACCUM_ARB 0x200E
|
||||
#define WGL_SUPPORT_GDI_ARB 0x200F
|
||||
#define WGL_SUPPORT_OPENGL_ARB 0x2010
|
||||
#define WGL_DOUBLE_BUFFER_ARB 0x2011
|
||||
#define WGL_STEREO_ARB 0x2012
|
||||
#define WGL_PIXEL_TYPE_ARB 0x2013
|
||||
#define WGL_COLOR_BITS_ARB 0x2014
|
||||
#define WGL_RED_BITS_ARB 0x2015
|
||||
#define WGL_RED_SHIFT_ARB 0x2016
|
||||
#define WGL_GREEN_BITS_ARB 0x2017
|
||||
#define WGL_GREEN_SHIFT_ARB 0x2018
|
||||
#define WGL_BLUE_BITS_ARB 0x2019
|
||||
#define WGL_BLUE_SHIFT_ARB 0x201A
|
||||
#define WGL_ALPHA_BITS_ARB 0x201B
|
||||
#define WGL_ALPHA_SHIFT_ARB 0x201C
|
||||
#define WGL_ACCUM_BITS_ARB 0x201D
|
||||
#define WGL_ACCUM_RED_BITS_ARB 0x201E
|
||||
#define WGL_ACCUM_GREEN_BITS_ARB 0x201F
|
||||
#define WGL_ACCUM_BLUE_BITS_ARB 0x2020
|
||||
#define WGL_ACCUM_ALPHA_BITS_ARB 0x2021
|
||||
#define WGL_DEPTH_BITS_ARB 0x2022
|
||||
#define WGL_STENCIL_BITS_ARB 0x2023
|
||||
#define WGL_AUX_BUFFERS_ARB 0x2024
|
||||
#define WGL_NO_ACCELERATION_ARB 0x2025
|
||||
#define WGL_GENERIC_ACCELERATION_ARB 0x2026
|
||||
#define WGL_FULL_ACCELERATION_ARB 0x2027
|
||||
#define WGL_SWAP_EXCHANGE_ARB 0x2028
|
||||
#define WGL_SWAP_COPY_ARB 0x2029
|
||||
#define WGL_SWAP_UNDEFINED_ARB 0x202A
|
||||
#define WGL_TYPE_RGBA_ARB 0x202B
|
||||
#define WGL_TYPE_COLORINDEX_ARB 0x202C
|
||||
typedef BOOL (WINAPI * PFNWGLGETPIXELFORMATATTRIBIVARBPROC) (HDC hdc, int iPixelFormat, int iLayerPlane, UINT nAttributes, const int *piAttributes, int *piValues);
|
||||
typedef BOOL (WINAPI * PFNWGLGETPIXELFORMATATTRIBFVARBPROC) (HDC hdc, int iPixelFormat, int iLayerPlane, UINT nAttributes, const int *piAttributes, FLOAT *pfValues);
|
||||
typedef BOOL (WINAPI * PFNWGLCHOOSEPIXELFORMATARBPROC) (HDC hdc, const int *piAttribIList, const FLOAT *pfAttribFList, UINT nMaxFormats, int *piFormats, UINT *nNumFormats);
|
||||
#ifdef WGL_WGLEXT_PROTOTYPES
|
||||
BOOL WINAPI wglGetPixelFormatAttribivARB (HDC hdc, int iPixelFormat, int iLayerPlane, UINT nAttributes, const int *piAttributes, int *piValues);
|
||||
BOOL WINAPI wglGetPixelFormatAttribfvARB (HDC hdc, int iPixelFormat, int iLayerPlane, UINT nAttributes, const int *piAttributes, FLOAT *pfValues);
|
||||
BOOL WINAPI wglChoosePixelFormatARB (HDC hdc, const int *piAttribIList, const FLOAT *pfAttribFList, UINT nMaxFormats, int *piFormats, UINT *nNumFormats);
|
||||
#endif
|
||||
#endif /* WGL_ARB_pixel_format */
|
||||
|
||||
#ifndef WGL_ARB_pixel_format_float
|
||||
#define WGL_ARB_pixel_format_float 1
|
||||
#define WGL_TYPE_RGBA_FLOAT_ARB 0x21A0
|
||||
#endif /* WGL_ARB_pixel_format_float */
|
||||
|
||||
#ifndef WGL_ARB_render_texture
|
||||
#define WGL_ARB_render_texture 1
|
||||
#define WGL_BIND_TO_TEXTURE_RGB_ARB 0x2070
|
||||
#define WGL_BIND_TO_TEXTURE_RGBA_ARB 0x2071
|
||||
#define WGL_TEXTURE_FORMAT_ARB 0x2072
|
||||
#define WGL_TEXTURE_TARGET_ARB 0x2073
|
||||
#define WGL_MIPMAP_TEXTURE_ARB 0x2074
|
||||
#define WGL_TEXTURE_RGB_ARB 0x2075
|
||||
#define WGL_TEXTURE_RGBA_ARB 0x2076
|
||||
#define WGL_NO_TEXTURE_ARB 0x2077
|
||||
#define WGL_TEXTURE_CUBE_MAP_ARB 0x2078
|
||||
#define WGL_TEXTURE_1D_ARB 0x2079
|
||||
#define WGL_TEXTURE_2D_ARB 0x207A
|
||||
#define WGL_MIPMAP_LEVEL_ARB 0x207B
|
||||
#define WGL_CUBE_MAP_FACE_ARB 0x207C
|
||||
#define WGL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB 0x207D
|
||||
#define WGL_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB 0x207E
|
||||
#define WGL_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB 0x207F
|
||||
#define WGL_TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB 0x2080
|
||||
#define WGL_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB 0x2081
|
||||
#define WGL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB 0x2082
|
||||
#define WGL_FRONT_LEFT_ARB 0x2083
|
||||
#define WGL_FRONT_RIGHT_ARB 0x2084
|
||||
#define WGL_BACK_LEFT_ARB 0x2085
|
||||
#define WGL_BACK_RIGHT_ARB 0x2086
|
||||
#define WGL_AUX0_ARB 0x2087
|
||||
#define WGL_AUX1_ARB 0x2088
|
||||
#define WGL_AUX2_ARB 0x2089
|
||||
#define WGL_AUX3_ARB 0x208A
|
||||
#define WGL_AUX4_ARB 0x208B
|
||||
#define WGL_AUX5_ARB 0x208C
|
||||
#define WGL_AUX6_ARB 0x208D
|
||||
#define WGL_AUX7_ARB 0x208E
|
||||
#define WGL_AUX8_ARB 0x208F
|
||||
#define WGL_AUX9_ARB 0x2090
|
||||
typedef BOOL (WINAPI * PFNWGLBINDTEXIMAGEARBPROC) (HPBUFFERARB hPbuffer, int iBuffer);
|
||||
typedef BOOL (WINAPI * PFNWGLRELEASETEXIMAGEARBPROC) (HPBUFFERARB hPbuffer, int iBuffer);
|
||||
typedef BOOL (WINAPI * PFNWGLSETPBUFFERATTRIBARBPROC) (HPBUFFERARB hPbuffer, const int *piAttribList);
|
||||
#ifdef WGL_WGLEXT_PROTOTYPES
|
||||
BOOL WINAPI wglBindTexImageARB (HPBUFFERARB hPbuffer, int iBuffer);
|
||||
BOOL WINAPI wglReleaseTexImageARB (HPBUFFERARB hPbuffer, int iBuffer);
|
||||
BOOL WINAPI wglSetPbufferAttribARB (HPBUFFERARB hPbuffer, const int *piAttribList);
|
||||
#endif
|
||||
#endif /* WGL_ARB_render_texture */
|
||||
|
||||
#ifndef WGL_ARB_robustness_application_isolation
|
||||
#define WGL_ARB_robustness_application_isolation 1
|
||||
#define WGL_CONTEXT_RESET_ISOLATION_BIT_ARB 0x00000008
|
||||
#endif /* WGL_ARB_robustness_application_isolation */
|
||||
|
||||
#ifndef WGL_ARB_robustness_share_group_isolation
|
||||
#define WGL_ARB_robustness_share_group_isolation 1
|
||||
#endif /* WGL_ARB_robustness_share_group_isolation */
|
||||
|
||||
#ifndef WGL_3DFX_multisample
|
||||
#define WGL_3DFX_multisample 1
|
||||
#define WGL_SAMPLE_BUFFERS_3DFX 0x2060
|
||||
#define WGL_SAMPLES_3DFX 0x2061
|
||||
#endif /* WGL_3DFX_multisample */
|
||||
|
||||
#ifndef WGL_3DL_stereo_control
|
||||
#define WGL_3DL_stereo_control 1
|
||||
#define WGL_STEREO_EMITTER_ENABLE_3DL 0x2055
|
||||
#define WGL_STEREO_EMITTER_DISABLE_3DL 0x2056
|
||||
#define WGL_STEREO_POLARITY_NORMAL_3DL 0x2057
|
||||
#define WGL_STEREO_POLARITY_INVERT_3DL 0x2058
|
||||
typedef BOOL (WINAPI * PFNWGLSETSTEREOEMITTERSTATE3DLPROC) (HDC hDC, UINT uState);
|
||||
#ifdef WGL_WGLEXT_PROTOTYPES
|
||||
BOOL WINAPI wglSetStereoEmitterState3DL (HDC hDC, UINT uState);
|
||||
#endif
|
||||
#endif /* WGL_3DL_stereo_control */
|
||||
|
||||
#ifndef WGL_AMD_gpu_association
|
||||
#define WGL_AMD_gpu_association 1
|
||||
#define WGL_GPU_VENDOR_AMD 0x1F00
|
||||
#define WGL_GPU_RENDERER_STRING_AMD 0x1F01
|
||||
#define WGL_GPU_OPENGL_VERSION_STRING_AMD 0x1F02
|
||||
#define WGL_GPU_FASTEST_TARGET_GPUS_AMD 0x21A2
|
||||
#define WGL_GPU_RAM_AMD 0x21A3
|
||||
#define WGL_GPU_CLOCK_AMD 0x21A4
|
||||
#define WGL_GPU_NUM_PIPES_AMD 0x21A5
|
||||
#define WGL_GPU_NUM_SIMD_AMD 0x21A6
|
||||
#define WGL_GPU_NUM_RB_AMD 0x21A7
|
||||
#define WGL_GPU_NUM_SPI_AMD 0x21A8
|
||||
typedef UINT (WINAPI * PFNWGLGETGPUIDSAMDPROC) (UINT maxCount, UINT *ids);
|
||||
typedef INT (WINAPI * PFNWGLGETGPUINFOAMDPROC) (UINT id, INT property, GLenum dataType, UINT size, void *data);
|
||||
typedef UINT (WINAPI * PFNWGLGETCONTEXTGPUIDAMDPROC) (HGLRC hglrc);
|
||||
typedef HGLRC (WINAPI * PFNWGLCREATEASSOCIATEDCONTEXTAMDPROC) (UINT id);
|
||||
typedef HGLRC (WINAPI * PFNWGLCREATEASSOCIATEDCONTEXTATTRIBSAMDPROC) (UINT id, HGLRC hShareContext, const int *attribList);
|
||||
typedef BOOL (WINAPI * PFNWGLDELETEASSOCIATEDCONTEXTAMDPROC) (HGLRC hglrc);
|
||||
typedef BOOL (WINAPI * PFNWGLMAKEASSOCIATEDCONTEXTCURRENTAMDPROC) (HGLRC hglrc);
|
||||
typedef HGLRC (WINAPI * PFNWGLGETCURRENTASSOCIATEDCONTEXTAMDPROC) (void);
|
||||
typedef VOID (WINAPI * PFNWGLBLITCONTEXTFRAMEBUFFERAMDPROC) (HGLRC dstCtx, GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);
|
||||
#ifdef WGL_WGLEXT_PROTOTYPES
|
||||
UINT WINAPI wglGetGPUIDsAMD (UINT maxCount, UINT *ids);
|
||||
INT WINAPI wglGetGPUInfoAMD (UINT id, INT property, GLenum dataType, UINT size, void *data);
|
||||
UINT WINAPI wglGetContextGPUIDAMD (HGLRC hglrc);
|
||||
HGLRC WINAPI wglCreateAssociatedContextAMD (UINT id);
|
||||
HGLRC WINAPI wglCreateAssociatedContextAttribsAMD (UINT id, HGLRC hShareContext, const int *attribList);
|
||||
BOOL WINAPI wglDeleteAssociatedContextAMD (HGLRC hglrc);
|
||||
BOOL WINAPI wglMakeAssociatedContextCurrentAMD (HGLRC hglrc);
|
||||
HGLRC WINAPI wglGetCurrentAssociatedContextAMD (void);
|
||||
VOID WINAPI wglBlitContextFramebufferAMD (HGLRC dstCtx, GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);
|
||||
#endif
|
||||
#endif /* WGL_AMD_gpu_association */
|
||||
|
||||
#ifndef WGL_ATI_pixel_format_float
|
||||
#define WGL_ATI_pixel_format_float 1
|
||||
#define WGL_TYPE_RGBA_FLOAT_ATI 0x21A0
|
||||
#endif /* WGL_ATI_pixel_format_float */
|
||||
|
||||
#ifndef WGL_ATI_render_texture_rectangle
|
||||
#define WGL_ATI_render_texture_rectangle 1
|
||||
#define WGL_TEXTURE_RECTANGLE_ATI 0x21A5
|
||||
#endif /* WGL_ATI_render_texture_rectangle */
|
||||
|
||||
#ifndef WGL_EXT_colorspace
|
||||
#define WGL_EXT_colorspace 1
|
||||
#define WGL_COLORSPACE_EXT 0x309D
|
||||
#define WGL_COLORSPACE_SRGB_EXT 0x3089
|
||||
#define WGL_COLORSPACE_LINEAR_EXT 0x308A
|
||||
#endif /* WGL_EXT_colorspace */
|
||||
|
||||
#ifndef WGL_EXT_create_context_es2_profile
|
||||
#define WGL_EXT_create_context_es2_profile 1
|
||||
#define WGL_CONTEXT_ES2_PROFILE_BIT_EXT 0x00000004
|
||||
#endif /* WGL_EXT_create_context_es2_profile */
|
||||
|
||||
#ifndef WGL_EXT_create_context_es_profile
|
||||
#define WGL_EXT_create_context_es_profile 1
|
||||
#define WGL_CONTEXT_ES_PROFILE_BIT_EXT 0x00000004
|
||||
#endif /* WGL_EXT_create_context_es_profile */
|
||||
|
||||
#ifndef WGL_EXT_depth_float
|
||||
#define WGL_EXT_depth_float 1
|
||||
#define WGL_DEPTH_FLOAT_EXT 0x2040
|
||||
#endif /* WGL_EXT_depth_float */
|
||||
|
||||
#ifndef WGL_EXT_display_color_table
|
||||
#define WGL_EXT_display_color_table 1
|
||||
typedef GLboolean (WINAPI * PFNWGLCREATEDISPLAYCOLORTABLEEXTPROC) (GLushort id);
|
||||
typedef GLboolean (WINAPI * PFNWGLLOADDISPLAYCOLORTABLEEXTPROC) (const GLushort *table, GLuint length);
|
||||
typedef GLboolean (WINAPI * PFNWGLBINDDISPLAYCOLORTABLEEXTPROC) (GLushort id);
|
||||
typedef VOID (WINAPI * PFNWGLDESTROYDISPLAYCOLORTABLEEXTPROC) (GLushort id);
|
||||
#ifdef WGL_WGLEXT_PROTOTYPES
|
||||
GLboolean WINAPI wglCreateDisplayColorTableEXT (GLushort id);
|
||||
GLboolean WINAPI wglLoadDisplayColorTableEXT (const GLushort *table, GLuint length);
|
||||
GLboolean WINAPI wglBindDisplayColorTableEXT (GLushort id);
|
||||
VOID WINAPI wglDestroyDisplayColorTableEXT (GLushort id);
|
||||
#endif
|
||||
#endif /* WGL_EXT_display_color_table */
|
||||
|
||||
#ifndef WGL_EXT_extensions_string
|
||||
#define WGL_EXT_extensions_string 1
|
||||
typedef const char *(WINAPI * PFNWGLGETEXTENSIONSSTRINGEXTPROC) (void);
|
||||
#ifdef WGL_WGLEXT_PROTOTYPES
|
||||
const char *WINAPI wglGetExtensionsStringEXT (void);
|
||||
#endif
|
||||
#endif /* WGL_EXT_extensions_string */
|
||||
|
||||
#ifndef WGL_EXT_framebuffer_sRGB
|
||||
#define WGL_EXT_framebuffer_sRGB 1
|
||||
#define WGL_FRAMEBUFFER_SRGB_CAPABLE_EXT 0x20A9
|
||||
#endif /* WGL_EXT_framebuffer_sRGB */
|
||||
|
||||
#ifndef WGL_EXT_make_current_read
|
||||
#define WGL_EXT_make_current_read 1
|
||||
#define ERROR_INVALID_PIXEL_TYPE_EXT 0x2043
|
||||
typedef BOOL (WINAPI * PFNWGLMAKECONTEXTCURRENTEXTPROC) (HDC hDrawDC, HDC hReadDC, HGLRC hglrc);
|
||||
typedef HDC (WINAPI * PFNWGLGETCURRENTREADDCEXTPROC) (void);
|
||||
#ifdef WGL_WGLEXT_PROTOTYPES
|
||||
BOOL WINAPI wglMakeContextCurrentEXT (HDC hDrawDC, HDC hReadDC, HGLRC hglrc);
|
||||
HDC WINAPI wglGetCurrentReadDCEXT (void);
|
||||
#endif
|
||||
#endif /* WGL_EXT_make_current_read */
|
||||
|
||||
#ifndef WGL_EXT_multisample
|
||||
#define WGL_EXT_multisample 1
|
||||
#define WGL_SAMPLE_BUFFERS_EXT 0x2041
|
||||
#define WGL_SAMPLES_EXT 0x2042
|
||||
#endif /* WGL_EXT_multisample */
|
||||
|
||||
#ifndef WGL_EXT_pbuffer
|
||||
#define WGL_EXT_pbuffer 1
|
||||
DECLARE_HANDLE(HPBUFFEREXT);
|
||||
#define WGL_DRAW_TO_PBUFFER_EXT 0x202D
|
||||
#define WGL_MAX_PBUFFER_PIXELS_EXT 0x202E
|
||||
#define WGL_MAX_PBUFFER_WIDTH_EXT 0x202F
|
||||
#define WGL_MAX_PBUFFER_HEIGHT_EXT 0x2030
|
||||
#define WGL_OPTIMAL_PBUFFER_WIDTH_EXT 0x2031
|
||||
#define WGL_OPTIMAL_PBUFFER_HEIGHT_EXT 0x2032
|
||||
#define WGL_PBUFFER_LARGEST_EXT 0x2033
|
||||
#define WGL_PBUFFER_WIDTH_EXT 0x2034
|
||||
#define WGL_PBUFFER_HEIGHT_EXT 0x2035
|
||||
typedef HPBUFFEREXT (WINAPI * PFNWGLCREATEPBUFFEREXTPROC) (HDC hDC, int iPixelFormat, int iWidth, int iHeight, const int *piAttribList);
|
||||
typedef HDC (WINAPI * PFNWGLGETPBUFFERDCEXTPROC) (HPBUFFEREXT hPbuffer);
|
||||
typedef int (WINAPI * PFNWGLRELEASEPBUFFERDCEXTPROC) (HPBUFFEREXT hPbuffer, HDC hDC);
|
||||
typedef BOOL (WINAPI * PFNWGLDESTROYPBUFFEREXTPROC) (HPBUFFEREXT hPbuffer);
|
||||
typedef BOOL (WINAPI * PFNWGLQUERYPBUFFEREXTPROC) (HPBUFFEREXT hPbuffer, int iAttribute, int *piValue);
|
||||
#ifdef WGL_WGLEXT_PROTOTYPES
|
||||
HPBUFFEREXT WINAPI wglCreatePbufferEXT (HDC hDC, int iPixelFormat, int iWidth, int iHeight, const int *piAttribList);
|
||||
HDC WINAPI wglGetPbufferDCEXT (HPBUFFEREXT hPbuffer);
|
||||
int WINAPI wglReleasePbufferDCEXT (HPBUFFEREXT hPbuffer, HDC hDC);
|
||||
BOOL WINAPI wglDestroyPbufferEXT (HPBUFFEREXT hPbuffer);
|
||||
BOOL WINAPI wglQueryPbufferEXT (HPBUFFEREXT hPbuffer, int iAttribute, int *piValue);
|
||||
#endif
|
||||
#endif /* WGL_EXT_pbuffer */
|
||||
|
||||
#ifndef WGL_EXT_pixel_format
|
||||
#define WGL_EXT_pixel_format 1
|
||||
#define WGL_NUMBER_PIXEL_FORMATS_EXT 0x2000
|
||||
#define WGL_DRAW_TO_WINDOW_EXT 0x2001
|
||||
#define WGL_DRAW_TO_BITMAP_EXT 0x2002
|
||||
#define WGL_ACCELERATION_EXT 0x2003
|
||||
#define WGL_NEED_PALETTE_EXT 0x2004
|
||||
#define WGL_NEED_SYSTEM_PALETTE_EXT 0x2005
|
||||
#define WGL_SWAP_LAYER_BUFFERS_EXT 0x2006
|
||||
#define WGL_SWAP_METHOD_EXT 0x2007
|
||||
#define WGL_NUMBER_OVERLAYS_EXT 0x2008
|
||||
#define WGL_NUMBER_UNDERLAYS_EXT 0x2009
|
||||
#define WGL_TRANSPARENT_EXT 0x200A
|
||||
#define WGL_TRANSPARENT_VALUE_EXT 0x200B
|
||||
#define WGL_SHARE_DEPTH_EXT 0x200C
|
||||
#define WGL_SHARE_STENCIL_EXT 0x200D
|
||||
#define WGL_SHARE_ACCUM_EXT 0x200E
|
||||
#define WGL_SUPPORT_GDI_EXT 0x200F
|
||||
#define WGL_SUPPORT_OPENGL_EXT 0x2010
|
||||
#define WGL_DOUBLE_BUFFER_EXT 0x2011
|
||||
#define WGL_STEREO_EXT 0x2012
|
||||
#define WGL_PIXEL_TYPE_EXT 0x2013
|
||||
#define WGL_COLOR_BITS_EXT 0x2014
|
||||
#define WGL_RED_BITS_EXT 0x2015
|
||||
#define WGL_RED_SHIFT_EXT 0x2016
|
||||
#define WGL_GREEN_BITS_EXT 0x2017
|
||||
#define WGL_GREEN_SHIFT_EXT 0x2018
|
||||
#define WGL_BLUE_BITS_EXT 0x2019
|
||||
#define WGL_BLUE_SHIFT_EXT 0x201A
|
||||
#define WGL_ALPHA_BITS_EXT 0x201B
|
||||
#define WGL_ALPHA_SHIFT_EXT 0x201C
|
||||
#define WGL_ACCUM_BITS_EXT 0x201D
|
||||
#define WGL_ACCUM_RED_BITS_EXT 0x201E
|
||||
#define WGL_ACCUM_GREEN_BITS_EXT 0x201F
|
||||
#define WGL_ACCUM_BLUE_BITS_EXT 0x2020
|
||||
#define WGL_ACCUM_ALPHA_BITS_EXT 0x2021
|
||||
#define WGL_DEPTH_BITS_EXT 0x2022
|
||||
#define WGL_STENCIL_BITS_EXT 0x2023
|
||||
#define WGL_AUX_BUFFERS_EXT 0x2024
|
||||
#define WGL_NO_ACCELERATION_EXT 0x2025
|
||||
#define WGL_GENERIC_ACCELERATION_EXT 0x2026
|
||||
#define WGL_FULL_ACCELERATION_EXT 0x2027
|
||||
#define WGL_SWAP_EXCHANGE_EXT 0x2028
|
||||
#define WGL_SWAP_COPY_EXT 0x2029
|
||||
#define WGL_SWAP_UNDEFINED_EXT 0x202A
|
||||
#define WGL_TYPE_RGBA_EXT 0x202B
|
||||
#define WGL_TYPE_COLORINDEX_EXT 0x202C
|
||||
typedef BOOL (WINAPI * PFNWGLGETPIXELFORMATATTRIBIVEXTPROC) (HDC hdc, int iPixelFormat, int iLayerPlane, UINT nAttributes, int *piAttributes, int *piValues);
|
||||
typedef BOOL (WINAPI * PFNWGLGETPIXELFORMATATTRIBFVEXTPROC) (HDC hdc, int iPixelFormat, int iLayerPlane, UINT nAttributes, int *piAttributes, FLOAT *pfValues);
|
||||
typedef BOOL (WINAPI * PFNWGLCHOOSEPIXELFORMATEXTPROC) (HDC hdc, const int *piAttribIList, const FLOAT *pfAttribFList, UINT nMaxFormats, int *piFormats, UINT *nNumFormats);
|
||||
#ifdef WGL_WGLEXT_PROTOTYPES
|
||||
BOOL WINAPI wglGetPixelFormatAttribivEXT (HDC hdc, int iPixelFormat, int iLayerPlane, UINT nAttributes, int *piAttributes, int *piValues);
|
||||
BOOL WINAPI wglGetPixelFormatAttribfvEXT (HDC hdc, int iPixelFormat, int iLayerPlane, UINT nAttributes, int *piAttributes, FLOAT *pfValues);
|
||||
BOOL WINAPI wglChoosePixelFormatEXT (HDC hdc, const int *piAttribIList, const FLOAT *pfAttribFList, UINT nMaxFormats, int *piFormats, UINT *nNumFormats);
|
||||
#endif
|
||||
#endif /* WGL_EXT_pixel_format */
|
||||
|
||||
#ifndef WGL_EXT_pixel_format_packed_float
|
||||
#define WGL_EXT_pixel_format_packed_float 1
|
||||
#define WGL_TYPE_RGBA_UNSIGNED_FLOAT_EXT 0x20A8
|
||||
#endif /* WGL_EXT_pixel_format_packed_float */
|
||||
|
||||
#ifndef WGL_EXT_swap_control
|
||||
#define WGL_EXT_swap_control 1
|
||||
typedef BOOL (WINAPI * PFNWGLSWAPINTERVALEXTPROC) (int interval);
|
||||
typedef int (WINAPI * PFNWGLGETSWAPINTERVALEXTPROC) (void);
|
||||
#ifdef WGL_WGLEXT_PROTOTYPES
|
||||
BOOL WINAPI wglSwapIntervalEXT (int interval);
|
||||
int WINAPI wglGetSwapIntervalEXT (void);
|
||||
#endif
|
||||
#endif /* WGL_EXT_swap_control */
|
||||
|
||||
#ifndef WGL_EXT_swap_control_tear
|
||||
#define WGL_EXT_swap_control_tear 1
|
||||
#endif /* WGL_EXT_swap_control_tear */
|
||||
|
||||
#ifndef WGL_I3D_digital_video_control
|
||||
#define WGL_I3D_digital_video_control 1
|
||||
#define WGL_DIGITAL_VIDEO_CURSOR_ALPHA_FRAMEBUFFER_I3D 0x2050
|
||||
#define WGL_DIGITAL_VIDEO_CURSOR_ALPHA_VALUE_I3D 0x2051
|
||||
#define WGL_DIGITAL_VIDEO_CURSOR_INCLUDED_I3D 0x2052
|
||||
#define WGL_DIGITAL_VIDEO_GAMMA_CORRECTED_I3D 0x2053
|
||||
typedef BOOL (WINAPI * PFNWGLGETDIGITALVIDEOPARAMETERSI3DPROC) (HDC hDC, int iAttribute, int *piValue);
|
||||
typedef BOOL (WINAPI * PFNWGLSETDIGITALVIDEOPARAMETERSI3DPROC) (HDC hDC, int iAttribute, const int *piValue);
|
||||
#ifdef WGL_WGLEXT_PROTOTYPES
|
||||
BOOL WINAPI wglGetDigitalVideoParametersI3D (HDC hDC, int iAttribute, int *piValue);
|
||||
BOOL WINAPI wglSetDigitalVideoParametersI3D (HDC hDC, int iAttribute, const int *piValue);
|
||||
#endif
|
||||
#endif /* WGL_I3D_digital_video_control */
|
||||
|
||||
#ifndef WGL_I3D_gamma
|
||||
#define WGL_I3D_gamma 1
|
||||
#define WGL_GAMMA_TABLE_SIZE_I3D 0x204E
|
||||
#define WGL_GAMMA_EXCLUDE_DESKTOP_I3D 0x204F
|
||||
typedef BOOL (WINAPI * PFNWGLGETGAMMATABLEPARAMETERSI3DPROC) (HDC hDC, int iAttribute, int *piValue);
|
||||
typedef BOOL (WINAPI * PFNWGLSETGAMMATABLEPARAMETERSI3DPROC) (HDC hDC, int iAttribute, const int *piValue);
|
||||
typedef BOOL (WINAPI * PFNWGLGETGAMMATABLEI3DPROC) (HDC hDC, int iEntries, USHORT *puRed, USHORT *puGreen, USHORT *puBlue);
|
||||
typedef BOOL (WINAPI * PFNWGLSETGAMMATABLEI3DPROC) (HDC hDC, int iEntries, const USHORT *puRed, const USHORT *puGreen, const USHORT *puBlue);
|
||||
#ifdef WGL_WGLEXT_PROTOTYPES
|
||||
BOOL WINAPI wglGetGammaTableParametersI3D (HDC hDC, int iAttribute, int *piValue);
|
||||
BOOL WINAPI wglSetGammaTableParametersI3D (HDC hDC, int iAttribute, const int *piValue);
|
||||
BOOL WINAPI wglGetGammaTableI3D (HDC hDC, int iEntries, USHORT *puRed, USHORT *puGreen, USHORT *puBlue);
|
||||
BOOL WINAPI wglSetGammaTableI3D (HDC hDC, int iEntries, const USHORT *puRed, const USHORT *puGreen, const USHORT *puBlue);
|
||||
#endif
|
||||
#endif /* WGL_I3D_gamma */
|
||||
|
||||
#ifndef WGL_I3D_genlock
|
||||
#define WGL_I3D_genlock 1
|
||||
#define WGL_GENLOCK_SOURCE_MULTIVIEW_I3D 0x2044
|
||||
#define WGL_GENLOCK_SOURCE_EXTERNAL_SYNC_I3D 0x2045
|
||||
#define WGL_GENLOCK_SOURCE_EXTERNAL_FIELD_I3D 0x2046
|
||||
#define WGL_GENLOCK_SOURCE_EXTERNAL_TTL_I3D 0x2047
|
||||
#define WGL_GENLOCK_SOURCE_DIGITAL_SYNC_I3D 0x2048
|
||||
#define WGL_GENLOCK_SOURCE_DIGITAL_FIELD_I3D 0x2049
|
||||
#define WGL_GENLOCK_SOURCE_EDGE_FALLING_I3D 0x204A
|
||||
#define WGL_GENLOCK_SOURCE_EDGE_RISING_I3D 0x204B
|
||||
#define WGL_GENLOCK_SOURCE_EDGE_BOTH_I3D 0x204C
|
||||
typedef BOOL (WINAPI * PFNWGLENABLEGENLOCKI3DPROC) (HDC hDC);
|
||||
typedef BOOL (WINAPI * PFNWGLDISABLEGENLOCKI3DPROC) (HDC hDC);
|
||||
typedef BOOL (WINAPI * PFNWGLISENABLEDGENLOCKI3DPROC) (HDC hDC, BOOL *pFlag);
|
||||
typedef BOOL (WINAPI * PFNWGLGENLOCKSOURCEI3DPROC) (HDC hDC, UINT uSource);
|
||||
typedef BOOL (WINAPI * PFNWGLGETGENLOCKSOURCEI3DPROC) (HDC hDC, UINT *uSource);
|
||||
typedef BOOL (WINAPI * PFNWGLGENLOCKSOURCEEDGEI3DPROC) (HDC hDC, UINT uEdge);
|
||||
typedef BOOL (WINAPI * PFNWGLGETGENLOCKSOURCEEDGEI3DPROC) (HDC hDC, UINT *uEdge);
|
||||
typedef BOOL (WINAPI * PFNWGLGENLOCKSAMPLERATEI3DPROC) (HDC hDC, UINT uRate);
|
||||
typedef BOOL (WINAPI * PFNWGLGETGENLOCKSAMPLERATEI3DPROC) (HDC hDC, UINT *uRate);
|
||||
typedef BOOL (WINAPI * PFNWGLGENLOCKSOURCEDELAYI3DPROC) (HDC hDC, UINT uDelay);
|
||||
typedef BOOL (WINAPI * PFNWGLGETGENLOCKSOURCEDELAYI3DPROC) (HDC hDC, UINT *uDelay);
|
||||
typedef BOOL (WINAPI * PFNWGLQUERYGENLOCKMAXSOURCEDELAYI3DPROC) (HDC hDC, UINT *uMaxLineDelay, UINT *uMaxPixelDelay);
|
||||
#ifdef WGL_WGLEXT_PROTOTYPES
|
||||
BOOL WINAPI wglEnableGenlockI3D (HDC hDC);
|
||||
BOOL WINAPI wglDisableGenlockI3D (HDC hDC);
|
||||
BOOL WINAPI wglIsEnabledGenlockI3D (HDC hDC, BOOL *pFlag);
|
||||
BOOL WINAPI wglGenlockSourceI3D (HDC hDC, UINT uSource);
|
||||
BOOL WINAPI wglGetGenlockSourceI3D (HDC hDC, UINT *uSource);
|
||||
BOOL WINAPI wglGenlockSourceEdgeI3D (HDC hDC, UINT uEdge);
|
||||
BOOL WINAPI wglGetGenlockSourceEdgeI3D (HDC hDC, UINT *uEdge);
|
||||
BOOL WINAPI wglGenlockSampleRateI3D (HDC hDC, UINT uRate);
|
||||
BOOL WINAPI wglGetGenlockSampleRateI3D (HDC hDC, UINT *uRate);
|
||||
BOOL WINAPI wglGenlockSourceDelayI3D (HDC hDC, UINT uDelay);
|
||||
BOOL WINAPI wglGetGenlockSourceDelayI3D (HDC hDC, UINT *uDelay);
|
||||
BOOL WINAPI wglQueryGenlockMaxSourceDelayI3D (HDC hDC, UINT *uMaxLineDelay, UINT *uMaxPixelDelay);
|
||||
#endif
|
||||
#endif /* WGL_I3D_genlock */
|
||||
|
||||
#ifndef WGL_I3D_image_buffer
|
||||
#define WGL_I3D_image_buffer 1
|
||||
#define WGL_IMAGE_BUFFER_MIN_ACCESS_I3D 0x00000001
|
||||
#define WGL_IMAGE_BUFFER_LOCK_I3D 0x00000002
|
||||
typedef LPVOID (WINAPI * PFNWGLCREATEIMAGEBUFFERI3DPROC) (HDC hDC, DWORD dwSize, UINT uFlags);
|
||||
typedef BOOL (WINAPI * PFNWGLDESTROYIMAGEBUFFERI3DPROC) (HDC hDC, LPVOID pAddress);
|
||||
typedef BOOL (WINAPI * PFNWGLASSOCIATEIMAGEBUFFEREVENTSI3DPROC) (HDC hDC, const HANDLE *pEvent, const LPVOID *pAddress, const DWORD *pSize, UINT count);
|
||||
typedef BOOL (WINAPI * PFNWGLRELEASEIMAGEBUFFEREVENTSI3DPROC) (HDC hDC, const LPVOID *pAddress, UINT count);
|
||||
#ifdef WGL_WGLEXT_PROTOTYPES
|
||||
LPVOID WINAPI wglCreateImageBufferI3D (HDC hDC, DWORD dwSize, UINT uFlags);
|
||||
BOOL WINAPI wglDestroyImageBufferI3D (HDC hDC, LPVOID pAddress);
|
||||
BOOL WINAPI wglAssociateImageBufferEventsI3D (HDC hDC, const HANDLE *pEvent, const LPVOID *pAddress, const DWORD *pSize, UINT count);
|
||||
BOOL WINAPI wglReleaseImageBufferEventsI3D (HDC hDC, const LPVOID *pAddress, UINT count);
|
||||
#endif
|
||||
#endif /* WGL_I3D_image_buffer */
|
||||
|
||||
#ifndef WGL_I3D_swap_frame_lock
|
||||
#define WGL_I3D_swap_frame_lock 1
|
||||
typedef BOOL (WINAPI * PFNWGLENABLEFRAMELOCKI3DPROC) (void);
|
||||
typedef BOOL (WINAPI * PFNWGLDISABLEFRAMELOCKI3DPROC) (void);
|
||||
typedef BOOL (WINAPI * PFNWGLISENABLEDFRAMELOCKI3DPROC) (BOOL *pFlag);
|
||||
typedef BOOL (WINAPI * PFNWGLQUERYFRAMELOCKMASTERI3DPROC) (BOOL *pFlag);
|
||||
#ifdef WGL_WGLEXT_PROTOTYPES
|
||||
BOOL WINAPI wglEnableFrameLockI3D (void);
|
||||
BOOL WINAPI wglDisableFrameLockI3D (void);
|
||||
BOOL WINAPI wglIsEnabledFrameLockI3D (BOOL *pFlag);
|
||||
BOOL WINAPI wglQueryFrameLockMasterI3D (BOOL *pFlag);
|
||||
#endif
|
||||
#endif /* WGL_I3D_swap_frame_lock */
|
||||
|
||||
#ifndef WGL_I3D_swap_frame_usage
|
||||
#define WGL_I3D_swap_frame_usage 1
|
||||
typedef BOOL (WINAPI * PFNWGLGETFRAMEUSAGEI3DPROC) (float *pUsage);
|
||||
typedef BOOL (WINAPI * PFNWGLBEGINFRAMETRACKINGI3DPROC) (void);
|
||||
typedef BOOL (WINAPI * PFNWGLENDFRAMETRACKINGI3DPROC) (void);
|
||||
typedef BOOL (WINAPI * PFNWGLQUERYFRAMETRACKINGI3DPROC) (DWORD *pFrameCount, DWORD *pMissedFrames, float *pLastMissedUsage);
|
||||
#ifdef WGL_WGLEXT_PROTOTYPES
|
||||
BOOL WINAPI wglGetFrameUsageI3D (float *pUsage);
|
||||
BOOL WINAPI wglBeginFrameTrackingI3D (void);
|
||||
BOOL WINAPI wglEndFrameTrackingI3D (void);
|
||||
BOOL WINAPI wglQueryFrameTrackingI3D (DWORD *pFrameCount, DWORD *pMissedFrames, float *pLastMissedUsage);
|
||||
#endif
|
||||
#endif /* WGL_I3D_swap_frame_usage */
|
||||
|
||||
#ifndef WGL_NV_DX_interop
|
||||
#define WGL_NV_DX_interop 1
|
||||
#define WGL_ACCESS_READ_ONLY_NV 0x00000000
|
||||
#define WGL_ACCESS_READ_WRITE_NV 0x00000001
|
||||
#define WGL_ACCESS_WRITE_DISCARD_NV 0x00000002
|
||||
typedef BOOL (WINAPI * PFNWGLDXSETRESOURCESHAREHANDLENVPROC) (void *dxObject, HANDLE shareHandle);
|
||||
typedef HANDLE (WINAPI * PFNWGLDXOPENDEVICENVPROC) (void *dxDevice);
|
||||
typedef BOOL (WINAPI * PFNWGLDXCLOSEDEVICENVPROC) (HANDLE hDevice);
|
||||
typedef HANDLE (WINAPI * PFNWGLDXREGISTEROBJECTNVPROC) (HANDLE hDevice, void *dxObject, GLuint name, GLenum type, GLenum access);
|
||||
typedef BOOL (WINAPI * PFNWGLDXUNREGISTEROBJECTNVPROC) (HANDLE hDevice, HANDLE hObject);
|
||||
typedef BOOL (WINAPI * PFNWGLDXOBJECTACCESSNVPROC) (HANDLE hObject, GLenum access);
|
||||
typedef BOOL (WINAPI * PFNWGLDXLOCKOBJECTSNVPROC) (HANDLE hDevice, GLint count, HANDLE *hObjects);
|
||||
typedef BOOL (WINAPI * PFNWGLDXUNLOCKOBJECTSNVPROC) (HANDLE hDevice, GLint count, HANDLE *hObjects);
|
||||
#ifdef WGL_WGLEXT_PROTOTYPES
|
||||
BOOL WINAPI wglDXSetResourceShareHandleNV (void *dxObject, HANDLE shareHandle);
|
||||
HANDLE WINAPI wglDXOpenDeviceNV (void *dxDevice);
|
||||
BOOL WINAPI wglDXCloseDeviceNV (HANDLE hDevice);
|
||||
HANDLE WINAPI wglDXRegisterObjectNV (HANDLE hDevice, void *dxObject, GLuint name, GLenum type, GLenum access);
|
||||
BOOL WINAPI wglDXUnregisterObjectNV (HANDLE hDevice, HANDLE hObject);
|
||||
BOOL WINAPI wglDXObjectAccessNV (HANDLE hObject, GLenum access);
|
||||
BOOL WINAPI wglDXLockObjectsNV (HANDLE hDevice, GLint count, HANDLE *hObjects);
|
||||
BOOL WINAPI wglDXUnlockObjectsNV (HANDLE hDevice, GLint count, HANDLE *hObjects);
|
||||
#endif
|
||||
#endif /* WGL_NV_DX_interop */
|
||||
|
||||
#ifndef WGL_NV_DX_interop2
|
||||
#define WGL_NV_DX_interop2 1
|
||||
#endif /* WGL_NV_DX_interop2 */
|
||||
|
||||
#ifndef WGL_NV_copy_image
|
||||
#define WGL_NV_copy_image 1
|
||||
typedef BOOL (WINAPI * PFNWGLCOPYIMAGESUBDATANVPROC) (HGLRC hSrcRC, GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, HGLRC hDstRC, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei width, GLsizei height, GLsizei depth);
|
||||
#ifdef WGL_WGLEXT_PROTOTYPES
|
||||
BOOL WINAPI wglCopyImageSubDataNV (HGLRC hSrcRC, GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, HGLRC hDstRC, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei width, GLsizei height, GLsizei depth);
|
||||
#endif
|
||||
#endif /* WGL_NV_copy_image */
|
||||
|
||||
#ifndef WGL_NV_delay_before_swap
|
||||
#define WGL_NV_delay_before_swap 1
|
||||
typedef BOOL (WINAPI * PFNWGLDELAYBEFORESWAPNVPROC) (HDC hDC, GLfloat seconds);
|
||||
#ifdef WGL_WGLEXT_PROTOTYPES
|
||||
BOOL WINAPI wglDelayBeforeSwapNV (HDC hDC, GLfloat seconds);
|
||||
#endif
|
||||
#endif /* WGL_NV_delay_before_swap */
|
||||
|
||||
#ifndef WGL_NV_float_buffer
|
||||
#define WGL_NV_float_buffer 1
|
||||
#define WGL_FLOAT_COMPONENTS_NV 0x20B0
|
||||
#define WGL_BIND_TO_TEXTURE_RECTANGLE_FLOAT_R_NV 0x20B1
|
||||
#define WGL_BIND_TO_TEXTURE_RECTANGLE_FLOAT_RG_NV 0x20B2
|
||||
#define WGL_BIND_TO_TEXTURE_RECTANGLE_FLOAT_RGB_NV 0x20B3
|
||||
#define WGL_BIND_TO_TEXTURE_RECTANGLE_FLOAT_RGBA_NV 0x20B4
|
||||
#define WGL_TEXTURE_FLOAT_R_NV 0x20B5
|
||||
#define WGL_TEXTURE_FLOAT_RG_NV 0x20B6
|
||||
#define WGL_TEXTURE_FLOAT_RGB_NV 0x20B7
|
||||
#define WGL_TEXTURE_FLOAT_RGBA_NV 0x20B8
|
||||
#endif /* WGL_NV_float_buffer */
|
||||
|
||||
#ifndef WGL_NV_gpu_affinity
|
||||
#define WGL_NV_gpu_affinity 1
|
||||
DECLARE_HANDLE(HGPUNV);
|
||||
struct _GPU_DEVICE {
|
||||
DWORD cb;
|
||||
CHAR DeviceName[32];
|
||||
CHAR DeviceString[128];
|
||||
DWORD Flags;
|
||||
RECT rcVirtualScreen;
|
||||
};
|
||||
typedef struct _GPU_DEVICE *PGPU_DEVICE;
|
||||
#define ERROR_INCOMPATIBLE_AFFINITY_MASKS_NV 0x20D0
|
||||
#define ERROR_MISSING_AFFINITY_MASK_NV 0x20D1
|
||||
typedef BOOL (WINAPI * PFNWGLENUMGPUSNVPROC) (UINT iGpuIndex, HGPUNV *phGpu);
|
||||
typedef BOOL (WINAPI * PFNWGLENUMGPUDEVICESNVPROC) (HGPUNV hGpu, UINT iDeviceIndex, PGPU_DEVICE lpGpuDevice);
|
||||
typedef HDC (WINAPI * PFNWGLCREATEAFFINITYDCNVPROC) (const HGPUNV *phGpuList);
|
||||
typedef BOOL (WINAPI * PFNWGLENUMGPUSFROMAFFINITYDCNVPROC) (HDC hAffinityDC, UINT iGpuIndex, HGPUNV *hGpu);
|
||||
typedef BOOL (WINAPI * PFNWGLDELETEDCNVPROC) (HDC hdc);
|
||||
#ifdef WGL_WGLEXT_PROTOTYPES
|
||||
BOOL WINAPI wglEnumGpusNV (UINT iGpuIndex, HGPUNV *phGpu);
|
||||
BOOL WINAPI wglEnumGpuDevicesNV (HGPUNV hGpu, UINT iDeviceIndex, PGPU_DEVICE lpGpuDevice);
|
||||
HDC WINAPI wglCreateAffinityDCNV (const HGPUNV *phGpuList);
|
||||
BOOL WINAPI wglEnumGpusFromAffinityDCNV (HDC hAffinityDC, UINT iGpuIndex, HGPUNV *hGpu);
|
||||
BOOL WINAPI wglDeleteDCNV (HDC hdc);
|
||||
#endif
|
||||
#endif /* WGL_NV_gpu_affinity */
|
||||
|
||||
#ifndef WGL_NV_multigpu_context
|
||||
#define WGL_NV_multigpu_context 1
|
||||
#define WGL_CONTEXT_MULTIGPU_ATTRIB_NV 0x20AA
|
||||
#define WGL_CONTEXT_MULTIGPU_ATTRIB_SINGLE_NV 0x20AB
|
||||
#define WGL_CONTEXT_MULTIGPU_ATTRIB_AFR_NV 0x20AC
|
||||
#define WGL_CONTEXT_MULTIGPU_ATTRIB_MULTICAST_NV 0x20AD
|
||||
#define WGL_CONTEXT_MULTIGPU_ATTRIB_MULTI_DISPLAY_MULTICAST_NV 0x20AE
|
||||
#endif /* WGL_NV_multigpu_context */
|
||||
|
||||
#ifndef WGL_NV_multisample_coverage
|
||||
#define WGL_NV_multisample_coverage 1
|
||||
#define WGL_COVERAGE_SAMPLES_NV 0x2042
|
||||
#define WGL_COLOR_SAMPLES_NV 0x20B9
|
||||
#endif /* WGL_NV_multisample_coverage */
|
||||
|
||||
#ifndef WGL_NV_present_video
|
||||
#define WGL_NV_present_video 1
|
||||
DECLARE_HANDLE(HVIDEOOUTPUTDEVICENV);
|
||||
#define WGL_NUM_VIDEO_SLOTS_NV 0x20F0
|
||||
typedef int (WINAPI * PFNWGLENUMERATEVIDEODEVICESNVPROC) (HDC hDc, HVIDEOOUTPUTDEVICENV *phDeviceList);
|
||||
typedef BOOL (WINAPI * PFNWGLBINDVIDEODEVICENVPROC) (HDC hDc, unsigned int uVideoSlot, HVIDEOOUTPUTDEVICENV hVideoDevice, const int *piAttribList);
|
||||
typedef BOOL (WINAPI * PFNWGLQUERYCURRENTCONTEXTNVPROC) (int iAttribute, int *piValue);
|
||||
#ifdef WGL_WGLEXT_PROTOTYPES
|
||||
int WINAPI wglEnumerateVideoDevicesNV (HDC hDc, HVIDEOOUTPUTDEVICENV *phDeviceList);
|
||||
BOOL WINAPI wglBindVideoDeviceNV (HDC hDc, unsigned int uVideoSlot, HVIDEOOUTPUTDEVICENV hVideoDevice, const int *piAttribList);
|
||||
BOOL WINAPI wglQueryCurrentContextNV (int iAttribute, int *piValue);
|
||||
#endif
|
||||
#endif /* WGL_NV_present_video */
|
||||
|
||||
#ifndef WGL_NV_render_depth_texture
|
||||
#define WGL_NV_render_depth_texture 1
|
||||
#define WGL_BIND_TO_TEXTURE_DEPTH_NV 0x20A3
|
||||
#define WGL_BIND_TO_TEXTURE_RECTANGLE_DEPTH_NV 0x20A4
|
||||
#define WGL_DEPTH_TEXTURE_FORMAT_NV 0x20A5
|
||||
#define WGL_TEXTURE_DEPTH_COMPONENT_NV 0x20A6
|
||||
#define WGL_DEPTH_COMPONENT_NV 0x20A7
|
||||
#endif /* WGL_NV_render_depth_texture */
|
||||
|
||||
#ifndef WGL_NV_render_texture_rectangle
|
||||
#define WGL_NV_render_texture_rectangle 1
|
||||
#define WGL_BIND_TO_TEXTURE_RECTANGLE_RGB_NV 0x20A0
|
||||
#define WGL_BIND_TO_TEXTURE_RECTANGLE_RGBA_NV 0x20A1
|
||||
#define WGL_TEXTURE_RECTANGLE_NV 0x20A2
|
||||
#endif /* WGL_NV_render_texture_rectangle */
|
||||
|
||||
#ifndef WGL_NV_swap_group
|
||||
#define WGL_NV_swap_group 1
|
||||
typedef BOOL (WINAPI * PFNWGLJOINSWAPGROUPNVPROC) (HDC hDC, GLuint group);
|
||||
typedef BOOL (WINAPI * PFNWGLBINDSWAPBARRIERNVPROC) (GLuint group, GLuint barrier);
|
||||
typedef BOOL (WINAPI * PFNWGLQUERYSWAPGROUPNVPROC) (HDC hDC, GLuint *group, GLuint *barrier);
|
||||
typedef BOOL (WINAPI * PFNWGLQUERYMAXSWAPGROUPSNVPROC) (HDC hDC, GLuint *maxGroups, GLuint *maxBarriers);
|
||||
typedef BOOL (WINAPI * PFNWGLQUERYFRAMECOUNTNVPROC) (HDC hDC, GLuint *count);
|
||||
typedef BOOL (WINAPI * PFNWGLRESETFRAMECOUNTNVPROC) (HDC hDC);
|
||||
#ifdef WGL_WGLEXT_PROTOTYPES
|
||||
BOOL WINAPI wglJoinSwapGroupNV (HDC hDC, GLuint group);
|
||||
BOOL WINAPI wglBindSwapBarrierNV (GLuint group, GLuint barrier);
|
||||
BOOL WINAPI wglQuerySwapGroupNV (HDC hDC, GLuint *group, GLuint *barrier);
|
||||
BOOL WINAPI wglQueryMaxSwapGroupsNV (HDC hDC, GLuint *maxGroups, GLuint *maxBarriers);
|
||||
BOOL WINAPI wglQueryFrameCountNV (HDC hDC, GLuint *count);
|
||||
BOOL WINAPI wglResetFrameCountNV (HDC hDC);
|
||||
#endif
|
||||
#endif /* WGL_NV_swap_group */
|
||||
|
||||
#ifndef WGL_NV_vertex_array_range
|
||||
#define WGL_NV_vertex_array_range 1
|
||||
typedef void *(WINAPI * PFNWGLALLOCATEMEMORYNVPROC) (GLsizei size, GLfloat readfreq, GLfloat writefreq, GLfloat priority);
|
||||
typedef void (WINAPI * PFNWGLFREEMEMORYNVPROC) (void *pointer);
|
||||
#ifdef WGL_WGLEXT_PROTOTYPES
|
||||
void *WINAPI wglAllocateMemoryNV (GLsizei size, GLfloat readfreq, GLfloat writefreq, GLfloat priority);
|
||||
void WINAPI wglFreeMemoryNV (void *pointer);
|
||||
#endif
|
||||
#endif /* WGL_NV_vertex_array_range */
|
||||
|
||||
#ifndef WGL_NV_video_capture
|
||||
#define WGL_NV_video_capture 1
|
||||
DECLARE_HANDLE(HVIDEOINPUTDEVICENV);
|
||||
#define WGL_UNIQUE_ID_NV 0x20CE
|
||||
#define WGL_NUM_VIDEO_CAPTURE_SLOTS_NV 0x20CF
|
||||
typedef BOOL (WINAPI * PFNWGLBINDVIDEOCAPTUREDEVICENVPROC) (UINT uVideoSlot, HVIDEOINPUTDEVICENV hDevice);
|
||||
typedef UINT (WINAPI * PFNWGLENUMERATEVIDEOCAPTUREDEVICESNVPROC) (HDC hDc, HVIDEOINPUTDEVICENV *phDeviceList);
|
||||
typedef BOOL (WINAPI * PFNWGLLOCKVIDEOCAPTUREDEVICENVPROC) (HDC hDc, HVIDEOINPUTDEVICENV hDevice);
|
||||
typedef BOOL (WINAPI * PFNWGLQUERYVIDEOCAPTUREDEVICENVPROC) (HDC hDc, HVIDEOINPUTDEVICENV hDevice, int iAttribute, int *piValue);
|
||||
typedef BOOL (WINAPI * PFNWGLRELEASEVIDEOCAPTUREDEVICENVPROC) (HDC hDc, HVIDEOINPUTDEVICENV hDevice);
|
||||
#ifdef WGL_WGLEXT_PROTOTYPES
|
||||
BOOL WINAPI wglBindVideoCaptureDeviceNV (UINT uVideoSlot, HVIDEOINPUTDEVICENV hDevice);
|
||||
UINT WINAPI wglEnumerateVideoCaptureDevicesNV (HDC hDc, HVIDEOINPUTDEVICENV *phDeviceList);
|
||||
BOOL WINAPI wglLockVideoCaptureDeviceNV (HDC hDc, HVIDEOINPUTDEVICENV hDevice);
|
||||
BOOL WINAPI wglQueryVideoCaptureDeviceNV (HDC hDc, HVIDEOINPUTDEVICENV hDevice, int iAttribute, int *piValue);
|
||||
BOOL WINAPI wglReleaseVideoCaptureDeviceNV (HDC hDc, HVIDEOINPUTDEVICENV hDevice);
|
||||
#endif
|
||||
#endif /* WGL_NV_video_capture */
|
||||
|
||||
#ifndef WGL_NV_video_output
|
||||
#define WGL_NV_video_output 1
|
||||
DECLARE_HANDLE(HPVIDEODEV);
|
||||
#define WGL_BIND_TO_VIDEO_RGB_NV 0x20C0
|
||||
#define WGL_BIND_TO_VIDEO_RGBA_NV 0x20C1
|
||||
#define WGL_BIND_TO_VIDEO_RGB_AND_DEPTH_NV 0x20C2
|
||||
#define WGL_VIDEO_OUT_COLOR_NV 0x20C3
|
||||
#define WGL_VIDEO_OUT_ALPHA_NV 0x20C4
|
||||
#define WGL_VIDEO_OUT_DEPTH_NV 0x20C5
|
||||
#define WGL_VIDEO_OUT_COLOR_AND_ALPHA_NV 0x20C6
|
||||
#define WGL_VIDEO_OUT_COLOR_AND_DEPTH_NV 0x20C7
|
||||
#define WGL_VIDEO_OUT_FRAME 0x20C8
|
||||
#define WGL_VIDEO_OUT_FIELD_1 0x20C9
|
||||
#define WGL_VIDEO_OUT_FIELD_2 0x20CA
|
||||
#define WGL_VIDEO_OUT_STACKED_FIELDS_1_2 0x20CB
|
||||
#define WGL_VIDEO_OUT_STACKED_FIELDS_2_1 0x20CC
|
||||
typedef BOOL (WINAPI * PFNWGLGETVIDEODEVICENVPROC) (HDC hDC, int numDevices, HPVIDEODEV *hVideoDevice);
|
||||
typedef BOOL (WINAPI * PFNWGLRELEASEVIDEODEVICENVPROC) (HPVIDEODEV hVideoDevice);
|
||||
typedef BOOL (WINAPI * PFNWGLBINDVIDEOIMAGENVPROC) (HPVIDEODEV hVideoDevice, HPBUFFERARB hPbuffer, int iVideoBuffer);
|
||||
typedef BOOL (WINAPI * PFNWGLRELEASEVIDEOIMAGENVPROC) (HPBUFFERARB hPbuffer, int iVideoBuffer);
|
||||
typedef BOOL (WINAPI * PFNWGLSENDPBUFFERTOVIDEONVPROC) (HPBUFFERARB hPbuffer, int iBufferType, unsigned long *pulCounterPbuffer, BOOL bBlock);
|
||||
typedef BOOL (WINAPI * PFNWGLGETVIDEOINFONVPROC) (HPVIDEODEV hpVideoDevice, unsigned long *pulCounterOutputPbuffer, unsigned long *pulCounterOutputVideo);
|
||||
#ifdef WGL_WGLEXT_PROTOTYPES
|
||||
BOOL WINAPI wglGetVideoDeviceNV (HDC hDC, int numDevices, HPVIDEODEV *hVideoDevice);
|
||||
BOOL WINAPI wglReleaseVideoDeviceNV (HPVIDEODEV hVideoDevice);
|
||||
BOOL WINAPI wglBindVideoImageNV (HPVIDEODEV hVideoDevice, HPBUFFERARB hPbuffer, int iVideoBuffer);
|
||||
BOOL WINAPI wglReleaseVideoImageNV (HPBUFFERARB hPbuffer, int iVideoBuffer);
|
||||
BOOL WINAPI wglSendPbufferToVideoNV (HPBUFFERARB hPbuffer, int iBufferType, unsigned long *pulCounterPbuffer, BOOL bBlock);
|
||||
BOOL WINAPI wglGetVideoInfoNV (HPVIDEODEV hpVideoDevice, unsigned long *pulCounterOutputPbuffer, unsigned long *pulCounterOutputVideo);
|
||||
#endif
|
||||
#endif /* WGL_NV_video_output */
|
||||
|
||||
#ifndef WGL_OML_sync_control
|
||||
#define WGL_OML_sync_control 1
|
||||
typedef BOOL (WINAPI * PFNWGLGETSYNCVALUESOMLPROC) (HDC hdc, INT64 *ust, INT64 *msc, INT64 *sbc);
|
||||
typedef BOOL (WINAPI * PFNWGLGETMSCRATEOMLPROC) (HDC hdc, INT32 *numerator, INT32 *denominator);
|
||||
typedef INT64 (WINAPI * PFNWGLSWAPBUFFERSMSCOMLPROC) (HDC hdc, INT64 target_msc, INT64 divisor, INT64 remainder);
|
||||
typedef INT64 (WINAPI * PFNWGLSWAPLAYERBUFFERSMSCOMLPROC) (HDC hdc, INT fuPlanes, INT64 target_msc, INT64 divisor, INT64 remainder);
|
||||
typedef BOOL (WINAPI * PFNWGLWAITFORMSCOMLPROC) (HDC hdc, INT64 target_msc, INT64 divisor, INT64 remainder, INT64 *ust, INT64 *msc, INT64 *sbc);
|
||||
typedef BOOL (WINAPI * PFNWGLWAITFORSBCOMLPROC) (HDC hdc, INT64 target_sbc, INT64 *ust, INT64 *msc, INT64 *sbc);
|
||||
#ifdef WGL_WGLEXT_PROTOTYPES
|
||||
BOOL WINAPI wglGetSyncValuesOML (HDC hdc, INT64 *ust, INT64 *msc, INT64 *sbc);
|
||||
BOOL WINAPI wglGetMscRateOML (HDC hdc, INT32 *numerator, INT32 *denominator);
|
||||
INT64 WINAPI wglSwapBuffersMscOML (HDC hdc, INT64 target_msc, INT64 divisor, INT64 remainder);
|
||||
INT64 WINAPI wglSwapLayerBuffersMscOML (HDC hdc, INT fuPlanes, INT64 target_msc, INT64 divisor, INT64 remainder);
|
||||
BOOL WINAPI wglWaitForMscOML (HDC hdc, INT64 target_msc, INT64 divisor, INT64 remainder, INT64 *ust, INT64 *msc, INT64 *sbc);
|
||||
BOOL WINAPI wglWaitForSbcOML (HDC hdc, INT64 target_sbc, INT64 *ust, INT64 *msc, INT64 *sbc);
|
||||
#endif
|
||||
#endif /* WGL_OML_sync_control */
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
@@ -126,6 +126,18 @@ public:
|
||||
return ((r * 13063) + (g * 25647) + (b * 4981)) / 65536;
|
||||
}
|
||||
|
||||
/**
|
||||
* Make a colour dark grey, for specialized 32bpp remapping.
|
||||
* @param colour the colour to make dark.
|
||||
* @return the new colour, now darker.
|
||||
*/
|
||||
static inline Colour MakeDark(Colour colour)
|
||||
{
|
||||
uint8 d = MakeDark(colour.r, colour.g, colour.b);
|
||||
|
||||
return Colour(d, d, d);
|
||||
}
|
||||
|
||||
/**
|
||||
* Make a colour grey - based.
|
||||
* @param colour the colour to make grey.
|
||||
@@ -156,6 +168,16 @@ public:
|
||||
|
||||
return ReallyAdjustBrightness(colour, brightness);
|
||||
}
|
||||
|
||||
static inline uint8 GetColourBrightness(Colour colour)
|
||||
{
|
||||
uint8 rgb_max = std::max(colour.r, std::max(colour.g, colour.b));
|
||||
|
||||
/* Black pixel (8bpp or old 32bpp image), so use default value */
|
||||
if (rgb_max == 0) rgb_max = DEFAULT_BRIGHTNESS;
|
||||
|
||||
return rgb_max;
|
||||
}
|
||||
};
|
||||
|
||||
#endif /* BLITTER_32BPP_BASE_HPP */
|
||||
|
||||
@@ -263,7 +263,7 @@ void Blitter_32bppOptimized::Draw(Blitter::BlitterParams *bp, BlitterMode mode,
|
||||
}
|
||||
}
|
||||
|
||||
Sprite *Blitter_32bppOptimized::Encode(const SpriteLoader::Sprite *sprite, AllocatorProc *allocator)
|
||||
template <bool Tpal_to_rgb> Sprite *Blitter_32bppOptimized::EncodeInternal(const SpriteLoader::Sprite *sprite, AllocatorProc *allocator)
|
||||
{
|
||||
/* streams of pixels (a, r, g, b channels)
|
||||
*
|
||||
@@ -336,7 +336,7 @@ Sprite *Blitter_32bppOptimized::Encode(const SpriteLoader::Sprite *sprite, Alloc
|
||||
dst_px->a = a;
|
||||
if (a != 0 && a != 255) flags |= SF_TRANSLUCENT;
|
||||
*dst_n = src->m;
|
||||
if (src->m != 0) {
|
||||
if (Tpal_to_rgb && src->m != 0) {
|
||||
flags &= ~SF_NO_REMAP;
|
||||
if (src->m >= PALETTE_ANIM_START) flags &= ~SF_NO_ANIM;
|
||||
|
||||
@@ -416,3 +416,11 @@ Sprite *Blitter_32bppOptimized::Encode(const SpriteLoader::Sprite *sprite, Alloc
|
||||
|
||||
return dest_sprite;
|
||||
}
|
||||
|
||||
template Sprite *Blitter_32bppOptimized::EncodeInternal<true>(const SpriteLoader::Sprite *sprite, AllocatorProc *allocator);
|
||||
template Sprite *Blitter_32bppOptimized::EncodeInternal<false>(const SpriteLoader::Sprite *sprite, AllocatorProc *allocator);
|
||||
|
||||
Sprite *Blitter_32bppOptimized::Encode(const SpriteLoader::Sprite *sprite, AllocatorProc *allocator)
|
||||
{
|
||||
return this->EncodeInternal<true>(sprite, allocator);
|
||||
}
|
||||
|
||||
@@ -28,6 +28,9 @@ public:
|
||||
const char *GetName() override { return "32bpp-optimized"; }
|
||||
|
||||
template <BlitterMode mode> void Draw(const Blitter::BlitterParams *bp, ZoomLevel zoom);
|
||||
|
||||
protected:
|
||||
template <bool Tpal_to_rgb> Sprite *EncodeInternal(const SpriteLoader::Sprite *sprite, AllocatorProc *allocator);
|
||||
};
|
||||
|
||||
/** Factory for the optimised 32 bpp blitter (without palette animation). */
|
||||
|
||||
@@ -43,7 +43,7 @@ typedef union ALIGN(16) um128i {
|
||||
|
||||
#define CLEAR_HIGH_BYTE_MASK _mm_setr_epi8(-1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0)
|
||||
#define ALPHA_CONTROL_MASK _mm_setr_epi8( 6, 7, 6, 7, 6, 7, -1, -1, 14, 15, 14, 15, 14, 15, -1, -1)
|
||||
#define PACK_LOW_CONTROL_MASK _mm_setr_epi8( 0, 2, 4, -1, 8, 10, 12, -1, -1, -1, -1, -1, -1, -1, -1, -1)
|
||||
#define PACK_LOW_CONTROL_MASK _mm_setr_epi8( 0, 2, 4, 6, 8, 10, 12, 14, -1, -1, -1, -1, -1, -1, -1, -1)
|
||||
#define PACK_HIGH_CONTROL_MASK _mm_setr_epi8(-1, -1, -1, -1, -1, -1, -1, -1, 0, 2, 4, -1, 8, 10, 12, -1)
|
||||
#define BRIGHTNESS_LOW_CONTROL_MASK _mm_setr_epi8( 1, 2, 1, 2, 1, 2, 0, 2, 3, 2, 3, 2, 3, 2, 0, 2)
|
||||
#define BRIGHTNESS_DIV_CLEANER _mm_setr_epi8(-1, 1, -1, 1, -1, 1, -1, 0, -1, 1, -1, 1, -1, 1, -1, 0)
|
||||
|
||||
552
src/blitter/40bpp_anim.cpp
Normal file
552
src/blitter/40bpp_anim.cpp
Normal file
@@ -0,0 +1,552 @@
|
||||
/* $Id$ */
|
||||
|
||||
/*
|
||||
* This file is part of OpenTTD.
|
||||
* OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
|
||||
* OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
* See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/** @file 40bpp_optimized.cpp Implementation of the optimized 40 bpp blitter. */
|
||||
|
||||
#include "../stdafx.h"
|
||||
#include "../zoom_func.h"
|
||||
#include "../settings_type.h"
|
||||
#include "../video/video_driver.hpp"
|
||||
#include "40bpp_anim.hpp"
|
||||
#include "common.hpp"
|
||||
|
||||
#include "../table/sprites.h"
|
||||
|
||||
#include "../safeguards.h"
|
||||
|
||||
|
||||
/** Instantiation of the 40bpp with animation blitter factory. */
|
||||
static FBlitter_40bppAnim iFBlitter_40bppAnim;
|
||||
|
||||
/** Cached black value. */
|
||||
static const Colour _black_colour(0, 0, 0);
|
||||
|
||||
|
||||
void Blitter_40bppAnim::SetPixel(void *video, int x, int y, uint8 colour)
|
||||
{
|
||||
if (_screen_disable_anim) {
|
||||
Blitter_32bppOptimized::SetPixel(video, x, y, colour);
|
||||
} else {
|
||||
*((Colour *)video + x + y * _screen.pitch) = _black_colour;
|
||||
|
||||
VideoDriver::GetInstance()->GetAnimBuffer()[((uint32 *)video - (uint32 *)_screen.dst_ptr) + x + y * _screen.pitch] = colour;
|
||||
}
|
||||
}
|
||||
|
||||
void Blitter_40bppAnim::SetRect(void *video, int x, int y, const uint8 *colours, uint lines, uint width, uint pitch)
|
||||
{
|
||||
if (_screen_disable_anim) {
|
||||
Blitter_32bppOptimized::SetRect(video, x, y, colours, lines, width, pitch);
|
||||
} else {
|
||||
Colour *dst = (Colour *)video + x + y * _screen.pitch;
|
||||
uint8 *dstanim = ((uint32 *)dst - (uint32 *)_screen.dst_ptr) + VideoDriver::GetInstance()->GetAnimBuffer();
|
||||
do {
|
||||
memset((uint32 *)dst, _black_colour.data, width * sizeof(uint32));
|
||||
memcpy(dstanim, colours, width * sizeof(uint8));
|
||||
dst += _screen.pitch;
|
||||
dstanim += _screen.pitch;
|
||||
colours += pitch;
|
||||
} while (--lines);
|
||||
}
|
||||
}
|
||||
|
||||
void Blitter_40bppAnim::SetRect32(void *video, int x, int y, const uint32 *colours, uint lines, uint width, uint pitch)
|
||||
{
|
||||
if (_screen_disable_anim) {
|
||||
Blitter_32bppOptimized::SetRect32(video, x, y, colours, lines, width, pitch);
|
||||
} else {
|
||||
Colour *dst = (Colour *)video + x + y * _screen.pitch;
|
||||
uint8 *dstanim = ((uint32 *)dst - (uint32 *)_screen.dst_ptr) + VideoDriver::GetInstance()->GetAnimBuffer();
|
||||
do {
|
||||
memcpy((uint32 *)dst, colours, width * sizeof(uint32));
|
||||
memset(dstanim, 0, width * sizeof(uint8));
|
||||
dst += _screen.pitch;
|
||||
dstanim += _screen.pitch;
|
||||
colours += pitch;
|
||||
} while (--lines);
|
||||
}
|
||||
}
|
||||
|
||||
void Blitter_40bppAnim::DrawRect(void *video, int width, int height, uint8 colour)
|
||||
{
|
||||
if (_screen_disable_anim) {
|
||||
/* This means our output is not to the screen, so we can't be doing any animation stuff, so use our parent DrawRect() */
|
||||
Blitter_32bppOptimized::DrawRect(video, width, height, colour);
|
||||
return;
|
||||
}
|
||||
|
||||
assert(VideoDriver::GetInstance()->GetAnimBuffer() != nullptr);
|
||||
uint8 *anim_line = ((uint32 *)video - (uint32 *)_screen.dst_ptr) + VideoDriver::GetInstance()->GetAnimBuffer();
|
||||
|
||||
do {
|
||||
Colour *dst = (Colour *)video;
|
||||
uint8 *anim = anim_line;
|
||||
|
||||
for (int i = width; i > 0; i--) {
|
||||
*dst = _black_colour;
|
||||
*anim = colour;
|
||||
dst++;
|
||||
anim++;
|
||||
}
|
||||
video = (uint32 *)video + _screen.pitch;
|
||||
anim_line += _screen.pitch;
|
||||
} while (--height);
|
||||
}
|
||||
|
||||
void Blitter_40bppAnim::DrawLine(void *video, int x, int y, int x2, int y2, int screen_width, int screen_height, uint8 colour, int width, int dash)
|
||||
{
|
||||
if (_screen_disable_anim) {
|
||||
/* This means our output is not to the screen, so we can't be doing any animation stuff, so use our parent DrawRect() */
|
||||
Blitter_32bppOptimized::DrawLine(video, x, y, x2, y2, screen_width, screen_height, colour, width, dash);
|
||||
return;
|
||||
}
|
||||
|
||||
assert(VideoDriver::GetInstance()->GetAnimBuffer() != nullptr);
|
||||
uint8 *anim = ((uint32 *)video - (uint32 *)_screen.dst_ptr) + VideoDriver::GetInstance()->GetAnimBuffer();
|
||||
|
||||
this->DrawLineGeneric(x, y, x2, y2, screen_width, screen_height, width, dash, [=](int x, int y) {
|
||||
*((Colour *)video + x + y * _screen.pitch) = _black_colour;
|
||||
*(anim + x + y * _screen.pitch) = colour;
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Draws a sprite to a (screen) buffer. It is templated to allow faster operation.
|
||||
*
|
||||
* @tparam mode blitter mode
|
||||
* @param bp further blitting parameters
|
||||
* @param zoom zoom level at which we are drawing
|
||||
*/
|
||||
template <BlitterMode mode>
|
||||
inline void Blitter_40bppAnim::Draw(const Blitter::BlitterParams *bp, ZoomLevel zoom)
|
||||
{
|
||||
const SpriteData *src = (const SpriteData *)bp->sprite;
|
||||
|
||||
/* src_px : each line begins with uint32 n = 'number of bytes in this line',
|
||||
* then n times is the Colour struct for this line */
|
||||
const Colour *src_px = (const Colour *)(src->data + src->offset[zoom][0]);
|
||||
/* src_n : each line begins with uint32 n = 'number of bytes in this line',
|
||||
* then interleaved stream of 'm' and 'n' channels. 'm' is remap,
|
||||
* 'n' is number of bytes with the same alpha channel class */
|
||||
const uint16 *src_n = (const uint16 *)(src->data + src->offset[zoom][1]);
|
||||
|
||||
/* skip upper lines in src_px and src_n */
|
||||
for (uint i = bp->skip_top; i != 0; i--) {
|
||||
src_px = (const Colour *)((const byte *)src_px + *(const uint32 *)src_px);
|
||||
src_n = (const uint16 *)((const byte *)src_n + *(const uint32 *)src_n);
|
||||
}
|
||||
|
||||
/* skip lines in dst */
|
||||
Colour *dst = (Colour *)bp->dst + bp->top * bp->pitch + bp->left;
|
||||
assert(VideoDriver::GetInstance()->GetAnimBuffer() != nullptr);
|
||||
uint8 *anim = VideoDriver::GetInstance()->GetAnimBuffer() + ((uint32 *)bp->dst - (uint32 *)_screen.dst_ptr) + bp->top * bp->pitch + bp->left;
|
||||
|
||||
/* store so we don't have to access it via bp everytime (compiler assumes pointer aliasing) */
|
||||
const byte *remap = bp->remap;
|
||||
|
||||
for (int y = 0; y < bp->height; y++) {
|
||||
/* next dst line begins here */
|
||||
Colour *dst_ln = dst + bp->pitch;
|
||||
uint8 *anim_ln = anim + bp->pitch;
|
||||
|
||||
/* next src line begins here */
|
||||
const Colour *src_px_ln = (const Colour *)((const byte *)src_px + *(const uint32 *)src_px);
|
||||
src_px++;
|
||||
|
||||
/* next src_n line begins here */
|
||||
const uint16 *src_n_ln = (const uint16 *)((const byte *)src_n + *(const uint32 *)src_n);
|
||||
src_n += 2;
|
||||
|
||||
/* we will end this line when we reach this point */
|
||||
Colour *dst_end = dst + bp->skip_left;
|
||||
|
||||
/* number of pixels with the same alpha channel class */
|
||||
uint n;
|
||||
|
||||
while (dst < dst_end) {
|
||||
n = *src_n++;
|
||||
|
||||
if (src_px->a == 0) {
|
||||
dst += n;
|
||||
src_px++;
|
||||
src_n++;
|
||||
|
||||
if (dst > dst_end) anim += dst - dst_end;
|
||||
} else {
|
||||
if (dst + n > dst_end) {
|
||||
uint d = dst_end - dst;
|
||||
src_px += d;
|
||||
src_n += d;
|
||||
|
||||
dst = dst_end - bp->skip_left;
|
||||
dst_end = dst + bp->width;
|
||||
|
||||
n = std::min<uint>(n - d, (uint)bp->width);
|
||||
goto draw;
|
||||
}
|
||||
dst += n;
|
||||
src_px += n;
|
||||
src_n += n;
|
||||
}
|
||||
}
|
||||
|
||||
dst -= bp->skip_left;
|
||||
dst_end -= bp->skip_left;
|
||||
|
||||
dst_end += bp->width;
|
||||
|
||||
while (dst < dst_end) {
|
||||
n = std::min<uint>(*src_n++, (uint)(dst_end - dst));
|
||||
|
||||
if (src_px->a == 0) {
|
||||
anim += n;
|
||||
dst += n;
|
||||
src_px++;
|
||||
src_n++;
|
||||
continue;
|
||||
}
|
||||
|
||||
draw:;
|
||||
|
||||
switch (mode) {
|
||||
case BM_COLOUR_REMAP:
|
||||
case BM_CRASH_REMAP:
|
||||
if (src_px->a == 255) {
|
||||
do {
|
||||
uint8 m = GB(*src_n, 0, 8);
|
||||
/* In case the m-channel is zero, only apply the crash remap by darkening the RGB colour. */
|
||||
if (m == 0) {
|
||||
*dst = mode == BM_CRASH_REMAP ? this->MakeDark(*src_px) : *src_px;
|
||||
*anim = 0;
|
||||
} else {
|
||||
uint r = remap[m];
|
||||
if (r != 0) {
|
||||
*dst = src_px->data;
|
||||
*anim = r;
|
||||
}
|
||||
}
|
||||
anim++;
|
||||
dst++;
|
||||
src_px++;
|
||||
src_n++;
|
||||
} while (--n != 0);
|
||||
} else {
|
||||
do {
|
||||
uint8 m = GB(*src_n, 0, 8);
|
||||
Colour b = this->RealizeBlendedColour(*anim, *dst);
|
||||
if (m == 0) {
|
||||
Colour c = mode == BM_CRASH_REMAP ? this->MakeDark(*src_px) : *src_px;
|
||||
*dst = this->ComposeColourRGBANoCheck(c.r, c.g, c.b, src_px->a, b);
|
||||
*anim = 0;
|
||||
} else {
|
||||
uint r = remap[m];
|
||||
if (r != 0) {
|
||||
*dst = this->ComposeColourPANoCheck(this->LookupColourInPalette(r), src_px->a, b);
|
||||
*anim = 0; // Animation colours don't work with alpha-blending.
|
||||
}
|
||||
}
|
||||
anim++;
|
||||
dst++;
|
||||
src_px++;
|
||||
src_n++;
|
||||
} while (--n != 0);
|
||||
}
|
||||
break;
|
||||
|
||||
case BM_BLACK_REMAP:
|
||||
do {
|
||||
*anim++ = 0;
|
||||
*dst++ = _black_colour;
|
||||
src_px++;
|
||||
src_n++;
|
||||
} while (--n != 0);
|
||||
break;
|
||||
|
||||
case BM_TRANSPARENT:
|
||||
/* TODO -- We make an assumption here that the remap in fact is transparency, not some colour.
|
||||
* This is never a problem with the code we produce, but newgrfs can make it fail... or at least:
|
||||
* we produce a result the newgrf maker didn't expect ;) */
|
||||
|
||||
/* Make the current colour a bit more black, so it looks like this image is transparent */
|
||||
src_n += n;
|
||||
if (src_px->a == 255) {
|
||||
src_px += n;
|
||||
do {
|
||||
/* If the anim buffer contains a color value, the image composition will
|
||||
* only look at the RGB brightness value. As such, we can simply darken the
|
||||
* RGB value to darken the anim color. */
|
||||
Colour b = *anim != 0 ? Colour(this->GetColourBrightness(*dst), 0, 0) : *dst;
|
||||
*dst = this->MakeTransparent(b, 3, 4);
|
||||
anim++;
|
||||
dst++;
|
||||
} while (--n != 0);
|
||||
} else {
|
||||
do {
|
||||
Colour b = this->RealizeBlendedColour(*anim, *dst);
|
||||
*dst = this->MakeTransparent(b, (256 * 4 - src_px->a), 256 * 4);
|
||||
*anim = 0; // Animation colours don't work with alpha-blending.
|
||||
anim++;
|
||||
dst++;
|
||||
src_px++;
|
||||
} while (--n != 0);
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
if (src_px->a == 255) {
|
||||
do {
|
||||
*anim++ = GB(*src_n, 0, 8);
|
||||
*dst++ = src_px->data;
|
||||
src_px++;
|
||||
src_n++;
|
||||
} while (--n != 0);
|
||||
break;
|
||||
} else {
|
||||
do {
|
||||
uint8 m = GB(*src_n, 0, 8);
|
||||
Colour b = this->RealizeBlendedColour(*anim, *dst);
|
||||
|
||||
if (m == 0) {
|
||||
*dst = this->ComposeColourRGBANoCheck(src_px->r, src_px->g, src_px->b, src_px->a, b);
|
||||
*anim = 0;
|
||||
} else {
|
||||
*dst = this->ComposeColourPANoCheck(this->LookupColourInPalette(m), src_px->a, b);
|
||||
*anim = m;
|
||||
}
|
||||
|
||||
anim++;
|
||||
dst++;
|
||||
src_px++;
|
||||
src_n++;
|
||||
} while (--n != 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
dst = dst_ln;
|
||||
anim = anim_ln;
|
||||
src_px = src_px_ln;
|
||||
src_n = src_n_ln;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Draws a sprite to a (screen) buffer. Calls adequate templated function.
|
||||
*
|
||||
* @param bp further blitting parameters
|
||||
* @param mode blitter mode
|
||||
* @param zoom zoom level at which we are drawing
|
||||
*/
|
||||
void Blitter_40bppAnim::Draw(Blitter::BlitterParams *bp, BlitterMode mode, ZoomLevel zoom)
|
||||
{
|
||||
assert(_screen.dst_ptr != nullptr);
|
||||
|
||||
if (_screen_disable_anim || VideoDriver::GetInstance()->GetAnimBuffer() == nullptr) {
|
||||
/* This means our output is not to the screen, so we can't be doing any animation stuff, so use our parent Draw() */
|
||||
Blitter_32bppOptimized::Draw(bp, mode, zoom);
|
||||
return;
|
||||
}
|
||||
|
||||
switch (mode) {
|
||||
default: NOT_REACHED();
|
||||
case BM_NORMAL: Draw<BM_NORMAL> (bp, zoom); return;
|
||||
case BM_COLOUR_REMAP: Draw<BM_COLOUR_REMAP>(bp, zoom); return;
|
||||
case BM_TRANSPARENT: Draw<BM_TRANSPARENT> (bp, zoom); return;
|
||||
case BM_CRASH_REMAP: Draw<BM_CRASH_REMAP> (bp, zoom); return;
|
||||
case BM_BLACK_REMAP: Draw<BM_BLACK_REMAP> (bp, zoom); return;
|
||||
}
|
||||
}
|
||||
|
||||
void Blitter_40bppAnim::DrawColourMappingRect(void *dst, int width, int height, PaletteID pal)
|
||||
{
|
||||
if (_screen_disable_anim) {
|
||||
/* This means our output is not to the screen, so we can't be doing any animation stuff, so use our parent DrawColourMappingRect() */
|
||||
Blitter_32bppOptimized::DrawColourMappingRect(dst, width, height, pal);
|
||||
return;
|
||||
}
|
||||
|
||||
Colour *udst = (Colour *)dst;
|
||||
uint8 *anim = VideoDriver::GetInstance()->GetAnimBuffer() + ((uint32 *)dst - (uint32 *)_screen.dst_ptr);
|
||||
|
||||
if (pal == PALETTE_TO_TRANSPARENT) {
|
||||
/* If the anim buffer contains a color value, the image composition will
|
||||
* only look at the RGB brightness value. As such, we can simply darken the
|
||||
* RGB value to darken the anim color. */
|
||||
do {
|
||||
for (int i = 0; i != width; i++) {
|
||||
Colour b = *anim != 0 ? Colour(this->GetColourBrightness(*udst), 0, 0) : *udst;
|
||||
*udst = MakeTransparent(b, 154);
|
||||
udst++;
|
||||
anim++;
|
||||
}
|
||||
udst = udst - width + _screen.pitch;
|
||||
anim = anim - width + _screen.pitch;
|
||||
} while (--height);
|
||||
} else if (pal == PALETTE_NEWSPAPER) {
|
||||
const uint8 *remap = GetNonSprite(pal, ST_RECOLOUR) + 1;
|
||||
do {
|
||||
for (int i = 0; i != width; i++) {
|
||||
if (*anim == 0) *udst = MakeGrey(*udst);
|
||||
*anim = remap[*anim];
|
||||
udst++;
|
||||
anim++;
|
||||
}
|
||||
udst = udst - width + _screen.pitch;
|
||||
anim = anim - width + _screen.pitch;
|
||||
} while (--height);
|
||||
} else {
|
||||
const uint8 *remap = GetNonSprite(pal, ST_RECOLOUR) + 1;
|
||||
do {
|
||||
for (int i = 0; i != width; i++) {
|
||||
*anim = remap[*anim];
|
||||
anim++;
|
||||
}
|
||||
anim = anim - width + _screen.pitch;
|
||||
} while (--height);
|
||||
}
|
||||
}
|
||||
|
||||
Sprite *Blitter_40bppAnim::Encode(const SpriteLoader::Sprite *sprite, AllocatorProc *allocator)
|
||||
{
|
||||
return this->EncodeInternal<false>(sprite, allocator);
|
||||
}
|
||||
|
||||
|
||||
void Blitter_40bppAnim::CopyFromBuffer(void *video, const void *src, int width, int height)
|
||||
{
|
||||
assert(!_screen_disable_anim);
|
||||
assert(video >= _screen.dst_ptr && video <= (uint32 *)_screen.dst_ptr + _screen.width + _screen.height * _screen.pitch);
|
||||
uint32 *dst = (uint32 *)video;
|
||||
const uint32 *usrc = (const uint32 *)src;
|
||||
|
||||
uint8 *anim_buf = VideoDriver::GetInstance()->GetAnimBuffer();
|
||||
if (anim_buf == nullptr) return;
|
||||
uint8 *anim_line = ((uint32 *)video - (uint32 *)_screen.dst_ptr) + anim_buf;
|
||||
|
||||
for (; height > 0; height--) {
|
||||
memcpy(dst, usrc, width * sizeof(uint32));
|
||||
usrc += width;
|
||||
dst += _screen.pitch;
|
||||
/* Copy back the anim-buffer */
|
||||
memcpy(anim_line, usrc, width * sizeof(uint8));
|
||||
usrc = (const uint32 *)((const uint8 *)usrc + width);
|
||||
anim_line += _screen.pitch;
|
||||
}
|
||||
}
|
||||
|
||||
void Blitter_40bppAnim::CopyToBuffer(const void *video, void *dst, int width, int height)
|
||||
{
|
||||
assert(!_screen_disable_anim);
|
||||
assert(video >= _screen.dst_ptr && video <= (uint32 *)_screen.dst_ptr + _screen.width + _screen.height * _screen.pitch);
|
||||
uint32 *udst = (uint32 *)dst;
|
||||
const uint32 *src = (const uint32 *)video;
|
||||
|
||||
uint8 *anim_buf = VideoDriver::GetInstance()->GetAnimBuffer();
|
||||
if (anim_buf == nullptr) return;
|
||||
const uint8 *anim_line = ((const uint32 *)video - (uint32 *)_screen.dst_ptr) + anim_buf;
|
||||
|
||||
for (; height > 0; height--) {
|
||||
memcpy(udst, src, width * sizeof(uint32));
|
||||
src += _screen.pitch;
|
||||
udst += width;
|
||||
/* Copy the anim-buffer */
|
||||
memcpy(udst, anim_line, width * sizeof(uint8));
|
||||
udst = (uint32 *)((uint8 *)udst + width);
|
||||
anim_line += _screen.pitch;
|
||||
}
|
||||
}
|
||||
|
||||
void Blitter_40bppAnim::CopyImageToBuffer(const void *video, void *dst, int width, int height, int dst_pitch)
|
||||
{
|
||||
uint8 *anim_buf = VideoDriver::GetInstance()->GetAnimBuffer();
|
||||
if (anim_buf == nullptr) {
|
||||
Blitter_32bppOptimized::CopyImageToBuffer(video, dst, width, height, dst_pitch);
|
||||
return;
|
||||
}
|
||||
|
||||
uint32 *udst = (uint32 *)dst;
|
||||
const uint32 *src = (const uint32 *)video;
|
||||
const uint8 *anim_line = ((const uint32 *)video - (uint32 *)_screen.dst_ptr) + anim_buf;
|
||||
|
||||
for (; height > 0; height--) {
|
||||
for (int x = 0; x < width; x++) {
|
||||
udst[x] = this->RealizeBlendedColour(anim_line[x], src[x]).data;
|
||||
}
|
||||
src += _screen.pitch;
|
||||
anim_line += _screen.pitch;
|
||||
udst += dst_pitch;
|
||||
}
|
||||
}
|
||||
|
||||
void Blitter_40bppAnim::ScrollBuffer(void *video, int left, int top, int width, int height, int scroll_x, int scroll_y)
|
||||
{
|
||||
assert(!_screen_disable_anim);
|
||||
assert(video >= _screen.dst_ptr && video <= (uint32 *)_screen.dst_ptr + _screen.width + _screen.height * _screen.pitch);
|
||||
uint8 *anim_buf = VideoDriver::GetInstance()->GetAnimBuffer();
|
||||
uint8 *dst, *src;
|
||||
|
||||
/* We need to scroll the anim-buffer too */
|
||||
if (scroll_y > 0) {
|
||||
dst = anim_buf + left + (top + height - 1) * _screen.pitch;
|
||||
src = dst - scroll_y * _screen.pitch;
|
||||
|
||||
/* Adjust left & width */
|
||||
if (scroll_x >= 0) {
|
||||
dst += scroll_x;
|
||||
} else {
|
||||
src -= scroll_x;
|
||||
}
|
||||
|
||||
uint tw = width + (scroll_x >= 0 ? -scroll_x : scroll_x);
|
||||
uint th = height - scroll_y;
|
||||
for (; th > 0; th--) {
|
||||
memcpy(dst, src, tw * sizeof(uint8));
|
||||
src -= _screen.pitch;
|
||||
dst -= _screen.pitch;
|
||||
}
|
||||
} else {
|
||||
/* Calculate pointers */
|
||||
dst = anim_buf + left + top * _screen.pitch;
|
||||
src = dst - scroll_y * _screen.pitch;
|
||||
|
||||
/* Adjust left & width */
|
||||
if (scroll_x >= 0) {
|
||||
dst += scroll_x;
|
||||
} else {
|
||||
src -= scroll_x;
|
||||
}
|
||||
|
||||
/* the y-displacement may be 0 therefore we have to use memmove,
|
||||
* because source and destination may overlap */
|
||||
uint tw = width + (scroll_x >= 0 ? -scroll_x : scroll_x);
|
||||
uint th = height + scroll_y;
|
||||
for (; th > 0; th--) {
|
||||
memmove(dst, src, tw * sizeof(uint8));
|
||||
src += _screen.pitch;
|
||||
dst += _screen.pitch;
|
||||
}
|
||||
}
|
||||
|
||||
Blitter_32bppBase::ScrollBuffer(video, left, top, width, height, scroll_x, scroll_y);
|
||||
}
|
||||
|
||||
int Blitter_40bppAnim::BufferSize(int width, int height)
|
||||
{
|
||||
return width * height * (sizeof(uint32) + sizeof(uint8));
|
||||
}
|
||||
|
||||
Blitter::PaletteAnimation Blitter_40bppAnim::UsePaletteAnimation()
|
||||
{
|
||||
return Blitter::PALETTE_ANIMATION_VIDEO_BACKEND;
|
||||
}
|
||||
|
||||
bool Blitter_40bppAnim::NeedsAnimationBuffer()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
66
src/blitter/40bpp_anim.hpp
Normal file
66
src/blitter/40bpp_anim.hpp
Normal file
@@ -0,0 +1,66 @@
|
||||
/* $Id$ */
|
||||
|
||||
/*
|
||||
* This file is part of OpenTTD.
|
||||
* OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
|
||||
* OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
* See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/** @file 40bpp_optimized.hpp Optimized 40 bpp blitter. */
|
||||
|
||||
#ifndef BLITTER_40BPP_OPTIMIZED_HPP
|
||||
#define BLITTER_40BPP_OPTIMIZED_HPP
|
||||
|
||||
|
||||
#include "32bpp_optimized.hpp"
|
||||
#include "../video/video_driver.hpp"
|
||||
|
||||
/** The optimized 40 bpp blitter (for OpenGL video driver). */
|
||||
class Blitter_40bppAnim : public Blitter_32bppOptimized {
|
||||
public:
|
||||
|
||||
// void *MoveTo(void *video, int x, int y) override;
|
||||
void SetPixel(void *video, int x, int y, uint8 colour) override;
|
||||
void SetRect(void *video, int x, int y, const uint8 *colours, uint lines, uint width, uint pitch) override;
|
||||
void SetRect32(void *video, int x, int y, const uint32 *colours, uint lines, uint width, uint pitch) override;
|
||||
void DrawRect(void *video, int width, int height, uint8 colour) override;
|
||||
void DrawLine(void *video, int x, int y, int x2, int y2, int screen_width, int screen_height, uint8 colour, int width, int dash) override;
|
||||
void CopyFromBuffer(void *video, const void *src, int width, int height) override;
|
||||
void CopyToBuffer(const void *video, void *dst, int width, int height) override;
|
||||
void CopyImageToBuffer(const void *video, void *dst, int width, int height, int dst_pitch) override;
|
||||
void ScrollBuffer(void *video, int left, int top, int width, int height, int scroll_x, int scroll_y) override;
|
||||
void Draw(Blitter::BlitterParams *bp, BlitterMode mode, ZoomLevel zoom) override;
|
||||
void DrawColourMappingRect(void *dst, int width, int height, PaletteID pal) override;
|
||||
Sprite *Encode(const SpriteLoader::Sprite *sprite, AllocatorProc *allocator) override;
|
||||
int BufferSize(int width, int height) override;
|
||||
Blitter::PaletteAnimation UsePaletteAnimation() override;
|
||||
bool NeedsAnimationBuffer() override;
|
||||
|
||||
const char *GetName() override { return "40bpp-anim"; }
|
||||
int GetBytesPerPixel() override { return 5; }
|
||||
|
||||
template <BlitterMode mode> void Draw(const Blitter::BlitterParams *bp, ZoomLevel zoom);
|
||||
|
||||
protected:
|
||||
static inline Colour RealizeBlendedColour(uint8 anim, Colour c)
|
||||
{
|
||||
return anim != 0 ? AdjustBrightness(LookupColourInPalette(anim), GetColourBrightness(c)) : c;
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
/** Factory for the 40 bpp animated blitter (for OpenGL). */
|
||||
class FBlitter_40bppAnim : public BlitterFactory {
|
||||
protected:
|
||||
bool IsUsable() const override
|
||||
{
|
||||
return VideoDriver::GetInstance() == nullptr || VideoDriver::GetInstance()->HasAnimBuffer();
|
||||
}
|
||||
|
||||
public:
|
||||
FBlitter_40bppAnim() : BlitterFactory("40bpp-anim", "40bpp Animation Blitter (OpenGL)") {}
|
||||
Blitter *CreateInstance() override { return new Blitter_40bppAnim(); }
|
||||
};
|
||||
|
||||
#endif /* BLITTER_40BPP_OPTIMIZED_HPP */
|
||||
@@ -32,6 +32,13 @@ add_files(
|
||||
CONDITION NOT OPTION_DEDICATED AND SSE_FOUND
|
||||
)
|
||||
|
||||
add_files(
|
||||
40bpp_anim.cpp
|
||||
40bpp_anim.hpp
|
||||
CONDITION NOT OPTION_DEDICATED AND OPENGL_FOUND
|
||||
)
|
||||
|
||||
|
||||
if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU" OR CMAKE_CXX_COMPILER_ID STREQUAL "Clang" OR CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang")
|
||||
set_compile_flags(
|
||||
32bpp_anim_sse2.cpp
|
||||
|
||||
@@ -43,7 +43,7 @@ DECLARE_ENUM_AS_BIT_SET(BlitterSpriteFlags);
|
||||
/**
|
||||
* How all blitters should look like. Extend this class to make your own.
|
||||
*/
|
||||
class Blitter {
|
||||
class Blitter : public SpriteEncoder {
|
||||
public:
|
||||
/** Parameters related to blitting. */
|
||||
struct BlitterParams {
|
||||
@@ -77,6 +77,11 @@ public:
|
||||
*/
|
||||
virtual uint8 GetScreenDepth() = 0;
|
||||
|
||||
bool Is32BppSupported() override
|
||||
{
|
||||
return this->GetScreenDepth() > 8;
|
||||
}
|
||||
|
||||
/**
|
||||
* Draw an image to the screen, given an amount of params defined above.
|
||||
*/
|
||||
@@ -93,11 +98,6 @@ public:
|
||||
*/
|
||||
virtual void DrawColourMappingRect(void *dst, int width, int height, PaletteID pal) = 0;
|
||||
|
||||
/**
|
||||
* Convert a sprite from the loader to our own format.
|
||||
*/
|
||||
virtual Sprite *Encode(const SpriteLoader::Sprite *sprite, AllocatorProc *allocator) = 0;
|
||||
|
||||
/**
|
||||
* Move the destination pointer the requested amount x and y, keeping in mind
|
||||
* any pitch and bpp of the renderer.
|
||||
@@ -228,6 +228,14 @@ public:
|
||||
*/
|
||||
virtual Blitter::PaletteAnimation UsePaletteAnimation() = 0;
|
||||
|
||||
/**
|
||||
* Does this blitter require a separate animation buffer from the video backend?
|
||||
*/
|
||||
virtual bool NeedsAnimationBuffer()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the name of the blitter, the same as the Factory-instance returns.
|
||||
*/
|
||||
|
||||
@@ -73,6 +73,15 @@ protected:
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Is the blitter usable with the current drivers and hardware config?
|
||||
* @return True if the blitter can be instantiated.
|
||||
*/
|
||||
virtual bool IsUsable() const
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
public:
|
||||
virtual ~BlitterFactory()
|
||||
{
|
||||
@@ -119,7 +128,7 @@ public:
|
||||
for (; it != GetBlitters().end(); it++) {
|
||||
BlitterFactory *b = (*it).second;
|
||||
if (strcasecmp(bname, b->name.c_str()) == 0) {
|
||||
return b;
|
||||
return b->IsUsable() ? b : nullptr;
|
||||
}
|
||||
}
|
||||
return nullptr;
|
||||
|
||||
@@ -182,7 +182,7 @@ static void debug_print(const char *dbg, const char *buf)
|
||||
* crashing, and NetworkTextMessage includes these */
|
||||
#if defined(_WIN32)
|
||||
if (strcmp(dbg, "desync") != 0) {
|
||||
TCHAR system_buf[512];
|
||||
wchar_t system_buf[512];
|
||||
convert_to_fs(buffer, system_buf, lengthof(system_buf), true);
|
||||
_fputts(system_buf, stderr);
|
||||
}
|
||||
|
||||
@@ -340,7 +340,7 @@ std::string FioFindDirectory(Subdirectory subdir)
|
||||
|
||||
static FILE *FioFOpenFileSp(const std::string &filename, const char *mode, Searchpath sp, Subdirectory subdir, size_t *filesize, std::string *output_filename)
|
||||
{
|
||||
#if defined(_WIN32) && defined(UNICODE)
|
||||
#if defined(_WIN32)
|
||||
/* fopen is implemented as a define with ellipses for
|
||||
* Unicode support (prepend an L). As we are not sending
|
||||
* a string, but a variable, it 'renames' the variable,
|
||||
|
||||
@@ -107,14 +107,14 @@ DECLARE_ENUM_AS_BIT_SET(TarScanner::Mode)
|
||||
struct DIR;
|
||||
|
||||
struct dirent { // XXX - only d_name implemented
|
||||
TCHAR *d_name; // name of found file
|
||||
wchar_t *d_name; // name of found file
|
||||
/* little hack which will point to parent DIR struct which will
|
||||
* save us a call to GetFileAttributes if we want information
|
||||
* about the file (for example in function fio_bla) */
|
||||
DIR *dir;
|
||||
};
|
||||
|
||||
DIR *opendir(const TCHAR *path);
|
||||
DIR *opendir(const wchar_t *path);
|
||||
struct dirent *readdir(DIR *d);
|
||||
int closedir(DIR *d);
|
||||
#else
|
||||
|
||||
@@ -274,17 +274,12 @@ void TrueTypeFontCache::SetGlyphPtr(GlyphID key, const GlyphEntry *glyph, bool d
|
||||
this->glyph_to_sprite[GB(key, 8, 8)][GB(key, 0, 8)].duplicate = duplicate;
|
||||
}
|
||||
|
||||
void *AllocateFont(size_t size)
|
||||
{
|
||||
return MallocT<byte>(size);
|
||||
}
|
||||
|
||||
|
||||
/* Check if a glyph should be rendered with anti-aliasing. */
|
||||
static bool GetFontAAState(FontSize size)
|
||||
static bool GetFontAAState(FontSize size, bool check_blitter = true)
|
||||
{
|
||||
/* AA is only supported for 32 bpp */
|
||||
if (BlitterFactory::GetCurrentBlitter()->GetScreenDepth() != 32) return false;
|
||||
if (check_blitter && BlitterFactory::GetCurrentBlitter()->GetScreenDepth() != 32) return false;
|
||||
|
||||
switch (size) {
|
||||
default: NOT_REACHED();
|
||||
@@ -348,10 +343,11 @@ const Sprite *TrueTypeFontCache::GetGlyph(GlyphID key)
|
||||
0, // x_offs
|
||||
0, // y_offs
|
||||
ST_FONT,
|
||||
SCC_PAL,
|
||||
builtin_questionmark_data
|
||||
};
|
||||
|
||||
Sprite *spr = BlitterFactory::GetCurrentBlitter()->Encode(&builtin_questionmark, AllocateFont);
|
||||
Sprite *spr = BlitterFactory::GetCurrentBlitter()->Encode(&builtin_questionmark, SimpleSpriteAlloc);
|
||||
assert(spr != nullptr);
|
||||
GlyphEntry new_glyph;
|
||||
new_glyph.sprite = spr;
|
||||
@@ -613,6 +609,7 @@ const Sprite *FreeTypeFontCache::InternalGetGlyph(GlyphID key, bool aa)
|
||||
SpriteLoader::Sprite sprite;
|
||||
sprite.AllocateData(ZOOM_LVL_NORMAL, width * height);
|
||||
sprite.type = ST_FONT;
|
||||
sprite.colours = (aa ? SCC_PAL | SCC_ALPHA : SCC_PAL);
|
||||
sprite.width = width;
|
||||
sprite.height = height;
|
||||
sprite.x_offs = slot->bitmap_left;
|
||||
@@ -640,7 +637,7 @@ const Sprite *FreeTypeFontCache::InternalGetGlyph(GlyphID key, bool aa)
|
||||
}
|
||||
|
||||
GlyphEntry new_glyph;
|
||||
new_glyph.sprite = BlitterFactory::GetCurrentBlitter()->Encode(&sprite, AllocateFont);
|
||||
new_glyph.sprite = BlitterFactory::GetCurrentBlitter()->Encode(&sprite, SimpleSpriteAlloc);
|
||||
new_glyph.width = slot->advance.x >> 6;
|
||||
|
||||
this->SetGlyphPtr(key, &new_glyph);
|
||||
@@ -675,7 +672,6 @@ const void *FreeTypeFontCache::InternalGetFontTable(uint32 tag, size_t &length)
|
||||
length = len;
|
||||
return result;
|
||||
}
|
||||
|
||||
#endif /* WITH_FREETYPE */
|
||||
|
||||
|
||||
@@ -719,6 +715,19 @@ void UninitFreeType()
|
||||
#endif /* WITH_FREETYPE */
|
||||
}
|
||||
|
||||
/**
|
||||
* Should any of the active fonts be anti-aliased?
|
||||
* @return True if any of the loaded fonts want anti-aliased drawing.
|
||||
*/
|
||||
bool HasAntialiasedFonts()
|
||||
{
|
||||
for (FontSize fs = FS_BEGIN; fs < FS_END; fs++) {
|
||||
if (!FontCache::Get(fs)->IsBuiltInFont() && GetFontAAState(fs, false)) return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
#if !defined(_WIN32) && !defined(__APPLE__) && !defined(WITH_FONTCONFIG) && !defined(WITH_COCOA)
|
||||
|
||||
#ifdef WITH_FREETYPE
|
||||
|
||||
@@ -237,5 +237,6 @@ extern FreeTypeSettings _freetype;
|
||||
|
||||
void InitFreeType(bool monospace);
|
||||
void UninitFreeType();
|
||||
bool HasAntialiasedFonts();
|
||||
|
||||
#endif /* FONTCACHE_H */
|
||||
|
||||
@@ -81,6 +81,4 @@ public:
|
||||
bool IsBuiltInFont() override { return false; }
|
||||
};
|
||||
|
||||
void *AllocateFont(size_t size);
|
||||
|
||||
#endif /* FONTCACHE_INTERNAL_H */
|
||||
|
||||
@@ -1377,6 +1377,9 @@ void ScreenSizeChanged()
|
||||
|
||||
void UndrawMouseCursor()
|
||||
{
|
||||
/* Don't undraw mouse cursor if it is handled by the video driver. */
|
||||
if (VideoDriver::GetInstance()->UseSystemCursor()) return;
|
||||
|
||||
/* Don't undraw the mouse cursor if the screen is not ready */
|
||||
if (_screen.dst_ptr == nullptr) return;
|
||||
|
||||
@@ -1390,6 +1393,9 @@ void UndrawMouseCursor()
|
||||
|
||||
void DrawMouseCursor()
|
||||
{
|
||||
/* Don't draw mouse cursor if it is handled by the video driver. */
|
||||
if (VideoDriver::GetInstance()->UseSystemCursor()) return;
|
||||
|
||||
/* Don't draw the mouse cursor if the screen is not ready */
|
||||
if (_screen.dst_ptr == nullptr) return;
|
||||
|
||||
|
||||
@@ -309,11 +309,13 @@ static bool SwitchNewGRFBlitter()
|
||||
* between multiple 32bpp blitters, which perform differently with 8bpp sprites.
|
||||
*/
|
||||
uint depth_wanted_by_base = BaseGraphics::GetUsedSet()->blitter == BLT_32BPP ? 32 : 8;
|
||||
uint depth_wanted_by_grf = _support8bpp == S8BPP_NONE ? 32 : 8;
|
||||
uint depth_wanted_by_grf = _support8bpp != S8BPP_NONE ? 8 : 32;
|
||||
for (GRFConfig *c = _grfconfig; c != nullptr; c = c->next) {
|
||||
if (c->status == GCS_DISABLED || c->status == GCS_NOT_FOUND || HasBit(c->flags, GCF_INIT_ONLY)) continue;
|
||||
if (c->palette & GRFP_BLT_32BPP) depth_wanted_by_grf = 32;
|
||||
}
|
||||
/* We need a 32bpp blitter for font anti-alias. */
|
||||
if (HasAntialiasedFonts()) depth_wanted_by_grf = 32;
|
||||
|
||||
/* Search the best blitter. */
|
||||
static const struct {
|
||||
@@ -321,13 +323,14 @@ static bool SwitchNewGRFBlitter()
|
||||
uint animation; ///< 0: no support, 1: do support, 2: both
|
||||
uint min_base_depth, max_base_depth, min_grf_depth, max_grf_depth;
|
||||
} replacement_blitters[] = {
|
||||
{ "8bpp-optimized", 2, 8, 8, 8, 8 },
|
||||
{ "40bpp-anim", 2, 8, 32, 8, 32 },
|
||||
#ifdef WITH_SSE
|
||||
{ "32bpp-sse4", 0, 32, 32, 8, 32 },
|
||||
{ "32bpp-ssse3", 0, 32, 32, 8, 32 },
|
||||
{ "32bpp-sse2", 0, 32, 32, 8, 32 },
|
||||
{ "32bpp-sse4-anim", 1, 32, 32, 8, 32 },
|
||||
#endif
|
||||
{ "8bpp-optimized", 2, 8, 8, 8, 8 },
|
||||
{ "32bpp-optimized", 0, 8, 32, 8, 32 },
|
||||
#ifdef WITH_SSE
|
||||
{ "32bpp-sse2-anim", 1, 8, 32, 8, 32 },
|
||||
@@ -497,6 +500,7 @@ void GfxLoadSprites()
|
||||
_grf_bug_too_many_strings = false;
|
||||
|
||||
SwitchNewGRFBlitter();
|
||||
VideoDriver::GetInstance()->ClearSystemSprites();
|
||||
ClearFontCache();
|
||||
GfxInitSpriteMem();
|
||||
LoadSpriteTables();
|
||||
|
||||
@@ -165,10 +165,15 @@ struct ValuesInterval {
|
||||
struct BaseGraphWindow : Window {
|
||||
protected:
|
||||
static const int GRAPH_MAX_DATASETS = 64;
|
||||
static const int GRAPH_BASE_COLOUR = GREY_SCALE(2);
|
||||
static const int GRAPH_GRID_COLOUR = GREY_SCALE(3);
|
||||
static const int GRAPH_AXIS_LINE_COLOUR = GREY_SCALE(1);
|
||||
static const int GRAPH_ZERO_LINE_COLOUR = GREY_SCALE(8);
|
||||
static const int GRAPH_YEAR_LINE_COLOUR = GREY_SCALE(5);
|
||||
static const int GRAPH_NUM_MONTHS = 24; ///< Number of months displayed in the graph.
|
||||
|
||||
static const TextColour GRAPH_AXIS_LABEL_COLOUR = TC_BLACK; ///< colour of the graph axis label.
|
||||
|
||||
static const int MIN_GRAPH_NUM_LINES_Y = 9; ///< Minimal number of horizontal lines to draw.
|
||||
static const int MIN_GRID_PIXEL_SIZE = 20; ///< Minimum distance between graph lines.
|
||||
|
||||
@@ -176,7 +181,6 @@ protected:
|
||||
byte num_dataset;
|
||||
byte num_on_x_axis;
|
||||
byte num_vert_lines;
|
||||
static const TextColour graph_axis_label_colour = TC_BLACK; ///< colour of the graph axis label.
|
||||
|
||||
/* The starting month and year that values are plotted against. If month is
|
||||
* 0xFF, use x_values_start and x_values_increment below instead. */
|
||||
@@ -293,12 +297,10 @@ protected:
|
||||
static_assert(GRAPH_MAX_DATASETS >= (int)NUM_CARGO && GRAPH_MAX_DATASETS >= (int)MAX_COMPANIES);
|
||||
assert(this->num_vert_lines > 0);
|
||||
|
||||
byte grid_colour = GREY_SCALE(3);
|
||||
|
||||
/* Rect r will be adjusted to contain just the graph, with labels being
|
||||
* placed outside the area. */
|
||||
r.top += 5 + GetCharacterHeight(FS_SMALL) / 2;
|
||||
r.bottom -= (this->month == 0xFF ? 1 : 3) * GetCharacterHeight(FS_SMALL) + 4;
|
||||
r.bottom -= (this->month == 0xFF ? 1 : 2) * GetCharacterHeight(FS_SMALL) + 4;
|
||||
r.left += 9;
|
||||
r.right -= 5;
|
||||
|
||||
@@ -327,7 +329,7 @@ protected:
|
||||
x_axis_offset = (int)((r.bottom - r.top) * (double)interval.highest / (double)interval_size);
|
||||
|
||||
/* Draw the background of the graph itself. */
|
||||
GfxFillRect(r.left, r.top, r.right, r.bottom, GREY_SCALE(2));
|
||||
GfxFillRect(r.left, r.top, r.right, r.bottom, GRAPH_BASE_COLOUR);
|
||||
|
||||
/* Draw the vertical grid lines. */
|
||||
|
||||
@@ -335,7 +337,7 @@ protected:
|
||||
x = r.left + x_sep;
|
||||
|
||||
for (int i = 0; i < this->num_vert_lines; i++) {
|
||||
GfxFillRect(x, r.top, x, r.bottom, grid_colour);
|
||||
GfxFillRect(x, r.top, x, r.bottom, GRAPH_GRID_COLOUR);
|
||||
x += x_sep;
|
||||
}
|
||||
|
||||
@@ -344,7 +346,7 @@ protected:
|
||||
|
||||
for (int i = 0; i < (num_hori_lines + 1); i++) {
|
||||
GfxFillRect(r.left - 3, y, r.left - 1, y, GRAPH_AXIS_LINE_COLOUR);
|
||||
GfxFillRect(r.left, y, r.right, y, grid_colour);
|
||||
GfxFillRect(r.left, y, r.right, y, GRAPH_GRID_COLOUR);
|
||||
y -= y_sep;
|
||||
}
|
||||
|
||||
@@ -370,13 +372,13 @@ protected:
|
||||
for (int i = 0; i < (num_hori_lines + 1); i++) {
|
||||
SetDParam(0, this->format_str_y_axis);
|
||||
SetDParam(1, y_label);
|
||||
DrawString(r.left - label_width - 4, r.left - 4, y, STR_GRAPH_Y_LABEL, graph_axis_label_colour, SA_RIGHT);
|
||||
DrawString(r.left - label_width - 4, r.left - 4, y, STR_GRAPH_Y_LABEL, GRAPH_AXIS_LABEL_COLOUR, SA_RIGHT);
|
||||
|
||||
y_label -= y_label_separation;
|
||||
y += y_sep;
|
||||
}
|
||||
|
||||
/* draw strings on the x axis */
|
||||
/* Draw x-axis labels and markings for graphs based on financial quarters and years. */
|
||||
if (this->month != 0xFF) {
|
||||
x = r.left;
|
||||
y = r.bottom + 2;
|
||||
@@ -384,26 +386,28 @@ protected:
|
||||
Year year = this->year;
|
||||
for (int i = 0; i < this->num_on_x_axis; i++) {
|
||||
SetDParam(0, month + STR_MONTH_ABBREV_JAN);
|
||||
SetDParam(1, month + STR_MONTH_ABBREV_JAN + 2);
|
||||
SetDParam(2, year);
|
||||
DrawStringMultiLine(x, x + x_sep, y, this->height, month == 0 ? STR_GRAPH_X_LABEL_MONTH_YEAR : STR_GRAPH_X_LABEL_MONTH, graph_axis_label_colour);
|
||||
SetDParam(1, year);
|
||||
DrawStringMultiLine(x, x + x_sep, y, this->height, month == 0 ? STR_GRAPH_X_LABEL_MONTH_YEAR : STR_GRAPH_X_LABEL_MONTH, GRAPH_AXIS_LABEL_COLOUR, SA_LEFT);
|
||||
|
||||
month += 3;
|
||||
if (month >= 12) {
|
||||
month = 0;
|
||||
year++;
|
||||
|
||||
/* Draw a lighter grid line between years. Top and bottom adjustments ensure we don't draw over top and bottom horizontal grid lines. */
|
||||
GfxFillRect(x + x_sep, r.top + 1, x + x_sep, r.bottom - 1, GRAPH_YEAR_LINE_COLOUR);
|
||||
}
|
||||
x += x_sep;
|
||||
}
|
||||
} else {
|
||||
/* Draw the label under the data point rather than on the grid line. */
|
||||
/* Draw x-axis labels for graphs not based on quarterly performance (cargo payment rates). */
|
||||
x = r.left;
|
||||
y = r.bottom + 2;
|
||||
uint16 label = this->x_values_start;
|
||||
|
||||
for (int i = 0; i < this->num_on_x_axis; i++) {
|
||||
SetDParam(0, label);
|
||||
DrawString(x + 1, x + x_sep - 1, y, STR_GRAPH_Y_LABEL_NUMBER, graph_axis_label_colour, SA_HOR_CENTER);
|
||||
DrawString(x + 1, x + x_sep - 1, y, STR_GRAPH_Y_LABEL_NUMBER, GRAPH_AXIS_LABEL_COLOUR, SA_HOR_CENTER);
|
||||
|
||||
label += this->x_values_increment;
|
||||
x += x_sep;
|
||||
@@ -493,13 +497,13 @@ public:
|
||||
|
||||
uint x_label_width = 0;
|
||||
|
||||
/* Draw x-axis labels and markings for graphs based on financial quarters and years. */
|
||||
if (this->month != 0xFF) {
|
||||
byte month = this->month;
|
||||
Year year = this->year;
|
||||
for (int i = 0; i < this->num_on_x_axis; i++) {
|
||||
SetDParam(0, month + STR_MONTH_ABBREV_JAN);
|
||||
SetDParam(1, month + STR_MONTH_ABBREV_JAN + 2);
|
||||
SetDParam(2, year);
|
||||
SetDParam(1, year);
|
||||
x_label_width = std::max(x_label_width, GetStringBoundingBox(month == 0 ? STR_GRAPH_X_LABEL_MONTH_YEAR : STR_GRAPH_X_LABEL_MONTH).width);
|
||||
|
||||
month += 3;
|
||||
@@ -509,7 +513,7 @@ public:
|
||||
}
|
||||
}
|
||||
} else {
|
||||
/* Draw the label under the data point rather than on the grid line. */
|
||||
/* Draw x-axis labels for graphs not based on quarterly performance (cargo payment rates). */
|
||||
SetDParamMaxValue(0, this->x_values_start + this->num_on_x_axis * this->x_values_increment, 0, FS_SMALL);
|
||||
x_label_width = GetStringBoundingBox(STR_GRAPH_Y_LABEL_NUMBER).width;
|
||||
}
|
||||
|
||||
12
src/ini.cpp
12
src/ini.cpp
@@ -92,17 +92,15 @@ bool IniFile::SaveToDisk(const std::string &filename)
|
||||
#endif
|
||||
|
||||
#if defined(_WIN32)
|
||||
/* _tcsncpy = strcpy is TCHAR is char, but isn't when TCHAR is wchar. */
|
||||
# undef strncpy
|
||||
/* Allocate space for one more \0 character. */
|
||||
TCHAR tfilename[MAX_PATH + 1], tfile_new[MAX_PATH + 1];
|
||||
_tcsncpy(tfilename, OTTD2FS(filename.c_str()), MAX_PATH);
|
||||
_tcsncpy(tfile_new, OTTD2FS(file_new.c_str()), MAX_PATH);
|
||||
wchar_t tfilename[MAX_PATH + 1], tfile_new[MAX_PATH + 1];
|
||||
wcsncpy(tfilename, OTTD2FS(filename.c_str()), MAX_PATH);
|
||||
wcsncpy(tfile_new, OTTD2FS(file_new.c_str()), MAX_PATH);
|
||||
/* SHFileOperation wants a double '\0' terminated string. */
|
||||
tfilename[MAX_PATH - 1] = '\0';
|
||||
tfile_new[MAX_PATH - 1] = '\0';
|
||||
tfilename[_tcslen(tfilename) + 1] = '\0';
|
||||
tfile_new[_tcslen(tfile_new) + 1] = '\0';
|
||||
tfilename[wcslen(tfilename) + 1] = '\0';
|
||||
tfile_new[wcslen(tfile_new) + 1] = '\0';
|
||||
|
||||
/* Rename file without any user confirmation. */
|
||||
SHFILEOPSTRUCT shfopt;
|
||||
|
||||
@@ -570,8 +570,8 @@ STR_MONTH_DEC :Desember
|
||||
# Graph window
|
||||
STR_GRAPH_KEY_BUTTON :{BLACK}Sleutel
|
||||
STR_GRAPH_KEY_TOOLTIP :{BLACK}Wys sleutel van grafieke
|
||||
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}{} {STRING}
|
||||
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{} {STRING}{}{NUM}
|
||||
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}
|
||||
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{}{NUM}
|
||||
STR_GRAPH_Y_LABEL :{TINY_FONT}{STRING}
|
||||
STR_GRAPH_Y_LABEL_NUMBER :{TINY_FONT}{COMMA}
|
||||
|
||||
|
||||
@@ -539,8 +539,8 @@ STR_MONTH_DEC :ديسمبر
|
||||
# Graph window
|
||||
STR_GRAPH_KEY_BUTTON :{BLACK}مفتاح
|
||||
STR_GRAPH_KEY_TOOLTIP :{BLACK}اظهار مفتاح الرسم البياني
|
||||
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}{} {STRING}
|
||||
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{} {STRING}{}{NUM}
|
||||
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}
|
||||
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{}{NUM}
|
||||
STR_GRAPH_Y_LABEL :{TINY_FONT}{STRING}
|
||||
STR_GRAPH_Y_LABEL_NUMBER :{TINY_FONT}{COMMA}
|
||||
|
||||
|
||||
@@ -556,8 +556,8 @@ STR_MONTH_DEC :Abendua
|
||||
# Graph window
|
||||
STR_GRAPH_KEY_BUTTON :{BLACK}Giltza
|
||||
STR_GRAPH_KEY_TOOLTIP :{BLACK}Erakutsi giltza grafikoetan
|
||||
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}{} {STRING}
|
||||
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{} {STRING}{}{NUM}
|
||||
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}
|
||||
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{}{NUM}
|
||||
STR_GRAPH_Y_LABEL :{TINY_FONT}{STRING}
|
||||
STR_GRAPH_Y_LABEL_NUMBER :{TINY_FONT}{COMMA}
|
||||
|
||||
|
||||
@@ -879,8 +879,8 @@ STR_MONTH_DEC :Сьнежан
|
||||
# Graph window
|
||||
STR_GRAPH_KEY_BUTTON :{BLACK}Леґенда
|
||||
STR_GRAPH_KEY_TOOLTIP :{BLACK}Паказаць леґенду да ґрафікаў
|
||||
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}{} {STRING}
|
||||
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{} {STRING}{}{NUM}
|
||||
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}
|
||||
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{}{NUM}
|
||||
STR_GRAPH_Y_LABEL :{TINY_FONT}{STRING}
|
||||
STR_GRAPH_Y_LABEL_NUMBER :{TINY_FONT}{COMMA}
|
||||
|
||||
|
||||
@@ -570,8 +570,8 @@ STR_MONTH_DEC :Dezembro
|
||||
# Graph window
|
||||
STR_GRAPH_KEY_BUTTON :{BLACK}Chave
|
||||
STR_GRAPH_KEY_TOOLTIP :{BLACK}Exibir chave aos gráficos
|
||||
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}{} {STRING}
|
||||
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{} {STRING}{} {NUM}
|
||||
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}
|
||||
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{}{NUM}
|
||||
STR_GRAPH_Y_LABEL :{TINY_FONT}{STRING}
|
||||
STR_GRAPH_Y_LABEL_NUMBER :{TINY_FONT}{COMMA}
|
||||
|
||||
|
||||
@@ -562,8 +562,8 @@ STR_MONTH_DEC :Декемвр
|
||||
# Graph window
|
||||
STR_GRAPH_KEY_BUTTON :{BLACK}Легенда
|
||||
STR_GRAPH_KEY_TOOLTIP :{BLACK}Покажи легендата на графиката
|
||||
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}{} {STRING}
|
||||
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{} {STRING}{}{NUM}
|
||||
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}
|
||||
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{}{NUM}
|
||||
STR_GRAPH_Y_LABEL :{TINY_FONT}{STRING}
|
||||
STR_GRAPH_Y_LABEL_NUMBER :{TINY_FONT}{COMMA}
|
||||
|
||||
|
||||
@@ -578,8 +578,8 @@ STR_MONTH_DEC :Desembre
|
||||
# Graph window
|
||||
STR_GRAPH_KEY_BUTTON :{BLACK}Llegenda
|
||||
STR_GRAPH_KEY_TOOLTIP :{BLACK}Mostra la llegenda dels gràfics
|
||||
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}{} {STRING}
|
||||
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{} {STRING}{}{NUM}
|
||||
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}
|
||||
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{}{NUM}
|
||||
STR_GRAPH_Y_LABEL :{TINY_FONT}{STRING}
|
||||
STR_GRAPH_Y_LABEL_NUMBER :{TINY_FONT}{COMMA}
|
||||
|
||||
@@ -948,6 +948,7 @@ STR_GAME_OPTIONS_CURRENCY_NTD :Nou dòlar taiw
|
||||
STR_GAME_OPTIONS_CURRENCY_CNY :Renminbi xinès (CNY)
|
||||
STR_GAME_OPTIONS_CURRENCY_HKD :Dòlar de Hong Kong (HKD)
|
||||
STR_GAME_OPTIONS_CURRENCY_INR :Rúpia índia (INR)
|
||||
STR_GAME_OPTIONS_CURRENCY_IDR :Rupia indonèsia (IDR)
|
||||
############ end of currency region
|
||||
|
||||
STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_LEFT :Conducció per l'esquerra
|
||||
|
||||
@@ -665,8 +665,8 @@ STR_MONTH_DEC :Prosinac
|
||||
# Graph window
|
||||
STR_GRAPH_KEY_BUTTON :{BLACK}Ključ
|
||||
STR_GRAPH_KEY_TOOLTIP :{BLACK}Pokaži ključeve na grafikonima
|
||||
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}{} {STRING}
|
||||
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{} {STRING}{}{NUM}
|
||||
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}
|
||||
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{}{NUM}
|
||||
STR_GRAPH_Y_LABEL :{TINY_FONT}{STRING}
|
||||
STR_GRAPH_Y_LABEL_NUMBER :{TINY_FONT}{COMMA}
|
||||
|
||||
|
||||
@@ -269,6 +269,7 @@ STR_COLOUR_DEFAULT :Výchozí
|
||||
STR_UNITS_VELOCITY_IMPERIAL :{COMMA}{NBSP}m{P íle íle il}/h
|
||||
STR_UNITS_VELOCITY_METRIC :{COMMA}{NBSP}km/h
|
||||
STR_UNITS_VELOCITY_SI :{COMMA}{NBSP}m/s
|
||||
STR_UNITS_VELOCITY_GAMEUNITS :{DECIMAL}{NBSP}políčka/den
|
||||
|
||||
STR_UNITS_POWER_IMPERIAL :{COMMA}{NBSP}hp
|
||||
STR_UNITS_POWER_METRIC :{COMMA}{NBSP}hp
|
||||
@@ -361,7 +362,7 @@ STR_SORT_BY_PRODUCTION :produkce
|
||||
STR_SORT_BY_TYPE :typu
|
||||
STR_SORT_BY_TRANSPORTED :přepravy
|
||||
STR_SORT_BY_NUMBER :čísla
|
||||
STR_SORT_BY_PROFIT_LAST_YEAR :hrubého zisku minulý rok
|
||||
STR_SORT_BY_PROFIT_LAST_YEAR :hrubého zisku loňský rok
|
||||
STR_SORT_BY_PROFIT_THIS_YEAR :hrubého zisku za tento rok
|
||||
STR_SORT_BY_PROFIT_LIFETIME :hrubého zisku po celou dobu
|
||||
STR_SORT_BY_AGE :stáří
|
||||
@@ -390,8 +391,15 @@ STR_SORT_BY_CARGO_CAPACITY :přepravní kap
|
||||
STR_SORT_BY_RANGE :dosah
|
||||
STR_SORT_BY_POPULATION :Podle populace
|
||||
STR_SORT_BY_RATING :Hodnocení
|
||||
STR_SORT_BY_NUM_VEHICLES :Počet vozidel
|
||||
STR_SORT_BY_TOTAL_PROFIT_LAST_YEAR :Letošní celkový zisk
|
||||
STR_SORT_BY_TOTAL_PROFIT_THIS_YEAR :Celkový letošní zisk
|
||||
STR_SORT_BY_AVERAGE_PROFIT_LAST_YEAR :Loňský průměrný zisk
|
||||
STR_SORT_BY_AVERAGE_PROFIT_THIS_YEAR :Průměrný letošní zisk
|
||||
|
||||
# Group by options for vehicle list
|
||||
STR_GROUP_BY_NONE :Neseskupovat
|
||||
STR_GROUP_BY_SHARED_ORDERS :Sdílené příkazy
|
||||
|
||||
# Tooltips for the main toolbar
|
||||
STR_TOOLBAR_TOOLTIP_PAUSE_GAME :{BLACK}Pauza
|
||||
@@ -662,8 +670,8 @@ STR_MONTH_DEC.gen :prosince
|
||||
# Graph window
|
||||
STR_GRAPH_KEY_BUTTON :{BLACK}Legenda
|
||||
STR_GRAPH_KEY_TOOLTIP :{BLACK}Zobrazit legendu ke grafům
|
||||
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}{} {STRING}
|
||||
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{} {STRING}{}{NUM}
|
||||
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}
|
||||
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{}{NUM}
|
||||
STR_GRAPH_Y_LABEL :{TINY_FONT}{STRING}
|
||||
STR_GRAPH_Y_LABEL_NUMBER :{TINY_FONT}{COMMA}
|
||||
|
||||
@@ -833,6 +841,7 @@ STR_SMALLMAP_LEGENDA_DOCK :{TINY_FONT}{BLA
|
||||
STR_SMALLMAP_LEGENDA_ROUGH_LAND :{TINY_FONT}{BLACK}Hrbolatá zem
|
||||
STR_SMALLMAP_LEGENDA_GRASS_LAND :{TINY_FONT}{BLACK}Travnatá zem
|
||||
STR_SMALLMAP_LEGENDA_BARE_LAND :{TINY_FONT}{BLACK}Holá zem
|
||||
STR_SMALLMAP_LEGENDA_RAINFOREST :{TINY_FONT}{BLACK}Deštný prales
|
||||
STR_SMALLMAP_LEGENDA_FIELDS :{TINY_FONT}{BLACK}Pole
|
||||
STR_SMALLMAP_LEGENDA_TREES :{TINY_FONT}{BLACK}Stromy
|
||||
STR_SMALLMAP_LEGENDA_ROCKS :{TINY_FONT}{BLACK}Kameny
|
||||
@@ -864,8 +873,8 @@ STR_SMALLMAP_TOOLTIP_ENABLE_ALL_CARGOS :{BLACK}Zobraz v
|
||||
# Status bar messages
|
||||
STR_STATUSBAR_TOOLTIP_SHOW_LAST_NEWS :{BLACK}Ukázat poslední zprávu nebo článek
|
||||
STR_STATUSBAR_COMPANY_NAME :{SILVER}- - {COMPANY} - -
|
||||
STR_STATUSBAR_PAUSED :{YELLOW}* * PAUZA * *
|
||||
STR_STATUSBAR_PAUSED_LINK_GRAPH :{ORANGE}* * PAUZA (čekání na aktualizaci propojení grafu) * *
|
||||
STR_STATUSBAR_PAUSED :{YELLOW}* * PAUZA * *
|
||||
STR_STATUSBAR_PAUSED_LINK_GRAPH :{ORANGE}* * POZASTAVENO (čekám na aktualizaci grafu spojení) * *
|
||||
STR_STATUSBAR_AUTOSAVE :{RED}Automatické ukládání
|
||||
STR_STATUSBAR_SAVING_GAME :{RED}* * HRA SE UKLÁDÁ * *
|
||||
|
||||
@@ -1033,6 +1042,7 @@ STR_GAME_OPTIONS_CURRENCY_NTD :Nový taiwansk
|
||||
STR_GAME_OPTIONS_CURRENCY_CNY :Čínský renminbi (CNY)
|
||||
STR_GAME_OPTIONS_CURRENCY_HKD :Hongkongský dolar (HKD)
|
||||
STR_GAME_OPTIONS_CURRENCY_INR :Indická rupie (INR)
|
||||
STR_GAME_OPTIONS_CURRENCY_IDR :Indonéská rupie (IDR)
|
||||
############ end of currency region
|
||||
|
||||
STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_LEFT :Vlevo
|
||||
@@ -1089,6 +1099,7 @@ STR_GAME_OPTIONS_RESOLUTION_OTHER :jiné
|
||||
STR_GAME_OPTIONS_GUI_ZOOM_FRAME :{BLACK}Velikost rozhraní
|
||||
STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_TOOLTIP :{BLACK}Zvolit velikost prvků uživatelského rozhraní
|
||||
|
||||
STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_AUTO :(zjistit automaticky)
|
||||
STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_NORMAL :Normální
|
||||
STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_2X_ZOOM :Dvojnásobná velikost
|
||||
STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_4X_ZOOM :Čtyřnásobná velikost
|
||||
@@ -1096,6 +1107,7 @@ STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_4X_ZOOM :Čtyřnásobná
|
||||
STR_GAME_OPTIONS_FONT_ZOOM :{BLACK}Velikost písma
|
||||
STR_GAME_OPTIONS_FONT_ZOOM_DROPDOWN_TOOLTIP :{BLACK}Zvolit velikost písma
|
||||
|
||||
STR_GAME_OPTIONS_FONT_ZOOM_DROPDOWN_AUTO :(zjistit automaticky)
|
||||
STR_GAME_OPTIONS_FONT_ZOOM_DROPDOWN_NORMAL :Běžné
|
||||
STR_GAME_OPTIONS_FONT_ZOOM_DROPDOWN_2X_ZOOM :Dvojnásobná velikost
|
||||
STR_GAME_OPTIONS_FONT_ZOOM_DROPDOWN_4X_ZOOM :Čtyřnásobná velikost
|
||||
@@ -1662,6 +1674,8 @@ STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS :Nevypínat po p
|
||||
STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS_HELPTEXT :Nechat nástroje pro stavbu mostů, tunelů, atd. po použití otevřené
|
||||
STR_CONFIG_SETTING_EXPENSES_LAYOUT :Zobrazovat odděleně příjmy a výdaje v přehledu financí: {STRING}
|
||||
STR_CONFIG_SETTING_EXPENSES_LAYOUT_HELPTEXT :Určuje rozložení okna s firemními výdaji
|
||||
STR_CONFIG_SETTING_AUTO_REMOVE_SIGNALS :Automaticky odstraňovat návěstidla během výstavby železnice: {STRING}
|
||||
STR_CONFIG_SETTING_AUTO_REMOVE_SIGNALS_HELPTEXT :Automaticky odstraňovat návěstidla, pokud překáží během výstavby železnice. Poznámka: Může způsobit kolize vlaků.
|
||||
|
||||
STR_CONFIG_SETTING_ENABLE_BUILD_RIVER :Povolit stavbu řek: {STRING}
|
||||
STR_CONFIG_SETTING_ENABLE_BUILD_RIVER_HELPTEXT :Povolí stavbu řek mimo editor scénáře
|
||||
@@ -1796,6 +1810,11 @@ STR_CONFIG_SETTING_ENDING_YEAR :Rok vyhodnocen
|
||||
STR_CONFIG_SETTING_ENDING_YEAR_HELPTEXT :Rok, kdy je ve hře uzavřeno hodnocení společností. Na konci tohoto roku je zaznamenáno skóre společností a je zobrazena tabulka nejlepších společností, ale ve hře je možné pokračovat i dál.{}Pokud je nastaven rok před rokem počátku hry, tabulka s hodnocením nebude zobrazena nikdy.
|
||||
STR_CONFIG_SETTING_ENDING_YEAR_VALUE :{NUM}
|
||||
STR_CONFIG_SETTING_ENDING_YEAR_ZERO :Nikdy
|
||||
STR_CONFIG_SETTING_ECONOMY_TYPE :Druh ekonomiky: {STRING}
|
||||
STR_CONFIG_SETTING_ECONOMY_TYPE_HELPTEXT :Plynulá ekonomika dělá změny produkce častěji, ale v menších krocích. Zmražená ekonomika zastaví změny v produkci a zavírání průmyslu. Toto nastavení nemusí mít vliv na typy průmyslu vycházející z "NewGRF".
|
||||
STR_CONFIG_SETTING_ECONOMY_TYPE_ORIGINAL :Původní
|
||||
STR_CONFIG_SETTING_ECONOMY_TYPE_SMOOTH :Plynulá
|
||||
STR_CONFIG_SETTING_ECONOMY_TYPE_FROZEN :Zmražená
|
||||
STR_CONFIG_SETTING_ALLOW_SHARES :Povolit kupování podílu z ostatních společností: {STRING}
|
||||
STR_CONFIG_SETTING_ALLOW_SHARES_HELPTEXT :Pokud je zapnuto, umožní kupovaní akcií ve společnostech. Akcie jsou k dispozici pouze u společností od určitého stáří
|
||||
STR_CONFIG_SETTING_MIN_YEARS_FOR_SHARES :Minimální stáří společnosti pro obchod s akciemi: {STRING}
|
||||
@@ -1853,6 +1872,10 @@ STR_CONFIG_SETTING_TOWN_CARGO_FACTOR_HELPTEXT :Cestující, po
|
||||
|
||||
STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT :Umístění stromů ve hře: {STRING}
|
||||
STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_HELPTEXT :Náhodné umisťování stromů během hry. Může ovlivnit průmysl závisející na růstu stromů, například pily.
|
||||
STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_NO_SPREAD :Růst, ale nerozšiřovat{RED}(rozbije pilu)
|
||||
STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_SPREAD_RAINFOREST :Růst, ale rozšiřovat pouze v deštných pralesech
|
||||
STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_SPREAD_ALL :Růst a rozšiřovat všude
|
||||
STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_NO_GROWTH_NO_SPREAD :Nerůst, nerozšiřovat {RED}(rozbije pilu)
|
||||
|
||||
STR_CONFIG_SETTING_TREES_AROUND_SNOWLINE :Upravené umístění arktických stromů: {STRING}
|
||||
STR_CONFIG_SETTING_TREES_AROUND_SNOWLINE_HELPTEXT :Upraví umístění stromů kolem sněhové čáry v sub-arktickém klimatu. Stromy nad sněhovou čarou řídnou. Stromy jsou směsí arktických a mírných těsně pod sněhovou čarou. Níže jsou už pouze stromy mírného pásma.
|
||||
@@ -1952,6 +1975,7 @@ STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_HELPTEXT :Kdykoliv se ryc
|
||||
STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_IMPERIAL :Imperiální (mph)
|
||||
STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_METRIC :Metrické (km/h)
|
||||
STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_SI :SI (m/s)
|
||||
STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_GAMEUNITS :Herní jednotky (políčko/den)
|
||||
|
||||
STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER :Jednotky výkonu vozidla: {STRING}
|
||||
STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_HELPTEXT :Kdykoliv se výkon vozidla zobrazí v uživatelském rozhraní, bude ve zvolených jednotkách
|
||||
@@ -2143,6 +2167,7 @@ STR_INTRO_TRANSLATION :{BLACK}Tento p
|
||||
|
||||
# Quit window
|
||||
STR_QUIT_CAPTION :{WHITE}Konec
|
||||
STR_QUIT_ARE_YOU_SURE_YOU_WANT_TO_EXIT_OPENTTD :{YELLOW}Opravdu chceš ukončit OpenTTD?
|
||||
STR_QUIT_YES :{BLACK}Ano
|
||||
STR_QUIT_NO :{BLACK}Ne
|
||||
|
||||
@@ -2154,6 +2179,7 @@ STR_ABANDON_SCENARIO_QUERY :{YELLOW}Určite
|
||||
# Cheat window
|
||||
STR_CHEATS :{WHITE}Cheaty
|
||||
STR_CHEATS_TOOLTIP :{BLACK}Zaškrtávací políčka ukazují, jestli jsi tento cheat už použil
|
||||
STR_CHEATS_NOTE :{BLACK}Poznámka: jakékoliv použití těchto nastavení bude zaznamenáno v uložené hře
|
||||
STR_CHEAT_MONEY :{LTBLUE}Navýšit peníze o {CURRENCY_LONG}
|
||||
STR_CHEAT_CHANGE_COMPANY :{LTBLUE}Hrát jako společnost: {ORANGE}{COMMA}
|
||||
STR_CHEAT_EXTRA_DYNAMITE :{LTBLUE}Magický buldozer (odstraní průmysl a další objekty): {ORANGE}{STRING}
|
||||
@@ -2309,6 +2335,10 @@ STR_NETWORK_SERVER_LIST_JOIN_GAME :{BLACK}Přidat
|
||||
STR_NETWORK_SERVER_LIST_REFRESH :{BLACK}Obnovit info
|
||||
STR_NETWORK_SERVER_LIST_REFRESH_TOOLTIP :{BLACK}Znovu načte informace o serveru
|
||||
|
||||
STR_NETWORK_SERVER_LIST_SEARCH_SERVER_INTERNET :{BLACK}Prohledat internet
|
||||
STR_NETWORK_SERVER_LIST_SEARCH_SERVER_INTERNET_TOOLTIP :{BLACK}Hledat veřejné servery v internetu
|
||||
STR_NETWORK_SERVER_LIST_SEARCH_SERVER_LAN :{BLACK}Prohledat místní siť
|
||||
STR_NETWORK_SERVER_LIST_SEARCH_SERVER_LAN_TOOLTIP :{BLACK}Hledat servery v místní síti
|
||||
STR_NETWORK_SERVER_LIST_ADD_SERVER :{BLACK}Přidat server
|
||||
STR_NETWORK_SERVER_LIST_ADD_SERVER_TOOLTIP :{BLACK}Přidá server do seznamu, ve kterém se budou hledat běžící hry
|
||||
STR_NETWORK_SERVER_LIST_START_SERVER :{BLACK}Spustit server
|
||||
@@ -2533,14 +2563,14 @@ STR_NETWORK_SERVER_MESSAGE_GAME_PAUSED :Hra pozastavena
|
||||
STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_1 :Hra stále pozastavena ({STRING})
|
||||
STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_2 :Hra stále pozastavena ({STRING}, {STRING})
|
||||
STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_3 :Hra stále pozastavena ({STRING}, {STRING}, {STRING})
|
||||
STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_4 :Hra stále pozastavena ({STRING}, {STRING}, {STRING}, {STRING})
|
||||
STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_5 :Hra stále pozastavena ({STRING}, {STRING}, {STRING}, {STRING}, {STRING})
|
||||
STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_4 :Hra je stále pozastavena ({STRING}, {STRING}, {STRING}, {STRING})
|
||||
STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_5 :Hra je stále pozastavena ({STRING}, {STRING}, {STRING}, {STRING}, {STRING})
|
||||
STR_NETWORK_SERVER_MESSAGE_GAME_UNPAUSED :Hra obnovena ({STRING})
|
||||
STR_NETWORK_SERVER_MESSAGE_GAME_REASON_NOT_ENOUGH_PLAYERS :nedostatek hráčů
|
||||
STR_NETWORK_SERVER_MESSAGE_GAME_REASON_CONNECTING_CLIENTS :připojují se klienti
|
||||
STR_NETWORK_SERVER_MESSAGE_GAME_REASON_MANUAL :ručně
|
||||
STR_NETWORK_SERVER_MESSAGE_GAME_REASON_GAME_SCRIPT :herní skript
|
||||
STR_NETWORK_SERVER_MESSAGE_GAME_REASON_LINK_GRAPH :čekání na aktualizaci propojení grafu
|
||||
STR_NETWORK_SERVER_MESSAGE_GAME_REASON_LINK_GRAPH :čekám na aktualizaci grafu spojení
|
||||
############ End of leave-in-this-order
|
||||
STR_NETWORK_MESSAGE_CLIENT_LEAVING :odpojování
|
||||
STR_NETWORK_MESSAGE_CLIENT_JOINED :*** {STRING} se připojil do hry
|
||||
@@ -2552,7 +2582,7 @@ STR_NETWORK_MESSAGE_CLIENT_LEFT :*** {STRING} op
|
||||
STR_NETWORK_MESSAGE_NAME_CHANGE :*** {STRING} si mění jméno na {STRING}
|
||||
STR_NETWORK_MESSAGE_GIVE_MONEY_RECEIVE :*** {STRING} poslal(a) tvé společnosti {2:CURRENCY_LONG}
|
||||
STR_NETWORK_MESSAGE_GAVE_MONEY_AWAY :*** Dal(a) jsi {1:STRING} {2:CURRENCY_LONG}
|
||||
STR_NETWORK_MESSAGE_GIVE_MONEY :*** {STRING} dal {1:STRING} {2:CURRENCY_LONG}
|
||||
STR_NETWORK_MESSAGE_GIVE_MONEY :*** {STRING} poslal(a) {2:CURRENCY_LONG} společnosti {1:STRING}
|
||||
STR_NETWORK_MESSAGE_MONEY_GIVE_SRC_DESCRIPTION :{STRING} ({COMPANY})
|
||||
STR_NETWORK_MESSAGE_SERVER_SHUTDOWN :{WHITE}Server ukončil relaci
|
||||
STR_NETWORK_MESSAGE_SERVER_REBOOT :{WHITE}Server se restartuje...{}Počkejte prosím...
|
||||
@@ -2674,6 +2704,7 @@ STR_JOIN_WAYPOINT_CAPTION :{WHITE}Spojová
|
||||
STR_JOIN_WAYPOINT_CREATE_SPLITTED_WAYPOINT :{YELLOW}Postavit samostatné směrování
|
||||
|
||||
# Generic toolbar
|
||||
STR_TOOLBAR_DISABLED_NO_VEHICLE_AVAILABLE :{BLACK}Zakázáno, protože pro tento typ infrastruktury aktuálně nejsou dostupná žádná vozidla
|
||||
|
||||
# Rail construction toolbar
|
||||
STR_RAIL_TOOLBAR_RAILROAD_CONSTRUCTION_CAPTION :Výstavba železnice
|
||||
@@ -3135,6 +3166,12 @@ STR_TREES_RANDOM_TYPE :{BLACK}Různé
|
||||
STR_TREES_RANDOM_TYPE_TOOLTIP :{BLACK}Umístit nahodné stromy. Stisknutý Shift pro zobrazení odhadu ceny
|
||||
STR_TREES_RANDOM_TREES_BUTTON :{BLACK}Náhodné stromy
|
||||
STR_TREES_RANDOM_TREES_TOOLTIP :{BLACK}Umístit stromy náhodně po krajině
|
||||
STR_TREES_MODE_NORMAL_BUTTON :{BLACK}Normální
|
||||
STR_TREES_MODE_NORMAL_TOOLTIP :{BLACK}Vysadit jednotlivé stromy tažením přes krajinu.
|
||||
STR_TREES_MODE_FOREST_SM_BUTTON :{BLACK}Háj
|
||||
STR_TREES_MODE_FOREST_SM_TOOLTIP :{BLACK}Vysadit malé lesy tažením přes krajinu
|
||||
STR_TREES_MODE_FOREST_LG_BUTTON :{BLACK}Les
|
||||
STR_TREES_MODE_FOREST_LG_TOOLTIP :{BLACK}Vysadit velké lesy tažením přes krajinu
|
||||
|
||||
# Land generation window (SE)
|
||||
STR_TERRAFORM_TOOLBAR_LAND_GENERATION_CAPTION :{WHITE}Generovat zemi
|
||||
@@ -3185,12 +3222,18 @@ STR_FOUND_TOWN_SELECT_LAYOUT_RANDOM :{BLACK}Náhodn
|
||||
# Fund new industry window
|
||||
STR_FUND_INDUSTRY_CAPTION :{WHITE}Investovat do průmyslu
|
||||
STR_FUND_INDUSTRY_SELECTION_TOOLTIP :{BLACK}Vyber si vhodnou továrnu ze seznamu
|
||||
STR_FUND_INDUSTRY_MANY_RANDOM_INDUSTRIES :Hodně náhodného průmyslu
|
||||
STR_FUND_INDUSTRY_MANY_RANDOM_INDUSTRIES :{BLACK}Vytvořit náhodný průmysl
|
||||
STR_FUND_INDUSTRY_MANY_RANDOM_INDUSTRIES_TOOLTIP :{BLACK}Pokryje krajinu náhodným průmyslem
|
||||
STR_FUND_INDUSTRY_MANY_RANDOM_INDUSTRIES_CAPTION :{WHITE}Vytvořit náhodný průmysl
|
||||
STR_FUND_INDUSTRY_MANY_RANDOM_INDUSTRIES_QUERY :{YELLOW}Opravdu chceš vytvořit tolik náhodného průmyslu?
|
||||
STR_FUND_INDUSTRY_INDUSTRY_BUILD_COST :{BLACK}Cena: {YELLOW}{CURRENCY_LONG}
|
||||
STR_FUND_INDUSTRY_PROSPECT_NEW_INDUSTRY :{BLACK}Hledat
|
||||
STR_FUND_INDUSTRY_BUILD_NEW_INDUSTRY :{BLACK}Postavit
|
||||
STR_FUND_INDUSTRY_FUND_NEW_INDUSTRY :{BLACK}Financovat
|
||||
STR_FUND_INDUSTRY_REMOVE_ALL_INDUSTRIES :{BLACK}Odstranit veškerý průmysl
|
||||
STR_FUND_INDUSTRY_REMOVE_ALL_INDUSTRIES_TOOLTIP :{BLACK}Odstranit veškerý aktuálně přítomný průmysl
|
||||
STR_FUND_INDUSTRY_REMOVE_ALL_INDUSTRIES_CAPTION :{WHITE}Odstranit veškerý průmysl
|
||||
STR_FUND_INDUSTRY_REMOVE_ALL_INDUSTRIES_QUERY :{YELLOW}Opravdu chceš odstranit veškerý průmysl?
|
||||
|
||||
# Industry cargoes window
|
||||
STR_INDUSTRY_CARGOES_INDUSTRY_CAPTION :{WHITE}Průmyslový řetěz pro průmysl {STRING}
|
||||
@@ -3217,6 +3260,7 @@ STR_INDUSTRY_CARGOES_SELECT_INDUSTRY_TOOLTIP :{BLACK}Vyber pr
|
||||
|
||||
# Land area window
|
||||
STR_LAND_AREA_INFORMATION_CAPTION :{WHITE}Informace o uzemí
|
||||
STR_LAND_AREA_INFORMATION_LOCATION_TOOLTIP :{BLACK}Vystředit pohled na políčko. Ctrl+Klik otevře nové okno náhledu
|
||||
STR_LAND_AREA_INFORMATION_COST_TO_CLEAR_N_A :{BLACK}Cena za vyčištění: {LTBLUE}N/A
|
||||
STR_LAND_AREA_INFORMATION_COST_TO_CLEAR :{BLACK}Cena za vyčištění: {RED}{CURRENCY_LONG}
|
||||
STR_LAND_AREA_INFORMATION_REVENUE_WHEN_CLEARED :{BLACK}Příjem za odklizení: {LTBLUE}{CURRENCY_LONG}
|
||||
@@ -3426,6 +3470,8 @@ STR_SAVELOAD_DETAIL_GRFSTATUS :{SILVER}Grafiky
|
||||
STR_SAVELOAD_FILTER_TITLE :{BLACK}Filtr:
|
||||
STR_SAVELOAD_OVERWRITE_TITLE :{WHITE}Přepsat soubor
|
||||
STR_SAVELOAD_OVERWRITE_WARNING :{YELLOW}Opravdu chcete přepsat existující soubor?
|
||||
STR_SAVELOAD_DIRECTORY :{STRING} (Adresář)
|
||||
STR_SAVELOAD_PARENT_DIRECTORY :{STRING} (rodičovský adresář)
|
||||
|
||||
STR_SAVELOAD_OSKTITLE :{BLACK}Zadej jméno pro uloženou hru
|
||||
|
||||
@@ -3684,6 +3730,7 @@ STR_SIGN_LIST_MATCH_CASE_TOOLTIP :{BLACK}Přepne
|
||||
|
||||
# Sign window
|
||||
STR_EDIT_SIGN_CAPTION :{WHITE}Upravit text popisku
|
||||
STR_EDIT_SIGN_LOCATION_TOOLTIP :{BLACK}Vystředit pohled na značku. Ctrl+Klik otevře nový pohled
|
||||
STR_EDIT_SIGN_NEXT_SIGN_TOOLTIP :{BLACK}Na další návěstidlo
|
||||
STR_EDIT_SIGN_PREVIOUS_SIGN_TOOLTIP :{BLACK}Na předešlé návěstidlo
|
||||
|
||||
@@ -3767,10 +3814,10 @@ STR_GOALS_COMPANY_TITLE :{BLACK}Cíle sp
|
||||
STR_GOALS_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Klikni na cíl pro zaměření pohledu na průmysl/město/pole. Ctrl+kliknutí otevře nové okno s pohledem na průmyslu/městu/poli.
|
||||
|
||||
# Goal question window
|
||||
STR_GOAL_QUESTION_CAPTION_QUESTION :Dotaz
|
||||
STR_GOAL_QUESTION_CAPTION_INFORMATION :Informace
|
||||
STR_GOAL_QUESTION_CAPTION_WARNING :Varování
|
||||
STR_GOAL_QUESTION_CAPTION_ERROR :Chyba
|
||||
STR_GOAL_QUESTION_CAPTION_QUESTION :{BLACK}Dotaz
|
||||
STR_GOAL_QUESTION_CAPTION_INFORMATION :{BLACK}Informace
|
||||
STR_GOAL_QUESTION_CAPTION_WARNING :{BLACK}Varování
|
||||
STR_GOAL_QUESTION_CAPTION_ERROR :{YELLOW}Chyba
|
||||
|
||||
############ Start of Goal Question button list
|
||||
STR_GOAL_QUESTION_BUTTON_CANCEL :Zrušit
|
||||
@@ -3895,7 +3942,7 @@ STR_STATION_VIEW_CLOSE_AIRPORT_TOOLTIP :{BLACK}Zabráni
|
||||
STR_WAYPOINT_VIEW_CAPTION :{WHITE}{WAYPOINT}
|
||||
STR_WAYPOINT_VIEW_CENTER_TOOLTIP :{BLACK}Vystředit pohled na směrování. Ctrl+kliknutí otevře nový pohled
|
||||
STR_WAYPOINT_VIEW_CHANGE_WAYPOINT_NAME :{BLACK}Přejmenovat směrování
|
||||
STR_BUOY_VIEW_CENTER_TOOLTIP :{BLACK}Vystředit pohled na bójku. Ctrl+kliknutí otevře nový pohled
|
||||
STR_BUOY_VIEW_CENTER_TOOLTIP :{BLACK}Vystředit pohled na bójku. Ctrl+Klik otevře nové okno náhledu
|
||||
STR_BUOY_VIEW_CHANGE_BUOY_NAME :{BLACK}Přejmenovat bójku
|
||||
|
||||
STR_EDIT_WAYPOINT_NAME :{WHITE}Přejmenovat směrování
|
||||
@@ -3960,7 +4007,8 @@ STR_COMPANY_VIEW_RELOCATE_HQ :{BLACK}Přesíd
|
||||
STR_COMPANY_VIEW_RELOCATE_COMPANY_HEADQUARTERS :{BLACK}Sídlo společnosti můžeš vystavit jinde za 1{NBSP}% její hodnoty. Stisknutý Shift pro zobrazení odhadu ceny
|
||||
STR_COMPANY_VIEW_INFRASTRUCTURE_BUTTON :{BLACK}Detaily
|
||||
STR_COMPANY_VIEW_INFRASTRUCTURE_TOOLTIP :{BLACK}Zobrazit detaily a souhrny o infrastruktuře
|
||||
STR_COMPANY_VIEW_GIVE_MONEY_BUTTON :{BLACK}Darovat peníze
|
||||
STR_COMPANY_VIEW_GIVE_MONEY_BUTTON :{BLACK}Poslat peníze
|
||||
STR_COMPANY_VIEW_GIVE_MONEY_TOOLTIP :{BLACK}Poslat peníze této společnosti
|
||||
|
||||
STR_COMPANY_VIEW_NEW_FACE_BUTTON :{BLACK}Nový obličej
|
||||
STR_COMPANY_VIEW_NEW_FACE_TOOLTIP :{BLACK}Zvol nový obličej prezidenta
|
||||
@@ -3978,7 +4026,7 @@ STR_COMPANY_VIEW_SELL_SHARE_TOOLTIP :{BLACK}Prodat 2
|
||||
|
||||
STR_COMPANY_VIEW_COMPANY_NAME_QUERY_CAPTION :Jméno společnosti
|
||||
STR_COMPANY_VIEW_PRESIDENT_S_NAME_QUERY_CAPTION :Jméno prezidenta
|
||||
STR_COMPANY_VIEW_GIVE_MONEY_QUERY_CAPTION :Napiš částku, kterou chceš poskytnout
|
||||
STR_COMPANY_VIEW_GIVE_MONEY_QUERY_CAPTION :Zadej částku, kterou chceš poslat
|
||||
|
||||
STR_BUY_COMPANY_MESSAGE :{WHITE}Hledáme společnost, která převezme naši společnost.{}{}Chcete zakoupit {COMPANY} za {CURRENCY_LONG}?
|
||||
|
||||
@@ -4246,10 +4294,10 @@ STR_DEPOT_CLONE_ROAD_VEHICLE_DEPOT_INFO :{BLACK}Vytvoř
|
||||
STR_DEPOT_CLONE_SHIP_DEPOT_INFO :{BLACK}Vytvoří se kopie lodě. Klepni na toto tlačítko a pak na loď v nebo vně lodního depa. Se stisknutým Ctrl se budou sdílet příkazy. Stisknutý Shift pro zobrazení odhadu ceny
|
||||
STR_DEPOT_CLONE_AIRCRAFT_INFO_HANGAR_WINDOW :{BLACK}Vytvoří se kopie letadla. Klepni na toto tlačítko a pak na letadlo v nebo vně hangáru. Se stisknutým Ctrl se budou sdílet příkazy. Stisknutý Shift pro zobrazení odhadu ceny
|
||||
|
||||
STR_DEPOT_TRAIN_LOCATION_TOOLTIP :{BLACK}Vystředit pohled na vlakové depo. Ctrl+kliknutí otevře nový pohled
|
||||
STR_DEPOT_ROAD_VEHICLE_LOCATION_TOOLTIP :{BLACK}Vystředit pohled na garáž. Ctrl+kliknutí otevře nový pohled
|
||||
STR_DEPOT_SHIP_LOCATION_TOOLTIP :{BLACK}Vystředit pohled na lodní depo. Ctrl+kliknutí otevře nový pohled
|
||||
STR_DEPOT_AIRCRAFT_LOCATION_TOOLTIP :{BLACK}Vystředit pohled na hangár. Ctrl+kliknutí otevře nový pohled
|
||||
STR_DEPOT_TRAIN_LOCATION_TOOLTIP :{BLACK}Vystředit pohled na vlakové depo. Ctrl+Klik otevře nový pohled
|
||||
STR_DEPOT_ROAD_VEHICLE_LOCATION_TOOLTIP :{BLACK}Vystředit pohled na garáž. Ctrl+Klik otevře nové okno náhledu
|
||||
STR_DEPOT_SHIP_LOCATION_TOOLTIP :{BLACK}Vystředit pohled na lodní depo. Ctrl+Klik otevře nové okno náhledu
|
||||
STR_DEPOT_AIRCRAFT_LOCATION_TOOLTIP :{BLACK}Vystředit pohled na hangár. Ctrl+Klik otevře nové okno náhledu
|
||||
|
||||
STR_DEPOT_VEHICLE_ORDER_LIST_TRAIN_TOOLTIP :{BLACK}Ukázat seznam všech vlaků, které mají toto depo v jízdním řádu
|
||||
STR_DEPOT_VEHICLE_ORDER_LIST_ROAD_VEHICLE_TOOLTIP :{BLACK}Ukázat seznam všech silničních vozidel, které mají toto depo v jízdním řádu
|
||||
@@ -4342,6 +4390,11 @@ STR_REPLACE_REMOVE_WAGON_HELP :{BLACK}Funkce a
|
||||
# Vehicle view
|
||||
STR_VEHICLE_VIEW_CAPTION :{WHITE}{VEHICLE}
|
||||
|
||||
STR_VEHICLE_VIEW_TRAIN_CENTER_TOOLTIP :{BLACK}Vystředit pohled na vlak. Dvojklikem budeš následovat vlak v hlavním okně. Ctrl+Klik otevře nové okno náhledu
|
||||
STR_VEHICLE_VIEW_ROAD_VEHICLE_CENTER_TOOLTIP :{BLACK}Vystředit pohled na vozidlo. Dvojklikem budeš následovat vozidlo v hlavním okně. Ctrl+Klik otevře nové okno náhledu
|
||||
STR_VEHICLE_VIEW_SHIP_CENTER_TOOLTIP :{BLACK}Vystředit pohled na loď. Dvojklikem budeš loď následovat v hlavním okně. Ctrl+Klik otevře nový pohled
|
||||
STR_VEHICLE_VIEW_AIRCRAFT_CENTER_TOOLTIP :{BLACK}Vystředit pohled na letadlo. Dvojklikem budeš následovat letadlo v hlavním okně. Ctrl+Klik otevře nové okno náhledu
|
||||
|
||||
STR_VEHICLE_VIEW_TRAIN_SEND_TO_DEPOT_TOOLTIP :{BLACK}Poslat vlak do depa. Ctrl+kliknutí pouze pro provedení oprav
|
||||
STR_VEHICLE_VIEW_ROAD_VEHICLE_SEND_TO_DEPOT_TOOLTIP :{BLACK}Pošli vozidlo do garáže. Ctrl+kliknutí pouze provede opravy
|
||||
STR_VEHICLE_VIEW_SHIP_SEND_TO_DEPOT_TOOLTIP :{BLACK}Poslat loď do doku
|
||||
@@ -4372,7 +4425,12 @@ STR_VEHICLE_VIEW_ROAD_VEHICLE_SHOW_DETAILS_TOOLTIP :{BLACK}Ukaž de
|
||||
STR_VEHICLE_VIEW_SHIP_SHOW_DETAILS_TOOLTIP :{BLACK}Ukázat detaily lodi
|
||||
STR_VEHICLE_VIEW_AIRCRAFT_SHOW_DETAILS_TOOLTIP :{BLACK}Ukázat detaily letadla
|
||||
|
||||
STR_VEHICLE_VIEW_TRAIN_STATUS_START_STOP_TOOLTIP :{BLACK}Stávající činnost - klikni pro zastavení/rozjez vlaku
|
||||
STR_VEHICLE_VIEW_ROAD_VEHICLE_STATUS_START_STOP_TOOLTIP :{BLACK}Stávající činnost - klikni pro zastavení/rozjezd vozidla
|
||||
STR_VEHICLE_VIEW_SHIP_STATE_STATUS_STOP_TOOLTIP :{BLACK}Stávající činnost - klikni pro zastavení/rozjezd lodě
|
||||
STR_VEHICLE_VIEW_AIRCRAFT_STATUS_START_STOP_TOOLTIP :{BLACK}Stávající činnost - klikni pro zastavení/odlet letadla
|
||||
|
||||
STR_VEHICLE_VIEW_ORDER_LOCATION_TOOLTIP :{BLACK}Vystředit pohled na cíl přikazu. Ctrl+Klik otevře nový pohled
|
||||
|
||||
# Messages in the start stop button in the vehicle view
|
||||
STR_VEHICLE_STATUS_LOADING_UNLOADING :{LTBLUE}Nakládá nebo vykládá
|
||||
@@ -4600,6 +4658,7 @@ STR_ORDER_REFIT_STOP_ORDER :(Přestavět na
|
||||
STR_ORDER_STOP_ORDER :(Zastavit)
|
||||
|
||||
STR_ORDER_GO_TO_STATION :{STRING} {STATION} {STRING}
|
||||
STR_ORDER_GO_TO_STATION_CAN_T_USE_STATION :{PUSH_COLOUR}{RED}(Nemůže použít stanici){POP_COLOUR} {STRING} {STATION} {STRING}
|
||||
|
||||
STR_ORDER_IMPLICIT :(Automaticky)
|
||||
|
||||
@@ -4844,6 +4903,7 @@ STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :Uložená hra j
|
||||
STR_GAME_SAVELOAD_ERROR_FILE_NOT_READABLE :Soubor je nečitelný
|
||||
STR_GAME_SAVELOAD_ERROR_FILE_NOT_WRITEABLE :Do souboru nelze zapisovat
|
||||
STR_GAME_SAVELOAD_ERROR_DATA_INTEGRITY_CHECK_FAILED :Kontrola integrity dat selhala
|
||||
STR_GAME_SAVELOAD_ERROR_PATCHPACK :Uložená hra byla pořízena v upravené verzi
|
||||
STR_GAME_SAVELOAD_NOT_AVAILABLE :<nedostupné>
|
||||
STR_WARNING_LOADGAME_REMOVED_TRAMS :{WHITE}Hra byla uložena ve verzi bez podpory tramvají. Všechny tramvaje se odstraní
|
||||
|
||||
@@ -4924,6 +4984,7 @@ STR_ERROR_LOAN_ALREADY_REPAYED :{WHITE}... žá
|
||||
STR_ERROR_CURRENCY_REQUIRED :{WHITE}... je potřeba {CURRENCY_LONG}
|
||||
STR_ERROR_CAN_T_REPAY_LOAN :{WHITE}Nelze splatit dluh...
|
||||
STR_ERROR_INSUFFICIENT_FUNDS :{WHITE}Nelze darovat peníze půjčené z banky...
|
||||
STR_ERROR_CAN_T_GIVE_MONEY :{WHITE}Této společnosti nemůžeš poslat peníze...
|
||||
STR_ERROR_CAN_T_BUY_COMPANY :{WHITE}Nelze koupit společnost...
|
||||
STR_ERROR_CAN_T_BUILD_COMPANY_HEADQUARTERS :{WHITE}Nelze postavit ředitelství společnosti...
|
||||
STR_ERROR_CAN_T_BUY_25_SHARE_IN_THIS :{WHITE}Nelze koupit podíl v této společnosti...
|
||||
@@ -5050,6 +5111,8 @@ STR_ERROR_DEPOT_WRONG_DEPOT_TYPE :Nevhodný druh
|
||||
STR_ERROR_TRAIN_TOO_LONG_AFTER_REPLACEMENT :{WHITE}{VEHICLE} je po výměně moc dlouhý
|
||||
STR_ERROR_AUTOREPLACE_NOTHING_TO_DO :{WHITE}Žádné pravidlo pro výměnu vozidel se nepoužilo
|
||||
STR_ERROR_AUTOREPLACE_MONEY_LIMIT :(finanční limit)
|
||||
STR_ERROR_AUTOREPLACE_INCOMPATIBLE_CARGO :{WHITE}Nové vozidlo nemůže převážet {STRING}
|
||||
STR_ERROR_AUTOREPLACE_INCOMPATIBLE_REFIT :{WHITE}Nové vozidlo nemůže být přestavěno (příkaz {NUM})
|
||||
|
||||
# Rail construction errors
|
||||
STR_ERROR_IMPOSSIBLE_TRACK_COMBINATION :{WHITE}Nemožná kombinace kolejí
|
||||
@@ -5454,10 +5517,10 @@ STR_INDUSTRY_NAME_SUGAR_MINE.small :cukerný důl
|
||||
##id 0x6000
|
||||
STR_SV_EMPTY :
|
||||
STR_SV_UNNAMED :Beze jména
|
||||
STR_SV_TRAIN_NAME :{G=m}Vlak {COMMA}
|
||||
STR_SV_ROAD_VEHICLE_NAME :{G=n}Silniční vozidlo {COMMA}
|
||||
STR_SV_SHIP_NAME :{G=f}Loď {COMMA}
|
||||
STR_SV_AIRCRAFT_NAME :{G=n}Letadlo {COMMA}
|
||||
STR_SV_TRAIN_NAME :Vlak #{COMMA}
|
||||
STR_SV_ROAD_VEHICLE_NAME :{G=n}Silniční vozidlo #{COMMA}
|
||||
STR_SV_SHIP_NAME :Loď #{COMMA}
|
||||
STR_SV_AIRCRAFT_NAME :Letadlo #{COMMA}
|
||||
|
||||
STR_SV_STNAME :{STRING}
|
||||
STR_SV_STNAME_NORTH :{STRING} sever
|
||||
@@ -5760,6 +5823,7 @@ STR_FORMAT_BUOY_NAME :Bójka {TOWN}
|
||||
STR_FORMAT_BUOY_NAME_SERIAL :Bójka {TOWN} č. {COMMA}
|
||||
STR_FORMAT_COMPANY_NUM :(společnost {COMMA})
|
||||
STR_FORMAT_GROUP_NAME :Skupina {COMMA}
|
||||
STR_FORMAT_GROUP_VEHICLE_NAME :{GROUP} #{COMMA}
|
||||
STR_FORMAT_INDUSTRY_NAME :{1:STRING} {0:TOWN}
|
||||
STR_FORMAT_INDUSTRY_NAME.gen :{1:STRING.gen} {0:TOWN}
|
||||
STR_FORMAT_INDUSTRY_NAME.loc :{1:STRING.loc} {0:TOWN}
|
||||
|
||||
@@ -570,8 +570,8 @@ STR_MONTH_DEC :december
|
||||
# Graph window
|
||||
STR_GRAPH_KEY_BUTTON :{BLACK}Nøgle
|
||||
STR_GRAPH_KEY_TOOLTIP :{BLACK}Vis nøglen til grafer
|
||||
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}{} {STRING}
|
||||
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{} {STRING}{}{NUM}
|
||||
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}
|
||||
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{}{NUM}
|
||||
STR_GRAPH_Y_LABEL :{TINY_FONT}{STRING}
|
||||
STR_GRAPH_Y_LABEL_NUMBER :{TINY_FONT}{COMMA}
|
||||
|
||||
|
||||
@@ -577,8 +577,8 @@ STR_MONTH_DEC :December
|
||||
# Graph window
|
||||
STR_GRAPH_KEY_BUTTON :{BLACK}Legenda
|
||||
STR_GRAPH_KEY_TOOLTIP :{BLACK}Legenda bij deze grafiek weergeven
|
||||
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}{} {STRING}
|
||||
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{} {STRING}{}{NUM}
|
||||
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}
|
||||
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{}{NUM}
|
||||
STR_GRAPH_Y_LABEL :{TINY_FONT}{STRING}
|
||||
STR_GRAPH_Y_LABEL_NUMBER :{TINY_FONT}{COMMA}
|
||||
|
||||
@@ -947,6 +947,7 @@ STR_GAME_OPTIONS_CURRENCY_NTD :Nieuwe Taiwanse
|
||||
STR_GAME_OPTIONS_CURRENCY_CNY :Chinese Renminbi (CNY)
|
||||
STR_GAME_OPTIONS_CURRENCY_HKD :Hong Kong Dollar (HKD)
|
||||
STR_GAME_OPTIONS_CURRENCY_INR :Indiase rupee (INR)
|
||||
STR_GAME_OPTIONS_CURRENCY_IDR :Indonesische roepia (IDR)
|
||||
############ end of currency region
|
||||
|
||||
STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_LEFT :Links rijden
|
||||
|
||||
@@ -586,8 +586,8 @@ STR_MONTH_DEC :December
|
||||
# Graph window
|
||||
STR_GRAPH_KEY_BUTTON :{BLACK}Key
|
||||
STR_GRAPH_KEY_TOOLTIP :{BLACK}Show key to graphs
|
||||
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}{} {STRING}
|
||||
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{} {STRING}{}{NUM}
|
||||
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}
|
||||
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{}{NUM}
|
||||
STR_GRAPH_Y_LABEL :{TINY_FONT}{STRING2}
|
||||
STR_GRAPH_Y_LABEL_NUMBER :{TINY_FONT}{COMMA}
|
||||
|
||||
|
||||
@@ -551,8 +551,8 @@ STR_MONTH_DEC :December
|
||||
# Graph window
|
||||
STR_GRAPH_KEY_BUTTON :{BLACK}Key
|
||||
STR_GRAPH_KEY_TOOLTIP :{BLACK}Show key to graphs
|
||||
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}{} {STRING}
|
||||
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{} {STRING}{}{NUM}
|
||||
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}
|
||||
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{}{NUM}
|
||||
STR_GRAPH_Y_LABEL :{TINY_FONT}{STRING}
|
||||
STR_GRAPH_Y_LABEL_NUMBER :{TINY_FONT}{COMMA}
|
||||
|
||||
|
||||
@@ -577,8 +577,8 @@ STR_MONTH_DEC :December
|
||||
# Graph window
|
||||
STR_GRAPH_KEY_BUTTON :{BLACK}Key
|
||||
STR_GRAPH_KEY_TOOLTIP :{BLACK}Show key to graphs
|
||||
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}{} {STRING}
|
||||
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{} {STRING}{}{NUM}
|
||||
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}
|
||||
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{}{NUM}
|
||||
STR_GRAPH_Y_LABEL :{TINY_FONT}{STRING}
|
||||
STR_GRAPH_Y_LABEL_NUMBER :{TINY_FONT}{COMMA}
|
||||
|
||||
@@ -1322,6 +1322,7 @@ STR_CONFIG_SETTING_POPULATION_IN_LABEL :Show town popul
|
||||
STR_CONFIG_SETTING_POPULATION_IN_LABEL_HELPTEXT :Display the population of towns in their label on the map
|
||||
STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS :Thickness of lines in graphs: {STRING}
|
||||
STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS_HELPTEXT :Width of the line in the graphs. A thin line is more precisely readable, a thicker line is easier to see and colors are easier to distinguish
|
||||
STR_CONFIG_SETTING_SHOW_NEWGRF_NAME :Show the NewGRF's name in the build vehicle window: {STRING}
|
||||
STR_CONFIG_SETTING_SHOW_NEWGRF_NAME_HELPTEXT :Add a line to the build vehicle window, showing which NewGRF the selected vehicle comes from.
|
||||
|
||||
STR_CONFIG_SETTING_LANDSCAPE :Landscape: {STRING}
|
||||
@@ -1451,6 +1452,7 @@ STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS :Keep building t
|
||||
STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS_HELPTEXT :Keep the building tools for bridges, tunnels, etc. open after use
|
||||
STR_CONFIG_SETTING_EXPENSES_LAYOUT :Group expenses in company finance window: {STRING}
|
||||
STR_CONFIG_SETTING_EXPENSES_LAYOUT_HELPTEXT :Define the layout for the company expenses window
|
||||
STR_CONFIG_SETTING_AUTO_REMOVE_SIGNALS :Automatically remove signals during track construction: {STRING}
|
||||
STR_CONFIG_SETTING_AUTO_REMOVE_SIGNALS_HELPTEXT :Automatically remove signals during track construction if the signals are in the way. Note that this can potentially lead to train crashes.
|
||||
|
||||
STR_CONFIG_SETTING_SOUND_TICKER :News ticker: {STRING}
|
||||
@@ -1565,6 +1567,7 @@ STR_CONFIG_SETTING_ENDING_YEAR :Scoring end yea
|
||||
STR_CONFIG_SETTING_ENDING_YEAR_HELPTEXT :Year the game ends for scoring purposes. At the end of this year, the company's score is recorded and the high-score screen is displayed, but the players can continue playing after that.{}If this is before the starting year, the high-score screen is never displayed.
|
||||
STR_CONFIG_SETTING_ENDING_YEAR_VALUE :{NUM}
|
||||
STR_CONFIG_SETTING_ENDING_YEAR_ZERO :Never
|
||||
STR_CONFIG_SETTING_ECONOMY_TYPE :Economy type: {STRING}
|
||||
STR_CONFIG_SETTING_ECONOMY_TYPE_HELPTEXT :Smooth economy makes production changes more often, and in smaller steps. Frozen economy stops production changes and industry closures. This setting may have no effect if industry types are provided by a NewGRF.
|
||||
STR_CONFIG_SETTING_ECONOMY_TYPE_ORIGINAL :Original
|
||||
STR_CONFIG_SETTING_ECONOMY_TYPE_SMOOTH :Smooth
|
||||
@@ -1823,6 +1826,7 @@ STR_INTRO_TRANSLATION :{BLACK}This tra
|
||||
|
||||
# Quit window
|
||||
STR_QUIT_CAPTION :{WHITE}Quit
|
||||
STR_QUIT_ARE_YOU_SURE_YOU_WANT_TO_EXIT_OPENTTD :{YELLOW}Are you sure you want to exit OpenTTD?
|
||||
STR_QUIT_YES :{BLACK}Yes
|
||||
STR_QUIT_NO :{BLACK}No
|
||||
|
||||
@@ -2173,6 +2177,7 @@ STR_NETWORK_ERROR_WRONG_PASSWORD :{WHITE}Wrong pa
|
||||
STR_NETWORK_ERROR_SERVER_FULL :{WHITE}The server is full
|
||||
STR_NETWORK_ERROR_SERVER_BANNED :{WHITE}You are banned from this server
|
||||
STR_NETWORK_ERROR_KICKED :{WHITE}You were kicked out of the game
|
||||
STR_NETWORK_ERROR_KICK_MESSAGE :{WHITE}Reason: {STRING}
|
||||
STR_NETWORK_ERROR_CHEATER :{WHITE}Cheating is not allowed on this server
|
||||
STR_NETWORK_ERROR_TOO_MANY_COMMANDS :{WHITE}You were sending too many commands to the server
|
||||
STR_NETWORK_ERROR_TIMEOUT_PASSWORD :{WHITE}You took too long to enter the password
|
||||
@@ -2230,8 +2235,10 @@ STR_NETWORK_MESSAGE_CLIENT_COMPANY_SPECTATE :*** {STRING} ha
|
||||
STR_NETWORK_MESSAGE_CLIENT_COMPANY_NEW :*** {STRING} has started a new company (#{2:NUM})
|
||||
STR_NETWORK_MESSAGE_CLIENT_LEFT :*** {STRING} has left the game ({2:STRING})
|
||||
STR_NETWORK_MESSAGE_NAME_CHANGE :*** {STRING} has changed his/her name to {STRING}
|
||||
STR_NETWORK_MESSAGE_GIVE_MONEY :*** {STRING} gave {2:CURRENCY_LONG} to {1:STRING}
|
||||
STR_NETWORK_MESSAGE_SERVER_SHUTDOWN :{WHITE}The server closed the session
|
||||
STR_NETWORK_MESSAGE_SERVER_REBOOT :{WHITE}The server is restarting...{}Please wait...
|
||||
STR_NETWORK_MESSAGE_KICKED :*** {STRING} was kicked. Reason: ({STRING})
|
||||
|
||||
# Content downloading window
|
||||
STR_CONTENT_TITLE :{WHITE}Content downloading
|
||||
@@ -2842,6 +2849,8 @@ STR_SAVELOAD_DETAIL_GRFSTATUS :{SILVER}NewGRF:
|
||||
STR_SAVELOAD_FILTER_TITLE :{BLACK}Filter string:
|
||||
STR_SAVELOAD_OVERWRITE_TITLE :{WHITE}Overwrite File
|
||||
STR_SAVELOAD_OVERWRITE_WARNING :{YELLOW}Are you sure you want to overwrite the existing file?
|
||||
STR_SAVELOAD_DIRECTORY :{STRING} (Directory)
|
||||
STR_SAVELOAD_PARENT_DIRECTORY :{STRING} (Parent directory)
|
||||
|
||||
STR_SAVELOAD_OSKTITLE :{BLACK}Enter a name for the savegame
|
||||
|
||||
@@ -3418,7 +3427,12 @@ STR_COMPANY_INFRASTRUCTURE_VIEW_TOTAL :{WHITE}{CURRENC
|
||||
# Industry directory
|
||||
STR_INDUSTRY_DIRECTORY_CAPTION :{WHITE}Industries
|
||||
STR_INDUSTRY_DIRECTORY_NONE :{ORANGE}- None -
|
||||
STR_INDUSTRY_DIRECTORY_ITEM_INFO :{BLACK}{CARGO_LONG}{STRING}{YELLOW} ({COMMA}% transported){BLACK}
|
||||
STR_INDUSTRY_DIRECTORY_ITEM_NOPROD :{ORANGE}{INDUSTRY}
|
||||
STR_INDUSTRY_DIRECTORY_ITEM_PROD1 :{ORANGE}{INDUSTRY} {STRING}
|
||||
STR_INDUSTRY_DIRECTORY_ITEM_PROD2 :{ORANGE}{INDUSTRY} {STRING}, {STRING}
|
||||
STR_INDUSTRY_DIRECTORY_ITEM_PROD3 :{ORANGE}{INDUSTRY} {STRING}, {STRING}, {STRING}
|
||||
STR_INDUSTRY_DIRECTORY_ITEM_PRODMORE :{ORANGE}{INDUSTRY} {STRING}, {STRING}, {STRING} and {NUM} more...
|
||||
STR_INDUSTRY_DIRECTORY_LIST_CAPTION :{BLACK}Industry names - click on name to center main view on industry. Ctrl+Click opens a new viewport on industry location
|
||||
STR_INDUSTRY_DIRECTORY_ACCEPTED_CARGO_FILTER :{BLACK}Accepted cargo: {SILVER}{STRING}
|
||||
STR_INDUSTRY_DIRECTORY_PRODUCED_CARGO_FILTER :{BLACK}Produced cargo: {SILVER}{STRING}
|
||||
@@ -4022,6 +4036,7 @@ STR_ORDER_REFIT_STOP_ORDER :(Refit to {STRI
|
||||
STR_ORDER_STOP_ORDER :(Stop)
|
||||
|
||||
STR_ORDER_GO_TO_STATION :{STRING} {STATION} {STRING}
|
||||
STR_ORDER_GO_TO_STATION_CAN_T_USE_STATION :{PUSH_COLOUR}{RED}(Can't use station){POP_COLOUR} {STRING} {STATION} {STRING}
|
||||
|
||||
STR_ORDER_IMPLICIT :(Implicit)
|
||||
|
||||
|
||||
@@ -554,8 +554,8 @@ STR_MONTH_DEC :Decembro
|
||||
# Graph window
|
||||
STR_GRAPH_KEY_BUTTON :{BLACK}Ŝlosilo
|
||||
STR_GRAPH_KEY_TOOLTIP :{BLACK}Montru ŝlosilon al grafikoj
|
||||
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}{} {STRING}
|
||||
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{} {STRING}{}{NUM}
|
||||
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}
|
||||
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{}{NUM}
|
||||
STR_GRAPH_Y_LABEL :{TINY_FONT}{STRING}
|
||||
STR_GRAPH_Y_LABEL_NUMBER :{TINY_FONT}{COMMA}
|
||||
|
||||
|
||||
@@ -634,8 +634,8 @@ STR_MONTH_DEC :Detsember
|
||||
# Graph window
|
||||
STR_GRAPH_KEY_BUTTON :{BLACK}Selgitus
|
||||
STR_GRAPH_KEY_TOOLTIP :{BLACK}Näita selgitust graafikute juures
|
||||
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}{} {STRING}
|
||||
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{} {STRING}{}{NUM}
|
||||
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}
|
||||
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{}{NUM}
|
||||
STR_GRAPH_Y_LABEL :{TINY_FONT}{STRING}
|
||||
STR_GRAPH_Y_LABEL_NUMBER :{TINY_FONT}{COMMA}
|
||||
|
||||
@@ -3344,7 +3344,7 @@ STR_STATION_VIEW_VIA_ANY :{RED}{CARGO_SHO
|
||||
STR_STATION_VIEW_FROM_HERE :{GREEN}{CARGO_SHORT} sellest jaamast
|
||||
STR_STATION_VIEW_VIA_HERE :{GREEN}{CARGO_SHORT} peatumas selles jaamas
|
||||
STR_STATION_VIEW_TO_HERE :{GREEN}{CARGO_SHORT} siia jaama
|
||||
STR_STATION_VIEW_NONSTOP :{YELLOW}{CARGO_SHORT} ilma peatumata
|
||||
STR_STATION_VIEW_NONSTOP :{YELLOW}{CARGO_SHORT} vahepeatusteta
|
||||
|
||||
STR_STATION_VIEW_GROUP_S_V_D :Algus-, vahe- ja sihtpunkt
|
||||
STR_STATION_VIEW_GROUP_S_D_V :Algus-, siht- ja vahepunkt
|
||||
@@ -4070,7 +4070,7 @@ STR_ORDER_GO_TO_NEAREST_DEPOT :Siht lähim dep
|
||||
STR_ORDER_GO_TO_NEAREST_HANGAR :Siht lähim angaar
|
||||
STR_ORDER_CONDITIONAL :Korralduste tinglik vahelejätmine
|
||||
STR_ORDER_SHARE :Korralduste jagamine
|
||||
STR_ORDERS_GO_TO_TOOLTIP :{BLACK}Lisa valitud käsu ette uus korraldus, või kui korraldust ei ole valitud, siis nimekirja lõppu. «Ctrl» määrab jaama puhul korralduseks «peale laadida üks kaup», meldepunkti puhul «peatuseta» ja depoo puhul «hooldus». «Jaga korraldusi» või «Ctrl» klahv lubab sellel sõidukil jagada korraldusi valitud sõidukiga. Klõpsates teisel sõidukil, dubleeritakse selle korraldused
|
||||
STR_ORDERS_GO_TO_TOOLTIP :{BLACK}Lisa uus korraldus valitud korralduse ette, või nimekirja lõppu. «Ctrl» annab jaamas korralduse «täislaadida üks veos», meldepunktis korralduse «peatuseta», ning depoos korralduse «hooldus». «Korralduste jagamine» või «Ctrl» laseb sellel sõidukil jagada korraldusi valitud sõidukiga. Sõidukil klõpsates dubleeritakse selle korraldused. Depookorralduste olemasolul sõiduk ise hoolduses ei käi
|
||||
|
||||
STR_ORDERS_VEH_WITH_SHARED_ORDERS_LIST_TOOLTIP :{BLACK}Näita kõiki sama sõidugraafikuga mootorsõidukeid
|
||||
|
||||
@@ -4079,7 +4079,7 @@ STR_ORDER_GO_TO_WAYPOINT :Siht läbida {W
|
||||
STR_ORDER_GO_NON_STOP_TO_WAYPOINT :Siht peatumata läbida {WAYPOINT}
|
||||
|
||||
STR_ORDER_SERVICE_AT :Hooldus
|
||||
STR_ORDER_SERVICE_NON_STOP_AT :Hooldus ilma peatumata
|
||||
STR_ORDER_SERVICE_NON_STOP_AT :Hooldus vahepeatusteta
|
||||
|
||||
STR_ORDER_NEAREST_DEPOT :lähim
|
||||
STR_ORDER_NEAREST_HANGAR :lähim angaar
|
||||
@@ -4836,10 +4836,10 @@ STR_INDUSTRY_NAME_SUGAR_MINE :suhkrukaevandus
|
||||
##id 0x6000
|
||||
STR_SV_EMPTY :
|
||||
STR_SV_UNNAMED :Nimetu
|
||||
STR_SV_TRAIN_NAME :Rong #{COMMA}
|
||||
STR_SV_ROAD_VEHICLE_NAME :Mootorsõiduk #{COMMA}
|
||||
STR_SV_SHIP_NAME :Laev #{COMMA}
|
||||
STR_SV_AIRCRAFT_NAME :Õhusõiduk #{COMMA}
|
||||
STR_SV_TRAIN_NAME :Rong nr {COMMA}
|
||||
STR_SV_ROAD_VEHICLE_NAME :Mootorsõiduk nr {COMMA}
|
||||
STR_SV_SHIP_NAME :Laev nr {COMMA}
|
||||
STR_SV_AIRCRAFT_NAME :Õhusõiduk nr {COMMA}
|
||||
|
||||
STR_SV_STNAME :{STRING}
|
||||
STR_SV_STNAME_NORTH :Põhja {STRING}
|
||||
|
||||
@@ -539,8 +539,8 @@ STR_MONTH_DEC :Desembur
|
||||
# Graph window
|
||||
STR_GRAPH_KEY_BUTTON :{BLACK}Lykil
|
||||
STR_GRAPH_KEY_TOOLTIP :{BLACK}Vís lykil til graf
|
||||
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}{} {STRING}
|
||||
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{} {STRING}{}{NUM}
|
||||
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}
|
||||
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{}{NUM}
|
||||
STR_GRAPH_Y_LABEL :{TINY_FONT}{STRING}
|
||||
STR_GRAPH_Y_LABEL_NUMBER :{TINY_FONT}{COMMA}
|
||||
|
||||
|
||||
@@ -577,8 +577,8 @@ STR_MONTH_DEC :Joulukuu
|
||||
# Graph window
|
||||
STR_GRAPH_KEY_BUTTON :{BLACK}Selite
|
||||
STR_GRAPH_KEY_TOOLTIP :{BLACK}Näytä kuvaajan selite
|
||||
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}{} {STRING}
|
||||
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{} {STRING}{}{NUM}
|
||||
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}
|
||||
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{}{NUM}
|
||||
STR_GRAPH_Y_LABEL :{TINY_FONT}{STRING}
|
||||
STR_GRAPH_Y_LABEL_NUMBER :{TINY_FONT}{COMMA}
|
||||
|
||||
|
||||
@@ -578,8 +578,8 @@ STR_MONTH_DEC :Décembre
|
||||
# Graph window
|
||||
STR_GRAPH_KEY_BUTTON :{BLACK}Légende
|
||||
STR_GRAPH_KEY_TOOLTIP :{BLACK}Afficher la légende
|
||||
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}{} {STRING}
|
||||
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{} {STRING}{}{NUM}
|
||||
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}
|
||||
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{}{NUM}
|
||||
STR_GRAPH_Y_LABEL :{TINY_FONT}{STRING}
|
||||
STR_GRAPH_Y_LABEL_NUMBER :{TINY_FONT}{COMMA}
|
||||
|
||||
|
||||
@@ -759,8 +759,8 @@ STR_MONTH_DEC.dat :Dùbhlachd
|
||||
# Graph window
|
||||
STR_GRAPH_KEY_BUTTON :{BLACK}Iuchair
|
||||
STR_GRAPH_KEY_TOOLTIP :{BLACK}Seall iuchair nan graf
|
||||
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}{} {STRING}
|
||||
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{} {STRING}{}{NUM}
|
||||
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}
|
||||
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{}{NUM}
|
||||
STR_GRAPH_Y_LABEL :{TINY_FONT}{STRING}
|
||||
STR_GRAPH_Y_LABEL_NUMBER :{TINY_FONT}{COMMA}
|
||||
|
||||
|
||||
@@ -570,8 +570,8 @@ STR_MONTH_DEC :Decembro
|
||||
# Graph window
|
||||
STR_GRAPH_KEY_BUTTON :{BLACK}Lenda
|
||||
STR_GRAPH_KEY_TOOLTIP :{BLACK}Amosa-la lenda das gráficas
|
||||
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}{} {STRING}
|
||||
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{} {STRING}{}{NUM}
|
||||
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}
|
||||
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{}{NUM}
|
||||
STR_GRAPH_Y_LABEL :{TINY_FONT}{STRING}
|
||||
STR_GRAPH_Y_LABEL_NUMBER :{TINY_FONT}{COMMA}
|
||||
|
||||
|
||||
@@ -587,8 +587,8 @@ STR_MONTH_DEC :Dezember
|
||||
# Graph window
|
||||
STR_GRAPH_KEY_BUTTON :{BLACK}Legende
|
||||
STR_GRAPH_KEY_TOOLTIP :{BLACK}Legende des Diagramms anzeigen
|
||||
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}{} {STRING}
|
||||
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{} {STRING}{}{NUM}
|
||||
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}
|
||||
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{}{NUM}
|
||||
STR_GRAPH_Y_LABEL :{TINY_FONT}{STRING}
|
||||
STR_GRAPH_Y_LABEL_NUMBER :{TINY_FONT}{COMMA}
|
||||
|
||||
@@ -924,14 +924,14 @@ STR_GAME_OPTIONS_CURRENCY_USD :US-Dollar (USD)
|
||||
STR_GAME_OPTIONS_CURRENCY_EUR :Euro (EUR)
|
||||
STR_GAME_OPTIONS_CURRENCY_JPY :Japanische Yen (JPY)
|
||||
STR_GAME_OPTIONS_CURRENCY_ATS :Österreichische Schilling (ATS)
|
||||
STR_GAME_OPTIONS_CURRENCY_BEF :Belgische Francs (BEF)
|
||||
STR_GAME_OPTIONS_CURRENCY_BEF :Belgische Franken (BEF)
|
||||
STR_GAME_OPTIONS_CURRENCY_CHF :Schweizer Franken (CHF)
|
||||
STR_GAME_OPTIONS_CURRENCY_CZK :Tschechische Kronen (CZK)
|
||||
STR_GAME_OPTIONS_CURRENCY_DEM :Deutsche Mark (DEM)
|
||||
STR_GAME_OPTIONS_CURRENCY_DKK :Dänische Kronen (DKK)
|
||||
STR_GAME_OPTIONS_CURRENCY_ESP :Spanische Peseten (ESP)
|
||||
STR_GAME_OPTIONS_CURRENCY_FIM :Finnische Mark (FIM)
|
||||
STR_GAME_OPTIONS_CURRENCY_FRF :Französische Francs (FRF)
|
||||
STR_GAME_OPTIONS_CURRENCY_FRF :Französische Franken (FRF)
|
||||
STR_GAME_OPTIONS_CURRENCY_GRD :Griechische Drachmen (GRD)
|
||||
STR_GAME_OPTIONS_CURRENCY_HUF :Ungarische Forint (HUF)
|
||||
STR_GAME_OPTIONS_CURRENCY_ISK :Isländische Kronen (ISK)
|
||||
@@ -948,17 +948,18 @@ STR_GAME_OPTIONS_CURRENCY_SKK :Slowakische Kro
|
||||
STR_GAME_OPTIONS_CURRENCY_BRL :Brasilianische Reais (BRL)
|
||||
STR_GAME_OPTIONS_CURRENCY_EEK :Estnische Kronen (EEK)
|
||||
STR_GAME_OPTIONS_CURRENCY_LTL :Litauische Litas (LTL)
|
||||
STR_GAME_OPTIONS_CURRENCY_KRW :Südkoreanischer Won (KRW)
|
||||
STR_GAME_OPTIONS_CURRENCY_ZAR :Südafrikanischer Rand (ZAR)
|
||||
STR_GAME_OPTIONS_CURRENCY_KRW :Südkoreanische Won (KRW)
|
||||
STR_GAME_OPTIONS_CURRENCY_ZAR :Südafrikanische Rand (ZAR)
|
||||
STR_GAME_OPTIONS_CURRENCY_CUSTOM :Eigene ...
|
||||
STR_GAME_OPTIONS_CURRENCY_GEL :Georgischer Lari (GEL)
|
||||
STR_GAME_OPTIONS_CURRENCY_IRR :Iranischer Rial (IRR)
|
||||
STR_GAME_OPTIONS_CURRENCY_GEL :Georgische Lari (GEL)
|
||||
STR_GAME_OPTIONS_CURRENCY_IRR :Iranische Rial (IRR)
|
||||
STR_GAME_OPTIONS_CURRENCY_RUB :Neue Russische Rubel (RUB)
|
||||
STR_GAME_OPTIONS_CURRENCY_MXN :Mexikanischer Peso (MXN)
|
||||
STR_GAME_OPTIONS_CURRENCY_MXN :Mexikanische Pesos (MXN)
|
||||
STR_GAME_OPTIONS_CURRENCY_NTD :Neuer Taiwan-Dollar (NTD)
|
||||
STR_GAME_OPTIONS_CURRENCY_CNY :Chinesischer Yuan (CNY)
|
||||
STR_GAME_OPTIONS_CURRENCY_CNY :Chinesische Yuan (CNY)
|
||||
STR_GAME_OPTIONS_CURRENCY_HKD :Hongkong-Dollar (HKD)
|
||||
STR_GAME_OPTIONS_CURRENCY_INR :Indische Rupie (INR)
|
||||
STR_GAME_OPTIONS_CURRENCY_IDR :Indonesische Rupiah (IDR)
|
||||
############ end of currency region
|
||||
|
||||
STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_LEFT :Linksverkehr
|
||||
@@ -2172,11 +2173,11 @@ STR_LIVERY_PANEL_TOOLTIP :{BLACK}Farbsche
|
||||
STR_LIVERY_DEFAULT :Standardlackierung
|
||||
STR_LIVERY_STEAM :Dampflok
|
||||
STR_LIVERY_DIESEL :Diesellok
|
||||
STR_LIVERY_ELECTRIC :E-Lok
|
||||
STR_LIVERY_ELECTRIC :Elektrolok
|
||||
STR_LIVERY_MONORAIL :Einschienenbahn
|
||||
STR_LIVERY_MAGLEV :Magnetschwebebahn
|
||||
STR_LIVERY_DMU :VT
|
||||
STR_LIVERY_EMU :ET
|
||||
STR_LIVERY_DMU :Dieseltriebwagen
|
||||
STR_LIVERY_EMU :Elektrotriebwagen
|
||||
STR_LIVERY_PASSENGER_WAGON_STEAM :Passagierwaggon (Dampf)
|
||||
STR_LIVERY_PASSENGER_WAGON_DIESEL :Passagierwaggon (Diesel)
|
||||
STR_LIVERY_PASSENGER_WAGON_ELECTRIC :Passagierwaggon (Elektrisch)
|
||||
@@ -4538,12 +4539,12 @@ STR_ENGINE_PREVIEW_CAPTION :{WHITE}Nachrich
|
||||
STR_ENGINE_PREVIEW_MESSAGE :{GOLD}Wir haben {G "einen" "eine" "ein" ""} neue{G n "" s ""} {0:STRING} entwickelt.{}Besteht Interesse, {G 0 den die das die} {0:STRING} ein Jahr lang exklusiv zu nutzen, so dass wir die Funktionen testen können, bevor {G 0 er sie es sie} allgemein zur Verfügung gestellt {G 0 wird wird wird werden}?
|
||||
|
||||
STR_ENGINE_PREVIEW_RAILROAD_LOCOMOTIVE :{G=w}Lokomotive
|
||||
STR_ENGINE_PREVIEW_ELRAIL_LOCOMOTIVE :Elektrifizierte Lokomotive
|
||||
STR_ENGINE_PREVIEW_ELRAIL_LOCOMOTIVE :Elektrolokomotive
|
||||
STR_ENGINE_PREVIEW_MONORAIL_LOCOMOTIVE :{G=w}Einschienenbahn
|
||||
STR_ENGINE_PREVIEW_MAGLEV_LOCOMOTIVE :{G=w}Magnetschwebebahn
|
||||
|
||||
STR_ENGINE_PREVIEW_ROAD_VEHICLE :{G=n}Straßenfahrzeug
|
||||
STR_ENGINE_PREVIEW_TRAM_VEHICLE :Straßenbahnfahrzeug
|
||||
STR_ENGINE_PREVIEW_TRAM_VEHICLE :Straßenbahn
|
||||
|
||||
STR_ENGINE_PREVIEW_AIRCRAFT :{G=n}Flugzeug
|
||||
STR_ENGINE_PREVIEW_SHIP :{G=n}Schiff
|
||||
@@ -5875,9 +5876,9 @@ STR_SV_STNAME_LAKESIDE :{STRING} Seebli
|
||||
STR_SV_STNAME_EXCHANGE :{STRING} Abzweigung
|
||||
STR_SV_STNAME_AIRPORT :{STRING} Flughafen
|
||||
STR_SV_STNAME_OILFIELD :{STRING} Ölfeld
|
||||
STR_SV_STNAME_MINES :{STRING} Mine
|
||||
STR_SV_STNAME_MINES :{STRING} Bergwerk
|
||||
STR_SV_STNAME_DOCKS :{STRING} Hafen
|
||||
STR_SV_STNAME_BUOY :{STRING}
|
||||
STR_SV_STNAME_BUOY :{STRING} Boje
|
||||
STR_SV_STNAME_WAYPOINT :{STRING}
|
||||
##id 0x6020
|
||||
STR_SV_STNAME_ANNEXE :{STRING} Anbau
|
||||
|
||||
@@ -671,8 +671,8 @@ STR_MONTH_DEC :Δεκέμβρ
|
||||
# Graph window
|
||||
STR_GRAPH_KEY_BUTTON :{BLACK}Υπόμνημα
|
||||
STR_GRAPH_KEY_TOOLTIP :{BLACK}Εμφάνιση υπομνήματος στα γραφήματα
|
||||
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}{} {STRING}
|
||||
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{} {STRING}{}{NUM}
|
||||
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}
|
||||
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{}{NUM}
|
||||
STR_GRAPH_Y_LABEL :{TINY_FONT}{STRING}
|
||||
STR_GRAPH_Y_LABEL_NUMBER :{TINY_FONT}{COMMA}
|
||||
|
||||
|
||||
@@ -575,8 +575,8 @@ STR_MONTH_DEC :דצמבר
|
||||
# Graph window
|
||||
STR_GRAPH_KEY_BUTTON :{BLACK}
|
||||
STR_GRAPH_KEY_TOOLTIP :{BLACK}הצג מפתחות לגרפים
|
||||
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}{} {STRING}
|
||||
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{} {STRING}{}{NUM}
|
||||
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}
|
||||
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{}{NUM}
|
||||
STR_GRAPH_Y_LABEL :{TINY_FONT}{STRING}
|
||||
STR_GRAPH_Y_LABEL_NUMBER :{TINY_FONT}{COMMA}
|
||||
|
||||
|
||||
@@ -632,8 +632,8 @@ STR_MONTH_DEC :december
|
||||
# Graph window
|
||||
STR_GRAPH_KEY_BUTTON :{BLACK}Jelkulcs
|
||||
STR_GRAPH_KEY_TOOLTIP :{BLACK}A grafikonok jelmagyarázata
|
||||
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}{} {STRING}
|
||||
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{} {STRING}{}{NUM}
|
||||
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}
|
||||
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{}{NUM}
|
||||
STR_GRAPH_Y_LABEL :{TINY_FONT}{STRING}
|
||||
STR_GRAPH_Y_LABEL_NUMBER :{TINY_FONT}{COMMA}
|
||||
|
||||
|
||||
@@ -538,8 +538,8 @@ STR_MONTH_DEC :Desember
|
||||
# Graph window
|
||||
STR_GRAPH_KEY_BUTTON :{BLACK}Lykill
|
||||
STR_GRAPH_KEY_TOOLTIP :{BLACK}Sýna lykilmynd
|
||||
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}{} {STRING}
|
||||
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{} {STRING}{}{NUM}
|
||||
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}
|
||||
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{}{NUM}
|
||||
STR_GRAPH_Y_LABEL :{TINY_FONT}{STRING}
|
||||
STR_GRAPH_Y_LABEL_NUMBER :{TINY_FONT}{COMMA}
|
||||
|
||||
|
||||
@@ -577,8 +577,8 @@ STR_MONTH_DEC :Desember
|
||||
# Graph window
|
||||
STR_GRAPH_KEY_BUTTON :{BLACK}Item
|
||||
STR_GRAPH_KEY_TOOLTIP :{BLACK}Tampilkan grafik item
|
||||
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}{} {STRING}
|
||||
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{} {STRING}{}{NUM}
|
||||
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}
|
||||
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{}{NUM}
|
||||
STR_GRAPH_Y_LABEL :{TINY_FONT}{STRING}
|
||||
STR_GRAPH_Y_LABEL_NUMBER :{TINY_FONT}{COMMA}
|
||||
|
||||
|
||||
@@ -560,8 +560,8 @@ STR_MONTH_DEC :Nollaig
|
||||
# Graph window
|
||||
STR_GRAPH_KEY_BUTTON :{BLACK}Eochair
|
||||
STR_GRAPH_KEY_TOOLTIP :{BLACK}Taispeáin eochair na ngraf
|
||||
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}{} {STRING}
|
||||
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{} {STRING}{}{NUM}
|
||||
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}
|
||||
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{}{NUM}
|
||||
STR_GRAPH_Y_LABEL :{TINY_FONT}{STRING}
|
||||
STR_GRAPH_Y_LABEL_NUMBER :{TINY_FONT}{COMMA}
|
||||
|
||||
|
||||
@@ -196,6 +196,7 @@ STR_COLOUR_DEFAULT :Predefinito
|
||||
STR_UNITS_VELOCITY_IMPERIAL :{COMMA}{NBSP}mph
|
||||
STR_UNITS_VELOCITY_METRIC :{COMMA}{NBSP}km/h
|
||||
STR_UNITS_VELOCITY_SI :{COMMA}{NBSP}m/s
|
||||
STR_UNITS_VELOCITY_GAMEUNITS :{DECIMAL}{NBSP}riquadri/giorno
|
||||
|
||||
STR_UNITS_POWER_IMPERIAL :{COMMA}{NBSP}hp
|
||||
STR_UNITS_POWER_METRIC :{COMMA}{NBSP}hp
|
||||
@@ -315,8 +316,15 @@ STR_SORT_BY_CARGO_CAPACITY :Capacità di ca
|
||||
STR_SORT_BY_RANGE :{G=f}Autonomia
|
||||
STR_SORT_BY_POPULATION :Popolazione
|
||||
STR_SORT_BY_RATING :Valutazione
|
||||
STR_SORT_BY_NUM_VEHICLES :Numero di veicoli
|
||||
STR_SORT_BY_TOTAL_PROFIT_LAST_YEAR :Profitto totale dell'anno scorso
|
||||
STR_SORT_BY_TOTAL_PROFIT_THIS_YEAR :Profitto totale di quest'anno
|
||||
STR_SORT_BY_AVERAGE_PROFIT_LAST_YEAR :Profitto medio dell'anno scorso
|
||||
STR_SORT_BY_AVERAGE_PROFIT_THIS_YEAR :Profitto medio di quest'anno
|
||||
|
||||
# Group by options for vehicle list
|
||||
STR_GROUP_BY_NONE :Nessuno
|
||||
STR_GROUP_BY_SHARED_ORDERS :Ordini condivisi
|
||||
|
||||
# Tooltips for the main toolbar
|
||||
STR_TOOLBAR_TOOLTIP_PAUSE_GAME :{BLACK}Pausa
|
||||
@@ -428,7 +436,7 @@ STR_GRAPH_MENU_CARGO_PAYMENT_RATES :Grafico tariffe
|
||||
############ range ends here
|
||||
|
||||
############ range for company league menu starts
|
||||
STR_GRAPH_MENU_COMPANY_LEAGUE_TABLE :Classifica società
|
||||
STR_GRAPH_MENU_COMPANY_LEAGUE_TABLE :Classifica compagnie
|
||||
STR_GRAPH_MENU_DETAILED_PERFORMANCE_RATING :Valutazione dettagliata prestazioni
|
||||
STR_GRAPH_MENU_HIGHSCORE :Punteggi migliori
|
||||
############ range ends here
|
||||
@@ -571,8 +579,8 @@ STR_MONTH_DEC :Dicembre
|
||||
# Graph window
|
||||
STR_GRAPH_KEY_BUTTON :{BLACK}Legenda
|
||||
STR_GRAPH_KEY_TOOLTIP :{BLACK}Mostra la legenda del grafico
|
||||
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}{} {STRING}
|
||||
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{} {STRING}{}{NUM}
|
||||
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}
|
||||
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{}{NUM}
|
||||
STR_GRAPH_Y_LABEL :{TINY_FONT}{STRING}
|
||||
STR_GRAPH_Y_LABEL_NUMBER :{TINY_FONT}{COMMA}
|
||||
|
||||
@@ -605,9 +613,9 @@ STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_ENGINEER :Ingegnere
|
||||
STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_TRAFFIC_MANAGER :Direttore del traffico
|
||||
STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_TRANSPORT_COORDINATOR :Coordinatore dei trasporti
|
||||
STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_ROUTE_SUPERVISOR :Supervisore degli itinerari
|
||||
STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_DIRECTOR :Dirigente
|
||||
STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_CHIEF_EXECUTIVE :Manager
|
||||
STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_CHAIRMAN :Amministratore delegato
|
||||
STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_DIRECTOR :Direttore
|
||||
STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_CHIEF_EXECUTIVE :Amministratore delegato
|
||||
STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_CHAIRMAN :Presidente del consiglio di amministazione
|
||||
STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_PRESIDENT :Presidente
|
||||
STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_TYCOON :Magnate
|
||||
|
||||
@@ -742,6 +750,7 @@ STR_SMALLMAP_LEGENDA_DOCK :{TINY_FONT}{BLA
|
||||
STR_SMALLMAP_LEGENDA_ROUGH_LAND :{TINY_FONT}{BLACK}Terreno accidentato
|
||||
STR_SMALLMAP_LEGENDA_GRASS_LAND :{TINY_FONT}{BLACK}Terreno erboso
|
||||
STR_SMALLMAP_LEGENDA_BARE_LAND :{TINY_FONT}{BLACK}Terreno spoglio
|
||||
STR_SMALLMAP_LEGENDA_RAINFOREST :{TINY_FONT}{BLACK}Foresta pluviale
|
||||
STR_SMALLMAP_LEGENDA_FIELDS :{TINY_FONT}{BLACK}Campi
|
||||
STR_SMALLMAP_LEGENDA_TREES :{TINY_FONT}{BLACK}Alberi
|
||||
STR_SMALLMAP_LEGENDA_ROCKS :{TINY_FONT}{BLACK}Rocce
|
||||
@@ -773,6 +782,7 @@ STR_SMALLMAP_TOOLTIP_ENABLE_ALL_CARGOS :{BLACK}Mostra t
|
||||
STR_STATUSBAR_TOOLTIP_SHOW_LAST_NEWS :{BLACK}Mostra l'ultimo messaggio o notizia
|
||||
STR_STATUSBAR_COMPANY_NAME :{SILVER}- - {COMPANY} - -
|
||||
STR_STATUSBAR_PAUSED :{YELLOW}* * IN PAUSA * *
|
||||
STR_STATUSBAR_PAUSED_LINK_GRAPH :{ORANGE}* * IN PAUSA (in attesa di aggiornamento del grafo delle rotte) * *
|
||||
STR_STATUSBAR_AUTOSAVE :{RED}SALVATAGGIO AUTOMATICO
|
||||
STR_STATUSBAR_SAVING_GAME :{RED}* * SALVATAGGIO PARTITA * *
|
||||
|
||||
@@ -939,6 +949,7 @@ STR_GAME_OPTIONS_CURRENCY_NTD :Nuovo dollaro t
|
||||
STR_GAME_OPTIONS_CURRENCY_CNY :Renminbi cinese (CNY)
|
||||
STR_GAME_OPTIONS_CURRENCY_HKD :Dollaro di Hong Kong (HKD)
|
||||
STR_GAME_OPTIONS_CURRENCY_INR :Rupia indiana (INR)
|
||||
STR_GAME_OPTIONS_CURRENCY_IDR :Rupia indonesiana (IDR)
|
||||
############ end of currency region
|
||||
|
||||
STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_LEFT :Guida a sinistra
|
||||
@@ -995,6 +1006,7 @@ STR_GAME_OPTIONS_RESOLUTION_OTHER :Altra
|
||||
STR_GAME_OPTIONS_GUI_ZOOM_FRAME :{BLACK}Dimensione interfaccia
|
||||
STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_TOOLTIP :{BLACK}Seleziona la dimensione deglie elementi dell'interfaccia grafica
|
||||
|
||||
STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_AUTO :(rileva automaticamente)
|
||||
STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_NORMAL :Normale
|
||||
STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_2X_ZOOM :Doppia
|
||||
STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_4X_ZOOM :Quadrupla
|
||||
@@ -1002,6 +1014,7 @@ STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_4X_ZOOM :Quadrupla
|
||||
STR_GAME_OPTIONS_FONT_ZOOM :{BLACK}Dimensione caratteri
|
||||
STR_GAME_OPTIONS_FONT_ZOOM_DROPDOWN_TOOLTIP :{BLACK}Seleziona la dimensione dei caratteri dell'interfaccia
|
||||
|
||||
STR_GAME_OPTIONS_FONT_ZOOM_DROPDOWN_AUTO :(rileva automaticamente)
|
||||
STR_GAME_OPTIONS_FONT_ZOOM_DROPDOWN_NORMAL :Normale
|
||||
STR_GAME_OPTIONS_FONT_ZOOM_DROPDOWN_2X_ZOOM :Doppia
|
||||
STR_GAME_OPTIONS_FONT_ZOOM_DROPDOWN_4X_ZOOM :Quadrupla
|
||||
@@ -1463,6 +1476,8 @@ STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS :Mantieni aperte
|
||||
STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS_HELPTEXT :Mantiene aperti dopo l'uso gli strumenti di costruzione di ponti, tunnel, etc.
|
||||
STR_CONFIG_SETTING_EXPENSES_LAYOUT :Raggruppa voci nella finestra delle finanze: {STRING}
|
||||
STR_CONFIG_SETTING_EXPENSES_LAYOUT_HELPTEXT :Determina l'orginalizzazione della finestra delle finanze della compagnia
|
||||
STR_CONFIG_SETTING_AUTO_REMOVE_SIGNALS :Rimuove automaticamente i segnali durante la costruzione di binari: {STRING}
|
||||
STR_CONFIG_SETTING_AUTO_REMOVE_SIGNALS_HELPTEXT :Rimuove automaticamente i segnali d'intralcio durante la costruzione di binari. Notare che questo può potenzialmente causare incidenti ferroviari.
|
||||
|
||||
STR_CONFIG_SETTING_SOUND_TICKER :Notiziari: {STRING}
|
||||
STR_CONFIG_SETTING_SOUND_TICKER_HELPTEXT :Emette un suono per i messaggi di riepilogo delle notizie
|
||||
@@ -1576,6 +1591,11 @@ STR_CONFIG_SETTING_ENDING_YEAR :Punteggi a fine
|
||||
STR_CONFIG_SETTING_ENDING_YEAR_HELPTEXT :Anno in cui il gioco finisce per poter calcolare i punteggi. Alla fine di ques'tanno il punteggio della compagnia viene registrato e viene mostrata la schermata con i punteggi più alti, ma il giocatore può continuare a giocare anche dopo.{}Se quest'anno precede quello di inizio, la schermata dei punteggi non verrà mai mostrata.
|
||||
STR_CONFIG_SETTING_ENDING_YEAR_VALUE :{NUM}
|
||||
STR_CONFIG_SETTING_ENDING_YEAR_ZERO :Mai
|
||||
STR_CONFIG_SETTING_ECONOMY_TYPE :Tipo di economia: {STRING}
|
||||
STR_CONFIG_SETTING_ECONOMY_TYPE_HELPTEXT :Un'economia morbida fa cambiare la produzione più spesso, ma a piccoli step. Un'economia congelata impedisce cambiamenti di produzione e chiusure di industrie. Questa impostazione potrebbe non avere effetto per le tipologie industriali introdotte da NewGRF.
|
||||
STR_CONFIG_SETTING_ECONOMY_TYPE_ORIGINAL :Originale
|
||||
STR_CONFIG_SETTING_ECONOMY_TYPE_SMOOTH :Morbida
|
||||
STR_CONFIG_SETTING_ECONOMY_TYPE_FROZEN :Congelata
|
||||
STR_CONFIG_SETTING_ALLOW_SHARES :Permetti l'acquisto di azioni di altre compagnie: {STRING}
|
||||
STR_CONFIG_SETTING_ALLOW_SHARES_HELPTEXT :Se abilitata, consente l'acquisto e la vendita di azioni delle compagnie. Le azioni sono disponibili solo per le compagnie che hanno raggiunto una certa età minima
|
||||
STR_CONFIG_SETTING_MIN_YEARS_FOR_SHARES :Età minima della compagnia per lo scambio delle sue azioni: {STRING}
|
||||
@@ -1627,6 +1647,10 @@ STR_CONFIG_SETTING_TOWN_CARGOGENMODE_BITCOUNT :Lineare
|
||||
|
||||
STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT :Collocazione di alberi durante la partita: {STRING}
|
||||
STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_HELPTEXT :Controlla la comparsa casuale di alberi durante una partita. Può influenzare le industrie che dipendono dalla crescita degli alberi, come le segherie
|
||||
STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_NO_SPREAD :Cresce ma non si diffonde {RED}(distrugge la falegnameria)
|
||||
STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_SPREAD_RAINFOREST :Cresce ma si diffonde solo in foreste pluviali
|
||||
STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_SPREAD_ALL :Cresce e si diffonde ovunque
|
||||
STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_NO_GROWTH_NO_SPREAD :Non cresce e non si diffonde {RED}(distrugge la falegnameria)
|
||||
|
||||
STR_CONFIG_SETTING_TOOLBAR_POS :Posizione barra degli strumenti principale: {STRING}
|
||||
STR_CONFIG_SETTING_TOOLBAR_POS_HELPTEXT :Posizione orizzontale della barra degli strumenti principale sul bordo superiore dello schermo
|
||||
@@ -1693,6 +1717,7 @@ STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_HELPTEXT :Seleziona le un
|
||||
STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_IMPERIAL :Imperiali (mph)
|
||||
STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_METRIC :Metriche (km/h)
|
||||
STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_SI :SI (m/s)
|
||||
STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_GAMEUNITS :Unità di gioco (riquadri/giorno)
|
||||
|
||||
STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER :Unità di potenza veicoli: {STRING}
|
||||
STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_HELPTEXT :Seleziona le unità di misura da utilizzare per mostrare i valori di potenza dei veicoli nell'interfaccia utente
|
||||
@@ -1825,6 +1850,7 @@ STR_INTRO_TRANSLATION :{BLACK}A questa
|
||||
|
||||
# Quit window
|
||||
STR_QUIT_CAPTION :{WHITE}Esci
|
||||
STR_QUIT_ARE_YOU_SURE_YOU_WANT_TO_EXIT_OPENTTD :{YELLOW}Si è sicuri di voler uscire da OpenTTD?
|
||||
STR_QUIT_YES :{BLACK}Sì
|
||||
STR_QUIT_NO :{BLACK}No
|
||||
|
||||
@@ -1836,6 +1862,7 @@ STR_ABANDON_SCENARIO_QUERY :{YELLOW}Si è s
|
||||
# Cheat window
|
||||
STR_CHEATS :{WHITE}Trucchi
|
||||
STR_CHEATS_TOOLTIP :{BLACK}Le caselle indicano se un trucco è già stato usato una volta
|
||||
STR_CHEATS_NOTE :{BLACK}Nota: qualsiasi utilizzo di queste impostazioni sarà registrato nel salvataggio
|
||||
STR_CHEAT_MONEY :{LTBLUE}Aumenta denaro di {CURRENCY_LONG}
|
||||
STR_CHEAT_CHANGE_COMPANY :{LTBLUE}Compagnia controllata: {ORANGE}{COMMA}
|
||||
STR_CHEAT_EXTRA_DYNAMITE :{LTBLUE}Bulldozer magico (rimuove industrie e oggetti fissi): {ORANGE}{STRING}
|
||||
@@ -1987,6 +2014,10 @@ STR_NETWORK_SERVER_LIST_JOIN_GAME :{BLACK}Entra ne
|
||||
STR_NETWORK_SERVER_LIST_REFRESH :{BLACK}Aggiorna
|
||||
STR_NETWORK_SERVER_LIST_REFRESH_TOOLTIP :{BLACK}Aggiorna le informazioni sul server
|
||||
|
||||
STR_NETWORK_SERVER_LIST_SEARCH_SERVER_INTERNET :{BLACK}Cerca su Internet
|
||||
STR_NETWORK_SERVER_LIST_SEARCH_SERVER_INTERNET_TOOLTIP :{BLACK}Cerca server pubblici su Internet
|
||||
STR_NETWORK_SERVER_LIST_SEARCH_SERVER_LAN :{BLACK}Cerca nella LAN
|
||||
STR_NETWORK_SERVER_LIST_SEARCH_SERVER_LAN_TOOLTIP :{BLACK}Cerca server nella LAN
|
||||
STR_NETWORK_SERVER_LIST_ADD_SERVER :{BLACK}Aggiungi server
|
||||
STR_NETWORK_SERVER_LIST_ADD_SERVER_TOOLTIP :{BLACK}Aggiunge un server alla lista di server in cui cercare sempre partite in corso
|
||||
STR_NETWORK_SERVER_LIST_START_SERVER :{BLACK}Avvia server
|
||||
@@ -2212,11 +2243,13 @@ STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_1 :Partita ancora
|
||||
STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_2 :Partita ancora in pausa ({STRING}, {STRING})
|
||||
STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_3 :Partita ancora in pausa ({STRING}, {STRING}, {STRING})
|
||||
STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_4 :Partita ancora in pausa ({STRING}, {STRING}, {STRING}, {STRING})
|
||||
STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_5 :Partita ancora in pausa ({STRING}, {STRING}, {STRING}, {STRING}, {STRING})
|
||||
STR_NETWORK_SERVER_MESSAGE_GAME_UNPAUSED :Partita ripresa ({STRING})
|
||||
STR_NETWORK_SERVER_MESSAGE_GAME_REASON_NOT_ENOUGH_PLAYERS :numero di giocatori
|
||||
STR_NETWORK_SERVER_MESSAGE_GAME_REASON_CONNECTING_CLIENTS :connessione client in corso
|
||||
STR_NETWORK_SERVER_MESSAGE_GAME_REASON_MANUAL :manuale
|
||||
STR_NETWORK_SERVER_MESSAGE_GAME_REASON_GAME_SCRIPT :script
|
||||
STR_NETWORK_SERVER_MESSAGE_GAME_REASON_LINK_GRAPH :in attesa di aggiornamento del grafo delle rotte
|
||||
############ End of leave-in-this-order
|
||||
STR_NETWORK_MESSAGE_CLIENT_LEAVING :abbandono della partita
|
||||
STR_NETWORK_MESSAGE_CLIENT_JOINED :*** {STRING} è entrato nella partita
|
||||
@@ -2226,6 +2259,7 @@ STR_NETWORK_MESSAGE_CLIENT_COMPANY_SPECTATE :*** {STRING} è
|
||||
STR_NETWORK_MESSAGE_CLIENT_COMPANY_NEW :*** {STRING} ha avviato una nuova compagnia (#{2:NUM})
|
||||
STR_NETWORK_MESSAGE_CLIENT_LEFT :*** {STRING} ha abbandonato la partita ({2:STRING})
|
||||
STR_NETWORK_MESSAGE_NAME_CHANGE :*** {STRING} ha cambiato nome in {STRING}
|
||||
STR_NETWORK_MESSAGE_GIVE_MONEY :*** {STRING} ha dato {2:CURRENCY_LONG} a {1:STRING}
|
||||
STR_NETWORK_MESSAGE_SERVER_SHUTDOWN :{WHITE}Il server ha chiuso la sessione
|
||||
STR_NETWORK_MESSAGE_SERVER_REBOOT :{WHITE}Il server si sta riavviando...{}Attendere prego...
|
||||
STR_NETWORK_MESSAGE_KICKED :*** {STRING} è stato espulso. Motivo: ({STRING})
|
||||
@@ -2347,6 +2381,7 @@ STR_JOIN_WAYPOINT_CAPTION :{WHITE}Unisci w
|
||||
STR_JOIN_WAYPOINT_CREATE_SPLITTED_WAYPOINT :{YELLOW}Costruisci waypoint separato
|
||||
|
||||
# Generic toolbar
|
||||
STR_TOOLBAR_DISABLED_NO_VEHICLE_AVAILABLE :{BLACK}Disabilitato perché non ci sono veicoli disponibili per questa infrastruttura
|
||||
|
||||
# Rail construction toolbar
|
||||
STR_RAIL_TOOLBAR_RAILROAD_CONSTRUCTION_CAPTION :Costruzione ferrovie
|
||||
@@ -2546,6 +2581,12 @@ STR_TREES_RANDOM_TYPE :{BLACK}Alberi c
|
||||
STR_TREES_RANDOM_TYPE_TOOLTIP :{BLACK}Pianta alberi di specie a caso. MAIUSC alterna fra costruzione e stima dei costi
|
||||
STR_TREES_RANDOM_TREES_BUTTON :{BLACK}Alberi casuali
|
||||
STR_TREES_RANDOM_TREES_TOOLTIP :{BLACK}Pianta alberi casualmente nel paesaggio
|
||||
STR_TREES_MODE_NORMAL_BUTTON :{BLACK}Normale
|
||||
STR_TREES_MODE_NORMAL_TOOLTIP :{BLACK}Pianta singoli alberi trascinando il mouse sopra il paesaggio.
|
||||
STR_TREES_MODE_FOREST_SM_BUTTON :{BLACK}Bosco
|
||||
STR_TREES_MODE_FOREST_SM_TOOLTIP :{BLACK}Pianta piccole foreste trascinando il mouse sopra il paesaggio.
|
||||
STR_TREES_MODE_FOREST_LG_BUTTON :{BLACK}Foresta
|
||||
STR_TREES_MODE_FOREST_LG_TOOLTIP :{BLACK}Pianta grandi foreste trascinando il mouse sopra il paesaggio.
|
||||
|
||||
# Land generation window (SE)
|
||||
STR_TERRAFORM_TOOLBAR_LAND_GENERATION_CAPTION :{WHITE}Generazione terreno
|
||||
@@ -2596,12 +2637,18 @@ STR_FOUND_TOWN_SELECT_LAYOUT_RANDOM :{BLACK}Casuale
|
||||
# Fund new industry window
|
||||
STR_FUND_INDUSTRY_CAPTION :{WHITE}Finanzia nuova industria
|
||||
STR_FUND_INDUSTRY_SELECTION_TOOLTIP :{BLACK}Selezionare l'industria appropriata dalla lista
|
||||
STR_FUND_INDUSTRY_MANY_RANDOM_INDUSTRIES :Alcune industrie casuali
|
||||
STR_FUND_INDUSTRY_MANY_RANDOM_INDUSTRIES :{BLACK}Crea industrie casuali
|
||||
STR_FUND_INDUSTRY_MANY_RANDOM_INDUSTRIES_TOOLTIP :{BLACK}Copre la mappa con industrie posizionate casualmente
|
||||
STR_FUND_INDUSTRY_MANY_RANDOM_INDUSTRIES_CAPTION :{WHITE}Crea industrie casuali
|
||||
STR_FUND_INDUSTRY_MANY_RANDOM_INDUSTRIES_QUERY :{YELLOW}Si è sicuri di voler creare casualmente molte industrie?
|
||||
STR_FUND_INDUSTRY_INDUSTRY_BUILD_COST :{BLACK}Costo: {YELLOW}{CURRENCY_LONG}
|
||||
STR_FUND_INDUSTRY_PROSPECT_NEW_INDUSTRY :{BLACK}Esegui prospezione
|
||||
STR_FUND_INDUSTRY_BUILD_NEW_INDUSTRY :{BLACK}Costruisci
|
||||
STR_FUND_INDUSTRY_FUND_NEW_INDUSTRY :{BLACK}Finanzia
|
||||
STR_FUND_INDUSTRY_REMOVE_ALL_INDUSTRIES :{BLACK}Rimuovi tutte le industrie
|
||||
STR_FUND_INDUSTRY_REMOVE_ALL_INDUSTRIES_TOOLTIP :{BLACK}Rimuove tutte le industrie presenti sulla mappa
|
||||
STR_FUND_INDUSTRY_REMOVE_ALL_INDUSTRIES_CAPTION :{WHITE}Rimuovi tutte le industrie
|
||||
STR_FUND_INDUSTRY_REMOVE_ALL_INDUSTRIES_QUERY :{YELLOW}Si è sicuri di voler rimuovere tutte le industrie?
|
||||
|
||||
# Industry cargoes window
|
||||
STR_INDUSTRY_CARGOES_INDUSTRY_CAPTION :{WHITE}Catena di distribuzione di {G un un' una} {STRING}
|
||||
@@ -2622,6 +2669,7 @@ STR_INDUSTRY_CARGOES_SELECT_INDUSTRY_TOOLTIP :{BLACK}Selezion
|
||||
|
||||
# Land area window
|
||||
STR_LAND_AREA_INFORMATION_CAPTION :{WHITE}Informazioni sull'area di terreno
|
||||
STR_LAND_AREA_INFORMATION_LOCATION_TOOLTIP :{BLACK}Centra la visuale principale sulla posizione del riquadro. CTRL+clic la mostra in una mini visuale
|
||||
STR_LAND_AREA_INFORMATION_COST_TO_CLEAR_N_A :{BLACK}Costo di demolizione: {LTBLUE}N/A
|
||||
STR_LAND_AREA_INFORMATION_COST_TO_CLEAR :{BLACK}Costo di demolizione: {RED}{CURRENCY_LONG}
|
||||
STR_LAND_AREA_INFORMATION_REVENUE_WHEN_CLEARED :{BLACK}Ricavo da demolizione: {LTBLUE}{CURRENCY_LONG}
|
||||
@@ -2831,6 +2879,8 @@ STR_SAVELOAD_DETAIL_GRFSTATUS :{SILVER}NewGRF:
|
||||
STR_SAVELOAD_FILTER_TITLE :{BLACK}Filtro:
|
||||
STR_SAVELOAD_OVERWRITE_TITLE :{WHITE}Sovrascrivi file
|
||||
STR_SAVELOAD_OVERWRITE_WARNING :{YELLOW}Si è sicuri di voler sovrascrivere il file esistente?
|
||||
STR_SAVELOAD_DIRECTORY :{STRING} (Cartella)
|
||||
STR_SAVELOAD_PARENT_DIRECTORY :{STRING} (Cartella superiore)
|
||||
|
||||
STR_SAVELOAD_OSKTITLE :{BLACK}Inserire un nome per il salvataggio
|
||||
|
||||
@@ -2980,8 +3030,8 @@ STR_NEWGRF_PARAMETERS_NUM_PARAM :{LTBLUE}Numero
|
||||
|
||||
# NewGRF inspect window
|
||||
STR_NEWGRF_INSPECT_CAPTION :{WHITE}Ispeziona - {STRING}
|
||||
STR_NEWGRF_INSPECT_PARENT_BUTTON :{BLACK}Padre
|
||||
STR_NEWGRF_INSPECT_PARENT_TOOLTIP :{BLACK}Ispeziona l'oggetto dell'ambito padre
|
||||
STR_NEWGRF_INSPECT_PARENT_BUTTON :{BLACK}Superiore
|
||||
STR_NEWGRF_INSPECT_PARENT_TOOLTIP :{BLACK}Ispeziona l'oggetto dell'ambito superiore
|
||||
|
||||
STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT :{STRING} a {HEX}
|
||||
STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_OBJECT :Oggetto
|
||||
@@ -3091,6 +3141,7 @@ STR_SIGN_LIST_MATCH_CASE_TOOLTIP :{BLACK}Attiva/d
|
||||
|
||||
# Sign window
|
||||
STR_EDIT_SIGN_CAPTION :{WHITE}Modifica testo del cartello
|
||||
STR_EDIT_SIGN_LOCATION_TOOLTIP :{BLACK}Centra la visuale principale sulla posizione del cartello. CTRL+clic lo mostra in una mini visuale
|
||||
STR_EDIT_SIGN_NEXT_SIGN_TOOLTIP :{BLACK}Va al cartello successivo
|
||||
STR_EDIT_SIGN_PREVIOUS_SIGN_TOOLTIP :{BLACK}Va al cartello precedente
|
||||
|
||||
@@ -3174,10 +3225,10 @@ STR_GOALS_COMPANY_TITLE :{BLACK}Obiettiv
|
||||
STR_GOALS_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Fare clic su un obiettivo per centrare la visuale principale sull'industria, città o riquadro. CTRL+clic mostra l'industria/città/riquadro in una mini visuale
|
||||
|
||||
# Goal question window
|
||||
STR_GOAL_QUESTION_CAPTION_QUESTION :Domanda
|
||||
STR_GOAL_QUESTION_CAPTION_INFORMATION :Informazione
|
||||
STR_GOAL_QUESTION_CAPTION_WARNING :Avviso
|
||||
STR_GOAL_QUESTION_CAPTION_ERROR :Errore
|
||||
STR_GOAL_QUESTION_CAPTION_QUESTION :{BLACK}Domanda
|
||||
STR_GOAL_QUESTION_CAPTION_INFORMATION :{BLACK}Informazioni
|
||||
STR_GOAL_QUESTION_CAPTION_WARNING :{BLACK}Avviso
|
||||
STR_GOAL_QUESTION_CAPTION_ERROR :{YELLOW}Errore
|
||||
|
||||
############ Start of Goal Question button list
|
||||
STR_GOAL_QUESTION_BUTTON_CANCEL :Annulla
|
||||
@@ -3302,7 +3353,7 @@ STR_STATION_VIEW_CLOSE_AIRPORT_TOOLTIP :{BLACK}Impedisc
|
||||
STR_WAYPOINT_VIEW_CAPTION :{WHITE}{WAYPOINT}
|
||||
STR_WAYPOINT_VIEW_CENTER_TOOLTIP :{BLACK}Centra la visuale principale sulla posizione del waypoint. CTRL+clic lo mostra in una mini visuale.
|
||||
STR_WAYPOINT_VIEW_CHANGE_WAYPOINT_NAME :{BLACK}Cambia il nome del waypoint
|
||||
STR_BUOY_VIEW_CENTER_TOOLTIP :{BLACK}Centra la visuale principale sulla posizione della boa. CTRL+clic la mostra in una mini visuale.
|
||||
STR_BUOY_VIEW_CENTER_TOOLTIP :{BLACK}Centra la visuale principale sulla posizione della boa. CTRL+clic la mostra in una mini visuale
|
||||
STR_BUOY_VIEW_CHANGE_BUOY_NAME :{BLACK}Cambia il nome della boa
|
||||
|
||||
STR_EDIT_WAYPOINT_NAME :{WHITE}Rinomina il waypoint
|
||||
@@ -3367,8 +3418,8 @@ STR_COMPANY_VIEW_RELOCATE_HQ :{BLACK}Sposta s
|
||||
STR_COMPANY_VIEW_RELOCATE_COMPANY_HEADQUARTERS :{BLACK}Ricostruisce la sede della compagnia in un altro luogo pagando l'1% del valore della compagnia. MAIUSC+clic mostra il costo stimato senza ricostruire la sede
|
||||
STR_COMPANY_VIEW_INFRASTRUCTURE_BUTTON :{BLACK}Dettagli
|
||||
STR_COMPANY_VIEW_INFRASTRUCTURE_TOOLTIP :{BLACK}Visualizza i conteggi dettagliati delle infrastrutture
|
||||
STR_COMPANY_VIEW_GIVE_MONEY_BUTTON :{BLACK}Dona denaro
|
||||
|
||||
STR_COMPANY_VIEW_GIVE_MONEY_BUTTON :{BLACK}Trasferisci denaro
|
||||
STR_COMPANY_VIEW_GIVE_MONEY_TOOLTIP :{BLACK}Trasferisci denaro a questa compagnia
|
||||
STR_COMPANY_VIEW_NEW_FACE_BUTTON :{BLACK}Nuova faccia
|
||||
STR_COMPANY_VIEW_NEW_FACE_TOOLTIP :{BLACK}Seleziona una nuova faccia per il presidente
|
||||
STR_COMPANY_VIEW_COLOUR_SCHEME_BUTTON :{BLACK}Colori compagnia
|
||||
@@ -3385,9 +3436,9 @@ STR_COMPANY_VIEW_SELL_SHARE_TOOLTIP :{BLACK}Vende un
|
||||
|
||||
STR_COMPANY_VIEW_COMPANY_NAME_QUERY_CAPTION :Nome della compagnia
|
||||
STR_COMPANY_VIEW_PRESIDENT_S_NAME_QUERY_CAPTION :Nome del presidente
|
||||
STR_COMPANY_VIEW_GIVE_MONEY_QUERY_CAPTION :Inserire la quantità di denaro da donare
|
||||
STR_COMPANY_VIEW_GIVE_MONEY_QUERY_CAPTION :Inserisci l'ammontare di denaro che vuoi trasferire
|
||||
|
||||
STR_BUY_COMPANY_MESSAGE :{WHITE}Stiamo cercando una compagnia di trasporti disposta a rilevare la nostra società.{}{} Vorrebbe acquistare la {COMPANY} per {CURRENCY_LONG}?
|
||||
STR_BUY_COMPANY_MESSAGE :{WHITE}Stiamo cercando una società di trasporti disposta a rilevare la nostra compagnia.{}{} Vorrebbe acquistare {COMPANY} per {CURRENCY_LONG}?
|
||||
|
||||
# Company infrastructure window
|
||||
STR_COMPANY_INFRASTRUCTURE_VIEW_CAPTION :{WHITE}Infrastrutture della {COMPANY}
|
||||
@@ -3498,8 +3549,8 @@ STR_GROUP_REMOVE_ALL_VEHICLES :Rimuovi tutti i
|
||||
|
||||
STR_GROUP_RENAME_CAPTION :{BLACK}Rinomina un gruppo
|
||||
|
||||
STR_GROUP_PROFIT_THIS_YEAR :Profitto quest'anno:
|
||||
STR_GROUP_PROFIT_LAST_YEAR :Profitto anno scorso:
|
||||
STR_GROUP_PROFIT_THIS_YEAR :Profitto di quest'anno:
|
||||
STR_GROUP_PROFIT_LAST_YEAR :Profitto dell'anno scorso:
|
||||
STR_GROUP_OCCUPANCY :Utilizzo corrente:
|
||||
STR_GROUP_OCCUPANCY_VALUE :{NUM}%
|
||||
|
||||
@@ -3653,10 +3704,10 @@ STR_DEPOT_CLONE_ROAD_VEHICLE_DEPOT_INFO :{BLACK}Compra u
|
||||
STR_DEPOT_CLONE_SHIP_DEPOT_INFO :{BLACK}Compra una copia di una nave. Fare clic su questo pulsante e quindi su una nave dentro o fuori dal deposito. Tenere premuto CTRL per condividere gli ordini. MAIUSC+clic mostra il costo stimato senza comprare
|
||||
STR_DEPOT_CLONE_AIRCRAFT_INFO_HANGAR_WINDOW :{BLACK}Compra una copia di un aeromobile. Fare clic su questo pulsante e quindi su un aeromobile dentro o fuori dall'hangar. Tenere premuto CTRL per condividere gli ordini. MAIUSC+clic mostra il costo stimato senza comprare
|
||||
|
||||
STR_DEPOT_TRAIN_LOCATION_TOOLTIP :{BLACK}Centra la visuale principale sulla posizione del deposito ferroviario. CTRL+clic lo mostra in una mini visuale.
|
||||
STR_DEPOT_ROAD_VEHICLE_LOCATION_TOOLTIP :{BLACK}Centra la visuale principale sulla posizione del deposito automezzi. CTRL+clic lo mostra in una mini visuale.
|
||||
STR_DEPOT_SHIP_LOCATION_TOOLTIP :{BLACK}Centra la visuale principale sulla posizione del deposito navale. CTRL+clic lo mostra in una mini visuale.
|
||||
STR_DEPOT_AIRCRAFT_LOCATION_TOOLTIP :{BLACK}Centra la visuale principale sulla posizione dell'hangar. CTRL+clic lo mostra in una mini visuale.
|
||||
STR_DEPOT_TRAIN_LOCATION_TOOLTIP :{BLACK}Centra la visuale principale sulla posizione del deposito ferroviario. CTRL+clic lo mostra in una mini visuale
|
||||
STR_DEPOT_ROAD_VEHICLE_LOCATION_TOOLTIP :{BLACK}Centra la visuale principale sulla posizione del deposito automezzi. CTRL+clic lo mostra in una mini visuale
|
||||
STR_DEPOT_SHIP_LOCATION_TOOLTIP :{BLACK}Centra la visuale principale sulla posizione del deposito navale. CTRL+clic lo mostra in una mini visuale
|
||||
STR_DEPOT_AIRCRAFT_LOCATION_TOOLTIP :{BLACK}Centra la visuale principale sulla posizione dell'hangar. CTRL+clic lo mostra in una mini visuale
|
||||
|
||||
STR_DEPOT_VEHICLE_ORDER_LIST_TRAIN_TOOLTIP :{BLACK}Elenca tutti i treni che hanno questo deposito nei loro ordini
|
||||
STR_DEPOT_VEHICLE_ORDER_LIST_ROAD_VEHICLE_TOOLTIP :{BLACK}Elenca tutti gli automezzi che hanno questo deposito nei loro ordini
|
||||
@@ -3673,7 +3724,7 @@ STR_DEPOT_MASS_START_DEPOT_ROAD_VEHICLE_TOOLTIP :{BLACK}Fare cli
|
||||
STR_DEPOT_MASS_START_DEPOT_SHIP_TOOLTIP :{BLACK}Fare clic per avviare tutte le navi nel deposito
|
||||
STR_DEPOT_MASS_START_HANGAR_TOOLTIP :{BLACK}Fare clic per avviare tutti gli aeromobili nell'hangar
|
||||
|
||||
STR_DEPOT_SELL_CONFIRMATION_TEXT :{YELLOW}Stai per vendere tutti i veicoli nel deposito. Sei sicuro?
|
||||
STR_DEPOT_SELL_CONFIRMATION_TEXT :{YELLOW}Si stano per vendere tutti i veicoli nel deposito. Si è sicuri?
|
||||
|
||||
# Engine preview window
|
||||
STR_ENGINE_PREVIEW_CAPTION :{WHITE}Messaggio da un costruttore di veicoli
|
||||
@@ -3746,6 +3797,10 @@ STR_REPLACE_REMOVE_WAGON_HELP :{BLACK}Fa sì c
|
||||
# Vehicle view
|
||||
STR_VEHICLE_VIEW_CAPTION :{WHITE}{VEHICLE}
|
||||
|
||||
STR_VEHICLE_VIEW_TRAIN_CENTER_TOOLTIP :{BLACK}Centra la visuale principale sulla posizione del treno. Doppio clic lo segue nella visuale principale. CTRL+clic lo mostra in una mini visuale
|
||||
STR_VEHICLE_VIEW_ROAD_VEHICLE_CENTER_TOOLTIP :{BLACK}Centra la visuale principale sulla posizione del veicolo. Doppio click lo segue nella visuale principale. CTRL+Click lo mostra in una mini visuale
|
||||
STR_VEHICLE_VIEW_SHIP_CENTER_TOOLTIP :{BLACK}Centra la visuale principale sulla posizione della nave. Doppio clic la segue nella visuale principale. CTRL+clic la mostra in una mini visuale
|
||||
STR_VEHICLE_VIEW_AIRCRAFT_CENTER_TOOLTIP :{BLACK}Centra la visuale principale sulla posizione dell'aeromobile. Doppio click lo segue nella visuale principale. CTRL+Click lo mostra in una mini visuale
|
||||
|
||||
STR_VEHICLE_VIEW_TRAIN_SEND_TO_DEPOT_TOOLTIP :{BLACK}Manda il treno al deposito. CTRL+clic per eseguire solo una manutenzione
|
||||
STR_VEHICLE_VIEW_ROAD_VEHICLE_SEND_TO_DEPOT_TOOLTIP :{BLACK}Manda l'automezzo al deposito. CTRL+clic per eseguire solo una manutenzione
|
||||
@@ -3777,7 +3832,12 @@ STR_VEHICLE_VIEW_ROAD_VEHICLE_SHOW_DETAILS_TOOLTIP :{BLACK}Mostra i
|
||||
STR_VEHICLE_VIEW_SHIP_SHOW_DETAILS_TOOLTIP :{BLACK}Mostra i dettagli sulla nave
|
||||
STR_VEHICLE_VIEW_AIRCRAFT_SHOW_DETAILS_TOOLTIP :{BLACK}Mostra i dettagli sull'aeromobile
|
||||
|
||||
STR_VEHICLE_VIEW_TRAIN_STATUS_START_STOP_TOOLTIP :{BLACK}Azione in corso del treno - clicca per fermare o far partire il treno
|
||||
STR_VEHICLE_VIEW_ROAD_VEHICLE_STATUS_START_STOP_TOOLTIP :{BLACK}Azione in corso del veicolo - clicca per fermare o far partire il veicolo
|
||||
STR_VEHICLE_VIEW_SHIP_STATE_STATUS_STOP_TOOLTIP :{BLACK}Azione in corso della nave - clicca per fermare o far partire la nave
|
||||
STR_VEHICLE_VIEW_AIRCRAFT_STATUS_START_STOP_TOOLTIP :{BLACK}Azione in corso dell'aeromobile - clicca per fermare o far partire l'aeromobile
|
||||
|
||||
STR_VEHICLE_VIEW_ORDER_LOCATION_TOOLTIP :{BLACK}Centra la visuale principale sulla destinazione dell'ordine. CTRL+clic la mostra in una mini visuale.
|
||||
|
||||
# Messages in the start stop button in the vehicle view
|
||||
STR_VEHICLE_STATUS_LOADING_UNLOADING :{LTBLUE}Caricamento / Scaricamento
|
||||
@@ -4005,6 +4065,7 @@ STR_ORDER_REFIT_STOP_ORDER :(Riadatta per {
|
||||
STR_ORDER_STOP_ORDER :(Ferma)
|
||||
|
||||
STR_ORDER_GO_TO_STATION :{STRING} {STATION} {STRING}
|
||||
STR_ORDER_GO_TO_STATION_CAN_T_USE_STATION :{PUSH_COLOUR}{RED}(Impossibile usare la stazione){POP_COLOUR} {STRING} {STATION} {STRING}
|
||||
|
||||
STR_ORDER_IMPLICIT :(Implicito)
|
||||
|
||||
@@ -4249,6 +4310,7 @@ STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :Salvataggio cre
|
||||
STR_GAME_SAVELOAD_ERROR_FILE_NOT_READABLE :File non leggibile
|
||||
STR_GAME_SAVELOAD_ERROR_FILE_NOT_WRITEABLE :File non scrivibile
|
||||
STR_GAME_SAVELOAD_ERROR_DATA_INTEGRITY_CHECK_FAILED :Controllo integrità dati non riuscito
|
||||
STR_GAME_SAVELOAD_ERROR_PATCHPACK :Salvataggio creato con una versione modificata
|
||||
STR_GAME_SAVELOAD_NOT_AVAILABLE :<non disponibile>
|
||||
STR_WARNING_LOADGAME_REMOVED_TRAMS :{WHITE}La partita è stata salvata in una versione senza il supporto per i tram. Tutti i tram sono stati rimossi
|
||||
|
||||
@@ -4328,7 +4390,8 @@ STR_ERROR_CAN_T_BORROW_ANY_MORE_MONEY :{WHITE}Impossib
|
||||
STR_ERROR_LOAN_ALREADY_REPAYED :{WHITE}... debito già estinto
|
||||
STR_ERROR_CURRENCY_REQUIRED :{WHITE}... {CURRENCY_LONG} richiesti
|
||||
STR_ERROR_CAN_T_REPAY_LOAN :{WHITE}Impossibile ripagare il prestito...
|
||||
STR_ERROR_INSUFFICIENT_FUNDS :{WHITE}Impossibile donare denaro prestato dalla banca...
|
||||
STR_ERROR_INSUFFICIENT_FUNDS :{WHITE}Impossibile trasferire denaro prestato dalla banca...
|
||||
STR_ERROR_CAN_T_GIVE_MONEY :{WHITE}Impossibile trasferire denaro a questa compagnia...
|
||||
STR_ERROR_CAN_T_BUY_COMPANY :{WHITE}Impossibile comprare la compagnia...
|
||||
STR_ERROR_CAN_T_BUILD_COMPANY_HEADQUARTERS :{WHITE}Impossibile costruire la sede della compagnia...
|
||||
STR_ERROR_CAN_T_BUY_25_SHARE_IN_THIS :{WHITE}Impossibile comprare il 25% delle azioni...
|
||||
@@ -4455,6 +4518,8 @@ STR_ERROR_DEPOT_WRONG_DEPOT_TYPE :Tipo di deposit
|
||||
STR_ERROR_TRAIN_TOO_LONG_AFTER_REPLACEMENT :{WHITE}{VEHICLE} è diventato troppo lungo dopo la sostituzione
|
||||
STR_ERROR_AUTOREPLACE_NOTHING_TO_DO :{WHITE}Nessuna regola di rimpiazzo/rinnovo automatico applicata
|
||||
STR_ERROR_AUTOREPLACE_MONEY_LIMIT :(limite denaro)
|
||||
STR_ERROR_AUTOREPLACE_INCOMPATIBLE_CARGO :{WHITE}Il nuovo veicolo non può trasportare {STRING}
|
||||
STR_ERROR_AUTOREPLACE_INCOMPATIBLE_REFIT :{WHITE}Il nuovo veicolo non può riadattare il carico nell'ordine {NUM}
|
||||
|
||||
# Rail construction errors
|
||||
STR_ERROR_IMPOSSIBLE_TRACK_COMBINATION :{WHITE}Combinazione di binari impossibile
|
||||
@@ -4539,7 +4604,7 @@ STR_ERROR_YOU_ALREADY_OWN_IT :{WHITE}... già
|
||||
STR_ERROR_GROUP_CAN_T_CREATE :{WHITE}Impossibile creare il gruppo...
|
||||
STR_ERROR_GROUP_CAN_T_DELETE :{WHITE}Impossibile eliminare il gruppo...
|
||||
STR_ERROR_GROUP_CAN_T_RENAME :{WHITE}Impossibile rinominare il gruppo...
|
||||
STR_ERROR_GROUP_CAN_T_SET_PARENT :{WHITE}Impossibile impostare il gruppo contenitore...
|
||||
STR_ERROR_GROUP_CAN_T_SET_PARENT :{WHITE}Impossibile impostare il gruppo superiore...
|
||||
STR_ERROR_GROUP_CAN_T_SET_PARENT_RECURSION :{WHITE}... non sono ammessi cicli nella gerarchia dei gruppi
|
||||
STR_ERROR_GROUP_CAN_T_REMOVE_ALL_VEHICLES :{WHITE}Impossibile rimuovere tutti i veicoli del gruppo...
|
||||
STR_ERROR_GROUP_CAN_T_ADD_VEHICLE :{WHITE}Impossibile aggiungere il veicolo al gruppo...
|
||||
@@ -4741,10 +4806,10 @@ STR_INDUSTRY_NAME_SUGAR_MINE :{G=f}Miniera di
|
||||
##id 0x6000
|
||||
STR_SV_EMPTY :
|
||||
STR_SV_UNNAMED :Senza nome
|
||||
STR_SV_TRAIN_NAME :Treno {COMMA}
|
||||
STR_SV_ROAD_VEHICLE_NAME :Automezzo {COMMA}
|
||||
STR_SV_SHIP_NAME :Nave {COMMA}
|
||||
STR_SV_AIRCRAFT_NAME :Aeromobile {COMMA}
|
||||
STR_SV_TRAIN_NAME :Treno #{COMMA}
|
||||
STR_SV_ROAD_VEHICLE_NAME :Automezzo #{COMMA}
|
||||
STR_SV_SHIP_NAME :Nave #{COMMA}
|
||||
STR_SV_AIRCRAFT_NAME :Aeromobile #{COMMA}
|
||||
|
||||
STR_SV_STNAME :{STRING}
|
||||
STR_SV_STNAME_NORTH :{STRING} Nord
|
||||
@@ -5046,6 +5111,7 @@ STR_FORMAT_BUOY_NAME :Boa di {TOWN}
|
||||
STR_FORMAT_BUOY_NAME_SERIAL :{TOWN} Boa #{COMMA}
|
||||
STR_FORMAT_COMPANY_NUM :(Compagnia {COMMA})
|
||||
STR_FORMAT_GROUP_NAME :Gruppo {COMMA}
|
||||
STR_FORMAT_GROUP_VEHICLE_NAME :{GROUP} #{COMMA}
|
||||
STR_FORMAT_INDUSTRY_NAME :{1:STRING} di {0:TOWN}
|
||||
STR_FORMAT_WAYPOINT_NAME :Waypoint di {TOWN}
|
||||
STR_FORMAT_WAYPOINT_NAME_SERIAL :Waypoint di {TOWN} #{COMMA}
|
||||
|
||||
@@ -563,8 +563,6 @@ STR_MONTH_DEC :12
|
||||
# Graph window
|
||||
STR_GRAPH_KEY_BUTTON :{BLACK}凡例
|
||||
STR_GRAPH_KEY_TOOLTIP :{BLACK}この凡例の表示/非表示を切り替えます
|
||||
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}月{} {STRING}月
|
||||
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}月{} {STRING}月{}{NUM}年
|
||||
STR_GRAPH_Y_LABEL :{TINY_FONT}{STRING}
|
||||
STR_GRAPH_Y_LABEL_NUMBER :{TINY_FONT}{COMMA}
|
||||
|
||||
|
||||
@@ -586,8 +586,8 @@ STR_MONTH_DEC :{G=m}12월
|
||||
# Graph window
|
||||
STR_GRAPH_KEY_BUTTON :{BLACK}범례
|
||||
STR_GRAPH_KEY_TOOLTIP :{BLACK}그래프의 범례를 보여줍니다.
|
||||
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}{} {STRING}
|
||||
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{} {STRING}{}{NUM}
|
||||
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}
|
||||
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{}{NUM}
|
||||
STR_GRAPH_Y_LABEL :{TINY_FONT}{STRING}
|
||||
STR_GRAPH_Y_LABEL_NUMBER :{TINY_FONT}{COMMA}
|
||||
|
||||
|
||||
@@ -751,8 +751,8 @@ STR_MONTH_DEC :Decembris
|
||||
# Graph window
|
||||
STR_GRAPH_KEY_BUTTON :{BLACK}Clavis
|
||||
STR_GRAPH_KEY_TOOLTIP :{BLACK}Monstrare formularum clavem
|
||||
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}{} {STRING}
|
||||
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{} {STRING}{}{NUM}
|
||||
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}
|
||||
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{}{NUM}
|
||||
STR_GRAPH_Y_LABEL :{TINY_FONT}{STRING}
|
||||
STR_GRAPH_Y_LABEL_NUMBER :{TINY_FONT}{COMMA}
|
||||
|
||||
|
||||
@@ -579,8 +579,8 @@ STR_MONTH_DEC :Decembris
|
||||
# Graph window
|
||||
STR_GRAPH_KEY_BUTTON :{BLACK}Apzīmējumu atslēga
|
||||
STR_GRAPH_KEY_TOOLTIP :{BLACK}Diagrammās rādīt apzīmējumu atslēgas
|
||||
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}{} {STRING}
|
||||
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{} {STRING}{}{NUM}
|
||||
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}
|
||||
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{}{NUM}
|
||||
STR_GRAPH_Y_LABEL :{TINY_FONT}{STRING}
|
||||
STR_GRAPH_Y_LABEL_NUMBER :{TINY_FONT}{COMMA}
|
||||
|
||||
|
||||
@@ -756,8 +756,8 @@ STR_MONTH_DEC :Gruodis
|
||||
# Graph window
|
||||
STR_GRAPH_KEY_BUTTON :{BLACK}Spalva
|
||||
STR_GRAPH_KEY_TOOLTIP :{BLACK}Rodo žaidėjų spalvas
|
||||
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}{} {STRING}
|
||||
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{} {STRING}{}{NUM}
|
||||
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}
|
||||
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{}{NUM}
|
||||
STR_GRAPH_Y_LABEL :{TINY_FONT}{STRING}
|
||||
STR_GRAPH_Y_LABEL_NUMBER :{TINY_FONT}{COMMA}
|
||||
|
||||
|
||||
@@ -569,8 +569,8 @@ STR_MONTH_DEC :Dezember
|
||||
# Graph window
|
||||
STR_GRAPH_KEY_BUTTON :{BLACK}Legend
|
||||
STR_GRAPH_KEY_TOOLTIP :{BLACK}Weis d'Legend vun der Grafik
|
||||
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}{} {STRING}
|
||||
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{} {STRING}{}{NUM}
|
||||
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}
|
||||
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{}{NUM}
|
||||
STR_GRAPH_Y_LABEL :{TINY_FONT}{STRING}
|
||||
STR_GRAPH_Y_LABEL_NUMBER :{TINY_FONT}{COMMA}
|
||||
|
||||
|
||||
@@ -542,8 +542,8 @@ STR_MONTH_DEC :Disember
|
||||
# Graph window
|
||||
STR_GRAPH_KEY_BUTTON :{BLACK}Kunci
|
||||
STR_GRAPH_KEY_TOOLTIP :{BLACK}Tunjukkan kunci kepada graf
|
||||
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}{} {STRING}
|
||||
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{} {STRING}{}{NUM}
|
||||
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}
|
||||
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{}{NUM}
|
||||
STR_GRAPH_Y_LABEL :{TINY_FONT}{STRING}
|
||||
STR_GRAPH_Y_LABEL_NUMBER :{TINY_FONT}{COMMA}
|
||||
|
||||
|
||||
@@ -579,8 +579,8 @@ STR_MONTH_DEC :desember
|
||||
# Graph window
|
||||
STR_GRAPH_KEY_BUTTON :{BLACK}Nøkkel
|
||||
STR_GRAPH_KEY_TOOLTIP :{BLACK}Vis nøkkel for grafene
|
||||
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}{} {STRING}
|
||||
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{} {STRING}{}{NUM}
|
||||
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}
|
||||
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{}{NUM}
|
||||
STR_GRAPH_Y_LABEL :{TINY_FONT}{STRING}
|
||||
STR_GRAPH_Y_LABEL_NUMBER :{TINY_FONT}{COMMA}
|
||||
|
||||
@@ -949,6 +949,7 @@ STR_GAME_OPTIONS_CURRENCY_NTD :Ny Taiwan Dolla
|
||||
STR_GAME_OPTIONS_CURRENCY_CNY :Chinese Renminbi (CNY)
|
||||
STR_GAME_OPTIONS_CURRENCY_HKD :Hong Kong Dollar (HKD)
|
||||
STR_GAME_OPTIONS_CURRENCY_INR :Indisk rupi (INR)
|
||||
STR_GAME_OPTIONS_CURRENCY_IDR :Indonesisk Rupi (IDR)
|
||||
############ end of currency region
|
||||
|
||||
STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_LEFT :Venstrekjøring
|
||||
@@ -1005,6 +1006,7 @@ STR_GAME_OPTIONS_RESOLUTION_OTHER :annet
|
||||
STR_GAME_OPTIONS_GUI_ZOOM_FRAME :{BLACK}Grensesnitt-størrelse
|
||||
STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_TOOLTIP :{BLACK}Velg grensesnitt-størrelsen som skal benyttes
|
||||
|
||||
STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_AUTO :(finn automatisk)
|
||||
STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_NORMAL :Normal
|
||||
STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_2X_ZOOM :2 ganger størrelse
|
||||
STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_4X_ZOOM :4 ganger størrelse
|
||||
@@ -1012,6 +1014,7 @@ STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_4X_ZOOM :4 ganger størr
|
||||
STR_GAME_OPTIONS_FONT_ZOOM :{BLACK}Skriftstørrelse
|
||||
STR_GAME_OPTIONS_FONT_ZOOM_DROPDOWN_TOOLTIP :{BLACK}Velg skriftstørrelse for grensesnitt
|
||||
|
||||
STR_GAME_OPTIONS_FONT_ZOOM_DROPDOWN_AUTO :(finn automatisk)
|
||||
STR_GAME_OPTIONS_FONT_ZOOM_DROPDOWN_NORMAL :Normal
|
||||
STR_GAME_OPTIONS_FONT_ZOOM_DROPDOWN_2X_ZOOM :Dobbel størrelse
|
||||
STR_GAME_OPTIONS_FONT_ZOOM_DROPDOWN_4X_ZOOM :Firedobbel størrelse
|
||||
@@ -2608,12 +2611,18 @@ STR_FOUND_TOWN_SELECT_LAYOUT_RANDOM :{BLACK}Tilfeldi
|
||||
# Fund new industry window
|
||||
STR_FUND_INDUSTRY_CAPTION :{WHITE}Finansier ny industri
|
||||
STR_FUND_INDUSTRY_SELECTION_TOOLTIP :{BLACK}Velg passende industri fra listen
|
||||
STR_FUND_INDUSTRY_MANY_RANDOM_INDUSTRIES :Mange tilfeldige industrier
|
||||
STR_FUND_INDUSTRY_MANY_RANDOM_INDUSTRIES :{BLACK}Mange tilfeldige industrier
|
||||
STR_FUND_INDUSTRY_MANY_RANDOM_INDUSTRIES_TOOLTIP :{BLACK}Dekk kartet med tilfeldig plasserte industrier
|
||||
STR_FUND_INDUSTRY_MANY_RANDOM_INDUSTRIES_CAPTION :{WHITE}Opprett tilfeldig industrier
|
||||
STR_FUND_INDUSTRY_MANY_RANDOM_INDUSTRIES_QUERY :{YELLOW}Er du sikker på at du vil lage mange tilfeldige industrier?
|
||||
STR_FUND_INDUSTRY_INDUSTRY_BUILD_COST :{BLACK}Koster: {YELLOW}{CURRENCY_LONG}
|
||||
STR_FUND_INDUSTRY_PROSPECT_NEW_INDUSTRY :{BLACK}Prospekt
|
||||
STR_FUND_INDUSTRY_BUILD_NEW_INDUSTRY :{BLACK}Bygg
|
||||
STR_FUND_INDUSTRY_FUND_NEW_INDUSTRY :{BLACK}Finansier
|
||||
STR_FUND_INDUSTRY_REMOVE_ALL_INDUSTRIES :{BLACK}Fjern alle industrier
|
||||
STR_FUND_INDUSTRY_REMOVE_ALL_INDUSTRIES_TOOLTIP :{BLACK}Fjern alle industrier på kartet
|
||||
STR_FUND_INDUSTRY_REMOVE_ALL_INDUSTRIES_CAPTION :{WHITE}Fjern alle industrier
|
||||
STR_FUND_INDUSTRY_REMOVE_ALL_INDUSTRIES_QUERY :{YELLOW}Er du sikker på at du vil fjerne alle industriene?
|
||||
|
||||
# Industry cargoes window
|
||||
STR_INDUSTRY_CARGOES_INDUSTRY_CAPTION :{WHITE}Industrikjede for {STRING}
|
||||
@@ -2844,6 +2853,8 @@ STR_SAVELOAD_DETAIL_GRFSTATUS :{SILVER}NewGRF:
|
||||
STR_SAVELOAD_FILTER_TITLE :{BLACK}Filtrer streng:
|
||||
STR_SAVELOAD_OVERWRITE_TITLE :{WHITE}Overskriv fil
|
||||
STR_SAVELOAD_OVERWRITE_WARNING :{YELLOW}Er du sikker på at du vil overskrive eksisterende fil?
|
||||
STR_SAVELOAD_DIRECTORY :{STRING} (Liste)
|
||||
STR_SAVELOAD_PARENT_DIRECTORY :{STRING} (Foreldrekatalog)
|
||||
|
||||
STR_SAVELOAD_OSKTITLE :{BLACK}Skriv inn et navn på spillet som skal lagres
|
||||
|
||||
|
||||
@@ -562,8 +562,8 @@ STR_MONTH_DEC :desember
|
||||
# Graph window
|
||||
STR_GRAPH_KEY_BUTTON :{BLACK}Nøkkel
|
||||
STR_GRAPH_KEY_TOOLTIP :{BLACK}Syne nøkkel til grafer
|
||||
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}{} {STRING}
|
||||
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{} {STRING}{}{NUM}
|
||||
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}
|
||||
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{}{NUM}
|
||||
STR_GRAPH_Y_LABEL :{TINY_FONT}{STRING}
|
||||
STR_GRAPH_Y_LABEL_NUMBER :{TINY_FONT}{COMMA}
|
||||
|
||||
|
||||
@@ -956,8 +956,8 @@ STR_MONTH_DEC :Grudzień
|
||||
# Graph window
|
||||
STR_GRAPH_KEY_BUTTON :{BLACK}Legenda
|
||||
STR_GRAPH_KEY_TOOLTIP :{BLACK}Pokaż legendę na wykresie
|
||||
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}{} {STRING}
|
||||
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{} {STRING}{}{NUM}
|
||||
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}
|
||||
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{}{NUM}
|
||||
STR_GRAPH_Y_LABEL :{TINY_FONT}{STRING}
|
||||
STR_GRAPH_Y_LABEL_NUMBER :{TINY_FONT}{COMMA}
|
||||
|
||||
@@ -2374,8 +2374,8 @@ STR_NETWORK_SERVER_LIST_SEARCH_SERVER_INTERNET :Przeszukaj inte
|
||||
STR_NETWORK_SERVER_LIST_SEARCH_SERVER_INTERNET_TOOLTIP :{BLACK}Znajdź w internecie serwery publiczne
|
||||
STR_NETWORK_SERVER_LIST_SEARCH_SERVER_LAN :Przeszukaj LAN
|
||||
STR_NETWORK_SERVER_LIST_SEARCH_SERVER_LAN_TOOLTIP :Znajdź serwery w sieci lokalnej
|
||||
STR_NETWORK_SERVER_LIST_ADD_SERVER :{BLACK}Dodaj serwer
|
||||
STR_NETWORK_SERVER_LIST_ADD_SERVER_TOOLTIP :{BLACK}Dodaj serwer do listy, która będzie przeszukiwana w poszukiwaniu uruchomionych gier
|
||||
STR_NETWORK_SERVER_LIST_ADD_SERVER :{BLACK}Zapisz serwer
|
||||
STR_NETWORK_SERVER_LIST_ADD_SERVER_TOOLTIP :{BLACK}Zapisz serwer na liście serwerów, które będą zawsze sprawdzane w poszukiwaniu uruchomionych gier
|
||||
STR_NETWORK_SERVER_LIST_START_SERVER :{BLACK}Uruchom serwer
|
||||
STR_NETWORK_SERVER_LIST_START_SERVER_TOOLTIP :{BLACK}Uruchom własny serwer
|
||||
|
||||
|
||||
@@ -572,8 +572,8 @@ STR_MONTH_DEC :Dezembro
|
||||
# Graph window
|
||||
STR_GRAPH_KEY_BUTTON :{BLACK}Chave
|
||||
STR_GRAPH_KEY_TOOLTIP :{BLACK}Mostrar chave dos gráficos
|
||||
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}{} {STRING}
|
||||
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{} {STRING}{}{NUM}
|
||||
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}
|
||||
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{}{NUM}
|
||||
STR_GRAPH_Y_LABEL :{TINY_FONT}{STRING}
|
||||
STR_GRAPH_Y_LABEL_NUMBER :{TINY_FONT}{COMMA}
|
||||
|
||||
|
||||
@@ -187,6 +187,7 @@ STR_COLOUR_ORANGE :Portocaliu
|
||||
STR_COLOUR_BROWN :Maro
|
||||
STR_COLOUR_GREY :Gri
|
||||
STR_COLOUR_WHITE :Alb
|
||||
STR_COLOUR_RANDOM :Aleator
|
||||
STR_COLOUR_DEFAULT :Prestabilit
|
||||
|
||||
# Units used in OpenTTD
|
||||
@@ -466,6 +467,7 @@ STR_TOOLBAR_SOUND_MUSIC :Sunet/muzică
|
||||
############ range for message menu starts
|
||||
STR_NEWS_MENU_LAST_MESSAGE_NEWS_REPORT :Ultimul mesaj/ultima ştire
|
||||
STR_NEWS_MENU_MESSAGE_HISTORY_MENU :Lista ultimelor mesaje
|
||||
STR_NEWS_MENU_DELETE_ALL_MESSAGES :Șterge toate mesajele
|
||||
############ range ends here
|
||||
|
||||
############ range for about menu starts
|
||||
@@ -564,8 +566,8 @@ STR_MONTH_DEC :decembrie
|
||||
# Graph window
|
||||
STR_GRAPH_KEY_BUTTON :{BLACK}Legendă
|
||||
STR_GRAPH_KEY_TOOLTIP :{BLACK}Afişează legenda graficelor
|
||||
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}{} {STRING}
|
||||
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{} {STRING}{}{NUM}
|
||||
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}
|
||||
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{}{NUM}
|
||||
STR_GRAPH_Y_LABEL :{TINY_FONT}{STRING}
|
||||
STR_GRAPH_Y_LABEL_NUMBER :{TINY_FONT}{COMMA}
|
||||
|
||||
@@ -1166,6 +1168,7 @@ STR_CONFIG_SETTING_AUTOSLOPE :Permite terra-f
|
||||
STR_CONFIG_SETTING_AUTOSLOPE_HELPTEXT :Permite terraformarea sub clădiri şi şine fără eliminarea acestora
|
||||
STR_CONFIG_SETTING_CATCHMENT :Permite arii de cuprindere mai realiste: {STRING}
|
||||
STR_CONFIG_SETTING_CATCHMENT_HELPTEXT :Permite zone diferite de captare pentru tipuri diferite de staţii şi aeroporturi
|
||||
STR_CONFIG_SETTING_SERVE_NEUTRAL_INDUSTRIES_HELPTEXT :Dacă este activată, industriile cu stații atașate (cum ar fi Platforma petrolieră) pot fi deservite și de stațiile alăturate ale companiilor. Dacă e dezactivată, aceste industrii nu vor putea fi servite decât prin intermediul stațiilor atașate. Nicio stație din preajmă a unei companii nu le va putea deservi, iar stația atașată nu va putea deservi decât industria sa.
|
||||
STR_CONFIG_SETTING_EXTRADYNAMITE :Permite demolarea unui nr. mai mare de construcţii deţinute de oraş: {STRING}
|
||||
STR_CONFIG_SETTING_EXTRADYNAMITE_HELPTEXT :Facilitează eliminarea de clădiri şi infrastructură deţinute de oraş
|
||||
STR_CONFIG_SETTING_TRAIN_LENGTH :Lungimea maximă a trenurilor: {STRING}
|
||||
@@ -1404,6 +1407,7 @@ STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS :Pastrează acti
|
||||
STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS_HELPTEXT :Menține barele de construcție pentru tunele, poduri șamd deschise după folosire
|
||||
STR_CONFIG_SETTING_EXPENSES_LAYOUT :Grupează cheltuielile în raportul financiar al companiei: {STRING}
|
||||
STR_CONFIG_SETTING_EXPENSES_LAYOUT_HELPTEXT :Definește stilul ferestrei care afișează cheltuielile companiei
|
||||
STR_CONFIG_SETTING_AUTO_REMOVE_SIGNALS_HELPTEXT :Elimină automat semnalele când construiești căi ferate dacă ele îți vin în cale. Nu uita că asta ar putea conduce la accidente feroviare.
|
||||
|
||||
STR_CONFIG_SETTING_SOUND_TICKER :Afișaj știri: {STRING}
|
||||
STR_CONFIG_SETTING_SOUND_TICKER_HELPTEXT :Redă sunet la afișarea sumarului știrilor
|
||||
@@ -1511,6 +1515,7 @@ STR_CONFIG_SETTING_NEWS_MESSAGES_FULL :Pe larg
|
||||
STR_CONFIG_SETTING_COLOURED_NEWS_YEAR :Ştirile color apar în: {STRING}
|
||||
STR_CONFIG_SETTING_COLOURED_NEWS_YEAR_HELPTEXT :Anul începând cu care anunțurile din ziar sunt tipărite color. Înainte de acest an, anunturile sunt monocrome (alb/negru)
|
||||
STR_CONFIG_SETTING_STARTING_YEAR :Anul de început al jocului: {STRING}
|
||||
STR_CONFIG_SETTING_ENDING_YEAR_VALUE :{NUM}
|
||||
STR_CONFIG_SETTING_ALLOW_SHARES :Permite cumpărarea de acţiuni de la alte companii: {STRING}
|
||||
STR_CONFIG_SETTING_ALLOW_SHARES_HELPTEXT :Dacă este activată, se permite cumpărarea și vânzarea de acțiuni ale companiilor. Acțiunile devin disponibile doar când compania depășește o anumită vârstă
|
||||
STR_CONFIG_SETTING_FEEDER_PAYMENT_SHARE :Procentul din profitul pe secţiune care să fie plătit pentru alimentare: {STRING}
|
||||
@@ -1552,6 +1557,10 @@ STR_CONFIG_SETTING_TOWN_FOUNDING_HELPTEXT :Dacă este acti
|
||||
STR_CONFIG_SETTING_TOWN_FOUNDING_FORBIDDEN :nepermis
|
||||
STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED :permis
|
||||
STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED_CUSTOM_LAYOUT :permis, aspect particularizat al oraşului
|
||||
STR_CONFIG_SETTING_TOWN_CARGOGENMODE :Modalitatea de generare a cargoului dintr-un oraș: {STRING}
|
||||
STR_CONFIG_SETTING_TOWN_CARGOGENMODE_HELPTEXT :Cât cargo este produs de casele dintr-un oraș, relativ la populația totală a orașului.{}Creștere pătratică: Un oraș de 2 ori mai mare generează de 4 ori mai mulți pasageri.{}Creștere liniară: Un oraș de 2 ori mai mare generează de 4 ori mai mulți pasageri.
|
||||
STR_CONFIG_SETTING_TOWN_CARGOGENMODE_ORIGINAL :Pătratică (originală)
|
||||
STR_CONFIG_SETTING_TOWN_CARGOGENMODE_BITCOUNT :Liniar
|
||||
|
||||
STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT :Poziţionarea copacilor în joc: {STRING}
|
||||
STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_HELPTEXT :Controlează apariția aleatoare a copacilor în joc. Este posibil ca această opțiune să afecteze industrii care depind de creșterea copacilor, cum ar fi fabricile de cherestea
|
||||
@@ -2138,6 +2147,7 @@ STR_NETWORK_MESSAGE_CLIENT_COMPANY_SPECTATE :*** {STRING} a
|
||||
STR_NETWORK_MESSAGE_CLIENT_COMPANY_NEW :*** {STRING} a început o companie nouă (#{2:NUM})
|
||||
STR_NETWORK_MESSAGE_CLIENT_LEFT :*** {STRING} a ieşit din joc ({2:STRING})
|
||||
STR_NETWORK_MESSAGE_NAME_CHANGE :*** {STRING} şi-a schimbat numele în {STRING}
|
||||
STR_NETWORK_MESSAGE_GIVE_MONEY :*** {STRING} a dat {2:CURRENCY_LONG} către {1:STRING}
|
||||
STR_NETWORK_MESSAGE_SERVER_SHUTDOWN :{WHITE}Serverul a închis conexiunea
|
||||
STR_NETWORK_MESSAGE_SERVER_REBOOT :{WHITE}Serverul este repornit...{}Vă rugăm aşteptaţi...
|
||||
|
||||
|
||||
@@ -716,8 +716,8 @@ STR_MONTH_DEC :Декабрь
|
||||
# Graph window
|
||||
STR_GRAPH_KEY_BUTTON :{BLACK}Легенда
|
||||
STR_GRAPH_KEY_TOOLTIP :{BLACK}Показать легенду к графикам
|
||||
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}{} {STRING}
|
||||
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{} {STRING}{}{NUM}
|
||||
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}
|
||||
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{}{NUM}
|
||||
STR_GRAPH_Y_LABEL :{TINY_FONT}{STRING}
|
||||
STR_GRAPH_Y_LABEL_NUMBER :{TINY_FONT}{COMMA}
|
||||
|
||||
|
||||
@@ -748,8 +748,8 @@ STR_MONTH_DEC :Decembar
|
||||
# Graph window
|
||||
STR_GRAPH_KEY_BUTTON :{BLACK}Legenda
|
||||
STR_GRAPH_KEY_TOOLTIP :{BLACK}Prikaži legendu
|
||||
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}{} {STRING}
|
||||
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{} {STRING}{}{NUM}
|
||||
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}
|
||||
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{}{NUM}
|
||||
STR_GRAPH_Y_LABEL :{TINY_FONT}{STRING}
|
||||
STR_GRAPH_Y_LABEL_NUMBER :{TINY_FONT}{COMMA}
|
||||
|
||||
|
||||
@@ -569,8 +569,8 @@ STR_MONTH_DEC :12月
|
||||
# Graph window
|
||||
STR_GRAPH_KEY_BUTTON :{BLACK}索引
|
||||
STR_GRAPH_KEY_TOOLTIP :{BLACK}显示图表的公司索引
|
||||
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}{} {STRING}
|
||||
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{} {STRING}{}{NUM}
|
||||
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}
|
||||
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{}{NUM}
|
||||
STR_GRAPH_Y_LABEL :{TINY_FONT}{STRING}
|
||||
STR_GRAPH_Y_LABEL_NUMBER :{TINY_FONT}{COMMA}
|
||||
|
||||
|
||||
@@ -641,8 +641,8 @@ STR_MONTH_DEC :December
|
||||
# Graph window
|
||||
STR_GRAPH_KEY_BUTTON :{BLACK}Vyb.
|
||||
STR_GRAPH_KEY_TOOLTIP :{BLACK}Vybrať položky na grafe
|
||||
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}{} {STRING}
|
||||
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{} {STRING}{}{NUM}
|
||||
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}
|
||||
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{}{NUM}
|
||||
STR_GRAPH_Y_LABEL :{TINY_FONT}{STRING}
|
||||
STR_GRAPH_Y_LABEL_NUMBER :{TINY_FONT}{COMMA}
|
||||
|
||||
@@ -760,9 +760,9 @@ STR_PLAYLIST_TOOLTIP_CLICK_TO_REMOVE_TRACK :{BLACK}Kliknite
|
||||
STR_HIGHSCORE_TOP_COMPANIES_WHO_REACHED :{BIG_FONT}{BLACK}Najlepšie spoločnosti, ktoré dosiahli rok {NUM}
|
||||
STR_HIGHSCORE_TOP_COMPANIES_NETWORK_GAME :{BIG_FONT}{BLACK}Tabuľka spoločnosti v roku {NUM}
|
||||
STR_HIGHSCORE_POSITION :{BIG_FONT}{BLACK}{COMMA}.
|
||||
STR_HIGHSCORE_PERFORMANCE_TITLE_BUSINESSMAN :{G=z}Obchodníčka
|
||||
STR_HIGHSCORE_PERFORMANCE_TITLE_BUSINESSMAN :Obchodník
|
||||
STR_HIGHSCORE_PERFORMANCE_TITLE_BUSINESSMAN.g :Obchodníci
|
||||
STR_HIGHSCORE_PERFORMANCE_TITLE_ENTREPRENEUR :{G=z}Podnikateľka
|
||||
STR_HIGHSCORE_PERFORMANCE_TITLE_ENTREPRENEUR :{G=m}Podnikateľ
|
||||
STR_HIGHSCORE_PERFORMANCE_TITLE_INDUSTRIALIST :{G=m}Priemyselník
|
||||
STR_HIGHSCORE_PERFORMANCE_TITLE_CAPITALIST :{G=m}Kapitalista
|
||||
STR_HIGHSCORE_PERFORMANCE_TITLE_MAGNATE :{G=m}Magnát
|
||||
@@ -1015,6 +1015,7 @@ STR_GAME_OPTIONS_CURRENCY_NTD :Taiwanský dol
|
||||
STR_GAME_OPTIONS_CURRENCY_CNY :Čínsky jüan (CNY)
|
||||
STR_GAME_OPTIONS_CURRENCY_HKD :Hongkongský dolár (HKD)
|
||||
STR_GAME_OPTIONS_CURRENCY_INR :Indická rupia (INR)
|
||||
STR_GAME_OPTIONS_CURRENCY_IDR :Indonézska rupia (IDR)
|
||||
############ end of currency region
|
||||
|
||||
STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_LEFT :Jazdia naľavo
|
||||
|
||||
@@ -713,8 +713,8 @@ STR_MONTH_DEC :December
|
||||
# Graph window
|
||||
STR_GRAPH_KEY_BUTTON :{BLACK}Ključ
|
||||
STR_GRAPH_KEY_TOOLTIP :{BLACK}Prikaži ključe grafov
|
||||
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}{} {STRING}
|
||||
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{} {STRING}{}{NUM}
|
||||
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}
|
||||
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{}{NUM}
|
||||
STR_GRAPH_Y_LABEL :{TINY_FONT}{STRING}
|
||||
STR_GRAPH_Y_LABEL_NUMBER :{TINY_FONT}{COMMA}
|
||||
|
||||
|
||||
@@ -578,8 +578,8 @@ STR_MONTH_DEC :Diciembre
|
||||
# Graph window
|
||||
STR_GRAPH_KEY_BUTTON :{BLACK}Leyenda
|
||||
STR_GRAPH_KEY_TOOLTIP :{BLACK}Mostrar leyenda en gráficos
|
||||
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}{} {STRING}
|
||||
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{} {STRING}{}{NUM}
|
||||
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}
|
||||
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{}{NUM}
|
||||
STR_GRAPH_Y_LABEL :{TINY_FONT}{STRING}
|
||||
STR_GRAPH_Y_LABEL_NUMBER :{TINY_FONT}{COMMA}
|
||||
|
||||
@@ -948,6 +948,7 @@ STR_GAME_OPTIONS_CURRENCY_NTD :Nuevo dólar ta
|
||||
STR_GAME_OPTIONS_CURRENCY_CNY :Renminbi chino (CNY)
|
||||
STR_GAME_OPTIONS_CURRENCY_HKD :Dólar hongkonés (HKD)
|
||||
STR_GAME_OPTIONS_CURRENCY_INR :Rupia india (INR)
|
||||
STR_GAME_OPTIONS_CURRENCY_IDR :Rupia indonesia (IDR)
|
||||
############ end of currency region
|
||||
|
||||
STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_LEFT :Conducir por la izquierda
|
||||
|
||||
@@ -578,8 +578,8 @@ STR_MONTH_DEC :Diciembre
|
||||
# Graph window
|
||||
STR_GRAPH_KEY_BUTTON :{BLACK}Leyenda
|
||||
STR_GRAPH_KEY_TOOLTIP :{BLACK}Mostrar leyenda de gráficas
|
||||
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}{} {STRING}
|
||||
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{} {STRING}{}{NUM}
|
||||
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}
|
||||
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{}{NUM}
|
||||
STR_GRAPH_Y_LABEL :{TINY_FONT}{STRING}
|
||||
STR_GRAPH_Y_LABEL_NUMBER :{TINY_FONT}{COMMA}
|
||||
|
||||
|
||||
@@ -194,6 +194,7 @@ STR_COLOUR_DEFAULT :Standard
|
||||
STR_UNITS_VELOCITY_IMPERIAL :{COMMA}{NBSP}mph
|
||||
STR_UNITS_VELOCITY_METRIC :{COMMA}{NBSP}km/h
|
||||
STR_UNITS_VELOCITY_SI :{COMMA}{NBSP}m/s
|
||||
STR_UNITS_VELOCITY_GAMEUNITS :{DECIMAL}{NBSP}rutor/dag
|
||||
|
||||
STR_UNITS_POWER_IMPERIAL :{COMMA}{NBSP}hk
|
||||
STR_UNITS_POWER_METRIC :{COMMA}{NBSP}hk
|
||||
@@ -313,8 +314,15 @@ STR_SORT_BY_CARGO_CAPACITY :Lastkapacitet
|
||||
STR_SORT_BY_RANGE :Räckvidd
|
||||
STR_SORT_BY_POPULATION :Folkmängd
|
||||
STR_SORT_BY_RATING :Värdering
|
||||
STR_SORT_BY_NUM_VEHICLES :Antal fordon
|
||||
STR_SORT_BY_TOTAL_PROFIT_LAST_YEAR :Total vinst förra året
|
||||
STR_SORT_BY_TOTAL_PROFIT_THIS_YEAR :Total vinst detta år
|
||||
STR_SORT_BY_AVERAGE_PROFIT_LAST_YEAR :Genomsnittlig vinst förra året
|
||||
STR_SORT_BY_AVERAGE_PROFIT_THIS_YEAR :Genomsnittlig vinst detta året
|
||||
|
||||
# Group by options for vehicle list
|
||||
STR_GROUP_BY_NONE :Ingen
|
||||
STR_GROUP_BY_SHARED_ORDERS :Delade order
|
||||
|
||||
# Tooltips for the main toolbar
|
||||
STR_TOOLBAR_TOOLTIP_PAUSE_GAME :{BLACK}Pausa spelet
|
||||
@@ -569,8 +577,8 @@ STR_MONTH_DEC :december
|
||||
# Graph window
|
||||
STR_GRAPH_KEY_BUTTON :{BLACK}Nyckel
|
||||
STR_GRAPH_KEY_TOOLTIP :{BLACK}Visa nyckel till grafer
|
||||
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}{} {STRING}
|
||||
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{} {STRING}{}{NUM}
|
||||
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}
|
||||
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{}{NUM}
|
||||
STR_GRAPH_Y_LABEL :{TINY_FONT}{STRING}
|
||||
STR_GRAPH_Y_LABEL_NUMBER :{TINY_FONT}{COMMA}
|
||||
|
||||
@@ -740,6 +748,7 @@ STR_SMALLMAP_LEGENDA_DOCK :{TINY_FONT}{BLA
|
||||
STR_SMALLMAP_LEGENDA_ROUGH_LAND :{TINY_FONT}{BLACK}Obearbetad mark
|
||||
STR_SMALLMAP_LEGENDA_GRASS_LAND :{TINY_FONT}{BLACK}Gräsmark
|
||||
STR_SMALLMAP_LEGENDA_BARE_LAND :{TINY_FONT}{BLACK}Barmark
|
||||
STR_SMALLMAP_LEGENDA_RAINFOREST :{TINY_FONT}{BLACK}Regnskog
|
||||
STR_SMALLMAP_LEGENDA_FIELDS :{TINY_FONT}{BLACK}Fält
|
||||
STR_SMALLMAP_LEGENDA_TREES :{TINY_FONT}{BLACK}Träd
|
||||
STR_SMALLMAP_LEGENDA_ROCKS :{TINY_FONT}{BLACK}Stenar
|
||||
@@ -771,6 +780,7 @@ STR_SMALLMAP_TOOLTIP_ENABLE_ALL_CARGOS :{BLACK}Visa all
|
||||
STR_STATUSBAR_TOOLTIP_SHOW_LAST_NEWS :{BLACK}Visa senaste meddelande eller nyhet
|
||||
STR_STATUSBAR_COMPANY_NAME :{SILVER}- - {COMPANY} - -
|
||||
STR_STATUSBAR_PAUSED :{YELLOW}* * PAUSAD * *
|
||||
STR_STATUSBAR_PAUSED_LINK_GRAPH :{ORANGE}* * PAUSAD (väntar på updatering av länkdiagram) * *
|
||||
STR_STATUSBAR_AUTOSAVE :{RED}AUTOSPARA
|
||||
STR_STATUSBAR_SAVING_GAME :{RED}* * SPARAR SPEL * *
|
||||
|
||||
@@ -937,6 +947,7 @@ STR_GAME_OPTIONS_CURRENCY_NTD :Nya Taiwanesisk
|
||||
STR_GAME_OPTIONS_CURRENCY_CNY :Kinesisk Renminbi (CNY)
|
||||
STR_GAME_OPTIONS_CURRENCY_HKD :Hongkongdollar (HKD)
|
||||
STR_GAME_OPTIONS_CURRENCY_INR :Indisk rupie (INR)
|
||||
STR_GAME_OPTIONS_CURRENCY_IDR :Indonesisk Rupiah (IDR)
|
||||
############ end of currency region
|
||||
|
||||
STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_LEFT :Kör på vänster sida
|
||||
@@ -993,6 +1004,7 @@ 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 ska användas
|
||||
|
||||
STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_AUTO :(Upptäck automatiskt)
|
||||
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
|
||||
@@ -1000,6 +1012,7 @@ STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_4X_ZOOM :Fyrdubbel storl
|
||||
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_AUTO :(Upptäck automatiskt)
|
||||
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
|
||||
@@ -1313,7 +1326,7 @@ STR_CONFIG_SETTING_SHOW_NEWGRF_NAME :Visa NewGRF:ens
|
||||
STR_CONFIG_SETTING_SHOW_NEWGRF_NAME_HELPTEXT :Lägg till en rad i fordonsbyggnadsfönstret som visar vilken NewGRF det valda fordonet kommer ifrån.
|
||||
|
||||
STR_CONFIG_SETTING_LANDSCAPE :Landskap: {STRING}
|
||||
STR_CONFIG_SETTING_LANDSCAPE_HELPTEXT :Landskap definiera grundläggande gameplay scenarier med olika last och krav stad tillväxt. NewGRF och Game skript tillåter finare kontroll.
|
||||
STR_CONFIG_SETTING_LANDSCAPE_HELPTEXT :Landskapet definierar grundläggande gameplay scenarier med olika laster och krav på stadstillväxt. NewGRF och spelskript tillåter finare kontroll
|
||||
STR_CONFIG_SETTING_LAND_GENERATOR :Landgenerator: {STRING}
|
||||
STR_CONFIG_SETTING_LAND_GENERATOR_HELPTEXT :Den ursprungliga generatorn beror på bas grafik set, och komponerar fasta landskapsformer. TerraGenesis är en Perlin buller baserad generator med finare inställningar kontroll
|
||||
STR_CONFIG_SETTING_LAND_GENERATOR_ORIGINAL :Original
|
||||
@@ -1439,6 +1452,8 @@ STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS :Behåll byggnad
|
||||
STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS_HELPTEXT :Håll verktygen för byggnation av broar, tunnlar, etc. öppna efter användning
|
||||
STR_CONFIG_SETTING_EXPENSES_LAYOUT :Gruppera utgifter i företagens finansfönster: {STRING}
|
||||
STR_CONFIG_SETTING_EXPENSES_LAYOUT_HELPTEXT :Välj layout för företagens utgiftsfönster
|
||||
STR_CONFIG_SETTING_AUTO_REMOVE_SIGNALS :Automatiskt ta bort signaler vid byggande av järnväg: {STRING}
|
||||
STR_CONFIG_SETTING_AUTO_REMOVE_SIGNALS_HELPTEXT :Ta automatiskt bort signaler vid byggande av järnväg om signalerna är i vägen. Notera att detta kan leda till att tåg krockar.
|
||||
|
||||
STR_CONFIG_SETTING_SOUND_TICKER :Summerade nyheter: {STRING}
|
||||
STR_CONFIG_SETTING_SOUND_TICKER_HELPTEXT :Spela ljudeffekt för sammanfattade nyhetsmeddelanden
|
||||
@@ -1552,6 +1567,11 @@ STR_CONFIG_SETTING_ENDING_YEAR :Slutår för po
|
||||
STR_CONFIG_SETTING_ENDING_YEAR_HELPTEXT :Årtal då spelet slutar räkna poäng. Vid slutet av detta år sparas företagets poäng och listan med de bästa spelresultaten visas, men därefter kan spelarna fortsätta att spela.{}Om årtalet är satt till innan startåret visas aldrig de bästa spelresultaten.
|
||||
STR_CONFIG_SETTING_ENDING_YEAR_VALUE :{NUM}
|
||||
STR_CONFIG_SETTING_ENDING_YEAR_ZERO :Aldrig
|
||||
STR_CONFIG_SETTING_ECONOMY_TYPE :Typ av ekonomi: {STRING}
|
||||
STR_CONFIG_SETTING_ECONOMY_TYPE_HELPTEXT :Jämn ekonomi gör att produktionen ändrar sig oftare i mindre steg. Frusen ekonomi förhindrar produktions ändringar och att industrier stänger. Denna inställning har ingen effekt om industrien kommer från en NewGRF.
|
||||
STR_CONFIG_SETTING_ECONOMY_TYPE_ORIGINAL :Original
|
||||
STR_CONFIG_SETTING_ECONOMY_TYPE_SMOOTH :Jämn
|
||||
STR_CONFIG_SETTING_ECONOMY_TYPE_FROZEN :Frusen
|
||||
STR_CONFIG_SETTING_ALLOW_SHARES :Tillåt köp av aktier från andra företag: {STRING}
|
||||
STR_CONFIG_SETTING_ALLOW_SHARES_HELPTEXT :När det är aktiverat blir det tillåtet att köpa och sälja andelar i företag. För att dess andelar ska bli tillgängliga måste ett företag ha uppnått en viss ålder
|
||||
STR_CONFIG_SETTING_MIN_YEARS_FOR_SHARES :Lägsta företagsålder för aktiehandel: {STRING}
|
||||
@@ -1603,6 +1623,10 @@ STR_CONFIG_SETTING_TOWN_CARGOGENMODE_BITCOUNT :Linjär
|
||||
|
||||
STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT :Placering av träd i spelläge: {STRING}
|
||||
STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_HELPTEXT :Kontrollera den slumpmässiga uppkomsten av träd under spelets gång. Detta kan påverka industrier som är beroende av växande träd, till exempel sågverk
|
||||
STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_NO_SPREAD :Växer men sprider ej{RED}(Sågverket fungerar inte)
|
||||
STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_SPREAD_RAINFOREST :Växer men endast spriding i rengskogar
|
||||
STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_SPREAD_ALL :Väx och sprid överallt
|
||||
STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_NO_GROWTH_NO_SPREAD :Växer ej, sprider ej{RED}(Sågverket fungerar inte)
|
||||
|
||||
STR_CONFIG_SETTING_TOOLBAR_POS :Verktygsradens position: {STRING}
|
||||
STR_CONFIG_SETTING_TOOLBAR_POS_HELPTEXT :Verktygsradens horisontella position i skärmens överkant
|
||||
@@ -1669,6 +1693,7 @@ STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_HELPTEXT :Närhelst en ha
|
||||
STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_IMPERIAL :Brittisk (mph)
|
||||
STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_METRIC :Metrisk (km/h)
|
||||
STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_SI :SI (m/s)
|
||||
STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_GAMEUNITS :Spel enheter (rutor/dag)
|
||||
|
||||
STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER :Enhet för fordons motoreffekt: {STRING}
|
||||
STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_HELPTEXT :Närhelst ett fordons motoreffekt visas i användargränssnittet, visa den i den valda enheten
|
||||
@@ -1801,6 +1826,7 @@ STR_INTRO_TRANSLATION :{BLACK}Den här
|
||||
|
||||
# Quit window
|
||||
STR_QUIT_CAPTION :{WHITE}Avsluta
|
||||
STR_QUIT_ARE_YOU_SURE_YOU_WANT_TO_EXIT_OPENTTD :{YELLOW}Är du säker på att du vill avsluta OpenTTD?
|
||||
STR_QUIT_YES :{BLACK}Ja
|
||||
STR_QUIT_NO :{BLACK}Nej
|
||||
|
||||
@@ -1812,6 +1838,7 @@ STR_ABANDON_SCENARIO_QUERY :{YELLOW}Är du
|
||||
# Cheat window
|
||||
STR_CHEATS :{WHITE}Fusk
|
||||
STR_CHEATS_TOOLTIP :{BLACK}Checkboxar indikerar om du använt det här fusket förut
|
||||
STR_CHEATS_NOTE :{BLACK}Notera: användandet av dessa inställningar kommer att sparas av sparfilen
|
||||
STR_CHEAT_MONEY :{LTBLUE}Öka pengar med {CURRENCY_LONG}
|
||||
STR_CHEAT_CHANGE_COMPANY :{LTBLUE}Spelar som företag:: {ORANGE}{COMMA}
|
||||
STR_CHEAT_EXTRA_DYNAMITE :{LTBLUE}Magisk bulldozer (ta bort industrier, oflyttbara objekt etc.): {ORANGE}{STRING}
|
||||
@@ -1963,6 +1990,10 @@ STR_NETWORK_SERVER_LIST_JOIN_GAME :{BLACK}Gå med
|
||||
STR_NETWORK_SERVER_LIST_REFRESH :{BLACK}Uppdatera server
|
||||
STR_NETWORK_SERVER_LIST_REFRESH_TOOLTIP :{BLACK}Uppdatera server info
|
||||
|
||||
STR_NETWORK_SERVER_LIST_SEARCH_SERVER_INTERNET :{BLACK}Sök på internet
|
||||
STR_NETWORK_SERVER_LIST_SEARCH_SERVER_INTERNET_TOOLTIP :{BLACK}Sök online efter offentliga servrar
|
||||
STR_NETWORK_SERVER_LIST_SEARCH_SERVER_LAN :{BLACK}Sök LAN
|
||||
STR_NETWORK_SERVER_LIST_SEARCH_SERVER_LAN_TOOLTIP :{BLACK}Sök i lokalt nätverk för servrar
|
||||
STR_NETWORK_SERVER_LIST_ADD_SERVER :{BLACK}Lägg till server
|
||||
STR_NETWORK_SERVER_LIST_ADD_SERVER_TOOLTIP :{BLACK}Lägg till en server till listan som alltid kommer kontrolleras för aktiva spel
|
||||
STR_NETWORK_SERVER_LIST_START_SERVER :{BLACK}Starta server
|
||||
@@ -2188,11 +2219,13 @@ STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_1 :Spelet är fort
|
||||
STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_2 :Spel fortfarande pausad ({STRING}, {STRING})
|
||||
STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_3 :Spel fortfarande pausad ({STRING}, {STRING}, {STRING})
|
||||
STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_4 :Spelet är fortfarande pausat ({STRING}, {STRING}, {STRING}, {STRING})
|
||||
STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_5 :Spelet är fortfarande pausat ({STRING}, {STRING}, {STRING}, {STRING}, {STRING})
|
||||
STR_NETWORK_SERVER_MESSAGE_GAME_UNPAUSED :Spelet är opausat ({STRING})
|
||||
STR_NETWORK_SERVER_MESSAGE_GAME_REASON_NOT_ENOUGH_PLAYERS :antal spelare
|
||||
STR_NETWORK_SERVER_MESSAGE_GAME_REASON_CONNECTING_CLIENTS :ansluter klienter
|
||||
STR_NETWORK_SERVER_MESSAGE_GAME_REASON_MANUAL :manuell
|
||||
STR_NETWORK_SERVER_MESSAGE_GAME_REASON_GAME_SCRIPT :spelskript
|
||||
STR_NETWORK_SERVER_MESSAGE_GAME_REASON_LINK_GRAPH :Väntar på updatering av länkdiagram
|
||||
############ End of leave-in-this-order
|
||||
STR_NETWORK_MESSAGE_CLIENT_LEAVING :lämnar
|
||||
STR_NETWORK_MESSAGE_CLIENT_JOINED :*** {STRING} har gått med i spelet
|
||||
@@ -2202,6 +2235,7 @@ STR_NETWORK_MESSAGE_CLIENT_COMPANY_SPECTATE :*** {STRING} ha
|
||||
STR_NETWORK_MESSAGE_CLIENT_COMPANY_NEW :*** {STRING} har startat ett nytt företag (#{2:NUM})
|
||||
STR_NETWORK_MESSAGE_CLIENT_LEFT :*** {STRING} har lämnat spelet ({2:STRING})
|
||||
STR_NETWORK_MESSAGE_NAME_CHANGE :*** {STRING} har ändrat hans/hennes namn till {STRING}
|
||||
STR_NETWORK_MESSAGE_GIVE_MONEY :*** {STRING} gav {2:CURRENCY_LONG} till {1:STRING}
|
||||
STR_NETWORK_MESSAGE_SERVER_SHUTDOWN :{WHITE}Servern avslutade sessionen
|
||||
STR_NETWORK_MESSAGE_SERVER_REBOOT :{WHITE}Servern startar om...{}Var vänlig vänta...
|
||||
STR_NETWORK_MESSAGE_KICKED :*** {STRING} kastades ut. Orsak: ({STRING})
|
||||
@@ -2321,6 +2355,7 @@ STR_JOIN_WAYPOINT_CAPTION :{WHITE}Slå iho
|
||||
STR_JOIN_WAYPOINT_CREATE_SPLITTED_WAYPOINT :{YELLOW}Bygg ett separat riktmärke
|
||||
|
||||
# Generic toolbar
|
||||
STR_TOOLBAR_DISABLED_NO_VEHICLE_AVAILABLE :{BLACK}Inaktiverad eftersom det ej finns några tillgängliga fordon till denna infrastruktur
|
||||
|
||||
# Rail construction toolbar
|
||||
STR_RAIL_TOOLBAR_RAILROAD_CONSTRUCTION_CAPTION :Bygg järnväg
|
||||
@@ -2516,6 +2551,12 @@ STR_TREES_RANDOM_TYPE :{BLACK}Träd av
|
||||
STR_TREES_RANDOM_TYPE_TOOLTIP :{BLACK}Placera träd av slumpvald typ. Shift växlar mellan att placera träd/visa beräknad kostnad
|
||||
STR_TREES_RANDOM_TREES_BUTTON :{BLACK}Slumpmässigt träd
|
||||
STR_TREES_RANDOM_TREES_TOOLTIP :{BLACK}Plantera träd slumpmässigt över landskapet
|
||||
STR_TREES_MODE_NORMAL_BUTTON :{BLACK}Normal
|
||||
STR_TREES_MODE_NORMAL_TOOLTIP :{BLACK}Plantera träd genom att dra över landskapet.
|
||||
STR_TREES_MODE_FOREST_SM_BUTTON :{BLACK}Skogsdunge
|
||||
STR_TREES_MODE_FOREST_SM_TOOLTIP :{BLACK}Plantera mindre skogar genom att dra över landskapet.
|
||||
STR_TREES_MODE_FOREST_LG_BUTTON :{BLACK}Skog
|
||||
STR_TREES_MODE_FOREST_LG_TOOLTIP :{BLACK}Plantera större skogar genom att dra över landskapet.
|
||||
|
||||
# Land generation window (SE)
|
||||
STR_TERRAFORM_TOOLBAR_LAND_GENERATION_CAPTION :{WHITE}Skapa mark
|
||||
@@ -2566,12 +2607,18 @@ STR_FOUND_TOWN_SELECT_LAYOUT_RANDOM :{BLACK}Slumpa
|
||||
# Fund new industry window
|
||||
STR_FUND_INDUSTRY_CAPTION :{WHITE}Bekosta ny industri
|
||||
STR_FUND_INDUSTRY_SELECTION_TOOLTIP :{BLACK}Välj lämplig industri från denna lista
|
||||
STR_FUND_INDUSTRY_MANY_RANDOM_INDUSTRIES :Många slumpmässiga industrier
|
||||
STR_FUND_INDUSTRY_MANY_RANDOM_INDUSTRIES :{BLACK}Skapa slumpmässiga industrier
|
||||
STR_FUND_INDUSTRY_MANY_RANDOM_INDUSTRIES_TOOLTIP :{BLACK}Täck kartan med slumpmässigt placerade industrier
|
||||
STR_FUND_INDUSTRY_MANY_RANDOM_INDUSTRIES_CAPTION :{WHITE}Skapa slumpmässiga industrier
|
||||
STR_FUND_INDUSTRY_MANY_RANDOM_INDUSTRIES_QUERY :{YELLOW}Är du säker på att du vill skapa många olika industrier?
|
||||
STR_FUND_INDUSTRY_INDUSTRY_BUILD_COST :{BLACK}Kostnad: {YELLOW}{CURRENCY_LONG}
|
||||
STR_FUND_INDUSTRY_PROSPECT_NEW_INDUSTRY :{BLACK}Prospektera
|
||||
STR_FUND_INDUSTRY_BUILD_NEW_INDUSTRY :{BLACK}Bygga
|
||||
STR_FUND_INDUSTRY_FUND_NEW_INDUSTRY :{BLACK}Grunda
|
||||
STR_FUND_INDUSTRY_REMOVE_ALL_INDUSTRIES :{BLACK}Ta bort alla industrier
|
||||
STR_FUND_INDUSTRY_REMOVE_ALL_INDUSTRIES_TOOLTIP :{BLACK}Ta bort alla industrier från kartan
|
||||
STR_FUND_INDUSTRY_REMOVE_ALL_INDUSTRIES_CAPTION :{WHITE}Ta bort alla industrier
|
||||
STR_FUND_INDUSTRY_REMOVE_ALL_INDUSTRIES_QUERY :{YELLOW}Är du säker på att du vill ta bort alla industrier?
|
||||
|
||||
# Industry cargoes window
|
||||
STR_INDUSTRY_CARGOES_INDUSTRY_CAPTION :{WHITE}Industrikedja för {STRING} industrin
|
||||
@@ -2592,6 +2639,7 @@ STR_INDUSTRY_CARGOES_SELECT_INDUSTRY_TOOLTIP :{BLACK}Välj de
|
||||
|
||||
# Land area window
|
||||
STR_LAND_AREA_INFORMATION_CAPTION :{WHITE}Markområdesinformation
|
||||
STR_LAND_AREA_INFORMATION_LOCATION_TOOLTIP :{BLACK}Centrera huvudvyn på rutans läge. Ctrl+klick öppnar en ny vy över rutans läge
|
||||
STR_LAND_AREA_INFORMATION_COST_TO_CLEAR_N_A :{BLACK}Kostnad att röja: {LTBLUE}N/A
|
||||
STR_LAND_AREA_INFORMATION_COST_TO_CLEAR :{BLACK}Kostnad att röja: {RED}{CURRENCY_LONG}
|
||||
STR_LAND_AREA_INFORMATION_REVENUE_WHEN_CLEARED :{BLACK}Inkomst vid rensning: {LTBLUE}{CURRENCY_LONG}
|
||||
@@ -2801,6 +2849,8 @@ STR_SAVELOAD_DETAIL_GRFSTATUS :{SILVER}NewGRF:
|
||||
STR_SAVELOAD_FILTER_TITLE :{BLACK}Sökfilter:
|
||||
STR_SAVELOAD_OVERWRITE_TITLE :{WHITE}Skriv över fil
|
||||
STR_SAVELOAD_OVERWRITE_WARNING :{YELLOW}Är du säker på att du vill skriva över den existerande filen?
|
||||
STR_SAVELOAD_DIRECTORY :{STRING} (Katalog)
|
||||
STR_SAVELOAD_PARENT_DIRECTORY :{STRING} (Föräldrakatalog)
|
||||
|
||||
STR_SAVELOAD_OSKTITLE :{BLACK}Mata in ett namn för detta sparade spel
|
||||
|
||||
@@ -3061,6 +3111,7 @@ STR_SIGN_LIST_MATCH_CASE_TOOLTIP :{BLACK}Slå på
|
||||
|
||||
# Sign window
|
||||
STR_EDIT_SIGN_CAPTION :{WHITE}Ändra skylttext
|
||||
STR_EDIT_SIGN_LOCATION_TOOLTIP :{BLACK}Centrera huvudvyn på skyltens läge Ctrl+klick öppnar en ny vy över skyltens läge
|
||||
STR_EDIT_SIGN_NEXT_SIGN_TOOLTIP :{BLACK}Åk till nästa skylt
|
||||
STR_EDIT_SIGN_PREVIOUS_SIGN_TOOLTIP :{BLACK}Åk till föregående skylt
|
||||
|
||||
@@ -3144,10 +3195,10 @@ STR_GOALS_COMPANY_TITLE :{BLACK}Företag
|
||||
STR_GOALS_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Klicka på målet för att centrera huvudvyn på industrin/byn/rutan. Ctrl+klick gör så att ett nytt vyfönster öppnas över platsen för industrin/byn/rutan
|
||||
|
||||
# Goal question window
|
||||
STR_GOAL_QUESTION_CAPTION_QUESTION :Fråga
|
||||
STR_GOAL_QUESTION_CAPTION_INFORMATION :Information
|
||||
STR_GOAL_QUESTION_CAPTION_WARNING :Varning
|
||||
STR_GOAL_QUESTION_CAPTION_ERROR :Fel
|
||||
STR_GOAL_QUESTION_CAPTION_QUESTION :{BLACK}Fråga
|
||||
STR_GOAL_QUESTION_CAPTION_INFORMATION :{BLACK}Information
|
||||
STR_GOAL_QUESTION_CAPTION_WARNING :{BLACK}Varning
|
||||
STR_GOAL_QUESTION_CAPTION_ERROR :{YELLOW}Fel
|
||||
|
||||
############ Start of Goal Question button list
|
||||
STR_GOAL_QUESTION_BUTTON_CANCEL :Avbryt
|
||||
@@ -3338,6 +3389,7 @@ STR_COMPANY_VIEW_RELOCATE_COMPANY_HEADQUARTERS :{BLACK}Flytta h
|
||||
STR_COMPANY_VIEW_INFRASTRUCTURE_BUTTON :{BLACK}Detaljer
|
||||
STR_COMPANY_VIEW_INFRASTRUCTURE_TOOLTIP :{BLACK}Visa detaljerat antal infrastruktur-element
|
||||
STR_COMPANY_VIEW_GIVE_MONEY_BUTTON :{BLACK}Ge pengar
|
||||
STR_COMPANY_VIEW_GIVE_MONEY_TOOLTIP :{BLACK}Ge pengar till detta företaget
|
||||
|
||||
STR_COMPANY_VIEW_NEW_FACE_BUTTON :{BLACK}Nytt ansikte
|
||||
STR_COMPANY_VIEW_NEW_FACE_TOOLTIP :{BLACK}Välj nytt ansikte på VD:n
|
||||
@@ -3355,7 +3407,7 @@ STR_COMPANY_VIEW_SELL_SHARE_TOOLTIP :{BLACK}Sälj 25
|
||||
|
||||
STR_COMPANY_VIEW_COMPANY_NAME_QUERY_CAPTION :Företagsnamn
|
||||
STR_COMPANY_VIEW_PRESIDENT_S_NAME_QUERY_CAPTION :Namn på VD
|
||||
STR_COMPANY_VIEW_GIVE_MONEY_QUERY_CAPTION :Skriv in mängd pengar som du vill ge
|
||||
STR_COMPANY_VIEW_GIVE_MONEY_QUERY_CAPTION :Ange hur mycket pengar du vill ge
|
||||
|
||||
STR_BUY_COMPANY_MESSAGE :{WHITE}Vi letar efter någon som vill köpa och ta över vårt företag{}{}Vill du köpa {COMPANY} för {CURRENCY_LONG}?
|
||||
|
||||
@@ -3716,6 +3768,10 @@ STR_REPLACE_REMOVE_WAGON_HELP :{BLACK}Gör så
|
||||
# Vehicle view
|
||||
STR_VEHICLE_VIEW_CAPTION :{WHITE}{VEHICLE}
|
||||
|
||||
STR_VEHICLE_VIEW_TRAIN_CENTER_TOOLTIP :{BLACK}Centrera huvudvyn på tågets position. Dubbelklicka för att följa tåget i huvudvyn. Ctrl+klicka öppnar ett nytt fönster över tågets position
|
||||
STR_VEHICLE_VIEW_ROAD_VEHICLE_CENTER_TOOLTIP :{BLACK}Centrera huvudvyn på fordonets position. Dubbelklicka för att följa fordonet i huvudvyn. Ctrl+klicka öppnar ett nytt fönster över fordonets position
|
||||
STR_VEHICLE_VIEW_SHIP_CENTER_TOOLTIP :{BLACK}Centrera huvudvyn på fartygets position. Dubbelklicka för att följa fartyget i huvudvyn. Ctrl+klicka öppnar ett nytt fönster över fartygets position
|
||||
STR_VEHICLE_VIEW_AIRCRAFT_CENTER_TOOLTIP :{BLACK}Centrera huvudvyn på flyplanets position. Dubbelklicka för att följa flyplanet i huvudvyn. Ctrl+klicka öppnar ett nytt fönster över flygplanets position
|
||||
|
||||
STR_VEHICLE_VIEW_TRAIN_SEND_TO_DEPOT_TOOLTIP :{BLACK}Skicka tåg till depå. Ctrl+klick skickar tåget enbart på service
|
||||
STR_VEHICLE_VIEW_ROAD_VEHICLE_SEND_TO_DEPOT_TOOLTIP :{BLACK}Skicka fordon till depå. Ctrl+klick servar endast
|
||||
@@ -3747,7 +3803,12 @@ STR_VEHICLE_VIEW_ROAD_VEHICLE_SHOW_DETAILS_TOOLTIP :{BLACK}Visa vä
|
||||
STR_VEHICLE_VIEW_SHIP_SHOW_DETAILS_TOOLTIP :{BLACK}Visa skeppdetaljer
|
||||
STR_VEHICLE_VIEW_AIRCRAFT_SHOW_DETAILS_TOOLTIP :{BLACK}Visa flygplan detaljer
|
||||
|
||||
STR_VEHICLE_VIEW_TRAIN_STATUS_START_STOP_TOOLTIP :{BLACK}Aktuell tågåtgärd - Tryck för att stoppa/starta tåget
|
||||
STR_VEHICLE_VIEW_ROAD_VEHICLE_STATUS_START_STOP_TOOLTIP :{BLACK}Aktuell fordonsåtgärd - tryck för att stoppa/starta fordon
|
||||
STR_VEHICLE_VIEW_SHIP_STATE_STATUS_STOP_TOOLTIP :{BLACK}Aktuell fartygsåtgärd - Tryck för att stoppa/starta fartyg
|
||||
STR_VEHICLE_VIEW_AIRCRAFT_STATUS_START_STOP_TOOLTIP :{BLACK}Aktuell flygplansåtgärd - Tryck för att stoppa/starta flygplanet
|
||||
|
||||
STR_VEHICLE_VIEW_ORDER_LOCATION_TOOLTIP :{BLACK}Centrera huvudvyn på ordens destination. Ctrl+klick öppnar en ny vy över ordens destination
|
||||
|
||||
# Messages in the start stop button in the vehicle view
|
||||
STR_VEHICLE_STATUS_LOADING_UNLOADING :{LTBLUE}Lastar / lastar av
|
||||
@@ -3975,6 +4036,7 @@ STR_ORDER_REFIT_STOP_ORDER :(Anpassa för {
|
||||
STR_ORDER_STOP_ORDER :(Stanna)
|
||||
|
||||
STR_ORDER_GO_TO_STATION :{STRING} {STATION} {STRING}
|
||||
STR_ORDER_GO_TO_STATION_CAN_T_USE_STATION :{PUSH_COLOUR}{RED}(Kan ej använda stationen){POP_COLOUR} {STRING} {STATION} {STRING}
|
||||
|
||||
STR_ORDER_IMPLICIT :(Underförstådd)
|
||||
|
||||
@@ -4219,6 +4281,7 @@ STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :Sparfilen är g
|
||||
STR_GAME_SAVELOAD_ERROR_FILE_NOT_READABLE :Filen är inte läsbar
|
||||
STR_GAME_SAVELOAD_ERROR_FILE_NOT_WRITEABLE :Filen är inte skrivbar
|
||||
STR_GAME_SAVELOAD_ERROR_DATA_INTEGRITY_CHECK_FAILED :Integritetskontrollen på datan misslyckades
|
||||
STR_GAME_SAVELOAD_ERROR_PATCHPACK :Sparat spel är från en modifierat version
|
||||
STR_GAME_SAVELOAD_NOT_AVAILABLE :<not available>
|
||||
STR_WARNING_LOADGAME_REMOVED_TRAMS :{WHITE}Spelet sparades i en version som ej stöder spårvagn. Alla spårvagnar har tagits bort
|
||||
|
||||
@@ -4299,6 +4362,7 @@ STR_ERROR_LOAN_ALREADY_REPAYED :{WHITE}... lån
|
||||
STR_ERROR_CURRENCY_REQUIRED :{WHITE}... {CURRENCY_LONG} krävs
|
||||
STR_ERROR_CAN_T_REPAY_LOAN :{WHITE}Kan inte återbetala lånet...
|
||||
STR_ERROR_INSUFFICIENT_FUNDS :{WHITE}Kan inte ge bort pengar som är lånade från banken...
|
||||
STR_ERROR_CAN_T_GIVE_MONEY :{WHITE}Kan ej ge pengar till detta företaget...
|
||||
STR_ERROR_CAN_T_BUY_COMPANY :{WHITE}Kan inte köpa företag...
|
||||
STR_ERROR_CAN_T_BUILD_COMPANY_HEADQUARTERS :{WHITE}Kan inte bygga huvudkontor här...
|
||||
STR_ERROR_CAN_T_BUY_25_SHARE_IN_THIS :{WHITE}Kan inte köpa 25% andelar i detta företag...
|
||||
@@ -4425,6 +4489,8 @@ STR_ERROR_DEPOT_WRONG_DEPOT_TYPE :Felaktig depå-
|
||||
STR_ERROR_TRAIN_TOO_LONG_AFTER_REPLACEMENT :{WHITE}{VEHICLE} är för långt efter utbyte
|
||||
STR_ERROR_AUTOREPLACE_NOTHING_TO_DO :{WHITE}Inga regler för automatisk förnyelse/utbyte av fordon är aktiverade
|
||||
STR_ERROR_AUTOREPLACE_MONEY_LIMIT :(pengagräns)
|
||||
STR_ERROR_AUTOREPLACE_INCOMPATIBLE_CARGO :{WHITE}Nya fordonet kan ej bära {STRING}
|
||||
STR_ERROR_AUTOREPLACE_INCOMPATIBLE_REFIT :{WHITE}Nytt fordon kan inte anpassas till order {NUM}
|
||||
|
||||
# Rail construction errors
|
||||
STR_ERROR_IMPOSSIBLE_TRACK_COMBINATION :{WHITE}Omöjlig kombination av spår
|
||||
@@ -4711,10 +4777,10 @@ STR_INDUSTRY_NAME_SUGAR_MINE :Sockergruva
|
||||
##id 0x6000
|
||||
STR_SV_EMPTY :
|
||||
STR_SV_UNNAMED :Inget namn
|
||||
STR_SV_TRAIN_NAME :Tåg {COMMA}
|
||||
STR_SV_ROAD_VEHICLE_NAME :Vägfordon {COMMA}
|
||||
STR_SV_SHIP_NAME :Skepp {COMMA}
|
||||
STR_SV_AIRCRAFT_NAME :Luftfarkost {COMMA}
|
||||
STR_SV_TRAIN_NAME :Tåg #{COMMA}
|
||||
STR_SV_ROAD_VEHICLE_NAME :Vägfordon #{COMMA}
|
||||
STR_SV_SHIP_NAME :Skepp #{COMMA}
|
||||
STR_SV_AIRCRAFT_NAME :Luftfarkost #{COMMA}
|
||||
|
||||
STR_SV_STNAME :{STRING}
|
||||
STR_SV_STNAME_NORTH :Norra {STRING}
|
||||
@@ -5016,6 +5082,7 @@ STR_FORMAT_BUOY_NAME :{TOWN} Boj
|
||||
STR_FORMAT_BUOY_NAME_SERIAL :{TOWN} Boj #{COMMA}
|
||||
STR_FORMAT_COMPANY_NUM :(Företag {COMMA})
|
||||
STR_FORMAT_GROUP_NAME :Grupp {COMMA}
|
||||
STR_FORMAT_GROUP_VEHICLE_NAME :{GROUP} #{COMMA}
|
||||
STR_FORMAT_INDUSTRY_NAME :{TOWN} {STRING}
|
||||
STR_FORMAT_WAYPOINT_NAME :Riktmärke {TOWN}
|
||||
STR_FORMAT_WAYPOINT_NAME_SERIAL :Riktmärke {TOWN} #{COMMA}
|
||||
|
||||
@@ -561,8 +561,8 @@ STR_MONTH_DEC :டிசம்
|
||||
# Graph window
|
||||
STR_GRAPH_KEY_BUTTON :{BLACK}பட விளக்கக் குறிப்பு
|
||||
STR_GRAPH_KEY_TOOLTIP :{BLACK}பட விளக்கக் குறிப்பு காண்பி
|
||||
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}{} {STRING}
|
||||
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{} {STRING}{}{NUM}
|
||||
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}
|
||||
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{}{NUM}
|
||||
STR_GRAPH_Y_LABEL :{TINY_FONT}{STRING}
|
||||
STR_GRAPH_Y_LABEL_NUMBER :{TINY_FONT}{COMMA}
|
||||
|
||||
|
||||
@@ -552,8 +552,8 @@ STR_MONTH_DEC :ธันวา
|
||||
# Graph window
|
||||
STR_GRAPH_KEY_BUTTON :{BLACK}ตัวเลือก
|
||||
STR_GRAPH_KEY_TOOLTIP :{BLACK}แสดงตัวเลือกกราฟ
|
||||
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}{} {STRING}
|
||||
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{} {STRING}{}{NUM}
|
||||
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}
|
||||
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{}{NUM}
|
||||
STR_GRAPH_Y_LABEL :{TINY_FONT}{STRING}
|
||||
STR_GRAPH_Y_LABEL_NUMBER :{TINY_FONT}{COMMA}
|
||||
|
||||
|
||||
@@ -561,8 +561,8 @@ STR_MONTH_DEC :十二月
|
||||
# Graph window
|
||||
STR_GRAPH_KEY_BUTTON :{BLACK}圖例
|
||||
STR_GRAPH_KEY_TOOLTIP :{BLACK}顯示圖例
|
||||
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}{} {STRING}
|
||||
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{} {STRING}{}{NUM}
|
||||
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}
|
||||
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{}{NUM}
|
||||
STR_GRAPH_Y_LABEL :{TINY_FONT}{STRING}
|
||||
STR_GRAPH_Y_LABEL_NUMBER :{TINY_FONT}{COMMA}
|
||||
|
||||
|
||||
@@ -570,8 +570,8 @@ STR_MONTH_DEC :Aralık
|
||||
# Graph window
|
||||
STR_GRAPH_KEY_BUTTON :{BLACK}Anahtar
|
||||
STR_GRAPH_KEY_TOOLTIP :{BLACK}Grafik anahtarını göster
|
||||
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}{} {STRING}
|
||||
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{} {STRING}{}{NUM}
|
||||
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}
|
||||
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{}{NUM}
|
||||
STR_GRAPH_Y_LABEL :{TINY_FONT}{STRING}
|
||||
STR_GRAPH_Y_LABEL_NUMBER :{TINY_FONT}{COMMA}
|
||||
|
||||
|
||||
@@ -697,8 +697,8 @@ STR_MONTH_DEC :Грудень
|
||||
# Graph window
|
||||
STR_GRAPH_KEY_BUTTON :{BLACK}Легенда
|
||||
STR_GRAPH_KEY_TOOLTIP :{BLACK}Показати легенду графіка
|
||||
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}{} {STRING}
|
||||
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{} {STRING}{}{NUM}
|
||||
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}
|
||||
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{}{NUM}
|
||||
STR_GRAPH_Y_LABEL :{TINY_FONT}{STRING}
|
||||
STR_GRAPH_Y_LABEL_NUMBER :{TINY_FONT}{COMMA}
|
||||
|
||||
@@ -2703,6 +2703,7 @@ STR_FUND_INDUSTRY_INDUSTRY_BUILD_COST :{BLACK}Варт
|
||||
STR_FUND_INDUSTRY_PROSPECT_NEW_INDUSTRY :{BLACK}Огляд
|
||||
STR_FUND_INDUSTRY_BUILD_NEW_INDUSTRY :{BLACK}Будувати
|
||||
STR_FUND_INDUSTRY_FUND_NEW_INDUSTRY :{BLACK}Фінансувати
|
||||
STR_FUND_INDUSTRY_REMOVE_ALL_INDUSTRIES :{BLACK}Прибрати усі підприємства
|
||||
|
||||
# Industry cargoes window
|
||||
STR_INDUSTRY_CARGOES_INDUSTRY_CAPTION :{WHITE}Ланцюг вантажних перевезень для {STRING}
|
||||
@@ -3468,7 +3469,7 @@ STR_COMPANY_VIEW_RELOCATE_HQ :{BLACK}Пере
|
||||
STR_COMPANY_VIEW_RELOCATE_COMPANY_HEADQUARTERS :{BLACK}Перенесення Офісу в інше місце. Коштує 1% від вартості компанії. Утримуйте Shift для показу очікуваних витрат на перенесення
|
||||
STR_COMPANY_VIEW_INFRASTRUCTURE_BUTTON :{BLACK}Деталі
|
||||
STR_COMPANY_VIEW_INFRASTRUCTURE_TOOLTIP :{BLACK}Переглянути детальну інформацію про інфраструктуру
|
||||
STR_COMPANY_VIEW_GIVE_MONEY_BUTTON :{BLACK}Дати грошей
|
||||
STR_COMPANY_VIEW_GIVE_MONEY_TOOLTIP :{BLACK}Дати грошей цій компанії
|
||||
|
||||
STR_COMPANY_VIEW_NEW_FACE_BUTTON :{BLACK}Нове обличчя
|
||||
STR_COMPANY_VIEW_NEW_FACE_TOOLTIP :{BLACK}Вибрати нове обличчя керівника
|
||||
@@ -5184,6 +5185,7 @@ STR_FORMAT_BUOY_NAME :Буй {TOWN}
|
||||
STR_FORMAT_BUOY_NAME_SERIAL :Буй {TOWN} №{COMMA}
|
||||
STR_FORMAT_COMPANY_NUM :(Компанія {COMMA})
|
||||
STR_FORMAT_GROUP_NAME :Група {COMMA}
|
||||
STR_FORMAT_GROUP_VEHICLE_NAME :{GROUP} #{COMMA}
|
||||
STR_FORMAT_INDUSTRY_NAME :{TOWN} {STRING}
|
||||
STR_FORMAT_WAYPOINT_NAME :Пункт {TOWN}
|
||||
STR_FORMAT_WAYPOINT_NAME_SERIAL :Пункт {TOWN} №{COMMA}
|
||||
|
||||
@@ -359,8 +359,8 @@ STR_MONTH_DEC :Раштав
|
||||
|
||||
# Graph window
|
||||
STR_GRAPH_KEY_BUTTON :{BLACK}Уҫӑ
|
||||
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}{} {STRING}
|
||||
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{} {STRING}{}{NUM}
|
||||
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}
|
||||
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{}{NUM}
|
||||
STR_GRAPH_Y_LABEL :{TINY_FONT}{STRING}
|
||||
STR_GRAPH_Y_LABEL_NUMBER :{TINY_FONT}{COMMA}
|
||||
|
||||
|
||||
@@ -560,8 +560,8 @@ STR_MONTH_DEC :Desimber
|
||||
# Graph window
|
||||
STR_GRAPH_KEY_BUTTON :{BLACK}Kaai
|
||||
STR_GRAPH_KEY_TOOLTIP :{BLACK}Lit kaai foar grafyk sjen
|
||||
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}{} {STRING}
|
||||
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{} {STRING}{}{NUM}
|
||||
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}
|
||||
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{}{NUM}
|
||||
STR_GRAPH_Y_LABEL :{TINY_FONT}{STRING}
|
||||
STR_GRAPH_Y_LABEL_NUMBER :{TINY_FONT}{COMMA}
|
||||
|
||||
|
||||
@@ -350,8 +350,8 @@ STR_GRAPH_MENU_DELIVERED_CARGO_GRAPH :Livrita kargajo
|
||||
############ range for months ends
|
||||
|
||||
# Graph window
|
||||
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}{} {STRING}
|
||||
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{} {STRING}{}{NUM}
|
||||
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}
|
||||
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{}{NUM}
|
||||
STR_GRAPH_Y_LABEL :{TINY_FONT}{STRING}
|
||||
STR_GRAPH_Y_LABEL_NUMBER :{TINY_FONT}{COMMA}
|
||||
|
||||
|
||||
@@ -533,8 +533,8 @@ STR_MONTH_DEC :декемвр
|
||||
# Graph window
|
||||
STR_GRAPH_KEY_BUTTON :{BLACK}Клучни
|
||||
STR_GRAPH_KEY_TOOLTIP :{BLACK}Прикажи клуч за графикони
|
||||
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}{} {STRING}
|
||||
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{} {STRING}{}{NUM}
|
||||
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}
|
||||
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{}{NUM}
|
||||
STR_GRAPH_Y_LABEL :{TINY_FONT}{STRING}
|
||||
STR_GRAPH_Y_LABEL_NUMBER :{TINY_FONT}{COMMA}
|
||||
|
||||
|
||||
@@ -319,8 +319,8 @@ STR_FILE_MENU_SEPARATOR :
|
||||
############ range for months ends
|
||||
|
||||
# Graph window
|
||||
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}{} {STRING}
|
||||
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{} {STRING}{}{NUM}
|
||||
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}
|
||||
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{}{NUM}
|
||||
STR_GRAPH_Y_LABEL :{TINY_FONT}{STRING}
|
||||
STR_GRAPH_Y_LABEL_NUMBER :{TINY_FONT}{COMMA}
|
||||
|
||||
|
||||
@@ -523,8 +523,8 @@ STR_MONTH_DEC :डिसें
|
||||
# Graph window
|
||||
STR_GRAPH_KEY_BUTTON :{BLACK}किल्ली
|
||||
STR_GRAPH_KEY_TOOLTIP :{BLACK}आलेख दर्शवा की
|
||||
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}{} {STRING}
|
||||
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{} {STRING}{}{NUM}
|
||||
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}
|
||||
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{}{NUM}
|
||||
STR_GRAPH_Y_LABEL :{TINY_FONT}{STRING}
|
||||
STR_GRAPH_Y_LABEL_NUMBER :{TINY_FONT}{COMMA}
|
||||
|
||||
|
||||
@@ -552,8 +552,8 @@ STR_MONTH_DEC :دسامبر
|
||||
# Graph window
|
||||
STR_GRAPH_KEY_BUTTON :{BLACK}کلید
|
||||
STR_GRAPH_KEY_TOOLTIP :{BLACK}نمایش راهنمای نمودار
|
||||
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}{} {STRING}
|
||||
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{} {STRING}{}{NUM}
|
||||
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}
|
||||
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{}{NUM}
|
||||
STR_GRAPH_Y_LABEL :{TINY_FONT}{STRING}
|
||||
STR_GRAPH_Y_LABEL_NUMBER :{TINY_FONT}{COMMA}
|
||||
|
||||
|
||||
@@ -542,8 +542,8 @@ STR_MONTH_DEC :دسمبر
|
||||
# Graph window
|
||||
STR_GRAPH_KEY_BUTTON :{BLACK} کلید
|
||||
STR_GRAPH_KEY_TOOLTIP :{BLACK}مخطط کی کلیدیں دکھائیں
|
||||
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}{} {STRING}
|
||||
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{} {STRING}{}{NUM}
|
||||
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}
|
||||
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{}{NUM}
|
||||
STR_GRAPH_Y_LABEL :{TINY_FONT}{STRING}
|
||||
STR_GRAPH_Y_LABEL_NUMBER :{TINY_FONT}{COMMA}
|
||||
|
||||
|
||||
@@ -569,8 +569,8 @@ STR_MONTH_DEC :Tháng Mười
|
||||
# Graph window
|
||||
STR_GRAPH_KEY_BUTTON :{BLACK}Nút
|
||||
STR_GRAPH_KEY_TOOLTIP :{BLACK}Hiện khóa trên biểu đồ
|
||||
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}{} {STRING}
|
||||
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{} {STRING}{}{NUM}
|
||||
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}
|
||||
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{}{NUM}
|
||||
STR_GRAPH_Y_LABEL :{TINY_FONT}{STRING}
|
||||
STR_GRAPH_Y_LABEL_NUMBER :{TINY_FONT}{COMMA}
|
||||
|
||||
|
||||
@@ -560,8 +560,8 @@ STR_MONTH_DEC :Rhagfyr
|
||||
# Graph window
|
||||
STR_GRAPH_KEY_BUTTON :{BLACK}Allwedd
|
||||
STR_GRAPH_KEY_TOOLTIP :{BLACK}Dangos allwedd i'r graffiau
|
||||
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}{} {STRING}
|
||||
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{} {STRING}{}{NUM}
|
||||
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}
|
||||
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{}{NUM}
|
||||
STR_GRAPH_Y_LABEL :{TINY_FONT}{STRING}
|
||||
STR_GRAPH_Y_LABEL_NUMBER :{TINY_FONT}{COMMA}
|
||||
|
||||
|
||||
@@ -10,5 +10,6 @@ add_files(
|
||||
getoptdata.cpp
|
||||
getoptdata.h
|
||||
hashtable.hpp
|
||||
lrucache.hpp
|
||||
str.hpp
|
||||
)
|
||||
|
||||
116
src/misc/lrucache.hpp
Normal file
116
src/misc/lrucache.hpp
Normal file
@@ -0,0 +1,116 @@
|
||||
/* $Id$ */
|
||||
|
||||
/*
|
||||
* This file is part of OpenTTD.
|
||||
* OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
|
||||
* OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
* See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/** @file lrucache.hpp Size limited cache map with a least recently used eviction strategy. */
|
||||
|
||||
#ifndef LRUCACHE_HPP
|
||||
#define LRUCACHE_HPP
|
||||
|
||||
#include <utility>
|
||||
#include <list>
|
||||
#include <functional>
|
||||
#include <unordered_map>
|
||||
#include <stdexcept>
|
||||
|
||||
/**
|
||||
* Size limited cache with a least recently used eviction strategy.
|
||||
* @tparam Tkey Type of the cache key.
|
||||
* @tparam Tdata Type of the cache item. The cache will store a pointer of this type.
|
||||
*/
|
||||
template <class Tkey, class Tdata>
|
||||
class LRUCache {
|
||||
private:
|
||||
typedef std::pair<Tkey, Tdata *> Tpair;
|
||||
typedef typename std::list<Tpair>::iterator Titer;
|
||||
|
||||
std::list<Tpair> data; ///< Ordered list of all items.
|
||||
std::unordered_map<Tkey, Titer> lookup; ///< Map of keys to items.
|
||||
|
||||
const size_t capacity; ///< Number of items to cache.
|
||||
|
||||
public:
|
||||
/**
|
||||
* Construct new LRU cache map.
|
||||
* @param max_items Number of items to store at most.
|
||||
*/
|
||||
LRUCache(size_t max_items) : capacity(max_items) {}
|
||||
|
||||
/**
|
||||
* Test if a key is already contained in the cache.
|
||||
* @param key The key to search.
|
||||
* @return True, if the key was found.
|
||||
*/
|
||||
inline bool Contains(const Tkey key)
|
||||
{
|
||||
return this->lookup.find(key) != this->lookup.end();
|
||||
}
|
||||
|
||||
/**
|
||||
* Insert a new data item with a specified key.
|
||||
* @param key Key under which the item should be stored.
|
||||
* @param item Item to insert.
|
||||
* @return Evicted item or nullptr, if no item had to be evicted.
|
||||
*/
|
||||
Tdata *Insert(const Tkey key, Tdata *item)
|
||||
{
|
||||
Tdata *old = nullptr;
|
||||
|
||||
if (this->Contains(key)) {
|
||||
/* Replace old value. */
|
||||
old = this->lookup[key]->second;
|
||||
this->lookup[key]->second = item;
|
||||
} else {
|
||||
/* Delete least used item if maximum items cached. */
|
||||
if (this->data.size() >= this->capacity) {
|
||||
Tpair last = data.back();
|
||||
this->lookup.erase(last.first);
|
||||
this->data.pop_back();
|
||||
|
||||
old = last.second;
|
||||
}
|
||||
|
||||
/* Insert new item. */
|
||||
this->data.push_front(std::make_pair(key, item));
|
||||
this->lookup.emplace(key, this->data.begin());
|
||||
}
|
||||
|
||||
return old;
|
||||
}
|
||||
|
||||
/**
|
||||
* Pop the least recently used item.
|
||||
* @return The item value or nullptr if no items cached.
|
||||
*/
|
||||
inline Tdata *Pop()
|
||||
{
|
||||
if (this->data.empty()) return nullptr;
|
||||
|
||||
Tdata *value = this->data.back().second;
|
||||
this->lookup.erase(this->data.back().first);
|
||||
this->data.pop_back();
|
||||
return value;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get an item from the cache.
|
||||
* @param key The key to look up.
|
||||
* @return The item value.
|
||||
* @note Throws if item not found.
|
||||
*/
|
||||
inline Tdata *Get(const Tkey key)
|
||||
{
|
||||
if (this->lookup.find(key) == this->lookup.end()) throw std::out_of_range("item not found");
|
||||
/* Move to front if needed. */
|
||||
this->data.splice(this->data.begin(), this->data, this->lookup[key]);
|
||||
|
||||
return this->data.front().second;
|
||||
}
|
||||
};
|
||||
|
||||
#endif /* LRUCACHE_HPP */
|
||||
@@ -84,7 +84,7 @@ struct DLSFile {
|
||||
std::vector<DLSWave> waves;
|
||||
|
||||
/** Try loading a DLS file into memory. */
|
||||
bool LoadFile(const TCHAR *file);
|
||||
bool LoadFile(const wchar_t *file);
|
||||
|
||||
private:
|
||||
/** Load an articulation structure from a DLS file. */
|
||||
@@ -431,11 +431,11 @@ bool DLSFile::ReadDLSWaveList(FILE *f, DWORD list_length)
|
||||
return true;
|
||||
}
|
||||
|
||||
bool DLSFile::LoadFile(const TCHAR *file)
|
||||
bool DLSFile::LoadFile(const wchar_t *file)
|
||||
{
|
||||
DEBUG(driver, 2, "DMusic: Try to load DLS file %s", FS2OTTD(file));
|
||||
|
||||
FILE *f = _tfopen(file, _T("rb"));
|
||||
FILE *f = _wfopen(file, L"rb");
|
||||
if (f == nullptr) return false;
|
||||
|
||||
FileCloser f_scope(f);
|
||||
@@ -864,11 +864,11 @@ static const char *LoadDefaultDLSFile(const char *user_dls)
|
||||
if (user_dls == nullptr) {
|
||||
/* Try loading the default GM DLS file stored in the registry. */
|
||||
HKEY hkDM;
|
||||
if (SUCCEEDED(RegOpenKeyEx(HKEY_LOCAL_MACHINE, _T("Software\\Microsoft\\DirectMusic"), 0, KEY_READ, &hkDM))) {
|
||||
TCHAR dls_path[MAX_PATH];
|
||||
if (SUCCEEDED(RegOpenKeyEx(HKEY_LOCAL_MACHINE, L"Software\\Microsoft\\DirectMusic", 0, KEY_READ, &hkDM))) {
|
||||
wchar_t dls_path[MAX_PATH];
|
||||
DWORD buf_size = sizeof(dls_path); // Buffer size as to be given in bytes!
|
||||
if (SUCCEEDED(RegQueryValueEx(hkDM, _T("GMFilePath"), nullptr, nullptr, (LPBYTE)dls_path, &buf_size))) {
|
||||
TCHAR expand_path[MAX_PATH * 2];
|
||||
if (SUCCEEDED(RegQueryValueEx(hkDM, L"GMFilePath", nullptr, nullptr, (LPBYTE)dls_path, &buf_size))) {
|
||||
wchar_t expand_path[MAX_PATH * 2];
|
||||
ExpandEnvironmentStrings(dls_path, expand_path, lengthof(expand_path));
|
||||
if (!dls_file.LoadFile(expand_path)) DEBUG(driver, 1, "Failed to load default GM DLS file from registry");
|
||||
}
|
||||
@@ -877,8 +877,8 @@ static const char *LoadDefaultDLSFile(const char *user_dls)
|
||||
|
||||
/* If we couldn't load the file from the registry, try again at the default install path of the GM DLS file. */
|
||||
if (dls_file.instruments.size() == 0) {
|
||||
static const TCHAR *DLS_GM_FILE = _T("%windir%\\System32\\drivers\\gm.dls");
|
||||
TCHAR path[MAX_PATH];
|
||||
static const wchar_t *DLS_GM_FILE = L"%windir%\\System32\\drivers\\gm.dls";
|
||||
wchar_t path[MAX_PATH];
|
||||
ExpandEnvironmentStrings(DLS_GM_FILE, path, lengthof(path));
|
||||
|
||||
if (!dls_file.LoadFile(path)) return "Can't load GM DLS collection";
|
||||
@@ -1106,7 +1106,6 @@ const char *MusicDriver_DMusic::Start(const StringList &parm)
|
||||
DEBUG(driver, 1, "Detected DirectMusic ports:");
|
||||
for (int i = 0; _music->EnumPort(i, &caps) == S_OK; i++) {
|
||||
if (caps.dwClass == DMUS_PC_OUTPUTCLASS) {
|
||||
/* Description is UNICODE even for ANSI build. */
|
||||
DEBUG(driver, 1, " %d: %s%s", i, convert_from_fs(caps.wszDescription, desc, lengthof(desc)), i == pIdx ? " (selected)" : "");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -31,6 +31,7 @@
|
||||
#include "../newgrf.h"
|
||||
#include "../error.h"
|
||||
#include "../guitimer_func.h"
|
||||
#include "../zoom_func.h"
|
||||
|
||||
#include "../widgets/network_widget.h"
|
||||
|
||||
@@ -395,6 +396,7 @@ protected:
|
||||
/* offsets to vertically centre text and icons */
|
||||
int text_y_offset = (this->resize.step_height - FONT_HEIGHT_NORMAL) / 2 + 1;
|
||||
int icon_y_offset = (this->resize.step_height - GetSpriteSize(SPR_BLOT).height) / 2;
|
||||
int lock_y_offset = (this->resize.step_height - GetSpriteSize(SPR_LOCK).height) / 2;
|
||||
|
||||
DrawString(nwi_name->pos_x + WD_FRAMERECT_LEFT, nwi_name->pos_x + nwi_name->current_x - WD_FRAMERECT_RIGHT, y + text_y_offset, cur_item->info.server_name, TC_BLACK);
|
||||
|
||||
@@ -439,13 +441,13 @@ protected:
|
||||
}
|
||||
|
||||
/* draw a lock if the server is password protected */
|
||||
if (cur_item->info.use_password) DrawSprite(SPR_LOCK, PAL_NONE, nwi_info->pos_x + this->lock_offset, y + icon_y_offset - 1);
|
||||
if (cur_item->info.use_password) DrawSprite(SPR_LOCK, PAL_NONE, nwi_info->pos_x + this->lock_offset, y + lock_y_offset);
|
||||
|
||||
/* draw red or green icon, depending on compatibility with server */
|
||||
DrawSprite(SPR_BLOT, (cur_item->info.compatible ? PALETTE_TO_GREEN : (cur_item->info.version_compatible ? PALETTE_TO_YELLOW : PALETTE_TO_RED)), nwi_info->pos_x + this->blot_offset, y + icon_y_offset);
|
||||
DrawSprite(SPR_BLOT, (cur_item->info.compatible ? PALETTE_TO_GREEN : (cur_item->info.version_compatible ? PALETTE_TO_YELLOW : PALETTE_TO_RED)), nwi_info->pos_x + this->blot_offset, y + icon_y_offset + 1);
|
||||
|
||||
/* draw flag according to server language */
|
||||
DrawSprite(SPR_FLAGS_BASE + cur_item->info.server_lang, PAL_NONE, nwi_info->pos_x + this->flag_offset, y + icon_y_offset);
|
||||
DrawSprite(SPR_FLAGS_BASE + cur_item->info.server_lang, PAL_NONE, nwi_info->pos_x + this->flag_offset, y + (this->resize.step_height - GetSpriteSize(SPR_FLAGS_BASE + cur_item->info.server_lang).height) / 2);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1374,7 +1376,7 @@ struct NetworkLobbyWindow : public Window {
|
||||
break;
|
||||
|
||||
case WID_NL_MATRIX:
|
||||
resize->height = WD_MATRIX_TOP + FONT_HEIGHT_NORMAL + WD_MATRIX_BOTTOM;
|
||||
resize->height = WD_MATRIX_TOP + std::max<uint>(std::max(GetSpriteSize(SPR_LOCK).height, GetSpriteSize(SPR_PROFIT_LOT).height), FONT_HEIGHT_NORMAL) + WD_MATRIX_BOTTOM;
|
||||
size->height = 10 * resize->height;
|
||||
break;
|
||||
|
||||
@@ -1428,31 +1430,32 @@ struct NetworkLobbyWindow : public Window {
|
||||
bool rtl = _current_text_dir == TD_RTL;
|
||||
uint left = r.left + WD_FRAMERECT_LEFT;
|
||||
uint right = r.right - WD_FRAMERECT_RIGHT;
|
||||
uint text_offset = (this->resize.step_height - WD_MATRIX_TOP - WD_MATRIX_BOTTOM - FONT_HEIGHT_NORMAL) / 2 + WD_MATRIX_TOP;
|
||||
|
||||
Dimension lock_size = GetSpriteSize(SPR_LOCK);
|
||||
int lock_width = lock_size.width;
|
||||
int lock_y_offset = (this->resize.step_height - WD_MATRIX_TOP - WD_MATRIX_BOTTOM - lock_size.height) / 2;
|
||||
int lock_y_offset = (this->resize.step_height - WD_MATRIX_TOP - WD_MATRIX_BOTTOM - lock_size.height) / 2 + WD_MATRIX_TOP;
|
||||
|
||||
Dimension profit_size = GetSpriteSize(SPR_PROFIT_LOT);
|
||||
int profit_width = lock_size.width;
|
||||
int profit_y_offset = (this->resize.step_height - WD_MATRIX_TOP - WD_MATRIX_BOTTOM - profit_size.height) / 2;
|
||||
int profit_y_offset = (this->resize.step_height - WD_MATRIX_TOP - WD_MATRIX_BOTTOM - profit_size.height) / 2 + WD_MATRIX_TOP;
|
||||
|
||||
uint text_left = left + (rtl ? lock_width + profit_width + 4 : 0);
|
||||
uint text_right = right - (rtl ? 0 : lock_width + profit_width + 4);
|
||||
uint profit_left = rtl ? left : right - profit_width;
|
||||
uint lock_left = rtl ? left + profit_width + 2 : right - profit_width - lock_width - 2;
|
||||
|
||||
int y = r.top + WD_MATRIX_TOP;
|
||||
int y = r.top;
|
||||
/* Draw company list */
|
||||
int pos = this->vscroll->GetPosition();
|
||||
while (pos < this->server->info.companies_on) {
|
||||
byte company = NetworkLobbyFindCompanyIndex(pos);
|
||||
bool income = false;
|
||||
if (this->company == company) {
|
||||
GfxFillRect(r.left + 1, y - 2, r.right - 1, y + FONT_HEIGHT_NORMAL, PC_GREY); // show highlighted item with a different colour
|
||||
GfxFillRect(r.left + WD_BEVEL_LEFT, y + 1, r.right - WD_BEVEL_RIGHT, y + this->resize.step_height - 2, PC_GREY); // show highlighted item with a different colour
|
||||
}
|
||||
|
||||
DrawString(text_left, text_right, y, this->company_info[company].company_name, TC_BLACK);
|
||||
DrawString(text_left, text_right, y + text_offset, this->company_info[company].company_name, TC_BLACK);
|
||||
if (this->company_info[company].use_password != 0) DrawSprite(SPR_LOCK, PAL_NONE, lock_left, y + lock_y_offset);
|
||||
|
||||
/* If the company's income was positive puts a green dot else a red dot */
|
||||
|
||||
@@ -264,7 +264,7 @@ NetworkRecvStatus ServerNetworkGameSocketHandler::CloseConnection(NetworkRecvSta
|
||||
*/
|
||||
if (this->sock == INVALID_SOCKET) return status;
|
||||
|
||||
if (status != NETWORK_RECV_STATUS_CONN_LOST && !this->HasClientQuit() && this->status >= STATUS_AUTHORIZED) {
|
||||
if (status != NETWORK_RECV_STATUS_CONN_LOST && status != NETWORK_RECV_STATUS_SERVER_ERROR && !this->HasClientQuit() && this->status >= STATUS_AUTHORIZED) {
|
||||
/* We did not receive a leave message from this client... */
|
||||
char client_name[NETWORK_CLIENT_NAME_LENGTH];
|
||||
|
||||
@@ -1187,12 +1187,12 @@ NetworkRecvStatus ServerNetworkGameSocketHandler::Receive_CLIENT_COMMAND(Packet
|
||||
|
||||
|
||||
if ((GetCommandFlags(cp.cmd) & (CMD_SERVER | CMD_SERVER_NS)) && ci->client_id != CLIENT_ID_SERVER && !this->settings_authed) {
|
||||
IConsolePrintF(CC_ERROR, "WARNING: server only command from: client %d (IP: %s), kicking...", ci->client_id, this->GetClientIP());
|
||||
IConsolePrintF(CC_ERROR, "WARNING: server only command %u from client %u (IP: %s), kicking...", cp.cmd & CMD_ID_MASK, ci->client_id, this->GetClientIP());
|
||||
return this->SendError(NETWORK_ERROR_KICKED);
|
||||
}
|
||||
|
||||
if ((GetCommandFlags(cp.cmd) & CMD_SPECTATOR) == 0 && !Company::IsValidID(cp.company) && ci->client_id != CLIENT_ID_SERVER && !this->settings_authed) {
|
||||
IConsolePrintF(CC_ERROR, "WARNING: spectator issuing command from client %d (IP: %s), kicking...", ci->client_id, this->GetClientIP());
|
||||
IConsolePrintF(CC_ERROR, "WARNING: spectator (client: %u, IP: %s) issued non-spectator command %u, kicking...", ci->client_id, this->GetClientIP(), cp.cmd & CMD_ID_MASK);
|
||||
return this->SendError(NETWORK_ERROR_KICKED);
|
||||
}
|
||||
|
||||
|
||||
@@ -286,6 +286,7 @@ const Sprite *CoreTextFontCache::InternalGetGlyph(GlyphID key, bool use_aa)
|
||||
SpriteLoader::Sprite sprite;
|
||||
sprite.AllocateData(ZOOM_LVL_NORMAL, width * height);
|
||||
sprite.type = ST_FONT;
|
||||
sprite.colours = (use_aa ? SCC_PAL | SCC_ALPHA : SCC_PAL);
|
||||
sprite.width = width;
|
||||
sprite.height = height;
|
||||
sprite.x_offs = (int16)std::round(CGRectGetMinX(bounds));
|
||||
@@ -332,7 +333,7 @@ const Sprite *CoreTextFontCache::InternalGetGlyph(GlyphID key, bool use_aa)
|
||||
}
|
||||
|
||||
GlyphEntry new_glyph;
|
||||
new_glyph.sprite = BlitterFactory::GetCurrentBlitter()->Encode(&sprite, AllocateFont);
|
||||
new_glyph.sprite = BlitterFactory::GetCurrentBlitter()->Encode(&sprite, SimpleSpriteAlloc);
|
||||
new_glyph.width = (byte)std::round(CTFontGetAdvancesForGlyphs(this->font.get(), kCTFontOrientationDefault, &glyph, nullptr, 1));
|
||||
this->SetGlyphPtr(key, &new_glyph);
|
||||
|
||||
|
||||
@@ -191,7 +191,7 @@ static uint32 CalcCRC(byte *data, uint size, uint32 crc)
|
||||
return crc;
|
||||
}
|
||||
|
||||
static void GetFileInfo(DebugFileInfo *dfi, const TCHAR *filename)
|
||||
static void GetFileInfo(DebugFileInfo *dfi, const wchar_t *filename)
|
||||
{
|
||||
HANDLE file;
|
||||
memset(dfi, 0, sizeof(*dfi));
|
||||
@@ -224,7 +224,7 @@ static void GetFileInfo(DebugFileInfo *dfi, const TCHAR *filename)
|
||||
|
||||
static char *PrintModuleInfo(char *output, const char *last, HMODULE mod)
|
||||
{
|
||||
TCHAR buffer[MAX_PATH];
|
||||
wchar_t buffer[MAX_PATH];
|
||||
DebugFileInfo dfi;
|
||||
|
||||
GetModuleFileName(mod, buffer, MAX_PATH);
|
||||
@@ -568,7 +568,7 @@ char *CrashLogWindows::AppendDecodedStacktrace(char *buffer, const char *last) c
|
||||
if (_settings_client.gui.developer == 0) return 0;
|
||||
|
||||
int ret = 0;
|
||||
HMODULE dbghelp = LoadLibrary(_T("dbghelp.dll"));
|
||||
HMODULE dbghelp = LoadLibrary(L"dbghelp.dll");
|
||||
if (dbghelp != nullptr) {
|
||||
typedef BOOL (WINAPI *MiniDumpWriteDump_t)(HANDLE, DWORD, HANDLE,
|
||||
MINIDUMP_TYPE,
|
||||
@@ -631,10 +631,10 @@ static LONG WINAPI ExceptionHandler(EXCEPTION_POINTERS *ep)
|
||||
|
||||
const char *abort_reason = CrashLog::GetAbortCrashlogReason();
|
||||
if (abort_reason != nullptr) {
|
||||
TCHAR _emergency_crash[512];
|
||||
_sntprintf(_emergency_crash, lengthof(_emergency_crash),
|
||||
_T("A serious fault condition occurred in the game. The game will shut down. (%s)\n"), OTTD2FS(abort_reason));
|
||||
MessageBox(nullptr, _emergency_crash, _T("Fatal Application Failure"), MB_ICONERROR);
|
||||
wchar_t _emergency_crash[512];
|
||||
_snwprintf(_emergency_crash, lengthof(_emergency_crash),
|
||||
L"A serious fault condition occurred in the game. The game will shut down. (%s)\n", OTTD2FS(abort_reason));
|
||||
MessageBox(nullptr, _emergency_crash, L"Fatal Application Failure", MB_ICONERROR);
|
||||
ExitProcess(3);
|
||||
}
|
||||
|
||||
@@ -750,20 +750,20 @@ static void CDECL CustomAbort(int signal)
|
||||
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 (log files and crash saves, if any) to the patchpack developer.\n")
|
||||
_T("This will greatly help debugging. The correct place to do this is https://www.tt-forums.net/viewtopic.php?f=33&t=73469")
|
||||
_T(" or https://github.com/JGRennison/OpenTTD-patches\n")
|
||||
_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");
|
||||
L"A serious fault condition occurred in the game. The game will shut down.\n"
|
||||
L"Please send the crash information (log files and crash saves, if any) to the patchpack developer.\n"
|
||||
L"This will greatly help debugging. The correct place to do this is https://www.tt-forums.net/viewtopic.php?f=33&t=73469"
|
||||
L" or https://github.com/JGRennison/OpenTTD-patches\n"
|
||||
L"The information contained in the report is displayed below.\n"
|
||||
L"Press \"Emergency save\" to attempt saving the game. Generated file(s):\n"
|
||||
L"%s";
|
||||
|
||||
static const TCHAR _save_succeeded[] =
|
||||
_T("Emergency save succeeded.\nIts location is '%s'.\n")
|
||||
_T("Be aware that critical parts of the internal game state may have become ")
|
||||
_T("corrupted. The saved game is not guaranteed to work.");
|
||||
static const wchar_t _save_succeeded[] =
|
||||
L"Emergency save succeeded.\nIts location is '%s'.\n"
|
||||
L"Be aware that critical parts of the internal game state may have become "
|
||||
L"corrupted. The saved game is not guaranteed to work.";
|
||||
|
||||
static const TCHAR * const _expand_texts[] = {_T("S&how report >>"), _T("&Hide report <<") };
|
||||
static const wchar_t * const _expand_texts[] = {L"S&how report >>", L"&Hide report <<" };
|
||||
|
||||
static void SetWndSize(HWND wnd, int mode)
|
||||
{
|
||||
@@ -786,17 +786,13 @@ static void SetWndSize(HWND wnd, int mode)
|
||||
}
|
||||
}
|
||||
|
||||
/* When TCHAR is char, then _sntprintf becomes snprintf. When TCHAR is wchar it doesn't. Likewise for strcat. */
|
||||
#undef snprintf
|
||||
#undef strcat
|
||||
|
||||
static INT_PTR CALLBACK CrashDialogFunc(HWND wnd, UINT msg, WPARAM wParam, LPARAM lParam)
|
||||
{
|
||||
switch (msg) {
|
||||
case WM_INITDIALOG: {
|
||||
/* We need to put the crash-log in a separate buffer because the default
|
||||
* buffer in MB_TO_WIDE is not large enough (512 chars) */
|
||||
TCHAR crash_msgW[lengthof(CrashLogWindows::current->crashlog)];
|
||||
* buffer in OTTD2FS is not large enough (512 chars) */
|
||||
wchar_t crash_msgW[lengthof(CrashLogWindows::current->crashlog)];
|
||||
/* Convert unix -> dos newlines because the edit box only supports that properly :( */
|
||||
const char *unix_nl = CrashLogWindows::current->crashlog;
|
||||
char dos_nl[lengthof(CrashLogWindows::current->crashlog)];
|
||||
@@ -809,20 +805,20 @@ static INT_PTR CALLBACK CrashDialogFunc(HWND wnd, UINT msg, WPARAM wParam, LPARA
|
||||
*p = '\0';
|
||||
|
||||
/* Add path to crash.log and crash.dmp (if any) to the crash window text */
|
||||
size_t len = _tcslen(_crash_desc) + 2;
|
||||
len += _tcslen(OTTD2FS(CrashLogWindows::current->crashlog_filename)) + 2;
|
||||
len += _tcslen(OTTD2FS(CrashLogWindows::current->crashdump_filename)) + 2;
|
||||
len += _tcslen(OTTD2FS(CrashLogWindows::current->screenshot_filename)) + 1;
|
||||
size_t len = wcslen(_crash_desc) + 2;
|
||||
len += wcslen(OTTD2FS(CrashLogWindows::current->crashlog_filename)) + 2;
|
||||
len += wcslen(OTTD2FS(CrashLogWindows::current->crashdump_filename)) + 2;
|
||||
len += wcslen(OTTD2FS(CrashLogWindows::current->screenshot_filename)) + 1;
|
||||
|
||||
TCHAR *text = AllocaM(TCHAR, len);
|
||||
_sntprintf(text, len, _crash_desc, OTTD2FS(CrashLogWindows::current->crashlog_filename));
|
||||
if (_settings_client.gui.developer > 0 && OTTD2FS(CrashLogWindows::current->crashdump_filename)[0] != _T('\0')) {
|
||||
_tcscat(text, _T("\n"));
|
||||
_tcscat(text, OTTD2FS(CrashLogWindows::current->crashdump_filename));
|
||||
wchar_t *text = AllocaM(wchar_t, len);
|
||||
_snwprintf(text, len, _crash_desc, OTTD2FS(CrashLogWindows::current->crashlog_filename));
|
||||
if (_settings_client.gui.developer > 0 && OTTD2FS(CrashLogWindows::current->crashdump_filename)[0] != L'\0') {
|
||||
wcscat(text, L"\n");
|
||||
wcscat(text, OTTD2FS(CrashLogWindows::current->crashdump_filename));
|
||||
}
|
||||
if (OTTD2FS(CrashLogWindows::current->screenshot_filename)[0] != _T('\0')) {
|
||||
_tcscat(text, _T("\n"));
|
||||
_tcscat(text, OTTD2FS(CrashLogWindows::current->screenshot_filename));
|
||||
if (OTTD2FS(CrashLogWindows::current->screenshot_filename)[0] != L'\0') {
|
||||
wcscat(text, L"\n");
|
||||
wcscat(text, OTTD2FS(CrashLogWindows::current->screenshot_filename));
|
||||
}
|
||||
|
||||
SetDlgItemText(wnd, 10, text);
|
||||
@@ -840,12 +836,12 @@ static INT_PTR CALLBACK CrashDialogFunc(HWND wnd, UINT msg, WPARAM wParam, LPARA
|
||||
_save_DBGC_data = true;
|
||||
char filename[MAX_PATH];
|
||||
if (CrashLogWindows::current->WriteSavegame(filename, lastof(filename), CrashLogWindows::current->name_buffer)) {
|
||||
size_t len = _tcslen(_save_succeeded) + _tcslen(OTTD2FS(filename)) + 1;
|
||||
TCHAR *text = AllocaM(TCHAR, len);
|
||||
_sntprintf(text, len, _save_succeeded, OTTD2FS(filename));
|
||||
MessageBox(wnd, text, _T("Save successful"), MB_ICONINFORMATION);
|
||||
size_t len = wcslen(_save_succeeded) + wcslen(OTTD2FS(filename)) + 1;
|
||||
wchar_t *text = AllocaM(wchar_t, len);
|
||||
_snwprintf(text, len, _save_succeeded, OTTD2FS(filename));
|
||||
MessageBox(wnd, text, L"Save successful", MB_ICONINFORMATION);
|
||||
} else {
|
||||
MessageBox(wnd, _T("Save failed"), _T("Save failed"), MB_ICONINFORMATION);
|
||||
MessageBox(wnd, L"Save failed", L"Save failed", MB_ICONINFORMATION);
|
||||
}
|
||||
_savegame_DBGL_data = nullptr;
|
||||
_save_DBGC_data = false;
|
||||
|
||||
@@ -46,17 +46,12 @@ extern FT_Library _library;
|
||||
* @param long_path the path in system encoding.
|
||||
* @return the short path in ANSI (ASCII).
|
||||
*/
|
||||
static const char *GetShortPath(const TCHAR *long_path)
|
||||
static const char *GetShortPath(const wchar_t *long_path)
|
||||
{
|
||||
static char short_path[MAX_PATH];
|
||||
#ifdef UNICODE
|
||||
WCHAR short_path_w[MAX_PATH];
|
||||
wchar_t short_path_w[MAX_PATH];
|
||||
GetShortPathName(long_path, short_path_w, lengthof(short_path_w));
|
||||
WideCharToMultiByte(CP_ACP, 0, short_path_w, -1, short_path, lengthof(short_path), nullptr, nullptr);
|
||||
#else
|
||||
/* Technically not needed, but do it for consistency. */
|
||||
GetShortPathName(long_path, short_path, lengthof(short_path));
|
||||
#endif
|
||||
return short_path;
|
||||
}
|
||||
|
||||
@@ -68,35 +63,30 @@ static const char *GetShortPath(const TCHAR *long_path)
|
||||
* kept in memory then until the font is no longer needed. This could mean
|
||||
* an additional memory usage of 30MB (just for fonts!) when using an eastern
|
||||
* font for all font sizes */
|
||||
#define FONT_DIR_NT "SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Fonts"
|
||||
#define FONT_DIR_9X "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Fonts"
|
||||
static const wchar_t *FONT_DIR_NT = L"SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Fonts";
|
||||
FT_Error GetFontByFaceName(const char *font_name, FT_Face *face)
|
||||
{
|
||||
FT_Error err = FT_Err_Cannot_Open_Resource;
|
||||
HKEY hKey;
|
||||
LONG ret;
|
||||
TCHAR vbuffer[MAX_PATH], dbuffer[256];
|
||||
TCHAR *pathbuf;
|
||||
wchar_t vbuffer[MAX_PATH], dbuffer[256];
|
||||
wchar_t *pathbuf;
|
||||
const char *font_path;
|
||||
uint index;
|
||||
size_t path_len;
|
||||
|
||||
/* On windows NT (2000, NT3.5, XP, etc.) the fonts are stored in the
|
||||
* "Windows NT" key, on Windows 9x in the Windows key. To save us having
|
||||
* to retrieve the windows version, we'll just query both */
|
||||
ret = RegOpenKeyEx(HKEY_LOCAL_MACHINE, _T(FONT_DIR_NT), 0, KEY_READ, &hKey);
|
||||
if (ret != ERROR_SUCCESS) ret = RegOpenKeyEx(HKEY_LOCAL_MACHINE, _T(FONT_DIR_9X), 0, KEY_READ, &hKey);
|
||||
ret = RegOpenKeyEx(HKEY_LOCAL_MACHINE, FONT_DIR_NT, 0, KEY_READ, &hKey);
|
||||
|
||||
if (ret != ERROR_SUCCESS) {
|
||||
DEBUG(freetype, 0, "Cannot open registry key HKLM\\SOFTWARE\\Microsoft\\Windows (NT)\\CurrentVersion\\Fonts");
|
||||
DEBUG(freetype, 0, "Cannot open registry key HKLM\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Fonts");
|
||||
return err;
|
||||
}
|
||||
|
||||
/* Convert font name to file system encoding. */
|
||||
TCHAR *font_namep = _tcsdup(OTTD2FS(font_name));
|
||||
wchar_t *font_namep = wcsdup(OTTD2FS(font_name));
|
||||
|
||||
for (index = 0;; index++) {
|
||||
TCHAR *s;
|
||||
wchar_t *s;
|
||||
DWORD vbuflen = lengthof(vbuffer);
|
||||
DWORD dbuflen = lengthof(dbuffer);
|
||||
|
||||
@@ -112,17 +102,17 @@ FT_Error GetFontByFaceName(const char *font_name, FT_Face *face)
|
||||
* TTC files, font files which contain more than one font are separated
|
||||
* by '&'. Our best bet will be to do substr match for the fontname
|
||||
* and then let FreeType figure out which index to load */
|
||||
s = _tcschr(vbuffer, _T('('));
|
||||
s = wcschr(vbuffer, L'(');
|
||||
if (s != nullptr) s[-1] = '\0';
|
||||
|
||||
if (_tcschr(vbuffer, _T('&')) == nullptr) {
|
||||
if (_tcsicmp(vbuffer, font_namep) == 0) break;
|
||||
if (wcschr(vbuffer, L'&') == nullptr) {
|
||||
if (wcsicmp(vbuffer, font_namep) == 0) break;
|
||||
} else {
|
||||
if (_tcsstr(vbuffer, font_namep) != nullptr) break;
|
||||
if (wcsstr(vbuffer, font_namep) != nullptr) break;
|
||||
}
|
||||
}
|
||||
|
||||
if (!SUCCEEDED(OTTDSHGetFolderPath(nullptr, CSIDL_FONTS, nullptr, SHGFP_TYPE_CURRENT, vbuffer))) {
|
||||
if (!SUCCEEDED(SHGetFolderPath(nullptr, CSIDL_FONTS, nullptr, SHGFP_TYPE_CURRENT, vbuffer))) {
|
||||
DEBUG(freetype, 0, "SHGetFolderPath cannot return fonts directory");
|
||||
goto folder_error;
|
||||
}
|
||||
@@ -131,9 +121,9 @@ FT_Error GetFontByFaceName(const char *font_name, FT_Face *face)
|
||||
* contain multiple fonts inside this single file. GetFontData however
|
||||
* returns the whole file, so we need to check each font inside to get the
|
||||
* proper font. */
|
||||
path_len = _tcslen(vbuffer) + _tcslen(dbuffer) + 2; // '\' and terminating nul.
|
||||
pathbuf = AllocaM(TCHAR, path_len);
|
||||
_sntprintf(pathbuf, path_len, _T("%s\\%s"), vbuffer, dbuffer);
|
||||
path_len = wcslen(vbuffer) + wcslen(dbuffer) + 2; // '\' and terminating nul.
|
||||
pathbuf = AllocaM(wchar_t, path_len);
|
||||
_snwprintf(pathbuf, path_len, L"%s\\%s", vbuffer, dbuffer);
|
||||
|
||||
/* Convert the path into something that FreeType understands. */
|
||||
font_path = GetShortPath(pathbuf);
|
||||
@@ -238,13 +228,13 @@ err2:
|
||||
ReleaseDC(nullptr, dc);
|
||||
DeleteObject(font);
|
||||
err1:
|
||||
return ret_font_name == nullptr ? WIDE_TO_MB((const TCHAR *)logfont->elfFullName) : ret_font_name;
|
||||
return ret_font_name == nullptr ? FS2OTTD((const wchar_t *)logfont->elfFullName) : ret_font_name;
|
||||
}
|
||||
#endif /* WITH_FREETYPE */
|
||||
|
||||
class FontList {
|
||||
protected:
|
||||
TCHAR **fonts;
|
||||
wchar_t **fonts;
|
||||
uint items;
|
||||
uint capacity;
|
||||
|
||||
@@ -261,9 +251,9 @@ public:
|
||||
free(this->fonts);
|
||||
}
|
||||
|
||||
bool Add(const TCHAR *font) {
|
||||
bool Add(const wchar_t *font) {
|
||||
for (uint i = 0; i < this->items; i++) {
|
||||
if (_tcscmp(this->fonts[i], font) == 0) return false;
|
||||
if (wcscmp(this->fonts[i], font) == 0) return false;
|
||||
}
|
||||
|
||||
if (this->items == this->capacity) {
|
||||
@@ -271,7 +261,7 @@ public:
|
||||
this->fonts = ReallocT(this->fonts, this->capacity);
|
||||
}
|
||||
|
||||
this->fonts[this->items++] = _tcsdup(font);
|
||||
this->fonts[this->items++] = wcsdup(font);
|
||||
|
||||
return true;
|
||||
}
|
||||
@@ -289,7 +279,7 @@ static int CALLBACK EnumFontCallback(const ENUMLOGFONTEX *logfont, const NEWTEXT
|
||||
EFCParam *info = (EFCParam *)lParam;
|
||||
|
||||
/* Skip duplicates */
|
||||
if (!info->fonts.Add((const TCHAR *)logfont->elfFullName)) return 1;
|
||||
if (!info->fonts.Add((const wchar_t *)logfont->elfFullName)) return 1;
|
||||
/* Only use TrueType fonts */
|
||||
if (!(type & TRUETYPE_FONTTYPE)) return 1;
|
||||
/* Don't use SYMBOL fonts */
|
||||
@@ -315,7 +305,7 @@ static int CALLBACK EnumFontCallback(const ENUMLOGFONTEX *logfont, const NEWTEXT
|
||||
}
|
||||
|
||||
char font_name[MAX_PATH];
|
||||
convert_from_fs((const TCHAR *)logfont->elfFullName, font_name, lengthof(font_name));
|
||||
convert_from_fs((const wchar_t *)logfont->elfFullName, font_name, lengthof(font_name));
|
||||
|
||||
#ifdef WITH_FREETYPE
|
||||
/* Add english name after font name */
|
||||
@@ -352,7 +342,7 @@ bool SetFallbackFont(FreeTypeSettings *settings, const char *language_isocode, i
|
||||
{
|
||||
DEBUG(freetype, 1, "Trying fallback fonts");
|
||||
EFCParam langInfo;
|
||||
if (GetLocaleInfo(MAKELCID(winlangid, SORT_DEFAULT), LOCALE_FONTSIGNATURE, (LPTSTR)&langInfo.locale, sizeof(langInfo.locale) / sizeof(TCHAR)) == 0) {
|
||||
if (GetLocaleInfo(MAKELCID(winlangid, SORT_DEFAULT), LOCALE_FONTSIGNATURE, (LPTSTR)&langInfo.locale, sizeof(langInfo.locale) / sizeof(wchar_t)) == 0) {
|
||||
/* Invalid langid or some other mysterious error, can't determine fallback font. */
|
||||
DEBUG(freetype, 1, "Can't get locale info for fallback font (langid=0x%x)", winlangid);
|
||||
return false;
|
||||
@@ -497,6 +487,7 @@ void Win32FontCache::ClearFontCache()
|
||||
SpriteLoader::Sprite sprite;
|
||||
sprite.AllocateData(ZOOM_LVL_NORMAL, width * height);
|
||||
sprite.type = ST_FONT;
|
||||
sprite.colours = (aa ? SCC_PAL | SCC_ALPHA : SCC_PAL);
|
||||
sprite.width = width;
|
||||
sprite.height = height;
|
||||
sprite.x_offs = gm.gmptGlyphOrigin.x;
|
||||
@@ -533,7 +524,7 @@ void Win32FontCache::ClearFontCache()
|
||||
}
|
||||
|
||||
GlyphEntry new_glyph;
|
||||
new_glyph.sprite = BlitterFactory::GetCurrentBlitter()->Encode(&sprite, AllocateFont);
|
||||
new_glyph.sprite = BlitterFactory::GetCurrentBlitter()->Encode(&sprite, SimpleSpriteAlloc);
|
||||
new_glyph.width = gm.gmCellIncX;
|
||||
|
||||
this->SetGlyphPtr(key, &new_glyph);
|
||||
@@ -612,7 +603,7 @@ void LoadWin32Font(FontSize fs)
|
||||
} else if (strchr(settings->font, '.') != nullptr) {
|
||||
/* Might be a font file name, try load it. */
|
||||
|
||||
TCHAR fontPath[MAX_PATH] = {};
|
||||
wchar_t fontPath[MAX_PATH] = {};
|
||||
|
||||
/* See if this is an absolute path. */
|
||||
if (FileExists(settings->font)) {
|
||||
@@ -630,11 +621,7 @@ void LoadWin32Font(FontSize fs)
|
||||
/* Try a nice little undocumented function first for getting the internal font name.
|
||||
* Some documentation is found at: http://www.undocprint.org/winspool/getfontresourceinfo */
|
||||
typedef BOOL(WINAPI *PFNGETFONTRESOURCEINFO)(LPCTSTR, LPDWORD, LPVOID, DWORD);
|
||||
#ifdef UNICODE
|
||||
static PFNGETFONTRESOURCEINFO GetFontResourceInfo = (PFNGETFONTRESOURCEINFO)GetProcAddress(GetModuleHandle(_T("Gdi32")), "GetFontResourceInfoW");
|
||||
#else
|
||||
static PFNGETFONTRESOURCEINFO GetFontResourceInfo = (PFNGETFONTRESOURCEINFO)GetProcAddress(GetModuleHandle(_T("Gdi32")), "GetFontResourceInfoA");
|
||||
#endif
|
||||
static PFNGETFONTRESOURCEINFO GetFontResourceInfo = (PFNGETFONTRESOURCEINFO)GetProcAddress(GetModuleHandle(L"Gdi32"), "GetFontResourceInfoW");
|
||||
|
||||
if (GetFontResourceInfo != nullptr) {
|
||||
/* Try to query an array of LOGFONTs that describe the file. */
|
||||
@@ -649,10 +636,10 @@ void LoadWin32Font(FontSize fs)
|
||||
|
||||
/* No dice yet. Use the file name as the font face name, hoping it matches. */
|
||||
if (logfont.lfFaceName[0] == 0) {
|
||||
TCHAR fname[_MAX_FNAME];
|
||||
_tsplitpath(fontPath, nullptr, nullptr, fname, nullptr);
|
||||
wchar_t fname[_MAX_FNAME];
|
||||
_wsplitpath(fontPath, nullptr, nullptr, fname, nullptr);
|
||||
|
||||
_tcsncpy_s(logfont.lfFaceName, lengthof(logfont.lfFaceName), fname, _TRUNCATE);
|
||||
wcsncpy_s(logfont.lfFaceName, lengthof(logfont.lfFaceName), fname, _TRUNCATE);
|
||||
logfont.lfWeight = strcasestr(settings->font, " bold") != nullptr || strcasestr(settings->font, "-bold") != nullptr ? FW_BOLD : FW_NORMAL; // Poor man's way to allow selecting bold fonts.
|
||||
}
|
||||
} else {
|
||||
|
||||
@@ -33,7 +33,7 @@ public:
|
||||
~Win32FontCache();
|
||||
void ClearFontCache() override;
|
||||
GlyphID MapCharToGlyph(WChar key) override;
|
||||
const char *GetFontName() override { return WIDE_TO_MB(this->logfont.lfFaceName); }
|
||||
const char *GetFontName() override { return FS2OTTD(this->logfont.lfFaceName); }
|
||||
const void *GetOSHandle() override { return &this->logfont; }
|
||||
};
|
||||
|
||||
|
||||
@@ -48,7 +48,7 @@ static DWORD _tlsdata_key;
|
||||
|
||||
struct TLSData {
|
||||
char utf8_buf[512];
|
||||
TCHAR system_buf[512];
|
||||
wchar_t system_buf[512];
|
||||
char locale_retbuf[6];
|
||||
};
|
||||
|
||||
@@ -76,14 +76,12 @@ bool MyShowCursor(bool show, bool toggle)
|
||||
|
||||
/**
|
||||
* Helper function needed by dynamically loading libraries
|
||||
* XXX: Hurray for MS only having an ANSI GetProcAddress function
|
||||
* on normal windows and no Wide version except for in Windows Mobile/CE
|
||||
*/
|
||||
bool LoadLibraryList(Function proc[], const char *dll)
|
||||
{
|
||||
while (*dll != '\0') {
|
||||
HMODULE lib;
|
||||
lib = LoadLibrary(MB_TO_WIDE(dll));
|
||||
lib = LoadLibrary(OTTD2FS(dll));
|
||||
|
||||
if (lib == nullptr) return false;
|
||||
for (;;) {
|
||||
@@ -103,12 +101,12 @@ bool LoadLibraryList(Function proc[], const char *dll)
|
||||
void ShowOSErrorBox(const char *buf, bool system)
|
||||
{
|
||||
MyShowCursor(true);
|
||||
MessageBox(GetActiveWindow(), OTTD2FS(buf), _T("Error!"), MB_ICONSTOP | MB_TASKMODAL);
|
||||
MessageBox(GetActiveWindow(), OTTD2FS(buf), L"Error!", MB_ICONSTOP | MB_TASKMODAL);
|
||||
}
|
||||
|
||||
void OSOpenBrowser(const char *url)
|
||||
{
|
||||
ShellExecute(GetActiveWindow(), _T("open"), OTTD2FS(url), nullptr, nullptr, SW_SHOWNORMAL);
|
||||
ShellExecute(GetActiveWindow(), L"open", OTTD2FS(url), nullptr, nullptr, SW_SHOWNORMAL);
|
||||
}
|
||||
|
||||
/* Code below for windows version of opendir/readdir/closedir copied and
|
||||
@@ -158,7 +156,7 @@ static inline void dir_free(DIR *d)
|
||||
}
|
||||
}
|
||||
|
||||
DIR *opendir(const TCHAR *path)
|
||||
DIR *opendir(const wchar_t *path)
|
||||
{
|
||||
DIR *d;
|
||||
UINT sem = SetErrorMode(SEM_FAILCRITICALERRORS); // disable 'no-disk' message box
|
||||
@@ -167,12 +165,12 @@ DIR *opendir(const TCHAR *path)
|
||||
if ((fa != INVALID_FILE_ATTRIBUTES) && (fa & FILE_ATTRIBUTE_DIRECTORY)) {
|
||||
d = dir_calloc();
|
||||
if (d != nullptr) {
|
||||
TCHAR search_path[MAX_PATH];
|
||||
bool slash = path[_tcslen(path) - 1] == '\\';
|
||||
wchar_t search_path[MAX_PATH];
|
||||
bool slash = path[wcslen(path) - 1] == '\\';
|
||||
|
||||
/* build search path for FindFirstFile, try not to append additional slashes
|
||||
* as it throws Win9x off its groove for root directories */
|
||||
_sntprintf(search_path, lengthof(search_path), _T("%s%s*"), path, slash ? _T("") : _T("\\"));
|
||||
_snwprintf(search_path, lengthof(search_path), L"%s%s*", path, slash ? L"" : L"\\");
|
||||
*lastof(search_path) = '\0';
|
||||
d->hFind = FindFirstFile(search_path, &d->fd);
|
||||
|
||||
@@ -230,8 +228,8 @@ bool FiosIsRoot(const char *file)
|
||||
|
||||
void FiosGetDrives(FileList &file_list)
|
||||
{
|
||||
TCHAR drives[256];
|
||||
const TCHAR *s;
|
||||
wchar_t drives[256];
|
||||
const wchar_t *s;
|
||||
|
||||
GetLogicalDriveStrings(lengthof(drives), drives);
|
||||
for (s = drives; *s != '\0';) {
|
||||
@@ -270,15 +268,10 @@ bool FiosIsHiddenFile(const struct dirent *ent)
|
||||
bool FiosGetDiskFreeSpace(const char *path, uint64 *tot)
|
||||
{
|
||||
UINT sem = SetErrorMode(SEM_FAILCRITICALERRORS); // disable 'no-disk' message box
|
||||
bool retval = false;
|
||||
TCHAR root[4];
|
||||
DWORD spc, bps, nfc, tnc;
|
||||
|
||||
_sntprintf(root, lengthof(root), _T("%c:") _T(PATHSEP), path[0]);
|
||||
if (tot != nullptr && GetDiskFreeSpace(root, &spc, &bps, &nfc, &tnc)) {
|
||||
*tot = ((spc * bps) * (uint64)nfc);
|
||||
retval = true;
|
||||
}
|
||||
ULARGE_INTEGER bytes_free;
|
||||
bool retval = GetDiskFreeSpaceEx(OTTD2FS(path), &bytes_free, nullptr, nullptr);
|
||||
if (retval) *tot = bytes_free.QuadPart;
|
||||
|
||||
SetErrorMode(sem); // reset previous setting
|
||||
return retval;
|
||||
@@ -392,7 +385,7 @@ static INT_PTR CALLBACK HelpDialogFunc(HWND wnd, UINT msg, WPARAM wParam, LPARAM
|
||||
*q = '\0';
|
||||
/* We need to put the text in a separate buffer because the default
|
||||
* buffer in OTTD2FS might not be large enough (512 chars). */
|
||||
TCHAR help_msg_buf[8192];
|
||||
wchar_t help_msg_buf[8192];
|
||||
SetDlgItemText(wnd, 11, convert_to_fs(help_msg, help_msg_buf, lengthof(help_msg_buf)));
|
||||
SendDlgItemMessage(wnd, 11, WM_SETFONT, (WPARAM)GetStockObject(ANSI_FIXED_FONT), FALSE);
|
||||
} return TRUE;
|
||||
@@ -426,8 +419,8 @@ void ShowInfo(const char *str)
|
||||
} else {
|
||||
/* We need to put the text in a separate buffer because the default
|
||||
* buffer in OTTD2FS might not be large enough (512 chars). */
|
||||
TCHAR help_msg_buf[8192];
|
||||
MessageBox(GetActiveWindow(), convert_to_fs(str, help_msg_buf, lengthof(help_msg_buf)), _T("OpenTTD"), MB_ICONINFORMATION | MB_OK);
|
||||
wchar_t help_msg_buf[8192];
|
||||
MessageBox(GetActiveWindow(), convert_to_fs(str, help_msg_buf, lengthof(help_msg_buf)), L"OpenTTD", MB_ICONINFORMATION | MB_OK);
|
||||
}
|
||||
MyShowCursor(old);
|
||||
}
|
||||
@@ -445,11 +438,6 @@ int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLi
|
||||
|
||||
CrashLog::InitialiseCrashLog();
|
||||
|
||||
#if defined(UNICODE)
|
||||
/* Check if a win9x user started the win32 version */
|
||||
if (HasBit(GetVersion(), 31)) usererror("This version of OpenTTD doesn't run on windows 95/98/ME.\nPlease download the win9x binary and try again.");
|
||||
#endif
|
||||
|
||||
/* Convert the command line to UTF-8. We need a dedicated buffer
|
||||
* for this because argv[] points into this buffer and this needs to
|
||||
* be available between subsequent calls to FS2OTTD(). */
|
||||
@@ -480,7 +468,7 @@ int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLi
|
||||
|
||||
char *getcwd(char *buf, size_t size)
|
||||
{
|
||||
TCHAR path[MAX_PATH];
|
||||
wchar_t path[MAX_PATH];
|
||||
GetCurrentDirectory(MAX_PATH - 1, path);
|
||||
convert_from_fs(path, buf, size);
|
||||
return buf;
|
||||
@@ -492,9 +480,9 @@ void DetermineBasePaths(const char *exe)
|
||||
{
|
||||
extern std::array<std::string, NUM_SEARCHPATHS> _searchpaths;
|
||||
|
||||
TCHAR path[MAX_PATH];
|
||||
wchar_t path[MAX_PATH];
|
||||
#ifdef WITH_PERSONAL_DIR
|
||||
if (SUCCEEDED(OTTDSHGetFolderPath(nullptr, CSIDL_PERSONAL, nullptr, SHGFP_TYPE_CURRENT, path))) {
|
||||
if (SUCCEEDED(SHGetFolderPath(nullptr, CSIDL_PERSONAL, nullptr, SHGFP_TYPE_CURRENT, path))) {
|
||||
std::string tmp(FS2OTTD(path));
|
||||
AppendPathSeparator(tmp);
|
||||
tmp += PERSONAL_DIR;
|
||||
@@ -508,7 +496,7 @@ void DetermineBasePaths(const char *exe)
|
||||
_searchpaths[SP_PERSONAL_DIR].clear();
|
||||
}
|
||||
|
||||
if (SUCCEEDED(OTTDSHGetFolderPath(nullptr, CSIDL_COMMON_DOCUMENTS, nullptr, SHGFP_TYPE_CURRENT, path))) {
|
||||
if (SUCCEEDED(SHGetFolderPath(nullptr, CSIDL_COMMON_DOCUMENTS, nullptr, SHGFP_TYPE_CURRENT, path))) {
|
||||
std::string tmp(FS2OTTD(path));
|
||||
AppendPathSeparator(tmp);
|
||||
tmp += PERSONAL_DIR;
|
||||
@@ -530,8 +518,8 @@ void DetermineBasePaths(const char *exe)
|
||||
_searchpaths[SP_WORKING_DIR] = cwd_s;
|
||||
} else {
|
||||
/* Use the folder of the config file as working directory. */
|
||||
TCHAR config_dir[MAX_PATH];
|
||||
_tcsncpy(path, convert_to_fs(_config_file.c_str(), path, lengthof(path)), lengthof(path));
|
||||
wchar_t config_dir[MAX_PATH];
|
||||
wcsncpy(path, convert_to_fs(_config_file.c_str(), path, lengthof(path)), lengthof(path));
|
||||
if (!GetFullPathName(path, lengthof(config_dir), config_dir, nullptr)) {
|
||||
DEBUG(misc, 0, "GetFullPathName failed (%lu)\n", GetLastError());
|
||||
_searchpaths[SP_WORKING_DIR].clear();
|
||||
@@ -548,8 +536,8 @@ void DetermineBasePaths(const char *exe)
|
||||
DEBUG(misc, 0, "GetModuleFileName failed (%lu)\n", GetLastError());
|
||||
_searchpaths[SP_BINARY_DIR].clear();
|
||||
} else {
|
||||
TCHAR exec_dir[MAX_PATH];
|
||||
_tcsncpy(path, convert_to_fs(exe, path, lengthof(path)), lengthof(path));
|
||||
wchar_t exec_dir[MAX_PATH];
|
||||
wcsncpy(path, convert_to_fs(exe, path, lengthof(path)), lengthof(path));
|
||||
if (!GetFullPathName(path, lengthof(exec_dir), exec_dir, nullptr)) {
|
||||
DEBUG(misc, 0, "GetFullPathName failed (%lu)\n", GetLastError());
|
||||
_searchpaths[SP_BINARY_DIR].clear();
|
||||
@@ -582,17 +570,6 @@ bool GetClipboardContents(char *buffer, const char *last)
|
||||
CloseClipboard();
|
||||
|
||||
if (out_len == 0) return false;
|
||||
#if !defined(UNICODE)
|
||||
} else if (IsClipboardFormatAvailable(CF_TEXT)) {
|
||||
OpenClipboard(nullptr);
|
||||
cbuf = GetClipboardData(CF_TEXT);
|
||||
|
||||
ptr = (const char*)GlobalLock(cbuf);
|
||||
strecpy(buffer, FS2OTTD(ptr), last);
|
||||
|
||||
GlobalUnlock(cbuf);
|
||||
CloseClipboard();
|
||||
#endif /* UNICODE */
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
@@ -602,10 +579,7 @@ bool GetClipboardContents(char *buffer, const char *last)
|
||||
|
||||
|
||||
/**
|
||||
* Convert to OpenTTD's encoding from that of the local environment.
|
||||
* When the project is built in UNICODE, the system codepage is irrelevant and
|
||||
* the input string is wide. In ANSI mode, the string is in the
|
||||
* local codepage which we'll convert to wide-char, and then to UTF-8.
|
||||
* Convert to OpenTTD's encoding from wide characters.
|
||||
* OpenTTD internal encoding is UTF8.
|
||||
* The returned value's contents can only be guaranteed until the next call to
|
||||
* this function. So if the value is needed for anything else, use convert_from_fs
|
||||
@@ -614,17 +588,14 @@ bool GetClipboardContents(char *buffer, const char *last)
|
||||
* @see the current code-page comes from video\win32_v.cpp, event-notification
|
||||
* WM_INPUTLANGCHANGE
|
||||
*/
|
||||
const char *FS2OTTD(const TCHAR *name)
|
||||
const char *FS2OTTD(const wchar_t *name)
|
||||
{
|
||||
TLSData *data = GetTLSData();
|
||||
return convert_from_fs(name, data->utf8_buf, lengthof(data->utf8_buf));
|
||||
}
|
||||
|
||||
/**
|
||||
* Convert from OpenTTD's encoding to that of the local environment.
|
||||
* When the project is built in UNICODE the system codepage is irrelevant and
|
||||
* the converted string is wide. In ANSI mode, the UTF8 string is converted
|
||||
* to multi-byte.
|
||||
* Convert from OpenTTD's encoding to wide characters.
|
||||
* OpenTTD internal encoding is UTF8.
|
||||
* The returned value's contents can only be guaranteed until the next call to
|
||||
* this function. So if the value is needed for anything else, use convert_from_fs
|
||||
@@ -632,7 +603,7 @@ const char *FS2OTTD(const TCHAR *name)
|
||||
* @param console_cp convert to the console encoding instead of the normal system encoding.
|
||||
* @return pointer to the converted string; if failed string is of zero-length
|
||||
*/
|
||||
const TCHAR *OTTD2FS(const char *name, bool console_cp)
|
||||
const wchar_t *OTTD2FS(const char *name, bool console_cp)
|
||||
{
|
||||
TLSData *data = GetTLSData();
|
||||
return convert_to_fs(name, data->system_buf, lengthof(data->system_buf), console_cp);
|
||||
@@ -641,27 +612,15 @@ const TCHAR *OTTD2FS(const char *name, bool console_cp)
|
||||
|
||||
/**
|
||||
* Convert to OpenTTD's encoding from that of the environment in
|
||||
* UNICODE. OpenTTD encoding is UTF8, local is wide
|
||||
* UNICODE. OpenTTD encoding is UTF8, local is wide.
|
||||
* @param name pointer to a valid string that will be converted
|
||||
* @param utf8_buf pointer to a valid buffer that will receive the converted string
|
||||
* @param buflen length in characters of the receiving buffer
|
||||
* @return pointer to utf8_buf. If conversion fails the string is of zero-length
|
||||
*/
|
||||
char *convert_from_fs(const TCHAR *name, char *utf8_buf, size_t buflen)
|
||||
char *convert_from_fs(const wchar_t *name, char *utf8_buf, size_t buflen)
|
||||
{
|
||||
#if defined(UNICODE)
|
||||
const WCHAR *wide_buf = name;
|
||||
#else
|
||||
/* Convert string from the local codepage to UTF-16. */
|
||||
int wide_len = MultiByteToWideChar(CP_ACP, 0, name, -1, nullptr, 0);
|
||||
if (wide_len == 0) {
|
||||
utf8_buf[0] = '\0';
|
||||
return utf8_buf;
|
||||
}
|
||||
|
||||
WCHAR *wide_buf = AllocaM(WCHAR, wide_len);
|
||||
MultiByteToWideChar(CP_ACP, 0, name, -1, wide_buf, wide_len);
|
||||
#endif
|
||||
const wchar_t *wide_buf = name;
|
||||
|
||||
/* Convert UTF-16 string to UTF-8. */
|
||||
int len = WideCharToMultiByte(CP_UTF8, 0, wide_buf, -1, utf8_buf, (int)buflen, nullptr, nullptr);
|
||||
@@ -673,7 +632,7 @@ char *convert_from_fs(const TCHAR *name, char *utf8_buf, size_t buflen)
|
||||
|
||||
/**
|
||||
* Convert from OpenTTD's encoding to that of the environment in
|
||||
* UNICODE. OpenTTD encoding is UTF8, local is wide
|
||||
* UNICODE. OpenTTD encoding is UTF8, local is wide.
|
||||
* @param name pointer to a valid string that will be converted
|
||||
* @param system_buf pointer to a valid wide-char buffer that will receive the
|
||||
* converted string
|
||||
@@ -681,93 +640,14 @@ char *convert_from_fs(const TCHAR *name, char *utf8_buf, size_t buflen)
|
||||
* @param console_cp convert to the console encoding instead of the normal system encoding.
|
||||
* @return pointer to system_buf. If conversion fails the string is of zero-length
|
||||
*/
|
||||
TCHAR *convert_to_fs(const char *name, TCHAR *system_buf, size_t buflen, bool console_cp)
|
||||
wchar_t *convert_to_fs(const char *name, wchar_t *system_buf, size_t buflen, bool console_cp)
|
||||
{
|
||||
#if defined(UNICODE)
|
||||
int len = MultiByteToWideChar(CP_UTF8, 0, name, -1, system_buf, (int)buflen);
|
||||
if (len == 0) system_buf[0] = '\0';
|
||||
#else
|
||||
int len = MultiByteToWideChar(CP_UTF8, 0, name, -1, nullptr, 0);
|
||||
if (len == 0) {
|
||||
system_buf[0] = '\0';
|
||||
return system_buf;
|
||||
}
|
||||
|
||||
WCHAR *wide_buf = AllocaM(WCHAR, len);
|
||||
MultiByteToWideChar(CP_UTF8, 0, name, -1, wide_buf, len);
|
||||
|
||||
len = WideCharToMultiByte(console_cp ? CP_OEMCP : CP_ACP, 0, wide_buf, len, system_buf, (int)buflen, nullptr, nullptr);
|
||||
if (len == 0) system_buf[0] = '\0';
|
||||
#endif
|
||||
|
||||
return system_buf;
|
||||
}
|
||||
|
||||
/**
|
||||
* Our very own SHGetFolderPath function for support of windows operating
|
||||
* systems that don't have this function (eg Win9x, etc.). We try using the
|
||||
* native function, and if that doesn't exist we will try a more crude approach
|
||||
* of environment variables and hope for the best
|
||||
*/
|
||||
HRESULT OTTDSHGetFolderPath(HWND hwnd, int csidl, HANDLE hToken, DWORD dwFlags, LPTSTR pszPath)
|
||||
{
|
||||
static HRESULT (WINAPI *SHGetFolderPath)(HWND, int, HANDLE, DWORD, LPTSTR) = nullptr;
|
||||
static bool first_time = true;
|
||||
|
||||
/* We only try to load the library one time; if it fails, it fails */
|
||||
if (first_time) {
|
||||
#if defined(UNICODE)
|
||||
# define W(x) x "W"
|
||||
#else
|
||||
# define W(x) x "A"
|
||||
#endif
|
||||
/* The function lives in shell32.dll for all current Windows versions, but it first started to appear in SHFolder.dll. */
|
||||
if (!LoadLibraryList((Function*)&SHGetFolderPath, "shell32.dll\0" W("SHGetFolderPath") "\0\0")) {
|
||||
if (!LoadLibraryList((Function*)&SHGetFolderPath, "SHFolder.dll\0" W("SHGetFolderPath") "\0\0")) {
|
||||
DEBUG(misc, 0, "Unable to load " W("SHGetFolderPath") "from either shell32.dll or SHFolder.dll");
|
||||
}
|
||||
}
|
||||
#undef W
|
||||
first_time = false;
|
||||
}
|
||||
|
||||
if (SHGetFolderPath != nullptr) return SHGetFolderPath(hwnd, csidl, hToken, dwFlags, pszPath);
|
||||
|
||||
/* SHGetFolderPath doesn't exist, try a more conservative approach,
|
||||
* eg environment variables. This is only included for legacy modes
|
||||
* MSDN says: that 'pszPath' is a "Pointer to a null-terminated string of
|
||||
* length MAX_PATH which will receive the path" so let's assume that
|
||||
* Windows 95 with Internet Explorer 5.0, Windows 98 with Internet Explorer 5.0,
|
||||
* Windows 98 Second Edition (SE), Windows NT 4.0 with Internet Explorer 5.0,
|
||||
* Windows NT 4.0 with Service Pack 4 (SP4) */
|
||||
{
|
||||
DWORD ret;
|
||||
switch (csidl) {
|
||||
case CSIDL_FONTS: // Get the system font path, eg %WINDIR%\Fonts
|
||||
ret = GetEnvironmentVariable(_T("WINDIR"), pszPath, MAX_PATH);
|
||||
if (ret == 0) break;
|
||||
_tcsncat(pszPath, _T("\\Fonts"), MAX_PATH);
|
||||
|
||||
return (HRESULT)0;
|
||||
|
||||
case CSIDL_PERSONAL:
|
||||
case CSIDL_COMMON_DOCUMENTS: {
|
||||
HKEY key;
|
||||
if (RegOpenKeyEx(csidl == CSIDL_PERSONAL ? HKEY_CURRENT_USER : HKEY_LOCAL_MACHINE, REGSTR_PATH_SPECIAL_FOLDERS, 0, KEY_READ, &key) != ERROR_SUCCESS) break;
|
||||
DWORD len = MAX_PATH;
|
||||
ret = RegQueryValueEx(key, csidl == CSIDL_PERSONAL ? _T("Personal") : _T("Common Documents"), nullptr, nullptr, (LPBYTE)pszPath, &len);
|
||||
RegCloseKey(key);
|
||||
if (ret == ERROR_SUCCESS) return (HRESULT)0;
|
||||
break;
|
||||
}
|
||||
|
||||
/* XXX - other types to go here when needed... */
|
||||
}
|
||||
}
|
||||
|
||||
return E_INVALIDARG;
|
||||
}
|
||||
|
||||
/** Determine the current user's locale. */
|
||||
const char *GetCurrentLocale(const char *)
|
||||
{
|
||||
@@ -824,7 +704,7 @@ int OTTDStringCompare(const char *s1, const char *s2)
|
||||
#endif
|
||||
|
||||
if (first_time) {
|
||||
_CompareStringEx = (PFNCOMPARESTRINGEX)GetProcAddress(GetModuleHandle(_T("Kernel32")), "CompareStringEx");
|
||||
_CompareStringEx = (PFNCOMPARESTRINGEX)GetProcAddress(GetModuleHandle(L"Kernel32"), "CompareStringEx");
|
||||
first_time = false;
|
||||
}
|
||||
|
||||
@@ -845,7 +725,7 @@ int OTTDStringCompare(const char *s1, const char *s2)
|
||||
}
|
||||
}
|
||||
|
||||
TCHAR s1_buf[512], s2_buf[512];
|
||||
wchar_t s1_buf[512], s2_buf[512];
|
||||
convert_to_fs(s1, s1_buf, lengthof(s1_buf));
|
||||
convert_to_fs(s2, s2_buf, lengthof(s2_buf));
|
||||
|
||||
@@ -888,6 +768,38 @@ int GetCurrentThreadName(char *str, const char *last)
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Is the current Windows version Vista or later?
|
||||
* @return True if the current Windows is Vista or later.
|
||||
*/
|
||||
bool IsWindowsVistaOrGreater()
|
||||
{
|
||||
typedef BOOL (WINAPI * LPVERIFYVERSIONINFO)(LPOSVERSIONINFOEX, DWORD, DWORDLONG);
|
||||
typedef ULONGLONG (NTAPI * LPVERSETCONDITIONMASK)(ULONGLONG, DWORD, BYTE);
|
||||
#ifdef UNICODE
|
||||
static LPVERIFYVERSIONINFO _VerifyVersionInfo = (LPVERIFYVERSIONINFO)GetProcAddress(GetModuleHandle(_T("Kernel32")), "VerifyVersionInfoW");
|
||||
#else
|
||||
static LPVERIFYVERSIONINFO _VerifyVersionInfo = (LPVERIFYVERSIONINFO)GetProcAddress(GetModuleHandle(_T("Kernel32")), "VerifyVersionInfoA");
|
||||
#endif
|
||||
static LPVERSETCONDITIONMASK _VerSetConditionMask = (LPVERSETCONDITIONMASK)GetProcAddress(GetModuleHandle(_T("Kernel32")), "VerSetConditionMask");
|
||||
|
||||
if (_VerifyVersionInfo != nullptr && _VerSetConditionMask != nullptr) {
|
||||
OSVERSIONINFOEX osvi = { sizeof(osvi), 0, 0, 0, 0, {0}, 0, 0 };
|
||||
DWORDLONG dwlConditionMask = 0;
|
||||
dwlConditionMask = _VerSetConditionMask(dwlConditionMask, VER_MAJORVERSION, VER_GREATER_EQUAL);
|
||||
dwlConditionMask = _VerSetConditionMask(dwlConditionMask, VER_MINORVERSION, VER_GREATER_EQUAL);
|
||||
dwlConditionMask = _VerSetConditionMask(dwlConditionMask, VER_SERVICEPACKMAJOR, VER_GREATER_EQUAL);
|
||||
|
||||
osvi.dwMajorVersion = 6;
|
||||
osvi.dwMinorVersion = 0;
|
||||
osvi.wServicePackMajor = 0;
|
||||
|
||||
return _VerifyVersionInfo(&osvi, VER_MAJORVERSION | VER_MINORVERSION | VER_SERVICEPACKMAJOR, dwlConditionMask) != FALSE;
|
||||
} else {
|
||||
return LOBYTE(GetVersion()) >= 6;
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef _MSC_VER
|
||||
/* Based on code from MSDN: https://msdn.microsoft.com/en-us/library/xcb2z8hs.aspx */
|
||||
const DWORD MS_VC_EXCEPTION = 0x406D1388;
|
||||
|
||||
@@ -16,22 +16,8 @@ bool MyShowCursor(bool show, bool toggle = false);
|
||||
typedef void (*Function)(int);
|
||||
bool LoadLibraryList(Function proc[], const char *dll);
|
||||
|
||||
char *convert_from_fs(const TCHAR *name, char *utf8_buf, size_t buflen);
|
||||
TCHAR *convert_to_fs(const char *name, TCHAR *utf16_buf, size_t buflen, bool console_cp = false);
|
||||
|
||||
/* Function shortcuts for UTF-8 <> UNICODE conversion. When unicode is not
|
||||
* defined these macros return the string passed to them, with UNICODE
|
||||
* they return a pointer to the converted string. These functions use an
|
||||
* internal buffer of max 512 characters. */
|
||||
#if defined(UNICODE)
|
||||
# define MB_TO_WIDE(str) OTTD2FS(str)
|
||||
# define WIDE_TO_MB(str) FS2OTTD(str)
|
||||
#else
|
||||
# define MB_TO_WIDE(str) (str)
|
||||
# define WIDE_TO_MB(str) (str)
|
||||
#endif
|
||||
|
||||
HRESULT OTTDSHGetFolderPath(HWND, int, HANDLE, DWORD, LPTSTR);
|
||||
char *convert_from_fs(const wchar_t *name, char *utf8_buf, size_t buflen);
|
||||
wchar_t *convert_to_fs(const char *name, wchar_t *utf16_buf, size_t buflen, bool console_cp = false);
|
||||
|
||||
#if defined(__MINGW32__) && !defined(__MINGW64__) && !(_WIN32_IE >= 0x0500)
|
||||
#define SHGFP_TYPE_CURRENT 0
|
||||
@@ -39,5 +25,6 @@ HRESULT OTTDSHGetFolderPath(HWND, int, HANDLE, DWORD, LPTSTR);
|
||||
|
||||
void Win32SetCurrentLocaleName(const char *iso_code);
|
||||
int OTTDStringCompare(const char *s1, const char *s2);
|
||||
bool IsWindowsVistaOrGreater();
|
||||
|
||||
#endif /* WIN32_H */
|
||||
|
||||
@@ -18,6 +18,7 @@
|
||||
#include "../tunnelbridge_map.h"
|
||||
#include "../depot_map.h"
|
||||
#include "../infrastructure_func.h"
|
||||
#include "pathfinder_func.h"
|
||||
#include "pf_performance_timer.hpp"
|
||||
|
||||
/**
|
||||
@@ -242,26 +243,10 @@ protected:
|
||||
CPerfStart perf(m_pPerf);
|
||||
if (IsRailTT() && IsPlainRailTile(m_new_tile)) {
|
||||
m_new_td_bits = (TrackdirBits)(GetTrackBits(m_new_tile) * 0x101);
|
||||
} else if (IsRoadTT()) {
|
||||
m_new_td_bits = GetTrackdirBitsForRoad(m_new_tile, this->IsTram() ? RTT_TRAM : RTT_ROAD);
|
||||
} else {
|
||||
m_new_td_bits = TrackStatusToTrackdirBits(GetTileTrackStatus(m_new_tile, TT(), IsRoadTT() ? (this->IsTram() ? RTT_TRAM : RTT_ROAD) : 0));
|
||||
|
||||
if (IsTram() && m_new_td_bits == TRACKDIR_BIT_NONE) {
|
||||
/* GetTileTrackStatus() returns 0 for single tram bits.
|
||||
* As we cannot change it there (easily) without breaking something, change it here */
|
||||
switch (GetSingleTramBit(m_new_tile)) {
|
||||
case DIAGDIR_NE:
|
||||
case DIAGDIR_SW:
|
||||
m_new_td_bits = TRACKDIR_BIT_X_NE | TRACKDIR_BIT_X_SW;
|
||||
break;
|
||||
|
||||
case DIAGDIR_NW:
|
||||
case DIAGDIR_SE:
|
||||
m_new_td_bits = TRACKDIR_BIT_Y_NW | TRACKDIR_BIT_Y_SE;
|
||||
break;
|
||||
|
||||
default: break;
|
||||
}
|
||||
}
|
||||
m_new_td_bits = TrackStatusToTrackdirBits(GetTileTrackStatus(m_new_tile, TT(), 0));
|
||||
}
|
||||
return (m_new_td_bits != TRACKDIR_BIT_NONE);
|
||||
}
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user