mirror of https://github.com/OpenRCT2/OpenRCT2.git
Merge branch 'develop'
This commit is contained in:
commit
b919f54dc6
113
.clang-format
113
.clang-format
|
@ -1,26 +1,97 @@
|
|||
---
|
||||
BasedOnStyle: LLVM
|
||||
AccessModifierOffset: '-4'
|
||||
---
|
||||
Language: Cpp
|
||||
# BasedOnStyle: WebKit
|
||||
AccessModifierOffset: -4
|
||||
AlignAfterOpenBracket: AlwaysBreak
|
||||
AlignConsecutiveAssignments: 'true'
|
||||
AlignConsecutiveDeclarations: 'true'
|
||||
AllowShortFunctionsOnASingleLine: Empty
|
||||
BinPackParameters: 'false'
|
||||
BreakBeforeBraces: Allman
|
||||
ColumnLimit: '128'
|
||||
Cpp11BracedListStyle: 'false'
|
||||
AlignConsecutiveAssignments: false
|
||||
AlignConsecutiveDeclarations: false
|
||||
AlignEscapedNewlines: Right
|
||||
AlignOperands: false
|
||||
AlignTrailingComments: true
|
||||
AllowAllParametersOfDeclarationOnNextLine: true
|
||||
AllowShortBlocksOnASingleLine: false
|
||||
AllowShortCaseLabelsOnASingleLine: true
|
||||
AllowShortFunctionsOnASingleLine: None
|
||||
AllowShortIfStatementsOnASingleLine: false
|
||||
AllowShortLoopsOnASingleLine: false
|
||||
AlwaysBreakAfterDefinitionReturnType: None
|
||||
AlwaysBreakAfterReturnType: None
|
||||
AlwaysBreakBeforeMultilineStrings: false
|
||||
AlwaysBreakTemplateDeclarations: false
|
||||
BinPackArguments: false
|
||||
BinPackParameters: false
|
||||
BraceWrapping:
|
||||
AfterClass: true
|
||||
AfterControlStatement: true
|
||||
AfterEnum: true
|
||||
AfterFunction: true
|
||||
AfterNamespace: true
|
||||
AfterStruct: true
|
||||
AfterUnion: true
|
||||
BeforeCatch: true
|
||||
BeforeElse: true
|
||||
IndentBraces: false
|
||||
SplitEmptyFunction: true
|
||||
SplitEmptyRecord: true
|
||||
SplitEmptyNamespace: true
|
||||
BreakBeforeBinaryOperators: All
|
||||
BreakBeforeBraces: Custom
|
||||
BreakBeforeInheritanceComma: false
|
||||
BreakBeforeTernaryOperators: true
|
||||
BreakConstructorInitializersBeforeComma: false
|
||||
BreakConstructorInitializers: BeforeComma
|
||||
BreakStringLiterals: true
|
||||
ColumnLimit: 128
|
||||
CompactNamespaces: false
|
||||
ConstructorInitializerAllOnOneLineOrOnePerLine: false
|
||||
ConstructorInitializerIndentWidth: 4
|
||||
ContinuationIndentWidth: 4
|
||||
Cpp11BracedListStyle: false
|
||||
DerivePointerAlignment: false
|
||||
DisableFormat: false
|
||||
ExperimentalAutoDetectBinPacking: false
|
||||
FixNamespaceComments: true
|
||||
ForEachMacros:
|
||||
- FOR_ALL_PEEPS
|
||||
- FOR_ALL_GUESTS
|
||||
- FOR_ALL_STAFF
|
||||
- FOR_ALL_RIDES
|
||||
IncludeBlocks: 'Regroup'
|
||||
IncludeCategories:
|
||||
- Regex: '^"(\.{1,2}/)*common\.h"$'
|
||||
Priority: -1
|
||||
- Regex: '^<.*>$'
|
||||
- Regex: '^"'
|
||||
Priority: 1
|
||||
- Regex: '^".*"$'
|
||||
- Regex: '^<'
|
||||
Priority: 2
|
||||
IncludeIsMainRegex: 'false'
|
||||
IndentWidth: '4'
|
||||
PointerAlignment: Middle
|
||||
SortIncludes: 'true'
|
||||
Standard: Cpp11
|
||||
TabWidth: '4'
|
||||
|
||||
IndentCaseLabels: true
|
||||
IndentWidth: 4
|
||||
IndentWrappedFunctionNames: true
|
||||
KeepEmptyLinesAtTheStartOfBlocks: false
|
||||
MacroBlockBegin: ''
|
||||
MacroBlockEnd: ''
|
||||
MaxEmptyLinesToKeep: 1
|
||||
NamespaceIndentation: None
|
||||
PenaltyBreakAssignment: 2
|
||||
PenaltyBreakBeforeFirstCallParameter: 19
|
||||
PenaltyBreakComment: 300
|
||||
PenaltyBreakFirstLessLess: 120
|
||||
PenaltyBreakString: 1000
|
||||
PenaltyExcessCharacter: 1000000
|
||||
PenaltyReturnTypeOnItsOwnLine: 60
|
||||
PointerAlignment: Left
|
||||
ReflowComments: true
|
||||
SortIncludes: true
|
||||
SortUsingDeclarations: true
|
||||
SpaceAfterCStyleCast: false
|
||||
SpaceAfterTemplateKeyword: false
|
||||
SpaceBeforeAssignmentOperators: true
|
||||
SpaceBeforeParens: ControlStatements
|
||||
SpaceInEmptyParentheses: false
|
||||
SpacesBeforeTrailingComments: 1
|
||||
SpacesInAngles: false
|
||||
SpacesInContainerLiterals: true
|
||||
SpacesInCStyleCastParentheses: false
|
||||
SpacesInParentheses: false
|
||||
SpacesInSquareBrackets: false
|
||||
Standard: Cpp11
|
||||
UseTab: Never
|
||||
...
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
comment: off
|
|
@ -0,0 +1,11 @@
|
|||
root = true
|
||||
|
||||
[*]
|
||||
indent_style = space
|
||||
indent_size = 4
|
||||
charset = utf-8
|
||||
insert_final_newline = true
|
||||
trim_trailing_whitespace = true
|
||||
|
||||
[*.txt]
|
||||
trim_trailing_whitespace = false
|
|
@ -11,16 +11,20 @@ distribution/android/*/external/
|
|||
|
||||
# Build artifacts
|
||||
artifacts
|
||||
bin.*/
|
||||
.cache
|
||||
.dependencies
|
||||
sequencesversion
|
||||
objectsversion
|
||||
|
||||
#lib
|
||||
lib
|
||||
libversion
|
||||
|
||||
#sequences
|
||||
# Downloaded or built data files
|
||||
data/g2.dat
|
||||
data/title
|
||||
sequencesversion
|
||||
data/object
|
||||
|
||||
#################
|
||||
## Eclipse
|
||||
|
@ -277,7 +281,6 @@ pip-log.txt
|
|||
openrct2.id*
|
||||
openrct2.nam
|
||||
openrct2.til
|
||||
data/g2.dat
|
||||
|
||||
#################
|
||||
## Linux
|
||||
|
|
23
.travis.yml
23
.travis.yml
|
@ -14,7 +14,7 @@ sudo: required
|
|||
dist: trusty
|
||||
env:
|
||||
global:
|
||||
- OPENRCT2_VERSION="0.1.2"
|
||||
- OPENRCT2_VERSION="0.1.3"
|
||||
|
||||
matrix:
|
||||
include:
|
||||
|
@ -23,7 +23,7 @@ matrix:
|
|||
services:
|
||||
- docker
|
||||
env:
|
||||
- OPENRCT2_CMAKE_OPTS="-G Ninja -DCMAKE_BUILD_TYPE=RelWithDebInfo -DBUILD_SHARED_LIBS=ON -DCMAKE_INSTALL_PREFIX=OpenRCT2 -DPORTABLE=ON -DDISABLE_RCT2_TESTS=on -DCMAKE_CXX_FLAGS=-Wl,--compress-debug-sections=zlib" TARGET=ubuntu_amd64
|
||||
- OPENRCT2_CMAKE_OPTS="-G Ninja -DCMAKE_BUILD_TYPE=RelWithDebInfo -DBUILD_SHARED_LIBS=ON -DCMAKE_INSTALL_PREFIX=OpenRCT2 -DPORTABLE=ON -DCMAKE_CXX_FLAGS=\"-gz\"" TARGET=ubuntu_amd64
|
||||
- secure: "S3u2VCE2Vy8KNXoeh+DhnzjCmgTX0r95uEZrXDU+IKANOOCKn7Dg4OFDZE3LY/i1y2/EUDpnR5yLC38Ks795EUP/sv/OoMl4tjQ20yERjqWh+gcIRrgx7SdVabuAh3t4aBdaLD4Pfnj5avxeCt6rL7yGnj0wdbrbJSBZPsgSnuQ="
|
||||
after_success:
|
||||
# Android jobs are triggered from cron and overwrite `after_sucess` part
|
||||
|
@ -47,8 +47,9 @@ matrix:
|
|||
services:
|
||||
- docker
|
||||
env:
|
||||
- OPENRCT2_CMAKE_OPTS="-G Ninja -DFORCE32=ON -DBUILD_SHARED_LIBS=off -DCMAKE_INSTALL_PREFIX=OpenRCT2 -DDISABLE_RCT2_TESTS=on -DCMAKE_CXX_FLAGS=-Wl,--compress-debug-sections=zlib" TARGET=ubuntu_i686
|
||||
- OPENRCT2_CMAKE_OPTS="-G Ninja -DFORCE32=ON -DBUILD_SHARED_LIBS=off -DCMAKE_INSTALL_PREFIX=OpenRCT2 -DCMAKE_BUILD_TYPE=debug -DCMAKE_CXX_FLAGS=\"-coverage -m32 -gz\"" TARGET=ubuntu_i686
|
||||
- secure: "S3u2VCE2Vy8KNXoeh+DhnzjCmgTX0r95uEZrXDU+IKANOOCKn7Dg4OFDZE3LY/i1y2/EUDpnR5yLC38Ks795EUP/sv/OoMl4tjQ20yERjqWh+gcIRrgx7SdVabuAh3t4aBdaLD4Pfnj5avxeCt6rL7yGnj0wdbrbJSBZPsgSnuQ="
|
||||
- secure: "JGMzQHmDgpnVzP2uYP5KL7h6SzzGmL4kH7vJmGQRpudKAEzhzB0n7lzjrJOU82hxwmuQQ+RKlE/uxdI32Xbgl+wzZMdfQoZGMWHZfl8Le0Ft5gfZncPuE3poCbiSyPSXok9zU12JHKpEjV/sgqXv/HwhL3jAC68GPGpmxb6xWj8="
|
||||
after_success:
|
||||
# Android jobs are triggered from cron and overwrite `after_sucess` part
|
||||
- if [[ "$TRAVIS_EVENT_TYPE" == "cron" ]] ; then exit 0 ; fi
|
||||
|
@ -68,28 +69,30 @@ matrix:
|
|||
fi
|
||||
- os: linux
|
||||
if: type != cron
|
||||
env: OPENRCT2_CMAKE_OPTS="-G Ninja -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DBUILD_SHARED_LIBS=ON -DDISABLE_RCT2_TESTS=on" TARGET=ubuntu_amd64
|
||||
env: OPENRCT2_CMAKE_OPTS="-G Ninja -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DBUILD_SHARED_LIBS=ON -DCMAKE_INSTALL_PREFIX=OpenRCT2" TARGET=ubuntu_amd64
|
||||
- os: linux
|
||||
if: type != cron
|
||||
env: OPENRCT2_CMAKE_OPTS="-G Ninja -DCMAKE_TOOLCHAIN_FILE=../CMakeLists_mingw.txt -DFORCE32=on -DBUILD_SHARED_LIBS=ON -DDISABLE_RCT2_TESTS=on" TARGET=windows
|
||||
env: OPENRCT2_CMAKE_OPTS="-G Ninja -DCMAKE_TOOLCHAIN_FILE=../CMakeLists_mingw.txt -DFORCE32=on -DBUILD_SHARED_LIBS=ON" TARGET=windows
|
||||
- os: linux
|
||||
if: type != cron
|
||||
env: TARGET=docker64 OPENRCT2_CMAKE_OPTS="-G Ninja -DDISABLE_TTF=ON -DCMAKE_BUILD_TYPE=release -DBUILD_SHARED_LIBS=ON -DDISABLE_RCT2_TESTS=on"
|
||||
env: TARGET=docker64 OPENRCT2_CMAKE_OPTS="-G Ninja -DDISABLE_TTF=ON -DCMAKE_BUILD_TYPE=release -DBUILD_SHARED_LIBS=ON -DCMAKE_INSTALL_PREFIX=OpenRCT2"
|
||||
services:
|
||||
- docker
|
||||
- os: linux
|
||||
if: type != cron
|
||||
env: OPENRCT2_CMAKE_OPTS="-G Ninja -DDISABLE_NETWORK=ON -DDISABLE_HTTP_TWITCH=ON -DBUILD_SHARED_LIBS=ON -DDISABLE_RCT2_TESTS=on" TARGET=docker64
|
||||
env:
|
||||
- OPENRCT2_CMAKE_OPTS="-G Ninja -DDISABLE_NETWORK=ON -DDISABLE_HTTP_TWITCH=ON -DBUILD_SHARED_LIBS=ON -DCMAKE_BUILD_TYPE=debug -DCMAKE_CXX_FLAGS=\"-coverage\" -DCMAKE_INSTALL_PREFIX=OpenRCT2" TARGET=docker64
|
||||
- secure: "JGMzQHmDgpnVzP2uYP5KL7h6SzzGmL4kH7vJmGQRpudKAEzhzB0n7lzjrJOU82hxwmuQQ+RKlE/uxdI32Xbgl+wzZMdfQoZGMWHZfl8Le0Ft5gfZncPuE3poCbiSyPSXok9zU12JHKpEjV/sgqXv/HwhL3jAC68GPGpmxb6xWj8="
|
||||
services:
|
||||
- docker
|
||||
- os: linux
|
||||
if: type != cron
|
||||
env: OPENRCT2_CMAKE_OPTS="-G Ninja -DDISABLE_OPENGL=ON -DBUILD_SHARED_LIBS=ON -DDISABLE_RCT2_TESTS=on" TARGET=docker64
|
||||
env: OPENRCT2_CMAKE_OPTS="-G Ninja -DDISABLE_OPENGL=ON -DBUILD_SHARED_LIBS=ON -DCMAKE_INSTALL_PREFIX=OpenRCT2" TARGET=docker64
|
||||
services:
|
||||
- docker
|
||||
- os: osx
|
||||
if: type != cron
|
||||
osx_image: xcode8.3
|
||||
osx_image: xcode9.3
|
||||
env:
|
||||
- secure: "OXn/i72FxW/oh6RGlaN+gHSbkt1ToFe36etaiDOsJQznt6fe9CpFdnE8U1XBHlGokcEjbGNErRU7CFDKYHQuGrPZyHXwgqG2/0emIqFaFt5ti5ypyYKf5qH9x1LLLfdZxDyHkxXdlJ7Etxbp3G7qrV8CGRQiYRNHm1f98AmuufE="
|
||||
after_success:
|
||||
|
@ -108,7 +111,6 @@ matrix:
|
|||
- os: linux
|
||||
if: type = cron OR branch = master OR branch =~ ^android
|
||||
language: android
|
||||
dist: precise
|
||||
before_install: []
|
||||
env:
|
||||
- secure: "S3u2VCE2Vy8KNXoeh+DhnzjCmgTX0r95uEZrXDU+IKANOOCKn7Dg4OFDZE3LY/i1y2/EUDpnR5yLC38Ks795EUP/sv/OoMl4tjQ20yERjqWh+gcIRrgx7SdVabuAh3t4aBdaLD4Pfnj5avxeCt6rL7yGnj0wdbrbJSBZPsgSnuQ="
|
||||
|
@ -191,4 +193,5 @@ notifications:
|
|||
cache:
|
||||
directories:
|
||||
- .cache
|
||||
- $HOME/.ccache
|
||||
apt: true
|
||||
|
|
|
@ -0,0 +1,21 @@
|
|||
{
|
||||
"configurations": [
|
||||
{
|
||||
"name": "x64-Debug",
|
||||
"inheritEnvironments": [ "msvc_x64_x64" ],
|
||||
"generator": "Ninja",
|
||||
"buildRoot": "${env.LOCALAPPDATA}\\CMakeBuild\\${workspaceHash}\\build\\${name}",
|
||||
"configurationType": "Debug",
|
||||
"variables": [
|
||||
{
|
||||
"name": "VCPKG_TARGET_TRIPLET",
|
||||
"value": "x64-windows-winssl"
|
||||
},
|
||||
{
|
||||
"name": "CMAKE_TOOLCHAIN_FILE",
|
||||
"value": "C:\\vcpkg\\scripts\\buildsystems\\vcpkg.cmake"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,92 @@
|
|||
{
|
||||
"configurations": [
|
||||
{
|
||||
"name": "Mac",
|
||||
"includePath": [
|
||||
"/usr/include",
|
||||
"/usr/local/include",
|
||||
"${workspaceRoot}",
|
||||
"${workspaceRoot}/src"
|
||||
],
|
||||
"defines": [],
|
||||
"intelliSenseMode": "clang-x64",
|
||||
"browse": {
|
||||
"path": [
|
||||
"/usr/include",
|
||||
"/usr/local/include",
|
||||
"${workspaceRoot}"
|
||||
],
|
||||
"limitSymbolsToIncludedHeaders": true,
|
||||
"databaseFilename": ""
|
||||
},
|
||||
"macFrameworkPath": [
|
||||
"/System/Library/Frameworks",
|
||||
"/Library/Frameworks"
|
||||
],
|
||||
"cStandard": "c11",
|
||||
"cppStandard": "c++17"
|
||||
},
|
||||
{
|
||||
"name": "Linux",
|
||||
"includePath": [
|
||||
"/usr/include",
|
||||
"/usr/local/include",
|
||||
"${workspaceRoot}",
|
||||
"${workspaceRoot}/src"
|
||||
],
|
||||
"defines": [],
|
||||
"intelliSenseMode": "clang-x64",
|
||||
"browse": {
|
||||
"path": [
|
||||
"/usr/include",
|
||||
"/usr/local/include",
|
||||
"${workspaceRoot}",
|
||||
"${workspaceRoot}/src"
|
||||
],
|
||||
"limitSymbolsToIncludedHeaders": true,
|
||||
"databaseFilename": ""
|
||||
},
|
||||
"compilerPath": "/usr/bin/clang",
|
||||
"cStandard": "c11",
|
||||
"cppStandard": "c++17"
|
||||
},
|
||||
{
|
||||
"name": "Win32",
|
||||
"includePath": [
|
||||
"C:/Program Files (x86)/Microsoft Visual Studio/2017/Enterprise/VC/Tools/MSVC/14.13.26128/include/*",
|
||||
"C:/Program Files (x86)/Microsoft Visual Studio/2017/Enterprise/VC/Tools/MSVC/14.13.26128/atlmfc/include/*",
|
||||
"C:/Program Files (x86)/Windows Kits/10/Include/10.0.16299.0/um",
|
||||
"C:/Program Files (x86)/Windows Kits/10/Include/10.0.16299.0/ucrt",
|
||||
"C:/Program Files (x86)/Windows Kits/10/Include/10.0.16299.0/shared",
|
||||
"C:/Program Files (x86)/Windows Kits/10/Include/10.0.16299.0/winrt",
|
||||
"${workspaceRoot}",
|
||||
"${workspaceRoot}/src",
|
||||
"${workspaceRoot}/lib/x86/include",
|
||||
"${workspaceRoot}/lib/x64/include",
|
||||
"${workspaceRoot}/lib/googletest/googletest/include"
|
||||
],
|
||||
"defines": [
|
||||
"_DEBUG",
|
||||
"UNICODE",
|
||||
"_UNICODE"
|
||||
],
|
||||
"intelliSenseMode": "msvc-x64",
|
||||
"browse": {
|
||||
"path": [
|
||||
"C:/Program Files (x86)/Microsoft Visual Studio/2017/Enterprise/VC/Tools/MSVC/14.13.26128/include/*",
|
||||
"C:/Program Files (x86)/Microsoft Visual Studio/2017/Enterprise/VC/Tools/MSVC/14.13.26128/atlmfc/include/*",
|
||||
"C:/Program Files (x86)/Windows Kits/10/Include/10.0.16299.0/um",
|
||||
"C:/Program Files (x86)/Windows Kits/10/Include/10.0.16299.0/ucrt",
|
||||
"C:/Program Files (x86)/Windows Kits/10/Include/10.0.16299.0/shared",
|
||||
"C:/Program Files (x86)/Windows Kits/10/Include/10.0.16299.0/winrt",
|
||||
"${workspaceRoot}"
|
||||
],
|
||||
"limitSymbolsToIncludedHeaders": true,
|
||||
"databaseFilename": ""
|
||||
},
|
||||
"cStandard": "c11",
|
||||
"cppStandard": "c++17"
|
||||
}
|
||||
],
|
||||
"version": 4
|
||||
}
|
|
@ -1,19 +1,22 @@
|
|||
{
|
||||
"version": "0.2.0",
|
||||
"configurations": [
|
||||
|
||||
{
|
||||
"name": "C++ Launch",
|
||||
"type": "cppdbg",
|
||||
"request": "launch",
|
||||
"program": "${workspaceRoot}/bin/openrct2",
|
||||
"program": "${workspaceFolder}/bin/openrct2",
|
||||
"args": [],
|
||||
"stopAtEntry": false,
|
||||
"cwd": "${workspaceRoot}/bin",
|
||||
"cwd": "${workspaceFolder}/bin",
|
||||
"environment": [],
|
||||
"externalConsole": true,
|
||||
"setupCommands": [
|
||||
{
|
||||
"text": "-enable-pretty-printing"
|
||||
"description": "Enable pretty-printing for gdb",
|
||||
"text": "-enable-pretty-printing",
|
||||
"ignoreFailures": true
|
||||
}
|
||||
],
|
||||
"linux": {
|
||||
|
@ -30,7 +33,7 @@
|
|||
"name": "C++ Attach",
|
||||
"type": "cppdbg",
|
||||
"request": "attach",
|
||||
"program": "${workspaceRoot}/bin/openrct2",
|
||||
"program": "${workspaceFolder}/bin/openrct2",
|
||||
"processId": "${command:pickProcess}",
|
||||
"setupCommands": [
|
||||
{
|
||||
|
|
122
CMakeLists.txt
122
CMakeLists.txt
|
@ -6,7 +6,9 @@ endif()
|
|||
|
||||
project(openrct2 CXX)
|
||||
|
||||
include(FindPkgConfig)
|
||||
if (NOT MSVC)
|
||||
include(FindPkgConfig)
|
||||
endif ()
|
||||
include(CheckCXXCompilerFlag)
|
||||
include(GNUInstallDirs)
|
||||
|
||||
|
@ -16,10 +18,14 @@ set(CMAKE_MACOSX_RPATH 1)
|
|||
set(TITLE_SEQUENCE_URL "https://github.com/OpenRCT2/title-sequences/releases/download/v0.1.2/title-sequence-v0.1.2.zip")
|
||||
set(TITLE_SEQUENCE_SHA1 "1136ef92bfb05cd1cba9831ba6dc4a653d87a246")
|
||||
|
||||
set(OBJECTS_URL "https://github.com/OpenRCT2/objects/releases/download/v1.0.2/objects.zip")
|
||||
set(OBJECTS_SHA1 "acf853ff6fa4285cea94cc9d8f74730e57202d06")
|
||||
|
||||
option(FORCE32 "Force 32-bit build. It will add `-m32` to compiler flags.")
|
||||
option(WITH_TESTS "Build tests")
|
||||
option(PORTABLE "Create a portable build (-rpath=$ORIGIN)" OFF)
|
||||
option(DOWNLOAD_TITLE_SEQUENCES "Download title sequences during installation." ON)
|
||||
option(DOWNLOAD_OBJECTS "Download objects during installation." ON)
|
||||
|
||||
# Options
|
||||
option(STATIC "Create a static build.")
|
||||
|
@ -68,52 +74,65 @@ function (ADD_CHECK_CXX_COMPILER_FLAG _CXXFLAGS _CACHE_VAR _FLAG)
|
|||
endif ()
|
||||
endfunction ()
|
||||
|
||||
ADD_CHECK_CXX_COMPILER_FLAG(CMAKE_CXX_FLAGS CXX_WARN_NULL_DEREFERENCE -Wnull-dereference)
|
||||
ADD_CHECK_CXX_COMPILER_FLAG(CMAKE_CXX_FLAGS CXX_WARN_SUGGEST_FINAL_TYPES -Wsuggest-final-types)
|
||||
ADD_CHECK_CXX_COMPILER_FLAG(CMAKE_CXX_FLAGS CXX_WARN_SUGGEST_FINAL_METHODS -Wsuggest-final-methods)
|
||||
ADD_CHECK_CXX_COMPILER_FLAG(CMAKE_CXX_FLAGS CXX_WARN_SUGGEST_OVERRIDE -Wsuggest-override)
|
||||
ADD_CHECK_CXX_COMPILER_FLAG(CMAKE_CXX_FLAGS CXX_WARN_DUPLICATED_COND -Wduplicated-cond)
|
||||
ADD_CHECK_CXX_COMPILER_FLAG(CMAKE_CXX_FLAGS CXX_WARN_NON_VIRTUAL_DTOR -Wnon-virtual-dtor)
|
||||
ADD_CHECK_CXX_COMPILER_FLAG(CMAKE_CXX_FLAGS CXX_WARN_MISSING_VARIABLE_DECLARATIONS -Wmissing-variable-declarations)
|
||||
ADD_CHECK_CXX_COMPILER_FLAG(CMAKE_CXX_FLAGS CXX_WARN_DUPLICATED_BRANCHES -Wduplicated-branches)
|
||||
ADD_CHECK_CXX_COMPILER_FLAG(CMAKE_CXX_FLAGS CXX_WARN_RESTRICT -Wrestrict)
|
||||
if (MSVC)
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /utf-8 /std:c++latest /permissive- /Zc:externConstexpr /WX")
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /wd4244") # C4244: 'conversion_type': conversion from 'type1' to 'type2', possible loss of data
|
||||
|
||||
if (MINGW)
|
||||
ADD_CHECK_CXX_COMPILER_FLAG(CMAKE_CXX_FLAGS CXX_WARN_SUGGEST_OVERRIDE -Wno-error=redundant-decls)
|
||||
endif ()
|
||||
|
||||
# Items below are not supported by ICC
|
||||
ADD_CHECK_CXX_COMPILER_FLAG(CMAKE_CXX_FLAGS CXX_WARN_REDUNDANT_DECLS -Wredundant-decls)
|
||||
ADD_CHECK_CXX_COMPILER_FLAG(CMAKE_CXX_FLAGS CXX_WARN_IGNORED_QUALIFIERS -Wignored-qualifiers)
|
||||
|
||||
# -Wstrict-overflow is only active when -fstrict-overflow is enabled, but -fstrict-overflow
|
||||
# is enabled on -O2, -O3, -Os. This should help catch bugs locally before they reach Travis
|
||||
# As of 2a435bf -Wstrict-overflow=1 passes, but higher values do not.
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fstrict-overflow")
|
||||
ADD_CHECK_CXX_COMPILER_FLAG(CMAKE_CXX_FLAGS CXX_WARN_STRICT_OVERFLOW -Wstrict-overflow=1)
|
||||
|
||||
# Compiler flags
|
||||
set(DEBUG_LEVEL 0 CACHE STRING "Select debug level for compilation. Use value in range 0–3.")
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fstrict-aliasing -Werror -Wundef -Wmissing-declarations -Winit-self -Wall -Wno-unknown-pragmas -Wno-unused-function -Wno-missing-braces ")
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-comment -Wshadow -Wnonnull")
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DDEBUG=${DEBUG_LEVEL}")
|
||||
|
||||
if(APPLE)
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-error=objc-method-access")
|
||||
endif()
|
||||
|
||||
# On mingw all code is already PIC, this will avoid compiler error on redefining this option
|
||||
if (NOT MINGW)
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC")
|
||||
endif ()
|
||||
|
||||
if (APPLE AND NOT USE_MMAP)
|
||||
set(PIE_FLAG "-fno-pie")
|
||||
add_definitions(-D_CRT_SECURE_NO_WARNINGS)
|
||||
add_definitions(-D_SCL_SECURE_NO_WARNINGS)
|
||||
add_definitions(-D__SSE4_1__)
|
||||
add_definitions(-D__AVX2__)
|
||||
else ()
|
||||
set(PIE_FLAG "-fpie")
|
||||
endif ()
|
||||
ADD_CHECK_CXX_COMPILER_FLAG(CMAKE_CXX_FLAGS CXX_WARN_NULL_DEREFERENCE -Wnull-dereference)
|
||||
ADD_CHECK_CXX_COMPILER_FLAG(CMAKE_CXX_FLAGS CXX_WARN_SUGGEST_FINAL_TYPES -Wsuggest-final-types)
|
||||
ADD_CHECK_CXX_COMPILER_FLAG(CMAKE_CXX_FLAGS CXX_WARN_SUGGEST_FINAL_METHODS -Wsuggest-final-methods)
|
||||
ADD_CHECK_CXX_COMPILER_FLAG(CMAKE_CXX_FLAGS CXX_WARN_SUGGEST_OVERRIDE -Wsuggest-override)
|
||||
ADD_CHECK_CXX_COMPILER_FLAG(CMAKE_CXX_FLAGS CXX_WARN_DUPLICATED_COND -Wduplicated-cond)
|
||||
ADD_CHECK_CXX_COMPILER_FLAG(CMAKE_CXX_FLAGS CXX_WARN_NON_VIRTUAL_DTOR -Wnon-virtual-dtor)
|
||||
ADD_CHECK_CXX_COMPILER_FLAG(CMAKE_CXX_FLAGS CXX_WARN_MISSING_VARIABLE_DECLARATIONS -Wmissing-variable-declarations)
|
||||
ADD_CHECK_CXX_COMPILER_FLAG(CMAKE_CXX_FLAGS CXX_WARN_DUPLICATED_BRANCHES -Wduplicated-branches)
|
||||
ADD_CHECK_CXX_COMPILER_FLAG(CMAKE_CXX_FLAGS CXX_WARN_RESTRICT -Wrestrict)
|
||||
ADD_CHECK_CXX_COMPILER_FLAG(CMAKE_CXX_FLAGS CXX_WARN_MISSING_FIELD_INITIALIZERS -Wmissing-field-initializers)
|
||||
ADD_CHECK_CXX_COMPILER_FLAG(CMAKE_CXX_FLAGS CXX_WARN_UNREACHABLE_CODE_BREAK -Wunreachable-code-break)
|
||||
ADD_CHECK_CXX_COMPILER_FLAG(CMAKE_CXX_FLAGS CXX_WARN_LOGICAL_OP -Wlogical-op)
|
||||
ADD_CHECK_CXX_COMPILER_FLAG(CMAKE_CXX_FLAGS CXX_WARN_RANGE_LOOP_ANALYSIS -Wrange-loop-analysis)
|
||||
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++14")
|
||||
# Items below are not supported by ICC
|
||||
if (NOT MINGW)
|
||||
# Do not enable for MinGW, as its headers contain redundant declarations of builtin functions
|
||||
ADD_CHECK_CXX_COMPILER_FLAG(CMAKE_CXX_FLAGS CXX_WARN_REDUNDANT_DECLS -Wredundant-decls)
|
||||
endif ()
|
||||
ADD_CHECK_CXX_COMPILER_FLAG(CMAKE_CXX_FLAGS CXX_WARN_IGNORED_QUALIFIERS -Wignored-qualifiers)
|
||||
|
||||
# -Wstrict-overflow is only active when -fstrict-overflow is enabled, but -fstrict-overflow
|
||||
# is enabled on -O2, -O3, -Os. This should help catch bugs locally before they reach Travis
|
||||
# As of 2a435bf -Wstrict-overflow=1 passes, but higher values do not.
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fstrict-overflow")
|
||||
ADD_CHECK_CXX_COMPILER_FLAG(CMAKE_CXX_FLAGS CXX_WARN_STRICT_OVERFLOW -Wstrict-overflow=1)
|
||||
|
||||
# Compiler flags
|
||||
set(DEBUG_LEVEL 0 CACHE STRING "Select debug level for compilation. Use value in range 0–3.")
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fstrict-aliasing -Werror -Wundef -Wmissing-declarations -Winit-self -Wall -Wno-unknown-pragmas -Wno-missing-braces ")
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-comment -Wshadow -Wnonnull")
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DDEBUG=${DEBUG_LEVEL}")
|
||||
|
||||
if(APPLE)
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-error=objc-method-access")
|
||||
endif()
|
||||
|
||||
# On mingw all code is already PIC, this will avoid compiler error on redefining this option
|
||||
if (NOT MINGW)
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC")
|
||||
endif ()
|
||||
|
||||
if (APPLE AND NOT USE_MMAP)
|
||||
set(PIE_FLAG "-fno-pie")
|
||||
else ()
|
||||
set(PIE_FLAG "-fpie")
|
||||
endif ()
|
||||
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++17")
|
||||
endif ()
|
||||
|
||||
# Defines
|
||||
if (USE_MMAP)
|
||||
|
@ -175,7 +194,7 @@ include("${ROOT_DIR}/src/openrct2-ui/CMakeLists.txt" NO_POLICY_SCOPE)
|
|||
# g2
|
||||
add_custom_command(
|
||||
OUTPUT g2.dat
|
||||
COMMAND ./openrct2 sprite build ${CMAKE_BINARY_DIR}/g2.dat ${ROOT_DIR}/resources/g2/sprites.json
|
||||
COMMAND ./openrct2 sprite build \"${CMAKE_BINARY_DIR}/g2.dat\" \"${ROOT_DIR}/resources/g2/sprites.json\"
|
||||
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
|
||||
)
|
||||
add_custom_target(g2 DEPENDS ${PROJECT} g2.dat)
|
||||
|
@ -205,10 +224,21 @@ if (DOWNLOAD_TITLE_SEQUENCES)
|
|||
message(\"Using cached title sequences\")\n\
|
||||
else () \n\
|
||||
file(DOWNLOAD ${TITLE_SEQUENCE_URL} \$ENV{DESTDIR}${CMAKE_INSTALL_FULL_DATADIR}/${PROJECT}/title/title-sequences.zip EXPECTED_HASH SHA1=${TITLE_SEQUENCE_SHA1} SHOW_PROGRESS)\n\
|
||||
execute_process(COMMAND \"${CMAKE_COMMAND}\" -E chdir \$ENV{DESTDIR}${CMAKE_INSTALL_FULL_DATADIR}/${PROJECT}/title/ \"${CMAKE_COMMAND}\" -E tar xvf title-sequences.zip)\n\
|
||||
execute_process(COMMAND \"${CMAKE_COMMAND}\" -E chdir \$ENV{DESTDIR}${CMAKE_INSTALL_FULL_DATADIR}/${PROJECT}/title/ \"${CMAKE_COMMAND}\" -E tar xf title-sequences.zip)\n\
|
||||
file(REMOVE \$ENV{DESTDIR}${CMAKE_INSTALL_FULL_DATADIR}/${PROJECT}/title/title-sequences.zip)\n\
|
||||
endif ()")
|
||||
endif ()
|
||||
if (DOWNLOAD_OBJECTS)
|
||||
# If rct2.wtrcyan.json or data/object/ exists, assume all the objects are already present
|
||||
install(CODE
|
||||
"if (EXISTS \"\$ENV{DESTDIR}/${CMAKE_INSTALL_FULL_DATADIR}/${PROJECT}/object/rct2/water/rct2.wtrcyan.json\" OR EXISTS ${CMAKE_SOURCE_DIR}/data/object/)\n\
|
||||
message(\"Using cached objects\")\n\
|
||||
else () \n\
|
||||
file(DOWNLOAD ${OBJECTS_URL} \$ENV{DESTDIR}/${CMAKE_INSTALL_FULL_DATADIR}/${PROJECT}/object/objects.zip EXPECTED_HASH SHA1=${OBJECTS_SHA1} SHOW_PROGRESS)\n\
|
||||
execute_process(COMMAND \"${CMAKE_COMMAND}\" -E chdir \$ENV{DESTDIR}/${CMAKE_INSTALL_FULL_DATADIR}/${PROJECT}/object/ \"${CMAKE_COMMAND}\" -E tar xf objects.zip)\n\
|
||||
file(REMOVE \$ENV{DESTDIR}/${CMAKE_INSTALL_FULL_DATADIR}/${PROJECT}/object/objects.zip)\n\
|
||||
endif ()")
|
||||
endif ()
|
||||
install(TARGETS "libopenrct2" LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}"
|
||||
ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}")
|
||||
install(TARGETS "openrct2" RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}")
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,8 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>IDEDidComputeMac32BitWarning</key>
|
||||
<true/>
|
||||
</dict>
|
||||
</plist>
|
|
@ -1,6 +1,6 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Scheme
|
||||
LastUpgradeVersion = "0820"
|
||||
LastUpgradeVersion = "0930"
|
||||
version = "1.3">
|
||||
<BuildAction
|
||||
parallelizeBuildables = "YES"
|
||||
|
@ -26,7 +26,6 @@
|
|||
buildConfiguration = "Debug"
|
||||
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
||||
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
||||
language = ""
|
||||
shouldUseLaunchSchemeArgsEnv = "YES">
|
||||
<Testables>
|
||||
</Testables>
|
||||
|
@ -46,7 +45,6 @@
|
|||
buildConfiguration = "Debug"
|
||||
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
||||
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
||||
language = ""
|
||||
launchStyle = "0"
|
||||
useCustomWorkingDirectory = "NO"
|
||||
ignoresPersistentStateOnLaunch = "NO"
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Scheme
|
||||
LastUpgradeVersion = "0820"
|
||||
LastUpgradeVersion = "0930"
|
||||
version = "1.3">
|
||||
<BuildAction
|
||||
parallelizeBuildables = "YES"
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
version: 0.1.2.{build}
|
||||
version: 0.1.3.{build}
|
||||
image:
|
||||
# - Visual Studio 2015
|
||||
- Visual Studio 2017
|
||||
cache:
|
||||
- C:\ProgramData\chocolatey\bin -> scripts\ps\appveyor_install.ps1
|
||||
|
@ -10,7 +9,7 @@ environment:
|
|||
OPENRCT2_ORG_TOKEN:
|
||||
secure: leQX3xCQpmBLGuMqrxjFlzexDt96ypNRMM5TTRVHbGE8PwVg9crgeykLc2BIZU6HDHveJCHqh2cGMdHtHYJYcw==
|
||||
BUILD_SERVER: AppVeyor
|
||||
PATH: $(PATH);C:\Program Files (x86)\Windows Kits\10\bin\x86;C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin
|
||||
PATH: C:\ProgramData\chocolatey\bin;$(PATH);C:\Program Files (x86)\Windows Kits\10\bin\x86;C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin
|
||||
install:
|
||||
- ps: >-
|
||||
.\scripts\ps\appveyor_install.ps1
|
||||
|
@ -19,9 +18,10 @@ platform:
|
|||
- x64
|
||||
configuration: Release
|
||||
build:
|
||||
parallel: true
|
||||
project: openrct2.proj
|
||||
test_script:
|
||||
- ps: msbuild openrct2.proj /t:TestNoRCT2 /logger:"C:\Program Files\AppVeyor\BuildAgent\Appveyor.MSBuildLogger.dll"
|
||||
- ps: msbuild openrct2.proj /t:Test /logger:"C:\Program Files\AppVeyor\BuildAgent\Appveyor.MSBuildLogger.dll"
|
||||
after_test:
|
||||
- ps: (new-object net.webclient).UploadFile("https://ci.appveyor.com/api/testresults/junit/$($env:APPVEYOR_JOB_ID)", (Resolve-Path .\artifacts\test-results.xml))
|
||||
artifacts:
|
||||
|
|
|
@ -1,20 +1,20 @@
|
|||
# Contributors to OpenRCT2
|
||||
Includes all git commit authors. Aliases are GitHub user names.
|
||||
|
||||
## Project team
|
||||
* Ted John (IntelOrca) - Owner, developer, merger, issue management
|
||||
* Duncan Frost (duncanspumpkin) - Developer, merger, issue management
|
||||
* Michael Steenbeek (Gymnasiast) - Developer, issue management, translation management
|
||||
* Michał Janiszewski (janisozaur) - Developer, CI, Linux management, issue management
|
||||
* Lewis Fox (LRFLEW) - Developer, macOS management
|
||||
* Marijn van der Werf (marijnvdwerf) - Developer
|
||||
* (zsilencer) - Developer
|
||||
* Richard Jenkins (rwjuk) - Developer, issue management
|
||||
## Development team
|
||||
* Ted John (IntelOrca) - Owner
|
||||
* Duncan Frost (duncanspumpkin)
|
||||
* Michael Steenbeek (Gymnasiast) - translation management
|
||||
* Michał Janiszewski (janisozaur) - CI, Linux management
|
||||
* Lewis Fox (LRFLEW) - macOS management
|
||||
* Marijn van der Werf (marijnvdwerf)
|
||||
* (zsilencer)
|
||||
* Richard Jenkins (rwjuk)
|
||||
* Hielke Morsink (Broxzier)
|
||||
* Aaron van Geffen (AaronVanGeffen)
|
||||
|
||||
## Long term contributors
|
||||
The following people are not part of the project team, but have been contributing for a long time.
|
||||
The following people are not part of the development team, but have been contributing for a long time.
|
||||
* Matte Andersson (Nubbie)
|
||||
* Kenton Boadway (Krutonium)
|
||||
* Joe Minor Jr (wolfreak99)
|
||||
|
@ -26,52 +26,56 @@ The following people are not part of the project team, but have been contributin
|
|||
* (qcz) - Scenery window, misc.
|
||||
* Matthias Lanzinger (lnz) - Climate, finance, scenario, ride reachability
|
||||
* (zsilencer) - Audio, multiplayer, misc.
|
||||
* Adrian Wielgosik (adrian17) - Misc.
|
||||
* (hexdec) - Misc.
|
||||
* Dennis Devriendt (ddevrien) - Misc.
|
||||
* Maciek Baron (MaciekBaron) - Misc.
|
||||
* (DutchRPW) - peep_update_days_in_queue, misc. money-related functions
|
||||
* Adrian Wielgosik (adrian17) - Ride window, top toolbar, map window, misc.
|
||||
* (hexdec) - Music credits window, staff window, misc.
|
||||
* Dennis Devriendt (ddevrien) - Banner window, map window, options window
|
||||
* Maciek Baron (MaciekBaron) - Peep enums, item flags, misc.
|
||||
* (Hual) - Minimap window resizing; address identification; sub_6C0C3F.
|
||||
* (AngeloG) - Scrollbar input, misc.
|
||||
* (jcdavis) - Misc.
|
||||
* (marcotc) - Rain drawing, misc.
|
||||
* (vanderkleij) - Misc.
|
||||
* Ben Pye (benpye) - Misc.
|
||||
* (JeroenSack) - Misc.
|
||||
* Sijmen Schoon (SijmenSchoon) - Misc.
|
||||
* Joe Minor Jr (wolfreak99) - Misc.
|
||||
* Inseok Lee (dlunch) - Original command line
|
||||
* Lewis Fox (LRFLEW) - Misc.
|
||||
* Marijn van der Werf (marijnvdwerf) - Drawing, misc.
|
||||
* Hielke Morsink (Broxzier) - Tile inspector, heightmap loader, misc.
|
||||
* (vanderkleij) - create_sprite, move_sprite_to_list
|
||||
* Ben Pye (benpye) - Logo rendering on title screen
|
||||
* (JeroenSack) - widget_scroll_get_part, misc.
|
||||
* Sijmen Schoon (SijmenSchoon) - redraw_peep_and_rain, misc bugfixes.
|
||||
* Lewis Fox (LRFLEW) - sub_69A997, OpenGL support, macOS
|
||||
* Marijn van der Werf (marijnvdwerf) - Peep functions, drawing and paint code
|
||||
|
||||
## Additional implementation (OpenRCT2)
|
||||
* (atmaxinger) - User configuration
|
||||
* (anyc) - Housecleaning, cross-platform fixes
|
||||
* Michael Steenbeek (Gymnasiast) - Cheats, RCT1 ride style, misc.
|
||||
* Miso Zmiric (mzmiric5) - Misc.
|
||||
* (DutchRPW) - Housecleaning, initialisation
|
||||
* Jørn Lomax (jvlomax) - User configuration
|
||||
* (KingHual) - Housecleaning
|
||||
* Alexander Overvoorde (Overv) - Misc.
|
||||
* (eezstreet) - Misc.
|
||||
* Thomas den Hollander (ThomasdenH) - Misc.
|
||||
* James Robertson (rd3k) - Misc.
|
||||
* Miso Zmiric (mzmiric5) - Twitch integration, misc.
|
||||
* Inseok Lee (dlunch) - Load save files from command line
|
||||
* Jørn Lomax (jvlomax) - Configuration parser
|
||||
* Alexander Overvoorde (Overv) - OpenGL improvements, Steam overlay detection, various bugfixes.
|
||||
* (eezstreet) - Add finances button to toolbar
|
||||
* Hielke Morsink (Broxzier) - Tile inspector, heightmap loader, misc.
|
||||
* Joe Minor Jr (wolfreak99) - Various cheats, bugfixes, new About and Changelog windows.
|
||||
* Thomas den Hollander (ThomasdenH) - Dithering in sprite importer, invert viewport dragging, park rating cheats misc.
|
||||
* James Robertson (rd3k) - Initial tile inspector, misc changes.
|
||||
* Robert Jordan (trigger-death) - UI theming, title sequence editor, misc.
|
||||
* Aaron van Geffen (AaronVanGeffen) - scenario select screen, font detection, misc.
|
||||
* Michał Janiszewski (janisozaur) - Linux port, crash handling, security, misc.
|
||||
* Kelson Blakewood (spacek531) - title sequences for release versions 0.0.4, 0.0.5/0.0.6/0.0.7, 0.1.0/0.1.1, and 0.1.2, title sequences using milliseconds
|
||||
* Kelson Blakewood (spacek531) - title sequences for release versions 0.0.4 through 0.1.2, title sequences using milliseconds
|
||||
* Hugo Wallenburg (Goddesen) - Misc.
|
||||
* Matte Andersson (Nubbie) - Misc, UX
|
||||
* Daniel Trujillo Viedma (gDanix) - Custom currency.
|
||||
* Niels NTG Poldervaart (Niels-NTG) - Misc.
|
||||
* (zaxcav) - Improvements to original pathfinding algorithm.
|
||||
* Jeroen D. Stout (JeroenDStout) - Light effects, train crossings, virtual floor.
|
||||
* Matthias Moninger (ZehMatt) - Game actions, multiplayer synchronisation, misc.
|
||||
* Joël Troch (JoelTroch) - Keyboard shortcuts for ride construction.
|
||||
* Thomas Delebo (delebota) - Misc.
|
||||
* Thomas Delebo (delebota) - Server descriptions and greetings.
|
||||
* Richard Jenkins (rwjuk) - Path issues overlay, console improvements, bug fixes
|
||||
* Brian Callahan (ibara) - OpenBSD port.
|
||||
* Jens Heuseveldt (jensj12) - Mountain tool improvements, misc.
|
||||
* Park Joon-Kyu (segfault87) - Misc.
|
||||
* Park Joon-Kyu (segfault87) - Allow filtering guests by name
|
||||
* Harrison Gentry (hgentry) - Date-changing command, misc.
|
||||
* Joshua Moerman (Jaxan) - Misc.
|
||||
* Joshua Moerman (Jaxan) - Minimap cleanup, misc.
|
||||
* Nicolas Hawrysh (xp4xbox) - Various (ride) sprite improvements.
|
||||
* Albert Morgese (Fusxfaranto) - Shop auto-rotation, unicode uppercasing.
|
||||
* Olivier Wervers (oli414) - Remove unused objects command, various bugfixes
|
||||
|
||||
## Bug fixes
|
||||
* (halfbro)
|
||||
|
@ -79,7 +83,6 @@ The following people are not part of the project team, but have been contributin
|
|||
* (nean)
|
||||
* Ed Foley (e-foley)
|
||||
* Michael Pham (nightroan)
|
||||
* Hielke Morsink (Broxzier)
|
||||
* Lucas Riutzel (jackinloadup)
|
||||
* Youngjae Yu (YJSoft)
|
||||
* Chanwoong Kim (kexplo)
|
||||
|
@ -88,28 +91,31 @@ The following people are not part of the project team, but have been contributin
|
|||
* (marcovmun)
|
||||
* Sven Slootweg (joepie91)
|
||||
* Daniel Trujillo Viedma (gDanix)
|
||||
* Niels NTG Poldervaart (Niels-NTG) - Screenshot filenames
|
||||
* Jonathan Haas (HaasJona)
|
||||
* Jake Breen (Haekb)
|
||||
* Marco Benzi Tobar (Lisergishnu)
|
||||
* Richard Jenkins (rwjuk)
|
||||
* (ceeac)
|
||||
* Matthias Moninger (Zeh Matt)
|
||||
* Tomas Dittmann (Chaosmeister)
|
||||
* William Wallace (Willox)
|
||||
* Christian Friedrich Coors (ccoors)
|
||||
* Robbin Voortman (rvoortman)
|
||||
* (telk5093)
|
||||
* Ethan Smith (ethanhs) - Refactoring.
|
||||
* Ethan Smith (ethanhs) - Refactor MAX_PATH
|
||||
* Robert Lewicki (rlewicki)
|
||||
* Tyler Ruckinger (TyPR124)
|
||||
* Justin Gottula (jgottula)
|
||||
* Seongsik Park (pss9205)
|
||||
* (Deurklink)
|
||||
* Nathan Zabriskie (NathanZabriskie)
|
||||
* Toby Hinloopen (tobyhinloopen)
|
||||
* Patrick Martinez (martip23)
|
||||
* Andy Ford (AndyTWF)
|
||||
|
||||
## Toolchain
|
||||
* (Balletie) - macOS
|
||||
* Kevin Burke (kevinburke) - macOS, Unix
|
||||
* Miso Zmiric (mzmiric5) - macOS
|
||||
* Miso Zmiric (mzmiric5) - Initial macOS toolchain
|
||||
* Jarno Veuger (JarnoVgr) - Windows build server
|
||||
* Ted John (IntelOrca) - Windows
|
||||
* Michał Janiszewski (janisozaur) - Linux, Travis CI
|
||||
|
@ -129,28 +135,30 @@ The following people are not part of the project team, but have been contributin
|
|||
* Reviewing and merging: Michael Steenbeek (Gymnasiast), Matte Andersson (Nubbie), Rune Laenen (runelaenen) (formerly)
|
||||
* Fixing unmaintained languages: Michael Steenbeek (Gymnasiast)
|
||||
* Miscellaneous fixes: Alexander Overvoorde (Overv), Ed Foley (e-foley)
|
||||
|
||||
* English (UK) - Ted John (IntelOrca), (Tinytimrob)
|
||||
* English (US) - Ted John (IntelOrca), Michael Steenbeek (Gymnasiast); small fixes: (LRFLEW), (mike-koch), Harry Lam (daihakken)
|
||||
* Catalan - Joan Josep (J0anJosep)
|
||||
* Chinese (Simplified) - Naiji Ma (naijim), (izhangfei), Eric Zhao (sczyh30)
|
||||
* Chinese (Traditional) - Harry Lam (daihakken)
|
||||
* Czech - Martin Černáč (octaroot), (Clonewayx), Tomáš Pazdiora (Aroidzap)
|
||||
* Dutch - Michael Steenbeek (Gymnasiast), Yannic Geurts (xzbobzx), (mrtnptrs), Thomas den Hollander (ThomasdenH), (hostbrute), Marijn van der Werf (marijnvdwerf), Tom Kroes (ThePsionic); reviewing and discussion: Aaron van Geffen (AaronVanGeffen), (Balletie) and Sijmen Schoon (SijmenSchoon).
|
||||
* Finnish - (DJHasis), (Zode), (TheWing)
|
||||
* French - (fbourigault), Joël Troch (JoelTroch), Michael Steenbeek (Gymnasiast), Romain Vigier (rvgr), (AziasYur), Hugo Courtial (s0r00t), David Delobel (incyclum)
|
||||
* French - (fbourigault), Joël Troch (JoelTroch), Michael Steenbeek (Gymnasiast), Romain Vigier (rvgr), (AziasYur), Hugo Courtial (s0r00t), David Delobel (incyclum), Nicolas Hawrysh (xp4xbox)
|
||||
* German - (danidoedel), (atmaxinger), (Yepoleb), Daniel Kessel (dkessel), Leon (AllGoodNamesAreTaken), (raidcookie)
|
||||
* Italian - Luca Andrea Rossi (LucaRed)
|
||||
* Japanese - Aaron van Geffen (AaronVanGeffen), Nick Hall (nickhall), (jhako), Harry Lam (daihakken)
|
||||
* Korean - (telk5093), (NeverDruid); small fixes: (kexplo)
|
||||
* Norwegian - Hugo Wallenburg (Goddesen)
|
||||
* Polish - Adrian Wielgosik (adrian17), (lopezloo), Michał Janiszewski (janisozaur)
|
||||
* Portuguese (BR) - (kaudy), (renansimoes)
|
||||
* Russian - (Soosisya)
|
||||
* Simplified Chinese - Naiji Ma (naijim), (izhangfei), Eric Zhao (sczyh30)
|
||||
* Spanish - (mdtrooper), Josué Acevedo (Wirlie), Daniel Trujillo Viedma (gDanix); small fixes: (teapartycthulu)
|
||||
* Swedish - (Jinxit), (mharrys), (Slimeyo), Matte Andersson (Nubbie)
|
||||
* Traditional Chinese - Harry Lam (daihakken)
|
||||
* Norwegian - (Goddesen)
|
||||
|
||||
## Graphics
|
||||
* OpenRCT2 Logo - Yannic Geurts (xzbobzx)
|
||||
* Booster Sprites - Nicolas Hawrysh (xp4xbox)
|
||||
|
||||
## RollerCoaster Tycoon 2 credits
|
||||
Design and programming by Chris Sawyer
|
||||
|
|
|
@ -1220,8 +1220,8 @@ STR_1214 :{SMALLFONT}{BLACK}Select maximum length of time to wait before depa
|
|||
STR_1215 :{WINDOW_COLOUR_2}Synchronise with adjacent stations
|
||||
STR_1216 :{SMALLFONT}{BLACK}Select whether to synchronise departure with all adjacent stations (for 'racing')
|
||||
STR_1217 :{COMMA16} ثواني
|
||||
STR_1218 :{BLACK}{SMALLUP}
|
||||
STR_1219 :{BLACK}{SMALLDOWN}
|
||||
STR_1218 :{BLACK}+
|
||||
STR_1219 :{BLACK}-
|
||||
STR_1220 :مخرج فقط
|
||||
STR_1221 :لا مدخل
|
||||
STR_1222 :لا مخرج
|
||||
|
@ -1777,8 +1777,8 @@ STR_1771 :{POP16}{POP16}{POP16}{POP16}{POP16}{POP16}{POP16}{POP16}{POP16}{COM
|
|||
STR_1772 :{COMMA16}
|
||||
STR_1773 :Only one on-ride photo section allowed per ride
|
||||
STR_1774 :Only one cable lift hill allowed per ride
|
||||
STR_1775 :مغلق
|
||||
STR_1776 :مفعل
|
||||
STR_1775 :<removed string - do not use>
|
||||
STR_1776 :<removed string - do not use>
|
||||
STR_1777 :{WINDOW_COLOUR_2}Ride music
|
||||
STR_1778 :{STRINGID} - -
|
||||
STR_1779 :{INLINE_SPRITE}{254}{19}{00}{00} Panda costume
|
||||
|
@ -3574,9 +3574,9 @@ STR_5232 :{SMALLFONT}{BLACK}Editors
|
|||
STR_5233 :{SMALLFONT}{BLACK}Miscellaneous
|
||||
STR_5234 :{SMALLFONT}{BLACK}Prompts
|
||||
STR_5235 :{SMALLFONT}{BLACK}Settings
|
||||
STR_5236 :Window:
|
||||
STR_5237 :Palette:
|
||||
STR_5238 :الثيم الحالي:
|
||||
STR_5236 :نافذة
|
||||
STR_5237 :لوحة
|
||||
STR_5238 :الثيم الحالي
|
||||
STR_5239 :Duplicate
|
||||
STR_5240 :Enter a name for the theme
|
||||
STR_5241 :Can't change this theme
|
||||
|
@ -3834,8 +3834,8 @@ STR_5492 :إعدادات المشهد
|
|||
STR_5493 :أرسل رسالة
|
||||
STR_5494 :<removed string - do not use>
|
||||
STR_5495 :قائمة اللاعبيين
|
||||
STR_5496 :اللاعب:
|
||||
STR_5497 :البنج:
|
||||
STR_5496 :اللاعب
|
||||
STR_5497 :البنج
|
||||
STR_5498 :قائمة السرفر
|
||||
STR_5499 :اسم اللاعب:
|
||||
STR_5500 :أضف سرفر
|
||||
|
@ -3980,7 +3980,7 @@ STR_5638 :Permission denied
|
|||
STR_5639 :{SMALLFONT}{BLACK}أظهر قائمة اللاعبين
|
||||
STR_5640 :{SMALLFONT}{BLACK}إدارة المجموعات
|
||||
STR_5641 :المجموعة الإفتراضية:
|
||||
STR_5642 :مجموعة:
|
||||
STR_5642 :مجموعة
|
||||
STR_5643 :أضف مجموعة
|
||||
STR_5644 :إمسح مجموعة
|
||||
STR_5645 :الشات
|
||||
|
@ -4008,7 +4008,7 @@ STR_5666 :Passwordless Login
|
|||
STR_5701 :{WINDOW_COLOUR_2}Last action: {BLACK}{STRINGID}
|
||||
STR_5702 :{SMALLFONT}{BLACK}Locate player's most recent action
|
||||
STR_5703 :لا يمكن طرد المُضيف
|
||||
STR_5704 :Last Action:
|
||||
STR_5704 :أخر فعل
|
||||
STR_5705 :Can't set to this group
|
||||
STR_5706 :Can't remove group that players belong to
|
||||
STR_5707 :This group cannot be modified
|
||||
|
@ -4183,34 +4183,34 @@ STR_5871 :Plants don't age
|
|||
STR_5872 :{SMALLFONT}{BLACK}Disable plant ageing such that they don't wilt.
|
||||
STR_5873 :Allow chain lifts on all track pieces
|
||||
STR_5874 :{SMALLFONT}{BLACK}Allows any piece of track to be made into a chain lift
|
||||
STR_5875 :Drawing Engine:
|
||||
STR_5876 :{SMALLFONT}{BLACK}The engine to use for drawing the game.
|
||||
STR_5877 :Software
|
||||
STR_5878 :Software (hardware display)
|
||||
STR_5879 :OpenGL (experimental)
|
||||
STR_5875 :محرك الرسم:
|
||||
STR_5876 :{SMALLFONT}{BLACK}المحرك المُستخدم في رسم اللعبة.
|
||||
STR_5877 :البرمجيات
|
||||
STR_5878 :البرمجيات (عرض الأجهزة)
|
||||
STR_5879 :أوبن جي إل (تجريبي)
|
||||
STR_5880 :المحدد فقط
|
||||
STR_5881 :الغير محدد فقط
|
||||
STR_5882 :Custom currency
|
||||
STR_5883 :Custom currency configuration
|
||||
STR_5884 :{WINDOW_COLOUR_2}Exchange rate:
|
||||
STR_5885 :{WINDOW_COLOUR_2}is equivalent to {COMMA32} GBP (£)
|
||||
STR_5882 :العملة المخصصة
|
||||
STR_5883 :تكوين العملة المخصصة
|
||||
STR_5884 :{WINDOW_COLOUR_2}سعر الصرف:
|
||||
STR_5885 :{WINDOW_COLOUR_2}ما يعادل {COMMA32} GBP (£)
|
||||
STR_5886 :{WINDOW_COLOUR_2}علامة الميزانية:
|
||||
STR_5887 :Prefix
|
||||
STR_5888 :Suffix
|
||||
STR_5889 :Custom currency symbol
|
||||
STR_5890 :Enter the currency symbol to display
|
||||
STR_5891 :Default
|
||||
STR_5892 :{SMALLFONT}{BLACK}Go to the default directory
|
||||
STR_5893 :Exchange Rate
|
||||
STR_5894 :Enter the exchange rate
|
||||
STR_5895 :Save Track
|
||||
STR_5896 :Track save failed!
|
||||
STR_5887 :السابقة
|
||||
STR_5888 :اللاحقة
|
||||
STR_5889 :رمز العملة المخصص
|
||||
STR_5890 :أدخل رمز العملة لعرضها
|
||||
STR_5891 :الإفتراضي
|
||||
STR_5892 :{SMALLFONT}{BLACK}اذهب إلى الوجهة الافتراضية
|
||||
STR_5893 :سعر الصرف
|
||||
STR_5894 :أدخل سعر الصرف
|
||||
STR_5895 :حفظ المسار
|
||||
STR_5896 :تعذّر حفظ المسار!
|
||||
STR_5897 :<removed string - do not use>
|
||||
STR_5898 :{BLACK}Can't load the track, the file might be {newline}corrupted, broken or missing!
|
||||
STR_5899 :Toggle paint debug window
|
||||
STR_5900 :Use original drawing code
|
||||
STR_5901 :Show segment heights
|
||||
STR_5902 :Show bounding boxes
|
||||
STR_5900 :استخدم رمز الرسم الأصلي
|
||||
STR_5901 :إظهار ارتفاع المقطع
|
||||
STR_5902 :إظهار الصناديق المحيطة
|
||||
STR_5903 :Show paint debug window
|
||||
STR_5904 :إرجاع التاريخ
|
||||
STR_5905 :{SMALLFONT}{BLACK}A map generation tool that automatically creates a custom landscape
|
||||
|
@ -4219,7 +4219,7 @@ STR_5907 :{SMALLFONT}{BLACK}When enabled, zooming in will centre around the c
|
|||
STR_5908 :Allow arbitrary ride type changes
|
||||
STR_5909 :{SMALLFONT}{BLACK}Allows changing ride type freely. May cause crashes.
|
||||
STR_5910 :تطبيق
|
||||
STR_5911 :See-Through Paths
|
||||
STR_5911 :انظر من خلال المسارات
|
||||
STR_5912 :See-through paths toggle
|
||||
STR_5913 :الشات
|
||||
STR_5914 :رحلة غير معروفة
|
||||
|
@ -4232,15 +4232,15 @@ STR_5920 :تصيير مؤثرات الطقس
|
|||
STR_5921 :{SMALLFONT}{BLACK}If enabled, rain and gloomy colours will be rendered during storms.
|
||||
STR_5922 :{POP16}{POP16}{POP16}{POP16}{POP16}{POP16}{SMALLFONT}{BLACK}Max {STRINGID}
|
||||
STR_5923 :{POP16}{POP16}{POP16}{POP16}{POP16}{POP16}{POP16}{POP16}{SMALLFONT}{BLACK}Max {COMMA16} {STRINGID} per train
|
||||
STR_5924 :Surface details
|
||||
STR_5924 :تفاصيل السطح
|
||||
STR_5925 :تفاصيل المسار
|
||||
STR_5926 :تفاصيل المسار
|
||||
STR_5927 :Scenery details
|
||||
STR_5927 :تفاصيل المشهد
|
||||
STR_5928 :تفاصيل المدخل
|
||||
STR_5929 :خصائص الحائط
|
||||
STR_5930 :Large scenery details
|
||||
STR_5930 :تفاصيل المشهد الكبير
|
||||
STR_5931 :تفاصيل اليافطة
|
||||
STR_5932 :Corrupt element details
|
||||
STR_5932 :تفاصيل العناصر الفاسدة
|
||||
STR_5933 :الخصائص
|
||||
STR_5934 :{WINDOW_COLOUR_2}Terrain texture: {BLACK}{STRINGID}
|
||||
STR_5935 :{WINDOW_COLOUR_2}Terrain edge: {BLACK}{STRINGID}
|
||||
|
@ -4249,10 +4249,10 @@ STR_5937 :Not owned and not for sale
|
|||
STR_5938 :{WINDOW_COLOUR_2}Water level: {BLACK}{COMMA16}
|
||||
STR_5939 :Remove park fences
|
||||
STR_5940 :Restore park fences
|
||||
STR_5941 :{WINDOW_COLOUR_2}Base height:
|
||||
STR_5941 :{WINDOW_COLOUR_2}ارتفاع القاعدة:
|
||||
STR_5942 :{WINDOW_COLOUR_2}أسم المسار: {BLACK}{STRINGID}
|
||||
STR_5943 :{WINDOW_COLOUR_2}Additions: {BLACK}{STRINGID}
|
||||
STR_5944 :{WINDOW_COLOUR_2}Additions: {BLACK}None
|
||||
STR_5943 :{WINDOW_COLOUR_2}الإضافات: {BLACK}{STRINGID}
|
||||
STR_5944 :{WINDOW_COLOUR_2}الإضافات: {BLACK}لا شئ
|
||||
STR_5945 :{WINDOW_COLOUR_2}حواف متصلة:
|
||||
STR_5946 :{WINDOW_COLOUR_2}نوع الرحلة: {BLACK}{STRINGID}
|
||||
STR_5947 :{WINDOW_COLOUR_2}معرف الرحلة: {BLACK}{COMMA16}
|
||||
|
@ -4263,35 +4263,35 @@ STR_5951 :{WINDOW_COLOUR_2}Track piece ID: {BLACK}{COMMA16}
|
|||
STR_5952 :{WINDOW_COLOUR_2}Sequence number: {BLACK}{COMMA16}
|
||||
STR_5953 :{SMALLFONT}{BLACK}Sort the map elements on the current tile based on their base height.
|
||||
STR_5954 :{WINDOW_COLOUR_2}Scenery age: {BLACK}{COMMA16}
|
||||
STR_5955 :{WINDOW_COLOUR_2}Quadrant placement: {BLACK}{STRINGID}
|
||||
STR_5956 :Southwest
|
||||
STR_5957 :Northwest
|
||||
STR_5958 :Northeast
|
||||
STR_5959 :Southeast
|
||||
STR_5960 :{WINDOW_COLOUR_2}Quadrant placement:
|
||||
STR_5961 :{WINDOW_COLOUR_2}Entry index: {BLACK}{COMMA16}
|
||||
STR_5962 :{WINDOW_COLOUR_2}Collision detection:
|
||||
STR_5963 :{WINDOW_COLOUR_2}Raised Corners:
|
||||
STR_5964 :{WINDOW_COLOUR_2}Diagonal
|
||||
STR_5955 :{WINDOW_COLOUR_2}وضع حالة رباعي: {BLACK}{STRINGID}
|
||||
STR_5956 :جنوب غرب
|
||||
STR_5957 :الشمال الغربي
|
||||
STR_5958 :شمالي شرقي
|
||||
STR_5959 :الجنوب الشرقي
|
||||
STR_5960 :{WINDOW_COLOUR_2}وضع حالة رباعي:
|
||||
STR_5961 :{WINDOW_COLOUR_2}فهرس المدخل: {BLACK}{COMMA16}
|
||||
STR_5962 :{WINDOW_COLOUR_2}كشف التصادم:
|
||||
STR_5963 :{WINDOW_COLOUR_2}زوايا مرتفعة:
|
||||
STR_5964 :{WINDOW_COLOUR_2}مائل
|
||||
STR_5965 :{WINDOW_COLOUR_2}نوع المدخل: {BLACK}{STRINGID}
|
||||
STR_5966 :{WINDOW_COLOUR_2}جزء مدخل الحديقة: {BLACK}{STRINGID}
|
||||
STR_5967 :وسط
|
||||
STR_5968 :شمال
|
||||
STR_5969 :يمين
|
||||
STR_5970 :{WINDOW_COLOUR_2}Entrance ID: {BLACK}{COMMA16}
|
||||
STR_5971 :{WINDOW_COLOUR_2}Exit ID: {BLACK}{COMMA16}
|
||||
STR_5972 :{WINDOW_COLOUR_2}Ride ID: {BLACK}{COMMA16}
|
||||
STR_5970 :{WINDOW_COLOUR_2}مُعرف المدخل: {BLACK}{COMMA16}
|
||||
STR_5971 :{WINDOW_COLOUR_2}مُعرف المخرج: {BLACK}{COMMA16}
|
||||
STR_5972 :{WINDOW_COLOUR_2}مُعرف الرحلة: {BLACK}{COMMA16}
|
||||
STR_5973 :تسلق إلي الأعلي
|
||||
STR_5974 :{SMALLFONT}{BLACK}Changes the base- and clearance height so that it's at the same as the next element on the current tile. Doing this makes it easier to build on this tile.
|
||||
STR_5975 :إنحدار:
|
||||
STR_5976 :مستوي
|
||||
STR_5977 :Right side up
|
||||
STR_5978 :Left side up
|
||||
STR_5977 :الجانب الأيمن الأعلى
|
||||
STR_5978 :الجانب الأيسر لأعلى
|
||||
STR_5979 :{WINDOW_COLOUR_2}نوع الحائط: {BLACK}{COMMA16}
|
||||
STR_5980 :{WINDOW_COLOUR_2}كتابة اليافطة: {BLACK}{STRINGID}
|
||||
STR_5981 :{WINDOW_COLOUR_2}ليست يافطة
|
||||
STR_5982 :{WINDOW_COLOUR_2}Large scenery type: {BLACK}{COMMA16}
|
||||
STR_5983 :{WINDOW_COLOUR_2}Large scenery piece ID: {BLACK}{COMMA16}
|
||||
STR_5982 :{WINDOW_COLOUR_2}نوع المشهد الكبير: {BLACK}{COMMA16}
|
||||
STR_5983 :{WINDOW_COLOUR_2}معرّف قطعة المشاهد الكبيرة: {BLACK}{COMMA16}
|
||||
STR_5984 :المسارات المقفلة:
|
||||
STR_5985 :مجلد جديد
|
||||
STR_5986 :أدخل الأسم للمجلد الجديد.
|
||||
|
@ -4311,13 +4311,13 @@ STR_5999 :حدد النقود
|
|||
STR_6000 :أدخل قيمة جديدة
|
||||
STR_6001 :تفعيل تأثيرات الضوء (تجريبي)
|
||||
STR_6002 :{SMALLFONT}{BLACK}Lamps and rides will be lit up at night.{NEWLINE}Requires rendering engine to be set to hardware display.
|
||||
STR_6003 :Cut-away View
|
||||
STR_6004 :Cut-away View
|
||||
STR_6005 :Enable cut-away view
|
||||
STR_6006 :{SMALLFONT}{BLACK}Cut-away view only displays map elements at or below the cut height
|
||||
STR_6007 :Cut height
|
||||
STR_6003 :عرض كوتاواي
|
||||
STR_6004 :عرض كوتاواي
|
||||
STR_6005 :تفعيل عرض كوتاواي
|
||||
STR_6006 :{SMALLFONT}{BLACK}Cut-away view only displays map elements at or below the cut height (vertical clipping) and in the selected area (horizontal clipping).
|
||||
STR_6007 :علو القطع
|
||||
STR_6008 :{SMALLFONT}{BLACK}Click to toggle raw value<->value in measurement units
|
||||
STR_6009 :{SMALLFONT}{BLACK}Select cut height
|
||||
STR_6009 :{SMALLFONT}{BLACK}حدد علو القطع
|
||||
STR_6010 :{COMMA2DP32}متر
|
||||
STR_6011 :{COMMA1DP16}قدم
|
||||
STR_6012 :{COMMA1DP16}
|
||||
|
@ -4478,7 +4478,7 @@ STR_6166 :{SMALLFONT}{BLACK}مزامنة كل فريم إلي معدل تحد
|
|||
STR_6167 :{SMALLFONT}{BLACK}متقدم
|
||||
STR_6168 :تسلسل العنوان
|
||||
STR_6169 :تحديد السيناريو
|
||||
STR_6170 :الضبط
|
||||
STR_6170 :ضبط الواجهة
|
||||
STR_6171 :البحث
|
||||
STR_6172 :{SMALLFONT}{BLACK}بحث
|
||||
STR_6173 :من فضلك وفر الأسم للبحث:
|
||||
|
@ -4510,7 +4510,7 @@ STR_6198 :{BLACK}يوم:
|
|||
STR_6199 :حدد التاريخ
|
||||
STR_6200 :إسترجاع التاريخ
|
||||
STR_6201 :{MONTH}
|
||||
STR_6202 :تفعيل اللأرض الإفتراضية
|
||||
STR_6202 :نمط الأرض الإفتراضية
|
||||
STR_6203 :{SMALLFONT}{BLACK}حينما يتم تفعيلة، سوف يتم إظهار أرضية إفتراضية لكل تساعدك في وضع الأشكال عمودياً بشكل صحيح.
|
||||
STR_6204 :حجر
|
||||
STR_6205 :حديد
|
||||
|
@ -4530,6 +4530,41 @@ STR_6218 :الرسمية OpenRCT2
|
|||
STR_6219 :تعليم مشاكل المسار
|
||||
STR_6220 :أجعله مُستخدم
|
||||
STR_6221 :{SMALLFONT}{BLACK هذا سوف يحدد المدخل والمخرج المعروف للرحلة للمنطقة هذه. فقط مدخل ومخرج واحد يمكن إسخدامة لكل محطة.
|
||||
STR_6222 :لا يمكن وضع نقطة دخول الضيوف هنا...
|
||||
STR_6223 :يجب أن يكون خارج حدود الحديقة!
|
||||
STR_6224 :{STRING} تم وضع نقطة دخول الضيوف.
|
||||
STR_6225 :غير مدعومة من تصيير أوبن جي إل
|
||||
STR_6226 :تمكين استكمال السيناريو المبكر
|
||||
STR_6227 :{SMALLFONT}{BLACK}يتم إطلاق إستكمال السيناريو عندما يتم استيفاء جميع أهداف السيناريو قبل الموعد المحدد.
|
||||
STR_6228 :إعدادات السيناريو
|
||||
STR_6229 :{WINDOW_COLOUR_2}{STRINGID}: {STRINGID}
|
||||
STR_6230 :{STRINGID}:
|
||||
STR_6231 :{WINDOW_COLOUR_2}{STRINGID}: {MOVE_X}{185}{STRINGID}
|
||||
STR_6232 :مُجمد
|
||||
STR_6233 :عرض كوتاواي
|
||||
STR_6234 :قم بتمييز مشاكل المسار
|
||||
STR_6235 :معلومات السرفر
|
||||
STR_6236 :اللاعبين
|
||||
STR_6237 :المجموعات
|
||||
STR_6238 :إعدادات اللعب المتعدد
|
||||
STR_6239 :لقطة عمودية
|
||||
STR_6240 :لقطة أفقية
|
||||
STR_6241 :حدد منطقة
|
||||
STR_6242 :إخلاء المُحدد
|
||||
STR_6243 :{SMALLFONT}{BLACK}تجديد الرحلة،{NEWLINE}إجعلها كالجديدة
|
||||
STR_6244 :لايمكن تجديد الرحلة...
|
||||
STR_6245 :{SMALLFONT}{BLACK}الرحلة لا تحتاج إلي التجديد
|
||||
STR_6246 :تجديد
|
||||
STR_6247 :تجديد الرحلة/الجذب
|
||||
STR_6248 :{WINDOW_COLOUR_1}هل تود تجديد {STRINGID} بقيمة {CURRENCY}?
|
||||
STR_6249 :{WINDOW_COLOUR_1}هل تود تجديد {STRINGID}?
|
||||
STR_6250 :{WINDOW_COLOUR_1}هل تود تدمير {STRINGID} بالكامل و إسترجاع {CURRENCY}?
|
||||
STR_6251 :الرحلة ليس ممتلئة بعد
|
||||
STR_6252 :رابط واجهة تطبيق تويتش
|
||||
STR_6253 :{SMALLFONT}{BLACK}وفر الرابط لواجهة تطبيق تويتش. مطلوبة من أجل .
|
||||
STR_6254 :الرابط لواجهة برمجة تطبيق تويتش:
|
||||
STR_6255 :رابط غير صالح
|
||||
|
||||
#############
|
||||
# Scenarios #
|
||||
#############
|
||||
|
@ -4971,407 +5006,3 @@ STR_DTLS :
|
|||
STR_SCNR :حصن مفارقة تاريخية
|
||||
STR_PARK :حصن مفارقة تاريخية
|
||||
STR_DTLS :
|
||||
|
||||
#####################
|
||||
# Rides/attractions #
|
||||
#####################
|
||||
|
||||
#RCT2
|
||||
[TOPSP1]
|
||||
STR_NAME :اللفة العالية
|
||||
STR_DESC :Passengers ride in a gondola suspended by large rotating arms, rotating forwards and backwards head-over-heels
|
||||
STR_CPTY :8 راكبين
|
||||
|
||||
[BMSD]
|
||||
STR_NAME :Twister Trains
|
||||
STR_DESC :A spacious train with shoulder restraints
|
||||
|
||||
[BMSU]
|
||||
STR_NAME :Stand-up Twister Trains
|
||||
STR_DESC :A train with shoulder restraints, in which the riders stand up
|
||||
|
||||
[BMFL]
|
||||
STR_NAME :Floorless Twister Trains
|
||||
STR_DESC :A spacious train with shoulder restraints and no floor, making for a more exciting ride
|
||||
|
||||
[WMMINE]
|
||||
STR_NAME :Mine Cars
|
||||
STR_DESC :Cars shaped like an old mine cart
|
||||
|
||||
[WMOUSE]
|
||||
STR_NAME :Mouse Cars
|
||||
STR_DESC :Indivual cars shaped like a mouse
|
||||
|
||||
[STEEP1]
|
||||
STR_NAME :Horses
|
||||
STR_DESC :Single cars shaped like a horse
|
||||
|
||||
[STEEP2]
|
||||
STR_NAME :Motorbikes
|
||||
STR_DESC :Single cars shaped like a motorbike
|
||||
|
||||
[SBOX]
|
||||
STR_NAME :Soap boxes
|
||||
STR_DESC :Single cars shaped like a soap box
|
||||
|
||||
[BOB1]
|
||||
STR_NAME :Bobsleigh Trains
|
||||
STR_DESC :A train consisting of 2-seater cars where the riders are behind each other
|
||||
|
||||
[INTBOB]
|
||||
STR_NAME :6-seater Bobsleighs
|
||||
STR_DESC :Bobsleighs with three seating rows, with room for two people on each
|
||||
|
||||
[LIFT1]
|
||||
STR_NAME :Lift Cabin
|
||||
STR_DESC :Steel lift cabin
|
||||
|
||||
[ARRT1]
|
||||
STR_NAME :Corkscrew Roller Coaster Trains
|
||||
STR_DESC :Roller coaster train with shoulder restraints
|
||||
|
||||
[ARRT2]
|
||||
STR_NAME :Hypercoaster Trains
|
||||
STR_DESC :Comfortable trains with only lap bar restraints
|
||||
|
||||
[MONBK]
|
||||
STR_NAME :Bicycles
|
||||
|
||||
[OBS1]
|
||||
STR_NAME :Single-deck Cabin
|
||||
|
||||
[OBS2]
|
||||
STR_NAME :Double-deck Cabin
|
||||
|
||||
[GTC]
|
||||
STR_NAME :Ghost Train Cars
|
||||
|
||||
[HMCAR]
|
||||
STR_NAME :Haunted Mansion Cars
|
||||
|
||||
[VREEL]
|
||||
STR_NAME :Virginia Reel tubs
|
||||
|
||||
[WMSPIN]
|
||||
STR_NAME :Spinning Mouse Cars
|
||||
|
||||
[AMT1]
|
||||
STR_NAME :Mine Trains
|
||||
|
||||
[SLCT]
|
||||
STR_NAME :Compact Inverted Coaster Trains
|
||||
|
||||
[SLCFO]
|
||||
STR_NAME :Face-off Cars
|
||||
|
||||
[VEKDV]
|
||||
STR_NAME :Vertical Shuttle Cars
|
||||
|
||||
[THCAR]
|
||||
STR_NAME :Air Powered Vertical Coaster Trains
|
||||
|
||||
[SSC1]
|
||||
STR_NAME :Launched Freefall car
|
||||
|
||||
[DING1]
|
||||
STR_NAME :Dinghies
|
||||
|
||||
[LFB1]
|
||||
STR_NAME :Logs
|
||||
|
||||
[RFTBOAT]
|
||||
STR_NAME :Rafts
|
||||
|
||||
[IVMC1]
|
||||
STR_NAME :Four-seater Cars
|
||||
|
||||
[SPDRCR]
|
||||
STR_NAME :Spiral Roller Coaster Trains
|
||||
|
||||
[TOGST]
|
||||
STR_NAME :Stand-up Roller Coaster Trains
|
||||
|
||||
[PREMT1]
|
||||
STR_NAME :LIM Launched Roller Coaster Trains
|
||||
|
||||
[PMT1]
|
||||
STR_NAME :Powered mine train
|
||||
|
||||
[BMAIR]
|
||||
STR_NAME :Flying Roller Coaster Trains
|
||||
|
||||
[INTINV]
|
||||
STR_NAME :Impulse Trains
|
||||
|
||||
[INTST]
|
||||
STR_NAME :Giga Coaster Trains
|
||||
|
||||
[NEMT]
|
||||
STR_NAME :4-across Inverted Roller Coaster Trains
|
||||
|
||||
[VEKST]
|
||||
STR_NAME :Lay-down Roller Coaster Trains
|
||||
|
||||
[REVCAR]
|
||||
STR_NAME :Reverser Cars
|
||||
STR_DESC :Bogied cars capable of turning around on special reversing sections
|
||||
|
||||
[SKYTR]
|
||||
STR_NAME :Lay-down Cars
|
||||
|
||||
[BMVD]
|
||||
STR_NAME :Six-seater Twister Trains
|
||||
|
||||
[SUBMAR]
|
||||
STR_NAME :Submarines
|
||||
|
||||
#WW
|
||||
[CONDORRD]
|
||||
STR_NAME :Condor Trains
|
||||
STR_DESC :Riding in special harnesses below the track, riders experience the feeling of flight as they swoop through the air in Condor-shaped trains
|
||||
STR_CPTY :4 راكبين لكل عربة
|
||||
#WW
|
||||
[CONGAEEL]
|
||||
STR_NAME :Conger Eel Trains
|
||||
STR_DESC :Trains with shoulder restraints, in the shape of a Conger Eel.
|
||||
STR_CPTY :4 راكبين لكل عربة
|
||||
#WW
|
||||
[MINELIFT]
|
||||
STR_NAME :Mine Lift Cabin
|
||||
STR_DESC :A steel lift cabin commonly used in mines
|
||||
|
||||
#WW
|
||||
[ANACONDA]
|
||||
STR_NAME :Anaconda Trains
|
||||
|
||||
#WW
|
||||
[CROCFLUM]
|
||||
STR_NAME :Crocodile boats
|
||||
|
||||
#WW
|
||||
[WHICGRUB]
|
||||
STR_NAME :Witchity Grub Trains
|
||||
|
||||
#WW
|
||||
[GRATWHTE]
|
||||
STR_NAME :Great White Shark Trains
|
||||
STR_DESC :Trains with shoulder restraints, in the shape of a Great White Shark
|
||||
|
||||
#WW
|
||||
[BOMERANG]
|
||||
STR_NAME :Boomerang Trains
|
||||
|
||||
#WW
|
||||
[KOLARIDE]
|
||||
STR_NAME :Koala car
|
||||
|
||||
#WW
|
||||
[MANTARAY]
|
||||
STR_NAME :Manta Ray boats
|
||||
STR_DESC :Coaster boats in the shape of a Manta Ray
|
||||
|
||||
#WW
|
||||
[TUTLBOAT]
|
||||
STR_NAME :Turtle boats
|
||||
|
||||
#WW, for the Wooden RC
|
||||
[MINECART]
|
||||
STR_NAME :Mine Cart Trains
|
||||
|
||||
#WW
|
||||
[LIONRIDE]
|
||||
STR_NAME :سيارات الأسد
|
||||
|
||||
#WW
|
||||
[RHINORID]
|
||||
STR_NAME :قطارات وحيد القرن
|
||||
|
||||
#WW
|
||||
[OSTRICH]
|
||||
STR_NAME :Ostrich Trains
|
||||
|
||||
#WW
|
||||
[GORILLA]
|
||||
STR_NAME :Gorilla Trains
|
||||
|
||||
#WW
|
||||
[FOOTBALL]
|
||||
STR_NAME :قطارات كرة القدم
|
||||
|
||||
#WW
|
||||
[TIGRTWST]
|
||||
STR_NAME :Bengal Tiger Cars
|
||||
|
||||
#WW
|
||||
[TAXICSTR]
|
||||
STR_NAME :قطارات سيارات التاكسي الصفراء
|
||||
|
||||
#WW
|
||||
[OUTRIGGR]
|
||||
STR_NAME :Outrigger canoes
|
||||
|
||||
#WW
|
||||
[SANFTRAM]
|
||||
STR_NAME :مترو سان فرنسيسكو
|
||||
|
||||
#WW
|
||||
[PENGUINB]
|
||||
STR_NAME :قطارات البطريق
|
||||
|
||||
#WW
|
||||
[POLARBER]
|
||||
STR_NAME :Polar Bear Trains
|
||||
|
||||
#WW
|
||||
[LONDONBS]
|
||||
STR_NAME :Routemaster buses
|
||||
STR_DESC :Replicas of the famous London Routemaster bus
|
||||
|
||||
#WW
|
||||
[BLACKCAB]
|
||||
STR_NAME :Black Cabs
|
||||
|
||||
#WW
|
||||
[TGVTRAIN]
|
||||
STR_NAME :TGV Trains
|
||||
|
||||
#WW
|
||||
[ROCKET]
|
||||
STR_NAME :صواريخ 1950
|
||||
|
||||
#WW
|
||||
[SPUTNIKR]
|
||||
STR_NAME :Sputnik Cars
|
||||
|
||||
#WW
|
||||
[DHOWWATR]
|
||||
STR_NAME :Dhow boats
|
||||
|
||||
#WW
|
||||
[SURFBRDC]
|
||||
STR_NAME :Surfing Trains
|
||||
|
||||
#WW
|
||||
[KILLWHAL]
|
||||
STR_NAME :غواصات الحوت القاتل
|
||||
|
||||
#WW
|
||||
[HIPPORID]
|
||||
STR_NAME :غواصات الهيبو
|
||||
|
||||
#WW
|
||||
[DOLPHINR]
|
||||
STR_NAME :قوارب الدلوفين
|
||||
|
||||
#WW
|
||||
[MANDARIN]
|
||||
STR_NAME :Mandarin Duck Boats
|
||||
STR_DESC :Duck shaped boat, propelled by the pedalling front seat passengers
|
||||
|
||||
#TT
|
||||
[BATTRRAM]
|
||||
STR_NAME :Battering Ram Trains
|
||||
|
||||
#TT
|
||||
[BLCKDETH]
|
||||
STR_NAME :قطارات الموت الأسود
|
||||
|
||||
#TT
|
||||
[JOUSTING]
|
||||
STR_NAME :Jousting Knights
|
||||
|
||||
#TT
|
||||
[OAKBAREL]
|
||||
STR_NAME :براميل السنديان
|
||||
|
||||
#TT
|
||||
[STAMPHRD]
|
||||
STR_NAME :Stampeding Herd Trains
|
||||
|
||||
#TT
|
||||
[DRAGNFLY]
|
||||
STR_NAME :سيارات التانين الطائرة
|
||||
|
||||
#TT
|
||||
[PTERODAC]
|
||||
STR_NAME :Pterodactyl Trains
|
||||
|
||||
#TT
|
||||
[PEGASUSX]
|
||||
STR_NAME :سيارات بيجسوس
|
||||
|
||||
#TT
|
||||
[CERBERUS]
|
||||
STR_NAME :Cerberus Trains
|
||||
|
||||
#TT
|
||||
[HARPIESX]
|
||||
STR_NAME :Harpies Trains
|
||||
|
||||
#TT
|
||||
[VALKYRIE]
|
||||
STR_NAME :Valkyries Trains
|
||||
|
||||
#TT
|
||||
[RIVRSTYX]
|
||||
STR_NAME :River Styx boats
|
||||
|
||||
#TT
|
||||
[TELEPTER]
|
||||
STR_NAME :المقصورة المتنقلة
|
||||
|
||||
#TT
|
||||
[HOVERCAR]
|
||||
STR_NAME :السيارات الحوامة
|
||||
|
||||
#TT
|
||||
[HOVRBORD]
|
||||
STR_NAME :الألواح الحوامة
|
||||
|
||||
#TT
|
||||
[HOVERBKE]
|
||||
STR_NAME :العجلات الحوامة
|
||||
|
||||
#TT, Reverser RC
|
||||
[POLICECR]
|
||||
STR_NAME :سيارات الشرطة
|
||||
|
||||
#TT, Looping RC
|
||||
[POLCHASE]
|
||||
STR_NAME :قطار سيارات الشرطة
|
||||
|
||||
#TT
|
||||
[GANSTRCR]
|
||||
STR_NAME :سيارات العصابات
|
||||
|
||||
#TT
|
||||
[SEAPLANE]
|
||||
STR_NAME :سيارات الطائرة المائية المُعلقة
|
||||
|
||||
#TT
|
||||
[BARNSTRM]
|
||||
STR_NAME :سيارات بارنستورمينغ
|
||||
|
||||
#TT
|
||||
[FLYGBOAT]
|
||||
STR_NAME :القوارب الطائرة
|
||||
|
||||
#TT
|
||||
[BMVOCTPS]
|
||||
STR_NAME :سائل من الفضاء الخارجي
|
||||
|
||||
#TT
|
||||
[JETPLANE]
|
||||
STR_NAME :سيارات الطائرات النفاثة
|
||||
|
||||
#TT
|
||||
[HOTRODXX]
|
||||
STR_NAME :سيارات الطرق السريعة
|
||||
|
||||
###########
|
||||
# Scenery #
|
||||
###########
|
||||
|
||||
#Bulrushes
|
||||
[TBR]
|
||||
STR_NAME :اعشاب البرك
|
||||
|
|
|
@ -1220,8 +1220,8 @@ STR_1214 :{SMALLFONT}{BLACK}Seleccioneu el temps d'espera màxim abans d'arre
|
|||
STR_1215 :{WINDOW_COLOUR_2}Sincronitza l'arrencada amb les estacions adjacents.
|
||||
STR_1216 :{SMALLFONT}{BLACK}Seleccioneu si cal sincronitzar la posada en marxa dels vehicles de l'estació ambs els d'estacions adjacents.
|
||||
STR_1217 :{COMMA16} segons
|
||||
STR_1218 :{BLACK}{SMALLUP}
|
||||
STR_1219 :{BLACK}{SMALLDOWN}
|
||||
STR_1218 :{BLACK}+
|
||||
STR_1219 :{BLACK}-
|
||||
STR_1220 :Només sortida
|
||||
STR_1221 :Sense entrada
|
||||
STR_1222 :Sense sortida
|
||||
|
@ -4914,25 +4914,3 @@ STR_DTLS :
|
|||
STR_SCNR :El castell {LEFTGUILLEMET}Fort Anachronism{RIGHTGUILLEMET}
|
||||
STR_PARK :El castell {LEFTGUILLEMET}Fort Anachronism{RIGHTGUILLEMET}
|
||||
STR_DTLS :
|
||||
|
||||
#####################
|
||||
# Rides/attractions #
|
||||
#####################
|
||||
|
||||
#RCT2
|
||||
[TOPSP1]
|
||||
STR_NAME :Top Spin
|
||||
STR_DESC :Les cabines on estan els passatgers estan suspeses per braços que dirigeixen les cabines girant-les, balancejant-les i movent-les cap endavant i cap enrere.
|
||||
STR_CPTY :8 passatgers
|
||||
|
||||
#WW
|
||||
[CONDORRD]
|
||||
STR_NAME :El còndor
|
||||
STR_DESC :Els passatgers, lligats amb subjeccions per baix de la via, experimenten la sensació de volar mentre cauen en picat per l'aire en vagons en forma de còndor.
|
||||
STR_CPTY :4 passatgers per vagó
|
||||
|
||||
#WW
|
||||
[CONGAEEL]
|
||||
STR_NAME :El congre
|
||||
STR_DESC :Una muntanya russa compacta de vies d'acer amb vagons en forma d'anguila que travessen tirabuixons i inversions.
|
||||
STR_CPTY :4 passatgers per vagó
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1219,8 +1219,8 @@ STR_1214 :{SMALLFONT}{BLACK}Wählen Sie die Höchstwartezeit{NEWLINE}vor der
|
|||
STR_1215 :{WINDOW_COLOUR_2}Mit benachbarten Stationen synchronisieren
|
||||
STR_1216 :{SMALLFONT}{BLACK}Auswählen, ob Abfahrt mit allen benachbarten Stationen (für `Rennen') synchronisiert werden soll
|
||||
STR_1217 :{COMMA16} Sekunden
|
||||
STR_1218 :{BLACK}{SMALLUP}
|
||||
STR_1219 :{BLACK}{SMALLDOWN}
|
||||
STR_1218 :{BLACK}+
|
||||
STR_1219 :{BLACK}-
|
||||
STR_1220 :Nur Ausgang
|
||||
STR_1221 :Kein Eingang
|
||||
STR_1222 :Kein Ausgang
|
||||
|
@ -4967,13 +4967,3 @@ STR_DTLS :
|
|||
STR_SCNR :Fort Anachronism
|
||||
STR_PARK :Fort Anachronism
|
||||
STR_DTLS :
|
||||
|
||||
#######################
|
||||
# Bahnen/Attraktionen #
|
||||
#######################
|
||||
|
||||
#WW
|
||||
[CONDORRD]
|
||||
STR_NAME :Kondorbahn
|
||||
STR_DESC :Die Passagiere fahren, in speziellen Gurten hängend, unterhalb der Strecke. In den kondorförmigen Wagen erleben sie dabei ein Gefühl des Fliegens.
|
||||
STR_CPTY :4 Fahrgäste pro Wagen
|
||||
|
|
|
@ -1220,8 +1220,8 @@ STR_1214 :{SMALLFONT}{BLACK}Select maximum length of time to wait before depa
|
|||
STR_1215 :{WINDOW_COLOUR_2}Synchronise with adjacent stations
|
||||
STR_1216 :{SMALLFONT}{BLACK}Select whether to synchronise departure with all adjacent stations (for 'racing')
|
||||
STR_1217 :{COMMA16} seconds
|
||||
STR_1218 :{BLACK}{SMALLUP}
|
||||
STR_1219 :{BLACK}{SMALLDOWN}
|
||||
STR_1218 :{BLACK}+
|
||||
STR_1219 :{BLACK}-
|
||||
STR_1220 :Exit only
|
||||
STR_1221 :No entrance
|
||||
STR_1222 :No exit
|
||||
|
@ -1600,7 +1600,7 @@ STR_1594 :{SMALLFONT}{OPENQUOTES}This wonton soup from {STRINGID} is really g
|
|||
STR_1595 :{SMALLFONT}{OPENQUOTES}This meatball soup from {STRINGID} is really good value{ENDQUOTES}
|
||||
STR_1596 :{SMALLFONT}{OPENQUOTES}This fruit juice from {STRINGID} is really good value{ENDQUOTES}
|
||||
STR_1597 :{SMALLFONT}{OPENQUOTES}This soybean milk from {STRINGID} is really good value{ENDQUOTES}
|
||||
STR_1598 :{SMALLFONT}{OPENQUOTES}This sujongkwa from {STRINGID} is really good value{ENDQUOTES}
|
||||
STR_1598 :{SMALLFONT}{OPENQUOTES}This sujeonggwa from {STRINGID} is really good value{ENDQUOTES}
|
||||
STR_1599 :{SMALLFONT}{OPENQUOTES}This sub sandwich from {STRINGID} is really good value{ENDQUOTES}
|
||||
STR_1600 :{SMALLFONT}{OPENQUOTES}This cookie from {STRINGID} is really good value{ENDQUOTES}
|
||||
STR_1601 :
|
||||
|
@ -1632,7 +1632,7 @@ STR_1626 :{SMALLFONT}{OPENQUOTES}I'm not paying that much for wonton soup fro
|
|||
STR_1627 :{SMALLFONT}{OPENQUOTES}I'm not paying that much for meatball soup from {STRINGID}{ENDQUOTES}
|
||||
STR_1628 :{SMALLFONT}{OPENQUOTES}I'm not paying that much for fruit juice from {STRINGID}{ENDQUOTES}
|
||||
STR_1629 :{SMALLFONT}{OPENQUOTES}I'm not paying that much for soybean milk from {STRINGID}{ENDQUOTES}
|
||||
STR_1630 :{SMALLFONT}{OPENQUOTES}I'm not paying that much for sujongkwa from {STRINGID}{ENDQUOTES}
|
||||
STR_1630 :{SMALLFONT}{OPENQUOTES}I'm not paying that much for sujeonggwa from {STRINGID}{ENDQUOTES}
|
||||
STR_1631 :{SMALLFONT}{OPENQUOTES}I'm not paying that much for a sub sandwich from {STRINGID}{ENDQUOTES}
|
||||
STR_1632 :{SMALLFONT}{OPENQUOTES}I'm not paying that much for a cookie from {STRINGID}{ENDQUOTES}
|
||||
STR_1633 :
|
||||
|
@ -1777,8 +1777,8 @@ STR_1771 :{POP16}{POP16}{POP16}{POP16}{POP16}{POP16}{POP16}{POP16}{POP16}{COM
|
|||
STR_1772 :{COMMA16}
|
||||
STR_1773 :Only one on-ride photo section allowed per ride
|
||||
STR_1774 :Only one cable lift hill allowed per ride
|
||||
STR_1775 :Off
|
||||
STR_1776 :On
|
||||
STR_1775 :<removed string - do not use>
|
||||
STR_1776 :<removed string - do not use>
|
||||
STR_1777 :{WINDOW_COLOUR_2}Ride music
|
||||
STR_1778 :{STRINGID} - -
|
||||
STR_1779 :{INLINE_SPRITE}{254}{19}{00}{00} Panda costume
|
||||
|
@ -2118,7 +2118,7 @@ STR_2110 :{WINDOW_COLOUR_2}Wonton Soup price:
|
|||
STR_2111 :{WINDOW_COLOUR_2}Meatball Soup price:
|
||||
STR_2112 :{WINDOW_COLOUR_2}Fruit Juice price:
|
||||
STR_2113 :{WINDOW_COLOUR_2}Soybean Milk price:
|
||||
STR_2114 :{WINDOW_COLOUR_2}Sujongkwa price:
|
||||
STR_2114 :{WINDOW_COLOUR_2}Sujeonggwa price:
|
||||
STR_2115 :{WINDOW_COLOUR_2}Sub Sandwich price:
|
||||
STR_2116 :{WINDOW_COLOUR_2}Cookie price:
|
||||
STR_2117 :{WINDOW_COLOUR_2}
|
||||
|
@ -2140,7 +2140,7 @@ STR_2132 :Wonton Soup
|
|||
STR_2133 :Meatball Soup
|
||||
STR_2134 :Fruit Juice
|
||||
STR_2135 :Soybean Milk
|
||||
STR_2136 :Sujongkwa
|
||||
STR_2136 :Sujeonggwa
|
||||
STR_2137 :Sub Sandwich
|
||||
STR_2138 :Cookie
|
||||
STR_2139 :Empty Bowl
|
||||
|
@ -2162,7 +2162,7 @@ STR_2154 :Wonton Soups
|
|||
STR_2155 :Meatball Soups
|
||||
STR_2156 :Fruit Juices
|
||||
STR_2157 :Soybean Milks
|
||||
STR_2158 :Sujongkwa
|
||||
STR_2158 :Sujeonggwa
|
||||
STR_2159 :Sub Sandwiches
|
||||
STR_2160 :Cookies
|
||||
STR_2161 :Empty Bowls
|
||||
|
@ -2184,7 +2184,7 @@ STR_2176 :some Wonton Soup
|
|||
STR_2177 :some Meatball Soup
|
||||
STR_2178 :a Fruit Juice
|
||||
STR_2179 :some Soybean Milk
|
||||
STR_2180 :some Sujongkwa
|
||||
STR_2180 :some Sujeonggwa
|
||||
STR_2181 :a Sub Sandwich
|
||||
STR_2182 :a Cookie
|
||||
STR_2183 :an Empty Bowl
|
||||
|
@ -2206,7 +2206,7 @@ STR_2198 :Wonton Soup
|
|||
STR_2199 :Meatball Soup
|
||||
STR_2200 :Fruit Juice
|
||||
STR_2201 :Soybean Milk
|
||||
STR_2202 :Sujongkwa
|
||||
STR_2202 :Sujeonggwa
|
||||
STR_2203 :Sub Sandwich
|
||||
STR_2204 :Cookie
|
||||
STR_2205 :Empty Bowl
|
||||
|
@ -3572,8 +3572,8 @@ STR_5232 :{SMALLFONT}{BLACK}Editors
|
|||
STR_5233 :{SMALLFONT}{BLACK}Miscellaneous
|
||||
STR_5234 :{SMALLFONT}{BLACK}Prompts
|
||||
STR_5235 :{SMALLFONT}{BLACK}Settings
|
||||
STR_5236 :Window:
|
||||
STR_5237 :Palette:
|
||||
STR_5236 :Window
|
||||
STR_5237 :Palette
|
||||
STR_5238 :Current Theme:
|
||||
STR_5239 :Duplicate
|
||||
STR_5240 :Enter a name for the theme
|
||||
|
@ -3832,8 +3832,8 @@ STR_5492 :Scenario options
|
|||
STR_5493 :Send Message
|
||||
STR_5494 :<removed string - do not use>
|
||||
STR_5495 :Player List
|
||||
STR_5496 :Player:
|
||||
STR_5497 :Ping:
|
||||
STR_5496 :Player
|
||||
STR_5497 :Ping
|
||||
STR_5498 :Server List
|
||||
STR_5499 :Player Name:
|
||||
STR_5500 :Add Server
|
||||
|
@ -3978,7 +3978,7 @@ STR_5638 :Permission denied
|
|||
STR_5639 :{SMALLFONT}{BLACK}Show list of players
|
||||
STR_5640 :{SMALLFONT}{BLACK}Manage groups
|
||||
STR_5641 :Default Group:
|
||||
STR_5642 :Group:
|
||||
STR_5642 :Group
|
||||
STR_5643 :Add Group
|
||||
STR_5644 :Remove Group
|
||||
STR_5645 :Chat
|
||||
|
@ -4006,7 +4006,7 @@ STR_5666 :Passwordless Login
|
|||
STR_5701 :{WINDOW_COLOUR_2}Last action: {BLACK}{STRINGID}
|
||||
STR_5702 :{SMALLFONT}{BLACK}Locate player's most recent action
|
||||
STR_5703 :Can't kick the host
|
||||
STR_5704 :Last Action:
|
||||
STR_5704 :Last Action
|
||||
STR_5705 :Can't set to this group
|
||||
STR_5706 :Can't remove group that players belong to
|
||||
STR_5707 :This group cannot be modified
|
||||
|
@ -4312,7 +4312,7 @@ STR_6002 :{SMALLFONT}{BLACK}Lamps and rides will be lit up at night.{NEWLINE}
|
|||
STR_6003 :Cut-away View
|
||||
STR_6004 :Cut-away View
|
||||
STR_6005 :Enable cut-away view
|
||||
STR_6006 :{SMALLFONT}{BLACK}Cut-away view only displays map elements at or below the cut height
|
||||
STR_6006 :{SMALLFONT}{BLACK}Cut-away view only displays map elements at or below the cut height (vertical clipping) and in the selected area (horizontal clipping).
|
||||
STR_6007 :Cut height
|
||||
STR_6008 :{SMALLFONT}{BLACK}Click to toggle raw value<->value in measurement units
|
||||
STR_6009 :{SMALLFONT}{BLACK}Select cut height
|
||||
|
@ -4476,7 +4476,7 @@ STR_6166 :{SMALLFONT}{BLACK}Synchronises each frame displayed to the monitor'
|
|||
STR_6167 :{SMALLFONT}{BLACK}Advanced
|
||||
STR_6168 :Title Sequence
|
||||
STR_6169 :Scenario selection
|
||||
STR_6170 :Tweaks
|
||||
STR_6170 :Interface Tweaks
|
||||
STR_6171 :Search
|
||||
STR_6172 :{SMALLFONT}{BLACK}Search
|
||||
STR_6173 :Please provide the name to search:
|
||||
|
@ -4508,7 +4508,7 @@ STR_6198 :{BLACK}Day:
|
|||
STR_6199 :Set date
|
||||
STR_6200 :Reset date
|
||||
STR_6201 :{MONTH}
|
||||
STR_6202 :Enable virtual floor
|
||||
STR_6202 :Virtual floor style:
|
||||
STR_6203 :{SMALLFONT}{BLACK}When enabled, a virtual floor will be rendered when holding Ctrl or Shift to ease vertical placement of elements.
|
||||
STR_6204 :Brick
|
||||
STR_6205 :Iron
|
||||
|
@ -4532,6 +4532,40 @@ STR_6222 :Can't place guest entry point here...
|
|||
STR_6223 :Must be outside park boundaries!
|
||||
STR_6224 :{STRING} placed a guest entry point.
|
||||
STR_6225 :Not supported with OpenGL renderer
|
||||
STR_6226 :Enable early scenario completion
|
||||
STR_6227 :{SMALLFONT}{BLACK}Triggers scenario completion when all scenario goals are met before the target date.
|
||||
STR_6228 :Scenario Options
|
||||
STR_6229 :{WINDOW_COLOUR_2}{STRINGID}: {STRINGID}
|
||||
STR_6230 :{STRINGID}:
|
||||
STR_6231 :{WINDOW_COLOUR_2}{STRINGID}: {MOVE_X}{185}{STRINGID}
|
||||
STR_6232 :Frozen
|
||||
STR_6233 :Cut-away view
|
||||
STR_6234 :Highlight path issues
|
||||
STR_6235 :Server Information
|
||||
STR_6236 :Players
|
||||
STR_6237 :Groups
|
||||
STR_6238 :Multiplayer Options
|
||||
STR_6239 :Vertical Clipping
|
||||
STR_6240 :Horizontal Clipping
|
||||
STR_6241 :Select area
|
||||
STR_6242 :Clear selection
|
||||
STR_6243 :{SMALLFONT}{BLACK}Refurbishes the ride,{NEWLINE}makes it like new
|
||||
STR_6244 :Can't refurbish ride...
|
||||
STR_6245 :{SMALLFONT}{BLACK}Ride doesn't need refurbishing
|
||||
STR_6246 :Refurbish
|
||||
STR_6247 :Refurbish ride/attraction
|
||||
STR_6248 :{WINDOW_COLOUR_1}Do you want to refurbish {STRINGID} for {CURRENCY}?
|
||||
STR_6249 :{WINDOW_COLOUR_1}Do you want to refurbish {STRINGID}?
|
||||
STR_6250 :{WINDOW_COLOUR_1}Are you sure you want to completely demolish {STRINGID} and gain {CURRENCY}?
|
||||
STR_6251 :Ride is not empty yet
|
||||
STR_6252 :Twitch API URL
|
||||
STR_6253 :{SMALLFONT}{BLACK}Provide URL of Twitch integration API. Required in order to enable Twitch integration.
|
||||
STR_6254 :URL of Twitch integration API:
|
||||
STR_6255 :URL is not valid
|
||||
STR_6256 :Rendering effects
|
||||
STR_6257 :Glassy (translucent)
|
||||
STR_6258 :Clear (transparent)
|
||||
STR_6259 :Disabled
|
||||
|
||||
#############
|
||||
# Scenarios #
|
||||
|
@ -4975,411 +5009,10 @@ STR_SCNR :Fort Anachronism
|
|||
STR_PARK :Fort Anachronism
|
||||
STR_DTLS :
|
||||
|
||||
#####################
|
||||
# Rides/attractions #
|
||||
#####################
|
||||
|
||||
#RCT2
|
||||
[TOPSP1]
|
||||
STR_NAME :Top Spin
|
||||
STR_DESC :Passengers ride in a gondola suspended by large rotating arms, rotating forwards and backwards head-over-heels
|
||||
STR_CPTY :8 passengers
|
||||
|
||||
[BMSD]
|
||||
STR_NAME :Twister Trains
|
||||
STR_DESC :A spacious train with shoulder restraints
|
||||
|
||||
[BMSU]
|
||||
STR_NAME :Stand-up Twister Trains
|
||||
STR_DESC :A train with shoulder restraints, in which the riders stand up
|
||||
|
||||
[BMFL]
|
||||
STR_NAME :Floorless Twister Trains
|
||||
STR_DESC :A spacious train with shoulder restraints and no floor, making for a more exciting ride
|
||||
|
||||
[WMMINE]
|
||||
STR_NAME :Mine Cars
|
||||
STR_DESC :Cars shaped like an old mine cart
|
||||
|
||||
[WMOUSE]
|
||||
STR_NAME :Mouse Cars
|
||||
STR_DESC :Indivual cars shaped like a mouse
|
||||
|
||||
[STEEP1]
|
||||
STR_NAME :Horses
|
||||
STR_DESC :Single cars shaped like a horse
|
||||
|
||||
[STEEP2]
|
||||
STR_NAME :Motorbikes
|
||||
STR_DESC :Single cars shaped like a motorbike
|
||||
|
||||
[SBOX]
|
||||
STR_NAME :Soap boxes
|
||||
STR_DESC :Single cars shaped like a soap box
|
||||
|
||||
[BOB1]
|
||||
STR_NAME :Bobsleigh Trains
|
||||
STR_DESC :A train consisting of 2-seater cars where the riders are behind each other
|
||||
|
||||
[INTBOB]
|
||||
STR_NAME :6-seater Bobsleighs
|
||||
STR_DESC :Bobsleighs with three seating rows, with room for two people on each
|
||||
|
||||
[LIFT1]
|
||||
STR_NAME :Lift Cabin
|
||||
STR_DESC :Steel lift cabin
|
||||
|
||||
[ARRT1]
|
||||
STR_NAME :Corkscrew Roller Coaster Trains
|
||||
STR_DESC :Roller coaster train with shoulder restraints
|
||||
|
||||
[ARRT2]
|
||||
STR_NAME :Hypercoaster Trains
|
||||
STR_DESC :Comfortable trains with only lap bar restraints
|
||||
|
||||
[MONBK]
|
||||
STR_NAME :Bicycles
|
||||
|
||||
[OBS1]
|
||||
STR_NAME :Single-deck Cabin
|
||||
|
||||
[OBS2]
|
||||
STR_NAME :Double-deck Cabin
|
||||
|
||||
[GTC]
|
||||
STR_NAME :Ghost Train Cars
|
||||
|
||||
[HMCAR]
|
||||
STR_NAME :Haunted Mansion Cars
|
||||
|
||||
[VREEL]
|
||||
STR_NAME :Virginia Reel tubs
|
||||
|
||||
[WMSPIN]
|
||||
STR_NAME :Spinning Mouse Cars
|
||||
|
||||
[AMT1]
|
||||
STR_NAME :Mine Trains
|
||||
|
||||
[SLCT]
|
||||
STR_NAME :Compact Inverted Coaster Trains
|
||||
|
||||
[SLCFO]
|
||||
STR_NAME :Face-off Cars
|
||||
|
||||
[VEKDV]
|
||||
STR_NAME :Vertical Shuttle Cars
|
||||
|
||||
[THCAR]
|
||||
STR_NAME :Air Powered Vertical Coaster Trains
|
||||
|
||||
[SSC1]
|
||||
STR_NAME :Launched Freefall car
|
||||
|
||||
[DING1]
|
||||
STR_NAME :Dinghies
|
||||
|
||||
[LFB1]
|
||||
STR_NAME :Logs
|
||||
|
||||
[RFTBOAT]
|
||||
STR_NAME :Rafts
|
||||
|
||||
[IVMC1]
|
||||
STR_NAME :Four-seater Cars
|
||||
|
||||
[SPDRCR]
|
||||
STR_NAME :Spiral Roller Coaster Trains
|
||||
|
||||
[TOGST]
|
||||
STR_NAME :Stand-up Roller Coaster Trains
|
||||
|
||||
[PREMT1]
|
||||
STR_NAME :LIM Launched Roller Coaster Trains
|
||||
|
||||
[PMT1]
|
||||
STR_NAME :Powered mine train
|
||||
|
||||
[BMAIR]
|
||||
STR_NAME :Flying Roller Coaster Trains
|
||||
|
||||
[INTINV]
|
||||
STR_NAME :Impulse Trains
|
||||
|
||||
[INTST]
|
||||
STR_NAME :Giga Coaster Trains
|
||||
|
||||
[NEMT]
|
||||
STR_NAME :4-across Inverted Roller Coaster Trains
|
||||
|
||||
[VEKST]
|
||||
STR_NAME :Lay-down Roller Coaster Trains
|
||||
|
||||
[REVCAR]
|
||||
STR_NAME :Reverser Cars
|
||||
STR_DESC :Bogied cars capable of turning around on special reversing sections
|
||||
|
||||
[SKYTR]
|
||||
STR_NAME :Lay-down Cars
|
||||
|
||||
[BMVD]
|
||||
STR_NAME :Six-seater Twister Trains
|
||||
|
||||
[SUBMAR]
|
||||
STR_NAME :Submarines
|
||||
|
||||
#WW
|
||||
[CONDORRD]
|
||||
STR_NAME :Condor Trains
|
||||
STR_DESC :Riding in special harnesses below the track, riders experience the feeling of flight as they swoop through the air in Condor-shaped trains
|
||||
STR_CPTY :4 passengers per car
|
||||
|
||||
#WW
|
||||
[CONGAEEL]
|
||||
STR_NAME :Conger Eel Trains
|
||||
STR_DESC :Trains with shoulder restraints, in the shape of a Conger Eel.
|
||||
|
||||
#WW
|
||||
[MINELIFT]
|
||||
STR_NAME :Mine Lift Cabin
|
||||
STR_DESC :A steel lift cabin commonly used in mines
|
||||
|
||||
#WW
|
||||
[ANACONDA]
|
||||
STR_NAME :Anaconda Trains
|
||||
|
||||
#WW
|
||||
[CROCFLUM]
|
||||
STR_NAME :Crocodile boats
|
||||
|
||||
#WW
|
||||
[WHICGRUB]
|
||||
STR_NAME :Witchity Grub Trains
|
||||
|
||||
#WW
|
||||
[GRATWHTE]
|
||||
STR_NAME :Great White Shark Trains
|
||||
STR_DESC :Trains with shoulder restraints, in the shape of a Great White Shark
|
||||
|
||||
#WW
|
||||
[BOMERANG]
|
||||
STR_NAME :Boomerang Trains
|
||||
|
||||
#WW
|
||||
[KOLARIDE]
|
||||
STR_NAME :Koala car
|
||||
|
||||
#WW
|
||||
[MANTARAY]
|
||||
STR_NAME :Manta Ray boats
|
||||
STR_DESC :Coaster boats in the shape of a Manta Ray
|
||||
|
||||
#WW
|
||||
[TUTLBOAT]
|
||||
STR_NAME :Turtle boats
|
||||
|
||||
#WW, for the Wooden RC
|
||||
[MINECART]
|
||||
STR_NAME :Mine Cart Trains
|
||||
|
||||
#WW
|
||||
[LIONRIDE]
|
||||
STR_NAME :Lion Cars
|
||||
|
||||
#WW
|
||||
[RHINORID]
|
||||
STR_NAME :Rhino Trains
|
||||
|
||||
#WW
|
||||
[OSTRICH]
|
||||
STR_NAME :Ostrich Trains
|
||||
|
||||
#WW
|
||||
[GORILLA]
|
||||
STR_NAME :Gorilla Trains
|
||||
|
||||
#WW
|
||||
[FOOTBALL]
|
||||
STR_NAME :Football Trains
|
||||
|
||||
#WW
|
||||
[TIGRTWST]
|
||||
STR_NAME :Bengal Tiger Cars
|
||||
|
||||
#WW
|
||||
[TAXICSTR]
|
||||
STR_NAME :Yellow Taxi Trains
|
||||
|
||||
#WW
|
||||
[OUTRIGGR]
|
||||
STR_NAME :Outrigger canoes
|
||||
|
||||
#WW
|
||||
[SANFTRAM]
|
||||
STR_NAME :San Francisco Trams
|
||||
|
||||
#WW
|
||||
[PENGUINB]
|
||||
STR_NAME :Penguin Trains
|
||||
|
||||
#WW
|
||||
[POLARBER]
|
||||
STR_NAME :Polar Bear Trains
|
||||
|
||||
#WW
|
||||
[LONDONBS]
|
||||
STR_NAME :Routemaster buses
|
||||
STR_DESC :Replicas of the famous London Routemaster bus
|
||||
|
||||
#WW
|
||||
[BLACKCAB]
|
||||
STR_NAME :Black Cabs
|
||||
|
||||
#WW
|
||||
[TGVTRAIN]
|
||||
STR_NAME :TGV Trains
|
||||
|
||||
#WW
|
||||
[ROCKET]
|
||||
STR_NAME :1950's Rockets
|
||||
|
||||
#WW
|
||||
[SPUTNIKR]
|
||||
STR_NAME :Sputnik Cars
|
||||
|
||||
#WW
|
||||
[DHOWWATR]
|
||||
STR_NAME :Dhow boats
|
||||
|
||||
#WW
|
||||
[SURFBRDC]
|
||||
STR_NAME :Surfing Trains
|
||||
|
||||
#WW
|
||||
[KILLWHAL]
|
||||
STR_NAME :Killer Whale Submarines
|
||||
|
||||
#WW
|
||||
[HIPPORID]
|
||||
STR_NAME :Hippo Submarines
|
||||
|
||||
#WW
|
||||
[DOLPHINR]
|
||||
STR_NAME :Dolphin boats
|
||||
|
||||
#WW
|
||||
[MANDARIN]
|
||||
STR_NAME :Mandarin Duck Boats
|
||||
STR_DESC :Duck shaped boat, propelled by the pedalling front seat passengers
|
||||
|
||||
#TT
|
||||
[BATTRRAM]
|
||||
STR_NAME :Battering Ram Trains
|
||||
|
||||
#TT
|
||||
[BLCKDETH]
|
||||
STR_NAME :Black Death Trains
|
||||
|
||||
#TT
|
||||
[JOUSTING]
|
||||
STR_NAME :Jousting Knights
|
||||
|
||||
#TT
|
||||
[OAKBAREL]
|
||||
STR_NAME :Oak Barrels
|
||||
|
||||
#TT
|
||||
[STAMPHRD]
|
||||
STR_NAME :Stampeding Herd Trains
|
||||
|
||||
#TT
|
||||
[DRAGNFLY]
|
||||
STR_NAME :Dragonfly Cars
|
||||
|
||||
#TT
|
||||
[PTERODAC]
|
||||
STR_NAME :Pterodactyl Trains
|
||||
|
||||
#TT
|
||||
[PEGASUSX]
|
||||
STR_NAME :Pegasus Cars
|
||||
|
||||
#TT
|
||||
[CERBERUS]
|
||||
STR_NAME :Cerberus Trains
|
||||
|
||||
#TT
|
||||
[HARPIESX]
|
||||
STR_NAME :Harpies Trains
|
||||
|
||||
#TT
|
||||
[VALKYRIE]
|
||||
STR_NAME :Valkyries Trains
|
||||
|
||||
#TT
|
||||
[RIVRSTYX]
|
||||
STR_NAME :River Styx boats
|
||||
|
||||
#TT
|
||||
[TELEPTER]
|
||||
STR_NAME :Teleporter Cabin
|
||||
|
||||
#TT
|
||||
[HOVERCAR]
|
||||
STR_NAME :Hover Cars
|
||||
|
||||
#TT
|
||||
[HOVRBORD]
|
||||
STR_NAME :Hoverboards
|
||||
|
||||
#TT
|
||||
[HOVERBKE]
|
||||
STR_NAME :Hover Bikes
|
||||
|
||||
#TT, Reverser RC
|
||||
[POLICECR]
|
||||
STR_NAME :Police Cars
|
||||
|
||||
#TT, Looping RC
|
||||
[POLCHASE]
|
||||
STR_NAME :Police Car Trains
|
||||
|
||||
#TT
|
||||
[GANSTRCR]
|
||||
STR_NAME :Gangster Cars
|
||||
|
||||
#TT
|
||||
[SEAPLANE]
|
||||
STR_NAME :Suspended Seaplane Cars
|
||||
|
||||
#TT
|
||||
[BARNSTRM]
|
||||
STR_NAME :BarnStorming Cars
|
||||
|
||||
#TT
|
||||
[FLYGBOAT]
|
||||
STR_NAME :Flying boats
|
||||
|
||||
#TT
|
||||
[BMVOCTPS]
|
||||
STR_NAME :Blob from Outer Space
|
||||
|
||||
#TT
|
||||
[JETPLANE]
|
||||
STR_NAME :Jet Plane Cars
|
||||
|
||||
#TT
|
||||
[HOTRODXX]
|
||||
STR_NAME :Hot Rod Cars
|
||||
|
||||
###########
|
||||
# Scenery #
|
||||
###########
|
||||
|
||||
#Bulrushes was spelt incorrectly
|
||||
[TBR]
|
||||
STR_NAME :Bulrushes
|
||||
|
||||
## Start OpenRCT2 Official
|
||||
[XXBBBR01]
|
||||
STR_NAME :Base Block
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1220,8 +1220,8 @@ STR_1214 :{SMALLFONT}{BLACK}Selecciona el tiempo de espera máximo antes de p
|
|||
STR_1215 :{WINDOW_COLOUR_2}Sincronizar con estaciones adyacentes
|
||||
STR_1216 :{SMALLFONT}{BLACK}Selecciona si deseas sincronizar esta estación con otras estaciones adyacentes a esta estación.
|
||||
STR_1217 :{COMMA16} segundos
|
||||
STR_1218 :{BLACK}{SMALLUP}
|
||||
STR_1219 :{BLACK}{SMALLDOWN}
|
||||
STR_1218 :{BLACK}+
|
||||
STR_1219 :{BLACK}-
|
||||
STR_1220 :Sólo salida
|
||||
STR_1221 :No hay entrada
|
||||
STR_1222 :No hay salida
|
||||
|
@ -4907,21 +4907,3 @@ STR_DTLS :
|
|||
STR_SCNR :Fort Anachronism
|
||||
STR_PARK :Fort Anachronism
|
||||
STR_DTLS :
|
||||
|
||||
######################
|
||||
# Juegos/Atracciones #
|
||||
######################
|
||||
|
||||
#WW
|
||||
[CONDORRD]
|
||||
STR_NAME :Atracción Condor
|
||||
STR_DESC :Los pasajeros viajan boca abajo y acostados, suspendidos del arnés debajo de la pista en un vagón con forma de Cóndor que se balancea libremente de un lado a otro al pasar por las curvas.
|
||||
STR_CPTY :4 pasajeros por vagón
|
||||
|
||||
###################
|
||||
# Tiendas/Puestos #
|
||||
###################
|
||||
|
||||
[INFOK]
|
||||
STR_NAME :Quiosco de información
|
||||
STR_DESC :Puesto en el que los visitantes obtienen mapas del parque y compran paraguas.
|
||||
|
|
|
@ -1222,8 +1222,8 @@ STR_1214 :{SMALLFONT}{BLACK}Valitse enimmäisodotusaika ennen lähtöä
|
|||
STR_1215 :{WINDOW_COLOUR_2}Synkronoi rinnakkaisasemien kanssa
|
||||
STR_1216 :{SMALLFONT}{BLACK}Valitse pitäisikö synkronoida lähtö kaikkien rinnakkaisasemien kanssa ('kilpa-ajoa' varten)
|
||||
STR_1217 :{COMMA16} sekuntia
|
||||
STR_1218 :{BLACK}{SMALLUP}
|
||||
STR_1219 :{BLACK}{SMALLDOWN}
|
||||
STR_1218 :{BLACK}+
|
||||
STR_1219 :{BLACK}-
|
||||
STR_1220 :Vain uloskäynti
|
||||
STR_1221 :Ei sisäänkäyntiä
|
||||
STR_1222 :Ei uloskäyntiä
|
||||
|
@ -3895,13 +3895,3 @@ STR_5549 :Vuosi/Kuukausi/Päivä
|
|||
STR_5550 :{POP16}{POP16}Vuosi {COMMA16}, {PUSH16}{PUSH16}{MONTH} {PUSH16}{PUSH16}{STRINGID}
|
||||
STR_5551 :Vuosi/Päivä/Kuukausi
|
||||
STR_5552 :{POP16}{POP16}Vuosi {COMMA16}, {PUSH16}{PUSH16}{PUSH16}{STRINGID} {MONTH}
|
||||
|
||||
#########
|
||||
# Rides #
|
||||
#########
|
||||
|
||||
#WW
|
||||
[CONDORRD]
|
||||
STR_NAME :Condor Ride
|
||||
STR_DESC :Riding in special harnesses below the track, riders experience the feeling of flight as they swoop through the air in Condor-shaped trains
|
||||
STR_CPTY :4 matkustajaa per auto
|
||||
|
|
|
@ -1221,8 +1221,8 @@ STR_1214 :{SMALLFONT}{BLACK}Sélectionnez la durée maximum à attendre avant
|
|||
STR_1215 :{WINDOW_COLOUR_2}Synchroniser avec les stations adjacentes
|
||||
STR_1216 :{SMALLFONT}{BLACK}Sélectionnez s'il faut synchroniser le départ avec toutes les stations adjacentes
|
||||
STR_1217 :{COMMA16} secondes
|
||||
STR_1218 :{BLACK}{SMALLUP}
|
||||
STR_1219 :{BLACK}{SMALLDOWN}
|
||||
STR_1218 :{BLACK}+
|
||||
STR_1219 :{BLACK}-
|
||||
STR_1220 :Sortie uniquement
|
||||
STR_1221 :Pas d'entrée
|
||||
STR_1222 :Pas de sortie
|
||||
|
@ -1779,8 +1779,8 @@ STR_1771 :{POP16}{POP16}{POP16}{POP16}{POP16}{POP16}{POP16}{POP16}{POP16}{COM
|
|||
STR_1772 :{COMMA16}
|
||||
STR_1773 :Une seule section photo sur le vif autorisée par attraction
|
||||
STR_1774 :Une seule montée par câble autorisée par attraction
|
||||
STR_1775 :Éteint
|
||||
STR_1776 :Allumé
|
||||
STR_1775 :<removed string - do not use>
|
||||
STR_1776 :<removed string - do not use>
|
||||
STR_1777 :{WINDOW_COLOUR_2}Musique
|
||||
STR_1778 :{STRINGID} - -
|
||||
STR_1779 :{INLINE_SPRITE}{254}{19}{00}{00} Costume de panda
|
||||
|
@ -2874,7 +2874,7 @@ STR_2862 :Remerciements musique...
|
|||
STR_2863 :Remerciements musique
|
||||
STR_2864 :{WINDOW_COLOUR_2}March - Children of the Regiment: (Fucik) sans copyright
|
||||
STR_2865 :{WINDOW_COLOUR_2}Heyken's Serenade : (J.Heyken) British Standard Music Coy ; GEMA, BRITICO
|
||||
STR_2866 :{WINDOW_COLOUR_2}In Continental Mood : (Compositeur inconnu) Copyright
|
||||
STR_2866 :{WINDOW_COLOUR_2}La Belle Espagnole : (Robert Vollstedt) Copyright Control
|
||||
STR_2867 :{WINDOW_COLOUR_2}Wedding Journey : (Traditionnelle)
|
||||
STR_2868 :{WINDOW_COLOUR_2}Les Histoires du Bois de Vienne : (Johann Strauss) sans copyright
|
||||
STR_2869 :{WINDOW_COLOUR_2}Slavonic Dance : (Traditionnelle)
|
||||
|
@ -3575,8 +3575,8 @@ STR_5232 :{SMALLFONT}{BLACK}Editeurs
|
|||
STR_5233 :{SMALLFONT}{BLACK}Divers
|
||||
STR_5234 :{SMALLFONT}{BLACK}Fenêtres de dialogue
|
||||
STR_5235 :{SMALLFONT}{BLACK}Paramètres
|
||||
STR_5236 :Fenêtre :
|
||||
STR_5237 :Palette :
|
||||
STR_5236 :Fenêtre
|
||||
STR_5237 :Palette
|
||||
STR_5238 :Thème actuel :
|
||||
STR_5239 :Dupliquer
|
||||
STR_5240 :Entrez un nom pour le thème
|
||||
|
@ -3835,8 +3835,8 @@ STR_5492 :Options du scénario
|
|||
STR_5493 :Envoyer un message
|
||||
STR_5494 :<removed string - do not use>
|
||||
STR_5495 :Liste des joueurs
|
||||
STR_5496 :Joueur :
|
||||
STR_5497 :Ping :
|
||||
STR_5496 :Joueur
|
||||
STR_5497 :Ping
|
||||
STR_5498 :Liste des serveurs
|
||||
STR_5499 :Nom du joueur :
|
||||
STR_5500 :Ajouter un serveur
|
||||
|
@ -3981,7 +3981,7 @@ STR_5638 :Permission refusée
|
|||
STR_5639 :{SMALLFONT}{BLACK}Affiche la liste des joueurs
|
||||
STR_5640 :{SMALLFONT}{BLACK}Gérer les groupes
|
||||
STR_5641 :Groupe par défaut :
|
||||
STR_5642 :Groupes :
|
||||
STR_5642 :Groupe
|
||||
STR_5643 :Ajouter groupe
|
||||
STR_5644 :Suppr. groupe
|
||||
STR_5645 :Chat
|
||||
|
@ -4009,7 +4009,7 @@ STR_5666 :Connexion sans mot de passe
|
|||
STR_5701 :{WINDOW_COLOUR_2}Dernière action : {BLACK}{STRINGID}
|
||||
STR_5702 :{SMALLFONT}{BLACK}Localise l'action la plus récente du joueur
|
||||
STR_5703 :Imposible d'expulser l'hébergeur
|
||||
STR_5704 :Dernière action :
|
||||
STR_5704 :Dernière action
|
||||
STR_5705 :Impossible d'attribuer à ce groupe
|
||||
STR_5706 :Impossible de supprimer un groupe ayant des joueurs
|
||||
STR_5707 :Ce groupe ne peut pas être modifié
|
||||
|
@ -4036,10 +4036,10 @@ STR_5726 :{SMALLFONT}{BLACK}Définit la météo actuelle dans le parc
|
|||
STR_5727 :Qual. de mise à l'échelle :
|
||||
STR_5728 :Requiert l'option d'affichage matériel
|
||||
STR_5729 :{SMALLFONT}{BLACK}Requiert l'option d'affichage matériel
|
||||
STR_5730 :Au plus proche
|
||||
STR_5730 :<removed string - do not use>
|
||||
STR_5731 :Linéaire
|
||||
STR_5732 :Anisotropique
|
||||
STR_5733 :Utilise la mise à l'échelle NN aux échelles d'entiers
|
||||
STR_5732 :<removed string - do not use>
|
||||
STR_5733 :<removed string - do not use>
|
||||
# tooltip for tab in options window
|
||||
STR_5734 :{SMALLFONT}{BLACK}Rendu
|
||||
STR_5735 :Etat du réseau
|
||||
|
@ -4126,7 +4126,7 @@ STR_5814 :{WINDOW_COLOUR_1}{OPENQUOTES}{STRING}{ENDQUOTES}
|
|||
#tooltips
|
||||
STR_5815 :{SMALLFONT}{BLACK}Affiche le nombre d'images par seconde durant le jeu
|
||||
STR_5816 :{SMALLFONT}{BLACK}Définit le ratio de mise à l'échelle du jeu.{NEWLINE}Utile lors de l'utilisation de résolutions élevées
|
||||
STR_5817 :{SMALLFONT}{BLACK}[Requiert l'affichage matériel]{NEWLINE}Définit le type de mise à l'échelle de l'interface graphique{NEWLINE}{NEWLINE}Voisinage proche est plus net mais peut causer des distorsions sur des mises à l'échelle non entières.{NEWLINE}Linéaire et Anisotrope sont lisses mais flous.{NEWLINE}Voisinage proche lisse est net même sur des mises à l'échelle non entières mais peut causer un dégradement des performances mineure.
|
||||
STR_5817 :{SMALLFONT}{BLACK}[Requiert l'affichage matériel]{NEWLINE}Définit le type de mise à l'échelle de l'interface graphique{NEWLINE}{NEWLINE}La mise à l'échelle est linéaire est lisse mais le résultat est flou. La mise à l'échelle en mode voisinage proche est précise mais peut causer un dégradement des performances mineure.
|
||||
STR_5818 :{SMALLFONT}{BLACK}[Requiert l'affichage matériel]{NEWLINE}Utilise l'échelle la plus proche quand le ratio de mise à l'échelle est un entier (1, 2, 3, etc.)
|
||||
STR_5819 :{SMALLFONT}{BLACK}[Requiert l'affichage matériel]{NEWLINE}Met le jeu en pause quand l'overlay Steam est ouvert
|
||||
STR_5820 :{SMALLFONT}{BLACK}Minimise le jeu si le focus est perdu en plein écran
|
||||
|
@ -4315,7 +4315,7 @@ STR_6002 :{SMALLFONT}{BLACK}Les lampes et attractions seront éclairées dura
|
|||
STR_6003 :Vue en coupe
|
||||
STR_6004 :Vue en coupe
|
||||
STR_6005 :Active la vue en coupe
|
||||
STR_6006 :{SMALLFONT}{BLACK}La vue en coupe affiche les éléments de la carte qui sont à la hauteur de coupe et en dessous.
|
||||
STR_6006 :{SMALLFONT}{BLACK}La vue en coupe affiche les éléments de la carte qui sont à la hauteur de coupe ou en dessous (coupe verticale) dans une zone sélectionnée (coupe horizontale).
|
||||
STR_6007 :Hauteur de coupe
|
||||
STR_6008 :{SMALLFONT}{BLACK}Cliquez pour permutter entre valeur explicite<->valeur mesurée
|
||||
STR_6009 :{SMALLFONT}{BLACK}Sélectionnez hauteur de coupe
|
||||
|
@ -4476,12 +4476,13 @@ STR_6160 :{WINDOW_COLOUR_2}Véhicules disponibles: {BLACK}{STRING}
|
|||
STR_6161 :Basculer les lignes de quadrillage
|
||||
STR_6162 :Souris folle tournante
|
||||
STR_6163 :Les voitures en forme de souris se faufilent dans les virages serrés et petites chutes en tournant doucement pour désorienter les passagers
|
||||
STR_6164 :{WHITE}{CROSS}
|
||||
STR_6165 :Utiliser la synchronisation verticale
|
||||
STR_6166 :{SMALLFONT}{BLACK}Synchronise chaque image affichée sur la fréquence de rafraîchissement du moniteur, ce qui empêche le déchirement de l'écran.
|
||||
STR_6167 :{SMALLFONT}{BLACK}Paramètres avancés
|
||||
STR_6168 :Séquence d'ouverture
|
||||
STR_6169 :Sélection de scénario
|
||||
STR_6170 :Ajustements
|
||||
STR_6170 :Ajustements de l'interface
|
||||
STR_6171 :Chercher
|
||||
STR_6172 :{SMALLFONT}{BLACK}Chercher
|
||||
STR_6173 :Veuillez indiquer le nom à rechercher:
|
||||
|
@ -4513,16 +4514,63 @@ STR_6198 :{BLACK}Journée:
|
|||
STR_6199 :Régler la date
|
||||
STR_6200 :Réinitialiser la date
|
||||
STR_6201 :{MONTH}
|
||||
STR_6202 :Activer le plancher virtuel
|
||||
STR_6202 :Style de plancher virtuel
|
||||
STR_6203 :{SMALLFONT}{BLACK}Lorsque cette option est activée, un étage virtuel est rendu quand Ctrl ou Shift est tenu pour faciliter le placement vertical des éléments.
|
||||
STR_6215 :Construction
|
||||
STR_6204 :Brique
|
||||
STR_6205 :Fer
|
||||
STR_6206 :Stuc gris
|
||||
STR_6207 :Stuc jaune
|
||||
STR_6208 :Stuc rouge
|
||||
STR_6209 :Stuc violet
|
||||
STR_6210 :Stuc vert
|
||||
STR_6211 :Pierre de sable marron
|
||||
STR_6212 :Pierre de sable gris
|
||||
STR_6213 :Gratte-ciel A
|
||||
STR_6214 :Gratte-ciel B
|
||||
STR_6216 :Opération
|
||||
STR_6217 :Attraction / disponibilité du piste
|
||||
STR_6218 :OpenRCT2 Officiel
|
||||
STR_6219 :Mettre en évidence les problèmes du chemin
|
||||
STR_6220 :Rendre utilisable
|
||||
STR_6221 :{SMALLFONT}{BLACK}Ceci définira l'emplacement d'entrée ou de sortie connu de la course sur la tuile actuellement sélectionnée. Un seul emplacement d'entrée et de sortie peut être rendu utilisable par station.
|
||||
|
||||
STR_6222 :Impossible de placer le point d'entrée des visiteurs ici...
|
||||
STR_6223 :Il doit être en dehors des limites du parc !
|
||||
STR_6224 :{STRING} a placé un point d'entrée du parc
|
||||
STR_6225 :N'est pas supporté avec le rendu OpenGL
|
||||
STR_6226 :Activer la complétion prématurée d'un scénario
|
||||
STR_6227 :{SMALLFONT}{BLACK}Enclenche la complétion d'un scénario quand tous les objectifs sont atteints avant la date limite.
|
||||
STR_6228 :Options du scénario
|
||||
STR_6229 :{WINDOW_COLOUR_2}{STRINGID} : {STRINGID}
|
||||
STR_6230 :{STRINGID} :
|
||||
STR_6231 :{WINDOW_COLOUR_2}{STRINGID} : {MOVE_X}{185}{STRINGID}
|
||||
STR_6232 :Immobile
|
||||
STR_6233 :Vue en coupe
|
||||
STR_6234 :Mettre en évidence les problèmes du chemin
|
||||
STR_6235 :Information du serveur
|
||||
STR_6236 :Joueurs
|
||||
STR_6237 :Groupes
|
||||
STR_6238 :Options multijoueurs
|
||||
STR_6239 :Coupe verticale
|
||||
STR_6240 :Coupe horizontale
|
||||
STR_6241 :Sélectionner zone
|
||||
STR_6242 :Effacer sélection
|
||||
STR_6243 :{SMALLFONT}{BLACK}Renouvelle l'attraction,{NEWLINE}comme si elle venait d'être construite
|
||||
STR_6244 :Impossible de renouveller l'attraction...
|
||||
STR_6245 :{SMALLFONT}{BLACK}Cette attraction n'a pas besoin d'un renouvellement
|
||||
STR_6246 :Renouveller
|
||||
STR_6247 :Renouvelle l'attraction
|
||||
STR_6248 :{WINDOW_COLOUR_1}Voulez-vous renouveller {STRINGID} pour {CURRENCY} ?
|
||||
STR_6249 :{WINDOW_COLOUR_1}Voulez-vous renouveller {STRINGID} ?
|
||||
STR_6250 :{WINDOW_COLOUR_1}Etes-vous sûr(e) de vouloir détruire complétement {STRINGID} et gagner {CURRENCY} ?
|
||||
STR_6251 :L'attraction n'est pas encore vide
|
||||
STR_6252 :Adresse vers l'intégration API Twitch
|
||||
STR_6253 :{SMALLFONT}{BLACK}Fournit l'adresse vers l'intégration API de Twitch. Requis pour activer les interactions Twitch.
|
||||
STR_6254 :Adresse URL de l'intégration API Twitch :
|
||||
STR_6255 :L'adresse est invalide
|
||||
STR_6256 :Effets de rendu
|
||||
STR_6257 :Verre (transparent)
|
||||
STR_6258 :Net (transparent)
|
||||
STR_6259 :Désactivé
|
||||
|
||||
|
||||
#############
|
||||
|
@ -4966,13 +5014,3 @@ STR_DTLS :
|
|||
STR_SCNR :Fort Anachronisme
|
||||
STR_PARK :Fort Anachronisme
|
||||
STR_DTLS :
|
||||
|
||||
#####################
|
||||
# Rides/attractions #
|
||||
#####################
|
||||
|
||||
#WW
|
||||
[CONDORRD]
|
||||
STR_NAME :Le condor
|
||||
STR_DESC :Les passagers sont couchés à plat ventre dans une voiture en forme de condor se déplaçant sur un monorail et se balançant d'un côté à l'autre dans les virages
|
||||
STR_CPTY :4 passagers par voiture
|
||||
|
|
|
@ -1057,8 +1057,8 @@ STR_1214 :{SMALLFONT}{BLACK}Scegli il tempo di attesa massimo prima di partir
|
|||
STR_1215 :{WINDOW_COLOUR_2}Sincron. con le stazioni adiacenti
|
||||
STR_1216 :{SMALLFONT}{BLACK}Scegli se sincronizzare la partenza con le stazioni adiacenti (per le 'corse')
|
||||
STR_1217 :{COMMA16} secondi
|
||||
STR_1218 :{BLACK}{SMALLUP}
|
||||
STR_1219 :{BLACK}{SMALLDOWN}
|
||||
STR_1218 :{BLACK}+
|
||||
STR_1219 :{BLACK}-
|
||||
STR_1220 :Solo uscita
|
||||
STR_1221 :Nessuna entrata
|
||||
STR_1222 :Nessuna uscita
|
||||
|
@ -1614,8 +1614,8 @@ STR_1771 :{POP16}{POP16}{POP16}{POP16}{POP16}{POP16}{POP16}{POP16}{POP16}{COM
|
|||
STR_1772 :{COMMA16}
|
||||
STR_1773 :Può esserci soltanto una sezione di foto-in-corsa per attrazione
|
||||
STR_1774 :Può esserci soltanto una salita per il traino con cavo per attrazione
|
||||
STR_1775 :Off
|
||||
STR_1776 :On
|
||||
STR_1775 :<removed string - do not use>
|
||||
STR_1776 :<removed string - do not use>
|
||||
STR_1777 :{WINDOW_COLOUR_2}Musica
|
||||
STR_1778 :{STRINGID} - -
|
||||
STR_1779 :{INLINE_SPRITE}{254}{19}{00}{00} Costume da panda
|
||||
|
@ -3354,8 +3354,8 @@ STR_5232 :{SMALLFONT}{BLACK}Editor
|
|||
STR_5233 :{SMALLFONT}{BLACK}Altro
|
||||
STR_5234 :{SMALLFONT}{BLACK}Conferme
|
||||
STR_5235 :{SMALLFONT}{BLACK}Impostazioni
|
||||
STR_5236 :Finestra:
|
||||
STR_5237 :Tavolozza:
|
||||
STR_5236 :Finestra
|
||||
STR_5237 :Tavolozza
|
||||
STR_5238 :Tema attuale:
|
||||
STR_5239 :Duplica
|
||||
STR_5240 :Inserire un nome per il tema
|
||||
|
@ -3614,8 +3614,8 @@ STR_5491 :Lista Invenzioni
|
|||
STR_5492 :Opzioni Scenario
|
||||
STR_5493 :Mostra Messaggio
|
||||
STR_5495 :Lista Giocatore
|
||||
STR_5496 :Giocatore:
|
||||
STR_5497 :Ping:
|
||||
STR_5496 :Giocatore
|
||||
STR_5497 :Ping
|
||||
STR_5498 :Lista Server
|
||||
STR_5499 :Nome Giocatore:
|
||||
STR_5500 :Aggiungi Server
|
||||
|
@ -3759,7 +3759,7 @@ STR_5638 :Permesso negato
|
|||
STR_5639 :{SMALLFONT}{BLACK}Mostra lista dei giocatori
|
||||
STR_5640 :{SMALLFONT}{BLACK}Gestisci gruppo
|
||||
STR_5641 :Gruppo predefinito:
|
||||
STR_5642 :Gruppo:
|
||||
STR_5642 :Gruppo
|
||||
STR_5643 :Aggiungi gruppo
|
||||
STR_5644 :Rimuovi gruppo
|
||||
STR_5645 :Chat
|
||||
|
@ -3787,7 +3787,7 @@ STR_5666 :Accesso senza password
|
|||
STR_5701 :{WINDOW_COLOUR_2}Ultima azione: {BLACK}{STRINGID}
|
||||
STR_5702 :{SMALLFONT}{BLACK}Localizza l'ultima azione del giocatore
|
||||
STR_5703 :Non è possibile rimuovere l'host
|
||||
STR_5704 :Ultima azione:
|
||||
STR_5704 :Ultima azione
|
||||
STR_5705 :Non è possibile impostarlo a questo gruppo
|
||||
STR_5706 :Non è possibile rimuovere un gruppo che contiene giocatori
|
||||
STR_5707 :Questo gruppo non può essere modificato
|
||||
|
@ -4083,10 +4083,10 @@ STR_5999 :Imposta denaro
|
|||
STR_6000 :Inserire il nuovo valore
|
||||
STR_6001 :Attiva effetti luce (sperimentale)
|
||||
STR_6002 :{SMALLFONT}{BLACK}Le attrazioni e i lampioni saranno illuminati di notte. Richiede il motore di rendering hardware.
|
||||
STR_6003 :Vista sezionata
|
||||
STR_6004 :Vista sezionata
|
||||
STR_6005 :Attiva la vista sezionata
|
||||
STR_6006 :{SMALLFONT}{BLACK}La vista sezionata mostra solo elementi della mappa pari o inferiori all'altezza specificata
|
||||
STR_6003 :Visualizzazione ritagliata
|
||||
STR_6004 :Visualizzazione ritagliata
|
||||
STR_6005 :Attiva la visualizzazione ritagliata
|
||||
STR_6006 :{SMALLFONT}{BLACK}La visualizzazione ritagliata mostra solo gli elementi della mappa che si trovano pari o sotto all'altezza specificata (ritaglio verticale) e nell'area selezionata (ritaglio orizzontale).
|
||||
STR_6007 :Altezza sezionamento
|
||||
STR_6008 :{SMALLFONT}{BLACK}Cliccare per cambiare tra valore grezzo e unità di misura
|
||||
STR_6009 :{SMALLFONT}{BLACK}Selezionare altezza sezionamento
|
||||
|
@ -4250,7 +4250,7 @@ STR_6166 :{SMALLFONT}{BLACK}Sincronizza i frame alla frequenza di aggiornamen
|
|||
STR_6167 :{SMALLFONT}{BLACK}Avanzate
|
||||
STR_6168 :Sequenza del titolo
|
||||
STR_6169 :Selezione scenario
|
||||
STR_6170 :Modifiche
|
||||
STR_6170 :Personalizzazione interfaccia
|
||||
STR_6171 :Cerca
|
||||
STR_6172 :{SMALLFONT}{BLACK}Cerca
|
||||
STR_6173 :Digitare il nome da cercare:
|
||||
|
@ -4306,6 +4306,23 @@ STR_6222 :Impossibile piazzare qui il punto di apparizione dei visitatori...
|
|||
STR_6223 :Deve trovarsi all'esterno del confine del parco!
|
||||
STR_6224 :{STRING} ha piazzato un punto di apparizione dei visitatori.
|
||||
STR_6225 :Non supportato con il rendering OpenGL
|
||||
STR_6226 :Attiva completamento anticipato dello scenario
|
||||
STR_6227 :{SMALLFONT}{BLACK}Completa lo scenario non appena tutti gli obiettivi sono raggiunti, prima della data di scadenza.
|
||||
STR_6228 :Opzioni scenario
|
||||
STR_6229 :{WINDOW_COLOUR_2}{STRINGID}: {STRINGID}
|
||||
STR_6230 :{STRINGID}:
|
||||
STR_6231 :{WINDOW_COLOUR_2}{STRINGID}: {MOVE_X}{185}{STRINGID}
|
||||
STR_6232 :Immobile
|
||||
STR_6233 :Visualizzazione spaccato
|
||||
STR_6234 :Evidenzia problemi nei sentieri
|
||||
STR_6235 :Informazioni server
|
||||
STR_6236 :Giocatori
|
||||
STR_6237 :Gruppi
|
||||
STR_6238 :Opzioni multigiocatore
|
||||
STR_6239 :Ritaglio verticale
|
||||
STR_6240 :Ritaglio orizzontale
|
||||
STR_6241 :Seleziona area
|
||||
STR_6242 :Annulla selezione
|
||||
|
||||
#############
|
||||
# Scenarios #
|
||||
|
@ -4748,13 +4765,3 @@ STR_DTLS :
|
|||
STR_SCNR :Fort Anachronism
|
||||
STR_PARK :Fort Anachronism
|
||||
STR_DTLS :
|
||||
|
||||
#####################
|
||||
# Rides/attractions #
|
||||
#####################
|
||||
|
||||
#WW
|
||||
[CONDORRD]
|
||||
STR_NAME :Condor Ride
|
||||
STR_DESC :Guidando in speciali carrelli sotto la pista, i piloti sperimentano la sensazione di volo mentre prendono aria nei treni Condor
|
||||
STR_CPTY :4 passeggeri per carrozza
|
||||
|
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -1220,8 +1220,8 @@ STR_1214 :{SMALLFONT}{BLACK}Velg største tid å vente før avgang
|
|||
STR_1215 :{WINDOW_COLOUR_2}Synkroniser med stasjonen ved siden av
|
||||
STR_1216 :{SMALLFONT}{BLACK}Velg om avgang skal synkroniseres for alle tilliggende stasjoner (for 'løp')
|
||||
STR_1217 :{COMMA16} sekunder
|
||||
STR_1218 :{BLACK}{SMALLUP}
|
||||
STR_1219 :{BLACK}{SMALLDOWN}
|
||||
STR_1218 :{BLACK}+
|
||||
STR_1219 :{BLACK}-
|
||||
STR_1220 :Kun utgang
|
||||
STR_1221 :Ingen inngang
|
||||
STR_1222 :Ingen utgang
|
||||
|
@ -2873,7 +2873,7 @@ STR_2862 :Music acknowledgements...
|
|||
STR_2863 :Music acknowledgements
|
||||
STR_2864 :{WINDOW_COLOUR_2}March - Children of the Regiment: (Fucik) non copyright
|
||||
STR_2865 :{WINDOW_COLOUR_2}Heyken's Serenade: (J.Heyken) British Standard Music Coy; GEMA, BRITICO
|
||||
STR_2866 :{WINDOW_COLOUR_2}In Continental Mood: (Composer unknown) Copyright Control
|
||||
STR_2866 :{WINDOW_COLOUR_2}La Belle Espagnole: (Robert Vollstedt) ingen opphavsrett
|
||||
STR_2867 :{WINDOW_COLOUR_2}Wedding Journey: (Traditional)
|
||||
STR_2868 :{WINDOW_COLOUR_2}Tales from the Vienna Woods: (Johann Strauss) non copyright
|
||||
STR_2869 :{WINDOW_COLOUR_2}Slavonic Dance: (Traditional)
|
||||
|
@ -3968,7 +3968,7 @@ STR_5626 :Other Parks
|
|||
STR_5627 :Group scenario list by:
|
||||
STR_5628 :Source game
|
||||
STR_5629 :Difficulty level
|
||||
STR_5630 :Enable unlocking of scenarios
|
||||
STR_5630 :Skru på progressiv opplåsing
|
||||
STR_5631 :Original DLC Parks
|
||||
STR_5632 :Build your own...
|
||||
STR_5633 :CMD +
|
||||
|
@ -4032,13 +4032,13 @@ STR_5723 :Heavy Rain
|
|||
STR_5724 :Thunderstorm
|
||||
STR_5725 :{BLACK}Force weather:
|
||||
STR_5726 :{SMALLFONT}{BLACK}Sets the current weather in park
|
||||
STR_5727 :Scaling quality
|
||||
STR_5727 :Skaleringskvalitet:
|
||||
STR_5728 :Requires hardware display option
|
||||
STR_5729 :{SMALLFONT}{BLACK}Requires hardware display option
|
||||
STR_5730 :Nearest neighbour
|
||||
STR_5730 :<removed string - do not use>
|
||||
STR_5731 :Linear
|
||||
STR_5732 :Anisotropic
|
||||
STR_5733 :Use NN scaling at integer scales
|
||||
STR_5732 :<removed string - do not use>
|
||||
STR_5733 :<removed string - do not use>
|
||||
# tooltip for tab in options window
|
||||
STR_5734 :{SMALLFONT}{BLACK}Rendering
|
||||
STR_5735 :Network Status
|
||||
|
@ -4125,8 +4125,8 @@ STR_5814 :{WINDOW_COLOUR_1}{OPENQUOTES}{STRING}{ENDQUOTES}
|
|||
#tooltips
|
||||
STR_5815 :{SMALLFONT}{BLACK}Display FPS counter in-game
|
||||
STR_5816 :{SMALLFONT}{BLACK}Sets ratio to scale the game by.{NEWLINE}Most useful when playing in{NEWLINE}high resolutions
|
||||
STR_5817 :{SMALLFONT}{BLACK}[Requires hardware display]{NEWLINE}Sets UI scaling type
|
||||
STR_5818 :{SMALLFONT}{BLACK}[Requires hardware display]{NEWLINE}Use nearest neighbour scaling{NEWLINE}when window scaling factor set{NEWLINE}to integer values (1, 2, 3, etc)
|
||||
STR_5817 :{SMALLFONT}{BLACK}Setter skaleringsmetode for brukergrensesnitt. Krever hardware rendering.{NEWLINE}Lineær skalering er jevn, men utydelig. 'Jevn nærmeste-nabo'-skalering er skarp, men er mer krevende.
|
||||
STR_5818 :<removed string - do not use>
|
||||
STR_5819 :{SMALLFONT}{BLACK}[Requires hardware display]{NEWLINE}Pause the game if Steam{NEWLINE}in-game overlay is opened
|
||||
STR_5820 :{SMALLFONT}{BLACK}Minimise the game if focus is{NEWLINE}lost while in fullscreen mode
|
||||
STR_5821 :<removed string - do not use>
|
||||
|
@ -4151,7 +4151,7 @@ STR_5839 :{SMALLFONT}{BLACK}Show a separate button for the research and devel
|
|||
STR_5840 :{SMALLFONT}{BLACK}Show a separate button for the cheats window in the toolbar
|
||||
STR_5841 :{SMALLFONT}{BLACK}Show a separate button for the recent news window in the toolbar
|
||||
STR_5842 :{SMALLFONT}{BLACK}Sort scenarios into tabs by their difficulty (RCT2 behaviour) or their source game (RCT1 behaviour)
|
||||
STR_5843 :{SMALLFONT}{BLACK}Enable scenario unlocking (RCT1 behaviour)
|
||||
STR_5843 :{SMALLFONT}{BLACK}Scenarier blir låst opp etterhvert som du fullfører dem (som i RCT1)
|
||||
STR_5844 :{SMALLFONT}{BLACK}Stay connected to a multiplayer server{NEWLINE}even if a desync or error occurs
|
||||
STR_5845 :{SMALLFONT}{BLACK}Adds a button for{NEWLINE}debugging tools to the toolbar.{NEWLINE}Enables keyboard shortcut for developer console
|
||||
STR_5846 :{SMALLFONT}{BLACK}Set often OpenRCT2 automatically saves
|
||||
|
@ -4468,6 +4468,30 @@ STR_6154 :Det er ikke anbefalt å kjøre OpenRCT2 med opphøyde brukerrettigh
|
|||
STR_6155 :Hverken KDialog eller Zenity er installert. Installer en av dem, eller konfigurer fra kommandolinjen.
|
||||
STR_6156 :Reservert navn
|
||||
STR_6157 :Kommandolinje
|
||||
STR_6158 :Kunne ikke laste inn fil...{NEWLINE}RCTC-versjon {COMMA16} er ikke kompatibel.
|
||||
STR_6159 :Jevn nærmeste-nabo
|
||||
STR_6160 :{WINDOW_COLOUR_2}Tilgjengelige kjøretøy: {BLACK}{STRING}
|
||||
STR_6161 :Vis/skjul rutemønster i landskap
|
||||
STR_6162 :Spinnende ville mus
|
||||
STR_6163 :Museformede vogner suser gjennom skarpe svinger og små fall mens de sakte spinner for å desorientere passasjerene
|
||||
STR_6164 :{WHITE}{CROSS}
|
||||
STR_6165 :Bruk Vertical Sync
|
||||
STR_6166 :{SMALLFONT}{BLACK}Synkroniserer visning av bilder med skjermens oppdateringsfrekvens; forhindrer "screen tearing".
|
||||
STR_6167 :{SMALLFONT}{BLACK}Avansert
|
||||
STR_6168 :Tittelsekvens
|
||||
STR_6169 :Scenariovalg
|
||||
STR_6170 :Tilpass brukergrensesnitt
|
||||
STR_6171 :Søk
|
||||
STR_6172 :{SMALLFONT}{BLACK}Søk
|
||||
STR_6173 :Skriv inn navnet du ønsker å søke etter:
|
||||
STR_6174 :Last inn lagret spill
|
||||
STR_6175 :Last inn scenario
|
||||
STR_6176 :Scenario å laste:
|
||||
STR_6177 :Load{MOVE_X}{87}Ingen scenario valgt
|
||||
STR_6178 :Load{MOVE_X}{87}{RED}Mangler scenario
|
||||
STR_6179 :Velg
|
||||
STR_6180 :Ingen scenario valgt
|
||||
STR_6181 :{RED}Mangler scenario
|
||||
|
||||
#############
|
||||
# Scenarios #
|
||||
|
@ -4911,12 +4935,3 @@ STR_SCNR :Fort Anachronism
|
|||
STR_PARK :Fort Anachronism
|
||||
STR_DTLS :
|
||||
|
||||
#####################
|
||||
# Rides/attractions #
|
||||
#####################
|
||||
|
||||
#WW
|
||||
[CONDORRD]
|
||||
STR_NAME :Condor Ride
|
||||
STR_DESC :Riding in special harnesses below the track, riders experience the feeling of flight as they swoop through the air in Condor-shaped trains
|
||||
STR_CPTY :4 passengers per car
|
||||
|
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -1220,8 +1220,8 @@ STR_1214 :{SMALLFONT}{BLACK}Selecione o tempo máximo de espera antes de sair
|
|||
STR_1215 :{WINDOW_COLOUR_2}Sincronizar com estações adjacentes
|
||||
STR_1216 :{SMALLFONT}{BLACK}Selecione para sincronizar saída com todas estações adjacentes (para corrida)
|
||||
STR_1217 :{COMMA16} segundos
|
||||
STR_1218 :{BLACK}{SMALLUP}
|
||||
STR_1219 :{BLACK}{SMALLDOWN}
|
||||
STR_1218 :{BLACK}+
|
||||
STR_1219 :{BLACK}-
|
||||
STR_1220 :Somente Saída
|
||||
STR_1221 :Sem entrada
|
||||
STR_1222 :Sem saída
|
||||
|
@ -2907,7 +2907,7 @@ STR_2896 :{WINDOW_COLOUR_2}Hypothermia: (Allister Brimble) direitos autorai
|
|||
STR_2897 :{WINDOW_COLOUR_2}Last Sleigh Ride: (Allister Brimble) direitos autorais {COPYRIGHT} Chris Sawyer
|
||||
STR_2898 :{WINDOW_COLOUR_2}Pipes of Glencairn: (Allister Brimble) direitos autorais {COPYRIGHT} Chris Sawyer
|
||||
STR_2899 :{WINDOW_COLOUR_2}Traffic Jam: (Allister Brimble) direitos autorais {COPYRIGHT} Chris Sawyer
|
||||
STR_2900 :{WINDOW_COLOUR_2}
|
||||
STR_2900 :<removed string - do not use>
|
||||
STR_2901 :{WINDOW_COLOUR_2}(Amostras Grátis de Spectrasonics {ENDQUOTES}Liquid Grooves{ENDQUOTES})
|
||||
STR_2902 :{WINDOW_COLOUR_2}Toccata: (C.M.Widor, played by Peter James Adcock) recording {COPYRIGHT} Chris Sawyer
|
||||
STR_2903 :{WINDOW_COLOUR_2}Space Rock: (Allister Brimble) direitos autorais {COPYRIGHT} Chris Sawyer
|
||||
|
@ -3572,8 +3572,8 @@ STR_5232 :{SMALLFONT}{BLACK}Editores
|
|||
STR_5233 :{SMALLFONT}{BLACK}Variados
|
||||
STR_5234 :{SMALLFONT}{BLACK}Pop-ups
|
||||
STR_5235 :{SMALLFONT}{BLACK}Configurações
|
||||
STR_5236 :Janela:
|
||||
STR_5237 :Paleta:
|
||||
STR_5236 :Janela
|
||||
STR_5237 :Paleta
|
||||
STR_5238 :Tema Atual:
|
||||
STR_5239 :Duplicar
|
||||
STR_5240 :Insira um nome para o tema
|
||||
|
@ -3832,8 +3832,8 @@ STR_5492 :Opções de cenário
|
|||
STR_5493 :Enviar Mensagem
|
||||
STR_5494 :<removed string - do not use>
|
||||
STR_5495 :Lista de Jogadores
|
||||
STR_5496 :Jogador:
|
||||
STR_5497 :Ping:
|
||||
STR_5496 :Jogador
|
||||
STR_5497 :Ping
|
||||
STR_5498 :Lista de Servidores
|
||||
STR_5499 :Nome do Jogador:
|
||||
STR_5500 :Adicionar Servidor
|
||||
|
@ -3978,7 +3978,7 @@ STR_5638 :Permissão negada
|
|||
STR_5639 :{SMALLFONT}{BLACK}Mostrar lista de jogadores
|
||||
STR_5640 :{SMALLFONT}{BLACK}Gerenciar grupos
|
||||
STR_5641 :Grupo Padrão:
|
||||
STR_5642 :Grupo:
|
||||
STR_5642 :Grupo
|
||||
STR_5643 :Adicionar Grupo
|
||||
STR_5644 :Remover Grupo
|
||||
STR_5645 :Bate-Papo
|
||||
|
@ -4006,7 +4006,7 @@ STR_5666 :Login sem senha
|
|||
STR_5701 :{WINDOW_COLOUR_2}Última ação: {BLACK}{STRINGID}
|
||||
STR_5702 :{SMALLFONT}{BLACK}Localizar ação mais recente do jogador
|
||||
STR_5703 :Não é possível expulsar o anfitrião
|
||||
STR_5704 :Última Ação:
|
||||
STR_5704 :Última Ação
|
||||
STR_5705 :Impossível definir para este grupo
|
||||
STR_5706 :Impossível remover grupo que os jogadores pertencem
|
||||
STR_5707 :Este grupo não pode ser modificado
|
||||
|
@ -4460,7 +4460,7 @@ STR_6150 :Resposta inválida do servidor principal (sem número JSON)
|
|||
STR_6151 :Servidor principal falhou ao retornar servidores
|
||||
STR_6152 :Resposta inválida do servidor principal (sem matriz JSON)
|
||||
STR_6153 :Entrada paga / Brinquedos pagos
|
||||
STR_6154 :Não é recomendado rodar o OpenRCT2 com permissões elevadas.
|
||||
STR_6154 :Por motivos de segurança, não é recomendado rodar o OpenRCT2 com permissões elevadas.
|
||||
STR_6155 :Nem KDialog ou Zenity estão instalados. Por favor instale um, ou configure pela linha de comando.
|
||||
STR_6156 :Nome está reservado
|
||||
STR_6157 :Console
|
||||
|
@ -4476,7 +4476,7 @@ STR_6166 :{SMALLFONT}{BLACK}Sincroniza cada quadro mostrado com a taxa de atu
|
|||
STR_6167 :{SMALLFONT}{BLACK}Avançado
|
||||
STR_6168 :Sequência de Título
|
||||
STR_6169 :Seleção de Cenários
|
||||
STR_6170 :Melhoras
|
||||
STR_6170 :Melhoras de Interface
|
||||
STR_6171 :Procurar
|
||||
STR_6172 :{SMALLFONT}{BLACK}Procura
|
||||
STR_6173 :Por favor forneça um nome para pesquisar:
|
||||
|
@ -4531,6 +4531,20 @@ STR_6221 :{SMALLFONT}{BLACK}Isto irá definir a localização da entrada ou s
|
|||
STR_6222 :Impossível colocar gerador de visitantes aqui...
|
||||
STR_6223 :Deve ficar fora das barreiras do parque!
|
||||
STR_6224 :{STRING} colocou um gerador de visitantes.
|
||||
STR_6225 :Não suportado com renderizador OpenGL
|
||||
STR_6226 :Habilitar conclusão antecipada de cenário
|
||||
STR_6227 :{SMALLFONT}{BLACK}Ativa a conclusão do cenário quando todos os objetivos são alcançados antes da data prevista.
|
||||
STR_6228 :Opções de Cenário
|
||||
STR_6229 :{WINDOW_COLOUR_2}{STRINGID}: {STRINGID}
|
||||
STR_6230 :{STRINGID}:
|
||||
STR_6231 :{WINDOW_COLOUR_2}{STRINGID}: {MOVE_X}{185}{STRINGID}
|
||||
STR_6232 :Congelado
|
||||
STR_6233 :Vista em corte
|
||||
STR_6234 :Destacar problemas nos caminhos
|
||||
STR_6235 :Informação do Servidor
|
||||
STR_6236 :Jogadores
|
||||
STR_6237 :Grupos
|
||||
STR_6238 :Opções de Multiplayer
|
||||
|
||||
#############
|
||||
# Scenarios #
|
||||
|
@ -4974,403 +4988,6 @@ STR_SCNR :Fort Anachronism
|
|||
STR_PARK :Fort Anachronism
|
||||
STR_DTLS :
|
||||
|
||||
#####################
|
||||
# Rides/attractions #
|
||||
#####################
|
||||
|
||||
#RCT2
|
||||
[TOPSP1]
|
||||
STR_NAME :Top Spin
|
||||
STR_DESC :Passageiros brincam numa gôndola suspensa por grandes braços rotatórios, rodando de pernas para o ar para frente e para trás
|
||||
STR_CPTY :8 passageiros
|
||||
|
||||
[BMSD]
|
||||
STR_NAME :Trens Tornado
|
||||
STR_DESC :Um trem espaçoso com travas de ombro
|
||||
|
||||
[BMSU]
|
||||
STR_NAME :Trens Tornado em Pé
|
||||
STR_DESC :Um trem com travas de ombro, onde passageiros passeiam em pé
|
||||
|
||||
[BMFL]
|
||||
STR_NAME :Trens Tornado sem chão
|
||||
STR_DESC :Um trem espaçoso com travas de ombro e sem chão, deixando o passeio mais emocionante
|
||||
|
||||
[WMMINE]
|
||||
STR_NAME :Carros de Mina
|
||||
STR_DESC :Carros moldados como um carro antigo de mina
|
||||
|
||||
[WMOUSE]
|
||||
STR_NAME :Carros de Rato
|
||||
STR_DESC :Carros individuais moldados como um rato
|
||||
|
||||
[STEEP1]
|
||||
STR_NAME :Cavalos
|
||||
STR_DESC :Carros únicos moldados como um cavalo
|
||||
|
||||
[STEEP2]
|
||||
STR_NAME :Motos
|
||||
STR_DESC :Carros únicos moldados como motos
|
||||
|
||||
[SBOX]
|
||||
STR_NAME :Caixas de Sabão
|
||||
STR_DESC :Carros únicos moldados como caixas de sabão
|
||||
|
||||
[BOB1]
|
||||
STR_NAME :Trens Bobsleigh
|
||||
STR_DESC :Um trem com carros de 2 assentos onde os passageiros sentam um atrás do outro
|
||||
|
||||
[INTBOB]
|
||||
STR_NAME :Trens Bobsleigh (6 assentos)
|
||||
STR_DESC :Bobsleighs com assentos de 3 fileiras, com espaço para duas pessoas em cada
|
||||
|
||||
[LIFT1]
|
||||
STR_NAME :Cabine do Elevador
|
||||
STR_DESC :Cabine de aço do elevador
|
||||
|
||||
[ARRT1]
|
||||
STR_NAME :Trens Montanha-Russa Saca Rolhas
|
||||
STR_DESC :Trens de montanha-russa com travas de ombro
|
||||
|
||||
[ARRT2]
|
||||
STR_NAME :Trens Hiper-montanha
|
||||
STR_DESC :Trens confortáveis apenas com travas de colo
|
||||
|
||||
[MONBK]
|
||||
STR_NAME :Bicicletas
|
||||
|
||||
[OBS1]
|
||||
STR_NAME :Cabine Plataforma única
|
||||
|
||||
[OBS2]
|
||||
STR_NAME :Cabine Plataforma dupla
|
||||
|
||||
[GTC]
|
||||
STR_NAME :Carros Trem Fantasma
|
||||
|
||||
[HMCAR]
|
||||
STR_NAME :Carros Mansão Assombrada
|
||||
|
||||
[VREEL]
|
||||
STR_NAME :Toneis Virginia Reel
|
||||
|
||||
[WMSPIN]
|
||||
STR_NAME :Carros Rato Giratório
|
||||
|
||||
[AMT1]
|
||||
STR_NAME :Trens de Mina
|
||||
|
||||
[SLCT]
|
||||
STR_NAME :Trens Montanha Invertida Compacta
|
||||
|
||||
[SLCFO]
|
||||
STR_NAME :Carros Face-off
|
||||
|
||||
[VEKDV]
|
||||
STR_NAME :Carros Vai-e-vem Vertical
|
||||
|
||||
[THCAR]
|
||||
STR_NAME :Trens Montanha Vertical de Propulsão Hidráulica
|
||||
|
||||
[SSC1]
|
||||
STR_NAME :Carro Queda Livre Lançada
|
||||
|
||||
[DING1]
|
||||
STR_NAME :Dinghies
|
||||
|
||||
[LFB1]
|
||||
STR_NAME :Troncos
|
||||
|
||||
[RFTBOAT]
|
||||
STR_NAME :Jangadas
|
||||
|
||||
[IVMC1]
|
||||
STR_NAME :Carros com 4 assentos
|
||||
|
||||
[SPDRCR]
|
||||
STR_NAME :Trens Montanha-Russa Espiral
|
||||
|
||||
[TOGST]
|
||||
STR_NAME :Trens Montanha-Russa em Pé
|
||||
|
||||
[PREMT1]
|
||||
STR_NAME :Trens Montanh-Russa de Indução Linear
|
||||
|
||||
[PMT1]
|
||||
STR_NAME :Trens de Mina Motorizados
|
||||
|
||||
[BMAIR]
|
||||
STR_NAME :Trens Montanha-Russa Voadora
|
||||
|
||||
[INTINV]
|
||||
STR_NAME :Trens Impulso
|
||||
|
||||
[INTST]
|
||||
STR_NAME :Trens Giga-Montanha
|
||||
|
||||
[NEMT]
|
||||
STR_NAME :Trens Montanha-Russa Invertida (4 assentos)
|
||||
|
||||
[VEKST]
|
||||
STR_NAME :Trens Montanha-Russa Deitada
|
||||
|
||||
[REVCAR]
|
||||
STR_NAME :Carros Reversos
|
||||
STR_DESC :Carros Truque capaz de virar em torno de si em seções de reversão especiais
|
||||
|
||||
[SKYTR]
|
||||
STR_NAME :Carros Deitados
|
||||
|
||||
[BMVD]
|
||||
STR_NAME :Trens Tornado (6 assentos)
|
||||
|
||||
[SUBMAR]
|
||||
STR_NAME :Submarinos
|
||||
|
||||
#WW
|
||||
[CONDORRD]
|
||||
STR_NAME :Condor
|
||||
STR_DESC :Montando em travas especiais sob a pista, os passageiros experimentarão a sensação de voar pelo ar em uma estrutura na forma de Condor
|
||||
STR_CPTY :4 passageiros por carro
|
||||
|
||||
#WW
|
||||
[CONGAEEL]
|
||||
STR_NAME :Montanha-Russa Enguia Conger
|
||||
STR_DESC :Uma montanha russa de aço compacta onde trens com formato de enguia viajam por parafusos e loops
|
||||
STR_CPTY :4 passageiros por carro
|
||||
|
||||
#WW
|
||||
[MINELIFT]
|
||||
STR_NAME :Cabine de Elevador de Mina
|
||||
STR_DESC :Uma cabine de aço de elevator comumente usado em minas
|
||||
|
||||
#WW
|
||||
[ANACONDA]
|
||||
STR_NAME :Trens Anaconda
|
||||
|
||||
#WW
|
||||
[CROCFLUM]
|
||||
STR_NAME :Barcos Crocodilo
|
||||
|
||||
#WW
|
||||
[WHICGRUB]
|
||||
STR_NAME :Trens Larvas Comestíveis
|
||||
|
||||
#WW
|
||||
[GRATWHTE]
|
||||
STR_NAME :Trens Grande Tubarão Branco
|
||||
STR_DESC :Trens com travas de ombro, moldados como um Grande Tubarão Branco
|
||||
|
||||
#WW
|
||||
[BOMERANG]
|
||||
STR_NAME :Trens Bumerangue
|
||||
|
||||
#WW
|
||||
[KOLARIDE]
|
||||
STR_NAME :Carro Coala
|
||||
|
||||
#WW
|
||||
[MANTARAY]
|
||||
STR_NAME :Barcos Arraia Manta
|
||||
STR_DESC :Barcos de montanha-russa em formato de uma Arraia Manta
|
||||
|
||||
#WW
|
||||
[TUTLBOAT]
|
||||
STR_NAME :Barcos Tartaruga
|
||||
|
||||
#WW, for the Wooden RC
|
||||
[MINECART]
|
||||
STR_NAME :Trens Carro de Mina
|
||||
|
||||
#WW
|
||||
[LIONRIDE]
|
||||
STR_NAME :Carros Leão
|
||||
|
||||
#WW
|
||||
[RHINORID]
|
||||
STR_NAME :Trens Rinocerontes
|
||||
|
||||
#WW
|
||||
[OSTRICH]
|
||||
STR_NAME :Trens Avestruz
|
||||
|
||||
#WW
|
||||
[GORILLA]
|
||||
STR_NAME :Trens Gorila
|
||||
|
||||
#WW
|
||||
[FOOTBALL]
|
||||
STR_NAME :Trens Bola de Futebol
|
||||
|
||||
#WW
|
||||
[TIGRTWST]
|
||||
STR_NAME :Carros Tigre-de-Bengala
|
||||
|
||||
#WW
|
||||
[TAXICSTR]
|
||||
STR_NAME :Trens Taxi Amarelo
|
||||
|
||||
#WW
|
||||
[OUTRIGGR]
|
||||
STR_NAME :Canoas Polinésia
|
||||
|
||||
#WW
|
||||
[SANFTRAM]
|
||||
STR_NAME :Bonde São Francisco
|
||||
|
||||
#WW
|
||||
[PENGUINB]
|
||||
STR_NAME :Trens Penguim
|
||||
|
||||
#WW
|
||||
[POLARBER]
|
||||
STR_NAME :Trens Urso Polar
|
||||
|
||||
#WW
|
||||
[LONDONBS]
|
||||
STR_NAME :Ônibus Routemaster
|
||||
STR_DESC :Replicas do famoso ônibus Routemaster de Londres
|
||||
|
||||
#WW
|
||||
[BLACKCAB]
|
||||
STR_NAME :Taxis Pretos
|
||||
|
||||
#WW
|
||||
[TGVTRAIN]
|
||||
STR_NAME :Trens TGV
|
||||
|
||||
#WW
|
||||
[ROCKET]
|
||||
STR_NAME :Foguetes de 1950
|
||||
|
||||
#WW
|
||||
[SPUTNIKR]
|
||||
STR_NAME :Carros Sputnik
|
||||
|
||||
#WW
|
||||
[DHOWWATR]
|
||||
STR_NAME :Barcos Veleiros
|
||||
|
||||
#WW
|
||||
[SURFBRDC]
|
||||
STR_NAME :Trens Surfing
|
||||
|
||||
#WW
|
||||
[KILLWHAL]
|
||||
STR_NAME :Submarinos Baleia Assassina
|
||||
|
||||
#WW
|
||||
[HIPPORID]
|
||||
STR_NAME :Submarinos Hipopótamo
|
||||
|
||||
#WW
|
||||
[DOLPHINR]
|
||||
STR_NAME :Barcos Golfinho
|
||||
|
||||
#WW
|
||||
[MANDARIN]
|
||||
STR_NAME :Barcos Pato-mandarim
|
||||
STR_DESC :Barco no formato de pato, movidos pelo pedalar dos passageiros da frente
|
||||
|
||||
#TT
|
||||
[BATTRRAM]
|
||||
STR_NAME :Trens Aríete
|
||||
|
||||
#TT
|
||||
[BLCKDETH]
|
||||
STR_NAME :Trens Peste Negra
|
||||
|
||||
#TT
|
||||
[JOUSTING]
|
||||
STR_NAME :Cavaleiros de Competição
|
||||
|
||||
#TT
|
||||
[OAKBAREL]
|
||||
STR_NAME :Barris de Carvalho
|
||||
|
||||
#TT
|
||||
[STAMPHRD]
|
||||
STR_NAME :Trens Rebanho de Estamparia
|
||||
|
||||
#TT
|
||||
[DRAGNFLY]
|
||||
STR_NAME :Carros Libélula
|
||||
|
||||
#TT
|
||||
[PTERODAC]
|
||||
STR_NAME :Trens Pterodáctilo
|
||||
|
||||
#TT
|
||||
[PEGASUSX]
|
||||
STR_NAME :Carros Pegasus
|
||||
|
||||
#TT
|
||||
[CERBERUS]
|
||||
STR_NAME :Trens Cérbero
|
||||
|
||||
#TT
|
||||
[HARPIESX]
|
||||
STR_NAME :Trens Harpias
|
||||
|
||||
#TT
|
||||
[VALKYRIE]
|
||||
STR_NAME :Trens Valquírias
|
||||
|
||||
#TT
|
||||
[RIVRSTYX]
|
||||
STR_NAME :Barcos Rio Styx
|
||||
|
||||
#TT
|
||||
[TELEPTER]
|
||||
STR_NAME :Cabine Teletransportadora
|
||||
|
||||
#TT
|
||||
[HOVERCAR]
|
||||
STR_NAME :Carros Flutuantes
|
||||
|
||||
#TT
|
||||
[HOVRBORD]
|
||||
STR_NAME :Hoverboards
|
||||
|
||||
#TT
|
||||
[HOVERBKE]
|
||||
STR_NAME :Motos Flutuantes
|
||||
|
||||
#TT, Reverser RC
|
||||
[POLICECR]
|
||||
STR_NAME :Carros de Polícia
|
||||
|
||||
#TT, Looping RC
|
||||
[POLCHASE]
|
||||
STR_NAME :Trens Carro de Polícia
|
||||
|
||||
#TT
|
||||
[GANSTRCR]
|
||||
STR_NAME :Carros Gangster
|
||||
|
||||
#TT
|
||||
[SEAPLANE]
|
||||
STR_NAME :Carros Hidroavião Suspensos
|
||||
|
||||
#TT
|
||||
[BARNSTRM]
|
||||
STR_NAME :Carros Avião BarnStorming
|
||||
|
||||
#TT
|
||||
[FLYGBOAT]
|
||||
STR_NAME :Barcos voadores
|
||||
|
||||
#TT
|
||||
[BMVOCTPS]
|
||||
STR_NAME :Bolha do Espaço Sideral
|
||||
|
||||
#TT
|
||||
[JETPLANE]
|
||||
STR_NAME :Carros Avião a Jato
|
||||
#TT
|
||||
[HOTRODXX]
|
||||
STR_NAME :Carros Hot Rod
|
||||
|
||||
###########
|
||||
# Scenery #
|
||||
###########
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1220,8 +1220,8 @@ STR_1214 :{SMALLFONT}{BLACK}Välj högsta väntetid innan avgång
|
|||
STR_1215 :{WINDOW_COLOUR_2}Synkronisera med närliggande stationer
|
||||
STR_1216 :{SMALLFONT}{BLACK}Välj om avgången ska synkroniseras med alla närliggande stationer (för 'rally')
|
||||
STR_1217 :{COMMA16} sekunder
|
||||
STR_1218 :{BLACK}{SMALLUP}
|
||||
STR_1219 :{BLACK}{SMALLDOWN}
|
||||
STR_1218 :{BLACK}+
|
||||
STR_1219 :{BLACK}-
|
||||
STR_1220 :Endast utgång
|
||||
STR_1221 :Ingen ingång
|
||||
STR_1222 :Ingen utgång
|
||||
|
@ -1779,8 +1779,8 @@ STR_1773 :Bara en fotosektion tillåten per åktur
|
|||
STR_1774 :Bara en uppskjutskulle tillåten per åktur
|
||||
STR_1775 :Av
|
||||
STR_1776 :På
|
||||
STR_1777 :{WINDOW_COLOUR_2}Åkturs-musik
|
||||
STR_1778 :{STRINGID} - -
|
||||
STR_1777 :<removed string - do not use>
|
||||
STR_1778 :<removed string - do not use>
|
||||
STR_1779 :{INLINE_SPRITE}{254}{19}{00}{00} Pandadräkt
|
||||
STR_1780 :{INLINE_SPRITE}{255}{19}{00}{00} Tigerdräkt
|
||||
STR_1781 :{INLINE_SPRITE}{00}{20}{00}{00} Elefantdräkt
|
||||
|
@ -4510,13 +4510,19 @@ STR_6201 :{MONTH}
|
|||
STR_6202 :Aktivera virtuella golv
|
||||
STR_6203 :{SMALLFONT}{BLACK}När aktiverad, kommer ett rutnät att ritas i samma höjd som elementen är på när du håller in Ctrl eller Shift vilket förenklar vertikala placeringar.
|
||||
|
||||
|
||||
STR_6215 :Konstruktion
|
||||
STR_6216 :Manövrering
|
||||
STR_6217 :Åktur-/spårtillgänglighet
|
||||
STR_6218 :Officiella OpenRCT2
|
||||
STR_6219 :Visa problem på gångvägar
|
||||
|
||||
STR_6229 :{WINDOW_COLOUR_2}{STRINGID}: {STRINGID}
|
||||
STR_6230 :{STRINGID}:
|
||||
STR_6231 :{WINDOW_COLOUR_2}{STRINGID}: {MOVE_X}{185}{STRINGID}
|
||||
|
||||
|
||||
|
||||
|
||||
#############
|
||||
# Scenarion #
|
||||
################
|
||||
|
@ -4959,25 +4965,5 @@ STR_SCNR :Fort Anachronism
|
|||
STR_PARK :Fort Anachronism
|
||||
STR_DTLS :
|
||||
|
||||
#####################
|
||||
# Rides/attractions #
|
||||
#####################
|
||||
|
||||
#WW
|
||||
[CONDORRD]
|
||||
STR_NAME :Kondorhjulet
|
||||
STR_DESC :Åkandes i speciella byglar under spåret känner passagerarna känslan av flygning när de sveper genom luften i kondorformade vagnar
|
||||
STR_CPTY :4 passagerare per vagn
|
||||
|
||||
##############
|
||||
# RCT Object #
|
||||
##############
|
||||
|
||||
[SCGWWEST]
|
||||
STR_NAME :Vilda västern-tema
|
||||
|
||||
[SCGGIANT]
|
||||
STR_NAME :Jätte trädgårds-tema
|
||||
|
||||
#Maintainer: Nubbie
|
||||
#Everyone is allowed to edit this document
|
||||
|
|
|
@ -889,9 +889,9 @@ STR_0878 :太高!
|
|||
STR_0879 :不能在这里降低土地...
|
||||
STR_0880 :不能在这里抬升土地...
|
||||
STR_0881 :有物体挡住去路
|
||||
STR_0882 :载入游戏
|
||||
STR_0882 :加载游戏
|
||||
STR_0883 :保存游戏
|
||||
STR_0884 :载入地形
|
||||
STR_0884 :加载地形
|
||||
STR_0885 :保存地形
|
||||
STR_0886 :退出游戏
|
||||
STR_0887 :退出场景编辑器
|
||||
|
@ -954,13 +954,13 @@ STR_0943 :半透明景观
|
|||
STR_0944 :保存
|
||||
STR_0945 :不保存
|
||||
STR_0946 :取消
|
||||
STR_0947 :是否在载入其他存档之前保存游戏 ?
|
||||
STR_0947 :是否在加载其他存档之前保存游戏 ?
|
||||
STR_0948 :是否在退出之前保存游戏 ?
|
||||
STR_0949 :是否在退出之前保存游戏 ?
|
||||
STR_0950 :加载游戏
|
||||
STR_0951 :退出游戏
|
||||
STR_0952 :退出游戏
|
||||
STR_0953 :载入地形
|
||||
STR_0953 :加载地形
|
||||
STR_0954 :
|
||||
STR_0955 :{SMALLFONT}{BLACK}选择此轨道的座位旋转角度
|
||||
STR_0956 :-180{DEGREE}
|
||||
|
@ -1043,8 +1043,8 @@ STR_1032 :Can only build this on water!
|
|||
STR_1033 :Can only build this above ground!
|
||||
STR_1034 :Can only build this on land!
|
||||
STR_1035 :Local authority won't allow construction above tree-height!
|
||||
STR_1036 :载入游戏
|
||||
STR_1037 :载入存档
|
||||
STR_1036 :加载游戏
|
||||
STR_1037 :加载地形
|
||||
STR_1038 :将存档转换为关卡
|
||||
STR_1039 :添加新的轨道设计
|
||||
STR_1040 :保存游戏
|
||||
|
@ -1057,7 +1057,7 @@ STR_1046 :OpenRCT2 轨道设计文件
|
|||
STR_1047 :存储游戏失败!
|
||||
STR_1048 :存储关卡失败!
|
||||
STR_1049 :存储地形失败!
|
||||
STR_1050 :载入失败...{NEWLINE}文件中含有不可读取的数据!
|
||||
STR_1050 :加载失败...{NEWLINE}文件中含有不可读取的数据!
|
||||
STR_1051 :隐藏支撑物
|
||||
STR_1052 :隐藏游客
|
||||
STR_1053 :{SMALLFONT}{BLACK}游乐园内的游乐设施
|
||||
|
@ -1225,8 +1225,8 @@ STR_1214 :{SMALLFONT}{BLACK}Select maximum length of time to wait before depa
|
|||
STR_1215 :{WINDOW_COLOUR_2}Synchronise with adjacent stations
|
||||
STR_1216 :{SMALLFONT}{BLACK}Select whether to synchronise departure with all adjacent stations (for 'racing')
|
||||
STR_1217 :{COMMA16} seconds
|
||||
STR_1218 :{BLACK}{SMALLUP}
|
||||
STR_1219 :{BLACK}{SMALLDOWN}
|
||||
STR_1218 :{BLACK}+
|
||||
STR_1219 :{BLACK}-
|
||||
STR_1220 :Exit only
|
||||
STR_1221 :No entrance
|
||||
STR_1222 :No exit
|
||||
|
@ -2879,7 +2879,7 @@ STR_2862 :音乐鸣谢列表...
|
|||
STR_2863 :音乐鸣谢列表
|
||||
STR_2864 :{WINDOW_COLOUR_2}March - Children of the Regiment: (Fucik) non copyright
|
||||
STR_2865 :{WINDOW_COLOUR_2}Heyken's Serenade: (J.Heyken) British Standard Music Coy; GEMA, BRITICO
|
||||
STR_2866 :{WINDOW_COLOUR_2}In Continental Mood: (Composer unknown) Copyright Control
|
||||
STR_2866 :{WINDOW_COLOUR_2}La Belle Espagnole: (Robert Vollstedt) Copyright Control
|
||||
STR_2867 :{WINDOW_COLOUR_2}Wedding Journey: (Traditional)
|
||||
STR_2868 :{WINDOW_COLOUR_2}Tales from the Vienna Woods: (Johann Strauss) non copyright
|
||||
STR_2869 :{WINDOW_COLOUR_2}Slavonic Dance: (Traditional)
|
||||
|
@ -2913,7 +2913,7 @@ STR_2896 :{WINDOW_COLOUR_2}Hypothermia: (Allister Brimble) copyright {COPYR
|
|||
STR_2897 :{WINDOW_COLOUR_2}Last Sleigh Ride: (Allister Brimble) copyright {COPYRIGHT} Chris Sawyer
|
||||
STR_2898 :{WINDOW_COLOUR_2}Pipes of Glencairn: (Allister Brimble) copyright {COPYRIGHT} Chris Sawyer
|
||||
STR_2899 :{WINDOW_COLOUR_2}Traffic Jam: (Allister Brimble) copyright {COPYRIGHT} Chris Sawyer
|
||||
STR_2900 :{WINDOW_COLOUR_2}
|
||||
STR_2900 :<removed string - do not use>
|
||||
STR_2901 :{WINDOW_COLOUR_2}(Samples courtesy of Spectrasonics {ENDQUOTES}Liquid Grooves{ENDQUOTES})
|
||||
STR_2902 :{WINDOW_COLOUR_2}Toccata: (C.M.Widor, played by Peter James Adcock) recording {COPYRIGHT} Chris Sawyer
|
||||
STR_2903 :{WINDOW_COLOUR_2}Space Rock: (Allister Brimble) copyright {COPYRIGHT} Chris Sawyer
|
||||
|
@ -3580,8 +3580,8 @@ STR_5232 :{SMALLFONT}{BLACK}编辑器
|
|||
STR_5233 :{SMALLFONT}{BLACK}杂项
|
||||
STR_5234 :{SMALLFONT}{BLACK}Prompts
|
||||
STR_5235 :{SMALLFONT}{BLACK}设置
|
||||
STR_5236 :Window:
|
||||
STR_5237 :调色板:
|
||||
STR_5236 :Window
|
||||
STR_5237 :调色板
|
||||
STR_5238 :当前主题:
|
||||
STR_5239 :Duplicate
|
||||
STR_5240 :Enter a name for the theme
|
||||
|
@ -3840,8 +3840,8 @@ STR_5492 :剧情选项
|
|||
STR_5493 :发送信息
|
||||
STR_5494 :<removed string - do not use>
|
||||
STR_5495 :玩家列表
|
||||
STR_5496 :玩家:
|
||||
STR_5497 :延迟值(Ping):
|
||||
STR_5496 :玩家
|
||||
STR_5497 :延迟值(Ping)
|
||||
STR_5498 :服务器列表
|
||||
STR_5499 :玩家名称:
|
||||
STR_5500 :新增服务器
|
||||
|
@ -3974,7 +3974,7 @@ STR_5626 :其他游乐园
|
|||
STR_5627 :剧情列表排序方法:
|
||||
STR_5628 :游戏出处
|
||||
STR_5629 :困难度
|
||||
STR_5630 :允许剧情解锁
|
||||
STR_5630 :允许逐步解锁
|
||||
STR_5631 :原版DLC游乐园
|
||||
STR_5632 :修建你自己的...
|
||||
STR_5633 :CMD +
|
||||
|
@ -3986,7 +3986,7 @@ STR_5638 :权限不够
|
|||
STR_5639 :{SMALLFONT}{BLACK}显示玩家列表
|
||||
STR_5640 :{SMALLFONT}{BLACK}组管理
|
||||
STR_5641 :默认组:
|
||||
STR_5642 :组:
|
||||
STR_5642 :组
|
||||
STR_5643 :添加组
|
||||
STR_5644 :删除组
|
||||
STR_5645 :聊天
|
||||
|
@ -4015,7 +4015,7 @@ STR_5666 :无密码登录
|
|||
STR_5701 :{WINDOW_COLOUR_2}最近的行为: {BLACK}{STRINGID}
|
||||
STR_5702 :{SMALLFONT}{BLACK}Locate player's most recent action
|
||||
STR_5703 :不能踢出创建者
|
||||
STR_5704 :最近的行为:
|
||||
STR_5704 :最近的行为
|
||||
STR_5705 :不能将此玩家分配到该组
|
||||
STR_5706 :不能删除有玩家在内的组
|
||||
STR_5707 :不能修改此组
|
||||
|
@ -4042,10 +4042,10 @@ STR_5726 :{SMALLFONT}{BLACK}设定游乐园当前的天气
|
|||
STR_5727 :缩放质量
|
||||
STR_5728 :需要开启硬件渲染
|
||||
STR_5729 :{SMALLFONT}{BLACK}需要开启硬件渲染选项
|
||||
STR_5730 :最近相邻
|
||||
STR_5730 :<removed string - do not use>
|
||||
STR_5731 :线性
|
||||
STR_5732 :各向异性
|
||||
STR_5733 :以整数比例调整最近相邻缩放
|
||||
STR_5732 :<removed string - do not use>
|
||||
STR_5733 :<removed string - do not use>
|
||||
# tooltip for tab in options window
|
||||
STR_5734 :{SMALLFONT}{BLACK}渲染
|
||||
STR_5735 :网络状态
|
||||
|
@ -4131,8 +4131,8 @@ STR_5814 :{WINDOW_COLOUR_1}{OPENQUOTES}{STRING}{ENDQUOTES}
|
|||
#tooltips
|
||||
STR_5815 :{SMALLFONT}{BLACK}游戏内显示FPS帧数
|
||||
STR_5816 :{SMALLFONT}{BLACK}设置比例去缩放游戏.{NEWLINE}高分辨率时很有用
|
||||
STR_5817 :{SMALLFONT}{BLACK}[需要开启硬件渲染]{NEWLINE}设置UI缩放类型{NEWLINE}{NEWLINE}如果窗口缩放因子不是整数倍, 则最近邻像素是高锐度但失真的.{NEWLINE}线性和各向异性是平滑但模糊的.{NEWLINE}即使是非整数的缩放因子Smooth NN也是锐利的, 只是会导致轻微的性能下降.
|
||||
STR_5818 :{SMALLFONT}{BLACK}[需要开启硬件渲染]{NEWLINE}使用最近相邻缩放{NEWLINE}当窗口缩放比例设置为{NEWLINE}整数值时 (例如1, 2, 3等等)
|
||||
STR_5817 :{SMALLFONT}{BLACK}设置UI缩放类型.需要开启硬件渲染{NEWLINE}线性缩放是平滑但模糊的.平滑最近邻缩放是锐利的, 但会导致轻微的性能下降.
|
||||
STR_5818 :<removed string - do not use>
|
||||
STR_5819 :{SMALLFONT}{BLACK}[需要开启硬件渲染]{NEWLINE}暂停游戏当游戏内{NEWLINE}Steam overlay打开时
|
||||
STR_5820 :{SMALLFONT}{BLACK}全屏模式时若游戏失焦{NEWLINE}则最小化游戏
|
||||
STR_5821 :<removed string - do not use>
|
||||
|
@ -4156,8 +4156,8 @@ STR_5838 :{SMALLFONT}{BLACK}在工具栏上为财务窗口显示一个单独
|
|||
STR_5839 :{SMALLFONT}{BLACK}在工具栏上为研发窗口显示一个单独的按钮
|
||||
STR_5840 :{SMALLFONT}{BLACK}在工具栏上为作弊窗口显示一个单独的按钮
|
||||
STR_5841 :{SMALLFONT}{BLACK}在工具栏上为最近消息窗口显示一个单独的按钮
|
||||
STR_5842 :{SMALLFONT}{BLACK}对剧情排序是根据困难度(过山车大亨2行为)还是游戏出处(过山车大亨1行为)
|
||||
STR_5843 :{SMALLFONT}{BLACK}允许剧情解锁 (过山车大亨1行为)
|
||||
STR_5842 :{SMALLFONT}{BLACK}对剧情排序是根据困难度(过山车大亨2特色)还是游戏出处(过山车大亨1特色)
|
||||
STR_5843 :{SMALLFONT}{BLACK}允许剧情逐步解锁 (过山车大亨1特色)
|
||||
STR_5844 :{SMALLFONT}{BLACK}即使发生不同步或错误{NEWLINE}依然保持和多人服务器的连接
|
||||
STR_5845 :{SMALLFONT}{BLACK}在工具栏上为调试工具增加一个按钮.{NEWLINE}允许在调试控制台使用快捷键
|
||||
STR_5846 :{SMALLFONT}{BLACK}设置自动保存的频率
|
||||
|
@ -4356,7 +4356,7 @@ STR_6038 :{SMALLFONT}{BLACK}如果你安装了过山车大亨1, 设置此选
|
|||
STR_6039 :{SMALLFONT}{BLACK}快速拆除游乐设施
|
||||
STR_6040 :编辑剧情选项
|
||||
STR_6041 :{BLACK}没有雇佣机械师!
|
||||
STR_6042 :载入高度图
|
||||
STR_6042 :加载高度图
|
||||
STR_6043 :选择高度图
|
||||
STR_6044 :平滑高度图
|
||||
STR_6045 :强度
|
||||
|
@ -4469,7 +4469,7 @@ STR_6150 :主服务器返回不正确的响应信息 (没有 JSON 数字)
|
|||
STR_6151 :主服务器没能返回服务
|
||||
STR_6152 :主服务器返回不正确的响应信息 (没有 JSON 数组)
|
||||
STR_6153 :付费进入游乐园 / 为每一个游乐设施付费
|
||||
STR_6154 :不推荐用高权限来运行OpenRCT2.
|
||||
STR_6154 :因为安全原因, 不推荐提高权限来运行OpenRCT2.
|
||||
STR_6155 :KDialog和Zenity库均没有安装. 请至少安装其一, 或者在命令行配置它们.
|
||||
STR_6156 :名称已被使用
|
||||
STR_6157 :控制台
|
||||
|
@ -4477,6 +4477,84 @@ STR_6158 :不能读取此文件...{NEWLINE}不兼容的RCT版本: {COMMA16}
|
|||
STR_6159 :平滑最近相邻
|
||||
STR_6160 :{WINDOW_COLOUR_2}可用车辆: {BLACK}{STRING}
|
||||
STR_6161 :网格显示切换
|
||||
STR_6162 :旋转野鼠
|
||||
STR_6163 :老鼠外形的车辆加速通过急弯和短下落, 温柔地旋转使乘客迷失方向
|
||||
STR_6164 :{WHITE}{CROSS}
|
||||
STR_6165 :使用垂直同步
|
||||
STR_6166 :{SMALLFONT}{BLACK}将每帧图像与显示器刷新率同步, 以避免画面撕裂.
|
||||
STR_6167 :{SMALLFONT}{BLACK}高级
|
||||
STR_6168 :主菜单动画
|
||||
STR_6169 :剧情选项
|
||||
STR_6170 :界面设定
|
||||
STR_6171 :查找
|
||||
STR_6172 :{SMALLFONT}{BLACK}查找
|
||||
STR_6173 :请输入名字来查找:
|
||||
STR_6174 :加载存档
|
||||
STR_6175 :加载剧情
|
||||
STR_6176 :准备加载的剧情:
|
||||
STR_6177 :加载{MOVE_X}{87}没有选择剧情
|
||||
STR_6178 :加载{MOVE_X}{87}{RED}剧情缺失
|
||||
STR_6179 :选择
|
||||
STR_6180 :没有选择剧情
|
||||
STR_6181 :{RED}剧情缺失
|
||||
STR_6182 :跟随{MOVE_X}{87}{STRING}
|
||||
STR_6183 :跟随{MOVE_X}{87}没有选择sprite
|
||||
STR_6184 :跟随Sprite
|
||||
STR_6185 :选择Sprite
|
||||
STR_6186 :没有选择sprite
|
||||
STR_6187 :{MEDIUMFONT}{OUTLINE}{WINDOW_COLOUR_2}{STRING}
|
||||
STR_6188 :呕吐物
|
||||
STR_6189 :样子
|
||||
STR_6190 :{SMALLFONT}{BLACK}当主界面激活时你无法选择一个sprite.
|
||||
STR_6191 :表面
|
||||
STR_6192 :墙
|
||||
STR_6193 :{COMMA16}位游客
|
||||
STR_6194 :{INLINE_SPRITE}{11}{20}{00}{00}{COMMA16}位游客
|
||||
STR_6195 :{INLINE_SPRITE}{10}{20}{00}{00}{COMMA16}位游客
|
||||
STR_6196 :{BLACK}年:
|
||||
STR_6197 :{BLACK}月:
|
||||
STR_6198 :{BLACK}日:
|
||||
STR_6199 :设置日期
|
||||
STR_6200 :重置日期
|
||||
STR_6201 :{MONTH}
|
||||
STR_6202 :启用虚拟楼层
|
||||
STR_6203 :{SMALLFONT}{BLACK}启用后, 当按住Ctrl或Shift键时将会绘制一层虚拟楼层以便轻松地垂直放置元素.
|
||||
STR_6204 :砖墙
|
||||
STR_6205 :钢铁
|
||||
STR_6206 :灰色粉饰灰泥
|
||||
STR_6207 :黄色粉饰灰泥
|
||||
STR_6208 :红色粉饰灰泥
|
||||
STR_6209 :紫色粉饰灰泥
|
||||
STR_6210 :绿色粉饰灰泥
|
||||
STR_6211 :棕色砂岩
|
||||
STR_6212 :灰色砂岩
|
||||
STR_6213 :摩天大楼A
|
||||
STR_6214 :摩天大楼B
|
||||
STR_6215 :建造
|
||||
STR_6216 :运营
|
||||
STR_6217 :游乐设施 / 轨道可用性
|
||||
STR_6218 :OpenRCT2官方
|
||||
STR_6219 :高亮道路相关物
|
||||
STR_6220 :使之可用
|
||||
STR_6221 :{SMALLFONT}{BLACK}This will set the ride's known entrance or exit location to the currently selected tile. 每个站台只能有一个入口或出口使之可用.
|
||||
STR_6222 :无法在此放置游客入口...
|
||||
STR_6223 :必须在游乐园边界外!
|
||||
STR_6224 :{STRING}放置一个游客入口.
|
||||
STR_6225 :不支持OpenGL渲染
|
||||
STR_6226 :允许剧情提前完成
|
||||
STR_6227 :{SMALLFONT}{BLACK}当所有剧情目标在预定时间之前达成时将触发剧情完成.
|
||||
STR_6228 :剧情选项
|
||||
STR_6229 :{WINDOW_COLOUR_2}{STRINGID}: {STRINGID}
|
||||
STR_6230 :{STRINGID}:
|
||||
STR_6231 :{WINDOW_COLOUR_2}{STRINGID}: {MOVE_X}{185}{STRINGID}
|
||||
STR_6232 :一动不动
|
||||
STR_6233 :剖视图视角
|
||||
STR_6234 :高亮道路相关物
|
||||
STR_6235 :服务器信息
|
||||
STR_6236 :玩家
|
||||
STR_6237 :组
|
||||
STR_6238 :多人选项
|
||||
|
||||
|
||||
#############
|
||||
# Scenarios #
|
||||
|
@ -4920,16 +4998,6 @@ STR_SCNR :Fort Anachronism
|
|||
STR_PARK :Fort Anachronism
|
||||
STR_DTLS :
|
||||
|
||||
#####################
|
||||
# Rides/attractions #
|
||||
#####################
|
||||
|
||||
#WW
|
||||
[CONDORRD]
|
||||
STR_NAME :Condor Ride
|
||||
STR_DESC :Riding in special harnesses below the track, riders experience the feeling of flight as they swoop through the air in Condor-shaped trains
|
||||
STR_CPTY :4 passengers per car
|
||||
|
||||
#################
|
||||
## RCT2 Scenarios
|
||||
#################
|
||||
|
|
|
@ -1220,8 +1220,8 @@ STR_1214 :{SMALLFONT}{BLACK}選擇發車前最多的等待時長
|
|||
STR_1215 :{WINDOW_COLOUR_2}與鄰近車站同步發車
|
||||
STR_1216 :{SMALLFONT}{BLACK}選擇是否與全部鄰近車站同步發車 (以便'競賽')
|
||||
STR_1217 :{COMMA16}秒
|
||||
STR_1218 :{BLACK}{SMALLUP}
|
||||
STR_1219 :{BLACK}{SMALLDOWN}
|
||||
STR_1218 :{BLACK}+
|
||||
STR_1219 :{BLACK}-
|
||||
STR_1220 :只准卸客
|
||||
STR_1221 :尚未建造入口
|
||||
STR_1222 :尚未建造出口
|
||||
|
@ -1778,8 +1778,8 @@ STR_1771 :{POP16}{POP16}{POP16}{POP16}{POP16}{POP16}{POP16}{POP16}{POP16}{COM
|
|||
STR_1772 :{COMMA16}
|
||||
STR_1773 :每個遊樂設施只可建造一個即時照相區域
|
||||
STR_1774 :每個遊樂設施只可建造一個纜索坡道
|
||||
STR_1775 :關閉
|
||||
STR_1776 :開啟
|
||||
STR_1775 :<removed string - do not use>
|
||||
STR_1776 :<removed string - do not use>
|
||||
STR_1777 :{WINDOW_COLOUR_2}音樂
|
||||
STR_1778 :{STRINGID} - -
|
||||
STR_1779 :{INLINE_SPRITE}{254}{19}{00}{00} 熊貓服裝
|
||||
|
@ -3575,8 +3575,8 @@ STR_5232 :{SMALLFONT}{BLACK}編輯工具
|
|||
STR_5233 :{SMALLFONT}{BLACK}其他
|
||||
STR_5234 :{SMALLFONT}{BLACK}彈出視窗
|
||||
STR_5235 :{SMALLFONT}{BLACK}設定
|
||||
STR_5236 :主題:
|
||||
STR_5237 :調色盤:
|
||||
STR_5236 :主題
|
||||
STR_5237 :調色盤
|
||||
STR_5238 :目前主題:
|
||||
STR_5239 :複製
|
||||
STR_5240 :請輸入這個主題的名稱
|
||||
|
@ -3836,8 +3836,8 @@ STR_5492 :劇情選項
|
|||
STR_5493 :發送訊息
|
||||
STR_5494 :<not used anymore>
|
||||
STR_5495 :玩家列表
|
||||
STR_5496 :玩家:
|
||||
STR_5497 :延遲值 (Ping):
|
||||
STR_5496 :玩家
|
||||
STR_5497 :延遲值 (Ping)
|
||||
STR_5498 :伺服器列表
|
||||
STR_5499 :玩家名稱:
|
||||
STR_5500 :新增伺服器
|
||||
|
@ -3982,7 +3982,7 @@ STR_5638 :並沒有足夠的權限
|
|||
STR_5639 :{SMALLFONT}{BLACK}顯示玩家列表
|
||||
STR_5640 :{SMALLFONT}{BLACK}管理組別
|
||||
STR_5641 :預設組別:
|
||||
STR_5642 :組別:
|
||||
STR_5642 :組別
|
||||
STR_5643 :新增組別
|
||||
STR_5644 :移除組別
|
||||
STR_5645 :聊天
|
||||
|
@ -4010,7 +4010,7 @@ STR_5666 :無密碼登入
|
|||
STR_5701 :{WINDOW_COLOUR_2}最近的動作: {BLACK}{STRINGID}
|
||||
STR_5702 :{SMALLFONT}{BLACK}將這個玩家的最近的動作定位
|
||||
STR_5703 :無法踢除架設者
|
||||
STR_5704 :最近的動作:
|
||||
STR_5704 :最近的動作
|
||||
STR_5705 :無法將此玩家分配到此組別
|
||||
STR_5706 :無法移除有玩家在內的組別
|
||||
STR_5707 :無法修改此組別
|
||||
|
@ -4315,7 +4315,7 @@ STR_6002 :{SMALLFONT}{BLACK}夜晚的時候, 路燈及遊樂設施將會有
|
|||
STR_6003 :切入檢視
|
||||
STR_6004 :切入檢視
|
||||
STR_6005 :啟用切入檢視
|
||||
STR_6006 :{SMALLFONT}{BLACK}切入檢視只顯示低於或等於切入高度的地圖元素
|
||||
STR_6006 :{SMALLFONT}{BLACK}切入檢視只顯示低於或等於切入高度(垂直切割)及於選擇範圍(縱橫切割)的地圖元素
|
||||
STR_6007 :切入高度
|
||||
STR_6008 :{SMALLFONT}{BLACK}點撃來切換原生值或量度單位值
|
||||
STR_6009 :{SMALLFONT}{BLACK}選擇切入高度
|
||||
|
@ -4463,7 +4463,7 @@ STR_6150 :主列表伺服器傳回不正確的回應 (無JSON 號碼)
|
|||
STR_6151 :主列表伺服器傳回列表失敗
|
||||
STR_6152 :主列表伺服器傳回不正確的回應 (無JSON 陣列)
|
||||
STR_6153 :付費進入樂園 / 按乘搭遊樂設施的次數付費
|
||||
STR_6154 :不建議以管理員權限運行OpenRCT2.
|
||||
STR_6154 :為安全起見, 不建議以管理員權限運行OpenRCT2.
|
||||
STR_6155 :本系統中並未安裝KDialog或Zenity. 請安裝其中一款, 或於命令提示字元中配置.
|
||||
STR_6156 :名字已被預留
|
||||
STR_6157 :命令提示字元
|
||||
|
@ -4479,7 +4479,7 @@ STR_6166 :{SMALLFONT}{BLACK}將每影格與螢幕的更新頻率同步, 以
|
|||
STR_6167 :{SMALLFONT}{BLACK}進階
|
||||
STR_6168 :主選單動畫
|
||||
STR_6169 :劇情選項
|
||||
STR_6170 :小設定
|
||||
STR_6170 :界面小設定
|
||||
STR_6171 :搜尋
|
||||
STR_6172 :{SMALLFONT}{BLACK}搜尋
|
||||
STR_6173 :請輸入名字來搜尋:
|
||||
|
@ -4527,6 +4527,34 @@ STR_6211 :棕色砂岩
|
|||
STR_6212 :灰色砂岩
|
||||
STR_6213 :高樓大廈A
|
||||
STR_6214 :高樓大廈B
|
||||
STR_6215 :建造
|
||||
STR_6216 :運作
|
||||
STR_6217 :遊樂設施/軌道可用性
|
||||
STR_6218 :OpenRCT2官方
|
||||
STR_6219 :高亮道路問題
|
||||
STR_6220 :設為可用
|
||||
STR_6221 :{SMALLFONT}{BLACK}此選項會將當前選中的網格設定為這個遊樂設施的已知入口或出口位置. 一個車站只能有一個可用入口及出口.
|
||||
STR_6222 :不能在這裡放置遊客進出點...
|
||||
STR_6223 :必須放置於樂園邊界外!
|
||||
STR_6224 :{STRING}已放置一個遊客進出點.
|
||||
STR_6225 :使用OpenGL渲染器時不支援
|
||||
STR_6226 :啟用劇情提早完成
|
||||
STR_6227 :{SMALLFONT}{BLACK}當劇情目前於指定日期前完成時便立即完成劇情.
|
||||
STR_6228 :劇情選項
|
||||
STR_6229 :{WINDOW_COLOUR_2}{STRINGID}: {STRINGID}
|
||||
STR_6230 :{STRINGID}:
|
||||
STR_6231 :{WINDOW_COLOUR_2}{STRINGID}:
|
||||
STR_6232 :涷結
|
||||
STR_6233 :切入檢視
|
||||
STR_6234 :高亮道路問題
|
||||
STR_6235 :伺服器資訊
|
||||
STR_6236 :玩家
|
||||
STR_6237 :群組
|
||||
STR_6238 :多人遊戲選項
|
||||
STR_6239 :垂直切割
|
||||
STR_6240 :縱橫切割
|
||||
STR_6241 :選擇範圍
|
||||
STR_6242 :清除選擇
|
||||
|
||||
#############
|
||||
# Scenarios #
|
||||
|
@ -4969,110 +4997,3 @@ STR_DTLS :
|
|||
STR_SCNR :Fort Anachronism
|
||||
STR_PARK :Fort Anachronism
|
||||
STR_DTLS :
|
||||
|
||||
#####################
|
||||
# Rides/attractions #
|
||||
#####################
|
||||
###############################################################################
|
||||
## RCT2 Objects
|
||||
###############################################################################
|
||||
[AML1]
|
||||
STR_NAME :美式蒸氣火車
|
||||
STR_DESC :配備著復刻蒸氣火車頭及煤水車的小型蒸氣火車, 拉著帶有帆布車頂的木製車廂
|
||||
STR_CPTY :每車廂6位乘客
|
||||
|
||||
[CLIFT1]
|
||||
STR_NAME :纜車車卡
|
||||
STR_DESC :供纜車使用的開放式車卡
|
||||
STR_CPTY :每車卡2位乘客
|
||||
|
||||
[CLIFT2]
|
||||
STR_NAME :登頂滑雪纜車車椅
|
||||
STR_DESC :供纜車使用的開放式車卡
|
||||
STR_CPTY :每車卡2位乘客
|
||||
|
||||
[LIFT1]
|
||||
STR_NAME :升降機
|
||||
STR_DESC :遊客乘搭升降機上下穿梭於垂直的管道中, 並借此訪問另一層
|
||||
STR_CPTY :16位乘客
|
||||
|
||||
[MONO1]
|
||||
STR_NAME :流線型單軌電車
|
||||
STR_DESC :大載客量的單軌電車, 車頭車尾都配備著流線型設計
|
||||
STR_CPTY :每車卡5或10位乘客
|
||||
|
||||
[MONO2]
|
||||
STR_NAME :小型單軌電車
|
||||
STR_DESC :附有開放式側邊的小型單軌電車
|
||||
STR_CPTY :每車卡4位乘客
|
||||
|
||||
[MONO3]
|
||||
STR_NAME :懷舊風格單軌電車
|
||||
STR_DESC :使用開放式設計車廂的單軌電車
|
||||
STR_CPTY :每車卡4位乘客
|
||||
|
||||
[NRL]
|
||||
STR_NAME :蒸氣火車
|
||||
STR_DESC :配備著復刻蒸氣火車頭及煤水車的小型蒸氣火車, 拉著開放式的木製車廂
|
||||
STR_CPTY :每車廂6位乘客
|
||||
|
||||
[NRL2]
|
||||
STR_NAME :有蓋蒸氣火車
|
||||
STR_DESC :配備著復刻蒸氣火車頭及煤水車的小型蒸氣火車, 拉著帶有織布車頂的木製車廂
|
||||
STR_CPTY :每車廂6位乘客
|
||||
|
||||
[SMONO]
|
||||
STR_NAME :懸掛式單軌電車
|
||||
STR_DESC :大載客量的單軌電車
|
||||
STR_CPTY :每車卡8位乘客
|
||||
|
||||
[TRAM1]
|
||||
STR_NAME :電車
|
||||
STR_DESC :復刻的懷舊電車
|
||||
STR_CPTY :每車卡10位乘客
|
||||
|
||||
[4X4]
|
||||
STR_NAME :怪獸卡車
|
||||
STR_DESC :能爬上陡斜坡道, 而且帶有動力的巨型4 x 4卡車
|
||||
STR_CPTY :每卡車2位乘客
|
||||
|
||||
[CHBUILD]
|
||||
STR_NAME :古怪屋
|
||||
STR_DESC :一座建築物, 含有扭曲房間及傾斜走道使人於行走中失去方向感
|
||||
STR_CPTY :5位遊客
|
||||
|
||||
[CIRCUS1]
|
||||
STR_NAME :馬戲團
|
||||
STR_DESC :於大型帳幕內進行動物馬戲團表演
|
||||
STR_CPTY :30位遊客
|
||||
|
||||
[CTCAR]
|
||||
STR_NAME :笑臉貓遊
|
||||
STR_DESC :帶有動力的貓型車輛跟隨著軌道的路線遊覽周邊
|
||||
STR_CPTY :每輛車2位乘客
|
||||
|
||||
[DODG1]
|
||||
STR_NAME :碰碰車
|
||||
STR_DESC :自助駕駛的電力碰碰車
|
||||
STR_CPTY :每車輛1位乘客
|
||||
|
||||
[FSAUC]
|
||||
STR_NAME :碰碰飛碟
|
||||
STR_DESC :自助駕駛的飛碟型車輛
|
||||
STR_CPTY :每飛碟1位乘客
|
||||
|
||||
[FWH1]
|
||||
STR_NAME :摩天輪
|
||||
STR_DESC :不斷旋轉, 附有露天座椅的巨大輪環
|
||||
STR_CPTY :32位乘客
|
||||
|
||||
[GOLF1]
|
||||
STR_NAME :迷你高爾夫
|
||||
STR_DESC :一個溫和的迷你高爾夫遊戲
|
||||
STR_CPTY :
|
||||
|
||||
#WW
|
||||
[CONDORRD]
|
||||
STR_NAME :神鷹暢遊
|
||||
STR_DESC :乘客乘坐於軌道下的神鷹造型列車上, 將會於飛馳中體驗飛一般的快感
|
||||
STR_CPTY :每車卡4位乘客
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
openrct2 (0.1.2-develop-1) unstable; urgency=medium
|
||||
openrct2 (0.1.3-develop-1) unstable; urgency=medium
|
||||
|
||||
* Release 2017-07 (Closes: #XXXXXX)
|
||||
|
||||
|
|
|
@ -4,7 +4,7 @@ Section: misc
|
|||
Priority: optional
|
||||
Standards-Version: 3.9.2
|
||||
Multi-Arch: same
|
||||
Build-Depends: debhelper (>= 9), cmake, libsdl2-dev, libsdl2-ttf-dev, gcc, pkg-config, libjansson4 (>= 2.3), libjansson-dev (>= 2.3), libspeex-dev, libspeexdsp-dev, libcurl4-openssl-dev, libcrypto++-dev, libfontconfig1-dev, libfreetype6-dev, libpng-dev, libssl-dev, libzip-dev
|
||||
Build-Depends: debhelper (>= 9), cmake, libsdl2-dev, gcc (>= 7), pkg-config, libjansson4 (>= 2.3), libjansson-dev (>= 2.3), libspeex-dev, libspeexdsp-dev, libcurl4-openssl-dev, libcrypto++-dev, libfontconfig1-dev, libfreetype6-dev, libpng-dev, libssl-dev, libzip-dev (>= 1.0.0), libicu-dev (>= 59.0)
|
||||
|
||||
Package: openrct2
|
||||
Architecture: any
|
||||
|
|
|
@ -1,3 +1,61 @@
|
|||
0.1.3 (in development)
|
||||
------------------------------------------------------------------------
|
||||
- Feature: [#1417] Allow saving track designs for flat rides.
|
||||
- Feature: [#1675] Auto-rotate shops to face footpaths.
|
||||
- Feature: [#3473] Add button in ride window's maintainance tab to refurbish the ride.
|
||||
- Feature: [#6510] Ability to select edges or a row of tiles by holding down Ctrl using the land tool.
|
||||
- Feature: [#7187] Option for early scenario completion.
|
||||
- Feature: [#7266] Make headless instances use an interactive terminal with access to the in-game console API.
|
||||
- Feature: [#7267] Leverage more historical data in Finances window.
|
||||
- Feature: [#7316] Cheat to allow freezing all staff
|
||||
- Feature: [#7332] Keyboard shortcuts for view path issues and cutaway view.
|
||||
- Feature: [#7348] Add large half loops to the Vertical Drop Roller Coaster.
|
||||
- Feature: [#7459] Allow opening and closing of parks that use no money.
|
||||
- Feature: [#7579] New horizontal +/- spinner widgets to make adjusting values easier.
|
||||
- Fix: [#2053] When clearance checks are disabled, a track piece ghost can remove non-ghost track pieces.
|
||||
- Fix: [#2611] Some objects show (undefined string) instead of a description in Korean.
|
||||
- Fix: [#3596] Saving parks, landscapes and tracks with a period in the filenames don't get their extension.
|
||||
- Fix: [#5210] Default system dialog not accessible from saving landscape window.
|
||||
- Fix: [#6134] Scenarios incorrectly categorised when using Polish version of RCT2.
|
||||
- Fix: [#6141] CSS50.dat is never loaded.
|
||||
- Fix: [#6647] Changelog window causes FPS drop.
|
||||
- Fix: [#6938] Banner do not correctly capitalise non-ASCII characters.
|
||||
- Fix: [#7176] Mechanics sometimes fall down from rides.
|
||||
- Fix: [#7303] Visual glitch with virtual floor near map edges.
|
||||
- Fix: [#7313] Loading an invalid path with openrct2 produces results different than expected.
|
||||
- Fix: [#7327] Abstract scenery and stations don't get fully See-Through when hiding them (original bug).
|
||||
- Fix: [#7331] Invention list in scenario editor crashes upon removing previously-enabled ride/stall entries.
|
||||
- Fix: [#7341] Staff may auto-spawn on guests walking outside of paths.
|
||||
- Fix: [#7354] Cut-away view does not draw tile elements that have been moved down on the list.
|
||||
- Fix: [#7358] Peeps and staff entering rides still have the slope speed penalty set.
|
||||
- Fix: [#7382] Opening the mini-map reverts the size of the land tool to 1x1, regardless of what was selected before.
|
||||
- Fix: [#7402] Edges of neigbouring footpaths stay connected after removing a path that's underneath a ride entrance.
|
||||
- Fix: [#7405] Rides can be covered by placing scenery underneath them.
|
||||
- Fix: [#7418] Staff walk off paths with a connection but no adjacent path.
|
||||
- Fix: [#7434] Diagonal ride segments cannot be deleted if they are isolated.
|
||||
- Fix: [#7436] Only the first 32 vehicles of a train can be painted.
|
||||
- Fix: [#7480] Graphs skip values of 0.
|
||||
- Fix: [#7505] Game crashes when trying to make path over map edge while having clearance checks disabled.
|
||||
- Fix: [#7528] In park entrance pricing tab, switching tabs happens on mouse-down instead of mouse-up
|
||||
- Fix: [#7544] Starting a headless server with no arguments causes the game to freeze.
|
||||
- Fix: [#7571] Hovering a ride design over scenery or tracks will give tons of money.
|
||||
- Improved: [#2989] Multiplayer window now changes title when tab changes.
|
||||
- Improved: [#5339] Change eyedropper icon to actual eyedropper and change cursor to crosshair.
|
||||
- Improved: [#5832] Resize tile inspector automatically when selecting a tile element.
|
||||
- Improved: [#6221] The scenario editor's invention list is now resizeable.
|
||||
- Improved: [#7069] The arbitrary ride type selection dropdown is now sorted orthographically, and has its spinners removed.
|
||||
- Improved: [#7302] Raising land near the map edge makes the affected area smaller instead of showing an 'off edge map' error.
|
||||
- Improved: [#7435] Object indexing now supports multi-threading.
|
||||
- Improved: [#7510] Add horizontal clipping to cut-away view options.
|
||||
- Improved: [#7531] "Save track design" dropdown now stays open.
|
||||
- Improved: [#7548] Ctrl-clicking with the tile inspector open now directly selects an element and its tile.
|
||||
- Improved: [#7555] Allow setting the Twitch API URL, allowing custom API servers.
|
||||
- Improved: [#7567] Improve the performance of loading parks and the title sequence.
|
||||
- Improved: [#7577] Allow fine-tuning the virtual floor style.
|
||||
- Improved: [#7608] The vehicle selection dropdown is now sorted orthographically.
|
||||
- Improved: [#7613] Resizing the staff window now resizes the name and action columns too.
|
||||
- Improved: [#7627] Allow scrolling up and down on spinners to change their values.
|
||||
|
||||
0.1.2 (2018-03-18)
|
||||
------------------------------------------------------------------------
|
||||
- Feature: [#2893] Object selection filters for items from RCT1, Added Attractions and Loopy Landscapes.
|
||||
|
@ -112,6 +170,7 @@
|
|||
- Fix: [#7011] Swinging and bobsleigh cars going backwards swing in the wrong direction (original bug).
|
||||
- Fix: [#7042, #7077] Paths sometimes disconnect when building them with clearance checks off.
|
||||
- Fix: [#7125] No entry signs not correctly handled in pathfinding.
|
||||
- Fix: [#7153] Sign text cut off when using TTF Fonts.
|
||||
- Fix: [#7223] Vehicle mass not correctly recalculated when using remove all guests cheat.
|
||||
- Fix: [#7229] Exploding guests cheat causes rides to get stuck and freezes game.
|
||||
- Fix: [#7295] peep_should_go_on_ride_again() checked balloon colour instead of toilet need.
|
||||
|
|
|
@ -11,11 +11,14 @@ GenericName[ca]=Joc de simulació de parcs temàtics
|
|||
GenericName[cs]=Strategická simulace zábavního parku
|
||||
GenericName[de]=Freizeitpark-Simulation
|
||||
GenericName[es]=Simulación de parque de atracciones.
|
||||
GenericName[fr]=Jeu de gestion de parcs d'attractions.
|
||||
GenericName[it]=Gioco di simulazione e gestione di parchi a tema
|
||||
GenericName[nb]=Fornøyelsespark-simuleringsspill
|
||||
GenericName[nl]=Pretparksimulator
|
||||
GenericName[pt]=Jogo de gerenciamento de parque temático
|
||||
GenericName[ru]=Игра в жанре симулятора управления парком развлечений
|
||||
GenericName[sv]=Nöjesparks-simulator
|
||||
GenericName[zh_CN]=主题公园经营游戏
|
||||
GenericName[zh_TW]=主題樂園管理遊戲
|
||||
Comment=Open Source re-implementation of RollerCoaster Tycoon 2.
|
||||
Comment[ar]=إعادة إنشاء مفتوح المصدر للعبة محاكاة الأفعوانيات 2.
|
||||
|
@ -23,10 +26,13 @@ Comment[ca]=Reimplementació de codi obert del RollerCoaster Tycoon 2.
|
|||
Comment[cs]=Open Source remake hry RollerCoaster Tycoon 2.
|
||||
Comment[de]=Quelloffene Neuimplementierung von RollerCoaster Tycoon 2.
|
||||
Comment[es]=Re-implementación de código abierto de RollerCoaster Tycoon 2.
|
||||
Comment[fr]=Ré-implémentation libre (Open Source) de RollerCoaster Tycoon 2.
|
||||
Comment[it]=Versione Open Source di RollerCoaster.
|
||||
Comment[nl]=Een opensource-versie van RollerCoaster Tycoon 2
|
||||
Comment[nb]=Open Source re-implementasjon av RollerCoaster Tycoon 2.
|
||||
Comment[nl]=Een opensource-versie van RollerCoaster Tycoon 2.
|
||||
Comment[pt]=Reimplementação em código aberto do RollerCoaster Tycoon 2.
|
||||
Comment[ru]=Ремейк с открытым исходным кодом игры RollerCoaster Tycoon 2.
|
||||
Comment[sv]=Open Source om-implementation av RollerCoaster Tycoon 2.
|
||||
Comment[zh_CN]=过山车大亨2(RollerCoaster Tycoon 2)的开源重新开发版
|
||||
Comment[zh_TW]=重新開發並開放源碼的模擬樂園2 (RollerCoaster Tycoon 2)。
|
||||
Categories=Game;Simulation;
|
||||
|
|
|
@ -13,7 +13,7 @@
|
|||
<key>CFBundlePackageType</key>
|
||||
<string>APPL</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>0.1.2</string>
|
||||
<string>0.1.3</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>ORCT</string>
|
||||
<key>LSMinimumSystemVersion</key>
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
FROM nfnty/arch-mini
|
||||
|
||||
RUN pacman -Syyu --noconfirm
|
||||
RUN pacman -S --noconfirm gcc gcc-libs git curl jshon expac yajl wget unzip cmake ninja && pacman -Sc
|
||||
RUN pacman -S --noconfirm systemd curl sdl2 speex fontconfig openssl libpng jansson libzip && pacman -Sc
|
||||
RUN pacman -S --noconfirm base-devel gcc gcc-libs git curl jshon expac yajl wget unzip cmake ninja && pacman -Sc
|
||||
RUN pacman -S --noconfirm systemd curl ccache sdl2 speex fontconfig openssl libpng jansson libzip icu && pacman -Sc
|
||||
RUN pacman -S --noconfirm --needed make pkg-config
|
||||
|
|
|
@ -8,15 +8,16 @@ RUN mkdir build \
|
|||
&& ninja -k0 install
|
||||
|
||||
# Build runtime image
|
||||
FROM ubuntu:16.04
|
||||
FROM ubuntu:18.04
|
||||
RUN apt-get update
|
||||
RUN apt-get -y upgrade
|
||||
RUN apt-get install --no-install-recommends -y rsync ca-certificates libjansson4 libpng12-0 libzip4 libcurl3 libfreetype6 libfontconfig1
|
||||
RUN apt-get install --no-install-recommends -y rsync ca-certificates libjansson4 libpng16-16 libzip4 libcurl4 libfreetype6 libfontconfig1
|
||||
|
||||
# Install OpenRCT2
|
||||
COPY --from=build-env /openrct2-install /openrct2-install
|
||||
RUN rsync -a /openrct2-install/* / \
|
||||
&& rm -rf /openrct2-install
|
||||
&& rm -rf /openrct2-install \
|
||||
&& openrct2-cli --version
|
||||
|
||||
# Done
|
||||
ENTRYPOINT ["openrct2-cli"]
|
||||
|
|
|
@ -1,19 +1,39 @@
|
|||
FROM ubuntu:16.04
|
||||
# based on sstrakh/xenial-boost-clang but imported as source,
|
||||
# due to upstream image being obsolete and we don't need boost.
|
||||
RUN apt-get update \
|
||||
&& apt-get install -y curl sudo \
|
||||
&& curl http://apt.llvm.org/llvm-snapshot.gpg.key|sudo apt-key add - \
|
||||
&& echo "deb http://apt.llvm.org/xenial/ llvm-toolchain-xenial-4.0 main" > /etc/apt/sources.list.d/clang4.list \
|
||||
&& apt-get update \
|
||||
&& apt-get install -y \
|
||||
clang-4.0 \
|
||||
gcc \
|
||||
g++ \
|
||||
git-core \
|
||||
&& ln -s /usr/bin/clang-4.0 /usr/bin/clang \
|
||||
&& ln -s /usr/bin/clang++-4.0 /usr/bin/clang++
|
||||
RUN curl https://cmake.org/files/v3.9/cmake-3.9.4-Linux-x86_64.sh -o cmake.sh && sh cmake.sh --skip-license --exclude-subdir --prefix=/usr/local
|
||||
FROM ubuntu:18.04
|
||||
|
||||
# Ubuntu 18.04 already comes with GCC 7 available, there's no need to install PPA for it,
|
||||
# but leave the commands for future updates
|
||||
|
||||
#RUN \
|
||||
# apt-get update && \
|
||||
# apt-get install -y software-properties-common && \
|
||||
# add-apt-repository ppa:ubuntu-toolchain-r/test && \
|
||||
# apt-get update && \
|
||||
# apt-get install -y g++-7 && \
|
||||
# update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-7 60
|
||||
|
||||
# Ubuntu 18.04 already comes with clang 5.0 available, there's no need to install repository for it,
|
||||
# but leave the commands for future updates
|
||||
#RUN apt-get update \
|
||||
# && apt-get install -y curl sudo \
|
||||
# && curl http://apt.llvm.org/llvm-snapshot.gpg.key|sudo apt-key add - \
|
||||
# && echo "deb http://apt.llvm.org/bionic/ llvm-toolchain-bionic-5.0 main" > /etc/apt/sources.list.d/clang5.list \
|
||||
# && apt-get update \
|
||||
# && apt-get install -y \
|
||||
# clang-5.0 \
|
||||
# git-core \
|
||||
# && ln -s /usr/bin/clang-5.0 /usr/bin/clang \
|
||||
# && ln -s /usr/bin/clang++-5.0 /usr/bin/clang++
|
||||
|
||||
# Ubuntu 18.04 already comes with cmake 3.10 available, there's no need to install it manually,
|
||||
# but leave the commands for future updates
|
||||
#RUN curl https://cmake.org/files/v3.9/cmake-3.9.4-Linux-x86_64.sh -o cmake.sh && sh cmake.sh --skip-license --exclude-subdir --prefix=/usr/local
|
||||
|
||||
RUN \
|
||||
apt-get update && \
|
||||
apt-get install -y git-core g++ clang-5.0 && \
|
||||
ln -s /usr/bin/clang-5.0 /usr/bin/clang && \
|
||||
ln -s /usr/bin/clang++-5.0 /usr/bin/clang++
|
||||
|
||||
RUN apt-get -y upgrade
|
||||
# clang and gcc already installed
|
||||
RUN apt-get install --no-install-recommends -y cmake libsdl2-dev libsdl2-ttf-dev pkg-config libjansson-dev libspeex-dev libspeexdsp-dev libcurl4-openssl-dev libcrypto++-dev libfontconfig1-dev libfreetype6-dev libpng-dev libzip-dev git libssl-dev ninja-build
|
||||
RUN apt-get install --no-install-recommends -y ccache cmake libsdl2-dev libsdl2-ttf-dev pkg-config libjansson-dev libspeex-dev libspeexdsp-dev libcurl4-openssl-dev libcrypto++-dev libfontconfig1-dev libfreetype6-dev libpng-dev libzip-dev git libssl-dev ninja-build libicu-dev
|
||||
|
|
|
@ -1,6 +1,9 @@
|
|||
FROM ubuntu:16.04
|
||||
FROM ubuntu:18.04
|
||||
RUN dpkg --add-architecture i386
|
||||
RUN \
|
||||
apt-get update && \
|
||||
apt-get install -y g++-7-multilib && \
|
||||
update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-7 60
|
||||
RUN apt-get update
|
||||
RUN apt-get -y upgrade
|
||||
RUN apt-get install --no-install-recommends -y gcc-multilib g++-multilib curl ca-certificates libsdl2-dev:i386 libsdl2-ttf-dev:i386 pkg-config:i386 libjansson-dev:i386 libspeex-dev:i386 libspeexdsp-dev:i386 libcurl4-openssl-dev:i386 libcrypto++-dev:i386 libfontconfig1-dev:i386 libfreetype6-dev:i386 libpng-dev:i386 libzip-dev:i386 libssl-dev:i386 ninja-build
|
||||
RUN curl https://cmake.org/files/v3.9/cmake-3.9.4-Linux-x86_64.sh -o cmake.sh && sh cmake.sh --skip-license --exclude-subdir --prefix=/usr/local
|
||||
RUN apt-get install --no-install-recommends -y ccache cmake curl ca-certificates libsdl2-dev:i386 libsdl2-ttf-dev:i386 pkg-config:i386 libjansson-dev:i386 libspeex-dev:i386 libspeexdsp-dev:i386 libcurl4-openssl-dev:i386 libcrypto++-dev:i386 libfontconfig1-dev:i386 libfreetype6-dev:i386 libpng-dev:i386 libzip-dev:i386 libssl-dev:i386 ninja-build libicu-dev:i386
|
||||
|
|
|
@ -18,8 +18,8 @@
|
|||
<TargetName>$(ProjectName)</TargetName>
|
||||
<ShowAllFiles>true</ShowAllFiles>
|
||||
|
||||
<VcpkgTriplet Condition="'$(Platform)'=='Win32' and '$(UseSharedLibs)'!='true'">x86-windows-static</VcpkgTriplet>
|
||||
<VcpkgTriplet Condition="'$(Platform)'=='x64' and '$(UseSharedLibs)'!='true'">x64-windows-static</VcpkgTriplet>
|
||||
<VcpkgTriplet Condition="'$(Platform)'=='Win32' and '$(UseSharedLibs)'!='true'">x86-windows-static-winssl</VcpkgTriplet>
|
||||
<VcpkgTriplet Condition="'$(Platform)'=='x64' and '$(UseSharedLibs)'!='true'">x64-windows-static-winssl</VcpkgTriplet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)'=='Debug'">
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
|
@ -32,7 +32,7 @@
|
|||
<ItemDefinitionGroup>
|
||||
<ClCompile>
|
||||
<WarningLevel>Level4</WarningLevel>
|
||||
<DisableSpecificWarnings>4068;4091;4100;4132;4200;4201;4204;4206;4221;4244;4245;%(DisableSpecificWarnings)</DisableSpecificWarnings>
|
||||
<DisableSpecificWarnings>4068;4091;4100;4132;4200;4201;4204;4206;4221;4244;%(DisableSpecificWarnings)</DisableSpecificWarnings>
|
||||
<!-- Warnings:
|
||||
C4068: unknown pragma
|
||||
C4091: 'keyword': ignored on left of 'type' when no variable is declared
|
||||
|
@ -44,7 +44,6 @@
|
|||
C4206: nonstandard extension used: translation unit is empty
|
||||
C4221: nonstandard extension used: 'identifier': cannot be initialized using address of automatic variable 'identifier'
|
||||
C4244: 'conversion_type': conversion from 'type1' to 'type2', possible loss of data
|
||||
C4245: 'conversion_type': conversion from 'type1' to 'type2', signed/unsigned mismatch
|
||||
-->
|
||||
<TreatSpecificWarningsAsErrors>4263;4265;4548;4549;4555</TreatSpecificWarningsAsErrors>
|
||||
<!-- Warnings, that have to be enabled manually:
|
||||
|
@ -76,7 +75,7 @@
|
|||
<MinimalRebuild>false</MinimalRebuild>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<GenerateDebugInformation>DebugFull</GenerateDebugInformation>
|
||||
<AdditionalDependencies>bz2d.lib;discord-rpc.lib;freetyped.lib;jansson_d.lib;libcurl.lib;libeay32.lib;libpng16d.lib;libspeexdsp.lib;SDL2d.lib;ssleay32.lib;zip.lib;zlibd.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
|
@ -92,7 +91,7 @@
|
|||
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<GenerateDebugInformation>DebugFull</GenerateDebugInformation>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
<AdditionalDependencies>bz2.lib;discord-rpc.lib;freetype.lib;jansson.lib;libcurl.lib;libeay32.lib;libpng16.lib;libspeexdsp.lib;SDL2.lib;ssleay32.lib;zip.lib;zlib.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
|
|
|
@ -18,7 +18,7 @@
|
|||
<Platform Condition="'$(PLATFORM)'==''">x64</Platform>
|
||||
<GIT_COMMIT_SHA1_SHORT Condition="'$(GIT_COMMIT_SHA1)'!=''">$(GIT_COMMIT_SHA1.Substring(0, 7))</GIT_COMMIT_SHA1_SHORT>
|
||||
|
||||
<Version>0.1.2</Version>
|
||||
<Version>0.1.3</Version>
|
||||
<VersionExtra Condition="'$(GIT_BRANCH)'!=''">-$(GIT_BRANCH)-$(GIT_COMMIT_SHA1_SHORT)</VersionExtra>
|
||||
<VersionExtra Condition="'$(GIT_TAG)'!=''"></VersionExtra>
|
||||
<TargetLibsVersion>16</TargetLibsVersion>
|
||||
|
@ -62,15 +62,17 @@
|
|||
<!-- 3rd party libraries / dependencies -->
|
||||
<PropertyGroup>
|
||||
<DependenciesCheckFile>$(RootDir).dependencies</DependenciesCheckFile>
|
||||
<LibsUrl Condition="'$(Platform)'=='Win32'">https://github.com/OpenRCT2/Dependencies/releases/download/v16/openrct2-libs-v16-x86-windows-static-winssl.zip</LibsUrl>
|
||||
<LibsSha1 Condition="'$(Platform)'=='Win32'">827d86c1571bb73504b23929746b20d8094aae40</LibsSha1>
|
||||
<LibsUrl Condition="'$(Platform)'=='x64'">https://github.com/OpenRCT2/Dependencies/releases/download/v16/openrct2-libs-v16-x64-windows-static-winssl.zip</LibsUrl>
|
||||
<LibsSha1 Condition="'$(Platform)'=='x64'">5904b7e0562ace419b7c87d618e5ad00ba664b36</LibsSha1>
|
||||
<LibsUrl Condition="'$(Platform)'=='Win32'">https://github.com/OpenRCT2/Dependencies/releases/download/v17/openrct2-libs-v17-x86-windows-static-winssl.zip</LibsUrl>
|
||||
<LibsSha1 Condition="'$(Platform)'=='Win32'">4f9fb5feebe4a4ed461b2a545b2fd1c91ef6527b</LibsSha1>
|
||||
<LibsUrl Condition="'$(Platform)'=='x64'">https://github.com/OpenRCT2/Dependencies/releases/download/v17/openrct2-libs-v17-x64-windows-static-winssl.zip</LibsUrl>
|
||||
<LibsSha1 Condition="'$(Platform)'=='x64'">5aab386f9eeaad102b330fcddea2b4cc9e3c7067</LibsSha1>
|
||||
<GtestVersion>1.8.0</GtestVersion>
|
||||
<GtestUrl>https://github.com/google/googletest/archive/release-1.8.0.zip</GtestUrl>
|
||||
<GtestSha1>667f873ab7a4d246062565fad32fb6d8e203ee73</GtestSha1>
|
||||
<TitleSequencesUrl>https://github.com/OpenRCT2/title-sequences/releases/download/v0.1.2/title-sequence-v0.1.2.zip</TitleSequencesUrl>
|
||||
<TitleSequencesSha1>1136ef92bfb05cd1cba9831ba6dc4a653d87a246</TitleSequencesSha1>
|
||||
<ObjectsUrl>https://github.com/OpenRCT2/objects/releases/download/v1.0.2/objects.zip</ObjectsUrl>
|
||||
<ObjectsSha1>acf853ff6fa4285cea94cc9d8f74730e57202d06</ObjectsSha1>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
|
@ -183,11 +185,16 @@
|
|||
<MSBuild Projects="openrct2.sln" Targets="Rebuild" Properties="$(SlnProperties)" />
|
||||
</Target>
|
||||
|
||||
<Target Name="Test" DependsOnTargets="Build">
|
||||
<Exec Command="$(TargetDir)tests\tests.exe "--gtest_output=xml:$(ArtifactsDir)test-results.xml"" />
|
||||
</Target>
|
||||
<Target Name="TestNoRCT2" DependsOnTargets="Build">
|
||||
<Exec Command="$(TargetDir)tests\tests.exe "--gtest_filter=-RideRatings*:MultiLaunch*" "--gtest_output=xml:$(ArtifactsDir)test-results.xml"" />
|
||||
<Target Name="Test">
|
||||
<!-- Scan repositories prior to running tests as it can take a while -->
|
||||
<Message Text="Building OpenRCT2 repository indexes..." Importance="high" />
|
||||
<Exec Command="$(TargetDir)openrct2.exe scan-objects"
|
||||
WorkingDirectory="$(TargetDir)"
|
||||
StandardOutputImportance="normal" />
|
||||
|
||||
<Message Text="Running tests..." Importance="high" />
|
||||
<Exec Command="$(TargetDir)tests.exe "--gtest_output=xml:$(ArtifactsDir)test-results.xml""
|
||||
WorkingDirectory="$(TargetDir)" />
|
||||
</Target>
|
||||
|
||||
<!-- Target to build g2.dat containing OpenRCT2 sprites -->
|
||||
|
@ -214,11 +221,20 @@
|
|||
OutputDirectory="$(TargetDir)data\title" />
|
||||
</Target>
|
||||
|
||||
<!-- Target to download the objects -->
|
||||
<Target Name="DownloadObjects" AfterTargets="Build">
|
||||
<DownloadDependency Name="Objects"
|
||||
Url="$(ObjectsUrl)"
|
||||
Sha1="$(ObjectsSha1)"
|
||||
CheckFile="$(DependenciesCheckFile)"
|
||||
OutputDirectory="$(TargetDir)data\object" />
|
||||
</Target>
|
||||
|
||||
<!-- Target to sign OpenRCT2
|
||||
This requires the project parameter SIGN_PASSWORD to be set -->
|
||||
<Target Name="Sign" AfterTargets="Build" Inputs="@(SignItems)" Outputs="%(SignItems.Identity).signed"
|
||||
Condition="'$(TestConfig)'!='true'">
|
||||
<Warning Condition="'$(SIGN_PASSWORD)'==''" Text="SIGN_PASSWORD was not set, skipping signing of %(SignItems.Filename)%(SignItems.Extension)." />
|
||||
<!-- <Warning Condition="'$(SIGN_PASSWORD)'==''" Text="SIGN_PASSWORD was not set, skipping signing of %(SignItems.Filename)%(SignItems.Extension)." /> -->
|
||||
<Message Condition="'$(SIGN_PASSWORD)'!=''" Text="Signing %(SignItems.Filename)%(SignItems.Extension)"
|
||||
Importance="high" />
|
||||
<Exec EchoOff="true" Condition="'$(SIGN_PASSWORD)'!=''"
|
||||
|
@ -267,7 +283,7 @@
|
|||
StandardOutputImportance="normal" />
|
||||
|
||||
<!-- Sign the installer -->
|
||||
<Warning Condition="'$(SIGN_PASSWORD)'==''" Text="SIGN_PASSWORD was not set, skipping signing of $(PublishInstallerExeName)." />
|
||||
<!-- <Warning Condition="'$(SIGN_PASSWORD)'==''" Text="SIGN_PASSWORD was not set, skipping signing of $(PublishInstallerExeName)." /> -->
|
||||
<Message Condition="'$(SIGN_PASSWORD)'!=''" Text="Signing $(PublishInstallerExeName)"
|
||||
Importance="high" />
|
||||
<Exec EchoOff="true" Condition="'$(SIGN_PASSWORD)'!=''"
|
||||
|
|
|
@ -28,12 +28,10 @@ EndProject
|
|||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "test", "test", "{480B577D-4E4A-4757-9A42-28A9AD33E6B0}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libopenrct2ui", "src\openrct2-ui\libopenrct2ui.vcxproj", "{8DD8AB7D-2EA6-44E3-8265-BAF08E832951}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{D24D94F6-2A74-480C-B512-629C306CE92F} = {D24D94F6-2A74-480C-B512-629C306CE92F}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "openrct2-cli", "src\openrct2-cli\openrct2-cli.vcxproj", "{B6808F71-30B4-4499-8FF6-0B1C86391842}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{7B8DB129-79EF-417E-B372-8A18E009D261} = {7B8DB129-79EF-417E-B372-8A18E009D261}
|
||||
{D24D94F6-2A74-480C-B512-629C306CE92F} = {D24D94F6-2A74-480C-B512-629C306CE92F}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
|
@ -105,4 +103,7 @@ Global
|
|||
{8DD8AB7D-2EA6-44E3-8265-BAF08E832951} = {2202A816-377D-4FA0-A7AF-7D4105F8A4FB}
|
||||
{B6808F71-30B4-4499-8FF6-0B1C86391842} = {2202A816-377D-4FA0-A7AF-7D4105F8A4FB}
|
||||
EndGlobalSection
|
||||
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||
SolutionGuid = {AE225595-70B7-4580-92EF-6F2B461EBFC7}
|
||||
EndGlobalSection
|
||||
EndGlobal
|
||||
|
|
|
@ -67,6 +67,7 @@ Some Linux distributions offer native packages already. These packages are usual
|
|||
* openSUSE OBS: [games/openrct2](https://software.opensuse.org/download.html?project=games&package=openrct2)
|
||||
* Gentoo (main portage tree): [games-simulation/openrct2](https://packages.gentoo.org/packages/games-simulation/openrct2)
|
||||
* NixOS (`nixos-unstable` channel): [openrct2](https://github.com/NixOS/nixpkgs/blob/master/pkgs/games/openrct2/default.nix)
|
||||
* Fedora 26/27 i386/amd64: [openrct2](https://copr.fedorainfracloud.org/coprs/nauticalnexus/openrct2/)
|
||||
|
||||
Some \*BSD operating systems offer native packages. These packages are usually third-party, but we're trying to resolve issues they are facing.
|
||||
* OpenBSD: [games/openrct2](http://openports.se/games/openrct2)
|
||||
|
@ -81,7 +82,7 @@ OpenRCT2 requires original files of RollerCoaster Tycoon 2 to play. It can be bo
|
|||
|
||||
### Windows:
|
||||
- 7 / 8 / 10
|
||||
- Visual Studio 2017 update 3 (Enterprise / Professional / [Community (Free)](https://www.visualstudio.com/vs/community/))
|
||||
- Visual Studio 2017 update 7 (Enterprise / Professional / [Community (Free)](https://www.visualstudio.com/vs/community/))
|
||||
- Desktop development with C++
|
||||
- [Windows 10 SDK (10.0.14393.0)](https://go.microsoft.com/fwlink/p/?LinkId=838916)
|
||||
- [7-Zip](http://www.7-zip.org/) (for deployment only)
|
||||
|
@ -108,7 +109,7 @@ The program can also be built as a command line program using CMake. This type o
|
|||
- curl (only if building with http support)
|
||||
- jansson (>= 2.5)
|
||||
- openssl (>= 1.0; only if building with multiplayer support)
|
||||
- iconv (part of glibc on Linux)
|
||||
- icu (>= 59.0)
|
||||
- zlib
|
||||
- gl (commonly provided by Mesa or GPU vendors; only for UI client, can be disabled)
|
||||
- cmake
|
||||
|
|
Binary file not shown.
After Width: | Height: | Size: 176 B |
|
@ -434,5 +434,10 @@
|
|||
"path": "edge/skyscraper_b.png",
|
||||
"x_offset": 2,
|
||||
"y_offset": 2
|
||||
},
|
||||
{
|
||||
"path": "icons/eyedropper.png",
|
||||
"x_offset": 5,
|
||||
"y_offset": 5
|
||||
}
|
||||
]
|
||||
|
|
|
@ -12,6 +12,8 @@ fi
|
|||
cachedir=.cache
|
||||
mkdir -p $cachedir
|
||||
|
||||
ci_env=`bash <(curl -s https://codecov.io/env)`
|
||||
|
||||
# Sets default target to "linux", if none specified
|
||||
TARGET=${TARGET-linux}
|
||||
|
||||
|
@ -28,15 +30,15 @@ pushd build
|
|||
if [[ $TARGET == "docker64" ]]
|
||||
then
|
||||
# CMAKE and MAKE opts from environment
|
||||
docker run -v "$PARENT":"$PARENT" -w "$PARENT"/build -i -t openrct2/openrct2:64bit-only bash -c "cmake ../ -DWITH_TESTS=on $OPENRCT2_CMAKE_OPTS && ninja $OPENRCT_MAKE_OPTS && ctest --output-on-failure"
|
||||
docker run $ci_env -e CCACHE_DIR=/ccache -v $HOME/.ccache:/ccache -v "$PARENT":"$PARENT" -w "$PARENT"/build -i -t openrct2/openrct2:64bit-only bash -c "export PATH=/usr/lib/ccache/bin:\$PATH && ccache --show-stats > ccache_before && cmake ../ -DWITH_TESTS=on $OPENRCT2_CMAKE_OPTS && ninja all install $OPENRCT_MAKE_OPTS && ccache --show-stats > ccache_after && ( diff -U100 ccache_before ccache_after || true ) && ./openrct2-cli scan-objects && ctest --output-on-failure && cd .. && bash <(curl -s https://codecov.io/bash) 2>\&1 | grep -v \"has arcs\""
|
||||
elif [[ $TARGET == "ubuntu_i686" ]]
|
||||
then
|
||||
# CMAKE and MAKE opts from environment
|
||||
docker run -v "$PARENT":"$PARENT" -w "$PARENT"/build -i -t openrct2/openrct2:ubuntu_i686 bash -c "cmake ../ -DWITH_TESTS=on $OPENRCT2_CMAKE_OPTS && ninja all testpaint install $OPENRCT_MAKE_OPTS && ctest --output-on-failure && ( ./testpaint --quiet || if [[ \$? -eq 1 ]] ; then echo Allowing failed tests to pass ; else echo here ; false; fi )"
|
||||
docker run $ci_env -e CCACHE_DIR=/ccache -v $HOME/.ccache:/ccache -v "$PARENT":"$PARENT" -w "$PARENT"/build -i -t openrct2/openrct2:ubuntu_i686 bash -c "export PATH=/usr/lib/ccache:\$PATH && ccache --show-stats > ccache_before && cmake ../ -DWITH_TESTS=on $OPENRCT2_CMAKE_OPTS && ninja all testpaint install $OPENRCT_MAKE_OPTS && ccache --show-stats > ccache_after && ( diff -U100 ccache_before ccache_after || true ) && ./openrct2-cli scan-objects && ctest --output-on-failure && ( ./testpaint --quiet || if [[ \$? -eq 1 ]] ; then echo Allowing failed tests to pass ; else echo here ; false; fi ) && cd .. && bash <(curl -s https://codecov.io/bash)"
|
||||
elif [[ $TARGET == "ubuntu_amd64" ]]
|
||||
then
|
||||
# CMAKE and MAKE opts from environment
|
||||
docker run -v "$PARENT":"$PARENT" -w "$PARENT"/build -i -t openrct2/openrct2:ubuntu_amd64 bash -c "cmake ../ -DWITH_TESTS=on $OPENRCT2_CMAKE_OPTS && ninja $OPENRCT_MAKE_OPTS install && ctest --output-on-failure"
|
||||
docker run $ci_env -e CCACHE_DIR=/ccache -v $HOME/.ccache:/ccache -v "$PARENT":"$PARENT" -w "$PARENT"/build -i -t openrct2/openrct2:ubuntu_amd64 bash -c "export PATH=/usr/lib/ccache:\$PATH && ccache --show-stats > ccache_before && cmake ../ -DWITH_TESTS=on $OPENRCT2_CMAKE_OPTS && ninja $OPENRCT_MAKE_OPTS install && ccache --show-stats > ccache_after && ( diff -U100 ccache_before ccache_after || true ) && ./openrct2-cli scan-objects && ctest --output-on-failure && cd .. && bash <(curl -s https://codecov.io/bash)"
|
||||
elif [[ $TARGET == "windows" ]]
|
||||
then
|
||||
# CMAKE and MAKE opts from environment
|
||||
|
|
|
@ -98,7 +98,11 @@ if [[ "$(uname)" == "Darwin" ]]; then
|
|||
fi
|
||||
elif [[ $(uname) == "Linux" ]]; then
|
||||
# Clone discord-rpc for Discord's Rich Presence support
|
||||
git clone https://github.com/discordapp/discord-rpc
|
||||
# Use tagged release to prevent upstream changes from breaking our code
|
||||
git clone https://github.com/IntelOrca/discord-rpc -b fix/134-iothreadholder
|
||||
# Use rapidjson with a hack for GCC 8, while awaiting a fix upstream:
|
||||
# https://github.com/Tencent/rapidjson/issues/1205
|
||||
git clone https://github.com/janisozaur/rapidjson discord-rpc/thirdparty/rapidjson -b patch-1
|
||||
# prevent build.sh from re-doing all the steps again
|
||||
case "$TARGET" in
|
||||
"ubuntu_i686")
|
||||
|
|
|
@ -10,7 +10,7 @@ android {
|
|||
targetSdkVersion 25
|
||||
|
||||
versionCode 2
|
||||
versionName '0.1.2'
|
||||
versionName '0.1.3'
|
||||
|
||||
externalNativeBuild {
|
||||
cmake {
|
||||
|
@ -90,6 +90,14 @@ android.applicationVariants.all { variant ->
|
|||
from zipTree(new File(buildDir, 'title-sequence.zip'))
|
||||
into "$variant.mergeAssets.outputDir/data/title"
|
||||
}
|
||||
download {
|
||||
src 'https://github.com/OpenRCT2/objects/releases/download/v1.0.2/objects.zip'
|
||||
dest new File(buildDir, 'objects.zip')
|
||||
}
|
||||
copy {
|
||||
from zipTree(new File(buildDir, 'objects.zip'))
|
||||
into "$variant.mergeAssets.outputDir/data/object"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -106,7 +106,7 @@ set(COMMON_COMPILE_OPTIONS "${COMMON_COMPILE_OPTIONS} -fPIC")
|
|||
|
||||
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,--undefined=Java_org_libsdl_app_SDLActivity_nativeInit")
|
||||
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,--no-undefined")
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++14 ${COMMON_COMPILE_OPTIONS} -Wnon-virtual-dtor")
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++1z ${COMMON_COMPILE_OPTIONS} -Wnon-virtual-dtor")
|
||||
get_filename_component(ORCT2_ROOT "${CMAKE_SOURCE_DIR}/../../../../../" REALPATH)
|
||||
|
||||
file(GLOB_RECURSE LIBOPENRCT2_SOURCES
|
||||
|
|
|
@ -17,6 +17,11 @@ add_executable(${PROJECT} ${OPENRCT2_CLI_SOURCES})
|
|||
|
||||
target_link_libraries(${PROJECT} "libopenrct2")
|
||||
|
||||
# Needed for interactive console
|
||||
set(THREADS_PREFER_PTHREAD_FLAG ON)
|
||||
find_package(Threads REQUIRED)
|
||||
target_link_libraries(${PROJECT} Threads::Threads)
|
||||
|
||||
if (APPLE)
|
||||
target_link_libraries(${PROJECT} "-framework Cocoa")
|
||||
endif ()
|
||||
|
|
|
@ -36,7 +36,6 @@ int main(int argc, const char * * argv)
|
|||
// Run OpenRCT2 with a plain context
|
||||
auto context = CreateContext();
|
||||
context->RunOpenRCT2(argc, argv);
|
||||
delete context;
|
||||
}
|
||||
return gExitCode;
|
||||
}
|
||||
|
|
|
@ -36,7 +36,6 @@
|
|||
</PropertyGroup>
|
||||
<ItemDefinitionGroup>
|
||||
<ClCompile>
|
||||
<ObjectFileName>$(IntDir)\%(RelativeDir)</ObjectFileName>
|
||||
<AdditionalOptions>$(OPENRCT2_CL_ADDITIONALOPTIONS) %(AdditionalOptions)</AdditionalOptions>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
|
|
|
@ -62,7 +62,7 @@ static char * * GetCommandLineArgs(int argc, wchar_t * * argvW)
|
|||
char * * argv = (char * *)malloc(argc * sizeof(char *));
|
||||
if (argv == nullptr)
|
||||
{
|
||||
return false;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
// Convert to UTF-8
|
||||
|
|
|
@ -41,7 +41,6 @@
|
|||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup>
|
||||
<ClCompile>
|
||||
<ObjectFileName>$(IntDir)\%(RelativeDir)</ObjectFileName>
|
||||
<AdditionalOptions>$(OPENRCT2_CL_ADDITIONALOPTIONS) %(AdditionalOptions)</AdditionalOptions>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
|
|
|
@ -8,8 +8,22 @@ endif ()
|
|||
option(DISABLE_OPENGL "Disable OpenGL support.")
|
||||
|
||||
# Third party libraries
|
||||
PKG_CHECK_MODULES(SDL2 REQUIRED sdl2)
|
||||
PKG_CHECK_MODULES(SPEEX REQUIRED speexdsp)
|
||||
if (MSVC)
|
||||
find_package(jansson REQUIRED)
|
||||
|
||||
find_path(SDL2_INCLUDE_DIRS SDL2/SDL.h)
|
||||
if (CMAKE_BUILD_TYPE STREQUAL "Debug")
|
||||
find_library(SDL2_LDFLAGS sdl2d)
|
||||
else ()
|
||||
find_library(SDL2_LDFLAGS sdl2)
|
||||
endif ()
|
||||
|
||||
find_library(SPEEX_LDFLAGS libspeexdsp)
|
||||
else ()
|
||||
PKG_CHECK_MODULES(SDL2 REQUIRED sdl2)
|
||||
PKG_CHECK_MODULES(SPEEX REQUIRED speexdsp)
|
||||
endif ()
|
||||
|
||||
if (NOT DISABLE_OPENGL)
|
||||
# GL doesn't work nicely with macOS, while find_package doesn't work with multiarch on Ubuntu.
|
||||
if (APPLE)
|
||||
|
@ -21,7 +35,8 @@ endif ()
|
|||
|
||||
# Sources
|
||||
file(GLOB_RECURSE OPENRCT2_UI_SOURCES
|
||||
"${CMAKE_CURRENT_LIST_DIR}/*.cpp"
|
||||
"${CMAKE_CURRENT_LIST_DIR}/*.cpp")
|
||||
file(GLOB_RECURSE OPENRCT2_UI_HEADERS
|
||||
"${CMAKE_CURRENT_LIST_DIR}/*.h"
|
||||
"${CMAKE_CURRENT_LIST_DIR}/*.hpp")
|
||||
|
||||
|
@ -56,7 +71,7 @@ endif ()
|
|||
# Includes
|
||||
target_include_directories(${PROJECT} PRIVATE "${CMAKE_CURRENT_LIST_DIR}/.."
|
||||
${SPEEX_INCLUDE_DIRS})
|
||||
target_include_directories(${PROJECT} SYSTEM PRIVATE ${SDL2_INCLUDE_DIRS})
|
||||
target_include_directories(${PROJECT} PRIVATE ${SDL2_INCLUDE_DIRS})
|
||||
|
||||
# Compiler flags
|
||||
if (WIN32)
|
||||
|
@ -64,6 +79,14 @@ if (WIN32)
|
|||
# tell it that it is
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D__USE_MINGW_ANSI_STDIO=1")
|
||||
endif ()
|
||||
if (MSVC)
|
||||
# Add DPI-aware manifest
|
||||
# HACK Add /MANIFEST:NO first to prevent cmake from adding its own manifest arguments
|
||||
if (NOT $ENV{VCToolsInstallDir} STREQUAL "")
|
||||
set(MANIFEST_DPI "$ENV{VCToolsInstallDir}\\Include\\Manifest\\PerMonitorHighDPIAware.manifest")
|
||||
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /MANIFEST:NO /MANIFEST /manifest:embed /manifestinput:\"${MANIFEST_DPI}\"")
|
||||
endif ()
|
||||
endif ()
|
||||
|
||||
# Defines
|
||||
if (DISABLE_OPENGL)
|
||||
|
@ -72,3 +95,22 @@ else ()
|
|||
# Makes OpenGL function get queried in run-time rather than linked-in
|
||||
add_definitions(-DOPENGL_NO_LINK)
|
||||
endif ()
|
||||
if (MSVC)
|
||||
add_definitions(-D__DISABLE_DLL_PROXY__)
|
||||
endif ()
|
||||
|
||||
# Add headers check to verify all headers carry their dependencies.
|
||||
# Only valid for Clang for now:
|
||||
# - GCC 8 does not support -Wno-pragma-once-outside-header
|
||||
# - Other compilers status unknown
|
||||
if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
|
||||
set(OPENRCT2_HEADERS_CHECK ${OPENRCT2_UI_HEADERS})
|
||||
# OpenGLAPIProc.h is not meant to be included directly.
|
||||
list(REMOVE_ITEM OPENRCT2_HEADERS_CHECK "${CMAKE_CURRENT_LIST_DIR}/drawing/engines/opengl/OpenGLAPIProc.h")
|
||||
add_library(${PROJECT}-headers-check OBJECT ${OPENRCT2_HEADERS_CHECK})
|
||||
set_target_properties(${PROJECT}-headers-check PROPERTIES LINKER_LANGUAGE CXX)
|
||||
set_source_files_properties(${OPENRCT2_HEADERS_CHECK} PROPERTIES LANGUAGE CXX)
|
||||
add_definitions("-x c++ -Wno-pragma-once-outside-header -Wno-unused-const-variable")
|
||||
get_target_property(OPENRCT2_INCLUDE_DIRS ${PROJECT} INCLUDE_DIRECTORIES)
|
||||
set_target_properties(${PROJECT}-headers-check PROPERTIES INCLUDE_DIRECTORIES "${OPENRCT2_INCLUDE_DIRS}")
|
||||
endif ()
|
||||
|
|
|
@ -17,7 +17,8 @@
|
|||
#include <openrct2/interface/Cursors.h>
|
||||
#include "CursorRepository.h"
|
||||
|
||||
namespace OpenRCT2 { namespace Ui
|
||||
// clang-format off
|
||||
namespace OpenRCT2::Ui
|
||||
{
|
||||
static constexpr const CursorData BlankCursorData =
|
||||
{
|
||||
|
@ -664,4 +665,5 @@ namespace OpenRCT2 { namespace Ui
|
|||
}
|
||||
return result;
|
||||
}
|
||||
} }
|
||||
}
|
||||
// clang-format on
|
||||
|
|
|
@ -14,6 +14,8 @@
|
|||
*****************************************************************************/
|
||||
#pragma endregion
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <map>
|
||||
#include <functional>
|
||||
|
||||
|
@ -23,59 +25,56 @@
|
|||
|
||||
struct SDL_Cursor;
|
||||
|
||||
namespace OpenRCT2
|
||||
namespace OpenRCT2::Ui
|
||||
{
|
||||
namespace Ui
|
||||
class CursorRepository
|
||||
{
|
||||
class CursorRepository
|
||||
private:
|
||||
class CursorSetHolder
|
||||
{
|
||||
private:
|
||||
class CursorSetHolder
|
||||
{
|
||||
private:
|
||||
SDL_Cursor * _cursors[CURSOR_COUNT] = {nullptr};
|
||||
public:
|
||||
CursorSetHolder(const std::function<SDL_Cursor *(CURSOR_ID)> & getCursor)
|
||||
{
|
||||
for (size_t i = 0; i < CURSOR_COUNT; i++)
|
||||
{
|
||||
_cursors[i] = getCursor(static_cast<CURSOR_ID>(i));
|
||||
}
|
||||
}
|
||||
|
||||
~CursorSetHolder()
|
||||
{
|
||||
for (size_t i = 0; i < CURSOR_COUNT; i++)
|
||||
{
|
||||
SDL_FreeCursor(_cursors[i]);
|
||||
}
|
||||
}
|
||||
|
||||
SDL_Cursor * getScaledCursor(CURSOR_ID cursorId)
|
||||
{
|
||||
return _cursors[cursorId];
|
||||
}
|
||||
};
|
||||
|
||||
constexpr static sint32 BASE_CURSOR_WIDTH = 32;
|
||||
constexpr static sint32 BASE_CURSOR_HEIGHT = 32;
|
||||
|
||||
CURSOR_ID _currentCursor = CURSOR_UNDEFINED;
|
||||
uint8 _currentCursorScale = 1;
|
||||
|
||||
std::map<uint8, CursorSetHolder> _scaledCursors;
|
||||
|
||||
SDL_Cursor * _cursors[CURSOR_COUNT] = {nullptr};
|
||||
public:
|
||||
~CursorRepository();
|
||||
void LoadCursors();
|
||||
CURSOR_ID GetCurrentCursor();
|
||||
void SetCurrentCursor(CURSOR_ID cursorId);
|
||||
void SetCursorScale(uint8 cursorScale);
|
||||
CursorSetHolder(const std::function<SDL_Cursor *(CURSOR_ID)> & getCursor)
|
||||
{
|
||||
for (size_t i = 0; i < CURSOR_COUNT; i++)
|
||||
{
|
||||
_cursors[i] = getCursor(static_cast<CURSOR_ID>(i));
|
||||
}
|
||||
}
|
||||
|
||||
private:
|
||||
SDL_Cursor * Create(const CursorData * cursorInfo, uint8 scale);
|
||||
void GenerateScaledCursorSetHolder(uint8 scale);
|
||||
static const CursorData * GetCursorData(CURSOR_ID cursorId);
|
||||
~CursorSetHolder()
|
||||
{
|
||||
for (size_t i = 0; i < CURSOR_COUNT; i++)
|
||||
{
|
||||
SDL_FreeCursor(_cursors[i]);
|
||||
}
|
||||
}
|
||||
|
||||
SDL_Cursor * getScaledCursor(CURSOR_ID cursorId)
|
||||
{
|
||||
return _cursors[cursorId];
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
constexpr static sint32 BASE_CURSOR_WIDTH = 32;
|
||||
constexpr static sint32 BASE_CURSOR_HEIGHT = 32;
|
||||
|
||||
CURSOR_ID _currentCursor = CURSOR_UNDEFINED;
|
||||
uint8 _currentCursorScale = 1;
|
||||
|
||||
std::map<uint8, CursorSetHolder> _scaledCursors;
|
||||
|
||||
public:
|
||||
~CursorRepository();
|
||||
void LoadCursors();
|
||||
CURSOR_ID GetCurrentCursor();
|
||||
void SetCurrentCursor(CURSOR_ID cursorId);
|
||||
void SetCursorScale(uint8 cursorScale);
|
||||
|
||||
private:
|
||||
SDL_Cursor * Create(const CursorData * cursorInfo, uint8 scale);
|
||||
void GenerateScaledCursorSetHolder(uint8 scale);
|
||||
static const CursorData * GetCursorData(CURSOR_ID cursorId);
|
||||
};
|
||||
}
|
||||
|
|
|
@ -21,9 +21,11 @@
|
|||
#include <openrct2/core/String.hpp>
|
||||
#include "TextComposition.h"
|
||||
|
||||
#include <openrct2/interface/Console.h>
|
||||
#include <openrct2/interface/InteractiveConsole.h>
|
||||
#include <openrct2-ui/interface/Window.h>
|
||||
#include <openrct2/localisation/Localisation.h>
|
||||
#include "interface/InGameConsole.h"
|
||||
#include "UiContext.h"
|
||||
|
||||
#ifdef __MACOSX__
|
||||
// macOS uses COMMAND rather than CTRL for many keyboard shortcuts
|
||||
|
@ -69,6 +71,8 @@ void TextComposition::Stop()
|
|||
|
||||
void TextComposition::HandleMessage(const SDL_Event * e)
|
||||
{
|
||||
auto& console = GetInGameConsole();
|
||||
|
||||
switch (e->type) {
|
||||
case SDL_TEXTEDITING:
|
||||
// When inputting Korean characters, `edit.length` is always zero
|
||||
|
@ -84,7 +88,7 @@ void TextComposition::HandleMessage(const SDL_Event * e)
|
|||
if (_session.Buffer != nullptr)
|
||||
{
|
||||
// HACK ` will close console, so don't input any text
|
||||
if (e->text.text[0] == '`' && gConsoleOpen) {
|
||||
if (e->text.text[0] == '`' && console.IsOpen()) {
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -93,7 +97,7 @@ void TextComposition::HandleMessage(const SDL_Event * e)
|
|||
Insert(newText);
|
||||
Memory::Free(newText);
|
||||
|
||||
console_refresh_caret();
|
||||
console.RefreshCaret();
|
||||
window_update_textbox();
|
||||
}
|
||||
break;
|
||||
|
@ -124,7 +128,7 @@ void TextComposition::HandleMessage(const SDL_Event * e)
|
|||
if (key == SDLK_BACKSPACE && (modifier & KEYBOARD_PRIMARY_MODIFIER))
|
||||
{
|
||||
Clear();
|
||||
console_refresh_caret();
|
||||
console.RefreshCaret();
|
||||
window_update_textbox();
|
||||
}
|
||||
|
||||
|
@ -138,17 +142,17 @@ void TextComposition::HandleMessage(const SDL_Event * e)
|
|||
_session.SelectionSize = endOffset - _session.SelectionStart;
|
||||
Delete();
|
||||
|
||||
console_refresh_caret();
|
||||
console.RefreshCaret();
|
||||
window_update_textbox();
|
||||
}
|
||||
break;
|
||||
case SDLK_HOME:
|
||||
CursorHome();
|
||||
console_refresh_caret();
|
||||
console.RefreshCaret();
|
||||
break;
|
||||
case SDLK_END:
|
||||
CursorEnd();
|
||||
console_refresh_caret();
|
||||
console.RefreshCaret();
|
||||
break;
|
||||
case SDLK_DELETE:
|
||||
{
|
||||
|
@ -157,7 +161,7 @@ void TextComposition::HandleMessage(const SDL_Event * e)
|
|||
_session.SelectionSize = _session.SelectionStart - startOffset;
|
||||
_session.SelectionStart = startOffset;
|
||||
Delete();
|
||||
console_refresh_caret();
|
||||
console.RefreshCaret();
|
||||
window_update_textbox();
|
||||
break;
|
||||
}
|
||||
|
@ -166,11 +170,11 @@ void TextComposition::HandleMessage(const SDL_Event * e)
|
|||
break;
|
||||
case SDLK_LEFT:
|
||||
CursorLeft();
|
||||
console_refresh_caret();
|
||||
console.RefreshCaret();
|
||||
break;
|
||||
case SDLK_RIGHT:
|
||||
CursorRight();
|
||||
console_refresh_caret();
|
||||
console.RefreshCaret();
|
||||
break;
|
||||
case SDLK_v:
|
||||
if ((modifier & KEYBOARD_PRIMARY_MODIFIER) && SDL_HasClipboardText())
|
||||
|
|
|
@ -14,45 +14,44 @@
|
|||
*****************************************************************************/
|
||||
#pragma endregion
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <openrct2/common.h>
|
||||
#include <openrct2/Context.h>
|
||||
#include <openrct2/ui/UiContext.h>
|
||||
|
||||
union SDL_Event;
|
||||
|
||||
namespace OpenRCT2
|
||||
namespace OpenRCT2::Ui
|
||||
{
|
||||
namespace Ui
|
||||
/**
|
||||
* Represents a
|
||||
*/
|
||||
class TextComposition
|
||||
{
|
||||
/**
|
||||
* Represents a
|
||||
*/
|
||||
class TextComposition
|
||||
{
|
||||
private:
|
||||
TextInputSession _session = { 0 };
|
||||
private:
|
||||
TextInputSession _session = {};
|
||||
|
||||
bool _imeActive = false;
|
||||
sint32 _imeStart = 0;
|
||||
sint32 _imeLength = 0;
|
||||
utf8 _imeBuffer[32] = { 0 };
|
||||
bool _imeActive = false;
|
||||
sint32 _imeStart = 0;
|
||||
sint32 _imeLength = 0;
|
||||
utf8 _imeBuffer[32] = {};
|
||||
|
||||
public:
|
||||
bool IsActive();
|
||||
TextInputSession * Start(utf8 * buffer, size_t bufferSize);
|
||||
void Stop();
|
||||
void HandleMessage(const SDL_Event * e);
|
||||
public:
|
||||
bool IsActive();
|
||||
TextInputSession * Start(utf8 * buffer, size_t bufferSize);
|
||||
void Stop();
|
||||
void HandleMessage(const SDL_Event * e);
|
||||
|
||||
private:
|
||||
void CursorHome();
|
||||
void CursorEnd();
|
||||
void CursorLeft();
|
||||
void CursorRight();
|
||||
void Insert(const utf8 * text);
|
||||
void InsertCodepoint(codepoint_t codepoint);
|
||||
void Clear();
|
||||
void Delete();
|
||||
void RecalculateLength();
|
||||
};
|
||||
}
|
||||
private:
|
||||
void CursorHome();
|
||||
void CursorEnd();
|
||||
void CursorLeft();
|
||||
void CursorRight();
|
||||
void Insert(const utf8 * text);
|
||||
void InsertCodepoint(codepoint_t codepoint);
|
||||
void Clear();
|
||||
void Delete();
|
||||
void RecalculateLength();
|
||||
};
|
||||
}
|
||||
|
|
|
@ -20,6 +20,7 @@
|
|||
#include <openrct2/PlatformEnvironment.h>
|
||||
#include <openrct2/ui/UiContext.h>
|
||||
#include "audio/AudioContext.h"
|
||||
#include "drawing/BitmapReader.h"
|
||||
#include "Ui.h"
|
||||
#include "UiContext.h"
|
||||
|
||||
|
@ -29,10 +30,16 @@ using namespace OpenRCT2;
|
|||
using namespace OpenRCT2::Audio;
|
||||
using namespace OpenRCT2::Ui;
|
||||
|
||||
template<typename T>
|
||||
static std::shared_ptr<T> to_shared(std::unique_ptr<T>&& src)
|
||||
{
|
||||
return std::shared_ptr<T>(std::move(src));
|
||||
}
|
||||
|
||||
/**
|
||||
* Main entry point for non-Windows systems. Windows instead uses its own DLL proxy.
|
||||
*/
|
||||
#ifdef _MSC_VER
|
||||
#if defined(_MSC_VER) && !defined(__DISABLE_DLL_PROXY__)
|
||||
int NormalisedMain(int argc, const char * * argv)
|
||||
#else
|
||||
int main(int argc, const char * * argv)
|
||||
|
@ -40,6 +47,7 @@ int main(int argc, const char * * argv)
|
|||
{
|
||||
int runGame = cmdline_run(argv, argc);
|
||||
core_init();
|
||||
RegisterBitmapReader();
|
||||
if (runGame == 1)
|
||||
{
|
||||
if (gOpenRCT2Headless)
|
||||
|
@ -47,21 +55,16 @@ int main(int argc, const char * * argv)
|
|||
// Run OpenRCT2 with a plain context
|
||||
auto context = CreateContext();
|
||||
context->RunOpenRCT2(argc, argv);
|
||||
delete context;
|
||||
}
|
||||
else
|
||||
{
|
||||
// Run OpenRCT2 with a UI context
|
||||
auto env = CreatePlatformEnvironment();
|
||||
auto audioContext = CreateAudioContext();
|
||||
auto uiContext = CreateUiContext(env);
|
||||
auto env = to_shared(CreatePlatformEnvironment());
|
||||
auto audioContext = to_shared(CreateAudioContext());
|
||||
auto uiContext = to_shared(CreateUiContext(env));
|
||||
auto context = CreateContext(env, audioContext, uiContext);
|
||||
|
||||
context->RunOpenRCT2(argc, argv);
|
||||
|
||||
delete context;
|
||||
delete uiContext;
|
||||
delete audioContext;
|
||||
}
|
||||
}
|
||||
return gExitCode;
|
||||
|
|
|
@ -26,54 +26,54 @@
|
|||
|
||||
#include <SDL.h>
|
||||
|
||||
namespace OpenRCT2 { namespace Ui
|
||||
namespace OpenRCT2::Ui
|
||||
{
|
||||
|
||||
class AndroidContext final : public IPlatformUiContext
|
||||
{
|
||||
private:
|
||||
|
||||
class AndroidContext final : public IPlatformUiContext
|
||||
public:
|
||||
AndroidContext()
|
||||
{
|
||||
private:
|
||||
|
||||
public:
|
||||
AndroidContext()
|
||||
{
|
||||
}
|
||||
|
||||
void SetWindowIcon(SDL_Window * window) override
|
||||
{
|
||||
}
|
||||
|
||||
bool IsSteamOverlayAttached() override
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
void ShowMessageBox(SDL_Window * window, const std::string &message) override
|
||||
{
|
||||
log_verbose(message.c_str());
|
||||
|
||||
STUB();
|
||||
}
|
||||
|
||||
std::string ShowFileDialog(SDL_Window * window, const FileDialogDesc &desc) override
|
||||
{
|
||||
STUB();
|
||||
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
std::string ShowDirectoryDialog(SDL_Window * window, const std::string &title) override
|
||||
{
|
||||
log_info(title.c_str());
|
||||
STUB();
|
||||
|
||||
return "/sdcard/rct2";
|
||||
}
|
||||
};
|
||||
|
||||
IPlatformUiContext * CreatePlatformUiContext()
|
||||
{
|
||||
return new AndroidContext();
|
||||
}
|
||||
} }
|
||||
|
||||
void SetWindowIcon(SDL_Window * window) override
|
||||
{
|
||||
}
|
||||
|
||||
bool IsSteamOverlayAttached() override
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
void ShowMessageBox(SDL_Window * window, const std::string &message) override
|
||||
{
|
||||
log_verbose(message.c_str());
|
||||
|
||||
STUB();
|
||||
}
|
||||
|
||||
std::string ShowFileDialog(SDL_Window * window, const FileDialogDesc &desc) override
|
||||
{
|
||||
STUB();
|
||||
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
std::string ShowDirectoryDialog(SDL_Window * window, const std::string &title) override
|
||||
{
|
||||
log_info(title.c_str());
|
||||
STUB();
|
||||
|
||||
return "/sdcard/rct2";
|
||||
}
|
||||
};
|
||||
|
||||
IPlatformUiContext * CreatePlatformUiContext()
|
||||
{
|
||||
return new AndroidContext();
|
||||
}
|
||||
}
|
||||
|
||||
#endif // __ANDROID__
|
||||
|
|
|
@ -20,6 +20,7 @@
|
|||
#include <sstream>
|
||||
#include <stdexcept>
|
||||
#include <openrct2/common.h>
|
||||
#include <openrct2/core/Path.hpp>
|
||||
#include <openrct2/core/String.hpp>
|
||||
#include <openrct2/localisation/Localisation.h>
|
||||
#include <openrct2/ui/UiContext.h>
|
||||
|
@ -28,7 +29,7 @@
|
|||
|
||||
#include <SDL.h>
|
||||
|
||||
namespace OpenRCT2 { namespace Ui
|
||||
namespace OpenRCT2::Ui
|
||||
{
|
||||
enum class DIALOG_TYPE
|
||||
{
|
||||
|
@ -169,13 +170,13 @@ namespace OpenRCT2 { namespace Ui
|
|||
// array must be carefully populated, at least the first element.
|
||||
std::string pattern = desc.Filters[0].Pattern;
|
||||
std::string defaultExtension = pattern.substr(pattern.find_last_of('.'));
|
||||
int dotPosition = output.size() - defaultExtension.size();
|
||||
// Add the default extension if no extension is specified
|
||||
if (output.substr(dotPosition, defaultExtension.size()).compare(defaultExtension) == 0)
|
||||
{
|
||||
result = output;
|
||||
}
|
||||
else
|
||||
|
||||
const utf8 * filename = Path::GetFileName(output.c_str());
|
||||
|
||||
// If there is no extension, append the pattern
|
||||
const utf8 * extension = Path::GetExtension(filename);
|
||||
result = output;
|
||||
if (extension[0] == '\0' && !defaultExtension.empty())
|
||||
{
|
||||
result = output.append(defaultExtension);
|
||||
}
|
||||
|
@ -373,7 +374,7 @@ namespace OpenRCT2 { namespace Ui
|
|||
|
||||
static void ThrowMissingDialogApp()
|
||||
{
|
||||
IUiContext * uiContext = GetContext()->GetUiContext();
|
||||
auto uiContext = GetContext()->GetUiContext();
|
||||
std::string dialogMissingWarning = language_get_string(STR_MISSING_DIALOG_APPLICATION_ERROR);
|
||||
uiContext->ShowMessageBox(dialogMissingWarning);
|
||||
throw std::runtime_error(dialogMissingWarning);
|
||||
|
@ -384,6 +385,6 @@ namespace OpenRCT2 { namespace Ui
|
|||
{
|
||||
return new LinuxContext();
|
||||
}
|
||||
} }
|
||||
} // namespace OpenRCT2::Ui
|
||||
|
||||
#endif // __linux__ || __OpenBSD__
|
||||
|
|
|
@ -54,7 +54,7 @@ static std::wstring SHGetPathFromIDListLongPath(LPCITEMIDLIST pidl)
|
|||
return pszPath;
|
||||
}
|
||||
|
||||
namespace OpenRCT2 { namespace Ui
|
||||
namespace OpenRCT2::Ui
|
||||
{
|
||||
class Win32Context : public IPlatformUiContext
|
||||
{
|
||||
|
@ -105,7 +105,7 @@ namespace OpenRCT2 { namespace Ui
|
|||
std::wstring wcFilters = GetFilterString(desc.Filters);
|
||||
|
||||
// Set open file name options
|
||||
OPENFILENAMEW openFileName = { 0 };
|
||||
OPENFILENAMEW openFileName = {};
|
||||
openFileName.lStructSize = sizeof(OPENFILENAMEW);
|
||||
openFileName.hwndOwner = GetHWND(window);
|
||||
openFileName.lpstrTitle = wcTitle.c_str();
|
||||
|
@ -163,7 +163,7 @@ namespace OpenRCT2 { namespace Ui
|
|||
SUCCEEDED(SHGetMalloc(&lpMalloc)))
|
||||
{
|
||||
std::wstring titleW = String::ToUtf16(title);
|
||||
BROWSEINFOW bi = { 0 };
|
||||
BROWSEINFOW bi = {};
|
||||
bi.lpszTitle = titleW.c_str();
|
||||
bi.ulFlags = BIF_RETURNONLYFSDIRS | BIF_NEWDIALOGSTYLE | BIF_NONEWFOLDERBUTTON;
|
||||
|
||||
|
@ -224,6 +224,6 @@ namespace OpenRCT2 { namespace Ui
|
|||
{
|
||||
return new Win32Context();
|
||||
}
|
||||
} }
|
||||
} // namespace OpenRCT2::Ui
|
||||
|
||||
#endif // _WIN32
|
||||
|
|
|
@ -27,13 +27,14 @@
|
|||
#include <openrct2/core/Math.hpp>
|
||||
#include <openrct2/core/String.hpp>
|
||||
#include <openrct2/drawing/IDrawingEngine.h>
|
||||
#include <openrct2/drawing/Drawing.h>
|
||||
#include <openrct2/localisation/StringIds.h>
|
||||
#include <openrct2/platform/Platform2.h>
|
||||
#include <openrct2/ui/UiContext.h>
|
||||
#include <openrct2/ui/WindowManager.h>
|
||||
#include <openrct2/Version.h>
|
||||
#include "CursorRepository.h"
|
||||
#include "drawing/engines/DrawingEngines.h"
|
||||
#include "drawing/engines/DrawingEngineFactory.hpp"
|
||||
#include "input/KeyboardShortcuts.h"
|
||||
#include "SDLException.h"
|
||||
#include "TextComposition.h"
|
||||
|
@ -41,9 +42,11 @@
|
|||
#include "WindowManager.h"
|
||||
|
||||
#include <openrct2/Input.h>
|
||||
#include <openrct2/interface/Console.h>
|
||||
#include <openrct2/interface/InteractiveConsole.h>
|
||||
#include <openrct2-ui/interface/Window.h>
|
||||
|
||||
#include "interface/InGameConsole.h"
|
||||
|
||||
using namespace OpenRCT2;
|
||||
using namespace OpenRCT2::Drawing;
|
||||
using namespace OpenRCT2::Input;
|
||||
|
@ -79,15 +82,19 @@ private:
|
|||
// Input
|
||||
KeyboardShortcuts _keyboardShortcuts;
|
||||
TextComposition _textComposition;
|
||||
CursorState _cursorState = { 0 };
|
||||
CursorState _cursorState = {};
|
||||
uint32 _lastKeyPressed = 0;
|
||||
const uint8 * _keysState = nullptr;
|
||||
uint8 _keysPressed[256] = { 0 };
|
||||
uint8 _keysPressed[256] = {};
|
||||
uint32 _lastGestureTimestamp = 0;
|
||||
float _gestureRadius = 0;
|
||||
|
||||
InGameConsole _inGameConsole;
|
||||
|
||||
public:
|
||||
explicit UiContext(IPlatformEnvironment * env)
|
||||
InGameConsole& GetInGameConsole() { return _inGameConsole; }
|
||||
|
||||
explicit UiContext(const std::shared_ptr<IPlatformEnvironment>& env)
|
||||
: _platformUiContext(CreatePlatformUiContext()),
|
||||
_windowManager(CreateWindowManager()),
|
||||
_keyboardShortcuts(env)
|
||||
|
@ -109,6 +116,16 @@ public:
|
|||
delete _platformUiContext;
|
||||
}
|
||||
|
||||
void Update() override
|
||||
{
|
||||
_inGameConsole.Update();
|
||||
}
|
||||
|
||||
void Draw(rct_drawpixelinfo * dpi) override
|
||||
{
|
||||
_inGameConsole.Draw(dpi);
|
||||
}
|
||||
|
||||
// Window
|
||||
void * GetWindow() override
|
||||
{
|
||||
|
@ -244,20 +261,9 @@ public:
|
|||
}
|
||||
|
||||
// Drawing
|
||||
IDrawingEngine * CreateDrawingEngine(DRAWING_ENGINE_TYPE type) override
|
||||
std::shared_ptr<Drawing::IDrawingEngineFactory> GetDrawingEngineFactory() override
|
||||
{
|
||||
switch ((sint32)type) {
|
||||
case DRAWING_ENGINE_SOFTWARE:
|
||||
return CreateSoftwareDrawingEngine(this);
|
||||
case DRAWING_ENGINE_SOFTWARE_WITH_HARDWARE_DISPLAY:
|
||||
return CreateHardwareDisplayDrawingEngine(this);
|
||||
#ifndef DISABLE_OPENGL
|
||||
case DRAWING_ENGINE_OPENGL:
|
||||
return CreateOpenGLDrawingEngine(this);
|
||||
#endif
|
||||
default:
|
||||
return nullptr;
|
||||
}
|
||||
return std::make_shared<DrawingEngineFactory>();
|
||||
}
|
||||
|
||||
// Text input
|
||||
|
@ -349,9 +355,9 @@ public:
|
|||
_cursorState.y = (sint32)(e.motion.y / gConfigGeneral.window_scale);
|
||||
break;
|
||||
case SDL_MOUSEWHEEL:
|
||||
if (gConsoleOpen)
|
||||
if (_inGameConsole.IsOpen())
|
||||
{
|
||||
console_scroll(e.wheel.y * 3); // Scroll 3 lines at a time
|
||||
_inGameConsole.Scroll(e.wheel.y * 3); // Scroll 3 lines at a time
|
||||
break;
|
||||
}
|
||||
_cursorState.wheel -= e.wheel.y;
|
||||
|
@ -533,8 +539,11 @@ public:
|
|||
void CloseWindow() override
|
||||
{
|
||||
drawing_engine_dispose();
|
||||
SDL_DestroyWindow(_window);
|
||||
_window = nullptr;
|
||||
if (_window != nullptr)
|
||||
{
|
||||
SDL_DestroyWindow(_window);
|
||||
_window = nullptr;
|
||||
}
|
||||
}
|
||||
|
||||
void RecreateWindow() override
|
||||
|
@ -568,69 +577,6 @@ public:
|
|||
return _windowManager;
|
||||
}
|
||||
|
||||
bool ReadBMP(void * * outPixels, uint32 * outWidth, uint32 * outHeight, const std::string &path) override
|
||||
{
|
||||
auto bitmap = SDL_LoadBMP(path.c_str());
|
||||
if (bitmap != nullptr)
|
||||
{
|
||||
sint32 numChannels = bitmap->format->BytesPerPixel;
|
||||
if (numChannels < 3 || bitmap->format->BitsPerPixel < 24)
|
||||
{
|
||||
context_show_error(STR_HEIGHT_MAP_ERROR, STR_ERROR_24_BIT_BITMAP);
|
||||
SDL_FreeSurface(bitmap);
|
||||
return false;
|
||||
}
|
||||
|
||||
// Copy pixels over, then discard the surface
|
||||
*outPixels = nullptr;
|
||||
*outWidth = bitmap->w;
|
||||
*outHeight = bitmap->h;
|
||||
if (SDL_LockSurface(bitmap) == 0)
|
||||
{
|
||||
*outPixels = malloc(bitmap->w * bitmap->h * 4);
|
||||
memset(*outPixels, 0xFF, bitmap->w * bitmap->h);
|
||||
|
||||
auto src = (const uint8 *)bitmap->pixels;
|
||||
auto dst = (uint8 *)*outPixels;
|
||||
if (numChannels == 4)
|
||||
{
|
||||
for (sint32 y = 0; y < bitmap->h; y++)
|
||||
{
|
||||
memcpy(dst, src, bitmap->w);
|
||||
src += bitmap->pitch;
|
||||
dst += bitmap->w;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
for (sint32 y = 0; y < bitmap->h; y++)
|
||||
{
|
||||
for (sint32 x = 0; x < bitmap->w; x++)
|
||||
{
|
||||
memcpy(dst, src, 3);
|
||||
src += 3;
|
||||
dst += 4;
|
||||
}
|
||||
src += bitmap->pitch - (bitmap->w * 3);
|
||||
}
|
||||
}
|
||||
SDL_UnlockSurface(bitmap);
|
||||
}
|
||||
else
|
||||
{
|
||||
return false;
|
||||
}
|
||||
SDL_FreeSurface(bitmap);
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
log_warning("Failed to load bitmap: %s", SDL_GetError());
|
||||
context_show_error(STR_HEIGHT_MAP_ERROR, STR_ERROR_READING_BITMAP);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
bool SetClipboardText(const utf8* target) override
|
||||
{
|
||||
return (SDL_SetClipboardText(target) == 0);
|
||||
|
@ -794,7 +740,13 @@ private:
|
|||
}
|
||||
};
|
||||
|
||||
IUiContext * OpenRCT2::Ui::CreateUiContext(IPlatformEnvironment * env)
|
||||
std::unique_ptr<IUiContext> OpenRCT2::Ui::CreateUiContext(const std::shared_ptr<IPlatformEnvironment>& env)
|
||||
{
|
||||
return new UiContext(env);
|
||||
return std::make_unique<UiContext>(env);
|
||||
}
|
||||
|
||||
InGameConsole& OpenRCT2::Ui::GetInGameConsole()
|
||||
{
|
||||
auto uiContext = std::static_pointer_cast<UiContext>(GetContext()->GetUiContext());
|
||||
return uiContext->GetInGameConsole();
|
||||
}
|
||||
|
|
|
@ -16,6 +16,7 @@
|
|||
|
||||
#pragma once
|
||||
|
||||
#include <memory>
|
||||
#include <string>
|
||||
#include <openrct2/common.h>
|
||||
|
||||
|
@ -29,6 +30,7 @@ namespace OpenRCT2
|
|||
namespace Ui
|
||||
{
|
||||
struct FileDialogDesc;
|
||||
class InGameConsole;
|
||||
interface IUiContext;
|
||||
|
||||
interface IPlatformUiContext
|
||||
|
@ -42,7 +44,9 @@ namespace OpenRCT2
|
|||
virtual std::string ShowDirectoryDialog(SDL_Window * window, const std::string &title) abstract;
|
||||
};
|
||||
|
||||
IUiContext * CreateUiContext(IPlatformEnvironment * env);
|
||||
std::unique_ptr<IUiContext> CreateUiContext(const std::shared_ptr<IPlatformEnvironment>& env);
|
||||
IPlatformUiContext * CreatePlatformUiContext();
|
||||
}
|
||||
}
|
||||
|
||||
InGameConsole& GetInGameConsole();
|
||||
} // namespace Ui
|
||||
} // namespace OpenRCT2
|
||||
|
|
|
@ -27,7 +27,7 @@
|
|||
|
||||
#include <SDL.h>
|
||||
|
||||
namespace OpenRCT2 { namespace Ui
|
||||
namespace OpenRCT2::Ui
|
||||
{
|
||||
class macOSContext final : public IPlatformUiContext
|
||||
{
|
||||
|
@ -182,6 +182,6 @@ namespace OpenRCT2 { namespace Ui
|
|||
{
|
||||
return new macOSContext();
|
||||
}
|
||||
} }
|
||||
} // namespace OpenRCT2::Ui
|
||||
|
||||
#endif // __APPLE__ && __MACH__
|
||||
|
|
|
@ -179,6 +179,8 @@ public:
|
|||
return window_banner_open(id);
|
||||
case WD_DEMOLISH_RIDE:
|
||||
return window_ride_demolish_prompt_open(id);
|
||||
case WD_REFURBISH_RIDE:
|
||||
return window_ride_refurbish_prompt_open(id);
|
||||
case WD_NEW_CAMPAIGN:
|
||||
return window_new_campaign_open(id);
|
||||
case WD_SIGN:
|
||||
|
@ -343,20 +345,6 @@ public:
|
|||
window_tile_inspector_clear_clipboard();
|
||||
break;
|
||||
|
||||
case INTENT_ACTION_SET_TILE_INSPECTOR_PAGE:
|
||||
{
|
||||
auto window = window_find_by_class(WC_TILE_INSPECTOR);
|
||||
window_tile_inspector_set_page(window, static_cast<TILE_INSPECTOR_PAGE>(intent.GetUIntExtra(INTENT_EXTRA_PAGE)));
|
||||
break;
|
||||
}
|
||||
|
||||
case INTENT_ACTION_SET_TILE_INSPECTOR_BUTTONS:
|
||||
{
|
||||
auto window = window_find_by_class(WC_TILE_INSPECTOR);
|
||||
window_tile_inspector_auto_set_buttons(window);
|
||||
break;
|
||||
}
|
||||
|
||||
case INTENT_ACTION_INVALIDATE_VEHICLE_WINDOW:
|
||||
{
|
||||
rct_vehicle * vehicle = static_cast<rct_vehicle *>(intent.GetPointerExtra(INTENT_EXTRA_VEHICLE));
|
||||
|
@ -410,7 +398,10 @@ public:
|
|||
}
|
||||
break;
|
||||
}
|
||||
|
||||
case INTENT_ACTION_UPDATE_RESEARCH:
|
||||
window_invalidate_by_class(WC_FINANCES);
|
||||
window_invalidate_by_class(WC_RESEARCH);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -14,12 +14,11 @@
|
|||
*****************************************************************************/
|
||||
#pragma endregion
|
||||
|
||||
#include <string>
|
||||
#include <openrct2/common.h>
|
||||
|
||||
namespace OpenRCT2 { namespace Ui
|
||||
namespace OpenRCT2::Ui
|
||||
{
|
||||
interface IWindowManager;
|
||||
|
||||
IWindowManager * CreateWindowManager();
|
||||
} }
|
||||
}
|
||||
|
|
|
@ -24,7 +24,7 @@
|
|||
#include "AudioContext.h"
|
||||
#include "AudioFormat.h"
|
||||
|
||||
namespace OpenRCT2 { namespace Audio
|
||||
namespace OpenRCT2::Audio
|
||||
{
|
||||
class AudioChannelImpl : public ISDLAudioChannel
|
||||
{
|
||||
|
@ -247,7 +247,7 @@ namespace OpenRCT2 { namespace Audio
|
|||
|
||||
AudioFormat GetFormat() const override
|
||||
{
|
||||
AudioFormat result = { 0 };
|
||||
AudioFormat result = {};
|
||||
// The second check is there because NullAudioSource does not implement GetFormat. Avoid calling it.
|
||||
if (_source != nullptr && _source->GetLength() > 0)
|
||||
{
|
||||
|
@ -295,4 +295,4 @@ namespace OpenRCT2 { namespace Audio
|
|||
{
|
||||
return new (std::nothrow) AudioChannelImpl();
|
||||
}
|
||||
} }
|
||||
} // namespace OpenRCT2::Audio
|
||||
|
|
|
@ -21,7 +21,7 @@
|
|||
#include "../SDLException.h"
|
||||
#include "AudioContext.h"
|
||||
|
||||
namespace OpenRCT2 { namespace Audio
|
||||
namespace OpenRCT2::Audio
|
||||
{
|
||||
class AudioContext : public IAudioContext
|
||||
{
|
||||
|
@ -94,8 +94,8 @@ namespace OpenRCT2 { namespace Audio
|
|||
void StopVehicleSounds() override { }
|
||||
};
|
||||
|
||||
IAudioContext * CreateAudioContext()
|
||||
std::unique_ptr<IAudioContext> CreateAudioContext()
|
||||
{
|
||||
return new AudioContext();
|
||||
return std::make_unique<AudioContext>();
|
||||
}
|
||||
} }
|
||||
} // namespace OpenRCT2::Audio
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
|
||||
#pragma once
|
||||
|
||||
#include <memory>
|
||||
#include <string>
|
||||
#include <openrct2/common.h>
|
||||
#include <openrct2/audio/AudioChannel.h>
|
||||
|
@ -9,7 +10,7 @@
|
|||
struct SDL_RWops;
|
||||
using SpeexResamplerState = struct SpeexResamplerState_;
|
||||
|
||||
namespace OpenRCT2 { namespace Audio
|
||||
namespace OpenRCT2::Audio
|
||||
{
|
||||
struct AudioFormat;
|
||||
interface IAudioContext;
|
||||
|
@ -69,5 +70,6 @@ namespace OpenRCT2 { namespace Audio
|
|||
IAudioMixer * Create();
|
||||
}
|
||||
|
||||
IAudioContext * CreateAudioContext();
|
||||
} }
|
||||
std::unique_ptr<IAudioContext> CreateAudioContext();
|
||||
|
||||
} // namespace OpenRCT2::Audio
|
||||
|
|
|
@ -19,7 +19,7 @@
|
|||
#include <openrct2/common.h>
|
||||
#include <SDL2/SDL.h>
|
||||
|
||||
namespace OpenRCT2 { namespace Audio
|
||||
namespace OpenRCT2::Audio
|
||||
{
|
||||
/**
|
||||
* Represents the size, frequency and number of channels for
|
||||
|
@ -53,4 +53,4 @@ namespace OpenRCT2 { namespace Audio
|
|||
{
|
||||
return !(lhs == rhs);
|
||||
}
|
||||
} }
|
||||
} // namespace OpenRCT2::Audio
|
||||
|
|
|
@ -36,7 +36,7 @@
|
|||
#include <openrct2/OpenRCT2.h>
|
||||
#include <openrct2/platform/platform.h>
|
||||
|
||||
namespace OpenRCT2 { namespace Audio
|
||||
namespace OpenRCT2::Audio
|
||||
{
|
||||
class AudioMixerImpl final : public IAudioMixer
|
||||
{
|
||||
|
@ -44,7 +44,7 @@ namespace OpenRCT2 { namespace Audio
|
|||
IAudioSource * _nullSource = nullptr;
|
||||
|
||||
SDL_AudioDeviceID _deviceId = 0;
|
||||
AudioFormat _format = { 0 };
|
||||
AudioFormat _format = {};
|
||||
std::list<ISDLAudioChannel *> _channels;
|
||||
float _volume = 1.0f;
|
||||
float _adjustSoundVolume = 0.0f;
|
||||
|
@ -75,7 +75,7 @@ namespace OpenRCT2 { namespace Audio
|
|||
{
|
||||
Close();
|
||||
|
||||
SDL_AudioSpec want = { 0 };
|
||||
SDL_AudioSpec want = {};
|
||||
want.freq = 22050;
|
||||
want.format = AUDIO_S16SYS;
|
||||
want.channels = 2;
|
||||
|
@ -513,4 +513,4 @@ namespace OpenRCT2 { namespace Audio
|
|||
{
|
||||
return new AudioMixerImpl();
|
||||
}
|
||||
} }
|
||||
} // namespace OpenRCT2::Audio
|
||||
|
|
|
@ -21,7 +21,7 @@
|
|||
#include "AudioContext.h"
|
||||
#include "AudioFormat.h"
|
||||
|
||||
namespace OpenRCT2 { namespace Audio
|
||||
namespace OpenRCT2::Audio
|
||||
{
|
||||
/**
|
||||
* An audio source where raw PCM data is streamed directly from
|
||||
|
@ -30,7 +30,7 @@ namespace OpenRCT2 { namespace Audio
|
|||
class FileAudioSource final : public ISDLAudioSource
|
||||
{
|
||||
private:
|
||||
AudioFormat _format = { 0 };
|
||||
AudioFormat _format = {};
|
||||
SDL_RWops * _rw = nullptr;
|
||||
uint64 _dataBegin = 0;
|
||||
uint64 _dataLength = 0;
|
||||
|
@ -132,7 +132,6 @@ namespace OpenRCT2 { namespace Audio
|
|||
default:
|
||||
log_verbose("Invalid bits per sample");
|
||||
return false;
|
||||
break;
|
||||
}
|
||||
_format.channels = waveFormat.channels;
|
||||
|
||||
|
@ -207,4 +206,4 @@ namespace OpenRCT2 { namespace Audio
|
|||
}
|
||||
return source;
|
||||
}
|
||||
} }
|
||||
} // namespace OpenRCT2::Audio
|
||||
|
|
|
@ -24,7 +24,7 @@
|
|||
#include "AudioContext.h"
|
||||
#include "AudioFormat.h"
|
||||
|
||||
namespace OpenRCT2 { namespace Audio
|
||||
namespace OpenRCT2::Audio
|
||||
{
|
||||
/**
|
||||
* An audio source where raw PCM data is initially loaded into RAM from
|
||||
|
@ -33,7 +33,7 @@ namespace OpenRCT2 { namespace Audio
|
|||
class MemoryAudioSource final : public ISDLAudioSource
|
||||
{
|
||||
private:
|
||||
AudioFormat _format = { 0 };
|
||||
AudioFormat _format = {};
|
||||
std::vector<uint8> _data;
|
||||
uint8 * _dataSDL = nullptr;
|
||||
size_t _length = 0;
|
||||
|
@ -85,7 +85,7 @@ namespace OpenRCT2 { namespace Audio
|
|||
SDL_RWops * rw = SDL_RWFromFile(path, "rb");
|
||||
if (rw != nullptr)
|
||||
{
|
||||
SDL_AudioSpec audiospec = { 0 };
|
||||
SDL_AudioSpec audiospec = {};
|
||||
uint32 audioLen;
|
||||
SDL_AudioSpec * spec = SDL_LoadWAV_RW(rw, false, &audiospec, &_dataSDL, &audioLen);
|
||||
if (spec != nullptr)
|
||||
|
@ -243,4 +243,4 @@ namespace OpenRCT2 { namespace Audio
|
|||
}
|
||||
return source;
|
||||
}
|
||||
} }
|
||||
} // namespace OpenRCT2::Audio
|
||||
|
|
|
@ -0,0 +1,112 @@
|
|||
#pragma region Copyright (c) 2018 OpenRCT2 Developers
|
||||
/*****************************************************************************
|
||||
* OpenRCT2, an open source clone of Roller Coaster Tycoon 2.
|
||||
*
|
||||
* OpenRCT2 is the work of many authors, a full list can be found in contributors.md
|
||||
* For more information, visit https://github.com/OpenRCT2/OpenRCT2
|
||||
*
|
||||
* OpenRCT2 is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* A full copy of the GNU General Public License can be found in licence.txt
|
||||
*****************************************************************************/
|
||||
#pragma endregion
|
||||
|
||||
#include <algorithm>
|
||||
#include <stdexcept>
|
||||
#include <cstring>
|
||||
#include <SDL2/SDL.h>
|
||||
#include <openrct2/core/Imaging.h>
|
||||
#include "BitmapReader.h"
|
||||
|
||||
static std::vector<uint8> ReadToVector(std::istream &stream)
|
||||
{
|
||||
std::vector<uint8> result;
|
||||
if (!stream.eof() && !stream.fail())
|
||||
{
|
||||
stream.seekg(0, std::ios_base::end);
|
||||
auto size = stream.tellg();
|
||||
result.resize(size);
|
||||
stream.seekg(0, std::ios_base::beg);
|
||||
stream.read((char *)result.data(), size);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
// TODO Bitmaps aren't very complicated to read so we should probably just write our
|
||||
// own implementation in libopenrct2 and spare the AOT implementation registration.
|
||||
static Image ReadBitmap(std::istream &istream, IMAGE_FORMAT format)
|
||||
{
|
||||
auto buffer = ReadToVector(istream);
|
||||
auto sdlStream = SDL_RWFromConstMem(buffer.data(), (int)buffer.size());
|
||||
auto bitmap = SDL_LoadBMP_RW(sdlStream, 1);
|
||||
if (bitmap != nullptr)
|
||||
{
|
||||
auto numChannels = bitmap->format->BytesPerPixel;
|
||||
if (numChannels < 3 || bitmap->format->BitsPerPixel < 24)
|
||||
{
|
||||
SDL_FreeSurface(bitmap);
|
||||
throw std::runtime_error("Only 24-bit bitmaps are supported.");
|
||||
}
|
||||
|
||||
// Copy pixels over, then discard the surface
|
||||
if (SDL_LockSurface(bitmap) == 0)
|
||||
{
|
||||
Image image;
|
||||
image.Width = bitmap->w;
|
||||
image.Height = bitmap->h;
|
||||
image.Depth = 32;
|
||||
image.Pixels.resize(bitmap->w * bitmap->h * 4);
|
||||
image.Stride = bitmap->w * 4;
|
||||
|
||||
// Clear image with 0xFF
|
||||
std::fill(image.Pixels.begin(), image.Pixels.end(), 0xFF);
|
||||
|
||||
// Copy pixels over
|
||||
auto src = (const uint8 *)bitmap->pixels;
|
||||
auto dst = image.Pixels.data();
|
||||
if (numChannels == 4)
|
||||
{
|
||||
for (sint32 y = 0; y < bitmap->h; y++)
|
||||
{
|
||||
std::memcpy(dst, src, bitmap->w);
|
||||
src += bitmap->pitch;
|
||||
dst += bitmap->w;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
for (sint32 y = 0; y < bitmap->h; y++)
|
||||
{
|
||||
for (sint32 x = 0; x < bitmap->w; x++)
|
||||
{
|
||||
std::memcpy(dst, src, 3);
|
||||
src += 3;
|
||||
dst += 4;
|
||||
}
|
||||
src += bitmap->pitch - (bitmap->w * 3);
|
||||
}
|
||||
}
|
||||
SDL_UnlockSurface(bitmap);
|
||||
SDL_FreeSurface(bitmap);
|
||||
|
||||
return image;
|
||||
}
|
||||
else
|
||||
{
|
||||
SDL_FreeSurface(bitmap);
|
||||
throw std::runtime_error("Unable to lock surface.");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
throw std::runtime_error(SDL_GetError());
|
||||
}
|
||||
}
|
||||
|
||||
void RegisterBitmapReader()
|
||||
{
|
||||
Imaging::SetReader(IMAGE_FORMAT::BITMAP, ReadBitmap);
|
||||
}
|
|
@ -0,0 +1,17 @@
|
|||
#pragma region Copyright (c) 2018 OpenRCT2 Developers
|
||||
/*****************************************************************************
|
||||
* OpenRCT2, an open source clone of Roller Coaster Tycoon 2.
|
||||
*
|
||||
* OpenRCT2 is the work of many authors, a full list can be found in contributors.md
|
||||
* For more information, visit https://github.com/OpenRCT2/OpenRCT2
|
||||
*
|
||||
* OpenRCT2 is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* A full copy of the GNU General Public License can be found in licence.txt
|
||||
*****************************************************************************/
|
||||
#pragma endregion
|
||||
|
||||
void RegisterBitmapReader();
|
|
@ -0,0 +1,57 @@
|
|||
#pragma region Copyright (c) 2014-2017 OpenRCT2 Developers
|
||||
/*****************************************************************************
|
||||
* OpenRCT2, an open source clone of Roller Coaster Tycoon 2.
|
||||
*
|
||||
* OpenRCT2 is the work of many authors, a full list can be found in contributors.md
|
||||
* For more information, visit https://github.com/OpenRCT2/OpenRCT2
|
||||
*
|
||||
* OpenRCT2 is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* A full copy of the GNU General Public License can be found in licence.txt
|
||||
*****************************************************************************/
|
||||
#pragma endregion
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <memory>
|
||||
#include <openrct2/common.h>
|
||||
#include <openrct2/drawing/IDrawingEngine.h>
|
||||
|
||||
namespace OpenRCT2
|
||||
{
|
||||
namespace Ui
|
||||
{
|
||||
using namespace OpenRCT2::Drawing;
|
||||
|
||||
interface IUiContext;
|
||||
|
||||
std::unique_ptr<IDrawingEngine> CreateSoftwareDrawingEngine(const std::shared_ptr<IUiContext>& uiContext);
|
||||
std::unique_ptr<IDrawingEngine> CreateHardwareDisplayDrawingEngine(const std::shared_ptr<IUiContext>& uiContext);
|
||||
#ifndef DISABLE_OPENGL
|
||||
std::unique_ptr<IDrawingEngine> CreateOpenGLDrawingEngine(const std::shared_ptr<IUiContext>& uiContext);
|
||||
#endif
|
||||
|
||||
class DrawingEngineFactory final : public IDrawingEngineFactory
|
||||
{
|
||||
public:
|
||||
std::unique_ptr<IDrawingEngine> Create(DRAWING_ENGINE_TYPE type, const std::shared_ptr<IUiContext>& uiContext) override
|
||||
{
|
||||
switch ((sint32)type) {
|
||||
case DRAWING_ENGINE_SOFTWARE:
|
||||
return CreateSoftwareDrawingEngine(uiContext);
|
||||
case DRAWING_ENGINE_SOFTWARE_WITH_HARDWARE_DISPLAY:
|
||||
return CreateHardwareDisplayDrawingEngine(uiContext);
|
||||
#ifndef DISABLE_OPENGL
|
||||
case DRAWING_ENGINE_OPENGL:
|
||||
return CreateOpenGLDrawingEngine(uiContext);
|
||||
#endif
|
||||
default:
|
||||
return nullptr;
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
|
@ -22,7 +22,7 @@
|
|||
#include <openrct2/drawing/IDrawingEngine.h>
|
||||
#include <openrct2/drawing/X8DrawingEngine.h>
|
||||
#include <openrct2/ui/UiContext.h>
|
||||
#include "DrawingEngines.h"
|
||||
#include "DrawingEngineFactory.hpp"
|
||||
|
||||
#include <openrct2/drawing/LightFX.h>
|
||||
#include <openrct2/Game.h>
|
||||
|
@ -37,7 +37,7 @@ class HardwareDisplayDrawingEngine final : public X8DrawingEngine
|
|||
private:
|
||||
constexpr static uint32 DIRTY_VISUAL_TIME = 32;
|
||||
|
||||
IUiContext * const _uiContext;
|
||||
std::shared_ptr<IUiContext> const _uiContext;
|
||||
SDL_Window * _window = nullptr;
|
||||
SDL_Renderer * _sdlRenderer = nullptr;
|
||||
SDL_Texture * _screenTexture = nullptr;
|
||||
|
@ -60,7 +60,7 @@ private:
|
|||
bool smoothNN = false;
|
||||
|
||||
public:
|
||||
explicit HardwareDisplayDrawingEngine(IUiContext * uiContext)
|
||||
explicit HardwareDisplayDrawingEngine(const std::shared_ptr<IUiContext>& uiContext)
|
||||
: X8DrawingEngine(uiContext),
|
||||
_uiContext(uiContext)
|
||||
{
|
||||
|
@ -415,7 +415,7 @@ private:
|
|||
}
|
||||
};
|
||||
|
||||
IDrawingEngine * OpenRCT2::Ui::CreateHardwareDisplayDrawingEngine(IUiContext * uiContext)
|
||||
std::unique_ptr<IDrawingEngine> OpenRCT2::Ui::CreateHardwareDisplayDrawingEngine(const std::shared_ptr<IUiContext>& uiContext)
|
||||
{
|
||||
return new HardwareDisplayDrawingEngine(uiContext);
|
||||
return std::make_unique<HardwareDisplayDrawingEngine>(uiContext);
|
||||
}
|
||||
|
|
|
@ -23,7 +23,7 @@
|
|||
#include <openrct2/drawing/X8DrawingEngine.h>
|
||||
#include <openrct2/Game.h>
|
||||
#include <openrct2/ui/UiContext.h>
|
||||
#include "DrawingEngines.h"
|
||||
#include "DrawingEngineFactory.hpp"
|
||||
|
||||
using namespace OpenRCT2;
|
||||
using namespace OpenRCT2::Drawing;
|
||||
|
@ -32,14 +32,14 @@ using namespace OpenRCT2::Ui;
|
|||
class SoftwareDrawingEngine final : public X8DrawingEngine
|
||||
{
|
||||
private:
|
||||
IUiContext * const _uiContext;
|
||||
std::shared_ptr<IUiContext> const _uiContext;
|
||||
SDL_Window * _window = nullptr;
|
||||
SDL_Surface * _surface = nullptr;
|
||||
SDL_Surface * _RGBASurface = nullptr;
|
||||
SDL_Palette * _palette = nullptr;
|
||||
|
||||
public:
|
||||
explicit SoftwareDrawingEngine(IUiContext * uiContext)
|
||||
explicit SoftwareDrawingEngine(const std::shared_ptr<IUiContext>& uiContext)
|
||||
: X8DrawingEngine(uiContext),
|
||||
_uiContext(uiContext)
|
||||
{
|
||||
|
@ -163,7 +163,7 @@ private:
|
|||
}
|
||||
};
|
||||
|
||||
IDrawingEngine * OpenRCT2::Ui::CreateSoftwareDrawingEngine(IUiContext * uiContext)
|
||||
std::unique_ptr<IDrawingEngine> OpenRCT2::Ui::CreateSoftwareDrawingEngine(const std::shared_ptr<IUiContext>& uiContext)
|
||||
{
|
||||
return new SoftwareDrawingEngine(uiContext);
|
||||
return std::make_unique<SoftwareDrawingEngine>(uiContext);
|
||||
}
|
||||
|
|
|
@ -18,7 +18,7 @@
|
|||
|
||||
#include <openrct2/common.h>
|
||||
|
||||
#if OPENGL_NO_LINK
|
||||
#ifdef OPENGL_NO_LINK
|
||||
|
||||
// BEGIN [Do not define 1.1 function signatures]
|
||||
#define glActiveTexture __static__glActiveTexture
|
||||
|
@ -50,7 +50,7 @@
|
|||
|
||||
#include <SDL2/SDL_opengl.h>
|
||||
|
||||
#if OPENGL_NO_LINK
|
||||
#ifdef OPENGL_NO_LINK
|
||||
|
||||
// END [Do not define 1.1 function signatures]
|
||||
#undef glActiveTexture
|
||||
|
|
|
@ -31,7 +31,7 @@
|
|||
#include <openrct2/Intro.h>
|
||||
#include <openrct2-ui/interface/Window.h>
|
||||
#include <openrct2/ui/UiContext.h>
|
||||
#include "../DrawingEngines.h"
|
||||
#include "../DrawingEngineFactory.hpp"
|
||||
#include "ApplyPaletteShader.h"
|
||||
#include "DrawCommands.h"
|
||||
#include "DrawLineShader.h"
|
||||
|
@ -121,7 +121,7 @@ public:
|
|||
class OpenGLDrawingEngine : public IDrawingEngine
|
||||
{
|
||||
private:
|
||||
IUiContext * const _uiContext = nullptr;
|
||||
std::shared_ptr<IUiContext> const _uiContext;
|
||||
SDL_Window * _window = nullptr;
|
||||
SDL_GLContext _context = nullptr;
|
||||
|
||||
|
@ -131,7 +131,7 @@ private:
|
|||
size_t _bitsSize = 0;
|
||||
uint8 * _bits = nullptr;
|
||||
|
||||
rct_drawpixelinfo _bitsDPI = { nullptr };
|
||||
rct_drawpixelinfo _bitsDPI = {};
|
||||
|
||||
OpenGLDrawingContext * _drawingContext;
|
||||
|
||||
|
@ -144,7 +144,7 @@ public:
|
|||
SDL_Color Palette[256];
|
||||
vec4 GLPalette[256];
|
||||
|
||||
explicit OpenGLDrawingEngine(IUiContext * uiContext)
|
||||
explicit OpenGLDrawingEngine(const std::shared_ptr<IUiContext>& uiContext)
|
||||
: _uiContext(uiContext)
|
||||
{
|
||||
_window = (SDL_Window *)_uiContext->GetWindow();
|
||||
|
@ -419,9 +419,9 @@ private:
|
|||
}
|
||||
};
|
||||
|
||||
IDrawingEngine * OpenRCT2::Ui::CreateOpenGLDrawingEngine(IUiContext * uiContext)
|
||||
std::unique_ptr<IDrawingEngine> OpenRCT2::Ui::CreateOpenGLDrawingEngine(const std::shared_ptr<IUiContext>& uiContext)
|
||||
{
|
||||
return new OpenGLDrawingEngine(uiContext);
|
||||
return std::make_unique<OpenGLDrawingEngine>(uiContext);
|
||||
}
|
||||
|
||||
OpenGLDrawingContext::OpenGLDrawingContext(OpenGLDrawingEngine * engine)
|
||||
|
|
|
@ -17,11 +17,9 @@
|
|||
#pragma once
|
||||
|
||||
#include <openrct2/common.h>
|
||||
#include "OpenGLAPI.h"
|
||||
#include "ApplyTransparencyShader.h"
|
||||
|
||||
class CopyFramebufferShader;
|
||||
class OpenGLFramebuffer;
|
||||
#include "OpenGLAPI.h"
|
||||
#include "OpenGLFramebuffer.h"
|
||||
|
||||
/**
|
||||
* Class to maintain two different framebuffers where the active framebuffer
|
||||
|
|
|
@ -22,12 +22,16 @@
|
|||
#include <openrct2/config/Config.h>
|
||||
#include <openrct2/Input.h>
|
||||
#include <openrct2/interface/Chat.h>
|
||||
#include <openrct2/interface/Console.h>
|
||||
#include <openrct2/interface/InteractiveConsole.h>
|
||||
#include <openrct2/paint/VirtualFloor.h>
|
||||
#include <openrct2-ui/windows/Window.h>
|
||||
#include "../interface/InGameConsole.h"
|
||||
#include "../UiContext.h"
|
||||
#include "KeyboardShortcuts.h"
|
||||
#include "Input.h"
|
||||
|
||||
using namespace OpenRCT2::Ui;
|
||||
|
||||
static void input_handle_console(sint32 key)
|
||||
{
|
||||
CONSOLE_INPUT input = CONSOLE_INPUT_NONE;
|
||||
|
@ -54,7 +58,8 @@ static void input_handle_console(sint32 key)
|
|||
}
|
||||
if (input != CONSOLE_INPUT_NONE)
|
||||
{
|
||||
console_input(input);
|
||||
auto& console = GetInGameConsole();
|
||||
console.Input(input);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -129,7 +134,8 @@ void input_handle_keyboard(bool isTitle)
|
|||
return;
|
||||
}
|
||||
|
||||
if (!gConsoleOpen)
|
||||
auto& console = GetInGameConsole();
|
||||
if (!console.IsOpen())
|
||||
{
|
||||
if (!isTitle)
|
||||
{
|
||||
|
@ -170,7 +176,7 @@ void input_handle_keyboard(bool isTitle)
|
|||
}
|
||||
}
|
||||
|
||||
if (gConfigGeneral.use_virtual_floor)
|
||||
if (gConfigGeneral.virtual_floor_style != VIRTUAL_FLOOR_STYLE_OFF)
|
||||
{
|
||||
if (gInputPlaceObjectModifier & (PLACE_OBJECT_MODIFIER_COPY_Z | PLACE_OBJECT_MODIFIER_SHIFT_Z))
|
||||
virtual_floor_enable();
|
||||
|
@ -188,14 +194,14 @@ void input_handle_keyboard(bool isTitle)
|
|||
// Reserve backtick for console
|
||||
if (key == SDL_SCANCODE_GRAVE)
|
||||
{
|
||||
if ((gConfigGeneral.debugging_tools && !context_is_input_active()) || gConsoleOpen)
|
||||
if ((gConfigGeneral.debugging_tools && !context_is_input_active()) || console.IsOpen())
|
||||
{
|
||||
window_cancel_textbox();
|
||||
console_toggle();
|
||||
console.Toggle();
|
||||
}
|
||||
continue;
|
||||
}
|
||||
else if (gConsoleOpen)
|
||||
else if (console.IsOpen())
|
||||
{
|
||||
input_handle_console(key);
|
||||
continue;
|
||||
|
|
|
@ -32,9 +32,11 @@
|
|||
#include <openrct2/platform/platform.h>
|
||||
#include <openrct2/ride/Track.h>
|
||||
#include <openrct2/ride/TrackPaint.h>
|
||||
#include <openrct2/scenario/Scenario.h>
|
||||
#include <openrct2/title/TitleScreen.h>
|
||||
#include <openrct2/util/Util.h>
|
||||
#include <openrct2/windows/Intent.h>
|
||||
#include <openrct2/world/Park.h>
|
||||
#include "KeyboardShortcuts.h"
|
||||
|
||||
uint8 gKeyboardShortcutChangeId;
|
||||
|
@ -744,6 +746,22 @@ static void shortcut_load_game()
|
|||
}
|
||||
}
|
||||
|
||||
static void shortcut_view_clipping()
|
||||
{
|
||||
if (gScreenFlags & SCREEN_FLAGS_TITLE_DEMO)
|
||||
return;
|
||||
|
||||
context_open_window(WC_VIEW_CLIPPING);
|
||||
}
|
||||
|
||||
static void shortcut_highlight_path_issues_toggle()
|
||||
{
|
||||
if (gScreenFlags & SCREEN_FLAGS_TITLE_DEMO)
|
||||
return;
|
||||
|
||||
toggle_view_flag(VIEWPORT_FLAG_HIGHLIGHT_PATH_ISSUES);
|
||||
}
|
||||
|
||||
namespace
|
||||
{
|
||||
const shortcut_action shortcut_table[SHORTCUT_COUNT] =
|
||||
|
@ -815,7 +833,9 @@ namespace
|
|||
shortcut_load_game,
|
||||
shortcut_clear_scenery,
|
||||
shortcut_gridlines_toggle,
|
||||
shortcut_view_clipping,
|
||||
shortcut_highlight_path_issues_toggle,
|
||||
};
|
||||
}
|
||||
} // anonymous namespace
|
||||
|
||||
#pragma endregion
|
||||
|
|
|
@ -32,12 +32,17 @@ using namespace OpenRCT2::Input;
|
|||
// Remove when the C calls are removed
|
||||
static KeyboardShortcuts * _instance;
|
||||
|
||||
KeyboardShortcuts::KeyboardShortcuts(IPlatformEnvironment * env)
|
||||
KeyboardShortcuts::KeyboardShortcuts(const std::shared_ptr<IPlatformEnvironment>& env)
|
||||
: _env(env)
|
||||
{
|
||||
_instance = this;
|
||||
}
|
||||
|
||||
KeyboardShortcuts::~KeyboardShortcuts()
|
||||
{
|
||||
_instance = nullptr;
|
||||
}
|
||||
|
||||
void KeyboardShortcuts::Reset()
|
||||
{
|
||||
for (size_t i = 0; i < SHORTCUT_COUNT; i++)
|
||||
|
@ -305,4 +310,6 @@ const uint16 KeyboardShortcuts::DefaultKeys[SHORTCUT_COUNT] =
|
|||
PLATFORM_MODIFIER | SDL_SCANCODE_L, // SHORTCUT_LOAD_GAME
|
||||
SDL_SCANCODE_B, // SHORTCUT_CLEAR_SCENERY
|
||||
SDL_SCANCODE_7, // SHORTCUT_GRIDLINES_DISPLAY_TOGGLE
|
||||
SHORTCUT_UNDEFINED, // SHORTCUT_VIEW_CLIPPING
|
||||
SDL_SCANCODE_I, // SHORTCUT_HIGHLIGHT_PATH_ISSUES_TOGGLE
|
||||
};
|
||||
|
|
|
@ -16,6 +16,7 @@
|
|||
|
||||
#pragma once
|
||||
|
||||
#include <memory>
|
||||
#include <openrct2/common.h>
|
||||
|
||||
#define SHIFT 0x100
|
||||
|
@ -97,6 +98,8 @@ enum
|
|||
SHORTCUT_LOAD_GAME,
|
||||
SHORTCUT_CLEAR_SCENERY,
|
||||
SHORTCUT_GRIDLINES_DISPLAY_TOGGLE,
|
||||
SHORTCUT_VIEW_CLIPPING,
|
||||
SHORTCUT_HIGHLIGHT_PATH_ISSUES_TOGGLE,
|
||||
|
||||
SHORTCUT_COUNT,
|
||||
|
||||
|
@ -117,11 +120,12 @@ namespace OpenRCT2
|
|||
constexpr static sint32 CURRENT_FILE_VERSION = 1;
|
||||
static const uint16 DefaultKeys[SHORTCUT_COUNT];
|
||||
|
||||
IPlatformEnvironment * const _env;
|
||||
std::shared_ptr<IPlatformEnvironment> const _env;
|
||||
uint16 _keys[SHORTCUT_COUNT];
|
||||
|
||||
public:
|
||||
KeyboardShortcuts(IPlatformEnvironment * env);
|
||||
KeyboardShortcuts(const std::shared_ptr<IPlatformEnvironment>& env);
|
||||
~KeyboardShortcuts();
|
||||
|
||||
void Reset();
|
||||
bool Load();
|
||||
|
@ -133,8 +137,8 @@ namespace OpenRCT2
|
|||
sint32 GetFromKey(sint32 key);
|
||||
void GetKeyboardMapScroll(const uint8 * keysState, sint32 * x, sint32 * y) const;
|
||||
};
|
||||
}
|
||||
}
|
||||
} // namespace Input
|
||||
} // namespace OpenRCT2
|
||||
|
||||
/** The current shortcut being changed. */
|
||||
extern uint8 gKeyboardShortcutChangeId;
|
||||
|
|
|
@ -14,6 +14,8 @@
|
|||
*****************************************************************************/
|
||||
#pragma endregion
|
||||
|
||||
#include <cmath>
|
||||
|
||||
#include <openrct2-ui/interface/Dropdown.h>
|
||||
#include <openrct2-ui/windows/Window.h>
|
||||
#include <openrct2/Context.h>
|
||||
|
@ -26,7 +28,7 @@
|
|||
#include <openrct2/core/Util.hpp>
|
||||
#include <openrct2/interface/Cursors.h>
|
||||
#include <openrct2/interface/Chat.h>
|
||||
#include <openrct2/interface/Console.h>
|
||||
#include <openrct2/interface/InteractiveConsole.h>
|
||||
#include <openrct2-ui/interface/Viewport.h>
|
||||
#include <openrct2-ui/interface/Widget.h>
|
||||
#include <openrct2-ui/interface/Window.h>
|
||||
|
@ -89,11 +91,11 @@ static void input_window_position_end(rct_window * w, sint32 x, sint32 y);
|
|||
static void input_window_resize_begin(rct_window * w, rct_widgetindex widgetIndex, sint32 x, sint32 y);
|
||||
static void input_window_resize_continue(rct_window * w, sint32 x, sint32 y);
|
||||
static void input_window_resize_end();
|
||||
static void input_viewport_drag_begin(rct_window * w, sint32 x, sint32 y);
|
||||
static void input_viewport_drag_begin(rct_window * w);
|
||||
static void input_viewport_drag_continue();
|
||||
static void input_viewport_drag_end();
|
||||
static void input_scroll_begin(rct_window * w, rct_widgetindex widgetIndex, sint32 x, sint32 y);
|
||||
static void input_scroll_continue(rct_window * w, rct_widgetindex widgetIndex, sint32 state, sint32 x, sint32 y);
|
||||
static void input_scroll_continue(rct_window * w, rct_widgetindex widgetIndex, sint32 x, sint32 y);
|
||||
static void input_scroll_end();
|
||||
static void input_scroll_part_update_hthumb(rct_window * w, rct_widgetindex widgetIndex, sint32 x, sint32 scroll_id);
|
||||
static void input_scroll_part_update_hleft(rct_window * w, rct_widgetindex widgetIndex, sint32 scroll_id);
|
||||
|
@ -191,7 +193,7 @@ static rct_mouse_data * get_mouse_input()
|
|||
*
|
||||
* rct2: 0x006E957F
|
||||
*/
|
||||
static void input_scroll_drag_begin(sint32 x, sint32 y, rct_window * w, rct_widget * widget, rct_widgetindex widgetIndex)
|
||||
static void input_scroll_drag_begin(sint32 x, sint32 y, rct_window * w, rct_widgetindex widgetIndex)
|
||||
{
|
||||
_inputState = INPUT_STATE_SCROLL_RIGHT;
|
||||
gInputDragLastX = x;
|
||||
|
@ -242,8 +244,8 @@ static void input_scroll_drag_continue(sint32 x, sint32 y, rct_window * w)
|
|||
widget_scroll_update_thumbs(w, widgetIndex);
|
||||
window_invalidate_by_number(w->classification, w->number);
|
||||
|
||||
sint32 fixedCursorPositionX = (sint32)ceilf(gInputDragLastX * gConfigGeneral.window_scale);
|
||||
sint32 fixedCursorPositionY = (sint32)ceilf(gInputDragLastY * gConfigGeneral.window_scale);
|
||||
sint32 fixedCursorPositionX = (sint32)std::ceil(gInputDragLastX * gConfigGeneral.window_scale);
|
||||
sint32 fixedCursorPositionY = (sint32)std::ceil(gInputDragLastY * gConfigGeneral.window_scale);
|
||||
|
||||
context_set_cursor_position(fixedCursorPositionX, fixedCursorPositionY);
|
||||
}
|
||||
|
@ -323,11 +325,11 @@ static void game_handle_input_mouse(sint32 x, sint32 y, sint32 state)
|
|||
case WWT_VIEWPORT:
|
||||
if (!(gScreenFlags & (SCREEN_FLAGS_TRACK_MANAGER | SCREEN_FLAGS_TITLE_DEMO)))
|
||||
{
|
||||
input_viewport_drag_begin(w, x, y);
|
||||
input_viewport_drag_begin(w);
|
||||
}
|
||||
break;
|
||||
case WWT_SCROLL:
|
||||
input_scroll_drag_begin(x, y, w, widget, widgetIndex);
|
||||
input_scroll_drag_begin(x, y, w, widgetIndex);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -425,7 +427,7 @@ static void game_handle_input_mouse(sint32 x, sint32 y, sint32 state)
|
|||
switch (state)
|
||||
{
|
||||
case MOUSE_STATE_RELEASED:
|
||||
input_scroll_continue(w, widgetIndex, state, x, y);
|
||||
input_scroll_continue(w, widgetIndex, x, y);
|
||||
break;
|
||||
case MOUSE_STATE_LEFT_RELEASE:
|
||||
input_scroll_end();
|
||||
|
@ -521,7 +523,7 @@ static void input_window_resize_end()
|
|||
|
||||
#pragma region Viewport dragging
|
||||
|
||||
static void input_viewport_drag_begin(rct_window * w, sint32 x, sint32 y)
|
||||
static void input_viewport_drag_begin(rct_window * w)
|
||||
{
|
||||
w->flags &= ~WF_SCROLLING_TO_LOCATION;
|
||||
_inputState = INPUT_STATE_VIEWPORT_RIGHT;
|
||||
|
@ -672,7 +674,7 @@ static void input_scroll_begin(rct_window * w, rct_widgetindex widgetIndex, sint
|
|||
window_invalidate_by_number(widgetIndex, w->classification);
|
||||
}
|
||||
|
||||
static void input_scroll_continue(rct_window * w, rct_widgetindex widgetIndex, sint32 state, sint32 x, sint32 y)
|
||||
static void input_scroll_continue(rct_window * w, rct_widgetindex widgetIndex, sint32 x, sint32 y)
|
||||
{
|
||||
rct_widget * widget;
|
||||
sint32 scroll_part, scroll_id;
|
||||
|
|
|
@ -18,7 +18,7 @@
|
|||
#include <openrct2/localisation/Localisation.h>
|
||||
#include <openrct2-ui/interface/Graph.h>
|
||||
|
||||
static void graph_draw_months_uint8(rct_drawpixelinfo *dpi, const uint8 *history, sint32 count, sint32 baseX, sint32 baseY)
|
||||
static void graph_draw_months_uint8(rct_drawpixelinfo * dpi, const uint8 * history, sint32 count, sint32 baseX, sint32 baseY)
|
||||
{
|
||||
sint32 i, x, y, yearOver32, currentMonth, currentDay;
|
||||
|
||||
|
@ -27,10 +27,12 @@ static void graph_draw_months_uint8(rct_drawpixelinfo *dpi, const uint8 *history
|
|||
yearOver32 = (currentMonth * 4) + (currentDay >> 14) - 31;
|
||||
x = baseX;
|
||||
y = baseY;
|
||||
for (i = count - 1; i >= 0; i--) {
|
||||
if (history[i] != 0 && history[i] != 255 && yearOver32 % 4 == 0) {
|
||||
for (i = count - 1; i >= 0; i--)
|
||||
{
|
||||
if (history[i] != 255 && yearOver32 % 4 == 0)
|
||||
{
|
||||
// Draw month text
|
||||
set_format_arg(0, uint32, DateGameShortMonthNames[((yearOver32 / 4) + 8) % 8]);
|
||||
set_format_arg(0, uint32, DateGameShortMonthNames[date_get_month((yearOver32 / 4) + MONTH_COUNT)]);
|
||||
gfx_draw_string_centred(dpi, STR_GRAPH_LABEL, x, y - 10, COLOUR_BLACK, gCommonFormatArgs);
|
||||
|
||||
// Draw month mark
|
||||
|
@ -42,17 +44,20 @@ static void graph_draw_months_uint8(rct_drawpixelinfo *dpi, const uint8 *history
|
|||
}
|
||||
}
|
||||
|
||||
static void graph_draw_line_a_uint8(rct_drawpixelinfo *dpi, const uint8 *history, sint32 count, sint32 baseX, sint32 baseY)
|
||||
static void graph_draw_line_a_uint8(rct_drawpixelinfo * dpi, const uint8 * history, sint32 count, sint32 baseX, sint32 baseY)
|
||||
{
|
||||
sint32 i, x, y, lastX, lastY;
|
||||
lastX = -1;
|
||||
lastY = -1;
|
||||
x = baseX;
|
||||
for (i = count - 1; i >= 0; i--) {
|
||||
if (history[i] != 0 && history[i] != 255) {
|
||||
for (i = count - 1; i >= 0; i--)
|
||||
{
|
||||
if (history[i] != 255)
|
||||
{
|
||||
y = baseY + ((255 - history[i]) * 100) / 256;
|
||||
|
||||
if (lastX != -1) {
|
||||
if (lastX != -1)
|
||||
{
|
||||
gfx_draw_line(dpi, lastX + 1, lastY + 1, x + 1, y + 1, PALETTE_INDEX_10);
|
||||
gfx_draw_line(dpi, lastX, lastY + 1, x, y + 1, PALETTE_INDEX_10);
|
||||
}
|
||||
|
@ -66,15 +71,17 @@ static void graph_draw_line_a_uint8(rct_drawpixelinfo *dpi, const uint8 *history
|
|||
}
|
||||
}
|
||||
|
||||
static void graph_draw_line_b_uint8(rct_drawpixelinfo *dpi, const uint8 *history, sint32 count, sint32 baseX, sint32 baseY)
|
||||
static void graph_draw_line_b_uint8(rct_drawpixelinfo * dpi, const uint8 * history, sint32 count, sint32 baseX, sint32 baseY)
|
||||
{
|
||||
sint32 i, x, y, lastX, lastY;
|
||||
|
||||
lastX = -1;
|
||||
lastY = -1;
|
||||
x = baseX;
|
||||
for (i = count - 1; i >= 0; i--) {
|
||||
if (history[i] != 0 && history[i] != 255) {
|
||||
for (i = count - 1; i >= 0; i--)
|
||||
{
|
||||
if (history[i] != 255)
|
||||
{
|
||||
y = baseY + ((255 - history[i]) * 100) / 256;
|
||||
|
||||
if (lastX != -1)
|
||||
|
@ -89,7 +96,7 @@ static void graph_draw_line_b_uint8(rct_drawpixelinfo *dpi, const uint8 *history
|
|||
}
|
||||
}
|
||||
|
||||
void graph_draw_uint8(rct_drawpixelinfo *dpi, uint8 *history, sint32 count, sint32 baseX, sint32 baseY)
|
||||
void graph_draw_uint8(rct_drawpixelinfo * dpi, uint8 * history, sint32 count, sint32 baseX, sint32 baseY)
|
||||
{
|
||||
graph_draw_months_uint8(dpi, history, count, baseX, baseY);
|
||||
graph_draw_line_a_uint8(dpi, history, count, baseX, baseY);
|
||||
|
@ -108,7 +115,7 @@ static void graph_draw_months_money32(rct_drawpixelinfo *dpi, const money32 *his
|
|||
for (i = count - 1; i >= 0; i--) {
|
||||
if (history[i] != MONEY32_UNDEFINED && yearOver32 % 4 == 0) {
|
||||
// Draw month text
|
||||
sint32 monthFormat = DateGameShortMonthNames[((yearOver32 / 4) + 8) % 8];
|
||||
sint32 monthFormat = DateGameShortMonthNames[date_get_month((yearOver32 / 4) + MONTH_COUNT)];
|
||||
gfx_draw_string_centred(dpi, STR_GRAPH_LABEL, x, y - 10, COLOUR_BLACK, &monthFormat);
|
||||
|
||||
// Draw month mark
|
||||
|
|
|
@ -0,0 +1,325 @@
|
|||
#include <algorithm>
|
||||
#include <cstring>
|
||||
#include <openrct2/config/Config.h>
|
||||
#include <openrct2/Context.h>
|
||||
#include <openrct2/core/Math.hpp>
|
||||
#include <openrct2/drawing/Drawing.h>
|
||||
#include <openrct2/interface/Colour.h>
|
||||
#include <openrct2/interface/themes.h>
|
||||
#include <openrct2/interface/Window.h>
|
||||
#include <openrct2/localisation/Language.h>
|
||||
#include <openrct2/localisation/LocalisationService.h>
|
||||
#include <openrct2/Version.h>
|
||||
#include "InGameConsole.h"
|
||||
|
||||
using namespace OpenRCT2::Ui;
|
||||
|
||||
static InGameConsole _inGameConsole;
|
||||
|
||||
InGameConsole::InGameConsole()
|
||||
{
|
||||
InteractiveConsole::WriteLine(OPENRCT2_NAME " " OPENRCT2_VERSION);
|
||||
InteractiveConsole::WriteLine("Type 'help' for a list of available commands. Type 'hide' to hide the console.");
|
||||
InteractiveConsole::WriteLine("");
|
||||
WritePrompt();
|
||||
}
|
||||
|
||||
void InGameConsole::WritePrompt()
|
||||
{
|
||||
InteractiveConsole::WriteLine("> ");
|
||||
}
|
||||
|
||||
void InGameConsole::Input(CONSOLE_INPUT input)
|
||||
{
|
||||
switch (input) {
|
||||
case CONSOLE_INPUT_LINE_CLEAR:
|
||||
ClearInput();
|
||||
RefreshCaret();
|
||||
break;
|
||||
case CONSOLE_INPUT_LINE_EXECUTE:
|
||||
if (_consoleCurrentLine[0] != '\0') {
|
||||
HistoryAdd(_consoleCurrentLine);
|
||||
|
||||
// Append text we are executing to prompt line
|
||||
_consoleLines.back().append(_consoleCurrentLine);
|
||||
|
||||
Execute(_consoleCurrentLine);
|
||||
WritePrompt();
|
||||
ClearInput();
|
||||
RefreshCaret();
|
||||
}
|
||||
ScrollToEnd();
|
||||
break;
|
||||
case CONSOLE_INPUT_HISTORY_PREVIOUS:
|
||||
if (_consoleHistoryIndex > 0) {
|
||||
_consoleHistoryIndex--;
|
||||
memcpy(_consoleCurrentLine, _consoleHistory[_consoleHistoryIndex], CONSOLE_INPUT_SIZE);
|
||||
}
|
||||
_consoleTextInputSession->Size = strlen(_consoleTextInputSession->Buffer);
|
||||
_consoleTextInputSession->Length = utf8_length(_consoleTextInputSession->Buffer);
|
||||
_consoleTextInputSession->SelectionStart = strlen(_consoleCurrentLine);
|
||||
break;
|
||||
case CONSOLE_INPUT_HISTORY_NEXT:
|
||||
if (_consoleHistoryIndex < _consoleHistoryCount - 1) {
|
||||
_consoleHistoryIndex++;
|
||||
memcpy(_consoleCurrentLine, _consoleHistory[_consoleHistoryIndex], CONSOLE_INPUT_SIZE);
|
||||
_consoleTextInputSession->Size = strlen(_consoleTextInputSession->Buffer);
|
||||
_consoleTextInputSession->Length = utf8_length(_consoleTextInputSession->Buffer);
|
||||
_consoleTextInputSession->SelectionStart = strlen(_consoleCurrentLine);
|
||||
} else {
|
||||
_consoleHistoryIndex = _consoleHistoryCount;
|
||||
ClearInput();
|
||||
}
|
||||
break;
|
||||
case CONSOLE_INPUT_SCROLL_PREVIOUS:
|
||||
{
|
||||
sint32 scrollAmt = GetNumVisibleLines() - 1;
|
||||
Scroll(scrollAmt);
|
||||
break;
|
||||
}
|
||||
case CONSOLE_INPUT_SCROLL_NEXT:
|
||||
{
|
||||
sint32 scrollAmt = GetNumVisibleLines() - 1;
|
||||
Scroll(-scrollAmt);
|
||||
break;
|
||||
}
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void InGameConsole::ClearInput()
|
||||
{
|
||||
_consoleCurrentLine[0] = 0;
|
||||
if (_isOpen) {
|
||||
context_start_text_input(_consoleCurrentLine, sizeof(_consoleCurrentLine));
|
||||
}
|
||||
}
|
||||
|
||||
void InGameConsole::HistoryAdd(const utf8 * src)
|
||||
{
|
||||
if (_consoleHistoryCount >= CONSOLE_HISTORY_SIZE) {
|
||||
for (sint32 i = 0; i < _consoleHistoryCount - 1; i++)
|
||||
memcpy(_consoleHistory[i], _consoleHistory[i + 1], CONSOLE_INPUT_SIZE);
|
||||
_consoleHistoryCount--;
|
||||
}
|
||||
memcpy(_consoleHistory[_consoleHistoryCount++], src, CONSOLE_INPUT_SIZE);
|
||||
_consoleHistoryIndex = _consoleHistoryCount;
|
||||
}
|
||||
|
||||
void InGameConsole::ScrollToEnd()
|
||||
{
|
||||
_consoleScrollPos = std::max<sint32>(0, (sint32)_consoleLines.size() - GetNumVisibleLines());
|
||||
}
|
||||
|
||||
void InGameConsole::RefreshCaret()
|
||||
{
|
||||
_consoleCaretTicks = 0;
|
||||
}
|
||||
|
||||
void InGameConsole::Scroll(sint32 linesToScroll)
|
||||
{
|
||||
const sint32 maxVisibleLines = GetNumVisibleLines();
|
||||
const sint32 numLines = (sint32)_consoleLines.size();
|
||||
if (numLines > maxVisibleLines)
|
||||
{
|
||||
sint32 maxScrollValue = numLines - maxVisibleLines;
|
||||
_consoleScrollPos = Math::Clamp<sint32>(0, _consoleScrollPos - linesToScroll, maxScrollValue);
|
||||
}
|
||||
}
|
||||
|
||||
void InGameConsole::Clear()
|
||||
{
|
||||
_consoleLines.clear();
|
||||
ScrollToEnd();
|
||||
}
|
||||
|
||||
void InGameConsole::ClearLine()
|
||||
{
|
||||
_consoleCurrentLine[0] = 0;
|
||||
RefreshCaret();
|
||||
}
|
||||
|
||||
void InGameConsole::Open()
|
||||
{
|
||||
_isOpen = true;
|
||||
ScrollToEnd();
|
||||
RefreshCaret();
|
||||
_consoleTextInputSession = context_start_text_input(_consoleCurrentLine, sizeof(_consoleCurrentLine));
|
||||
}
|
||||
|
||||
void InGameConsole::Close()
|
||||
{
|
||||
_consoleTextInputSession = nullptr;
|
||||
_isOpen = false;
|
||||
Invalidate();
|
||||
context_stop_text_input();
|
||||
}
|
||||
|
||||
void InGameConsole::Hide()
|
||||
{
|
||||
Close();
|
||||
}
|
||||
|
||||
void InGameConsole::Toggle()
|
||||
{
|
||||
if (_isOpen)
|
||||
{
|
||||
Close();
|
||||
}
|
||||
else
|
||||
{
|
||||
Open();
|
||||
}
|
||||
}
|
||||
|
||||
void InGameConsole::WriteLine(const std::string &input, uint32 colourFormat)
|
||||
{
|
||||
// Include text colour format only for special cases
|
||||
// The draw function handles the default text colour differently
|
||||
utf8 colourCodepoint[4]{};
|
||||
if (colourFormat != FORMAT_WINDOW_COLOUR_2)
|
||||
utf8_write_codepoint(colourCodepoint, colourFormat);
|
||||
|
||||
std::string line;
|
||||
std::size_t splitPos = 0;
|
||||
std::size_t stringOffset = 0;
|
||||
while (splitPos != std::string::npos)
|
||||
{
|
||||
splitPos = input.find('\n', stringOffset);
|
||||
line = input.substr(stringOffset, splitPos - stringOffset);
|
||||
_consoleLines.push_back(colourCodepoint + line);
|
||||
stringOffset = splitPos + 1;
|
||||
}
|
||||
|
||||
if (_consoleLines.size() > CONSOLE_MAX_LINES)
|
||||
{
|
||||
const std::size_t linesToErase = _consoleLines.size() - CONSOLE_MAX_LINES;
|
||||
_consoleLines.erase(_consoleLines.begin(), _consoleLines.begin() + linesToErase);
|
||||
}
|
||||
}
|
||||
|
||||
void InGameConsole::Invalidate() const
|
||||
{
|
||||
gfx_set_dirty_blocks(_consoleLeft, _consoleTop, _consoleRight, _consoleBottom);
|
||||
}
|
||||
|
||||
void InGameConsole::Update()
|
||||
{
|
||||
_consoleLeft = 0;
|
||||
_consoleTop = 0;
|
||||
_consoleRight = context_get_width();
|
||||
_consoleBottom = 322;
|
||||
|
||||
if (_isOpen) {
|
||||
// When scrolling the map, the console pixels get copied... therefore invalidate the screen
|
||||
rct_window *mainWindow = window_get_main();
|
||||
if (mainWindow != nullptr) {
|
||||
rct_viewport *mainViewport = window_get_viewport(mainWindow);
|
||||
if (mainViewport != nullptr) {
|
||||
if (_lastMainViewportX != mainViewport->view_x || _lastMainViewportY != mainViewport->view_y) {
|
||||
_lastMainViewportX = mainViewport->view_x;
|
||||
_lastMainViewportY = mainViewport->view_y;
|
||||
|
||||
gfx_invalidate_screen();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Remove unwanted characters in console input
|
||||
utf8_remove_format_codes(_consoleCurrentLine, false);
|
||||
}
|
||||
|
||||
// Flash the caret
|
||||
_consoleCaretTicks = (_consoleCaretTicks + 1) % 30;
|
||||
}
|
||||
|
||||
void InGameConsole::Draw(rct_drawpixelinfo * dpi) const
|
||||
{
|
||||
if (!_isOpen)
|
||||
return;
|
||||
|
||||
// Set font
|
||||
gCurrentFontSpriteBase = (gConfigInterface.console_small_font ? FONT_SPRITE_BASE_SMALL : FONT_SPRITE_BASE_MEDIUM);
|
||||
gCurrentFontFlags = 0;
|
||||
uint8 textColour = NOT_TRANSLUCENT(theme_get_colour(WC_CONSOLE, 1));
|
||||
const sint32 lineHeight = font_get_line_height(gCurrentFontSpriteBase);
|
||||
const sint32 maxLines = GetNumVisibleLines();
|
||||
|
||||
// This is something of a hack to ensure the text is actually black
|
||||
// as opposed to a desaturated grey
|
||||
std::string colourFormatStr;
|
||||
if (textColour == COLOUR_BLACK)
|
||||
{
|
||||
utf8 extraTextFormatCode[4]{};
|
||||
utf8_write_codepoint(extraTextFormatCode, FORMAT_BLACK);
|
||||
colourFormatStr = extraTextFormatCode;
|
||||
}
|
||||
|
||||
// TTF looks far better without the outlines
|
||||
if (!LocalisationService_UseTrueTypeFont())
|
||||
{
|
||||
textColour |= COLOUR_FLAG_OUTLINE;
|
||||
}
|
||||
|
||||
Invalidate();
|
||||
|
||||
// Give console area a translucent effect.
|
||||
gfx_filter_rect(dpi, _consoleLeft, _consoleTop, _consoleRight, _consoleBottom, PALETTE_51);
|
||||
|
||||
// Make input area more opaque.
|
||||
gfx_filter_rect(dpi, _consoleLeft, _consoleBottom - lineHeight - 10, _consoleRight, _consoleBottom - 1, PALETTE_51);
|
||||
|
||||
// Paint background colour.
|
||||
uint8 backgroundColour = theme_get_colour(WC_CONSOLE, 0);
|
||||
gfx_fill_rect_inset(dpi, _consoleLeft, _consoleTop, _consoleRight, _consoleBottom, backgroundColour, INSET_RECT_FLAG_FILL_NONE);
|
||||
gfx_fill_rect_inset(dpi, _consoleLeft + 1, _consoleTop + 1, _consoleRight - 1, _consoleBottom - 1, backgroundColour, INSET_RECT_FLAG_BORDER_INSET);
|
||||
|
||||
std::string lineBuffer;
|
||||
sint32 x = _consoleLeft + CONSOLE_EDGE_PADDING;
|
||||
sint32 y = _consoleTop + CONSOLE_EDGE_PADDING;
|
||||
|
||||
// Draw text inside console
|
||||
for (std::size_t i = 0; i < _consoleLines.size() && i < (size_t)maxLines; i++) {
|
||||
const size_t index = i + _consoleScrollPos;
|
||||
lineBuffer = colourFormatStr + _consoleLines[index];
|
||||
gfx_draw_string(dpi, lineBuffer.c_str(), textColour, x, y);
|
||||
y += lineHeight;
|
||||
}
|
||||
|
||||
y = _consoleBottom - lineHeight - CONSOLE_EDGE_PADDING - 1;
|
||||
|
||||
// Draw current line
|
||||
lineBuffer = colourFormatStr + _consoleCurrentLine;
|
||||
gfx_draw_string(dpi, lineBuffer.c_str(), TEXT_COLOUR_255, x, y);
|
||||
|
||||
// Draw caret
|
||||
if (_consoleCaretTicks < CONSOLE_CARET_FLASH_THRESHOLD) {
|
||||
sint32 caretX = x + gfx_get_string_width(_consoleCurrentLine);
|
||||
sint32 caretY = y + lineHeight;
|
||||
|
||||
uint8 caretColour = ColourMapA[BASE_COLOUR(textColour)].lightest;
|
||||
gfx_fill_rect(dpi, caretX, caretY, caretX + CONSOLE_CARET_WIDTH, caretY, caretColour);
|
||||
}
|
||||
|
||||
// What about border colours?
|
||||
uint8 borderColour1 = ColourMapA[BASE_COLOUR(backgroundColour)].light;
|
||||
uint8 borderColour2 = ColourMapA[BASE_COLOUR(backgroundColour)].mid_dark;
|
||||
|
||||
// Input area top border
|
||||
gfx_fill_rect(dpi, _consoleLeft, _consoleBottom - lineHeight - 11, _consoleRight, _consoleBottom - lineHeight - 11, borderColour1);
|
||||
gfx_fill_rect(dpi, _consoleLeft, _consoleBottom - lineHeight - 10, _consoleRight, _consoleBottom - lineHeight - 10, borderColour2);
|
||||
|
||||
// Input area bottom border
|
||||
gfx_fill_rect(dpi, _consoleLeft, _consoleBottom - 1, _consoleRight, _consoleBottom - 1, borderColour1);
|
||||
gfx_fill_rect(dpi, _consoleLeft, _consoleBottom - 0, _consoleRight, _consoleBottom - 0, borderColour2);
|
||||
}
|
||||
|
||||
// Calculates the amount of visible lines, based on the console size, excluding the input line.
|
||||
sint32 InGameConsole::GetNumVisibleLines() const
|
||||
{
|
||||
const sint32 lineHeight = font_get_line_height(gCurrentFontSpriteBase);
|
||||
const sint32 consoleHeight = _consoleBottom - _consoleTop;
|
||||
const sint32 drawableHeight = consoleHeight - 2 * lineHeight - 4; // input line, separator - padding
|
||||
return drawableHeight / lineHeight;
|
||||
}
|
|
@ -0,0 +1,58 @@
|
|||
#pragma once
|
||||
|
||||
#include <openrct2/interface/InteractiveConsole.h>
|
||||
|
||||
namespace OpenRCT2::Ui
|
||||
{
|
||||
class InGameConsole final : public InteractiveConsole
|
||||
{
|
||||
private:
|
||||
static constexpr sint32 CONSOLE_MAX_LINES = 300;
|
||||
static constexpr sint32 CONSOLE_HISTORY_SIZE = 64;
|
||||
static constexpr sint32 CONSOLE_INPUT_SIZE = 256;
|
||||
static constexpr sint32 CONSOLE_CARET_FLASH_THRESHOLD = 15;
|
||||
static constexpr sint32 CONSOLE_EDGE_PADDING = 4;
|
||||
static constexpr sint32 CONSOLE_CARET_WIDTH = 6;
|
||||
|
||||
bool _isOpen = false;
|
||||
sint32 _consoleLeft, _consoleTop, _consoleRight, _consoleBottom;
|
||||
sint32 _lastMainViewportX, _lastMainViewportY;
|
||||
std::deque<std::string> _consoleLines;
|
||||
utf8 _consoleCurrentLine[CONSOLE_INPUT_SIZE] = {};
|
||||
sint32 _consoleCaretTicks;
|
||||
sint32 _consoleScrollPos = 0;
|
||||
TextInputSession * _consoleTextInputSession;
|
||||
utf8 _consoleHistory[CONSOLE_HISTORY_SIZE][CONSOLE_INPUT_SIZE];
|
||||
sint32 _consoleHistoryIndex = 0;
|
||||
sint32 _consoleHistoryCount = 0;
|
||||
|
||||
public:
|
||||
InGameConsole();
|
||||
InGameConsole(const InGameConsole& src) = delete;
|
||||
|
||||
bool IsOpen() const { return _isOpen; }
|
||||
|
||||
void Clear() override;
|
||||
void Open();
|
||||
void Close() override;
|
||||
void Hide() override;
|
||||
void Toggle();
|
||||
void WriteLine(const std::string &s, uint32 colourFormat) override;
|
||||
|
||||
void Input(CONSOLE_INPUT input);
|
||||
void RefreshCaret();
|
||||
void Scroll(sint32 linesToScroll);
|
||||
|
||||
void Update();
|
||||
void Draw(rct_drawpixelinfo * dpi) const;
|
||||
|
||||
private:
|
||||
void ClearInput();
|
||||
void ClearLine();
|
||||
void HistoryAdd(const utf8 * src);
|
||||
void WritePrompt();
|
||||
void ScrollToEnd();
|
||||
void Invalidate() const;
|
||||
sint32 GetNumVisibleLines() const;
|
||||
};
|
||||
} // namespace OpenRCT2::Ui
|
|
@ -16,11 +16,14 @@
|
|||
|
||||
#include <openrct2-ui/interface/Dropdown.h>
|
||||
#include <openrct2/world/Map.h>
|
||||
#include <openrct2/world/Surface.h>
|
||||
#include <openrct2-ui/interface/LandTool.h>
|
||||
#include <openrct2-ui/interface/Widget.h>
|
||||
#include <openrct2-ui/interface/Window.h>
|
||||
#include <openrct2/Input.h>
|
||||
#include <openrct2/drawing/Drawing.h>
|
||||
|
||||
// clang-format off
|
||||
static uint16 toolSizeSpriteIndices[] =
|
||||
{
|
||||
SPR_LAND_TOOL_SIZE_0,
|
||||
|
@ -66,6 +69,7 @@ uint32 WallTexturePreviews[] =
|
|||
SPR_G2_WALL_TEXTURE_SKYSCRAPER_A,
|
||||
SPR_G2_WALL_TEXTURE_SKYSCRAPER_B,
|
||||
};
|
||||
// clang-format on
|
||||
|
||||
uint16 gLandToolSize;
|
||||
money32 gLandToolRaiseCost;
|
||||
|
|
|
@ -45,7 +45,6 @@
|
|||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup>
|
||||
<ClCompile>
|
||||
<ObjectFileName>$(IntDir)\%(RelativeDir)</ObjectFileName>
|
||||
<AdditionalOptions>$(OPENRCT2_CL_ADDITIONALOPTIONS) %(AdditionalOptions)</AdditionalOptions>
|
||||
</ClCompile>
|
||||
<Lib>
|
||||
|
|
|
@ -16,16 +16,19 @@
|
|||
|
||||
#include <openrct2/OpenRCT2.h>
|
||||
#include <openrct2/Context.h>
|
||||
#include <openrct2/drawing/Drawing.h>
|
||||
#include <openrct2-ui/windows/Window.h>
|
||||
|
||||
#include <openrct2-ui/interface/Widget.h>
|
||||
#include <openrct2/localisation/Localisation.h>
|
||||
#include <openrct2/localisation/LocalisationService.h>
|
||||
#include <openrct2/sprites.h>
|
||||
|
||||
#define WW 400
|
||||
#define WH 350
|
||||
#define TABHEIGHT 50
|
||||
|
||||
// clang-format off
|
||||
enum
|
||||
{
|
||||
WINDOW_ABOUT_PAGE_OPENRCT2,
|
||||
|
@ -155,6 +158,7 @@ static rct_window_event_list *window_about_page_events[] = {
|
|||
&window_about_openrct2_events,
|
||||
&window_about_rct2_events,
|
||||
};
|
||||
// clang-format on
|
||||
|
||||
static void window_about_set_page(rct_window *w, sint32 page);
|
||||
|
||||
|
@ -248,7 +252,7 @@ static void window_about_openrct2_paint(rct_window *w, rct_drawpixelinfo *dpi)
|
|||
|
||||
// Copyright disclaimer; hidden when using truetype fonts to prevent
|
||||
// the text from overlapping the changelog button.
|
||||
if (!gUseTrueTypeFont)
|
||||
if (!LocalisationService_UseTrueTypeFont())
|
||||
{
|
||||
gfx_draw_string_centred_wrapped(dpi, nullptr, x, y, width, STR_ABOUT_OPENRCT2_DESCRIPTION_3, w->colours[2]);
|
||||
}
|
||||
|
|
|
@ -21,13 +21,16 @@
|
|||
|
||||
#include <openrct2/Game.h>
|
||||
#include <openrct2/localisation/Localisation.h>
|
||||
#include <openrct2/world/Scenery.h>
|
||||
#include <openrct2-ui/interface/Dropdown.h>
|
||||
#include <openrct2/sprites.h>
|
||||
#include <openrct2/world/Banner.h>
|
||||
#include <openrct2/world/Scenery.h>
|
||||
#include <openrct2/actions/BannerSetNameAction.hpp>
|
||||
|
||||
#define WW 113
|
||||
#define WH 96
|
||||
|
||||
// clang-format off
|
||||
enum WINDOW_BANNER_WIDGET_IDX {
|
||||
WIDX_BACKGROUND,
|
||||
WIDX_TITLE,
|
||||
|
@ -110,6 +113,7 @@ static rct_window_event_list window_banner_events = {
|
|||
window_banner_paint,
|
||||
nullptr
|
||||
};
|
||||
// clang-format on
|
||||
|
||||
/**
|
||||
*
|
||||
|
@ -146,7 +150,7 @@ rct_window * window_banner_open(rct_windownumber number)
|
|||
rct_tile_element* tile_element = map_get_first_element_at(view_x / 32, view_y / 32);
|
||||
while(1) {
|
||||
if (
|
||||
(tile_element_get_type(tile_element) == TILE_ELEMENT_TYPE_BANNER) &&
|
||||
(tile_element->GetType() == TILE_ELEMENT_TYPE_BANNER) &&
|
||||
(tile_element->properties.banner.index == w->number)
|
||||
) {
|
||||
break;
|
||||
|
@ -196,7 +200,7 @@ static void window_banner_mouseup(rct_window *w, rct_widgetindex widgetIndex)
|
|||
rct_tile_element* tile_element = map_get_first_element_at(x / 32, y / 32);
|
||||
|
||||
while (1){
|
||||
if ((tile_element_get_type(tile_element) == TILE_ELEMENT_TYPE_BANNER) &&
|
||||
if ((tile_element->GetType() == TILE_ELEMENT_TYPE_BANNER) &&
|
||||
(tile_element->properties.banner.index == w->number)) break;
|
||||
tile_element++;
|
||||
}
|
||||
|
@ -285,10 +289,10 @@ static void window_banner_dropdown(rct_window *w, rct_widgetindex widgetIndex, s
|
|||
*/
|
||||
static void window_banner_textinput(rct_window *w, rct_widgetindex widgetIndex, char *text)
|
||||
{
|
||||
if (widgetIndex == WIDX_BANNER_TEXT && text != nullptr) {
|
||||
game_do_command(1, GAME_COMMAND_FLAG_APPLY, w->number, *((sint32*)(text + 0)), GAME_COMMAND_SET_BANNER_NAME, *((sint32*)(text + 8)), *((sint32*)(text + 4)));
|
||||
game_do_command(2, GAME_COMMAND_FLAG_APPLY, w->number, *((sint32*)(text + 12)), GAME_COMMAND_SET_BANNER_NAME, *((sint32*)(text + 20)), *((sint32*)(text + 16)));
|
||||
game_do_command(0, GAME_COMMAND_FLAG_APPLY, w->number, *((sint32*)(text + 24)), GAME_COMMAND_SET_BANNER_NAME, *((sint32*)(text + 32)), *((sint32*)(text + 28)));
|
||||
if (widgetIndex == WIDX_BANNER_TEXT && text != nullptr)
|
||||
{
|
||||
auto bannerSetNameAction = BannerSetNameAction(w->number, text);
|
||||
GameActions::Execute(&bannerSetNameAction);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue