mirror of https://github.com/OpenRCT2/OpenRCT2.git
Merge branch 'develop'
This commit is contained in:
commit
f3e5435068
|
@ -2,7 +2,7 @@
|
|||
Fill in the placeholders below. Delete any headings and placeholders that you do not fill in.
|
||||
-->
|
||||
**OS:** [e.g. Windows 10]
|
||||
**Version:** [e.g. 0.0.8]
|
||||
**Version:** [e.g. 0.1.0]
|
||||
**Commit/Build:** [e.g. 426e106]
|
||||
|
||||
<!-- Explanation of the issue -->
|
||||
|
|
18
.travis.yml
18
.travis.yml
|
@ -14,7 +14,7 @@ sudo: required
|
|||
dist: trusty
|
||||
env:
|
||||
global:
|
||||
- OPENRCT2_VERSION="0.1.0"
|
||||
- OPENRCT2_VERSION="0.1.1"
|
||||
|
||||
matrix:
|
||||
include:
|
||||
|
@ -22,7 +22,7 @@ matrix:
|
|||
services:
|
||||
- docker
|
||||
env:
|
||||
- OPENRCT2_CMAKE_OPTS="-DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_INSTALL_PREFIX=OpenRCT2 -DPORTABLE=ON -DDISABLE_RCT2_TESTS=on" TARGET=ubuntu_amd64
|
||||
- OPENRCT2_CMAKE_OPTS="-DCMAKE_BUILD_TYPE=RelWithDebInfo -DBUILD_SHARED_LIBS=ON -DCMAKE_INSTALL_PREFIX=OpenRCT2 -DPORTABLE=ON -DDISABLE_RCT2_TESTS=on" 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
|
||||
|
@ -30,7 +30,7 @@ matrix:
|
|||
- sudo chown -R $USER build
|
||||
- cd build
|
||||
# make install is done inside docker
|
||||
- mv OpenRCT2/bin/openrct2 OpenRCT2/ && mv OpenRCT2/bin/libopenrct2.so OpenRCT2/ && mv OpenRCT2/share/openrct2 OpenRCT2/data && mv OpenRCT2/share/doc/openrct2 OpenRCT2/doc
|
||||
- mv OpenRCT2/bin/openrct2 OpenRCT2/ && mv OpenRCT2/bin/openrct2-cli OpenRCT2/ && mv OpenRCT2/bin/libopenrct2.so OpenRCT2/ && mv OpenRCT2/share/openrct2 OpenRCT2/data && mv OpenRCT2/share/doc/openrct2 OpenRCT2/doc
|
||||
- rm -rf OpenRCT2/bin OpenRCT2/share # remove empty dirs
|
||||
- tar cvzf openrct2-linux.tar.gz OpenRCT2/
|
||||
- if [[ "z${TRAVIS_TAG}" != "z" ]] ; then
|
||||
|
@ -45,7 +45,7 @@ matrix:
|
|||
services:
|
||||
- docker
|
||||
env:
|
||||
- OPENRCT2_CMAKE_OPTS="-DFORCE32=ON -DDISABLE_RCT2=OFF -DCMAKE_INSTALL_PREFIX=OpenRCT2 -DDISABLE_RCT2_TESTS=on" TARGET=ubuntu_i686
|
||||
- OPENRCT2_CMAKE_OPTS="-DFORCE32=ON -DDISABLE_RCT2=OFF -DBUILD_SHARED_LIBS=off -DCMAKE_INSTALL_PREFIX=OpenRCT2 -DDISABLE_RCT2_TESTS=on" TARGET=ubuntu_i686
|
||||
- secure: "S3u2VCE2Vy8KNXoeh+DhnzjCmgTX0r95uEZrXDU+IKANOOCKn7Dg4OFDZE3LY/i1y2/EUDpnR5yLC38Ks795EUP/sv/OoMl4tjQ20yERjqWh+gcIRrgx7SdVabuAh3t4aBdaLD4Pfnj5avxeCt6rL7yGnj0wdbrbJSBZPsgSnuQ="
|
||||
after_success:
|
||||
# Android jobs are triggered from cron and overwrite `after_sucess` part
|
||||
|
@ -65,19 +65,19 @@ matrix:
|
|||
else curl --progress-bar --upload-file openrct2-linux.tar.gz https://transfer.sh/openrct2-linux-i686.tar.gz -o link && cat link;
|
||||
fi
|
||||
- os: linux
|
||||
env: OPENRCT2_CMAKE_OPTS="-DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DDISABLE_RCT2_TESTS=on" TARGET=ubuntu_amd64
|
||||
env: OPENRCT2_CMAKE_OPTS="-DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DBUILD_SHARED_LIBS=ON -DDISABLE_RCT2_TESTS=on" TARGET=ubuntu_amd64
|
||||
- os: linux
|
||||
env: OPENRCT2_CMAKE_OPTS="-DCMAKE_TOOLCHAIN_FILE=../CMakeLists_mingw.txt -DFORCE32=on -DDISABLE_RCT2_TESTS=on" TARGET=windows
|
||||
env: OPENRCT2_CMAKE_OPTS="-DCMAKE_TOOLCHAIN_FILE=../CMakeLists_mingw.txt -DFORCE32=on -DBUILD_SHARED_LIBS=ON -DDISABLE_RCT2_TESTS=on" TARGET=windows
|
||||
- os: linux
|
||||
env: TARGET=docker64 OPENRCT2_CMAKE_OPTS="-DDISABLE_TTF=ON -DCMAKE_BUILD_TYPE=release -DDISABLE_RCT2_TESTS=on"
|
||||
env: TARGET=docker64 OPENRCT2_CMAKE_OPTS="-DDISABLE_TTF=ON -DCMAKE_BUILD_TYPE=release -DBUILD_SHARED_LIBS=ON -DDISABLE_RCT2_TESTS=on"
|
||||
services:
|
||||
- docker
|
||||
- os: linux
|
||||
env: OPENRCT2_CMAKE_OPTS="-DDISABLE_NETWORK=ON -DDISABLE_HTTP_TWITCH=ON -DDISABLE_RCT2_TESTS=on" TARGET=docker64
|
||||
env: OPENRCT2_CMAKE_OPTS="-DDISABLE_NETWORK=ON -DDISABLE_HTTP_TWITCH=ON -DBUILD_SHARED_LIBS=ON -DDISABLE_RCT2_TESTS=on" TARGET=docker64
|
||||
services:
|
||||
- docker
|
||||
- os: linux
|
||||
env: OPENRCT2_CMAKE_OPTS="-DDISABLE_OPENGL=ON -DDISABLE_RCT2_TESTS=on" TARGET=docker64
|
||||
env: OPENRCT2_CMAKE_OPTS="-DDISABLE_OPENGL=ON -DBUILD_SHARED_LIBS=ON -DDISABLE_RCT2_TESTS=on" TARGET=docker64
|
||||
services:
|
||||
- docker
|
||||
- os: osx
|
||||
|
|
|
@ -1,12 +1,15 @@
|
|||
# CMAKE project for openrct2
|
||||
cmake_minimum_required(VERSION 2.6)
|
||||
cmake_minimum_required(VERSION 3.1)
|
||||
if (CMAKE_BINARY_DIR STREQUAL CMAKE_SOURCE_DIR)
|
||||
message(FATAL_ERROR "Building in-source is not supported! Create a build dir and remove ${CMAKE_SOURCE_DIR}/CMakeCache.txt")
|
||||
endif()
|
||||
|
||||
project(openrct2)
|
||||
|
||||
include(FindPkgConfig)
|
||||
include(CheckCCompilerFlag)
|
||||
include(CheckCXXCompilerFlag)
|
||||
include(GNUInstallDirs)
|
||||
|
||||
set(ROOT_DIR "${CMAKE_CURRENT_LIST_DIR}")
|
||||
set(CMAKE_MACOSX_RPATH 1)
|
||||
|
@ -130,29 +133,32 @@ list(APPEND DOC_FILES "${ROOT_DIR}/contributors.md"
|
|||
# targets, like `install`, so we have to trick it and execute dependency ourselves.
|
||||
install(CODE "execute_process(COMMAND \"${CMAKE_COMMAND}\" --build \"${CMAKE_CURRENT_BINARY_DIR}\" --target g2)")
|
||||
IF (DOWNLOAD_TITLE_SEQUENCES)
|
||||
install(CODE "file(DOWNLOAD ${TITLE_SEQUENCE_URL} \$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/share/${PROJECT}/title/title-sequences.zip EXPECTED_HASH SHA1=${TITLE_SEQUENCE_SHA1} SHOW_PROGRESS)")
|
||||
install(CODE "execute_process(COMMAND \"${CMAKE_COMMAND}\" -E chdir \$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/share/${PROJECT}/title/ \"${CMAKE_COMMAND}\" -E tar xvf title-sequences.zip)")
|
||||
install(CODE "file(REMOVE \$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/share/${PROJECT}/title/title-sequences.zip)")
|
||||
install(CODE "file(DOWNLOAD ${TITLE_SEQUENCE_URL} \$ENV{DESTDIR}${CMAKE_INSTALL_FULL_DATADIR}/${PROJECT}/title/title-sequences.zip EXPECTED_HASH SHA1=${TITLE_SEQUENCE_SHA1} SHOW_PROGRESS)")
|
||||
install(CODE "execute_process(COMMAND \"${CMAKE_COMMAND}\" -E chdir \$ENV{DESTDIR}${CMAKE_INSTALL_FULL_DATADIR}/${PROJECT}/title/ \"${CMAKE_COMMAND}\" -E tar xvf title-sequences.zip)")
|
||||
install(CODE "file(REMOVE \$ENV{DESTDIR}${CMAKE_INSTALL_FULL_DATADIR}/${PROJECT}/title/title-sequences.zip)")
|
||||
endif ()
|
||||
if (WIN32)
|
||||
install(TARGETS "libopenrct2" RUNTIME DESTINATION "bin")
|
||||
install(TARGETS "libopenrct2" RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}"
|
||||
ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}")
|
||||
else ()
|
||||
if (PORTABLE)
|
||||
install(TARGETS "libopenrct2" LIBRARY DESTINATION "bin")
|
||||
install(TARGETS "libopenrct2" LIBRARY DESTINATION "${CMAKE_INSTALL_BINDIR}"
|
||||
ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}")
|
||||
else ()
|
||||
install(TARGETS "libopenrct2" LIBRARY DESTINATION "lib")
|
||||
install(TARGETS "libopenrct2" LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}"
|
||||
ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}")
|
||||
endif ()
|
||||
endif ()
|
||||
install(TARGETS "openrct2" RUNTIME DESTINATION "bin")
|
||||
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/g2.dat" DESTINATION "share/openrct2")
|
||||
install(DIRECTORY "data/" DESTINATION "share/openrct2")
|
||||
install(FILES ${DOC_FILES} DESTINATION "share/doc/openrct2")
|
||||
install(FILES "resources/logo/icon_x16.png" DESTINATION "share/icons/hicolor/16x16/apps" RENAME "openrct2.png")
|
||||
install(FILES "resources/logo/icon_x32.png" DESTINATION "share/icons/hicolor/32x32/apps" RENAME "openrct2.png")
|
||||
install(FILES "resources/logo/icon_x64.png" DESTINATION "share/icons/hicolor/64x64/apps" RENAME "openrct2.png")
|
||||
install(FILES "resources/logo/icon_x128.png" DESTINATION "share/icons/hicolor/128x128/apps" RENAME "openrct2.png")
|
||||
install(FILES "resources/logo/icon_x256.png" DESTINATION "share/icons/hicolor/256x256/apps" RENAME "openrct2.png")
|
||||
install(FILES "resources/logo/icon_flag.svg" DESTINATION "share/icons/hicolor/scalable/apps" RENAME "openrct2.svg")
|
||||
install(FILES "distribution/linux/openrct2.desktop" DESTINATION "share/applications")
|
||||
install(DIRECTORY "distribution/man/" DESTINATION "share/man/man6" FILES_MATCHING PATTERN "*.6")
|
||||
install(CODE "execute_process(COMMAND find \$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/share/man/man6 -type f -exec gzip -f \"{}\" \;)")
|
||||
install(TARGETS "openrct2" RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}")
|
||||
install(TARGETS "openrct2-cli" OPTIONAL RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}")
|
||||
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/g2.dat" DESTINATION "${CMAKE_INSTALL_DATADIR}/openrct2")
|
||||
install(DIRECTORY "data/" DESTINATION "${CMAKE_INSTALL_DATADIR}/openrct2")
|
||||
install(FILES ${DOC_FILES} DESTINATION "${CMAKE_INSTALL_DOCDIR}")
|
||||
install(FILES "resources/logo/icon_x16.png" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/icons/hicolor/16x16/apps" RENAME "openrct2.png")
|
||||
install(FILES "resources/logo/icon_x32.png" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/icons/hicolor/32x32/apps" RENAME "openrct2.png")
|
||||
install(FILES "resources/logo/icon_x64.png" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/icons/hicolor/64x64/apps" RENAME "openrct2.png")
|
||||
install(FILES "resources/logo/icon_x128.png" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/icons/hicolor/128x128/apps" RENAME "openrct2.png")
|
||||
install(FILES "resources/logo/icon_x256.png" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/icons/hicolor/256x256/apps" RENAME "openrct2.png")
|
||||
install(FILES "resources/logo/icon_flag.svg" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/icons/hicolor/scalable/apps" RENAME "openrct2.svg")
|
||||
install(FILES "distribution/linux/openrct2.desktop" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/applications")
|
||||
install(DIRECTORY "distribution/man/" DESTINATION "${CMAKE_INSTALL_MANDIR}/man6" FILES_MATCHING PATTERN "*.6")
|
||||
|
|
|
@ -39,8 +39,8 @@ work outside and inside the game.
|
|||
|
||||
## Code hints
|
||||
### Adding new strings
|
||||
If you need to add a new localisable string to OpenRCT2, please add your new string entry to ```./data/language/english_uk.txt```.
|
||||
It is important that you only edit English (UK) in the OpenRCT2 repository as this is the base language that is used for
|
||||
If you need to add a new localisable string to OpenRCT2, please add your new string entry to ```./data/language/en-GB.txt```.
|
||||
It is important that you only edit en-GB in the OpenRCT2 repository as this is the base language that is used for
|
||||
translation to other languages. A separate repository OpenRCT2/Localisation is used for translation pull requests, and changes
|
||||
to that repository are merged with the OpenRCT2 main repository every night. When your pull request is merged, it is helpful
|
||||
to create a new issue in the OpenRCT2/Localisation repository about the new strings you have added. This notifies translators
|
||||
|
|
|
@ -21,6 +21,7 @@
|
|||
/* End PBXAggregateTarget section */
|
||||
|
||||
/* Begin PBXBuildFile section */
|
||||
4C5C268D1F31F65B003F90A1 /* About.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4C5C268C1F31F65B003F90A1 /* About.cpp */; };
|
||||
4C8667821EEFDCDF0024AAB8 /* RideGroupManager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4C8667801EEFDCDF0024AAB8 /* RideGroupManager.cpp */; };
|
||||
4C8B42701EEB1ABD00F015CA /* X8DrawingEngine.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4C8B426E1EEB1ABD00F015CA /* X8DrawingEngine.cpp */; };
|
||||
4C8B42721EEB1AE400F015CA /* HardwareDisplayDrawingEngine.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4C8B42711EEB1AE400F015CA /* HardwareDisplayDrawingEngine.cpp */; };
|
||||
|
@ -28,6 +29,8 @@
|
|||
4CB832A71EFBDCCE00B88761 /* land_tool.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CB832A51EFBDCCE00B88761 /* land_tool.c */; };
|
||||
4CB832AB1EFFB8D100B88761 /* ttf_sdlport.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CB832A81EFFB8D100B88761 /* ttf_sdlport.c */; };
|
||||
4CB832AC1EFFB8D100B88761 /* ttf.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CB832A91EFFB8D100B88761 /* ttf.c */; };
|
||||
4CF788C01F1B787700C611BF /* Painter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4CF788BE1F1B787700C611BF /* Painter.cpp */; };
|
||||
4CFBCD5E1F27CD8000D74FB6 /* SmallScenery.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4CFBCD5D1F27CD8000D74FB6 /* SmallScenery.cpp */; };
|
||||
C606CCBE1DB4054000FE4015 /* compat.c in Sources */ = {isa = PBXBuildFile; fileRef = C606CCAB1DB4054000FE4015 /* compat.c */; };
|
||||
C606CCBF1DB4054000FE4015 /* data.c in Sources */ = {isa = PBXBuildFile; fileRef = C606CCAC1DB4054000FE4015 /* data.c */; };
|
||||
C606CCC01DB4054000FE4015 /* FunctionCall.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C606CCAE1DB4054000FE4015 /* FunctionCall.cpp */; };
|
||||
|
@ -83,7 +86,7 @@
|
|||
D4EC48E71C2637710024B507 /* language in Resources */ = {isa = PBXBuildFile; fileRef = D4EC48E41C2637710024B507 /* language */; };
|
||||
D4EC48E81C2637710024B507 /* title in Resources */ = {isa = PBXBuildFile; fileRef = D4EC48E51C2637710024B507 /* title */; };
|
||||
F74789551EEDEA0D009E50E7 /* input.c in Sources */ = {isa = PBXBuildFile; fileRef = F74789531EEDEA0D009E50E7 /* input.c */; };
|
||||
F76C85B01EC4E88300FA49E2 /* audio.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F76C83571EC4E7CC00FA49E2 /* audio.cpp */; };
|
||||
F76C85B01EC4E88300FA49E2 /* Audio.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F76C83571EC4E7CC00FA49E2 /* Audio.cpp */; };
|
||||
F76C85B41EC4E88300FA49E2 /* AudioMixer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F76C835B1EC4E7CC00FA49E2 /* AudioMixer.cpp */; };
|
||||
F76C85B71EC4E88300FA49E2 /* NullAudioSource.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F76C835E1EC4E7CC00FA49E2 /* NullAudioSource.cpp */; };
|
||||
F76C85B81EC4E88300FA49E2 /* cheats.c in Sources */ = {isa = PBXBuildFile; fileRef = F76C835F1EC4E7CC00FA49E2 /* cheats.c */; };
|
||||
|
@ -112,7 +115,7 @@
|
|||
F76C85EE1EC4E88300FA49E2 /* Zip.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F76C83991EC4E7CC00FA49E2 /* Zip.cpp */; };
|
||||
F76C85F01EC4E88300FA49E2 /* diagnostic.c in Sources */ = {isa = PBXBuildFile; fileRef = F76C839B1EC4E7CC00FA49E2 /* diagnostic.c */; };
|
||||
F76C85F21EC4E88300FA49E2 /* drawing.c in Sources */ = {isa = PBXBuildFile; fileRef = F76C839E1EC4E7CC00FA49E2 /* drawing.c */; };
|
||||
F76C85F41EC4E88300FA49E2 /* drawing_fast.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F76C83A01EC4E7CC00FA49E2 /* drawing_fast.cpp */; };
|
||||
F76C85F41EC4E88300FA49E2 /* DrawingFast.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F76C83A01EC4E7CC00FA49E2 /* DrawingFast.cpp */; };
|
||||
F76C85F51EC4E88300FA49E2 /* font.c in Sources */ = {isa = PBXBuildFile; fileRef = F76C83A11EC4E7CC00FA49E2 /* font.c */; };
|
||||
F76C85F91EC4E88300FA49E2 /* Image.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F76C83A51EC4E7CC00FA49E2 /* Image.cpp */; };
|
||||
F76C85FA1EC4E88300FA49E2 /* lightfx.c in Sources */ = {isa = PBXBuildFile; fileRef = F76C83A61EC4E7CC00FA49E2 /* lightfx.c */; };
|
||||
|
@ -121,7 +124,7 @@
|
|||
F76C85FF1EC4E88300FA49E2 /* Rain.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F76C83AB1EC4E7CC00FA49E2 /* Rain.cpp */; };
|
||||
F76C86011EC4E88300FA49E2 /* rect.c in Sources */ = {isa = PBXBuildFile; fileRef = F76C83AD1EC4E7CC00FA49E2 /* rect.c */; };
|
||||
F76C86021EC4E88300FA49E2 /* scrolling_text.c in Sources */ = {isa = PBXBuildFile; fileRef = F76C83AE1EC4E7CC00FA49E2 /* scrolling_text.c */; };
|
||||
F76C86031EC4E88300FA49E2 /* sprite.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F76C83AF1EC4E7CC00FA49E2 /* sprite.cpp */; };
|
||||
F76C86031EC4E88300FA49E2 /* Sprite.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F76C83AF1EC4E7CC00FA49E2 /* Sprite.cpp */; };
|
||||
F76C86041EC4E88300FA49E2 /* string.c in Sources */ = {isa = PBXBuildFile; fileRef = F76C83B01EC4E7CC00FA49E2 /* string.c */; };
|
||||
F76C86051EC4E88300FA49E2 /* editor.c in Sources */ = {isa = PBXBuildFile; fileRef = F76C83B11EC4E7CC00FA49E2 /* editor.c */; };
|
||||
F76C86071EC4E88300FA49E2 /* FileClassifier.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F76C83B31EC4E7CC00FA49E2 /* FileClassifier.cpp */; };
|
||||
|
@ -143,7 +146,7 @@
|
|||
F76C862A1EC4E88300FA49E2 /* currency.c in Sources */ = {isa = PBXBuildFile; fileRef = F76C83D91EC4E7CC00FA49E2 /* currency.c */; };
|
||||
F76C862C1EC4E88300FA49E2 /* date.c in Sources */ = {isa = PBXBuildFile; fileRef = F76C83DB1EC4E7CC00FA49E2 /* date.c */; };
|
||||
F76C862E1EC4E88300FA49E2 /* format_codes.c in Sources */ = {isa = PBXBuildFile; fileRef = F76C83DD1EC4E7CC00FA49E2 /* format_codes.c */; };
|
||||
F76C86301EC4E88300FA49E2 /* language.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F76C83DF1EC4E7CC00FA49E2 /* language.cpp */; };
|
||||
F76C86301EC4E88300FA49E2 /* Language.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F76C83DF1EC4E7CC00FA49E2 /* Language.cpp */; };
|
||||
F76C86321EC4E88300FA49E2 /* LanguagePack.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F76C83E11EC4E7CC00FA49E2 /* LanguagePack.cpp */; };
|
||||
F76C86341EC4E88300FA49E2 /* localisation.c in Sources */ = {isa = PBXBuildFile; fileRef = F76C83E31EC4E7CC00FA49E2 /* localisation.c */; };
|
||||
F76C86361EC4E88300FA49E2 /* real_names.c in Sources */ = {isa = PBXBuildFile; fileRef = F76C83E51EC4E7CC00FA49E2 /* real_names.c */; };
|
||||
|
@ -154,8 +157,8 @@
|
|||
F76C863F1EC4E88300FA49E2 /* marketing.c in Sources */ = {isa = PBXBuildFile; fileRef = F76C83EF1EC4E7CC00FA49E2 /* marketing.c */; };
|
||||
F76C86411EC4E88300FA49E2 /* news_item.c in Sources */ = {isa = PBXBuildFile; fileRef = F76C83F11EC4E7CC00FA49E2 /* news_item.c */; };
|
||||
F76C86431EC4E88300FA49E2 /* research.c in Sources */ = {isa = PBXBuildFile; fileRef = F76C83F31EC4E7CC00FA49E2 /* research.c */; };
|
||||
F76C86451EC4E88300FA49E2 /* http.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F76C83F61EC4E7CC00FA49E2 /* http.cpp */; };
|
||||
F76C86471EC4E88300FA49E2 /* network.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F76C83F81EC4E7CC00FA49E2 /* network.cpp */; };
|
||||
F76C86451EC4E88300FA49E2 /* Http.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F76C83F61EC4E7CC00FA49E2 /* Http.cpp */; };
|
||||
F76C86471EC4E88300FA49E2 /* Network.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F76C83F81EC4E7CC00FA49E2 /* Network.cpp */; };
|
||||
F76C86491EC4E88300FA49E2 /* NetworkAction.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F76C83FA1EC4E7CC00FA49E2 /* NetworkAction.cpp */; };
|
||||
F76C864B1EC4E88300FA49E2 /* NetworkConnection.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F76C83FC1EC4E7CC00FA49E2 /* NetworkConnection.cpp */; };
|
||||
F76C864D1EC4E88300FA49E2 /* NetworkGroup.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F76C83FE1EC4E7CC00FA49E2 /* NetworkGroup.cpp */; };
|
||||
|
@ -166,7 +169,7 @@
|
|||
F76C86581EC4E88300FA49E2 /* NetworkUser.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F76C84091EC4E7CC00FA49E2 /* NetworkUser.cpp */; };
|
||||
F76C865A1EC4E88300FA49E2 /* ServerList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F76C840B1EC4E7CC00FA49E2 /* ServerList.cpp */; };
|
||||
F76C865C1EC4E88300FA49E2 /* TcpSocket.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F76C840D1EC4E7CC00FA49E2 /* TcpSocket.cpp */; };
|
||||
F76C865E1EC4E88300FA49E2 /* twitch.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F76C840F1EC4E7CC00FA49E2 /* twitch.cpp */; };
|
||||
F76C865E1EC4E88300FA49E2 /* Twitch.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F76C840F1EC4E7CC00FA49E2 /* Twitch.cpp */; };
|
||||
F76C86601EC4E88300FA49E2 /* BannerObject.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F76C84121EC4E7CC00FA49E2 /* BannerObject.cpp */; };
|
||||
F76C86621EC4E88300FA49E2 /* EntranceObject.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F76C84141EC4E7CC00FA49E2 /* EntranceObject.cpp */; };
|
||||
F76C86641EC4E88300FA49E2 /* FootpathItemObject.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F76C84161EC4E7CC00FA49E2 /* FootpathItemObject.cpp */; };
|
||||
|
@ -205,7 +208,7 @@
|
|||
F76C869E1EC4E88400FA49E2 /* peep.c in Sources */ = {isa = PBXBuildFile; fileRef = F76C84541EC4E7CC00FA49E2 /* peep.c */; };
|
||||
F76C86A01EC4E88400FA49E2 /* peep_data.c in Sources */ = {isa = PBXBuildFile; fileRef = F76C84561EC4E7CC00FA49E2 /* peep_data.c */; };
|
||||
F76C86A11EC4E88400FA49E2 /* staff.c in Sources */ = {isa = PBXBuildFile; fileRef = F76C84571EC4E7CC00FA49E2 /* staff.c */; };
|
||||
F76C86A31EC4E88400FA49E2 /* crash.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F76C845A1EC4E7CC00FA49E2 /* crash.cpp */; };
|
||||
F76C86A31EC4E88400FA49E2 /* Crash.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F76C845A1EC4E7CC00FA49E2 /* Crash.cpp */; };
|
||||
F76C86A51EC4E88400FA49E2 /* linux.c in Sources */ = {isa = PBXBuildFile; fileRef = F76C845C1EC4E7CC00FA49E2 /* linux.c */; };
|
||||
F76C86A61EC4E88400FA49E2 /* macos.m in Sources */ = {isa = PBXBuildFile; fileRef = F76C845D1EC4E7CC00FA49E2 /* macos.m */; };
|
||||
F76C86A81EC4E88400FA49E2 /* Platform2.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F76C845F1EC4E7CC00FA49E2 /* Platform2.cpp */; };
|
||||
|
@ -214,7 +217,7 @@
|
|||
F76C86AC1EC4E88400FA49E2 /* windows.c in Sources */ = {isa = PBXBuildFile; fileRef = F76C84631EC4E7CC00FA49E2 /* windows.c */; };
|
||||
F76C86AD1EC4E88400FA49E2 /* PlatformEnvironment.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F76C84641EC4E7CC00FA49E2 /* PlatformEnvironment.cpp */; };
|
||||
F76C86AF1EC4E88400FA49E2 /* S4Importer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F76C84671EC4E7CC00FA49E2 /* S4Importer.cpp */; };
|
||||
F76C86B01EC4E88400FA49E2 /* tables.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F76C84681EC4E7CC00FA49E2 /* tables.cpp */; };
|
||||
F76C86B01EC4E88400FA49E2 /* Tables.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F76C84681EC4E7CC00FA49E2 /* Tables.cpp */; };
|
||||
F76C86B21EC4E88400FA49E2 /* rct1.c in Sources */ = {isa = PBXBuildFile; fileRef = F76C846A1EC4E7CC00FA49E2 /* rct1.c */; };
|
||||
F76C86B41EC4E88400FA49E2 /* SawyerChunk.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F76C846D1EC4E7CC00FA49E2 /* SawyerChunk.cpp */; };
|
||||
F76C86B61EC4E88400FA49E2 /* SawyerChunkReader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F76C846F1EC4E7CC00FA49E2 /* SawyerChunkReader.cpp */; };
|
||||
|
@ -225,7 +228,6 @@
|
|||
F76C86C11EC4E88400FA49E2 /* interop.c in Sources */ = {isa = PBXBuildFile; fileRef = F76C847B1EC4E7CC00FA49E2 /* interop.c */; };
|
||||
F76C86C31EC4E88400FA49E2 /* S6Exporter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F76C847D1EC4E7CC00FA49E2 /* S6Exporter.cpp */; };
|
||||
F76C86C51EC4E88400FA49E2 /* S6Importer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F76C847F1EC4E7CC00FA49E2 /* S6Importer.cpp */; };
|
||||
F76C86C61EC4E88400FA49E2 /* rct2.c in Sources */ = {isa = PBXBuildFile; fileRef = F76C84801EC4E7CC00FA49E2 /* rct2.c */; };
|
||||
F76C86C81EC4E88400FA49E2 /* cable_lift.c in Sources */ = {isa = PBXBuildFile; fileRef = F76C84841EC4E7CC00FA49E2 /* cable_lift.c */; };
|
||||
F76C86CA1EC4E88400FA49E2 /* air_powered_vertical_coaster.c in Sources */ = {isa = PBXBuildFile; fileRef = F76C84871EC4E7CC00FA49E2 /* air_powered_vertical_coaster.c */; };
|
||||
F76C86CB1EC4E88400FA49E2 /* bobsleigh_coaster.c in Sources */ = {isa = PBXBuildFile; fileRef = F76C84881EC4E7CC00FA49E2 /* bobsleigh_coaster.c */; };
|
||||
|
@ -323,7 +325,6 @@
|
|||
F76C87411EC4E88400FA49E2 /* sawyercoding.c in Sources */ = {isa = PBXBuildFile; fileRef = F76C85071EC4E7CD00FA49E2 /* sawyercoding.c */; };
|
||||
F76C87431EC4E88400FA49E2 /* util.c in Sources */ = {isa = PBXBuildFile; fileRef = F76C85091EC4E7CD00FA49E2 /* util.c */; };
|
||||
F76C87451EC4E88400FA49E2 /* Version.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F76C850B1EC4E7CD00FA49E2 /* Version.cpp */; };
|
||||
F76C87471EC4E88400FA49E2 /* about.c in Sources */ = {isa = PBXBuildFile; fileRef = F76C850E1EC4E7CD00FA49E2 /* about.c */; };
|
||||
F76C87481EC4E88400FA49E2 /* banner.c in Sources */ = {isa = PBXBuildFile; fileRef = F76C850F1EC4E7CD00FA49E2 /* banner.c */; };
|
||||
F76C87491EC4E88400FA49E2 /* changelog.c in Sources */ = {isa = PBXBuildFile; fileRef = F76C85101EC4E7CD00FA49E2 /* changelog.c */; };
|
||||
F76C874A1EC4E88400FA49E2 /* cheats.c in Sources */ = {isa = PBXBuildFile; fileRef = F76C85111EC4E7CD00FA49E2 /* cheats.c */; };
|
||||
|
@ -363,7 +364,6 @@
|
|||
F76C876E1EC4E88400FA49E2 /* options.c in Sources */ = {isa = PBXBuildFile; fileRef = F76C85351EC4E7CD00FA49E2 /* options.c */; };
|
||||
F76C876F1EC4E88400FA49E2 /* park.c in Sources */ = {isa = PBXBuildFile; fileRef = F76C85361EC4E7CD00FA49E2 /* park.c */; };
|
||||
F76C87701EC4E88400FA49E2 /* player.c in Sources */ = {isa = PBXBuildFile; fileRef = F76C85371EC4E7CD00FA49E2 /* player.c */; };
|
||||
F76C87711EC4E88400FA49E2 /* publisher_credits.c in Sources */ = {isa = PBXBuildFile; fileRef = F76C85381EC4E7CD00FA49E2 /* publisher_credits.c */; };
|
||||
F76C87721EC4E88400FA49E2 /* research.c in Sources */ = {isa = PBXBuildFile; fileRef = F76C85391EC4E7CD00FA49E2 /* research.c */; };
|
||||
F76C87731EC4E88400FA49E2 /* ride.c in Sources */ = {isa = PBXBuildFile; fileRef = F76C853A1EC4E7CD00FA49E2 /* ride.c */; };
|
||||
F76C87741EC4E88400FA49E2 /* ride_construction.c in Sources */ = {isa = PBXBuildFile; fileRef = F76C853B1EC4E7CD00FA49E2 /* ride_construction.c */; };
|
||||
|
@ -395,10 +395,10 @@
|
|||
F76C87921EC4E88400FA49E2 /* viewport.c in Sources */ = {isa = PBXBuildFile; fileRef = F76C85591EC4E7CD00FA49E2 /* viewport.c */; };
|
||||
F76C87931EC4E88400FA49E2 /* water.c in Sources */ = {isa = PBXBuildFile; fileRef = F76C855A1EC4E7CD00FA49E2 /* water.c */; };
|
||||
F76C87941EC4E88400FA49E2 /* Balloon.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F76C855C1EC4E7CD00FA49E2 /* Balloon.cpp */; };
|
||||
F76C87951EC4E88400FA49E2 /* banner.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F76C855D1EC4E7CD00FA49E2 /* banner.cpp */; };
|
||||
F76C87951EC4E88400FA49E2 /* Banner.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F76C855D1EC4E7CD00FA49E2 /* Banner.cpp */; };
|
||||
F76C87971EC4E88400FA49E2 /* Climate.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F76C855F1EC4E7CD00FA49E2 /* Climate.cpp */; };
|
||||
F76C87991EC4E88400FA49E2 /* Duck.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F76C85611EC4E7CD00FA49E2 /* Duck.cpp */; };
|
||||
F76C879A1EC4E88400FA49E2 /* entrance.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F76C85621EC4E7CD00FA49E2 /* entrance.cpp */; };
|
||||
F76C879A1EC4E88400FA49E2 /* Entrance.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F76C85621EC4E7CD00FA49E2 /* Entrance.cpp */; };
|
||||
F76C879C1EC4E88400FA49E2 /* footpath.c in Sources */ = {isa = PBXBuildFile; fileRef = F76C85641EC4E7CD00FA49E2 /* footpath.c */; };
|
||||
F76C879E1EC4E88400FA49E2 /* Fountain.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F76C85661EC4E7CD00FA49E2 /* Fountain.cpp */; };
|
||||
F76C87A01EC4E88400FA49E2 /* map.c in Sources */ = {isa = PBXBuildFile; fileRef = F76C85681EC4E7CD00FA49E2 /* map.c */; };
|
||||
|
@ -411,7 +411,7 @@
|
|||
F76C87AC1EC4E88500FA49E2 /* scenery.c in Sources */ = {isa = PBXBuildFile; fileRef = F76C85741EC4E7CD00FA49E2 /* scenery.c */; };
|
||||
F76C87AE1EC4E88500FA49E2 /* sprite.c in Sources */ = {isa = PBXBuildFile; fileRef = F76C85761EC4E7CD00FA49E2 /* sprite.c */; };
|
||||
F76C87B01EC4E88500FA49E2 /* tile_inspector.c in Sources */ = {isa = PBXBuildFile; fileRef = F76C85781EC4E7CD00FA49E2 /* tile_inspector.c */; };
|
||||
F76C87B21EC4E88500FA49E2 /* wall.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F76C857A1EC4E7CD00FA49E2 /* wall.cpp */; };
|
||||
F76C87B21EC4E88500FA49E2 /* Wall.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F76C857A1EC4E7CD00FA49E2 /* Wall.cpp */; };
|
||||
F76C88781EC5324E00FA49E2 /* AudioChannel.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F76C85821EC4E82600FA49E2 /* AudioChannel.cpp */; };
|
||||
F76C88791EC5324E00FA49E2 /* AudioContext.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F76C85831EC4E82600FA49E2 /* AudioContext.cpp */; };
|
||||
F76C887A1EC5324E00FA49E2 /* AudioMixer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F76C85861EC4E82600FA49E2 /* AudioMixer.cpp */; };
|
||||
|
@ -440,6 +440,7 @@
|
|||
F775F5351EE35A89001F00E7 /* DummyUiContext.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F775F5331EE35A6B001F00E7 /* DummyUiContext.cpp */; };
|
||||
F775F5371EE3724F001F00E7 /* DummyAudioContext.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F775F5361EE3724F001F00E7 /* DummyAudioContext.cpp */; };
|
||||
F775F5381EE3725C001F00E7 /* DummyAudioContext.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F775F5361EE3724F001F00E7 /* DummyAudioContext.cpp */; };
|
||||
F79F428F1F3260F1009E42F8 /* changelog.txt in Resources */ = {isa = PBXBuildFile; fileRef = F79F428E1F3260F1009E42F8 /* changelog.txt */; };
|
||||
F7CB863F1EEDA0B50030C877 /* WindowManager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F7CB863D1EEDA0B50030C877 /* WindowManager.cpp */; };
|
||||
F7CB86431EEDA0F50030C877 /* shortcut_key_change.c in Sources */ = {isa = PBXBuildFile; fileRef = F7CB86411EEDA0F50030C877 /* shortcut_key_change.c */; };
|
||||
F7CB86441EEDA0F50030C877 /* shortcut_keys.c in Sources */ = {isa = PBXBuildFile; fileRef = F7CB86421EEDA0F50030C877 /* shortcut_keys.c */; };
|
||||
|
@ -567,6 +568,7 @@
|
|||
/* End PBXCopyFilesBuildPhase section */
|
||||
|
||||
/* Begin PBXFileReference section */
|
||||
4C5C268C1F31F65B003F90A1 /* About.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = About.cpp; sourceTree = "<group>"; };
|
||||
4C8667801EEFDCDF0024AAB8 /* RideGroupManager.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RideGroupManager.cpp; sourceTree = "<group>"; };
|
||||
4C8667811EEFDCDF0024AAB8 /* RideGroupManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RideGroupManager.h; sourceTree = "<group>"; };
|
||||
4C8B426E1EEB1ABD00F015CA /* X8DrawingEngine.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = X8DrawingEngine.cpp; sourceTree = "<group>"; };
|
||||
|
@ -578,6 +580,9 @@
|
|||
4CB832A81EFFB8D100B88761 /* ttf_sdlport.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ttf_sdlport.c; sourceTree = "<group>"; };
|
||||
4CB832A91EFFB8D100B88761 /* ttf.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ttf.c; sourceTree = "<group>"; };
|
||||
4CB832AA1EFFB8D100B88761 /* ttf.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ttf.h; sourceTree = "<group>"; };
|
||||
4CF788BE1F1B787700C611BF /* Painter.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Painter.cpp; sourceTree = "<group>"; };
|
||||
4CF788BF1F1B787700C611BF /* Painter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Painter.h; sourceTree = "<group>"; };
|
||||
4CFBCD5D1F27CD8000D74FB6 /* SmallScenery.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SmallScenery.cpp; sourceTree = "<group>"; };
|
||||
C606CCAB1DB4054000FE4015 /* compat.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; lineEnding = 0; path = compat.c; sourceTree = "<group>"; xcLanguageSpecificationIdentifier = xcode.lang.c; };
|
||||
C606CCAC1DB4054000FE4015 /* data.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; lineEnding = 0; path = data.c; sourceTree = "<group>"; xcLanguageSpecificationIdentifier = xcode.lang.c; };
|
||||
C606CCAD1DB4054000FE4015 /* data.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; lineEnding = 0; path = data.h; sourceTree = "<group>"; xcLanguageSpecificationIdentifier = xcode.lang.objcpp; };
|
||||
|
@ -790,7 +795,7 @@
|
|||
F74789531EEDEA0D009E50E7 /* input.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = input.c; path = input/input.c; sourceTree = "<group>"; };
|
||||
F74789541EEDEA0D009E50E7 /* input.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = input.h; path = input/input.h; sourceTree = "<group>"; };
|
||||
F76C809A1EC4D9FA00FA49E2 /* libopenrct2.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libopenrct2.a; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
F76C83571EC4E7CC00FA49E2 /* audio.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = audio.cpp; sourceTree = "<group>"; };
|
||||
F76C83571EC4E7CC00FA49E2 /* Audio.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Audio.cpp; sourceTree = "<group>"; };
|
||||
F76C83581EC4E7CC00FA49E2 /* audio.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = audio.h; sourceTree = "<group>"; };
|
||||
F76C83591EC4E7CC00FA49E2 /* AudioChannel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AudioChannel.h; sourceTree = "<group>"; };
|
||||
F76C835A1EC4E7CC00FA49E2 /* AudioContext.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AudioContext.h; sourceTree = "<group>"; };
|
||||
|
@ -857,7 +862,7 @@
|
|||
F76C839C1EC4E7CC00FA49E2 /* diagnostic.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = diagnostic.h; sourceTree = "<group>"; };
|
||||
F76C839E1EC4E7CC00FA49E2 /* drawing.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = drawing.c; sourceTree = "<group>"; };
|
||||
F76C839F1EC4E7CC00FA49E2 /* drawing.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = drawing.h; sourceTree = "<group>"; };
|
||||
F76C83A01EC4E7CC00FA49E2 /* drawing_fast.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = drawing_fast.cpp; sourceTree = "<group>"; };
|
||||
F76C83A01EC4E7CC00FA49E2 /* DrawingFast.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = DrawingFast.cpp; sourceTree = "<group>"; };
|
||||
F76C83A11EC4E7CC00FA49E2 /* font.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = font.c; sourceTree = "<group>"; };
|
||||
F76C83A21EC4E7CC00FA49E2 /* font.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = font.h; sourceTree = "<group>"; };
|
||||
F76C83A31EC4E7CC00FA49E2 /* IDrawingContext.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = IDrawingContext.h; sourceTree = "<group>"; };
|
||||
|
@ -872,7 +877,7 @@
|
|||
F76C83AC1EC4E7CC00FA49E2 /* Rain.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Rain.h; sourceTree = "<group>"; };
|
||||
F76C83AD1EC4E7CC00FA49E2 /* rect.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = rect.c; sourceTree = "<group>"; };
|
||||
F76C83AE1EC4E7CC00FA49E2 /* scrolling_text.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = scrolling_text.c; sourceTree = "<group>"; };
|
||||
F76C83AF1EC4E7CC00FA49E2 /* sprite.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = sprite.cpp; sourceTree = "<group>"; };
|
||||
F76C83AF1EC4E7CC00FA49E2 /* Sprite.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Sprite.cpp; sourceTree = "<group>"; };
|
||||
F76C83B01EC4E7CC00FA49E2 /* string.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = string.c; sourceTree = "<group>"; };
|
||||
F76C83B11EC4E7CC00FA49E2 /* editor.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = editor.c; sourceTree = "<group>"; };
|
||||
F76C83B21EC4E7CC00FA49E2 /* editor.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = editor.h; sourceTree = "<group>"; };
|
||||
|
@ -914,7 +919,7 @@
|
|||
F76C83DC1EC4E7CC00FA49E2 /* date.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = date.h; sourceTree = "<group>"; };
|
||||
F76C83DD1EC4E7CC00FA49E2 /* format_codes.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = format_codes.c; sourceTree = "<group>"; };
|
||||
F76C83DE1EC4E7CC00FA49E2 /* format_codes.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = format_codes.h; sourceTree = "<group>"; };
|
||||
F76C83DF1EC4E7CC00FA49E2 /* language.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = language.cpp; sourceTree = "<group>"; };
|
||||
F76C83DF1EC4E7CC00FA49E2 /* Language.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Language.cpp; sourceTree = "<group>"; };
|
||||
F76C83E01EC4E7CC00FA49E2 /* language.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = language.h; sourceTree = "<group>"; };
|
||||
F76C83E11EC4E7CC00FA49E2 /* LanguagePack.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = LanguagePack.cpp; sourceTree = "<group>"; };
|
||||
F76C83E21EC4E7CC00FA49E2 /* LanguagePack.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LanguagePack.h; sourceTree = "<group>"; };
|
||||
|
@ -935,9 +940,9 @@
|
|||
F76C83F21EC4E7CC00FA49E2 /* news_item.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = news_item.h; sourceTree = "<group>"; };
|
||||
F76C83F31EC4E7CC00FA49E2 /* research.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = research.c; sourceTree = "<group>"; };
|
||||
F76C83F41EC4E7CC00FA49E2 /* research.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = research.h; sourceTree = "<group>"; };
|
||||
F76C83F61EC4E7CC00FA49E2 /* http.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = http.cpp; sourceTree = "<group>"; };
|
||||
F76C83F61EC4E7CC00FA49E2 /* Http.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Http.cpp; sourceTree = "<group>"; };
|
||||
F76C83F71EC4E7CC00FA49E2 /* http.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = http.h; sourceTree = "<group>"; };
|
||||
F76C83F81EC4E7CC00FA49E2 /* network.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = network.cpp; sourceTree = "<group>"; };
|
||||
F76C83F81EC4E7CC00FA49E2 /* Network.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Network.cpp; sourceTree = "<group>"; };
|
||||
F76C83F91EC4E7CC00FA49E2 /* network.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = network.h; sourceTree = "<group>"; };
|
||||
F76C83FA1EC4E7CC00FA49E2 /* NetworkAction.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = NetworkAction.cpp; sourceTree = "<group>"; };
|
||||
F76C83FB1EC4E7CC00FA49E2 /* NetworkAction.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = NetworkAction.h; sourceTree = "<group>"; };
|
||||
|
@ -960,7 +965,7 @@
|
|||
F76C840C1EC4E7CC00FA49E2 /* ServerList.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ServerList.h; sourceTree = "<group>"; };
|
||||
F76C840D1EC4E7CC00FA49E2 /* TcpSocket.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = TcpSocket.cpp; sourceTree = "<group>"; };
|
||||
F76C840E1EC4E7CC00FA49E2 /* TcpSocket.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = TcpSocket.h; sourceTree = "<group>"; };
|
||||
F76C840F1EC4E7CC00FA49E2 /* twitch.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = twitch.cpp; sourceTree = "<group>"; };
|
||||
F76C840F1EC4E7CC00FA49E2 /* Twitch.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Twitch.cpp; sourceTree = "<group>"; };
|
||||
F76C84101EC4E7CC00FA49E2 /* twitch.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = twitch.h; sourceTree = "<group>"; };
|
||||
F76C84121EC4E7CC00FA49E2 /* BannerObject.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = BannerObject.cpp; sourceTree = "<group>"; };
|
||||
F76C84131EC4E7CC00FA49E2 /* BannerObject.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = BannerObject.h; sourceTree = "<group>"; };
|
||||
|
@ -1029,7 +1034,7 @@
|
|||
F76C84561EC4E7CC00FA49E2 /* peep_data.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = peep_data.c; sourceTree = "<group>"; };
|
||||
F76C84571EC4E7CC00FA49E2 /* staff.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = staff.c; sourceTree = "<group>"; };
|
||||
F76C84581EC4E7CC00FA49E2 /* staff.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = staff.h; sourceTree = "<group>"; };
|
||||
F76C845A1EC4E7CC00FA49E2 /* crash.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = crash.cpp; sourceTree = "<group>"; };
|
||||
F76C845A1EC4E7CC00FA49E2 /* Crash.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Crash.cpp; sourceTree = "<group>"; };
|
||||
F76C845B1EC4E7CC00FA49E2 /* crash.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = crash.h; sourceTree = "<group>"; };
|
||||
F76C845C1EC4E7CC00FA49E2 /* linux.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = linux.c; sourceTree = "<group>"; };
|
||||
F76C845D1EC4E7CC00FA49E2 /* macos.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = macos.m; sourceTree = "<group>"; };
|
||||
|
@ -1042,7 +1047,7 @@
|
|||
F76C84641EC4E7CC00FA49E2 /* PlatformEnvironment.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = PlatformEnvironment.cpp; sourceTree = "<group>"; };
|
||||
F76C84651EC4E7CC00FA49E2 /* PlatformEnvironment.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PlatformEnvironment.h; sourceTree = "<group>"; };
|
||||
F76C84671EC4E7CC00FA49E2 /* S4Importer.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = S4Importer.cpp; sourceTree = "<group>"; };
|
||||
F76C84681EC4E7CC00FA49E2 /* tables.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = tables.cpp; sourceTree = "<group>"; };
|
||||
F76C84681EC4E7CC00FA49E2 /* Tables.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Tables.cpp; sourceTree = "<group>"; };
|
||||
F76C84691EC4E7CC00FA49E2 /* Tables.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Tables.h; sourceTree = "<group>"; };
|
||||
F76C846A1EC4E7CC00FA49E2 /* rct1.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = rct1.c; sourceTree = "<group>"; };
|
||||
F76C846B1EC4E7CC00FA49E2 /* rct1.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = rct1.h; sourceTree = "<group>"; };
|
||||
|
@ -1064,7 +1069,6 @@
|
|||
F76C847D1EC4E7CC00FA49E2 /* S6Exporter.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = S6Exporter.cpp; sourceTree = "<group>"; };
|
||||
F76C847E1EC4E7CC00FA49E2 /* S6Exporter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = S6Exporter.h; sourceTree = "<group>"; };
|
||||
F76C847F1EC4E7CC00FA49E2 /* S6Importer.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = S6Importer.cpp; sourceTree = "<group>"; };
|
||||
F76C84801EC4E7CC00FA49E2 /* rct2.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = rct2.c; sourceTree = "<group>"; };
|
||||
F76C84811EC4E7CC00FA49E2 /* rct2.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = rct2.h; sourceTree = "<group>"; };
|
||||
F76C84841EC4E7CC00FA49E2 /* cable_lift.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = cable_lift.c; sourceTree = "<group>"; };
|
||||
F76C84851EC4E7CC00FA49E2 /* cable_lift.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = cable_lift.h; sourceTree = "<group>"; };
|
||||
|
@ -1193,7 +1197,6 @@
|
|||
F76C850A1EC4E7CD00FA49E2 /* util.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = util.h; sourceTree = "<group>"; };
|
||||
F76C850B1EC4E7CD00FA49E2 /* Version.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Version.cpp; sourceTree = "<group>"; };
|
||||
F76C850C1EC4E7CD00FA49E2 /* Version.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Version.h; sourceTree = "<group>"; };
|
||||
F76C850E1EC4E7CD00FA49E2 /* about.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = about.c; sourceTree = "<group>"; };
|
||||
F76C850F1EC4E7CD00FA49E2 /* banner.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = banner.c; sourceTree = "<group>"; };
|
||||
F76C85101EC4E7CD00FA49E2 /* changelog.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = changelog.c; sourceTree = "<group>"; };
|
||||
F76C85111EC4E7CD00FA49E2 /* cheats.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = cheats.c; sourceTree = "<group>"; };
|
||||
|
@ -1235,7 +1238,6 @@
|
|||
F76C85351EC4E7CD00FA49E2 /* options.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = options.c; sourceTree = "<group>"; };
|
||||
F76C85361EC4E7CD00FA49E2 /* park.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = park.c; sourceTree = "<group>"; };
|
||||
F76C85371EC4E7CD00FA49E2 /* player.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = player.c; sourceTree = "<group>"; };
|
||||
F76C85381EC4E7CD00FA49E2 /* publisher_credits.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = publisher_credits.c; sourceTree = "<group>"; };
|
||||
F76C85391EC4E7CD00FA49E2 /* research.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = research.c; sourceTree = "<group>"; };
|
||||
F76C853A1EC4E7CD00FA49E2 /* ride.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = ride.c; sourceTree = "<group>"; };
|
||||
F76C853B1EC4E7CD00FA49E2 /* ride_construction.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = ride_construction.c; sourceTree = "<group>"; };
|
||||
|
@ -1269,12 +1271,12 @@
|
|||
F76C85591EC4E7CD00FA49E2 /* viewport.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = viewport.c; sourceTree = "<group>"; };
|
||||
F76C855A1EC4E7CD00FA49E2 /* water.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = water.c; sourceTree = "<group>"; };
|
||||
F76C855C1EC4E7CD00FA49E2 /* Balloon.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Balloon.cpp; sourceTree = "<group>"; };
|
||||
F76C855D1EC4E7CD00FA49E2 /* banner.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = banner.cpp; sourceTree = "<group>"; };
|
||||
F76C855D1EC4E7CD00FA49E2 /* Banner.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Banner.cpp; sourceTree = "<group>"; };
|
||||
F76C855E1EC4E7CD00FA49E2 /* banner.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = banner.h; sourceTree = "<group>"; };
|
||||
F76C855F1EC4E7CD00FA49E2 /* Climate.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Climate.cpp; sourceTree = "<group>"; };
|
||||
F76C85601EC4E7CD00FA49E2 /* Climate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Climate.h; sourceTree = "<group>"; };
|
||||
F76C85611EC4E7CD00FA49E2 /* Duck.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Duck.cpp; sourceTree = "<group>"; };
|
||||
F76C85621EC4E7CD00FA49E2 /* entrance.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = entrance.cpp; sourceTree = "<group>"; };
|
||||
F76C85621EC4E7CD00FA49E2 /* Entrance.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Entrance.cpp; sourceTree = "<group>"; };
|
||||
F76C85631EC4E7CD00FA49E2 /* entrance.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = entrance.h; sourceTree = "<group>"; };
|
||||
F76C85641EC4E7CD00FA49E2 /* footpath.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = footpath.c; sourceTree = "<group>"; };
|
||||
F76C85651EC4E7CD00FA49E2 /* footpath.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = footpath.h; sourceTree = "<group>"; };
|
||||
|
@ -1298,7 +1300,7 @@
|
|||
F76C85771EC4E7CD00FA49E2 /* sprite.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = sprite.h; sourceTree = "<group>"; };
|
||||
F76C85781EC4E7CD00FA49E2 /* tile_inspector.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = tile_inspector.c; sourceTree = "<group>"; };
|
||||
F76C85791EC4E7CD00FA49E2 /* tile_inspector.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = tile_inspector.h; sourceTree = "<group>"; };
|
||||
F76C857A1EC4E7CD00FA49E2 /* wall.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = wall.cpp; sourceTree = "<group>"; };
|
||||
F76C857A1EC4E7CD00FA49E2 /* Wall.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Wall.cpp; sourceTree = "<group>"; };
|
||||
F76C857B1EC4E7CD00FA49E2 /* water.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = water.h; sourceTree = "<group>"; };
|
||||
F76C857D1EC4E80E00FA49E2 /* Cli.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Cli.cpp; sourceTree = "<group>"; };
|
||||
F76C85821EC4E82600FA49E2 /* AudioChannel.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = AudioChannel.cpp; sourceTree = "<group>"; };
|
||||
|
@ -1345,6 +1347,7 @@
|
|||
F775F5321EE35A48001F00E7 /* Ui.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Ui.h; sourceTree = "<group>"; };
|
||||
F775F5331EE35A6B001F00E7 /* DummyUiContext.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DummyUiContext.cpp; sourceTree = "<group>"; };
|
||||
F775F5361EE3724F001F00E7 /* DummyAudioContext.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DummyAudioContext.cpp; sourceTree = "<group>"; };
|
||||
F79F428E1F3260F1009E42F8 /* changelog.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = changelog.txt; path = distribution/changelog.txt; sourceTree = SOURCE_ROOT; };
|
||||
F7CB863D1EEDA0B50030C877 /* WindowManager.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WindowManager.cpp; sourceTree = "<group>"; };
|
||||
F7CB863E1EEDA0B50030C877 /* WindowManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WindowManager.h; sourceTree = "<group>"; };
|
||||
F7CB86411EEDA0F50030C877 /* shortcut_key_change.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = shortcut_key_change.c; path = windows/shortcut_key_change.c; sourceTree = "<group>"; };
|
||||
|
@ -1357,7 +1360,6 @@
|
|||
F7D7747E1EC61E5100BE6EBC /* UiContext.macOS.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = UiContext.macOS.mm; sourceTree = "<group>"; usesTabs = 0; };
|
||||
F7D774841EC66CD700BE6EBC /* OpenRCT2-cli */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = "OpenRCT2-cli"; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
F7FFCDA91F02FD8E0078BFFB /* object_load_error.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = object_load_error.c; sourceTree = "<group>"; };
|
||||
F7FFCDAB1F02FEC00078BFFB /* park_load_result_types.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = park_load_result_types.h; sourceTree = "<group>"; };
|
||||
/* End PBXFileReference section */
|
||||
|
||||
/* Begin PBXFrameworksBuildPhase section */
|
||||
|
@ -1668,6 +1670,7 @@
|
|||
D497D07A1C20FD52002BF46A /* Resources */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
F79F428E1F3260F1009E42F8 /* changelog.txt */,
|
||||
D41B74721C2125E50080A7B9 /* Assets.xcassets */,
|
||||
D4895D321C23EFDD000CD788 /* Info.plist */,
|
||||
D4C1EDD01C266A0B00F71B63 /* data */,
|
||||
|
@ -1780,7 +1783,6 @@
|
|||
F76C84371EC4E7CC00FA49E2 /* object_list.h */,
|
||||
F76C84381EC4E7CC00FA49E2 /* OpenRCT2.cpp */,
|
||||
F76C84391EC4E7CC00FA49E2 /* OpenRCT2.h */,
|
||||
F7FFCDAB1F02FEC00078BFFB /* park_load_result_types.h */,
|
||||
F76C84511EC4E7CC00FA49E2 /* ParkImporter.cpp */,
|
||||
F76C84521EC4E7CC00FA49E2 /* ParkImporter.h */,
|
||||
F76C84641EC4E7CC00FA49E2 /* PlatformEnvironment.cpp */,
|
||||
|
@ -1788,7 +1790,6 @@
|
|||
F76C846A1EC4E7CC00FA49E2 /* rct1.c */,
|
||||
F76C846B1EC4E7CC00FA49E2 /* rct1.h */,
|
||||
F76C84751EC4E7CC00FA49E2 /* rct12.h */,
|
||||
F76C84801EC4E7CC00FA49E2 /* rct2.c */,
|
||||
F76C84811EC4E7CC00FA49E2 /* rct2.h */,
|
||||
F76C84FA1EC4E7CD00FA49E2 /* sprites.h */,
|
||||
F76C850B1EC4E7CD00FA49E2 /* Version.cpp */,
|
||||
|
@ -1801,7 +1802,7 @@
|
|||
isa = PBXGroup;
|
||||
children = (
|
||||
F775F5361EE3724F001F00E7 /* DummyAudioContext.cpp */,
|
||||
F76C83571EC4E7CC00FA49E2 /* audio.cpp */,
|
||||
F76C83571EC4E7CC00FA49E2 /* Audio.cpp */,
|
||||
F76C83581EC4E7CC00FA49E2 /* audio.h */,
|
||||
F76C83591EC4E7CC00FA49E2 /* AudioChannel.h */,
|
||||
F76C835A1EC4E7CC00FA49E2 /* AudioContext.h */,
|
||||
|
@ -1888,7 +1889,7 @@
|
|||
children = (
|
||||
F76C839E1EC4E7CC00FA49E2 /* drawing.c */,
|
||||
F76C839F1EC4E7CC00FA49E2 /* drawing.h */,
|
||||
F76C83A01EC4E7CC00FA49E2 /* drawing_fast.cpp */,
|
||||
F76C83A01EC4E7CC00FA49E2 /* DrawingFast.cpp */,
|
||||
F76C83A11EC4E7CC00FA49E2 /* font.c */,
|
||||
F76C83A21EC4E7CC00FA49E2 /* font.h */,
|
||||
F76C83A31EC4E7CC00FA49E2 /* IDrawingContext.h */,
|
||||
|
@ -1903,7 +1904,7 @@
|
|||
F76C83AC1EC4E7CC00FA49E2 /* Rain.h */,
|
||||
F76C83AD1EC4E7CC00FA49E2 /* rect.c */,
|
||||
F76C83AE1EC4E7CC00FA49E2 /* scrolling_text.c */,
|
||||
F76C83AF1EC4E7CC00FA49E2 /* sprite.cpp */,
|
||||
F76C83AF1EC4E7CC00FA49E2 /* Sprite.cpp */,
|
||||
F76C83B01EC4E7CC00FA49E2 /* string.c */,
|
||||
4CB832A91EFFB8D100B88761 /* ttf.c */,
|
||||
4CB832AA1EFFB8D100B88761 /* ttf.h */,
|
||||
|
@ -1955,7 +1956,7 @@
|
|||
F76C83DC1EC4E7CC00FA49E2 /* date.h */,
|
||||
F76C83DD1EC4E7CC00FA49E2 /* format_codes.c */,
|
||||
F76C83DE1EC4E7CC00FA49E2 /* format_codes.h */,
|
||||
F76C83DF1EC4E7CC00FA49E2 /* language.cpp */,
|
||||
F76C83DF1EC4E7CC00FA49E2 /* Language.cpp */,
|
||||
F76C83E01EC4E7CC00FA49E2 /* language.h */,
|
||||
F76C83E11EC4E7CC00FA49E2 /* LanguagePack.cpp */,
|
||||
F76C83E21EC4E7CC00FA49E2 /* LanguagePack.h */,
|
||||
|
@ -1990,9 +1991,9 @@
|
|||
F76C83F51EC4E7CC00FA49E2 /* network */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
F76C83F61EC4E7CC00FA49E2 /* http.cpp */,
|
||||
F76C83F61EC4E7CC00FA49E2 /* Http.cpp */,
|
||||
F76C83F71EC4E7CC00FA49E2 /* http.h */,
|
||||
F76C83F81EC4E7CC00FA49E2 /* network.cpp */,
|
||||
F76C83F81EC4E7CC00FA49E2 /* Network.cpp */,
|
||||
F76C83F91EC4E7CC00FA49E2 /* network.h */,
|
||||
F76C83FA1EC4E7CC00FA49E2 /* NetworkAction.cpp */,
|
||||
F76C83FB1EC4E7CC00FA49E2 /* NetworkAction.h */,
|
||||
|
@ -2015,7 +2016,7 @@
|
|||
F76C840C1EC4E7CC00FA49E2 /* ServerList.h */,
|
||||
F76C840D1EC4E7CC00FA49E2 /* TcpSocket.cpp */,
|
||||
F76C840E1EC4E7CC00FA49E2 /* TcpSocket.h */,
|
||||
F76C840F1EC4E7CC00FA49E2 /* twitch.cpp */,
|
||||
F76C840F1EC4E7CC00FA49E2 /* Twitch.cpp */,
|
||||
F76C84101EC4E7CC00FA49E2 /* twitch.h */,
|
||||
);
|
||||
path = network;
|
||||
|
@ -2070,6 +2071,8 @@
|
|||
F76C84491EC4E7CC00FA49E2 /* sprite */,
|
||||
F76C84461EC4E7CC00FA49E2 /* paint.c */,
|
||||
F76C84471EC4E7CC00FA49E2 /* paint.h */,
|
||||
4CF788BE1F1B787700C611BF /* Painter.cpp */,
|
||||
4CF788BF1F1B787700C611BF /* Painter.h */,
|
||||
F76C84481EC4E7CC00FA49E2 /* paint_helpers.c */,
|
||||
F76C844F1EC4E7CC00FA49E2 /* supports.c */,
|
||||
F76C84501EC4E7CC00FA49E2 /* supports.h */,
|
||||
|
@ -2121,7 +2124,7 @@
|
|||
F76C84591EC4E7CC00FA49E2 /* platform */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
F76C845A1EC4E7CC00FA49E2 /* crash.cpp */,
|
||||
F76C845A1EC4E7CC00FA49E2 /* Crash.cpp */,
|
||||
F76C845B1EC4E7CC00FA49E2 /* crash.h */,
|
||||
F76C845C1EC4E7CC00FA49E2 /* linux.c */,
|
||||
F76C845D1EC4E7CC00FA49E2 /* macos.m */,
|
||||
|
@ -2139,7 +2142,7 @@
|
|||
isa = PBXGroup;
|
||||
children = (
|
||||
F76C84671EC4E7CC00FA49E2 /* S4Importer.cpp */,
|
||||
F76C84681EC4E7CC00FA49E2 /* tables.cpp */,
|
||||
F76C84681EC4E7CC00FA49E2 /* Tables.cpp */,
|
||||
F76C84691EC4E7CC00FA49E2 /* Tables.h */,
|
||||
);
|
||||
path = rct1;
|
||||
|
@ -2391,7 +2394,7 @@
|
|||
F76C850D1EC4E7CD00FA49E2 /* windows */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
F76C850E1EC4E7CD00FA49E2 /* about.c */,
|
||||
4C5C268C1F31F65B003F90A1 /* About.cpp */,
|
||||
F76C850F1EC4E7CD00FA49E2 /* banner.c */,
|
||||
F76C85101EC4E7CD00FA49E2 /* changelog.c */,
|
||||
F76C85111EC4E7CD00FA49E2 /* cheats.c */,
|
||||
|
@ -2434,7 +2437,6 @@
|
|||
F76C85351EC4E7CD00FA49E2 /* options.c */,
|
||||
F76C85361EC4E7CD00FA49E2 /* park.c */,
|
||||
F76C85371EC4E7CD00FA49E2 /* player.c */,
|
||||
F76C85381EC4E7CD00FA49E2 /* publisher_credits.c */,
|
||||
F76C85391EC4E7CD00FA49E2 /* research.c */,
|
||||
F76C853A1EC4E7CD00FA49E2 /* ride.c */,
|
||||
F76C853B1EC4E7CD00FA49E2 /* ride_construction.c */,
|
||||
|
@ -2475,12 +2477,12 @@
|
|||
isa = PBXGroup;
|
||||
children = (
|
||||
F76C855C1EC4E7CD00FA49E2 /* Balloon.cpp */,
|
||||
F76C855D1EC4E7CD00FA49E2 /* banner.cpp */,
|
||||
F76C855D1EC4E7CD00FA49E2 /* Banner.cpp */,
|
||||
F76C855E1EC4E7CD00FA49E2 /* banner.h */,
|
||||
F76C855F1EC4E7CD00FA49E2 /* Climate.cpp */,
|
||||
F76C85601EC4E7CD00FA49E2 /* Climate.h */,
|
||||
F76C85611EC4E7CD00FA49E2 /* Duck.cpp */,
|
||||
F76C85621EC4E7CD00FA49E2 /* entrance.cpp */,
|
||||
F76C85621EC4E7CD00FA49E2 /* Entrance.cpp */,
|
||||
F76C85631EC4E7CD00FA49E2 /* entrance.h */,
|
||||
F76C85641EC4E7CD00FA49E2 /* footpath.c */,
|
||||
F76C85651EC4E7CD00FA49E2 /* footpath.h */,
|
||||
|
@ -2500,11 +2502,12 @@
|
|||
F76C85731EC4E7CD00FA49E2 /* particle.c */,
|
||||
F76C85741EC4E7CD00FA49E2 /* scenery.c */,
|
||||
F76C85751EC4E7CD00FA49E2 /* scenery.h */,
|
||||
4CFBCD5D1F27CD8000D74FB6 /* SmallScenery.cpp */,
|
||||
F76C85761EC4E7CD00FA49E2 /* sprite.c */,
|
||||
F76C85771EC4E7CD00FA49E2 /* sprite.h */,
|
||||
F76C85781EC4E7CD00FA49E2 /* tile_inspector.c */,
|
||||
F76C85791EC4E7CD00FA49E2 /* tile_inspector.h */,
|
||||
F76C857A1EC4E7CD00FA49E2 /* wall.cpp */,
|
||||
F76C857A1EC4E7CD00FA49E2 /* Wall.cpp */,
|
||||
F76C857B1EC4E7CD00FA49E2 /* water.h */,
|
||||
);
|
||||
path = world;
|
||||
|
@ -2781,6 +2784,7 @@
|
|||
D41B74731C2125E50080A7B9 /* Assets.xcassets in Resources */,
|
||||
D4EC48E61C2637710024B507 /* g2.dat in Resources */,
|
||||
D4EC48E71C2637710024B507 /* language in Resources */,
|
||||
F79F428F1F3260F1009E42F8 /* changelog.txt in Resources */,
|
||||
D43407E21D0E14CE00C2B3D4 /* shaders in Resources */,
|
||||
D4EC48E81C2637710024B507 /* title in Resources */,
|
||||
);
|
||||
|
@ -2985,12 +2989,14 @@
|
|||
F76C88781EC5324E00FA49E2 /* AudioChannel.cpp in Sources */,
|
||||
F76C88791EC5324E00FA49E2 /* AudioContext.cpp in Sources */,
|
||||
4CB832AC1EFFB8D100B88761 /* ttf.c in Sources */,
|
||||
4C5C268D1F31F65B003F90A1 /* About.cpp in Sources */,
|
||||
4C8B42721EEB1AE400F015CA /* HardwareDisplayDrawingEngine.cpp in Sources */,
|
||||
F76C887A1EC5324E00FA49E2 /* AudioMixer.cpp in Sources */,
|
||||
F76C887B1EC5324E00FA49E2 /* FileAudioSource.cpp in Sources */,
|
||||
F7CB864D1EEDA1A80030C877 /* DummyWindowManager.cpp in Sources */,
|
||||
F76C887C1EC5324E00FA49E2 /* MemoryAudioSource.cpp in Sources */,
|
||||
4CB832AB1EFFB8D100B88761 /* ttf_sdlport.c in Sources */,
|
||||
4CF788C01F1B787700C611BF /* Painter.cpp in Sources */,
|
||||
F76C887D1EC5324E00FA49E2 /* CursorData.cpp in Sources */,
|
||||
4CB832A71EFBDCCE00B88761 /* land_tool.c in Sources */,
|
||||
F7D7747F1EC61E5100BE6EBC /* UiContext.macOS.mm in Sources */,
|
||||
|
@ -3015,6 +3021,7 @@
|
|||
F76C88871EC5324E00FA49E2 /* SwapFramebuffer.cpp in Sources */,
|
||||
F76C88881EC5324E00FA49E2 /* TextureCache.cpp in Sources */,
|
||||
F76C88891EC5324E00FA49E2 /* SoftwareDrawingEngine.cpp in Sources */,
|
||||
4CFBCD5E1F27CD8000D74FB6 /* SmallScenery.cpp in Sources */,
|
||||
F76C888A1EC5324E00FA49E2 /* TextComposition.cpp in Sources */,
|
||||
F76C888B1EC5324E00FA49E2 /* Ui.cpp in Sources */,
|
||||
F76C888C1EC5324E00FA49E2 /* UiContext.cpp in Sources */,
|
||||
|
@ -3033,7 +3040,7 @@
|
|||
F775F5381EE3725C001F00E7 /* DummyAudioContext.cpp in Sources */,
|
||||
F775F5351EE35A89001F00E7 /* DummyUiContext.cpp in Sources */,
|
||||
F7D7747B1EC5EB6D00BE6EBC /* lay_down_roller_coaster.c in Sources */,
|
||||
F76C85B01EC4E88300FA49E2 /* audio.cpp in Sources */,
|
||||
F76C85B01EC4E88300FA49E2 /* Audio.cpp in Sources */,
|
||||
F76C85B41EC4E88300FA49E2 /* AudioMixer.cpp in Sources */,
|
||||
F76C85B71EC4E88300FA49E2 /* NullAudioSource.cpp in Sources */,
|
||||
F76C85B81EC4E88300FA49E2 /* cheats.c in Sources */,
|
||||
|
@ -3063,7 +3070,7 @@
|
|||
F76C85EE1EC4E88300FA49E2 /* Zip.cpp in Sources */,
|
||||
F76C85F01EC4E88300FA49E2 /* diagnostic.c in Sources */,
|
||||
F76C85F21EC4E88300FA49E2 /* drawing.c in Sources */,
|
||||
F76C85F41EC4E88300FA49E2 /* drawing_fast.cpp in Sources */,
|
||||
F76C85F41EC4E88300FA49E2 /* DrawingFast.cpp in Sources */,
|
||||
F76C85F51EC4E88300FA49E2 /* font.c in Sources */,
|
||||
F76C85F91EC4E88300FA49E2 /* Image.cpp in Sources */,
|
||||
F76C85FA1EC4E88300FA49E2 /* lightfx.c in Sources */,
|
||||
|
@ -3072,7 +3079,7 @@
|
|||
F76C85FF1EC4E88300FA49E2 /* Rain.cpp in Sources */,
|
||||
F76C86011EC4E88300FA49E2 /* rect.c in Sources */,
|
||||
F76C86021EC4E88300FA49E2 /* scrolling_text.c in Sources */,
|
||||
F76C86031EC4E88300FA49E2 /* sprite.cpp in Sources */,
|
||||
F76C86031EC4E88300FA49E2 /* Sprite.cpp in Sources */,
|
||||
F76C86041EC4E88300FA49E2 /* string.c in Sources */,
|
||||
F76C86051EC4E88300FA49E2 /* editor.c in Sources */,
|
||||
F76C86071EC4E88300FA49E2 /* FileClassifier.cpp in Sources */,
|
||||
|
@ -3094,7 +3101,7 @@
|
|||
F76C862A1EC4E88300FA49E2 /* currency.c in Sources */,
|
||||
F76C862C1EC4E88300FA49E2 /* date.c in Sources */,
|
||||
F76C862E1EC4E88300FA49E2 /* format_codes.c in Sources */,
|
||||
F76C86301EC4E88300FA49E2 /* language.cpp in Sources */,
|
||||
F76C86301EC4E88300FA49E2 /* Language.cpp in Sources */,
|
||||
F76C86321EC4E88300FA49E2 /* LanguagePack.cpp in Sources */,
|
||||
F76C86341EC4E88300FA49E2 /* localisation.c in Sources */,
|
||||
F76C86361EC4E88300FA49E2 /* real_names.c in Sources */,
|
||||
|
@ -3105,8 +3112,8 @@
|
|||
F76C863F1EC4E88300FA49E2 /* marketing.c in Sources */,
|
||||
F76C86411EC4E88300FA49E2 /* news_item.c in Sources */,
|
||||
F76C86431EC4E88300FA49E2 /* research.c in Sources */,
|
||||
F76C86451EC4E88300FA49E2 /* http.cpp in Sources */,
|
||||
F76C86471EC4E88300FA49E2 /* network.cpp in Sources */,
|
||||
F76C86451EC4E88300FA49E2 /* Http.cpp in Sources */,
|
||||
F76C86471EC4E88300FA49E2 /* Network.cpp in Sources */,
|
||||
F76C86491EC4E88300FA49E2 /* NetworkAction.cpp in Sources */,
|
||||
F76C864B1EC4E88300FA49E2 /* NetworkConnection.cpp in Sources */,
|
||||
F76C864D1EC4E88300FA49E2 /* NetworkGroup.cpp in Sources */,
|
||||
|
@ -3117,7 +3124,7 @@
|
|||
F76C86581EC4E88300FA49E2 /* NetworkUser.cpp in Sources */,
|
||||
F76C865A1EC4E88300FA49E2 /* ServerList.cpp in Sources */,
|
||||
F76C865C1EC4E88300FA49E2 /* TcpSocket.cpp in Sources */,
|
||||
F76C865E1EC4E88300FA49E2 /* twitch.cpp in Sources */,
|
||||
F76C865E1EC4E88300FA49E2 /* Twitch.cpp in Sources */,
|
||||
F76C86601EC4E88300FA49E2 /* BannerObject.cpp in Sources */,
|
||||
F76C86621EC4E88300FA49E2 /* EntranceObject.cpp in Sources */,
|
||||
F76C86641EC4E88300FA49E2 /* FootpathItemObject.cpp in Sources */,
|
||||
|
@ -3156,7 +3163,7 @@
|
|||
F76C869E1EC4E88400FA49E2 /* peep.c in Sources */,
|
||||
F76C86A01EC4E88400FA49E2 /* peep_data.c in Sources */,
|
||||
F76C86A11EC4E88400FA49E2 /* staff.c in Sources */,
|
||||
F76C86A31EC4E88400FA49E2 /* crash.cpp in Sources */,
|
||||
F76C86A31EC4E88400FA49E2 /* Crash.cpp in Sources */,
|
||||
F76C86A51EC4E88400FA49E2 /* linux.c in Sources */,
|
||||
F76C86A61EC4E88400FA49E2 /* macos.m in Sources */,
|
||||
F76C86A81EC4E88400FA49E2 /* Platform2.cpp in Sources */,
|
||||
|
@ -3165,7 +3172,7 @@
|
|||
F76C86AC1EC4E88400FA49E2 /* windows.c in Sources */,
|
||||
F76C86AD1EC4E88400FA49E2 /* PlatformEnvironment.cpp in Sources */,
|
||||
F76C86AF1EC4E88400FA49E2 /* S4Importer.cpp in Sources */,
|
||||
F76C86B01EC4E88400FA49E2 /* tables.cpp in Sources */,
|
||||
F76C86B01EC4E88400FA49E2 /* Tables.cpp in Sources */,
|
||||
F76C86B21EC4E88400FA49E2 /* rct1.c in Sources */,
|
||||
F76C86B41EC4E88400FA49E2 /* SawyerChunk.cpp in Sources */,
|
||||
F76C86B61EC4E88400FA49E2 /* SawyerChunkReader.cpp in Sources */,
|
||||
|
@ -3176,7 +3183,6 @@
|
|||
F76C86C11EC4E88400FA49E2 /* interop.c in Sources */,
|
||||
F76C86C31EC4E88400FA49E2 /* S6Exporter.cpp in Sources */,
|
||||
F76C86C51EC4E88400FA49E2 /* S6Importer.cpp in Sources */,
|
||||
F76C86C61EC4E88400FA49E2 /* rct2.c in Sources */,
|
||||
F76C86C81EC4E88400FA49E2 /* cable_lift.c in Sources */,
|
||||
F76C86CA1EC4E88400FA49E2 /* air_powered_vertical_coaster.c in Sources */,
|
||||
F76C86CB1EC4E88400FA49E2 /* bobsleigh_coaster.c in Sources */,
|
||||
|
@ -3274,7 +3280,6 @@
|
|||
F76C87411EC4E88400FA49E2 /* sawyercoding.c in Sources */,
|
||||
F76C87431EC4E88400FA49E2 /* util.c in Sources */,
|
||||
F76C87451EC4E88400FA49E2 /* Version.cpp in Sources */,
|
||||
F76C87471EC4E88400FA49E2 /* about.c in Sources */,
|
||||
F76C87481EC4E88400FA49E2 /* banner.c in Sources */,
|
||||
F76C87491EC4E88400FA49E2 /* changelog.c in Sources */,
|
||||
F76C874A1EC4E88400FA49E2 /* cheats.c in Sources */,
|
||||
|
@ -3314,7 +3319,6 @@
|
|||
F76C876E1EC4E88400FA49E2 /* options.c in Sources */,
|
||||
F76C876F1EC4E88400FA49E2 /* park.c in Sources */,
|
||||
F76C87701EC4E88400FA49E2 /* player.c in Sources */,
|
||||
F76C87711EC4E88400FA49E2 /* publisher_credits.c in Sources */,
|
||||
F76C87721EC4E88400FA49E2 /* research.c in Sources */,
|
||||
F76C87731EC4E88400FA49E2 /* ride.c in Sources */,
|
||||
F76C87741EC4E88400FA49E2 /* ride_construction.c in Sources */,
|
||||
|
@ -3346,10 +3350,10 @@
|
|||
F76C87921EC4E88400FA49E2 /* viewport.c in Sources */,
|
||||
F76C87931EC4E88400FA49E2 /* water.c in Sources */,
|
||||
F76C87941EC4E88400FA49E2 /* Balloon.cpp in Sources */,
|
||||
F76C87951EC4E88400FA49E2 /* banner.cpp in Sources */,
|
||||
F76C87951EC4E88400FA49E2 /* Banner.cpp in Sources */,
|
||||
F76C87971EC4E88400FA49E2 /* Climate.cpp in Sources */,
|
||||
F76C87991EC4E88400FA49E2 /* Duck.cpp in Sources */,
|
||||
F76C879A1EC4E88400FA49E2 /* entrance.cpp in Sources */,
|
||||
F76C879A1EC4E88400FA49E2 /* Entrance.cpp in Sources */,
|
||||
F76C879C1EC4E88400FA49E2 /* footpath.c in Sources */,
|
||||
F76C879E1EC4E88400FA49E2 /* Fountain.cpp in Sources */,
|
||||
F76C87A01EC4E88400FA49E2 /* map.c in Sources */,
|
||||
|
@ -3362,7 +3366,7 @@
|
|||
F76C87AC1EC4E88500FA49E2 /* scenery.c in Sources */,
|
||||
F76C87AE1EC4E88500FA49E2 /* sprite.c in Sources */,
|
||||
F76C87B01EC4E88500FA49E2 /* tile_inspector.c in Sources */,
|
||||
F76C87B21EC4E88500FA49E2 /* wall.cpp in Sources */,
|
||||
F76C87B21EC4E88500FA49E2 /* Wall.cpp in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
version: 0.1.0.{build}
|
||||
version: 0.1.1.{build}
|
||||
image:
|
||||
- Visual Studio 2015
|
||||
# - Visual Studio 2017 RC
|
||||
# - Visual Studio 2015
|
||||
- Visual Studio 2017
|
||||
cache:
|
||||
- C:\ProgramData\chocolatey\bin -> scripts\ps\appveyor_install.ps1
|
||||
- C:\ProgramData\chocolatey\lib -> scripts\ps\appveyor_install.ps1
|
||||
|
|
|
@ -11,6 +11,13 @@ Includes all git commit authors. Aliases are GitHub user names.
|
|||
* (zsilencer) - Developer
|
||||
* Richard Jenkins (rwjuk) - Developer, issue management
|
||||
|
||||
## Long term contributors
|
||||
The following people are not part of the project team, but have been contributing for a long time.
|
||||
* Hielke Morsink (Broxzier)
|
||||
* Matte Andersson (Nubbie)
|
||||
* Kenton Boadway (PFCKrutonium)
|
||||
* Joe Minor Jr (wolfreak99)
|
||||
|
||||
## Implementation (RCT2)
|
||||
* Ted John (IntelOrca)
|
||||
* Duncan Frost (duncanspumpkin)
|
||||
|
@ -33,6 +40,7 @@ Includes all git commit authors. Aliases are GitHub user names.
|
|||
* 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.
|
||||
|
||||
## Additional implementation (OpenRCT2)
|
||||
* (atmaxinger) - User configuration
|
||||
|
@ -55,10 +63,10 @@ Includes all git commit authors. Aliases are GitHub user names.
|
|||
* Daniel Trujillo Viedma (gDanix) - Custom currency.
|
||||
* Niels NTG Poldervaart (Niels-NTG) - Misc.
|
||||
* (zaxcav) - Improvements to original pathfinding algorithm.
|
||||
* Hielke Morsink (Broxzier) - Tile inspector, heightmap loader, misc.
|
||||
* Joël Troch (JoelTroch) - Keyboard shortcuts for ride construction.
|
||||
* Thomas Delebo (delebota) - Misc.
|
||||
* Brian Callahan (ibara) - OpenBSD port.
|
||||
* Jens Heuseveldt (jensj12) - Mountain tool improvements, misc.
|
||||
|
||||
## Bug fixes
|
||||
* (halfbro)
|
||||
|
@ -82,6 +90,7 @@ Includes all git commit authors. Aliases are GitHub user names.
|
|||
* (ceeac)
|
||||
* Matthias Moninger (Zeh Matt)
|
||||
* Tomas Dittmann (Chaosmeister)
|
||||
* William Wallace (Willox)
|
||||
|
||||
## Toolchain
|
||||
* (Balletie) - macOS
|
||||
|
|
|
@ -12,15 +12,15 @@ STR_0007 :Ferrocarril en miniatura
|
|||
STR_0008 :Monorail
|
||||
STR_0009 :Minimuntanya russa suspesa
|
||||
STR_0010 :Passeig en bot
|
||||
STR_0011 :«Wild Mouse» de fusta
|
||||
STR_0012 :Cursa «Steeplechase»
|
||||
STR_0011 :{LEFTGUILLEMET}Wild Mouse{RIGHTGUILLEMET} de fusta
|
||||
STR_0012 :Cursa {LEFTGUILLEMET}Steeplechase{RIGHTGUILLEMET}
|
||||
STR_0013 :Atracció de cotxes
|
||||
STR_0014 :Caiguda lliure propulsada
|
||||
STR_0015 :Muntanya russa «Bobsleigh»
|
||||
STR_0015 :Muntanya russa {LEFTGUILLEMET}Bobsleigh{RIGHTGUILLEMET}
|
||||
STR_0016 :Torre d'observació
|
||||
STR_0017 :Muntanya russa amb inversions
|
||||
STR_0018 :Tobogan aquàtic amb bots inflables
|
||||
STR_0019 :Muntanya russa «Tren de la mina»
|
||||
STR_0019 :Muntanya russa {LEFTGUILLEMET}Tren de la mina{RIGHTGUILLEMET}
|
||||
STR_0020 :Telecadira
|
||||
STR_0021 :Muntanya russa amb tirabuixons
|
||||
STR_0022 :Laberint
|
||||
|
@ -57,12 +57,12 @@ STR_0052 :Tren fantasma
|
|||
STR_0053 :Muntanya russa Tornado d'acer
|
||||
STR_0054 :Muntanya russa de fusta
|
||||
STR_0055 :Muntanya russa de fricció lateral
|
||||
STR_0056 :«Wild Mouse»
|
||||
STR_0056 :{LEFTGUILLEMET}Wild Mouse{RIGHTGUILLEMET}
|
||||
STR_0057 :Muntanya russa multidimensió
|
||||
STR_0058 :Atracció desconeguda (38)
|
||||
STR_0059 :Muntanya russa voladora
|
||||
STR_0060 :Atracció desconeguda (3A)
|
||||
STR_0061 :«Virginia Reel»
|
||||
STR_0061 :{LEFTGUILLEMET}Virginia Reel{RIGHTGUILLEMET}
|
||||
STR_0062 :Bots amb remullada
|
||||
STR_0063 :Minihelicòpters
|
||||
STR_0064 :Muntanya russa amb passatgers gitats
|
||||
|
@ -564,8 +564,8 @@ STR_0559 :Edifici enorme de temàtica terrorífica amb passadissos esgarrifos
|
|||
STR_0560 :Un lloc que els visitants amb nàusees visiten per recuperar-se més de pressa.
|
||||
STR_0561 :Espectacle de circ dins d'una tenda enorme.
|
||||
STR_0562 :Els vagons autopropulsats viatgen per una via a diferents nivells que recorre paisatges fantasmagòrics amb efectes especials.
|
||||
STR_0563 :Els passatgers drets amb unes subjeccions simples dintre els vagons travessen i gaudeixen de caigudes i girs enrevessats això com d'una part «a l'aire lliure» damunt dels turons.
|
||||
STR_0564 :Movent-se per vies de fusta, aquesta muntanya russa és ràpida, rústica, sorollosa i dóna una sensació d'experiència «fora de control» a l'aire lliure.
|
||||
STR_0563 :Els passatgers drets amb unes subjeccions simples dintre els vagons travessen i gaudeixen de caigudes i girs enrevessats, així com d'una part {LEFTGUILLEMET}a l'aire lliure{RIGHTGUILLEMET} damunt dels turons.
|
||||
STR_0564 :Movent-se per vies de fusta, aquesta muntanya russa és ràpida, rústica, sorollosa i dóna una sensació d'experiència {LEFTGUILLEMET}fora de control{RIGHTGUILLEMET} a l'aire lliure.
|
||||
STR_0565 :Una muntanya russa senzilla de fusta que només és capaç de fer inclinacions i girs suaus, mentre que els vagons es mantenen a la via mitjançant la gravetat i unes rodes laterals de fricció.
|
||||
STR_0566 :Els vagons individuals giren per un difícil tram zigzaguejant amb girs pronunciats i caigudes brusques curtes.
|
||||
STR_0567 :Seient suspesos a ambdós laterals de la via, els passatgers són penjats cap per avall mentre són sotmesos a caigudes pronunciades i passen per inversions.
|
||||
|
@ -849,7 +849,7 @@ STR_0843 :<removed string - do not use>
|
|||
STR_0844 :<removed string - do not use>
|
||||
STR_0845 :<removed string - do not use>
|
||||
STR_0846 :<removed string - do not use>
|
||||
STR_0847 :Quant a l'«OpenRCT2»
|
||||
STR_0847 :Quant a l'{LEFTGUILLEMET}OpenRCT2{RIGHTGUILLEMET}
|
||||
STR_0848 :RollerCoaster Tycoon 2
|
||||
STR_0849 :{WINDOW_COLOUR_2}Versió 2.01.028
|
||||
STR_0850 :{WINDOW_COLOUR_2}Copyright {COPYRIGHT} 2002 Chris Sawyer. Tots els drets reservats.
|
||||
|
@ -894,7 +894,7 @@ STR_0888 :Surt de l'editor de muntanyes russes
|
|||
STR_0889 :Surt de l'administrador de dissenys de vies
|
||||
STR_0890 :<removed string - do not use>
|
||||
STR_0891 :Captura de pantalla
|
||||
STR_0892 :S'ha desat la captura de pantalla com a «{STRINGID}».
|
||||
STR_0892 :S'ha desat la captura de pantalla com a {LEFTGUILLEMET}{STRINGID}{RIGHTGUILLEMET}.
|
||||
STR_0893 :La captura de pantalla no s'ha pogut fer.
|
||||
STR_0894 :L'àrea de dades de paisatge està plena.
|
||||
STR_0895 :No es pot construir part a sobre i part sota terra.
|
||||
|
@ -931,8 +931,8 @@ STR_0925 :{SMALLFONT}{BLACK}Helicoide cap amunt
|
|||
STR_0926 :No es pot treure...
|
||||
STR_0927 :Això no es pot construir aquí...
|
||||
STR_0928 :{SMALLFONT}{BLACK}Cadena elevadora per pujar vagons per un pendent.
|
||||
STR_0929 :Corba en «S» (a l'esquerra)
|
||||
STR_0930 :Corba en «S» (a la dreta)
|
||||
STR_0929 :Corba en {LEFTGUILLEMET}S{RIGHTGUILLEMET} (a l'esquerra)
|
||||
STR_0930 :Corba en {LEFTGUILLEMET}S{RIGHTGUILLEMET} (a la dreta)
|
||||
STR_0931 :Inversió vertical (a l'esquerra)
|
||||
STR_0932 :Inversió vertical (a la dreta)
|
||||
STR_0933 :Abans puja o baixa el terreny.
|
||||
|
@ -1360,7 +1360,7 @@ STR_1354 :{WINDOW_COLOUR_2}Longitud de la caiguda més gran: {BLACK}{LENGTH}
|
|||
STR_1355 :{WINDOW_COLOUR_2}Caigudes: {BLACK}{COMMA16}
|
||||
STR_1356 :{WINDOW_COLOUR_2}Inversions: {BLACK}{COMMA16}
|
||||
STR_1357 :{WINDOW_COLOUR_2}Forats: {BLACK}{COMMA16}
|
||||
STR_1358 :{WINDOW_COLOUR_2}Temps total de «vol»: {BLACK}{COMMA2DP32} s
|
||||
STR_1358 :{WINDOW_COLOUR_2}Temps total de {LEFTGUILLEMET}vol{RIGHTGUILLEMET}: {BLACK}{COMMA2DP32} s
|
||||
STR_1359 :{WINDOW_COLOUR_2}Temps d'espera: {BLACK}{COMMA16} min
|
||||
STR_1360 :{WINDOW_COLOUR_2}Temps d'espera: {BLACK}{COMMA16} min
|
||||
STR_1361 :La velocitat no es pot canviar...
|
||||
|
@ -1462,8 +1462,8 @@ STR_1456 :{WINDOW_COLOUR_2}Diners gastats: {BLACK}{CURRENCY2DP}
|
|||
STR_1457 :{WINDOW_COLOUR_2}Diners a la butxaca: {BLACK}{CURRENCY2DP}
|
||||
STR_1458 :{WINDOW_COLOUR_2}Temps al parc: {BLACK}{REALTIME}
|
||||
STR_1459 :Estil de via
|
||||
STR_1460 :{SMALLFONT}{BLACK}Via oberta en forma d'«U»
|
||||
STR_1461 :{SMALLFONT}{BLACK}Via tancada en forma d'«O»
|
||||
STR_1460 :{SMALLFONT}{BLACK}Via oberta en forma d'{LEFTGUILLEMET}U{RIGHTGUILLEMET}
|
||||
STR_1461 :{SMALLFONT}{BLACK}Via tancada en forma d'{LEFTGUILLEMET}O{RIGHTGUILLEMET}
|
||||
STR_1462 :Massa inclinat per usar cadenes d'elevació
|
||||
STR_1463 :Visitants
|
||||
STR_1464 :Hèlix amunt (petita)
|
||||
|
@ -2491,8 +2491,8 @@ STR_2483 :{WINDOW_COLOUR_2}Benefici setmanal: {BLACK}+{CURRENCY2DP}
|
|||
STR_2484 :{WINDOW_COLOUR_2}Benefici setmanal: {RED}{CURRENCY2DP}
|
||||
STR_2485 :Controls
|
||||
STR_2486 :General
|
||||
STR_2487 :Mostra els noms «reals» dels visitants
|
||||
STR_2488 :{SMALLFONT}{BLACK}Alterna entre mostrar els noms «reals» dels visitants o el nombre que se li ha assignat.
|
||||
STR_2487 :Mostra els noms {LEFTGUILLEMET}reals{RIGHTGUILLEMET} dels visitants
|
||||
STR_2488 :{SMALLFONT}{BLACK}Alterna entre mostrar els noms {LEFTGUILLEMET}reals{RIGHTGUILLEMET} dels visitants o el nombre que se li ha assignat.
|
||||
STR_2489 :Dreceres de teclat...
|
||||
STR_2490 :Dreceres de teclat
|
||||
STR_2491 :Reinicia les tecles
|
||||
|
@ -2747,8 +2747,8 @@ STR_2738 :Música del menú principal:
|
|||
STR_2739 :Cap
|
||||
STR_2740 :RollerCoaster Tycoon 1
|
||||
STR_2741 :RollerCoaster Tycoon 2
|
||||
STR_2742 :El fitxer «css50.dat» no s'ha trobat.
|
||||
STR_2743 :Copieu «data/css17.dat» de la vostra instal·lació del RCT1 en «data/css50.dat» a la instal·lació del RCT2, o establiu correctament el camí del RCT1 a la pestanya d'altres opcions.
|
||||
STR_2742 :El fitxer {LEFTGUILLEMET}css50.dat{RIGHTGUILLEMET} no s'ha trobat.
|
||||
STR_2743 :Copieu {LEFTGUILLEMET}data/css17.dat{RIGHTGUILLEMET} de la vostra instal·lació del RCT1 en {LEFTGUILLEMET}data/css50.dat{RIGHTGUILLEMET} a la instal·lació del RCT2, o establiu correctament el camí del RCT1 a la pestanya d'altres opcions.
|
||||
STR_2744 :[
|
||||
STR_2745 :\
|
||||
STR_2746 :]
|
||||
|
@ -2838,23 +2838,23 @@ STR_2827 :{WINDOW_COLOUR_2}Premi als millors dissenys d'atraccions
|
|||
STR_2828 :{WINDOW_COLOUR_2}Premi als esquemes de colors més treballats
|
||||
STR_2829 :{WINDOW_COLOUR_2}Premi als camins més confusos
|
||||
STR_2830 :{WINDOW_COLOUR_2}Premi al parc amb millors atraccions suaus
|
||||
STR_2831 :{TOPAZ}El vostre parc ha rebut el «Premi al parc més brut»!
|
||||
STR_2832 :{TOPAZ}El vostre parc ha rebut el «Premi al parc més net»!
|
||||
STR_2833 :{TOPAZ}El vostre parc ha rebut el «Premi al parc amb millors muntanyes russes»!
|
||||
STR_2834 :{TOPAZ}El vostre parc ha rebut el «Premi al parc més valorat»!
|
||||
STR_2835 :{TOPAZ}El vostre parc ha rebut el «Premi al parc més bonic»!
|
||||
STR_2836 :{TOPAZ}El vostre parc ha rebut el «Premi al parc menys valorat»!
|
||||
STR_2837 :{TOPAZ}El vostre parc ha rebut el «Premi al parc més segur»!
|
||||
STR_2838 :{TOPAZ}El vostre parc ha rebut el «Premi a la millor plantilla»!
|
||||
STR_2839 :{TOPAZ}El vostre parc ha rebut el «Premi al parc amb millor menjar»!
|
||||
STR_2840 :{TOPAZ}El vostre parc ha rebut el «Premi al parc amb pitjor menjar»!
|
||||
STR_2841 :{TOPAZ}El vostre parc ha rebut el «Premi al parc amb millors lavabos»!
|
||||
STR_2842 :{TOPAZ}El vostre parc ha rebut el «Premi al parc més decebedor»!
|
||||
STR_2843 :{TOPAZ}El vostre parc ha rebut el «Premi al parc amb millors atraccions aquàtiques»!
|
||||
STR_2844 :{TOPAZ}El vostre parc ha rebut el «Premi als millors dissenys d'atraccions»!
|
||||
STR_2845 :{TOPAZ}El vostre parc ha rebut el «Premi als esquemes de colors més treballats»!
|
||||
STR_2846 :{TOPAZ}El vostre parc ha rebut el «Premi als camins més confusos»!
|
||||
STR_2847 :{TOPAZ}El vostre parc ha rebut el «Premi al parc amb millors atraccions suaus»!
|
||||
STR_2831 :{TOPAZ}El vostre parc ha rebut el {LEFTGUILLEMET}Premi al parc més brut{RIGHTGUILLEMET}!
|
||||
STR_2832 :{TOPAZ}El vostre parc ha rebut el {LEFTGUILLEMET}Premi al parc més net{RIGHTGUILLEMET}!
|
||||
STR_2833 :{TOPAZ}El vostre parc ha rebut el {LEFTGUILLEMET}Premi al parc amb millors muntanyes russes{RIGHTGUILLEMET}!
|
||||
STR_2834 :{TOPAZ}El vostre parc ha rebut el {LEFTGUILLEMET}Premi al parc més valorat{RIGHTGUILLEMET}!
|
||||
STR_2835 :{TOPAZ}El vostre parc ha rebut el {LEFTGUILLEMET}Premi al parc més bonic{RIGHTGUILLEMET}!
|
||||
STR_2836 :{TOPAZ}El vostre parc ha rebut el {LEFTGUILLEMET}Premi al parc menys valorat{RIGHTGUILLEMET}!
|
||||
STR_2837 :{TOPAZ}El vostre parc ha rebut el {LEFTGUILLEMET}Premi al parc més segur{RIGHTGUILLEMET}!
|
||||
STR_2838 :{TOPAZ}El vostre parc ha rebut el {LEFTGUILLEMET}Premi a la millor plantilla{RIGHTGUILLEMET}!
|
||||
STR_2839 :{TOPAZ}El vostre parc ha rebut el {LEFTGUILLEMET}Premi al parc amb millor menjar{RIGHTGUILLEMET}!
|
||||
STR_2840 :{TOPAZ}El vostre parc ha rebut el {LEFTGUILLEMET}Premi al parc amb pitjor menjar{RIGHTGUILLEMET}!
|
||||
STR_2841 :{TOPAZ}El vostre parc ha rebut el {LEFTGUILLEMET}Premi al parc amb millors lavabos{RIGHTGUILLEMET}!
|
||||
STR_2842 :{TOPAZ}El vostre parc ha rebut el {LEFTGUILLEMET}Premi al parc més decebedor{RIGHTGUILLEMET}!
|
||||
STR_2843 :{TOPAZ}El vostre parc ha rebut el {LEFTGUILLEMET}Premi al parc amb millors atraccions aquàtiques{RIGHTGUILLEMET}!
|
||||
STR_2844 :{TOPAZ}El vostre parc ha rebut el {LEFTGUILLEMET}Premi als millors dissenys d'atraccions{RIGHTGUILLEMET}!
|
||||
STR_2845 :{TOPAZ}El vostre parc ha rebut el {LEFTGUILLEMET}Premi als esquemes de colors més treballats{RIGHTGUILLEMET}!
|
||||
STR_2846 :{TOPAZ}El vostre parc ha rebut el {LEFTGUILLEMET}Premi als camins més confusos{RIGHTGUILLEMET}!
|
||||
STR_2847 :{TOPAZ}El vostre parc ha rebut el {LEFTGUILLEMET}Premi al parc amb millors atraccions suaus{RIGHTGUILLEMET}!
|
||||
STR_2848 :{WINDOW_COLOUR_2}Sense premis recents
|
||||
STR_2849 :S'ha instal·lat un nou escenari.
|
||||
STR_2850 :S'ha instal·lat un nou disseny de via.
|
||||
|
@ -2994,7 +2994,7 @@ STR_2983 :Escriviu el nou text del cartell:
|
|||
STR_2984 :No es pot establir aquest text per al cartell...
|
||||
STR_2985 :Cartell
|
||||
STR_2986 :{SMALLFONT}{BLACK}Canvia el text del cartell.
|
||||
STR_2987 :{SMALLFONT}{BLACK}Canvia el text del cartell a «No passeu».
|
||||
STR_2987 :{SMALLFONT}{BLACK}Canvia el text del cartell a {LEFTGUILLEMET}No passeu{RIGHTGUILLEMET}.
|
||||
STR_2988 :{SMALLFONT}{BLACK}Elimina el cartell.
|
||||
STR_2989 :{SMALLFONT}{BLACK}Seleccioneu el color principal.
|
||||
STR_2990 :{SMALLFONT}{BLACK}Seleccioneu el color del text.
|
||||
|
@ -3405,29 +3405,29 @@ STR_3393 :{SMALLFONT}{BLACK}Per veure millor el parc, podeu allunyar-vos usan
|
|||
STR_3394 :{SMALLFONT}{BLACK}També podeu girar la vista en passos de 90{DEGREE}...
|
||||
STR_3395 :{SMALLFONT}{BLACK}La construcció d'atraccions a aquesta escala és un pèl difícil, aixó que apropem-nos al parc un altre cop...
|
||||
STR_3396 :{SMALLFONT}{BLACK}Ara construirem una atracció senzilla per començar el parc...
|
||||
STR_3397 :{SMALLFONT}{BLACK}La imatge «fantasma» blanca mostra on es construirà l'atracció. Mourem el punter per triar la posició correcta i llavors farem clic amb el ratolí per construir-ho...
|
||||
STR_3397 :{SMALLFONT}{BLACK}La imatge {LEFTGUILLEMET}fantasma{RIGHTGUILLEMET} blanca mostra on es construirà l'atracció. Mourem el punter per triar la posició correcta i llavors farem clic amb el ratolí per construir-ho...
|
||||
STR_3398 :{SMALLFONT}{BLACK}Les atraccions necessiten una entrada i una sortida. Mourem el punter a una casella a la vora de l'atracció i fem dos clics: primer per construir l'entrada i després per construir la sortida...
|
||||
STR_3399 :{SMALLFONT}{BLACK}Cal que construïm camins per permetre que els visitants puguin accedir a l'atracció...
|
||||
STR_3400 :{SMALLFONT}{BLACK}Per al camí d'entrada emprarem un camí especial per tal que la gent hi faci cua...
|
||||
STR_3401 :{SMALLFONT}{BLACK}Per al camí de sortida, només cal un camí normal...
|
||||
STR_3402 :{SMALLFONT}{BLACK}Bé! Obrim l'atracció! Per obrir-la, fem clic a la icona amb una bandera de la finestra de l'atracció i escollim «Obre»...
|
||||
STR_3402 :{SMALLFONT}{BLACK}Bé! Obrim l'atracció! Per obrir-la, fem clic a la icona amb una bandera de la finestra de l'atracció i escollim {LEFTGUILLEMET}Obre{RIGHTGUILLEMET}...
|
||||
STR_3403 :{SMALLFONT}{BLACK}Però on estan els visitants?
|
||||
STR_3404 :{SMALLFONT}{BLACK}Ah! El parc encara està tancat!Bé, ara l'obrirem...
|
||||
STR_3405 :{SMALLFONT}{BLACK}Mentre esperem als nostres primers visitants, desenvoluparem més el parc...
|
||||
STR_3406 :{SMALLFONT}{BLACK}Aquí tenim el parc. Construirem una atracció senzilla però amb un disseny personalitzat...
|
||||
STR_3407 :{SMALLFONT}{BLACK}Primer cal escollir la posició inicial...
|
||||
STR_3408 :{SMALLFONT}{BLACK}La secció de via que acabem de construir és una «andana», que permet als visitants pujar i baixar de l'atracció...
|
||||
STR_3408 :{SMALLFONT}{BLACK}La secció de via que acabem de construir és una {LEFTGUILLEMET}andana{RIGHTGUILLEMET}, que permet als visitants pujar i baixar de l'atracció...
|
||||
STR_3409 :{SMALLFONT}{BLACK}Ampliarem la plataforma una mica més afegint-hi un parell de seccions d'andana més...
|
||||
STR_3410 :{SMALLFONT}{BLACK}Les icones de la part superior de la finestra de construcció us permeten escollir les diferents peces de via que voleu afegir...
|
||||
STR_3411 :{SMALLFONT}{BLACK}Escollirem un gir a l'esquerra...
|
||||
STR_3412 :{SMALLFONT}{BLACK}El revolt encara no s'ha construït, però la imatge fantasma blanca ens mostra on es construirà. Quan feu clic a la icona gran de «Construeix-ho», el construirà definitivament...
|
||||
STR_3412 :{SMALLFONT}{BLACK}El revolt encara no s'ha construït, però la imatge fantasma blanca ens mostra on es construirà. Quan feu clic a la icona gran de {LEFTGUILLEMET}Construeix-ho{RIGHTGUILLEMET}, el construirà definitivament...
|
||||
STR_3413 :{SMALLFONT}{BLACK}Ara volem continuar amb una secció de via recta, així que farem clic a la icona de via recta...
|
||||
STR_3414 :{SMALLFONT}{BLACK}Ara que hem completat el circuit, necessitem construir l'entrada i la sortida de l'atracció...
|
||||
STR_3415 :{SMALLFONT}{BLACK}Fem ara una prova de com funciona l'atracció...
|
||||
STR_3416 :{SMALLFONT}{BLACK}Mentre s'està provant, construirem el camí per fer cua i el camí de sortida...
|
||||
STR_3417 :{SMALLFONT}{BLACK}D'acord. Obrim el parc i l'atracció...
|
||||
STR_3418 :{SMALLFONT}{BLACK}La nostra nova atracció no és gaire emocionant. Potser caldria que hi afegim elements decoratius?
|
||||
STR_3419 :{SMALLFONT}{BLACK}Per construir decoracions damunt d'altres elements decoratius o aixecades a l'aire, manteniu premuda la tecla «Maj» i moveu el ratolí per escollir-ne l'alçada...
|
||||
STR_3419 :{SMALLFONT}{BLACK}Per construir decoracions damunt d'altres elements decoratius o aixecades a l'aire, manteniu premuda la tecla {LEFTGUILLEMET}Maj{RIGHTGUILLEMET} i moveu el ratolí per escollir-ne l'alçada...
|
||||
STR_3420 :{SMALLFONT}{BLACK}Alguns elements decoratius es poden repintar un cop s'han construit...
|
||||
STR_3421 :{SMALLFONT}{BLACK}Afegim una mica de música a l'atracció...
|
||||
STR_3422 :{SMALLFONT}{BLACK}Construïm una muntanya russa!
|
||||
|
@ -3441,7 +3441,7 @@ STR_3429 :{SMALLFONT}{BLACK}No. Això no funciona! Mireu les marques d'alçad
|
|||
STR_3430 :{SMALLFONT}{BLACK}Per assegurar-nos que el tren és capaç de fer la volta sencera, cada pujada hauria de ser una mica menys alta que l'anterior...
|
||||
STR_3431 :{SMALLFONT}{BLACK}Molt millor! El nostre tren hauria d'aconseguir passar la pujada. Provem ara una via més embolicada...
|
||||
STR_3432 :{SMALLFONT}{BLACK}Necessitem baixar la velocitat del tren abans de l'últim revolt i que arribi a l'andana. Afegim-hi uns frens...
|
||||
STR_3433 :{SMALLFONT}{BLACK}I finalment, afegirem uns «frens de bloc», que permeten que dos trens circulin pel mateix circuit de manera segura...
|
||||
STR_3433 :{SMALLFONT}{BLACK}I finalment, afegirem uns {LEFTGUILLEMET}frens de bloc{RIGHTGUILLEMET}, que permeten que dos trens circulin pel mateix circuit de manera segura...
|
||||
STR_3434 :{SMALLFONT}{BLACK}Provem l'atracció i comprovem si funciona!
|
||||
STR_3435 :{SMALLFONT}{BLACK}Bé! Funciona! Afegim-hi els camins d'entrada i sortida i obrim la muntanya russa per als nostres visitants...
|
||||
STR_3436 :{SMALLFONT}{BLACK}Mentre esperem els primers passatgers, podem decorar l'atracció...
|
||||
|
@ -3474,7 +3474,7 @@ STR_5132 :Repara totes les atraccions
|
|||
STR_5133 :{SMALLFONT}{BLACK}Ajusta el propietari d'una àrea més petita.
|
||||
STR_5134 :{SMALLFONT}{BLACK}Ajusta el propietari d'una àrea més gran.
|
||||
STR_5135 :{SMALLFONT}{BLACK}Propietaris i drets de construcció
|
||||
STR_5136 :Drets del terreny
|
||||
STR_5136 :Drets de construcció
|
||||
STR_5137 :Desactiva límits de funcionament
|
||||
STR_5138 :{SMALLFONT}{WINDOW_COLOUR_2}{STRINGID}
|
||||
STR_5139 :{WHITE}{STRINGID}
|
||||
|
@ -3512,7 +3512,7 @@ STR_5170 :{SMALLFONT}{BLACK}Posa el nom dels usuaris del xat del Twitch als v
|
|||
STR_5171 :Vigila als usuaris del xat
|
||||
STR_5172 :{SMALLFONT}{BLACK}Vigila i dóna informació rellevant de què fan els visitants que porten el nom d'algun usuari del xat del Twitch.
|
||||
STR_5173 :Mostra el xat com a notícies
|
||||
STR_5174 :{SMALLFONT}{BLACK}Mostra els missatges del xat del Twitch precedits per «!news» per rebre les notificacions durant la partida.
|
||||
STR_5174 :{SMALLFONT}{BLACK}Mostra els missatges del xat del Twitch precedits per {LEFTGUILLEMET}!news{RIGHTGUILLEMET} per rebre les notificacions durant la partida.
|
||||
STR_5175 :Escriu el nom del canal Twitch
|
||||
STR_5176 :Activa la integració del Twitch
|
||||
STR_5177 :Mode de pantalla:
|
||||
|
@ -3741,7 +3741,7 @@ STR_5399 :Prem el botó de parada per continuar editant-la.
|
|||
STR_5400 :Aquesta seqüència no es pot editar.
|
||||
STR_5401 :Crea una nova seqüència per al menú principal i poder fer-hi canvis.
|
||||
STR_5402 :No s'ha pogut carregar la seqüència per al menú principal.
|
||||
STR_5403 :Potser no hi ha cap ordre de «Carrega» o d'«Espera» o bé la partida desada no és vàlida.
|
||||
STR_5403 :Potser no hi ha cap ordre de {LEFTGUILLEMET}Carrega{RIGHTGUILLEMET} o d'{LEFTGUILLEMET}Espera{RIGHTGUILLEMET} o bé la partida desada no és vàlida.
|
||||
STR_5404 :El nom ja existeix.
|
||||
STR_5405 :Escriviu un nom per a la partida
|
||||
STR_5406 :Escriviu un nom per a la seqüència
|
||||
|
@ -3768,7 +3768,7 @@ STR_5426 :Acaba
|
|||
STR_5427 :Coordenades:
|
||||
STR_5428 :Rotacions antihoràries:
|
||||
STR_5429 :Nivell de zoom:
|
||||
STR_5430 :Segons que cal esperar:
|
||||
STR_5430 :Mil·lisegons que cal esperar:
|
||||
STR_5431 :Partida que s'ha de carregar:
|
||||
STR_5432 :Ordre:
|
||||
STR_5433 :Seqüències del menú principal
|
||||
|
@ -3777,7 +3777,7 @@ STR_5435 :Canvia el nom de la desada
|
|||
STR_5436 :Edita seqüències del menú principal...
|
||||
STR_5437 :No s'ha escollit cap desada
|
||||
STR_5438 :No es poden fer canvis mentre l'editor d'ordres estigui obert.
|
||||
STR_5439 :Cal una ordre d'espera d'almenys 4 segons per a una ordre de «Torna a començar».
|
||||
STR_5439 :Cal una ordre d'espera d'almenys 4 segons per a una ordre de {LEFTGUILLEMET}Torna a començar{RIGHTGUILLEMET}.
|
||||
STR_5440 :Minimitza la pantalla completa si es perd el focus
|
||||
STR_5441 :{SMALLFONT}{BLACK}Identifica les atraccions per tipus de via.{NEWLINE}Així els vehicles després{NEWLINE}poden modificar-se (com al RCT1).
|
||||
STR_5442 :Força la valoració del parc:
|
||||
|
@ -4088,7 +4088,7 @@ STR_5778 :Construït fa {COMMA16} anys
|
|||
STR_5779 :Ingressos: {CURRENCY2DP} per hora
|
||||
STR_5780 :Cost de funcionament: {CURRENCY2DP} per hora
|
||||
STR_5781 :Cost de funcionament desconegut
|
||||
STR_5782 :Esteu connectat. Premeu «{STRING}» per xatejar.
|
||||
STR_5782 :Esteu connectat. Premeu {LEFTGUILLEMET}{STRING}{RIGHTGUILLEMET} per xatejar.
|
||||
STR_5783 :{WINDOW_COLOUR_2}Escenari blocat
|
||||
STR_5784 :{BLACK}Completeu els escenaris anteriors per desblocar-lo.
|
||||
STR_5785 :No es pot canviar el nom del grup...
|
||||
|
@ -4097,7 +4097,7 @@ STR_5787 :{COMMA32} jugadors connectats
|
|||
STR_5788 :Interval de revisió per defecte:
|
||||
STR_5789 :Desactiva els efectes de llamps
|
||||
STR_5790 :{SMALLFONT}{BLACK}Activa l'estil de pagaments del RCT1{NEWLINE}(es podran editar tant els preus d'entrada al parc com el de les entrades a les atraccions).
|
||||
STR_5791 :{SMALLFONT}{BLACK}Estableix la fiabilitat de totes les atraccions al 100%{NEWLINE}i n'estableix la data de construcció a «aquest any».
|
||||
STR_5791 :{SMALLFONT}{BLACK}Estableix la fiabilitat de totes les atraccions al 100%{NEWLINE}i n'estableix la data de construcció a {LEFTGUILLEMET}aquest any{RIGHTGUILLEMET}.
|
||||
STR_5792 :{SMALLFONT}{BLACK}Repara atraccions avariades
|
||||
STR_5793 :{SMALLFONT}{BLACK}Esborra l'historial de sinistres de les atraccions,{NEWLINE}i els visitants no es queixaran de que no són segures.
|
||||
STR_5794 :{SMALLFONT}{BLACK}Alguns escenaris desactiven l'edició{NEWLINE}d'algunes atraccions del parc.{NEWLINE}Aquesta trampa elimina aquesta restricció.
|
||||
|
@ -4126,7 +4126,7 @@ STR_5814 :{WINDOW_COLOUR_1}{OPENQUOTES}{STRING}{ENDQUOTES}
|
|||
STR_5815 :{SMALLFONT}{BLACK}Mostra el comptador de FPS del joc.
|
||||
STR_5816 :{SMALLFONT}{BLACK}Estableix la relació d'escala del joc.{NEWLINE}Sol ser útil quan es juga amb{NEWLINE}pantalles d'alta resolució.
|
||||
STR_5817 :{SMALLFONT}{BLACK}[Requereix renderitzat per maquinari]{NEWLINE}Estableix el tipus d'escalat de la interfície gràfica.
|
||||
STR_5818 :{SMALLFONT}{BLACK}[Requereix renderitzat per maquinari]{NEWLINE}Usa el mètode «nearest neighbour»{NEWLINE}quan s'estableix l'escalat de finestres{NEWLINE}a valors enters (1, 2, 3...).
|
||||
STR_5818 :{SMALLFONT}{BLACK}[Requereix renderitzat per maquinari]{NEWLINE}Usa el mètode {LEFTGUILLEMET}nearest neighbour{RIGHTGUILLEMET}{NEWLINE}quan s'estableix l'escalat de finestres{NEWLINE}a valors enters (1, 2, 3...).
|
||||
STR_5819 :{SMALLFONT}{BLACK}[Requereix renderitzat per maquinari]{NEWLINE}Posa la partida en pausa{NEWLINE}si s'activa l'Steam.
|
||||
STR_5820 :{SMALLFONT}{BLACK}Minimitza el joc si es perd el focus{NEWLINE}mentre s'està en mode de pantalla completa.
|
||||
STR_5821 :{SMALLFONT}{BLACK}Canvia el color del marcador de construcció quan s'estan construint{NEWLINE}atraccions, camins, botigues, estands, decoracions...
|
||||
|
@ -4144,7 +4144,7 @@ STR_5832 :{SMALLFONT}{BLACK}Mostra les alçades com a unitats genèriques (-2
|
|||
STR_5833 :{SMALLFONT}{BLACK}Canvia el format de les dates.
|
||||
STR_5834 :{SMALLFONT}{BLACK}Trieu quin dispositiu de so ha de fer servir l'OpenRCT2.
|
||||
STR_5835 :{SMALLFONT}{BLACK}Silencia el joc si la finestra perd el focus.
|
||||
STR_5836 :{SMALLFONT}{BLACK}Seleccioneu la peça de música per al menú principal.{NEWLINE}Si seleccioneu el tema de l'RCT1, cal que copieu «data/css17.dat» de la carpeta del RCT1 al directori del RCT2 com a «data/css50.dat», o bé establiu correctament la carpeta del RCT1 a la pestanya d'altres opcions.
|
||||
STR_5836 :{SMALLFONT}{BLACK}Seleccioneu la peça de música per al menú principal.{NEWLINE}Si seleccioneu el tema de l'RCT1, cal que copieu {LEFTGUILLEMET}data/css17.dat{RIGHTGUILLEMET} de la carpeta del RCT1 al directori del RCT2 com a {LEFTGUILLEMET}data/css50.dat{RIGHTGUILLEMET}, o bé establiu correctament la carpeta del RCT1 a la pestanya d'altres opcions.
|
||||
STR_5837 :{SMALLFONT}{BLACK}Crea i gestiona els temes de la interfície personalitzats.
|
||||
STR_5838 :{SMALLFONT}{BLACK}Mostra un botó per a la finestra de finances a la barra d'eines.
|
||||
STR_5839 :{SMALLFONT}{BLACK}Mostra un botó per a la finestra de recerques a la barra d'eines.
|
||||
|
@ -4310,7 +4310,7 @@ STR_5998 :Afegeix diners
|
|||
STR_5999 :Estableix quantitat de diners
|
||||
STR_6000 :Introduïu el valor nou
|
||||
STR_6001 :Activa els efectes d'il·luminació (experimental)
|
||||
STR_6002 :{SMALLFONT}{BLACK}Els fanals i atraccions encendran els seus llums per la nit.{NEWLINE}Cal que s'activi i utilitzi el motor gràfic de «Renderitzat per maquinari».
|
||||
STR_6002 :{SMALLFONT}{BLACK}Els fanals i atraccions encendran els seus llums per la nit.{NEWLINE}Cal que s'activi i utilitzi el motor gràfic de {LEFTGUILLEMET}Renderitzat per maquinari{RIGHTGUILLEMET}.
|
||||
STR_6003 :Vista retallada
|
||||
STR_6004 :Vista retallada
|
||||
STR_6005 :Activa la vista retallada
|
||||
|
@ -4364,6 +4364,84 @@ STR_6052 :El mapa d'alçades és massa gran i es retallarà
|
|||
STR_6053 :Aquest mapa d'alçades no es pot normalitzar
|
||||
STR_6054 :Només es poden usar bitmaps de 24 bits
|
||||
STR_6055 :Fitxer de mapa d'alçades de l'OpenRCT2
|
||||
STR_6056 :{SMALLFONT}{BLACK}Botó de silenci
|
||||
STR_6057 :{SMALLFONT}{BLACK}Mostra un botó a la barra d'eines per activar o silenciar el so.
|
||||
STR_6058 :Silencia
|
||||
STR_6059 :{RIGHTGUILLEMET}
|
||||
STR_6060 :Mostra animacions de compres
|
||||
STR_6061 :{SMALLFONT}{BLACK}Mostra un efecte mostrant les compres{NEWLINE}que fan els visitants.
|
||||
STR_6062 :{OUTLINE}{GREEN}+{CURRENCY2DP}
|
||||
STR_6063 :{OUTLINE}{RED}-{CURRENCY2DP}
|
||||
STR_6064 :Compra tots els terrenys
|
||||
STR_6065 :Registra accions d'usuari
|
||||
STR_6066 :{SMALLFONT}{BLACK}Registra totes les accions d'usuari en un arxiu a la vostra carpeta.
|
||||
STR_6067 :S'ha iniciat el servidor.
|
||||
STR_6068 :S'ha apagat el servidor.
|
||||
STR_6069 :El/la {STRING} està expulsat per en/la {STRING}.
|
||||
STR_6070 :El/la {STRING} ha estat afegit al grup {LEFTGUILLEMET}{STRING}{RIGHTGUILLEMET} per en/la {STRING}.
|
||||
STR_6071 :El/la {STRING} ha creat un grup de jugadors nou: {LEFTGUILLEMET}{STRING}{RIGHTGUILLEMET}
|
||||
STR_6072 :El/la {STRING} ha esborrat el grup de jugadors {LEFTGUILLEMET}{STRING}{RIGHTGUILLEMET}.
|
||||
STR_6073 :El/la {STRING} ha editat els permisos del grup de jugadors {LEFTGUILLEMET}{STRING}{RIGHTGUILLEMET}.
|
||||
STR_6074 :El/la {STRING} ha canviat el nom del grup de {LEFTGUILLEMET}{STRING}{RIGHTGUILLEMET} a {LEFTGUILLEMET}{STRING}{RIGHTGUILLEMET}.
|
||||
STR_6075 :El/la {STRING} ha canviat el grup de jugadors per defecte a {LEFTGUILLEMET}{STRING}{RIGHTGUILLEMET}.
|
||||
STR_6076 :El/la {STRING} ha usat/commutat la trampa {LEFTGUILLEMET}{STRING}{RIGHTGUILLEMET}.
|
||||
STR_6077 :Afegeix diners
|
||||
STR_6078 :El/la {STRING} ha construït l'atracció {LEFTGUILLEMET}{STRING}{RIGHTGUILLEMET}.
|
||||
STR_6079 :El/la {STRING} ha retirat l'atracció {LEFTGUILLEMET}{STRING}{RIGHTGUILLEMET}.
|
||||
STR_6080 :El/la {STRING} ha modificat l'aparença de l'atracció {LEFTGUILLEMET}{STRING}{RIGHTGUILLEMET}.
|
||||
STR_6081 :El/la {STRING} ha tancat l'atracció {LEFTGUILLEMET}{STRING}{RIGHTGUILLEMET}.
|
||||
STR_6082 :El/la {STRING} ha obert l'atracció {LEFTGUILLEMET}{STRING}{RIGHTGUILLEMET}.
|
||||
STR_6083 :El/la {STRING} ha posat en prova l'atracció {LEFTGUILLEMET}{STRING}{RIGHTGUILLEMET}.
|
||||
STR_6084 :El/la {STRING} ha modificat les opcions dels vehicles de l'atracció {LEFTGUILLEMET}{STRING}{RIGHTGUILLEMET}.
|
||||
STR_6085 :El/la {STRING} ha modificat les opcions d'atracció de {LEFTGUILLEMET}{STRING}{RIGHTGUILLEMET}.
|
||||
STR_6086 :El/la {STRING} ha canviat el nom de l'atracció {LEFTGUILLEMET}{STRING}{RIGHTGUILLEMET} a {LEFTGUILLEMET}{STRING}{RIGHTGUILLEMET}.
|
||||
STR_6087 :El/la {STRING} ha canviat el preu de l'atracció {LEFTGUILLEMET}{STRING}{RIGHTGUILLEMET} a {STRING}
|
||||
STR_6088 :El/la {STRING} ha canviat el preu secunadri de l'atracció {LEFTGUILLEMET}{STRING}{RIGHTGUILLEMET} a {STRING}.
|
||||
STR_6089 :El/la {STRING} ha canviat el nom del parc {LEFTGUILLEMET}{STRING}{RIGHTGUILLEMET} a {LEFTGUILLEMET}{STRING}{RIGHTGUILLEMET}.
|
||||
STR_6090 :El/la {STRING} ha obert el parc.
|
||||
STR_6091 :El/la {STRING} ha tancat el parc.
|
||||
STR_6092 :El/la {STRING} ha canviat el preu de l'entrada al parc a {STRING}.
|
||||
STR_6093 :El/la {STRING} ha afegit decoracions.
|
||||
STR_6094 :El/la {STRING} ha tret decoracions.
|
||||
STR_6095 :El/la {STRING} ha editat decoracions.
|
||||
STR_6096 :El/la {STRING} ha canviat el nom del senyal a {LEFTGUILLEMET}{STRING}{RIGHTGUILLEMET}.
|
||||
STR_6097 :El/la {STRING} ha construït una peça de la via de {LEFTGUILLEMET}{STRING}{RIGHTGUILLEMET}.
|
||||
STR_6098 :El/la {STRING} ha tret una peça de via.
|
||||
STR_6099 :Us heu connectat al servidor.
|
||||
STR_6100 :Us heu desconnectat del servidor.
|
||||
STR_6101 :Les atraccions no perden valor
|
||||
STR_6102 :{SMALLFONT}{BLACK}El valor de les atraccions no disminuirà amb el pas del temps, de manera que els visitants no pensaran de cop que l'atracció és massa cara.
|
||||
STR_6103 :{SMALLFONT}{BLACK}Aquesta opció està desactivada si es juga en xarxa.
|
||||
STR_6104 :Muntanya russa amb tirabuixons
|
||||
STR_6105 :Hipermuntanya russa
|
||||
STR_6106 :Atracció de cotxes
|
||||
STR_6107 :Monster Trucks
|
||||
STR_6108 :Tornado d'acer
|
||||
STR_6109 :Hiper-Twister
|
||||
STR_6110 :Muntanya russa infantil
|
||||
STR_6111 :Minimuntanya russa clàssica
|
||||
STR_6112 :Muntanya russa compacta amb vies d'acer per la qual els vagons passen per tirabuixons i inversions.
|
||||
STR_6113 :Una muntanya russa alta sense inversions, amb llargues caigudes, alta velocitat, vagons còmodes i amb només unes barres de subjecció.
|
||||
STR_6114 :Els passatgers viatgen poc a poc en vehicles autopropulsats sobre la ruta que segueix la via.
|
||||
STR_6115 :Camions 4x4 gegants i autopropulsats que poden pujar per pendents empinades.
|
||||
STR_6116 :Muntanya russa amb vagons amples que llisca per una via d'acer llisa, passant per una bona varietat d'inversions.
|
||||
STR_6117 :Els passatgers drets amb unes subjeccions simples dintre els vagons travessen i gaudeixen de caigudes i girs enrevessats, així com d'una part {LEFTGUILLEMET}a l'aire lliure{RIGHTGUILLEMET} damunt dels turons.
|
||||
STR_6118 :Muntanya russa suau per gent que encara no s'atreveix amb muntanyes russes grans.
|
||||
STR_6119 :Una muntanya russa barata i fàcil de construir, però amb una alçada limitada.
|
||||
STR_6120 :{BABYBLUE}Nou vehicle disponible per {STRINGID}:{NEWLINE}{STRINGID}
|
||||
STR_6121 :{SMALLFONT}{BLACK}Amplia els drets de construcció del parc fins a les vores del mapa.
|
||||
STR_6122 :No hi ha prou muntanyes russes en aquest escenari!
|
||||
STR_6123 :S'ha produït un error carregant els objectes del parc.
|
||||
STR_6124 :Nom de l'objecte
|
||||
STR_6125 :Tipus d'objecte
|
||||
STR_6126 :Tipus desconegut
|
||||
STR_6127 :Arxiu: {STRING}
|
||||
STR_6128 :L'arxiu no s'ha pogut carregar ja que està danyat o bé els objectes referenciats són desconeguts. Se'n dóna una llista a continuació.
|
||||
STR_6129 :Copia l'objecte seleccionat al porta-retalls
|
||||
STR_6130 :Copia la llista sencera al porta-retalls
|
||||
STR_6131 :Origen de l'objecte
|
||||
STR_6132 :Ignora recerques pendents
|
||||
STR_6133 :{SMALLFONT}{BLACK}Permet l'accés a atraccions i decoracions que encara no s'han recercat.
|
||||
|
||||
#############
|
||||
# Scenarios #
|
||||
|
@ -4388,7 +4466,7 @@ STR_DTLS :Construïu un parc temàtic des de l'inici al voltant d'un llac.
|
|||
<Diamond Heights>
|
||||
STR_SCNR :Els cims diamantins
|
||||
STR_PARK :Els cims diamantins
|
||||
STR_DTLS :«Els cims diamantins» ja és un parc exitós amb grans atraccions. Desenvolupeu-lo i dobleu-ne el valor.
|
||||
STR_DTLS :{LEFTGUILLEMET}Els cims diamantins{RIGHTGUILLEMET} ja és un parc exitós amb grans atraccions. Desenvolupeu-lo i dobleu-ne el valor.
|
||||
|
||||
<Evergreen Gardens>
|
||||
STR_SCNR :Els jardins perennes
|
||||
|
@ -4506,7 +4584,7 @@ STR_SCNR :Diversiotopia
|
|||
STR_PARK :Diversiotopia
|
||||
STR_DTLS :Cobrint ambdues bandes d'una autopista, aquest parc ja opera amb algunes atraccions.
|
||||
|
||||
<Haunted Harbor>
|
||||
<Haunted Harbour>
|
||||
STR_SCNR :El port embruixat
|
||||
STR_PARK :El port embruixat
|
||||
STR_DTLS :Les autoritats locals han acordat vendre barat el terreny proper d'aquest parc coster amb la condició que es preservin algunes atraccions.
|
||||
|
@ -4609,7 +4687,7 @@ STR_DTLS :L'autoritat local no permetrà campanyes de màrqueting. El parc ha
|
|||
<Giggle Downs>
|
||||
STR_SCNR :Baixades de riure
|
||||
STR_PARK :Baixades de riure
|
||||
STR_DTLS :Un «steeplechase» de quatre carrils és la peça centra d'aquest parc en expansió.
|
||||
STR_DTLS :Un {LEFTGUILLEMET}steeplechase{RIGHTGUILLEMET} de quatre carrils és la peça centra d'aquest parc en expansió.
|
||||
|
||||
<Mineral Park>
|
||||
STR_SCNR :Parc mineral
|
||||
|
@ -4802,8 +4880,8 @@ STR_DTLS :
|
|||
## Misc parks from RCT1
|
||||
# Had no details
|
||||
<Fort Anachronism>
|
||||
STR_SCNR :El castell «Fort Anachronism»
|
||||
STR_PARK :El castell «Fort Anachronism»
|
||||
STR_SCNR :El castell {LEFTGUILLEMET}Fort Anachronism{RIGHTGUILLEMET}
|
||||
STR_PARK :El castell {LEFTGUILLEMET}Fort Anachronism{RIGHTGUILLEMET}
|
||||
STR_DTLS :
|
||||
|
||||
#####################
|
||||
|
|
|
@ -890,7 +890,7 @@ STR_0884 :Nahrát krajinu
|
|||
STR_0885 :Uložit krajinu
|
||||
STR_0886 :Ukončit hru
|
||||
STR_0887 :Ukončit editor scénáře
|
||||
STR_0888 :Ukončit návrh horské dráhy
|
||||
STR_0888 :Ukončit návrhář trati
|
||||
STR_0889 :Ukončit správu návrhů tratí
|
||||
STR_0890 :<removed string - do not use>
|
||||
STR_0891 :Snímek obrazovky
|
||||
|
@ -3216,7 +3216,7 @@ STR_3203 :Nastavení výzkumu
|
|||
STR_3204 :Výběr nastavení
|
||||
STR_3205 :Výběr cílů
|
||||
STR_3206 :Uložit scénář
|
||||
STR_3207 :Návrh horské dráhy
|
||||
STR_3207 :Návrhář trati
|
||||
STR_3208 :Správa návrhů tratí
|
||||
STR_3209 :Zpět k předchozímu kroku:
|
||||
STR_3210 :Jít na následující krok:
|
||||
|
@ -3344,7 +3344,7 @@ STR_3331 :Cesta od vstupu do parku k hraně mapy není kompletní, nebo je p
|
|||
STR_3332 :Vstup do parku je špatně otočený, nebo z něj nevede cesta k hraně mapy
|
||||
STR_3333 :Exportovat plug-in objekty s uložením hry
|
||||
STR_3334 :{SMALLFONT}{BLACK}Vyberte, zda ukládat data plug-in objektů (add-in data nejsou dodána s hlavním produktem) do souborů uložených her a scénářů, což dovolí jejích načítání na těmi, kdo nemají tyto dodatečná data objektů.
|
||||
STR_3335 :Návrh horské dráhy - Vyberte typ atrakce a vozů
|
||||
STR_3335 :Návrhář trati - Vyberte typ atrakce a vozů
|
||||
STR_3336 :Správa návrhu trati - Vyberte typ trati
|
||||
STR_3337 :<not used anymore>
|
||||
STR_3338 :{BLACK}Vlastnoručně navržené
|
||||
|
@ -3353,7 +3353,7 @@ STR_3340 :{BLACK}{COMMA16} návrhy dostupné nebo vlastnoručně navržené
|
|||
STR_3341 :{SMALLFONT}{BLACK}Herní nástroje
|
||||
STR_3342 :Editor scénáře
|
||||
STR_3343 :Konvertovat uloženou hru na scénář
|
||||
STR_3344 :Návrh horské dráhy
|
||||
STR_3344 :Návrhář trati
|
||||
STR_3345 :Správa návrhu trati
|
||||
STR_3346 :Nelze uložit návrh trati...
|
||||
STR_3347 :Trať je příliš velká, obsahuje příliš mnoho prvků, nebo příliš rozsáhlé kulisy
|
||||
|
@ -4440,6 +4440,12 @@ STR_6127 :Soubor: {STRING}
|
|||
STR_6128 :Soubor se nepodařilo načíst, protože využívá objekty, z nichž některé jsou porušené nebo zcela chybí. Seznam takových objektů je k dispozici níže.
|
||||
STR_6129 :Kopírovat vybrané do schránky
|
||||
STR_6130 :Kopírovat celý seznam do schránky
|
||||
STR_6131 :Zdroj objektu
|
||||
STR_6132 :Ignorovat nutnost výzkumu
|
||||
STR_6133 :{SMALLFONT}{BLACK}Povolí přístup k atrakcím a kulisám, které ještě nebyly vyzkoumány
|
||||
STR_6134 :Odstranit kulisy
|
||||
STR_6135 :Klient zaslal neplatný požadavek
|
||||
STR_6136 :Server zaslal neplatný požadavek
|
||||
|
||||
###############################################################################
|
||||
## RCT2 Objects
|
||||
|
|
|
@ -850,7 +850,7 @@ STR_0845 :<not used anymore>
|
|||
STR_0846 :<not used anymore>
|
||||
STR_0847 :Über `OpenRCT2'
|
||||
STR_0848 :RollerCoaster Tycoon 2
|
||||
STR_0849 :{WINDOW_COLOUR_2}Version 2.01.032
|
||||
STR_0849 :<removed string - do not use>
|
||||
STR_0850 :{WINDOW_COLOUR_2}Copyright {COPYRIGHT} 2002 Chris Sawyer, alle Rechte vorbehalten
|
||||
STR_0851 :{WINDOW_COLOUR_2}Entworfen und programmiert von Chris Sawyer
|
||||
STR_0852 :{WINDOW_COLOUR_2}Grafik von Simon Foster
|
||||
|
@ -859,13 +859,13 @@ STR_0854 :{WINDOW_COLOUR_2}Zusätzliche Sounds aufgenommen von David Ellis
|
|||
STR_0855 :{WINDOW_COLOUR_2}Repräsentation von Jacqui Lyons bei Marjacq Ltd.
|
||||
STR_0856 :{WINDOW_COLOUR_2}Dank gilt:
|
||||
STR_0857 :{WINDOW_COLOUR_2}Peter James Adcock, Joe Booth und John Wardley
|
||||
STR_0858 :{WINDOW_COLOUR_2}
|
||||
STR_0859 :{WINDOW_COLOUR_2}
|
||||
STR_0860 :{WINDOW_COLOUR_2}
|
||||
STR_0861 :
|
||||
STR_0862 :
|
||||
STR_0863 :
|
||||
STR_0864 :
|
||||
STR_0858 :<removed string - do not use>
|
||||
STR_0859 :<removed string - do not use>
|
||||
STR_0860 :<removed string - do not use>
|
||||
STR_0861 :<removed string - do not use>
|
||||
STR_0862 :<removed string - do not use>
|
||||
STR_0863 :<removed string - do not use>
|
||||
STR_0864 :<removed string - do not use>
|
||||
STR_0865 :{STRINGID}
|
||||
STR_0866 :{POP16}{STRINGID}
|
||||
STR_0867 :{POP16}{POP16}{STRINGID}
|
||||
|
@ -889,7 +889,7 @@ STR_0884 :Landschaft laden
|
|||
STR_0885 :Landschaft speichern
|
||||
STR_0886 :Spiel beenden
|
||||
STR_0887 :Szenario-Editor beenden
|
||||
STR_0888 :Achterbahn-Designer beenden
|
||||
STR_0888 :Streckenentwurf-Designer beenden
|
||||
STR_0889 :Streckenentwurf-Manager beenden
|
||||
STR_0890 :<removed string - do not use>
|
||||
STR_0891 :Screenshot
|
||||
|
@ -2866,7 +2866,7 @@ STR_2856 :{WINDOW_COLOUR_2}Lehrgang
|
|||
STR_2857 :{WINDOW_COLOUR_2}(Drücken Sie eine Taste oder klicken Sie mit der Maus, um die Kontrolle zu übernehmen)
|
||||
STR_2858 :Marketingkampage kann nicht gestartet werden...
|
||||
STR_2859 :OpenRCT2 läuft bereits
|
||||
STR_2860 :Infogrames Interactive Credits...
|
||||
STR_2860 :<removed string - do not use>
|
||||
STR_2861 :{WINDOW_COLOUR_2}Lizenziert für Infogrames Interactive Inc.
|
||||
STR_2862 :Musik...
|
||||
STR_2863 :Musik
|
||||
|
@ -2914,29 +2914,29 @@ STR_2904 :{WINDOW_COLOUR_2}Manic Mechanic: (Allister Brimble) Copyright {CO
|
|||
STR_2905 :{WINDOW_COLOUR_2}Techno Torture: (Allister Brimble) Copyright {COPYRIGHT} Chris Sawyer
|
||||
STR_2906 :{WINDOW_COLOUR_2}Sweat Dreams: (Allister Brimble) Copyright {COPYRIGHT} Chris Sawyer
|
||||
STR_2907 :{WINDOW_COLOUR_2}What shall we do with the Drunken Sailor: (Anon/Allister Brimble) Copyright {COPYRIGHT} Chris Sawyer
|
||||
STR_2908 :{WINDOW_COLOUR_2}Infogrames Interactive
|
||||
STR_2909 :{WINDOW_COLOUR_2}Senior Producer: Thomas J. Zahorik
|
||||
STR_2910 :{WINDOW_COLOUR_2}Executive Producer: Bill Levay
|
||||
STR_2911 :{WINDOW_COLOUR_2}Senior Marketing Produktmanager: Scott Triola
|
||||
STR_2912 :{WINDOW_COLOUR_2}V.P. Produktentwicklung: Scott Walker
|
||||
STR_2913 :{WINDOW_COLOUR_2}General Manager: John Hurlbut
|
||||
STR_2914 :{WINDOW_COLOUR_2}Direktor Qualitätssicherung (Q.A.): Michael Craighead
|
||||
STR_2915 :{WINDOW_COLOUR_2}Q.A.-Zertifizierungsmanager: Kurt Boutin
|
||||
STR_2916 :{WINDOW_COLOUR_2}Q.A.-Zertifizierungsleitung: Mark Huggins
|
||||
STR_2917 :{WINDOW_COLOUR_2}Tester: Dena Irene Fitzgerald, Scott Rollins, Christopher McPhail
|
||||
STR_2918 :{WINDOW_COLOUR_2}Clif McClure, Erik Maramaldi, Erik Jeffery
|
||||
STR_2919 :{WINDOW_COLOUR_2}Marketingdirektor: Ann Marie Bland
|
||||
STR_2920 :{WINDOW_COLOUR_2}Creative Services Manager: Steve Martin
|
||||
STR_2921 :{WINDOW_COLOUR_2}Redaktions- & Dokumentationsmanager: Elizabeth Mackney
|
||||
STR_2922 :{WINDOW_COLOUR_2}Grafikdesigner: Paul Anselmi
|
||||
STR_2923 :{WINDOW_COLOUR_2}Copywriter: Kurt Carlson
|
||||
STR_2924 :{WINDOW_COLOUR_2}Besonderer Dank geht an: Peter Matiss
|
||||
STR_2925 :{WINDOW_COLOUR_2}Technischer Spezialist: Ken Edwards
|
||||
STR_2926 :{WINDOW_COLOUR_2}Manager Technikabteilung: Luis Rivas
|
||||
STR_2927 :{WINDOW_COLOUR_2}Leitung Kompatibilätsanalyse: Geoffrey Smith
|
||||
STR_2928 :{WINDOW_COLOUR_2}Kompatibilätsanalyse: Jason Cordero, Burke McQuinn, Kim Jardin
|
||||
STR_2929 :{WINDOW_COLOUR_2}Leitender Tester: Daniel Frisoli
|
||||
STR_2930 :{WINDOW_COLOUR_2}Senior Tester: Matt Pantaleoni
|
||||
STR_2908 :<removed string - do not use>
|
||||
STR_2909 :<removed string - do not use>
|
||||
STR_2910 :<removed string - do not use>
|
||||
STR_2911 :<removed string - do not use>
|
||||
STR_2912 :<removed string - do not use>
|
||||
STR_2913 :<removed string - do not use>
|
||||
STR_2914 :<removed string - do not use>
|
||||
STR_2915 :<removed string - do not use>
|
||||
STR_2916 :<removed string - do not use>
|
||||
STR_2917 :<removed string - do not use>
|
||||
STR_2918 :<removed string - do not use>
|
||||
STR_2919 :<removed string - do not use>
|
||||
STR_2920 :<removed string - do not use>
|
||||
STR_2921 :<removed string - do not use>
|
||||
STR_2922 :<removed string - do not use>
|
||||
STR_2923 :<removed string - do not use>
|
||||
STR_2924 :<removed string - do not use>
|
||||
STR_2925 :<removed string - do not use>
|
||||
STR_2926 :<removed string - do not use>
|
||||
STR_2927 :<removed string - do not use>
|
||||
STR_2928 :<removed string - do not use>
|
||||
STR_2929 :<removed string - do not use>
|
||||
STR_2930 :<removed string - do not use>
|
||||
STR_2931 :{WINDOW_COLOUR_2}
|
||||
STR_2932 :{WINDOW_COLOUR_2}
|
||||
STR_2933 :{WINDOW_COLOUR_2}
|
||||
|
@ -3213,7 +3213,7 @@ STR_3203 :Einrichtung der Erfindungsliste
|
|||
STR_3204 :Optionsauswahl
|
||||
STR_3205 :Zielauswahl
|
||||
STR_3206 :Szenario speichern
|
||||
STR_3207 :Achterbahn-Designer
|
||||
STR_3207 :Streckenentwurf-Designer
|
||||
STR_3208 :Streckenentwurf-Manager
|
||||
STR_3209 :Zurück zum vorherigen Schritt:
|
||||
STR_3210 :Weiter zum nächsten Schritt:
|
||||
|
@ -3341,7 +3341,7 @@ STR_3331 :Fußweg vom Parkeingang zum Kartenrand entweder nicht vollständig
|
|||
STR_3332 :Parkeingang liegt verkehrt herum oder besitzt keinen Fußweg zum Kartenrand
|
||||
STR_3333 :Zusatzobjekte bei gespeich. Spielen exportieren
|
||||
STR_3334 :{SMALLFONT}{BLACK}Wählen Sie aus, ob zusätzliche Plugin-Objektdaten (Zusatzdaten, die nicht zum Hauptprodukt gehören) in Spielständen oder Szenariodateien gespeichert werden sollen, damit jemand, der nicht über die zusätzlichen Objektdaten verfügt, die gespeicherten Daten laden kann
|
||||
STR_3335 :Achterbahn-Designer - Bahnarten & Fahrzeuge auswählen
|
||||
STR_3335 :Streckenentwurf-Designer - Bahnarten & Fahrzeuge auswählen
|
||||
STR_3336 :Streckenentwurf-Manager - Bahnart auswählen
|
||||
STR_3337 :Six Flags-Park
|
||||
STR_3338 :{BLACK}Eigenes Layout entwerfen
|
||||
|
@ -3350,7 +3350,7 @@ STR_3340 :{BLACK}{COMMA16} Entwürfe verfügbar oder eigenes Layout entwerfen
|
|||
STR_3341 :{SMALLFONT}{BLACK}Spielwerkzeuge
|
||||
STR_3342 :Szenario-Editor
|
||||
STR_3343 :Gespeichertes Spiel in Szenario umwandeln
|
||||
STR_3344 :Achterbahn-Designer
|
||||
STR_3344 :Streckenentwurf-Designer
|
||||
STR_3345 :Streckenentwurf-Manager
|
||||
STR_3346 :Streckenentwurf kann nicht gespeichert werden...
|
||||
STR_3347 :Bahn ist zu lang, enthält zu viele Elemente oder Szenerie ist zu zerstreut
|
||||
|
@ -3734,7 +3734,7 @@ STR_5396 :{SMALLFONT}{BLACK}Titelsequenz neu laden, falls sie außerhalb des
|
|||
STR_5397 :Kann nur im Titelbildschirm verwendet werden
|
||||
STR_5398 :Titelsequenz kann, während sie läuft, nicht geändert werden
|
||||
STR_5399 :Titelsequenz stoppen, um das Bearbeiten fortzusetzen
|
||||
STR_5400 :Diese Titelsequenz kann nicht geändert werden
|
||||
STR_5400 :Diese Titelsequenz kann{NEWLINE}nicht geändert werden
|
||||
STR_5401 :Erstellen Sie eine neue Titelsequenz, um sie zu bearbeiten
|
||||
STR_5402 :Titelsequenz konnte nicht geladen werden
|
||||
STR_5403 :Möglicherweise kein `Laden'-Befehl, `Warten'-Befehl oder ein ungültiger Spielstand vorhanden
|
||||
|
@ -3764,7 +3764,7 @@ STR_5426 :Ende
|
|||
STR_5427 :Koordinaten:
|
||||
STR_5428 :Drehungen gegen Uhrzeigersinn:
|
||||
STR_5429 :Zoomstufe:
|
||||
STR_5430 :Zu wartende Sekunden:
|
||||
STR_5430 :Zu wartende Millisekunden:
|
||||
STR_5431 :Zu ladender Spielstand:
|
||||
STR_5432 :Befehl:
|
||||
STR_5433 :Titelsequenzen
|
||||
|
@ -4320,9 +4320,9 @@ STR_6016 :Modifiziere Kachel
|
|||
STR_6017 :Bitte verlangsamen Sie Ihr Tempo
|
||||
STR_6018 :Streckenbau - Bogen links
|
||||
STR_6019 :Streckenbau - Bogen rechts
|
||||
STR_6020 :Streckenbau - Verwende Standard Abschnitt
|
||||
STR_6020 :Streckenbau - Verwende Standardabschnitt
|
||||
STR_6021 :Streckenbau - Neigung unten
|
||||
STR_6022 :Streckenbau - Neigung Oben
|
||||
STR_6022 :Streckenbau - Neigung oben
|
||||
STR_6023 :Streckenbau - Umschalten Kettenlift
|
||||
STR_6024 :Streckenbau - Überhöhung links
|
||||
STR_6025 :Streckenbau - Überhöhung rechts
|
||||
|
@ -4423,6 +4423,23 @@ STR_6119 :Eine günstige und einfach zu bauende Achterbahn, jedoch mit begren
|
|||
STR_6120 :{BABYBLUE}Neues Fahrzeug für {STRINGID} ist jetzt verfügbar:{NEWLINE}{STRINGID}
|
||||
STR_6121 :{SMALLFONT}{BLACK}Erweitert die Landrechte des Parks{NEWLINE}bis zum Rand der Karte
|
||||
STR_6122 :Dieses Szenario enthält zu wenige Achterbahnen!
|
||||
STR_6124 :Objektname
|
||||
STR_6125 :Objekttyp
|
||||
STR_6126 :Unbekannter Typ
|
||||
STR_6127 :Datei: {STRING}
|
||||
STR_6128 :Die Datei konnte aufgrund fehlender oder beschädigter Objekte nicht geladen werden. Eine Liste dieser Elemente ist nachstehend aufgeführt.
|
||||
STR_6129 :Ausgewählte Elemente kopieren
|
||||
STR_6130 :Vollständige Liste kopieren
|
||||
STR_6131 :Objektquelle
|
||||
STR_6132 :Forschungsstatus ignorieren
|
||||
STR_6133 :{SMALLFONT}{BLACK}Ermöglicht den Zugriff auf Attraktionen und Szenerie, die bisher noch nicht erforscht wurden
|
||||
STR_6134 :Szenerie entfernen
|
||||
STR_6135 :Ungültige Anfrage durch den Client
|
||||
STR_6136 :Ungültige Anfrage durch den Server
|
||||
STR_6137 :OpenRCT2, ein freier und quelloffener Klon von RollerCoaster Tycoon 2.
|
||||
STR_6138 :OpenRCT2 ist das Werk vieler Autoren, eine vollständige Liste befindet sich in {OPENQUOTES}contributors.md{ENDQUOTES}. Für weitere Informationen, besuche http://github.com/OpenRCT2/OpenRCT2
|
||||
STR_6139 :Alle Produkt- und Firmennamen sind Eigentum ihrer jeweiligen Inhaber.{NEWLINE}Die Nutzung dieser stellt keine Zugehörigkeit oder Unterstützung dar.
|
||||
STR_6140 :Changelog...
|
||||
|
||||
#############
|
||||
# Scenarios #
|
||||
|
@ -4565,9 +4582,9 @@ STR_SCNR :Funtopia
|
|||
STR_PARK :Funtopia
|
||||
STR_DTLS :In diesem Park zu beiden Seiten einer Autobahn sind bereits verschiedene Attraktionen in Betrieb.
|
||||
|
||||
<Haunted Harbor>
|
||||
STR_SCNR :Haunted Harbor
|
||||
STR_PARK :Haunted Harbor
|
||||
<Haunted Harbour>
|
||||
STR_SCNR :Haunted Harbour
|
||||
STR_PARK :Haunted Harbour
|
||||
STR_DTLS :Die örtlichen Behörden haben zugestimmt, dem kleinen Park an der Küste umliegendes Gelände günstig zu verkaufen, unter der Bedingung, dass bestimmte Attraktionen erhalten werden.
|
||||
|
||||
<Fun Fortress>
|
||||
|
|
|
@ -851,7 +851,7 @@ STR_0845 :<removed string - do not use>
|
|||
STR_0846 :<removed string - do not use>
|
||||
STR_0847 :About 'OpenRCT2'
|
||||
STR_0848 :RollerCoaster Tycoon 2
|
||||
STR_0849 :{WINDOW_COLOUR_2}Version 2.01.028
|
||||
STR_0849 :<removed string - do not use>
|
||||
STR_0850 :{WINDOW_COLOUR_2}Copyright {COPYRIGHT} 2002 Chris Sawyer, all rights reserved
|
||||
STR_0851 :{WINDOW_COLOUR_2}Designed and programmed by Chris Sawyer
|
||||
STR_0852 :{WINDOW_COLOUR_2}Graphics by Simon Foster
|
||||
|
@ -860,13 +860,13 @@ STR_0854 :{WINDOW_COLOUR_2}Additional sounds recorded by David Ellis
|
|||
STR_0855 :{WINDOW_COLOUR_2}Representation by Jacqui Lyons at Marjacq Ltd.
|
||||
STR_0856 :{WINDOW_COLOUR_2}Thanks to:
|
||||
STR_0857 :{WINDOW_COLOUR_2}Peter James Adcock, Joe Booth, and John Wardley
|
||||
STR_0858 :{WINDOW_COLOUR_2}
|
||||
STR_0859 :{WINDOW_COLOUR_2}
|
||||
STR_0860 :{WINDOW_COLOUR_2}
|
||||
STR_0861 :
|
||||
STR_0862 :
|
||||
STR_0863 :
|
||||
STR_0864 :
|
||||
STR_0858 :<removed string - do not use>
|
||||
STR_0859 :<removed string - do not use>
|
||||
STR_0860 :<removed string - do not use>
|
||||
STR_0861 :<removed string - do not use>
|
||||
STR_0862 :<removed string - do not use>
|
||||
STR_0863 :<removed string - do not use>
|
||||
STR_0864 :<removed string - do not use>
|
||||
STR_0865 :{STRINGID}
|
||||
STR_0866 :{POP16}{STRINGID}
|
||||
STR_0867 :{POP16}{POP16}{STRINGID}
|
||||
|
@ -890,7 +890,7 @@ STR_0884 :Load Landscape
|
|||
STR_0885 :Save Landscape
|
||||
STR_0886 :<removed string - do not use>
|
||||
STR_0887 :Quit Scenario Editor
|
||||
STR_0888 :Quit Roller Coaster Designer
|
||||
STR_0888 :Quit Track Designer
|
||||
STR_0889 :Quit Track Designs Manager
|
||||
STR_0890 :<removed string - do not use>
|
||||
STR_0891 :Screenshot
|
||||
|
@ -2867,7 +2867,7 @@ STR_2856 :{WINDOW_COLOUR_2}Tutorial
|
|||
STR_2857 :{WINDOW_COLOUR_2}(Press a key or mouse button to take control)
|
||||
STR_2858 :Can't start marketing campaign...
|
||||
STR_2859 :Another instance of OpenRCT2 is already running
|
||||
STR_2860 :Infogrames Interactive credits...
|
||||
STR_2860 :<removed string - do not use>
|
||||
STR_2861 :{WINDOW_COLOUR_2}Licensed to Infogrames Interactive Inc.
|
||||
STR_2862 :Music acknowledgements...
|
||||
STR_2863 :Music acknowledgements
|
||||
|
@ -2915,29 +2915,29 @@ STR_2904 :{WINDOW_COLOUR_2}Manic Mechanic: (Allister Brimble) copyright {CO
|
|||
STR_2905 :{WINDOW_COLOUR_2}Techno Torture: (Allister Brimble) copyright {COPYRIGHT} Chris Sawyer
|
||||
STR_2906 :{WINDOW_COLOUR_2}Sweat Dreams: (Allister Brimble) copyright {COPYRIGHT} Chris Sawyer
|
||||
STR_2907 :{WINDOW_COLOUR_2}What shall we do with the Drunken Sailor: (Anon/Allister Brimble) copyright {COPYRIGHT} Chris Sawyer
|
||||
STR_2908 :{WINDOW_COLOUR_2}Infogrames Interactive
|
||||
STR_2909 :{WINDOW_COLOUR_2}Senior Producer: Thomas J. Zahorik
|
||||
STR_2910 :{WINDOW_COLOUR_2}Executive Producer: Bill Levay
|
||||
STR_2911 :{WINDOW_COLOUR_2}Senior Marketing Product Manager: Scott Triola
|
||||
STR_2912 :{WINDOW_COLOUR_2}V.P. of Product Development: Scott Walker
|
||||
STR_2913 :{WINDOW_COLOUR_2}General Manager: John Hurlbut
|
||||
STR_2914 :{WINDOW_COLOUR_2}Director of Quality Assurance: Michael Craighead
|
||||
STR_2915 :{WINDOW_COLOUR_2}Q.A. Certification Manager: Kurt Boutin
|
||||
STR_2916 :{WINDOW_COLOUR_2}Q.A. Certification Lead: Mark Huggins
|
||||
STR_2917 :{WINDOW_COLOUR_2}Testers: Dena Irene Fitzgerald, Scott Rollins, Christopher McPhail
|
||||
STR_2918 :{WINDOW_COLOUR_2}Clif McClure, Erik Maramaldi, Erik Jeffery
|
||||
STR_2919 :{WINDOW_COLOUR_2}Director of Marketing: Ann Marie Bland
|
||||
STR_2920 :{WINDOW_COLOUR_2}Manager of Creative Services: Steve Martin
|
||||
STR_2921 :{WINDOW_COLOUR_2}Manager of Editorial & Documentation Services: Elizabeth Mackney
|
||||
STR_2922 :{WINDOW_COLOUR_2}Graphic Designer: Paul Anselmi
|
||||
STR_2923 :{WINDOW_COLOUR_2}Copywriter: Kurt Carlson
|
||||
STR_2924 :{WINDOW_COLOUR_2}Special Thanks to: Peter Matiss
|
||||
STR_2925 :{WINDOW_COLOUR_2}Engineering Specialist: Ken Edwards
|
||||
STR_2926 :{WINDOW_COLOUR_2}Engineering Services Manager: Luis Rivas
|
||||
STR_2927 :{WINDOW_COLOUR_2}Lead Compatibility Analyst: Geoffrey Smith
|
||||
STR_2928 :{WINDOW_COLOUR_2}Compatibility Analysts: Jason Cordero, Burke McQuinn, Kim Jardin
|
||||
STR_2929 :{WINDOW_COLOUR_2}Lead Tester: Daniel Frisoli
|
||||
STR_2930 :{WINDOW_COLOUR_2}Senior Tester: Matt Pantaleoni
|
||||
STR_2908 :<removed string - do not use>
|
||||
STR_2909 :<removed string - do not use>
|
||||
STR_2910 :<removed string - do not use>
|
||||
STR_2911 :<removed string - do not use>
|
||||
STR_2912 :<removed string - do not use>
|
||||
STR_2913 :<removed string - do not use>
|
||||
STR_2914 :<removed string - do not use>
|
||||
STR_2915 :<removed string - do not use>
|
||||
STR_2916 :<removed string - do not use>
|
||||
STR_2917 :<removed string - do not use>
|
||||
STR_2918 :<removed string - do not use>
|
||||
STR_2919 :<removed string - do not use>
|
||||
STR_2920 :<removed string - do not use>
|
||||
STR_2921 :<removed string - do not use>
|
||||
STR_2922 :<removed string - do not use>
|
||||
STR_2923 :<removed string - do not use>
|
||||
STR_2924 :<removed string - do not use>
|
||||
STR_2925 :<removed string - do not use>
|
||||
STR_2926 :<removed string - do not use>
|
||||
STR_2927 :<removed string - do not use>
|
||||
STR_2928 :<removed string - do not use>
|
||||
STR_2929 :<removed string - do not use>
|
||||
STR_2930 :<removed string - do not use>
|
||||
STR_2931 :{WINDOW_COLOUR_2}
|
||||
STR_2932 :{WINDOW_COLOUR_2}
|
||||
STR_2933 :{WINDOW_COLOUR_2}
|
||||
|
@ -3214,7 +3214,7 @@ STR_3203 :Invention List Set Up
|
|||
STR_3204 :Options Selection
|
||||
STR_3205 :Objective Selection
|
||||
STR_3206 :Save Scenario
|
||||
STR_3207 :Roller Coaster Designer
|
||||
STR_3207 :Track Designer
|
||||
STR_3208 :Track Designs Manager
|
||||
STR_3209 :Back to Previous Step:
|
||||
STR_3210 :Forward to Next Step:
|
||||
|
@ -3342,7 +3342,7 @@ STR_3331 :Path from park entrance to map edge either not complete or too comp
|
|||
STR_3332 :Park entrance is the wrong way round or has no path leading to the map edge
|
||||
STR_3333 :Export plug-in objects with saved games
|
||||
STR_3334 :{SMALLFONT}{BLACK}Select whether to save any additional plug-in object data required (add-in data not supplied with the main product) in saved game or scenario files, allowing them to be loaded by someone who doesn't have the additional object data
|
||||
STR_3335 :Roller Coaster Designer - Select Ride Types & Vehicles
|
||||
STR_3335 :Track Designer - Select Ride Types & Vehicles
|
||||
STR_3336 :Track Designs Manager - Select Ride Type
|
||||
STR_3337 :<removed string - do not use>
|
||||
STR_3338 :{BLACK}Custom-designed layout
|
||||
|
@ -3351,7 +3351,7 @@ STR_3340 :{BLACK}{COMMA16} designs available, or custom-designed layout
|
|||
STR_3341 :{SMALLFONT}{BLACK}Game tools
|
||||
STR_3342 :Scenario Editor
|
||||
STR_3343 :Convert Saved Game to Scenario
|
||||
STR_3344 :Roller Coaster Designer
|
||||
STR_3344 :Track Designer
|
||||
STR_3345 :Track Designs Manager
|
||||
STR_3346 :Can't save track design...
|
||||
STR_3347 :Ride is too large, contains too many elements, or scenery is too spread out
|
||||
|
@ -4424,7 +4424,7 @@ STR_6112 :A compact steel-tracked roller coaster where the train travels thro
|
|||
STR_6113 :A tall non-inverting roller coaster with large drops, high speed, and comfortable trains with only lap bar restraints
|
||||
STR_6114 :Riders travel slowly in powered vehicles along a track-based route
|
||||
STR_6115 :Powered giant 4 x 4 trucks which can climb steep slopes
|
||||
STR_6116 :Wide roller coaster trains glide along smooth steel track, traveling through a variety of inversions
|
||||
STR_6116 :Wide roller coaster trains glide along smooth steel track, travelling through a variety of inversions
|
||||
STR_6117 :Sitting in comfortable trains with only simple lap restraints riders enjoy giant smooth drops and twisting track as well as plenty of 'air time' over the hills
|
||||
STR_6118 :A gentle roller coaster for people who haven't yet got the courage to face the larger rides
|
||||
STR_6119 :A cheap and easy to build roller coaster, but with a limited height
|
||||
|
@ -4439,6 +4439,16 @@ STR_6127 :File: {STRING}
|
|||
STR_6128 :The file could not be loaded as some of the objects referenced in it are missing or corrupt. A list of these objects is given below.
|
||||
STR_6129 :Copy selected item to clipboard
|
||||
STR_6130 :Copy entire list to clipboard
|
||||
STR_6131 :Object source
|
||||
STR_6132 :Ignore research status
|
||||
STR_6133 :{SMALLFONT}{BLACK}Access rides and scenery that have not yet been invented
|
||||
STR_6134 :Clear Scenery
|
||||
STR_6135 :Client sent invalid request
|
||||
STR_6136 :Server sent invalid request
|
||||
STR_6137 :OpenRCT2, a free and open source clone of Roller Coaster Tycoon 2.
|
||||
STR_6138 :OpenRCT2 is the work of many authors, a full list can be found in {OPENQUOTES}contributors.md{ENDQUOTES}. For more information, visit http://github.com/OpenRCT2/OpenRCT2
|
||||
STR_6139 :All product and company names belong to their respective holders. Use of them does not imply any affiliation with or endorsement by them.
|
||||
STR_6140 :Changelog...
|
||||
|
||||
#############
|
||||
# Scenarios #
|
||||
|
@ -4581,7 +4591,7 @@ STR_SCNR :Funtopia
|
|||
STR_PARK :Funtopia
|
||||
STR_DTLS :Covering land both sides of a highway, this park has several rides already operating
|
||||
|
||||
<Haunted Harbor>
|
||||
<Haunted Harbour>
|
||||
STR_SCNR :Haunted Harbour
|
||||
STR_PARK :Haunted Harbour
|
||||
STR_DTLS :The local authority has agreed to sell nearby land cheaply to this small seaside park, on the condition that certain rides are preserved
|
||||
|
@ -4654,7 +4664,7 @@ STR_DTLS :Develop this Roman-themed park by adding rides and roller coasters
|
|||
<Swamp Cove>
|
||||
STR_SCNR :Swamp Cove
|
||||
STR_PARK :Swamp Cove
|
||||
STR_DTLS :Built partly on a series of small islands, this park already has a pair of large roller coasters as its centerpiece
|
||||
STR_DTLS :Built partly on a series of small islands, this park already has a pair of large roller coasters as its centrepiece
|
||||
|
||||
<Adrenaline Heights>
|
||||
STR_SCNR :Adrenaline Heights
|
||||
|
@ -4684,7 +4694,7 @@ STR_DTLS :The local authority will not allow any kind of advertising or promo
|
|||
<Giggle Downs>
|
||||
STR_SCNR :Giggle Downs
|
||||
STR_PARK :Giggle Downs
|
||||
STR_DTLS :A four lane steeplechase ride is the centerpiece of this expanding park
|
||||
STR_DTLS :A four lane steeplechase ride is the centrepiece of this expanding park
|
||||
|
||||
<Mineral Park>
|
||||
STR_SCNR :Mineral Park
|
||||
|
@ -4781,7 +4791,7 @@ STR_DTLS :This historical park is only allowed to build older-styled rides
|
|||
<Icarus Park>
|
||||
STR_SCNR :Icarus Park
|
||||
STR_PARK :Icarus Park
|
||||
STR_DTLS :Develop this alien park to maximize its profit
|
||||
STR_DTLS :Develop this alien park to maximise its profit
|
||||
|
||||
<Sunny Swamps>
|
||||
STR_SCNR :Sunny Swamps
|
||||
|
|
|
@ -882,7 +882,6 @@ STR_0884 :Load Landscape
|
|||
STR_0885 :Save Landscape
|
||||
STR_0886 :Quit Game
|
||||
STR_0887 :Quit Scenario Editor
|
||||
STR_0888 :Quit Roller Coaster Designer
|
||||
STR_0889 :Quit Track Designs Manager
|
||||
STR_0890 :<removed string - do not use>
|
||||
STR_0891 :Screenshot
|
||||
|
@ -2395,7 +2394,7 @@ STR_SCNR :Funtopia
|
|||
STR_PARK :Funtopia
|
||||
STR_DTLS :Covering land both sides of a highway, this park has several rides already operating
|
||||
|
||||
<Haunted Harbor>
|
||||
<Haunted Harbour>
|
||||
STR_SCNR :Haunted Harbor
|
||||
STR_PARK :Haunted Harbor
|
||||
STR_DTLS :The local authority has agreed to sell nearby land cheaply to this small seaside park, on the condition that certain rides are preserved
|
||||
|
|
|
@ -532,7 +532,7 @@ STR_0527 :Una montaña rusa de acero capaz de rizos verticales
|
|||
STR_0528 :Los pasajeros viajan en botes hinchables por tubos semicirculares o totalmente cerrados.
|
||||
STR_0529 :El tren de la mina corre por una vía de acero que recuerda las viejas vías del tren.
|
||||
STR_0530 :Asientos colgados de un cable de acero viajan contínuamente desde un extremo a otro del recorrido
|
||||
STR_0531 :Una montaña rusa compacta de acero donde los vagones circulan por rizos y sacachorscos.
|
||||
STR_0531 :Una montaña rusa compacta de acero donde los vagones circulan por rizos y sacacorchos.
|
||||
STR_0532 :
|
||||
STR_0533 :
|
||||
STR_0534 :Go-Karts autopropulsados con gasolina.
|
||||
|
@ -3765,7 +3765,7 @@ STR_5426 :Fin
|
|||
STR_5427 :Coordenadas:
|
||||
STR_5428 :Rotaciones en contra del reloj:
|
||||
STR_5429 :Nivel de enfoque
|
||||
STR_5430 :Segundos a esperar:
|
||||
STR_5430 :Tiempo en milisegundos:
|
||||
STR_5431 :Partida a cargar:
|
||||
STR_5432 :Comando:
|
||||
STR_5433 :Secuencias del Menú Principal
|
||||
|
@ -4405,6 +4405,36 @@ STR_6097 :{STRING} colocó una pieza de vía de la atracción '{STRING}'.
|
|||
STR_6098 :{STRING} removió una pieza de la atracción.
|
||||
STR_6099 :Te has conectado al servidor.
|
||||
STR_6100 :Te has desconectado del servidor.
|
||||
STR_6101 :Atracciones no disminuyen su valor.
|
||||
STR_6102 :{SMALLFONT}{BLACK}El valor de una atracción no disminuye con el tiempo, así los visitantes no pensarán que una atracción es demasiado caro.
|
||||
STR_6103 :{SMALLFONT}{BLACK}Esta opción está deshabilitada durante una partida multijugador.
|
||||
STR_6104 :Montaña Rusa Sacacorchos
|
||||
STR_6105 :Hipermontaña Rusa
|
||||
STR_6106 :Atracción de Coches
|
||||
STR_6107 :Monster Trucks
|
||||
STR_6108 :Steel Twister
|
||||
STR_6109 :Hyper-Twister
|
||||
STR_6110 :Montaña Rusa Infantil
|
||||
STR_6111 :Mini Montaña Rusa Clásica
|
||||
STR_6112 :Una montaña rusa compacta de acero donde los vagones circulan por rizos y sacacorchos
|
||||
STR_6113 :Una montaña rusa alta y que no se invierte con grandes caídas, alta velocidad y vagones confortables con sólo unas barras para sujetarse
|
||||
STR_6114 :Los viajeros viajan lentamente en vehículos motorizados que siguen la ruta de las vías.
|
||||
STR_6115 :Camiones gigantes autopropulsados 4x4 que pueden subir cuestas impresionantes
|
||||
STR_6116 :Montaña rusa amplia sobre vías de acero que efectúa varias inversiones
|
||||
STR_6117 :Sentados en cómodos vagones con sujecciones simples, los viajeros disfrutan de grandes y suaves caídas así como de giros y gran cantidad de momentos de caída libre en los puntos superiores.
|
||||
STR_6118 :Una montaña rusa suave para las personas que todavía no tienen el coraje de enfrentar atracciones más grandes.
|
||||
STR_6119 :Una montaña rusa barata y fácil de construir, pero con una altura limitada.
|
||||
STR_6120 :{BABYBLUE}Nuevo vehículo disponible ahora para {STRINGID}:{NEWLINE}{STRINGID}
|
||||
STR_6121 :{SMALLFONT}{BLACK}Extiende los derechos de construcción del parque hasta los bordes del mapa.
|
||||
STR_6122 :¡No hay suficientes montañas rusas en este escenario!
|
||||
STR_6123 :Error al cargar objetos para el Parque
|
||||
STR_6124 :Nombre objeto
|
||||
STR_6125 :Tipo objeto
|
||||
STR_6126 :Tipo desconocido
|
||||
STR_6127 :Archivo: {STRING}
|
||||
STR_6128 :El archivo no se puede cargar ya que algunos de los objetos a los que hace referencia en él faltan o están corruptos. Se muestra un listado de estos objetos:
|
||||
STR_6129 :Copiar elemento seleccionado
|
||||
STR_6130 :Copiar todos los elementos
|
||||
|
||||
##############
|
||||
# Escenarios #
|
||||
|
@ -4547,9 +4577,9 @@ STR_SCNR :Funtopia
|
|||
STR_PARK :Funtopia
|
||||
STR_DTLS :Covering land both sides of a highway, this park has several rides already operating
|
||||
|
||||
<Haunted Harbor>
|
||||
STR_SCNR :Haunted Harbor
|
||||
STR_PARK :Haunted Harbor
|
||||
<Haunted Harbour>
|
||||
STR_SCNR :Haunted Harbour
|
||||
STR_PARK :Haunted Harbour
|
||||
STR_DTLS :The local authority has agreed to sell nearby land cheaply to this small seaside park, on the condition that certain rides are preserved
|
||||
|
||||
<Fun Fortress>
|
||||
|
|
|
@ -3769,7 +3769,7 @@ STR_5426 :Fin
|
|||
STR_5427 :Coordonnées :
|
||||
STR_5428 :Rotations antihoraires :
|
||||
STR_5429 :Niveau de zoom :
|
||||
STR_5430 :Secondes à attendre :
|
||||
STR_5430 :Temps en millisecondes :
|
||||
STR_5431 :Sauvegarde à charger :
|
||||
STR_5432 :Commande :
|
||||
STR_5433 :Séquences de titre
|
||||
|
@ -4410,6 +4410,43 @@ STR_6097 :{STRING} a placé une pièce pour l'attraction '{STRING}'.
|
|||
STR_6098 :{STRING} a détruit une pièce d'attraction.
|
||||
STR_6099 :Vous êtes connecté(e) au serveur.
|
||||
STR_6100 :Vous êtes déconnecté(e) du serveur.
|
||||
STR_6101 :Les attractions ne perdent pas de valeur au fil du temps.
|
||||
STR_6102 :{SMALLFONT}{BLACK}La valeur d'une attraction ne se dégradera pas au fil du temps, les visiteurs ne penseront plus que l'attraction est trop chère.
|
||||
STR_6103 :{SMALLFONT}{BLACK}Cette option est désactivée dans les parties multijoueurs.
|
||||
STR_6111 :Mini-montagnes russes classique
|
||||
|
||||
STR_6104 :Montagnes Russes Tire-Bouchon
|
||||
STR_6105 :Hyper Montagnes Russes
|
||||
STR_6106 :Balade En Voiture
|
||||
STR_6107 :Camions Monstrueux
|
||||
STR_6108 :Tornades Métalliques
|
||||
STR_6109 :Hyper-Tornades
|
||||
STR_6110 :Montagnes Russes Junior
|
||||
STR_6111 :Mini Montagnes Russes Classique
|
||||
STR_6112 :Un montagne russe compact en métal où le train parcourt une série de tire-bouchons et de boucles
|
||||
STR_6113 :Un grand montagne russe non inversé avec de grandes descentes, forte vitesse, et des trains confortables avec une simple ceinture
|
||||
STR_6114 :Les visisteurs parcourent lentement des véhicules alimentés qui suivent un parcours spécifique
|
||||
STR_6115 :Des camions 4 x 4 géants qui peuvent grimper de pentes fortes
|
||||
STR_6116 :Des trains de montagnes russes largent glissent sur un parcours en métal lissé, et parcourent une variété d'inversions
|
||||
STR_6117 :Les visiteurs sont assis dans des trains confortables avec des ceintures simples en se réjouissant de descentes lisses, d'un tracé enroullé et également plein "de temps en l'air" au-dessus des montagnes
|
||||
STR_6118 :Des montagnes russes calmes pour les gens qui n'ont pas le courage de parcourir les plus imposants
|
||||
STR_6119 :Des montagnes russes peu cher et facile à construire, mais avec une hauteur limitée
|
||||
STR_6120 :{BABYBLUE}Nouveau véhicule disponible pour {STRINGID}:{NEWLINE}{STRINGID}
|
||||
|
||||
STR_6121 :{SMALLFONT}{BLACK}Etend les droits de propriété du parc jusqu'aux bords de la carte
|
||||
STR_6122 :Il n'y a pas assez de montagnes russes dans ce scénario !
|
||||
STR_6123 :Erreur lors du chargement des objets pour le parc
|
||||
STR_6124 :Nom de l'objet
|
||||
STR_6125 :Type de l'objet
|
||||
STR_6126 :Type inconnu
|
||||
STR_6127 :Fichier : {STRING}
|
||||
STR_6128 :Le fichier n'a pas pu être chargé car certains d'entre eux qui sont référencés sont soit corrompus ou manquants. Une liste de ces objets est donnée ci-dessous.
|
||||
STR_6129 :Copier les objets sélectionnés dans le presse-papier
|
||||
STR_6130 :Copier la liste entière dans le presse-papier
|
||||
STR_6131 :Source de l'objet
|
||||
STR_6132 :Ignorer le status de la recherche
|
||||
STR_6133 :{SMALLFONT}{BLACK}Accéder au décor et aux attractions qui ne sont pas encore inventés
|
||||
STR_6134 :Effacer le décor
|
||||
|
||||
#############
|
||||
# Scenarios #
|
||||
|
|
|
@ -3771,7 +3771,7 @@ STR_5426 :Fine
|
|||
STR_5427 :Coordinate:
|
||||
STR_5428 :Rotazione Antiorario:
|
||||
STR_5429 :Livello di Zoom:
|
||||
STR_5430 :Secondi di attesa:
|
||||
STR_5430 :Tempo in millisecondi:
|
||||
STR_5431 :Salvataggio da caricare:
|
||||
STR_5432 :Comando:
|
||||
STR_5433 :Sequenza Titoli
|
||||
|
@ -4434,6 +4434,14 @@ STR_6119 :Un piccolo ed economico ottovolante, la cui altezza è limitata
|
|||
STR_6120 :{BABYBLUE}È disponibile un nuovo veicolo per {STRINGID}:{NEWLINE}{STRINGID}
|
||||
STR_6121 :{SMALLFONT}{BLACK}Estende i terreni di proprietà del parco fino ai bordi della mappa
|
||||
STR_6122 :Non ci sono abbastanza ottovolanti in questo scenario!
|
||||
STR_6123 :Errore nel caricamento degli oggetti per il parco
|
||||
STR_6124 :Nome oggetto
|
||||
STR_6125 :Tipo oggetto
|
||||
STR_6126 :Tipo sconosciuto
|
||||
STR_6127 :File: {STRING}
|
||||
STR_6128 :Non è stato possibile caricare il file perché alcuni riferimenti ad oggetti presenti sono corrotti o mancanti. Una lista di tali oggetti è riportata qui di seguito.
|
||||
STR_6129 :Copia oggetto selezionato
|
||||
STR_6130 :Copia l'intera lista di oggetti
|
||||
|
||||
|
||||
#############
|
||||
|
@ -4577,9 +4585,9 @@ STR_SCNR :Funtopia
|
|||
STR_PARK :Funtopia
|
||||
STR_DTLS :Un parco ai bordi di un'autostrada, con alcune attrazioni già operative
|
||||
|
||||
<Haunted Harbor>
|
||||
STR_SCNR :Haunted Harbor
|
||||
STR_PARK :Haunted Harbor
|
||||
<Haunted Harbour>
|
||||
STR_SCNR :Haunted Harbour
|
||||
STR_PARK :Haunted Harbour
|
||||
STR_DTLS :L'autorità locale ha accettato di svendere i terreni confinanti a questo piccolo parco sul mare, a condizione che alcune attrazioni vengano mantenute
|
||||
|
||||
<Fun Fortress>
|
||||
|
|
|
@ -851,7 +851,7 @@ STR_0845 :
|
|||
STR_0846 :
|
||||
STR_0847 :'OpenRCT2'에 대해서
|
||||
STR_0848 :롤러코스터 타이쿤 2
|
||||
STR_0849 :{WINDOW_COLOUR_2}버전 2.01.028
|
||||
STR_0849 :<removed string - do not use>
|
||||
STR_0850 :{WINDOW_COLOUR_2}Copyright {COPYRIGHT} 2002 Chris Sawyer, all rights reserved
|
||||
STR_0851 :{WINDOW_COLOUR_2}디자인 및 프로그래밍: Chris Sawyer
|
||||
STR_0852 :{WINDOW_COLOUR_2}그래픽: Simon Foster
|
||||
|
@ -860,13 +860,13 @@ STR_0854 :{WINDOW_COLOUR_2}추가 효과음 녹음: David Ellis
|
|||
STR_0855 :{WINDOW_COLOUR_2}리프리젠테이션: Marjacq Ltd사의 Jacqui Lyons
|
||||
STR_0856 :{WINDOW_COLOUR_2}감사드릴 분들:
|
||||
STR_0857 :{WINDOW_COLOUR_2}Peter James Adcock, Joe Booth 그리고 John Wardley
|
||||
STR_0858 :{WINDOW_COLOUR_2}
|
||||
STR_0859 :{WINDOW_COLOUR_2}
|
||||
STR_0860 :{WINDOW_COLOUR_2}
|
||||
STR_0861 :
|
||||
STR_0862 :
|
||||
STR_0863 :
|
||||
STR_0864 :
|
||||
STR_0858 :<removed string - do not use>
|
||||
STR_0859 :<removed string - do not use>
|
||||
STR_0860 :<removed string - do not use>
|
||||
STR_0861 :<removed string - do not use>
|
||||
STR_0862 :<removed string - do not use>
|
||||
STR_0863 :<removed string - do not use>
|
||||
STR_0864 :<removed string - do not use>
|
||||
STR_0865 :{STRINGID}
|
||||
STR_0866 :{POP16}{STRINGID}
|
||||
STR_0867 :{POP16}{POP16}{STRINGID}
|
||||
|
@ -890,8 +890,8 @@ STR_0884 :풍경 불러오기
|
|||
STR_0885 :풍경 저장하기
|
||||
STR_0886 :게임 종료하기
|
||||
STR_0887 :시나리오 에디터 종료하기
|
||||
STR_0888 :롤러코스터 디자이너 종료하기
|
||||
STR_0889 :트랙 디자인 매니저 종료하기
|
||||
STR_0888 :트랙 디자이너 종료하기
|
||||
STR_0889 :트랙 디자인 관리자 종료하기
|
||||
STR_0890 :<removed string - do not use>
|
||||
STR_0891 :스크린 샷
|
||||
STR_0892 :스크린 샷이 디스크에 다음 이름으로 저장되었습니다: {STRINGID}
|
||||
|
@ -1660,10 +1660,10 @@ STR_1653 :{SMALLFONT}{OPENQUOTES}...마침내 {STRINGID}에 탔어요!{ENDQUO
|
|||
STR_1654 :{WINDOW_COLOUR_2}최근 생각:
|
||||
STR_1655 :{SMALLFONT}{BLACK}땅 위에 보도 건설
|
||||
STR_1656 :{SMALLFONT}{BLACK}다리나 터널 보도를 건설
|
||||
STR_1657 :{WINDOW_COLOUR_2}좋아하는 놀이기구
|
||||
STR_1658 :{WINDOW_COLOUR_2}격렬도: {BLACK}{COMMA16} 이하
|
||||
STR_1657 :{WINDOW_COLOUR_2}선호하는 놀이기구의
|
||||
STR_1658 :{WINDOW_COLOUR_2}격렬도: {BLACK}{COMMA16} 미만
|
||||
STR_1659 :{WINDOW_COLOUR_2}격렬도: {BLACK}{COMMA16}에서 {COMMA16} 사이
|
||||
STR_1660 :{WINDOW_COLOUR_2}격렬도: {BLACK}{COMMA16} 이상
|
||||
STR_1660 :{WINDOW_COLOUR_2}격렬도: {BLACK}{COMMA16} 초과
|
||||
STR_1661 :{WINDOW_COLOUR_2}멀미 참을성: {BLACK}{STRINGID}
|
||||
STR_1662 :{WINDOW_COLOUR_2}행복도:
|
||||
STR_1663 :{WINDOW_COLOUR_2}멀미도:
|
||||
|
@ -1943,8 +1943,8 @@ STR_1934 :{STRINGID} - {STRINGID}(을)를 떠났습니다
|
|||
STR_1935 :{STRINGID} - 공원을 떠났습니다
|
||||
STR_1936 :{STRINGID} - {STRINGID}(을)를 샀습니다
|
||||
STR_1937 :{SMALLFONT}{BLACK}이 메시지의 주제에 대한 정보를 보여줍니다
|
||||
STR_1938 :{SMALLFONT}{BLACK}손님 주변으로 화면을 이동합니다
|
||||
STR_1939 :{SMALLFONT}{BLACK}직원 주변으로 화면을 이동합니다
|
||||
STR_1938 :{SMALLFONT}{BLACK}손님 주변의 화면을 보여줍니다.
|
||||
STR_1939 :{SMALLFONT}{BLACK}직원 주변의 화면을 보여줍니다.
|
||||
STR_1940 :{SMALLFONT}{BLACK}행복도/에너지/배고픔 등의 수치를 보여줍니다
|
||||
STR_1941 :{SMALLFONT}{BLACK}이용한 놀이기구를 보여줍니다
|
||||
STR_1942 :{SMALLFONT}{BLACK}재정 상황을 보여줍니다
|
||||
|
@ -2302,14 +2302,14 @@ STR_2293 :{BLACK} 없음
|
|||
STR_2294 :{SMALLFONT}{BLACK}땅 표면 모양을 변경합니다
|
||||
STR_2295 :{SMALLFONT}{BLACK}땅의 벽 모양을 변경합니다
|
||||
STR_2296 :{BLACK}{CURRENCY2DP}{WINDOW_COLOUR_2}을 공원 입장료로 썼습니다
|
||||
STR_2297 :{BLACK}{CURRENCY2DP}{WINDOW_COLOUR_2}을 {BLACK}{COMMA16} 놀이기구에 썼습니다
|
||||
STR_2298 :{BLACK}{CURRENCY2DP}{WINDOW_COLOUR_2}을 {BLACK}{COMMA16} 놀이기구에 썼습니다
|
||||
STR_2299 :{BLACK}{CURRENCY2DP}{WINDOW_COLOUR_2}을 음식 {BLACK}{COMMA16}종류에 썼습니다
|
||||
STR_2300 :{BLACK}{CURRENCY2DP}{WINDOW_COLOUR_2}을 음식 {BLACK}{COMMA16}종류에 썼습니다
|
||||
STR_2301 :{BLACK}{CURRENCY2DP}{WINDOW_COLOUR_2}을 음료수 {BLACK}{COMMA16}종류에 썼습니다
|
||||
STR_2302 :{BLACK}{CURRENCY2DP}{WINDOW_COLOUR_2}을 음료수 {BLACK}{COMMA16}종류에 썼습니다
|
||||
STR_2303 :{BLACK}{CURRENCY2DP}{WINDOW_COLOUR_2}을 기념품 {BLACK}{COMMA16}종류에 썼습니다
|
||||
STR_2304 :{BLACK}{CURRENCY2DP}{WINDOW_COLOUR_2}을 기념품 {BLACK}{COMMA16}종류에 썼습니다
|
||||
STR_2297 :{BLACK}{CURRENCY2DP}{WINDOW_COLOUR_2}을 {BLACK}{COMMA16}{WINDOW_COLOUR_2}개의 놀이기구에 썼습니다
|
||||
STR_2298 :{BLACK}{CURRENCY2DP}{WINDOW_COLOUR_2}을 {BLACK}{COMMA16}{WINDOW_COLOUR_2}개의 놀이기구에 썼습니다
|
||||
STR_2299 :{BLACK}{CURRENCY2DP}{WINDOW_COLOUR_2}을 음식 {BLACK}{COMMA16}{WINDOW_COLOUR_2}종류에 썼습니다
|
||||
STR_2300 :{BLACK}{CURRENCY2DP}{WINDOW_COLOUR_2}을 음식 {BLACK}{COMMA16}{WINDOW_COLOUR_2}종류에 썼습니다
|
||||
STR_2301 :{BLACK}{CURRENCY2DP}{WINDOW_COLOUR_2}을 음료수 {BLACK}{COMMA16}{WINDOW_COLOUR_2}종류에 썼습니다
|
||||
STR_2302 :{BLACK}{CURRENCY2DP}{WINDOW_COLOUR_2}을 음료수 {BLACK}{COMMA16}{WINDOW_COLOUR_2}{WINDOW_COLOUR_2}종류에 썼습니다
|
||||
STR_2303 :{BLACK}{CURRENCY2DP}{WINDOW_COLOUR_2}을 기념품 {BLACK}{COMMA16}{WINDOW_COLOUR_2}종류에 썼습니다
|
||||
STR_2304 :{BLACK}{CURRENCY2DP}{WINDOW_COLOUR_2}을 기념품 {BLACK}{COMMA16}{WINDOW_COLOUR_2}종류에 썼습니다
|
||||
STR_2305 :트랙 디자인 파일
|
||||
STR_2306 :트랙 디자인 저장
|
||||
STR_2307 :{STRINGID} 디자인 선택
|
||||
|
@ -2868,7 +2868,7 @@ STR_2856 :{WINDOW_COLOUR_2}튜토리얼
|
|||
STR_2857 :{WINDOW_COLOUR_2}(조작하려면 마우스나 키보드 키를 누르세요)
|
||||
STR_2858 :광고 이벤트를 시작할 수 없습니다...
|
||||
STR_2859 :OpenRCT2 프로그램이 이미 실행 중입니다
|
||||
STR_2860 :Infogrames Interactive 제공...
|
||||
STR_2860 :<removed string - do not use>
|
||||
STR_2861 :{WINDOW_COLOUR_2}Licensed to Infogrames Interactive Inc.
|
||||
STR_2862 :음악 저작권...
|
||||
STR_2863 :음악 저작권
|
||||
|
@ -2916,29 +2916,29 @@ STR_2904 :{WINDOW_COLOUR_2}Manic Mechanic: (Allister Brimble) copyright {CO
|
|||
STR_2905 :{WINDOW_COLOUR_2}Techno Torture: (Allister Brimble) copyright {COPYRIGHT} Chris Sawyer
|
||||
STR_2906 :{WINDOW_COLOUR_2}Sweat Dreams: (Allister Brimble) copyright {COPYRIGHT} Chris Sawyer
|
||||
STR_2907 :{WINDOW_COLOUR_2}What shall we do with the Drunken Sailor: (Anon/Allister Brimble) copyright {COPYRIGHT} Chris Sawyer
|
||||
STR_2908 :{WINDOW_COLOUR_2}Infogrames Interactive
|
||||
STR_2909 :{WINDOW_COLOUR_2}수석 프로듀서: Thomas J. Zahorik
|
||||
STR_2910 :{WINDOW_COLOUR_2}제작 책임자: Bill Levay
|
||||
STR_2911 :{WINDOW_COLOUR_2}수석 마케팅 프로덕트 매니저: Scott Triola
|
||||
STR_2912 :{WINDOW_COLOUR_2}프로덕트 개발 V.P.: Scott Walker
|
||||
STR_2913 :{WINDOW_COLOUR_2}일반 매니저: John Hurlbut
|
||||
STR_2914 :{WINDOW_COLOUR_2}품질 보증 감독: Michael Craighead
|
||||
STR_2915 :{WINDOW_COLOUR_2}Q.A. 인증 매니저: Kurt Boutin
|
||||
STR_2916 :{WINDOW_COLOUR_2}Q.A. 인증 리드: Mark Huggins
|
||||
STR_2917 :{WINDOW_COLOUR_2}테스터: Dena Irene Fitzgerald, Scott Rollins, Christopher McPhail
|
||||
STR_2918 :{WINDOW_COLOUR_2}Clif McClure, Erik Maramaldi, Erik Jeffery
|
||||
STR_2919 :{WINDOW_COLOUR_2}마케팅 감독: Ann Marie Bland
|
||||
STR_2920 :{WINDOW_COLOUR_2}창조형 서비스 매니저: Steve Martin
|
||||
STR_2921 :{WINDOW_COLOUR_2}편집 & 문서 서비스 매니저: Elizabeth Mackney
|
||||
STR_2922 :{WINDOW_COLOUR_2}그래픽 디자이너: Paul Anselmi
|
||||
STR_2923 :{WINDOW_COLOUR_2}카피라이터: Kurt Carlson
|
||||
STR_2924 :{WINDOW_COLOUR_2}감사 인사: Peter Matiss
|
||||
STR_2925 :{WINDOW_COLOUR_2}엔지니어링 스페셜리스트: Ken Edwards
|
||||
STR_2926 :{WINDOW_COLOUR_2}엔지니어링 서비스 매니저: Luis Rivas
|
||||
STR_2927 :{WINDOW_COLOUR_2}리드 적합성 분석: Geoffrey Smith
|
||||
STR_2928 :{WINDOW_COLOUR_2}적합성 분석: Jason Cordero, Burke McQuinn, Kim Jardin
|
||||
STR_2929 :{WINDOW_COLOUR_2}리드 테스터: Daniel Frisoli
|
||||
STR_2930 :{WINDOW_COLOUR_2}수석 테스터: Matt Pantaleoni
|
||||
STR_2908 :<removed string - do not use>
|
||||
STR_2909 :<removed string - do not use>
|
||||
STR_2910 :<removed string - do not use>
|
||||
STR_2911 :<removed string - do not use>
|
||||
STR_2912 :<removed string - do not use>
|
||||
STR_2913 :<removed string - do not use>
|
||||
STR_2914 :<removed string - do not use>
|
||||
STR_2915 :<removed string - do not use>
|
||||
STR_2916 :<removed string - do not use>
|
||||
STR_2917 :<removed string - do not use>
|
||||
STR_2918 :<removed string - do not use>
|
||||
STR_2919 :<removed string - do not use>
|
||||
STR_2920 :<removed string - do not use>
|
||||
STR_2921 :<removed string - do not use>
|
||||
STR_2922 :<removed string - do not use>
|
||||
STR_2923 :<removed string - do not use>
|
||||
STR_2924 :<removed string - do not use>
|
||||
STR_2925 :<removed string - do not use>
|
||||
STR_2926 :<removed string - do not use>
|
||||
STR_2927 :<removed string - do not use>
|
||||
STR_2928 :<removed string - do not use>
|
||||
STR_2929 :<removed string - do not use>
|
||||
STR_2930 :<removed string - do not use>
|
||||
STR_2931 :{WINDOW_COLOUR_2}
|
||||
STR_2932 :{WINDOW_COLOUR_2}
|
||||
STR_2933 :{WINDOW_COLOUR_2}
|
||||
|
@ -3215,8 +3215,8 @@ STR_3203 :개발 목록 설정 화면
|
|||
STR_3204 :설정 선택
|
||||
STR_3205 :목표 선택
|
||||
STR_3206 :시나리오 저장
|
||||
STR_3207 :롤러코스터 디자이너
|
||||
STR_3208 :트랙 디자인 매니저
|
||||
STR_3207 :트랙 디자이너
|
||||
STR_3208 :트랙 디자인 관리자
|
||||
STR_3209 :이전 단계로:
|
||||
STR_3210 :다음 단계로:
|
||||
STR_3211 :지도 크기:
|
||||
|
@ -3343,8 +3343,8 @@ STR_3331 :공원 입구에서 지도 가장자리로 이어지는 길이 이
|
|||
STR_3332 :공원 입구가 잘못된 방향을 향하고 있거나 지도 가장자리로 가는 길이 없습니다
|
||||
STR_3333 :게임 저장시 사용한 오브젝트를 같이 포함하여 저장
|
||||
STR_3334 :{SMALLFONT}{BLACK}필요한 경우 내장된 오브젝트(기본 오브젝트가 아닌 사용자가 추가한 오브젝트)를 게임 저장 파일이나 시나리오 파일 내부에 함께 저장합니다. 이러면 그 추가 오브젝트를 갖고 있지 않은 다른 사람이 이 파일을 불러올 때 자동으로 그 오브젝트를 설치하게 됩니다. 다만 게임 저장 파일 용량이 늘어납니다
|
||||
STR_3335 :롤러코스터 디자이너 - 놀이기구 종류 & 차량을 선택하세요
|
||||
STR_3336 :트랙 디자인 매니저 - 놀이기구 종류를 선택하세요
|
||||
STR_3335 :트랙 디자이너 - 놀이기구 종류 & 차량을 선택하세요
|
||||
STR_3336 :트랙 디자인 관리자 - 놀이기구 종류를 선택하세요
|
||||
STR_3337 :
|
||||
STR_3338 :{BLACK}커스텀 디자인 구조
|
||||
STR_3339 :{BLACK}{COMMA16}개의 디자인, 커스텀 디자인 구조 사용 가능
|
||||
|
@ -3352,8 +3352,8 @@ STR_3340 :{BLACK}{COMMA16}개의 디자인, 커스텀 디자인 구조 사용
|
|||
STR_3341 :{SMALLFONT}{BLACK}게임 도구
|
||||
STR_3342 :시나리오 에디터
|
||||
STR_3343 :저장된 게임을 시나리오로 변환
|
||||
STR_3344 :롤러코스터 디자이너
|
||||
STR_3345 :트랙 디자인 매니저
|
||||
STR_3344 :트랙 디자이너
|
||||
STR_3345 :트랙 디자인 관리자
|
||||
STR_3346 :트랙 디자인을 저장할 수 없습니다...
|
||||
STR_3347 :놀이기구가 너무 큽니다 - 너무 많은 요소를 포함하고 있거나 조형물이 너무 넓게 퍼져 있습니다
|
||||
STR_3348 :이름 바꾸기
|
||||
|
@ -4376,7 +4376,7 @@ STR_6066 :{SMALLFONT}{BLACK}모든 유저의 행동을 사용자 폴더에
|
|||
STR_6067 :서버 시작됨
|
||||
STR_6068 :서버가 종료됨
|
||||
STR_6069 :{STRING}, {STRING}에 의해 서버에서 추방됨
|
||||
STR_6070 :{STRING}, 플레이어 그룹이 '{STRING}'에서 {STRING}(으)로 변경됨
|
||||
STR_6070 :{STRING}, 플레이어 그룹을 '{STRING}'(으)로 변경 (변경자: {STRING})
|
||||
STR_6071 :{STRING}, 새 플레이어 그룹 '{STRING}' 생성
|
||||
STR_6072 :{STRING}, 플레이어 그룹 '{String}' 삭제
|
||||
STR_6073 :{STRING}, 플레이어 그룹 '{String}'의 권한을 수정
|
||||
|
@ -4437,6 +4437,16 @@ STR_6127 :파일: {STRING}
|
|||
STR_6128 :사용된 오브젝트 중에 빠져있거나 손상된 오브젝트를 불러올 수 없습니다. 해당 오브젝트 목록은 아래와 같습니다.
|
||||
STR_6129 :선택한 항목을 클립보드에 복사
|
||||
STR_6130 :전체 목록을 클립보드에 복사
|
||||
STR_6131 :오브젝트 소스
|
||||
STR_6132 :연구 상태 무시
|
||||
STR_6133 :{SMALLFONT}{BLACK}아직 개발되지 않은 놀이기구와 풍경을 사용할 수 있게 만듭니다.
|
||||
STR_6134 :조형물 제거
|
||||
STR_6135 :클라이언트에서 잘못된 요청을 보냈습니다
|
||||
STR_6136 :서버에서 잘못된 요청을 보냈습니다
|
||||
STR_6137 :OpenRCT2 - 롤러코스터 타이쿤 2의 자유 공개 소스 복제품
|
||||
STR_6138 :OpenRCT2는 많은 분들이 참여한 작품입니다. 모든 참여자의 목록은 {OPENQUOTES}contributors.md{ENDQUOTES} 파일을 참고하세요. 더 많은 정보를 원하시면 http://github.com/OpenRCT2/OpenRCT2 를 방문해주세요.
|
||||
STR_6139 :모든 제품과 회사 이름은 해당 소유자의 것입니다. 이러한 제품이나 이름의 사용은 그러한 것들에 대한 제휴나 지지를 뜻하지 않습니다.
|
||||
STR_6140 :변경 기록...
|
||||
|
||||
#############
|
||||
# Scenarios #
|
||||
|
|
|
@ -890,8 +890,8 @@ STR_0884 :Last inn landskap
|
|||
STR_0885 :Lagre landskap
|
||||
STR_0886 :Avslutt spill
|
||||
STR_0887 :Avslutt scenarioeditoren
|
||||
STR_0888 :Avslutt berg-og-dal-banedesigner
|
||||
STR_0889 :Avslutt spordesign-editoren
|
||||
STR_0888 :Avslutt spordesigner
|
||||
STR_0889 :Avslutt spordesign-administratoren
|
||||
STR_0890 :<removed string - do not use>
|
||||
STR_0891 :Skjermbilde
|
||||
STR_0892 :Skjermbilde lagret som '{STRINGID}'
|
||||
|
@ -3214,7 +3214,7 @@ STR_3203 :Invention List Set Up
|
|||
STR_3204 :Options Selection
|
||||
STR_3205 :Objective Selection
|
||||
STR_3206 :Save Scenario
|
||||
STR_3207 :Roller Coaster Designer
|
||||
STR_3207 :Spordesigner
|
||||
STR_3208 :Track Designs Manager
|
||||
STR_3209 :Back to Previous Step:
|
||||
STR_3210 :Forward to Next Step:
|
||||
|
@ -3342,7 +3342,7 @@ STR_3331 :Path from park entrance to map edge either not complete or too comp
|
|||
STR_3332 :Park entrance is the wrong way round or has no path leading to the map edge
|
||||
STR_3333 :Export plug-in objects with saved games
|
||||
STR_3334 :{SMALLFONT}{BLACK}Select whether to save any additional plug-in object data required (add-in data not supplied with the main product) in saved game or scenario files, allowing them to be loaded by someone who doesn't have the additional object data
|
||||
STR_3335 :Roller Coaster Designer - Select Ride Types & Vehicles
|
||||
STR_3335 :Spordesigner - Velg attraksjonstyper og vogner
|
||||
STR_3336 :Track Designs Manager - Select Ride Type
|
||||
STR_3337 :<removed string - do not use>
|
||||
STR_3338 :{BLACK}Custom-designed layout
|
||||
|
@ -3351,7 +3351,7 @@ STR_3340 :{BLACK}{COMMA16} designs available, or custom-designed layout
|
|||
STR_3341 :{SMALLFONT}{BLACK}Game tools
|
||||
STR_3342 :Scenario Editor
|
||||
STR_3343 :Convert Saved Game to Scenario
|
||||
STR_3344 :Roller Coaster Designer
|
||||
STR_3344 :Spordesigner
|
||||
STR_3345 :Track Designs Manager
|
||||
STR_3346 :Can't save track design...
|
||||
STR_3347 :Ride is too large, contains too many elements, or scenery is too spread out
|
||||
|
@ -3768,7 +3768,7 @@ STR_5426 :End
|
|||
STR_5427 :Coordinates:
|
||||
STR_5428 :Anticlockwise rotations:
|
||||
STR_5429 :Zoom level:
|
||||
STR_5430 :Seconds to wait:
|
||||
STR_5430 :Tid i millisekunder:
|
||||
STR_5431 :Save to load:
|
||||
STR_5432 :Command:
|
||||
STR_5433 :Title Sequences
|
||||
|
@ -4368,6 +4368,85 @@ STR_6056 :{SMALLFONT}{BLACK}Demp lyd
|
|||
STR_6057 :{SMALLFONT}{BLACK}Show a separate button for the Mute Option in the toolbar
|
||||
STR_6057 :{SMALLFONT}{BLACK}Vis en separat knapp for lyddemping i verktøylinjen
|
||||
STR_6058 :Demp lyd
|
||||
STR_6059 :{RIGHTGUILLEMET}
|
||||
STR_6060 :Vis gjestenes innkjøp som en animasjon
|
||||
STR_6061 :{SMALLFONT}{BLACK}Show animated money effect{NEWLINE}when guests make purchases.
|
||||
STR_6061 :{SMALLFONT}{BLACK}Vis animert penge-effekt{NEWLINE}når gjester kjøper noe.
|
||||
STR_6062 :{OUTLINE}{GREEN}+ {CURRENCY2DP}
|
||||
STR_6063 :{OUTLINE}{RED}- {CURRENCY2DP}
|
||||
STR_6064 :Ta eierskap av alt land
|
||||
STR_6065 :Loggfør brukerhandlinger
|
||||
STR_6066 :{SMALLFONT}{BLACK}Loggerfører alle brukerhandlinger til filer i din brukerkatalog.
|
||||
STR_6067 :Server startet.
|
||||
STR_6068 :Server skrus av.
|
||||
STR_6069 :{STRING} ble sparket fra serveren av {STRING}.
|
||||
STR_6070 :{STRING} ble satt til gruppe '{STRING}' av {STRING}.
|
||||
STR_6071 :{STRING} laget en ny spillergruppe: '{STRING}'.
|
||||
STR_6072 :{STRING} slettet spillergruppe '{String}'.
|
||||
STR_6073 :{STRING} endret rettigheter for spillergruppe '{String}'.
|
||||
STR_6074 :{STRING} endret navn for spillergruppe '{String}' til '{String}'.
|
||||
STR_6075 :{STRING} endret standard-spillergruppen til '{String}'.
|
||||
STR_6076 :{STRING} brukte eller skrudde av/på juksehandling '{STRING}'.
|
||||
STR_6077 :Legg til penger
|
||||
STR_6078 :{STRING} opprettet attraksjon: '{STRING}'.
|
||||
STR_6079 :{STRING} rev ned attraksjon: '{STRING}'.
|
||||
STR_6080 :{STRING} endret utseende til attraksjon '{STRING}'.
|
||||
STR_6081 :{STRING} endret attraksjonsstatus på '{STRING}' til stengt.
|
||||
STR_6082 :{STRING} endret attraksjonsstatus på '{STRING}' til åpen.
|
||||
STR_6083 :{STRING} endret attraksjonsstatus på '{STRING}' til testing.
|
||||
STR_6084 :{STRING} endret vogninnstillingene på attraksjon '{STRING}'.
|
||||
STR_6085 :{STRING} endret attraksjonsinnstillingene på '{STRING}'.
|
||||
STR_6086 :{STRING} endret navn på attraksjon '{STRING}' til '{STRING}'.
|
||||
STR_6087 :{STRING} endret inngangspris på '{STRING}' til {STRING}
|
||||
STR_6088 :{STRING} endret annen pris på '{STRING}' til {STRING}
|
||||
STR_6089 :{STRING} endret parkens navn fra '{STRING}' til '{STRING}'.
|
||||
STR_6090 :{STRING} åpnet parken.
|
||||
STR_6091 :{STRING} stengte parken.
|
||||
STR_6092 :{STRING} endret parkens inngangspris til {STRING}
|
||||
STR_6093 :{STRING} plasserte nytt pyntelement.
|
||||
STR_6094 :{STRING} fjernet pyntelement.
|
||||
STR_6095 :{STRING} endret pyntelement.
|
||||
STR_6096 :{STRING} satt skiltnavn til '{STRING}'.
|
||||
STR_6097 :{STRING} plasserte et sporelement på attraksjon '{STRING}'.
|
||||
STR_6098 :{STRING} fjernet et sporelement.
|
||||
STR_6099 :Du koblet til serveren.
|
||||
STR_6100 :Du koblet fra serveren.
|
||||
STR_6101 :Attraksjoners verdi synker ikke over tid
|
||||
STR_6102 :{SMALLFONT}{BLACK}Verdien til attraksjoner synker ikke over tid, slik at gjester ikke bestemmer seg for at en attraksjon har for høy inngangspris.
|
||||
STR_6103 :{SMALLFONT}{BLACK}Denne innstillingen er skrudd av for nettverksspill.
|
||||
STR_6104 :Korkskru berg-og-dal-bane
|
||||
STR_6105 :Hyper berg-og-dal-bane
|
||||
STR_6106 :Kjøretur
|
||||
STR_6107 :Monster Trucker
|
||||
STR_6108 :Stål Twister
|
||||
STR_6109 :Hyper-Twister
|
||||
STR_6110 :Junior berg-og-dal-bane
|
||||
STR_6111 :Klassisk Mini-berg-og-dal-bane
|
||||
STR_6112 :En kompakt berg-og-dal-bane i stål, hvor toget går gjennom korkskruer og looper
|
||||
STR_6113 :En høy berg-og-dal-bane som ikke går opp-ned, med høye fall, høy fart og komfortable tog som kun har sikringer over fanget
|
||||
STR_6114 :Passasjerer kjører sakte i selvdrevne kjøretøy langs et spor
|
||||
STR_6115 :Selvdrevne gigantiske firehjulstrucker som kan kjøre opp bratte bakker
|
||||
STR_6116 :Vide berg-og-dal-bane-tog glir langs jevne stålspor, mens de går gjennom et stort utvalg opp-ned-seksjoner
|
||||
STR_6117 :Passasjerer opplever gigantiske jevne fall og vridde spor, samt mye vektløshet over toppene – i komfortable seter med minimalt inntrengende sikringer
|
||||
STR_6118 :En rolig berg-og-dal-bane for dem som ikke enda tør prøve de større attraksjonene
|
||||
STR_6119 :En billig og lettbygd berg-og-dal-bane, men med knapp høydebegrensning
|
||||
STR_6120 :{BABYBLUE}Ny vogn nå tilgjengelig for {STRINGID}:{NEWLINE}{STRINGID}
|
||||
STR_6121 :{SMALLFONT}{BLACK}Utvider parkens landrettigheter til kartets kanter
|
||||
STR_6122 :Det er ikke nok berg-og-dal-baner i dette scenariet!
|
||||
STR_6123 :Feil i lasting av objekter for park
|
||||
STR_6124 :Objektnavn
|
||||
STR_6125 :Objekttype
|
||||
STR_6126 :Ukjent type
|
||||
STR_6127 :Fil: {STRING}
|
||||
STR_6128 :Filen kunne ikke bli lastet, siden noen av objektene den refererer til mangler eller er korrupte. En liste av disse objektene følger.
|
||||
STR_6129 :Kopier valgt element til utklippstavlen
|
||||
STR_6130 :Kopier hele listen til utklippstavlen
|
||||
STR_6131 :Objektkilde
|
||||
STR_6132 :Ignorer forskningsstatus
|
||||
STR_6133 :{SMALLFONT}{BLACK}Gir tilgang til attraksjoner og pynt som ikke har blitt funnet opp enda
|
||||
STR_6134 :Slett pynt
|
||||
STR_6135 :Klient sendte ugyldig forespørsel
|
||||
STR_6136 :Server sendte ugyldig forespørsel
|
||||
|
||||
#############
|
||||
# Scenarios #
|
||||
|
@ -4510,9 +4589,9 @@ STR_SCNR :Funtopia
|
|||
STR_PARK :Funtopia
|
||||
STR_DTLS :Covering land both sides of a highway, this park has several rides already operating
|
||||
|
||||
<Haunted Harbor>
|
||||
STR_SCNR :Haunted Harbor
|
||||
STR_PARK :Haunted Harbor
|
||||
<Haunted Harbour>
|
||||
STR_SCNR :Haunted Harbour
|
||||
STR_PARK :Haunted Harbour
|
||||
STR_DTLS :The local authority has agreed to sell nearby land cheaply to this small seaside park, on the condition that certain rides are preserved
|
||||
|
||||
<Fun Fortress>
|
||||
|
|
|
@ -848,7 +848,7 @@ STR_0845 :<not used anymore>
|
|||
STR_0846 :<not used anymore>
|
||||
STR_0847 :Over 'OpenRCT2'
|
||||
STR_0848 :RollerCoaster Tycoon 2
|
||||
STR_0849 :{WINDOW_COLOUR_2}Versie 2.01.028
|
||||
STR_0849 :<removed string - do not use>
|
||||
STR_0850 :{WINDOW_COLOUR_2}Copyright {COPYRIGHT} 2002 Chris Sawyer, alle rechten voorbehouden
|
||||
STR_0851 :{WINDOW_COLOUR_2}Ontworpen en geprogrammeerd door Chris Sawyer
|
||||
STR_0852 :{WINDOW_COLOUR_2}Grafisch werk door Simon Foster
|
||||
|
@ -857,13 +857,13 @@ STR_0854 :{WINDOW_COLOUR_2}Extra geluiden opgenomen door David Ellis
|
|||
STR_0855 :{WINDOW_COLOUR_2}Representatie door Jacqui Lyons van Marjacq Ltd.
|
||||
STR_0856 :{WINDOW_COLOUR_2}Met dank aan:
|
||||
STR_0857 :{WINDOW_COLOUR_2}Peter James Adcock, Joe Booth en John Wardley
|
||||
STR_0858 :{WINDOW_COLOUR_2}
|
||||
STR_0859 :{WINDOW_COLOUR_2}
|
||||
STR_0860 :{WINDOW_COLOUR_2}
|
||||
STR_0861 :
|
||||
STR_0862 :
|
||||
STR_0863 :
|
||||
STR_0864 :
|
||||
STR_0858 :<removed string - do not use>
|
||||
STR_0859 :<removed string - do not use>
|
||||
STR_0860 :<removed string - do not use>
|
||||
STR_0861 :<removed string - do not use>
|
||||
STR_0862 :<removed string - do not use>
|
||||
STR_0863 :<removed string - do not use>
|
||||
STR_0864 :<removed string - do not use>
|
||||
STR_0865 :{STRINGID}
|
||||
STR_0866 :{POP16}{STRINGID}
|
||||
STR_0867 :{POP16}{POP16}{STRINGID}
|
||||
|
@ -887,7 +887,7 @@ STR_0884 :Landschap laden
|
|||
STR_0885 :Landschap opslaan
|
||||
STR_0886 :Spel afsluiten
|
||||
STR_0887 :Scenariobewerker afsluiten
|
||||
STR_0888 :Achtbaanontwerper afsluiten
|
||||
STR_0888 :Baanontwerper afsluiten
|
||||
STR_0889 :Baanontwerpbeheer afsluiten
|
||||
STR_0890 :<removed string - do not use>
|
||||
STR_0891 :Screenshot
|
||||
|
@ -2862,7 +2862,7 @@ STR_2856 :{WINDOW_COLOUR_2}Tutorial
|
|||
STR_2857 :{WINDOW_COLOUR_2}(Druk op een toets of muisknop om de controle over te nemen)
|
||||
STR_2858 :Kan marketingcampagne niet starten...
|
||||
STR_2859 :OpenRCT2 draait al
|
||||
STR_2860 :Credits voor Infogrames Interactive...
|
||||
STR_2860 :<removed string - do not use>
|
||||
STR_2861 :{WINDOW_COLOUR_2}In licentie gegeven aan {NEWLINE}Infogrames Interactive Inc.
|
||||
STR_2862 :Muziekdankwoord...
|
||||
STR_2863 :Muziekdankwoord
|
||||
|
@ -2910,29 +2910,29 @@ STR_2904 :{WINDOW_COLOUR_2}Manic Mechanic: (Allister Brimble) copyright {CO
|
|||
STR_2905 :{WINDOW_COLOUR_2}Techno Torture: (Allister Brimble) copyright {COPYRIGHT} Chris Sawyer
|
||||
STR_2906 :{WINDOW_COLOUR_2}Sweat Dreams: (Allister Brimble) copyright {COPYRIGHT} Chris Sawyer
|
||||
STR_2907 :{WINDOW_COLOUR_2}What shall we do with the Drunken Sailor: (Anon/Allister Brimble) copyright {COPYRIGHT} Chris Sawyer
|
||||
STR_2908 :{WINDOW_COLOUR_2}Infogrames Interactive
|
||||
STR_2909 :{WINDOW_COLOUR_2}Senior Producer: Thomas J. Zahorik
|
||||
STR_2910 :{WINDOW_COLOUR_2}Executive Producer: Bill Levay
|
||||
STR_2911 :{WINDOW_COLOUR_2}Senior Marketing Product Manager: Scott Triola
|
||||
STR_2912 :{WINDOW_COLOUR_2}V.P. of Product Development: Scott Walker
|
||||
STR_2913 :{WINDOW_COLOUR_2}General Manager: John Hurlbut
|
||||
STR_2914 :{WINDOW_COLOUR_2}Director of Quality Assurance: Michael Craighead
|
||||
STR_2915 :{WINDOW_COLOUR_2}Q.A. Certification Manager: Kurt Boutin
|
||||
STR_2916 :{WINDOW_COLOUR_2}Q.A. Certification Lead: Mark Huggins
|
||||
STR_2917 :{WINDOW_COLOUR_2}Testers: Dena Irene Fitzgerald, Scott Rollins, Christopher McPhail
|
||||
STR_2918 :{WINDOW_COLOUR_2}Clif McClure, Erik Maramaldi, Erik Jeffery
|
||||
STR_2919 :{WINDOW_COLOUR_2}Director of Marketing: Ann Marie Bland
|
||||
STR_2920 :{WINDOW_COLOUR_2}Manager of Creative Services: Steve Martin
|
||||
STR_2921 :{WINDOW_COLOUR_2}Manager of Editorial & Documentation Services: Elizabeth Mackney
|
||||
STR_2922 :{WINDOW_COLOUR_2}Graphic Designer: Paul Anselmi
|
||||
STR_2923 :{WINDOW_COLOUR_2}Copywriter: Kurt Carlson
|
||||
STR_2924 :{WINDOW_COLOUR_2}Special Thanks to: Peter Matiss
|
||||
STR_2925 :{WINDOW_COLOUR_2}Engineering Specialist: Ken Edwards
|
||||
STR_2926 :{WINDOW_COLOUR_2}Engineering Services Manager: Luis Rivas
|
||||
STR_2927 :{WINDOW_COLOUR_2}Lead Compatibility Analyst: Geoffrey Smith
|
||||
STR_2928 :{WINDOW_COLOUR_2}Compatibility Analysts: Jason Cordero, Burke McQuinn, Kim Jardin
|
||||
STR_2929 :{WINDOW_COLOUR_2}Lead Tester: Daniel Frisoli
|
||||
STR_2930 :{WINDOW_COLOUR_2}Senior Tester: Matt Pantaleoni
|
||||
STR_2908 :<removed string - do not use>
|
||||
STR_2909 :<removed string - do not use>
|
||||
STR_2910 :<removed string - do not use>
|
||||
STR_2911 :<removed string - do not use>
|
||||
STR_2912 :<removed string - do not use>
|
||||
STR_2913 :<removed string - do not use>
|
||||
STR_2914 :<removed string - do not use>
|
||||
STR_2915 :<removed string - do not use>
|
||||
STR_2916 :<removed string - do not use>
|
||||
STR_2917 :<removed string - do not use>
|
||||
STR_2918 :<removed string - do not use>
|
||||
STR_2919 :<removed string - do not use>
|
||||
STR_2920 :<removed string - do not use>
|
||||
STR_2921 :<removed string - do not use>
|
||||
STR_2922 :<removed string - do not use>
|
||||
STR_2923 :<removed string - do not use>
|
||||
STR_2924 :<removed string - do not use>
|
||||
STR_2925 :<removed string - do not use>
|
||||
STR_2926 :<removed string - do not use>
|
||||
STR_2927 :<removed string - do not use>
|
||||
STR_2928 :<removed string - do not use>
|
||||
STR_2929 :<removed string - do not use>
|
||||
STR_2930 :<removed string - do not use>
|
||||
STR_2931 :{WINDOW_COLOUR_2}
|
||||
STR_2932 :{WINDOW_COLOUR_2}
|
||||
STR_2933 :{WINDOW_COLOUR_2}
|
||||
|
@ -3209,7 +3209,7 @@ STR_3203 :Uitvindingen instellen
|
|||
STR_3204 :Opties selecteren
|
||||
STR_3205 :Doelstelling selecteren
|
||||
STR_3206 :Scenario opslaan
|
||||
STR_3207 :Achtbaanontwerper
|
||||
STR_3207 :Baanontwerper
|
||||
STR_3208 :Baanontwerpbeheer
|
||||
STR_3209 :Terug naar de vorige stap:
|
||||
STR_3210 :Verder naar de volgende stap:
|
||||
|
@ -3337,7 +3337,7 @@ STR_3331 :Pad van de parkingang naar de rand van de kaart is incompleet of te
|
|||
STR_3332 :Parkingang staat achterstevoren of heeft geen pad naar de rand van de kaart
|
||||
STR_3333 :Plug-inobjecten meeleveren in opgeslagen spellen
|
||||
STR_3334 :{SMALLFONT}{BLACK}Selecteer of toegevoegde (niet-standaard) objecten in opgeslagen spellen en scenario's moeten worden meegeleverd, zodat ze geopend kunnen worden door iemand die deze objecten nog niet heeft
|
||||
STR_3335 :Achtbaanontwerper - Attractietypes en -voertuigen selecteren
|
||||
STR_3335 :Baanontwerper - Attractietypes en -voertuigen selecteren
|
||||
STR_3336 :Baanontwerpbeheer - Attractietype selecteren
|
||||
STR_3337 :<not used anymore>
|
||||
STR_3338 :{BLACK}Eigen ontwerp
|
||||
|
@ -3346,7 +3346,7 @@ STR_3340 :{BLACK}{COMMA16} ontwerpen beschikbaar, of maak een eigen ontwerp
|
|||
STR_3341 :{SMALLFONT}{BLACK}Hulpmiddelen
|
||||
STR_3342 :Scenariobewerker
|
||||
STR_3343 :Opgeslagen spel omzetten naar scenario
|
||||
STR_3344 :Achtbaanontwerper
|
||||
STR_3344 :Baanontwerper
|
||||
STR_3345 :Baanontwerpbeheer
|
||||
STR_3346 :Kan baanontwerp niet opslaan
|
||||
STR_3347 :Attractie is te groot, bevat teveel elementen of het decor is te ver verspreid
|
||||
|
@ -4432,6 +4432,16 @@ STR_6127 :Bestand: {STRING}
|
|||
STR_6128 :Het bestand kon niet geladen worden omdat sommige objecten waar het naar verwijst beschadigd zijn of ontbreken. Hieronder staat een lijst van deze objecten.
|
||||
STR_6129 :Selectie naar klembord kopiëren
|
||||
STR_6130 :Hele lijst naar klembord kopiëren
|
||||
STR_6131 :Afkomst
|
||||
STR_6132 :Uitvindingsstatus negeren
|
||||
STR_6133 :{SMALLFONT}{BLACK}Maakt attracties en decor beschikbaar die nog niet zijn uitgevonden.
|
||||
STR_6134 :Decor verwijderen
|
||||
STR_6135 :Ongeldig verzoek van de client
|
||||
STR_6136 :Ongeldig verzoek van de server
|
||||
STR_6137 :OpenRCT2, een gratis en open source remake van Roller Coaster Tycoon 2.
|
||||
STR_6138 :OpenRCT2 is het werk van velen, een volledige lijst is te vinden in {OPENQUOTES}contributors.md{ENDQUOTES}. Ga naar http://github.com/OpenRCT2/OpenRCT2 voor meer informatie.
|
||||
STR_6139 :Alle product- en bedrijfsnamen zijn eigendom van hun respectieve eigenaren. Het gebruik ervan impliceert geen overeenkomst of goedkeuring.
|
||||
STR_6140 :Wijzigingsoverzicht...
|
||||
|
||||
#############
|
||||
# Scenarios #
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -851,7 +851,7 @@ STR_0845 :<not used anymore>
|
|||
STR_0846 :<not used anymore>
|
||||
STR_0847 :Sobre 'OpenRCT2'
|
||||
STR_0848 :RollerCoaster Tycoon 2
|
||||
STR_0849 :{WINDOW_COLOUR_2}Version 2.01.028
|
||||
STR_0849 :<removed string - do not use>
|
||||
STR_0850 :{WINDOW_COLOUR_2}Copyright {COPYRIGHT} 2002 Chris Sawyer, todos os direitos reservados
|
||||
STR_0851 :{WINDOW_COLOUR_2}Projetado e programado por Chris Sawyer
|
||||
STR_0852 :{WINDOW_COLOUR_2}Gráficos por Simon Foster
|
||||
|
@ -860,13 +860,13 @@ STR_0854 :{WINDOW_COLOUR_2}Sons adicionais gravados por David Ellis
|
|||
STR_0855 :{WINDOW_COLOUR_2}Representação por Jacqui Lyons na Marjacq Ltd.
|
||||
STR_0856 :{WINDOW_COLOUR_2}Obrigado a:
|
||||
STR_0857 :{WINDOW_COLOUR_2}Peter James Adcock, Joe Booth, and John Wardley
|
||||
STR_0858 :{WINDOW_COLOUR_2}
|
||||
STR_0859 :{WINDOW_COLOUR_2}
|
||||
STR_0860 :{WINDOW_COLOUR_2}
|
||||
STR_0861 :
|
||||
STR_0862 :
|
||||
STR_0863 :
|
||||
STR_0864 :
|
||||
STR_0858 :<removed string - do not use>
|
||||
STR_0859 :<removed string - do not use>
|
||||
STR_0860 :<removed string - do not use>
|
||||
STR_0861 :<removed string - do not use>
|
||||
STR_0862 :<removed string - do not use>
|
||||
STR_0863 :<removed string - do not use>
|
||||
STR_0864 :<removed string - do not use>
|
||||
STR_0865 :{STRINGID}
|
||||
STR_0866 :{POP16}{STRINGID}
|
||||
STR_0867 :{POP16}{POP16}{STRINGID}
|
||||
|
@ -890,7 +890,7 @@ STR_0884 :Carregar Paisagem
|
|||
STR_0885 :Salvar Paisagem
|
||||
STR_0886 :Sair do Jogo
|
||||
STR_0887 :Sair do Editor de Cenário
|
||||
STR_0888 :Sair do Construtor de Montanha-Russa
|
||||
STR_0888 :Sair do Construtor de Pista
|
||||
STR_0889 :Sair do Gerenciador de Projetos de Pista
|
||||
STR_0890 :<removed string - do not use>
|
||||
STR_0891 :Captura de tela
|
||||
|
@ -2867,7 +2867,7 @@ STR_2856 :{WINDOW_COLOUR_2}Tutorial
|
|||
STR_2857 :{WINDOW_COLOUR_2}(Pressione uma tecla ou botão do mouse para controlar)
|
||||
STR_2858 :Impossível começar uma campanha de marketing...
|
||||
STR_2859 :Um outro exemplar de OpenRCT2 já está executando
|
||||
STR_2860 :Créditos de Infogrames Interactive...
|
||||
STR_2860 :<removed string - do not use>
|
||||
STR_2861 :{WINDOW_COLOUR_2}Licenciado para Infogrames Interactive Inc.
|
||||
STR_2862 :Reconhecimentos de música...
|
||||
STR_2863 :Reconhecimentos de música
|
||||
|
@ -2915,29 +2915,29 @@ STR_2904 :{WINDOW_COLOUR_2}Manic Mechanic: (Allister Brimble) direitos auto
|
|||
STR_2905 :{WINDOW_COLOUR_2}Techno Torture: (Allister Brimble) direitos autorais {COPYRIGHT} Chris Sawyer
|
||||
STR_2906 :{WINDOW_COLOUR_2}Sweat Dreams: (Allister Brimble) direitos autorais {COPYRIGHT} Chris Sawyer
|
||||
STR_2907 :{WINDOW_COLOUR_2}What shall we do with the Drunken Sailor: (Anon/Allister Brimble) direitos autorais {COPYRIGHT} Chris Sawyer
|
||||
STR_2908 :{WINDOW_COLOUR_2}Infogrames Interactive
|
||||
STR_2909 :{WINDOW_COLOUR_2}Produtor Sênior: Thomas J. Zahorik
|
||||
STR_2910 :{WINDOW_COLOUR_2}Produtor Executivo: Bill Levay
|
||||
STR_2911 :{WINDOW_COLOUR_2}Gerente de Produtos de Marketing Sênior: Scott Triola
|
||||
STR_2912 :{WINDOW_COLOUR_2}Vice-Presidente de Desenvolvimento de Produto: Scott Walker
|
||||
STR_2913 :{WINDOW_COLOUR_2}Gerente Geral: John Hurlbut
|
||||
STR_2914 :{WINDOW_COLOUR_2}Diretor de Garantia de Qualidade: Michael Craighead
|
||||
STR_2915 :{WINDOW_COLOUR_2}Gerente de Certificação de Garantia de Qualidade: Kurt Boutin
|
||||
STR_2916 :{WINDOW_COLOUR_2}Líder de Certificação de Garantia de Qualidade: Mark Huggins
|
||||
STR_2917 :{WINDOW_COLOUR_2}Testadores: Dena Irene Fitzgerald, Scott Rollins, Christopher McPhail
|
||||
STR_2918 :{WINDOW_COLOUR_2}Clif McClure, Erik Maramaldi, Erik Jeffery
|
||||
STR_2919 :{WINDOW_COLOUR_2}Diretor de Marketing: Ann Marie Bland
|
||||
STR_2920 :{WINDOW_COLOUR_2}Gerente de Serviços Criativos: Steve Martin
|
||||
STR_2921 :{WINDOW_COLOUR_2}Gerente de Serviços Editoriais e Documentação: Elizabeth Mackney
|
||||
STR_2922 :{WINDOW_COLOUR_2}Designer Gráfico: Paul Anselmi
|
||||
STR_2923 :{WINDOW_COLOUR_2}Copywriter: Kurt Carlson
|
||||
STR_2924 :{WINDOW_COLOUR_2}Agradecimentos Especiais à: Peter Matiss
|
||||
STR_2925 :{WINDOW_COLOUR_2}Especialista em Engenharia: Ken Edwards
|
||||
STR_2926 :{WINDOW_COLOUR_2}Gerende de Serviços de Engenharia: Luis Rivas
|
||||
STR_2927 :{WINDOW_COLOUR_2}Líder de Análistas de Compatibilidade: Geoffrey Smith
|
||||
STR_2928 :{WINDOW_COLOUR_2}Analistas de Compatibilidade: Jason Cordero, Burke McQuinn, Kim Jardin
|
||||
STR_2929 :{WINDOW_COLOUR_2}Testador Líder: Daniel Frisoli
|
||||
STR_2930 :{WINDOW_COLOUR_2}Testador Sênior: Matt Pantaleoni
|
||||
STR_2908 :<removed string - do not use>
|
||||
STR_2909 :<removed string - do not use>
|
||||
STR_2910 :<removed string - do not use>
|
||||
STR_2911 :<removed string - do not use>
|
||||
STR_2912 :<removed string - do not use>
|
||||
STR_2913 :<removed string - do not use>
|
||||
STR_2914 :<removed string - do not use>
|
||||
STR_2915 :<removed string - do not use>
|
||||
STR_2916 :<removed string - do not use>
|
||||
STR_2917 :<removed string - do not use>
|
||||
STR_2918 :<removed string - do not use>
|
||||
STR_2919 :<removed string - do not use>
|
||||
STR_2920 :<removed string - do not use>
|
||||
STR_2921 :<removed string - do not use>
|
||||
STR_2922 :<removed string - do not use>
|
||||
STR_2923 :<removed string - do not use>
|
||||
STR_2924 :<removed string - do not use>
|
||||
STR_2925 :<removed string - do not use>
|
||||
STR_2926 :<removed string - do not use>
|
||||
STR_2927 :<removed string - do not use>
|
||||
STR_2928 :<removed string - do not use>
|
||||
STR_2929 :<removed string - do not use>
|
||||
STR_2930 :<removed string - do not use>
|
||||
STR_2931 :{WINDOW_COLOUR_2}
|
||||
STR_2932 :{WINDOW_COLOUR_2}
|
||||
STR_2933 :{WINDOW_COLOUR_2}
|
||||
|
@ -3214,7 +3214,7 @@ STR_3203 :Montar Lista de Invenções
|
|||
STR_3204 :Seleção de Opções
|
||||
STR_3205 :Seleção de Objetivos
|
||||
STR_3206 :Salvar Cenário
|
||||
STR_3207 :Construtor de Montanha-Russa
|
||||
STR_3207 :Construtor de Pista
|
||||
STR_3208 :Gerenciador de Projetos de Pista
|
||||
STR_3209 :Voltar para o Passo Anterior:
|
||||
STR_3210 :Avançar para o Próximo Passo:
|
||||
|
@ -3342,7 +3342,7 @@ STR_3331 :Caminho da entrada do parque a borda do mapa incompleta ou muito co
|
|||
STR_3332 :Entrada do parque está ao contrário ou não tem caminho até a borda do mapa
|
||||
STR_3333 :Exportar plug-in de objetos com jogos salvos
|
||||
STR_3334 :{SMALLFONT}{BLACK}Selecione se deve salvar requerimento de qualquer plug-in de objeto adicional (dados adicionais não fornecidos no produto principal) nos dados de jogo salvo ou cenário, permitindo que sejam carregados por alguém que não tenha dados de objeto adicional
|
||||
STR_3335 :Construtor de Montanha-Russa - Selecione o Tipo de Veículo e Atração
|
||||
STR_3335 :Construtor de Pista - Selecione o Tipo de Veículo e Atração
|
||||
STR_3336 :Gerenciador de Projetos de Pista - Selecione o Tipo de Atração
|
||||
STR_3337 :<not used anymore>
|
||||
STR_3338 :{BLACK}Projeto com Traçado Personalizado
|
||||
|
@ -3351,7 +3351,7 @@ STR_3340 :{BLACK}{COMMA16} projetos disponíveis, ou projeto com traçado per
|
|||
STR_3341 :{SMALLFONT}{BLACK}Ferramentas de Jogo
|
||||
STR_3342 :Editor de Cenário
|
||||
STR_3343 :Converter Jogo Salvo em Cenário
|
||||
STR_3344 :Construtor de Montanha-Russa
|
||||
STR_3344 :Construtor de Pista
|
||||
STR_3345 :Gerenciador de Projetos de Pista
|
||||
STR_3346 :Impossível salvar projeto de pista...
|
||||
STR_3347 :Atração é muito grande, contém muitos elementos, ou o cenários é muito espalhado
|
||||
|
@ -3768,7 +3768,7 @@ STR_5426 :Fim
|
|||
STR_5427 :Cordenadas:
|
||||
STR_5428 :Rotações anti-horárias:
|
||||
STR_5429 :Nível de ampliação:
|
||||
STR_5430 :Segundos de espera:
|
||||
STR_5430 :Milissegundos de espera:
|
||||
STR_5431 :Salvar para carregar:
|
||||
STR_5432 :Comando:
|
||||
STR_5433 :Sequências de título
|
||||
|
@ -4439,6 +4439,16 @@ STR_6127 :Arquivo: {STRING}
|
|||
STR_6128 :O arquivo não pode ser carregado pois alguns dos objetos referência dele estão faltando ou corrompidos. Uma lista desses objetos está disponível abaixo.
|
||||
STR_6129 :Copiar itens selecionados para o clipboard
|
||||
STR_6130 :Copiar lista inteira para o clipboard
|
||||
STR_6131 :Fonte do objeto
|
||||
STR_6132 :Ignorar status de pesquisa
|
||||
STR_6133 :{SMALLFONT}{BLACK}Acessa atrações e cenários que ainda não foram inventados
|
||||
STR_6134 :Limpar Cenário
|
||||
STR_6135 :Cliente enviou um pedido inválido
|
||||
STR_6136 :Servidor enviou um pedido inválido
|
||||
STR_6137 :OpenRCT2, um clone grátis e com código aberto do Roller Coaster Tycoon 2
|
||||
STR_6138 :OpenRCT2 é o trabalho de vários autores, a lista completa pode ser encontrada em {OPENQUOTES}contributors.md{ENDQUOTES}. Para mais informações, visite http://github.com/OpenRCT2/OpenRCT2
|
||||
STR_6139 :Todos os nomes de produtos e de empresas pertencem aos seus respectivos proprietários. O uso deles não implica qualquer afiliação ou aprovação por eles.
|
||||
STR_6140 :Changelog...
|
||||
|
||||
#############
|
||||
# Scenarios #
|
||||
|
@ -4581,7 +4591,7 @@ STR_SCNR :Funtopia
|
|||
STR_PARK :Funtopia
|
||||
STR_DTLS :Cobrindo terra em ambos os lados de uma estrada, este parque já tem vários brinquedos em operação.
|
||||
|
||||
<Haunted Harbor>
|
||||
<Haunted Harbour>
|
||||
STR_SCNR :Haunted Harbour
|
||||
STR_PARK :Haunted Harbour
|
||||
STR_DTLS :A autoridade local concordou em vender barato o terreno para este pequeno parque litorâneo, com a condição de que certos brinquedos são preservados.
|
||||
|
|
|
@ -890,7 +890,7 @@ STR_0884 :Ladda Landskap
|
|||
STR_0885 :Spara Landskap
|
||||
STR_0886 :Avsluta Spel
|
||||
STR_0887 :Avsluta Scenarioskaparen
|
||||
STR_0888 :Avsluta Berg- och Dalbanebyggaren
|
||||
STR_0888 :Avsluta Åktur Designer
|
||||
STR_0889 :Avsluta Spårredigeraren
|
||||
STR_0890 :<removed string - do not use>
|
||||
STR_0891 :Skärmdump
|
||||
|
@ -3212,7 +3212,7 @@ STR_3203 :Bygg upp uppfinningslista
|
|||
STR_3204 :Välj Inställningar
|
||||
STR_3205 :Välj Uppdrag
|
||||
STR_3206 :Spara Scenario
|
||||
STR_3207 :Berg- och dalbanedesigner
|
||||
STR_3207 :Åktur Designer
|
||||
STR_3208 :Bandesignhanterare
|
||||
STR_3209 :Tillbaka till tidigare steg:
|
||||
STR_3210 :Vidare till nästa steg:
|
||||
|
@ -3340,7 +3340,7 @@ STR_3331 :Vägen från parkentrén till kartkanten är antingen inte komplett
|
|||
STR_3332 :Parkentrén är åt fel håll eller har ingen väg som leder till kartkanten
|
||||
STR_3333 :Exportera plug-in-objekt med sparade spel
|
||||
STR_3334 :{SMALLFONT}{BLACK}Välj om plug-in objekt (extra objekt som inte följer med basspelet) ska sparas i sparade spel och scenarion, vilket låter spelare importera denna data
|
||||
STR_3335 :Berg- och dalbanedesigner - Välj Åkturstyp & Fordon
|
||||
STR_3335 :Åktur Designer - Välj Åkturstyp & Fordon
|
||||
STR_3336 :Bandesign-hanterare - Välj Åkturstyp
|
||||
STR_3337 :<not used anymore>
|
||||
STR_3338 :{BLACK}Egendesignad layout
|
||||
|
@ -3349,7 +3349,7 @@ STR_3340 :{BLACK}{COMMA16} designer tillgängliga, eller egendesignad layout
|
|||
STR_3341 :{SMALLFONT}{BLACK}Spelverktyg
|
||||
STR_3342 :Scenarioredigerare
|
||||
STR_3343 :Konvertera Sparat Spel till Scenario
|
||||
STR_3344 :Berg- och dalbana-designer
|
||||
STR_3344 :Åktur Designer
|
||||
STR_3345 :Bandesignhanterare
|
||||
STR_3346 :Kan inte spara bandesign...
|
||||
STR_3347 :Åkturen är för stor, innehåller för många delar, eller har för utspridda dekorationer
|
||||
|
@ -4436,6 +4436,12 @@ STR_6127 :Fil: {STRING}
|
|||
STR_6128 :Filen kunde inte laddas eftersom objekt som filen hänvisar till saknas eller är skadade. En lista med dessa objekt visas nedanför.
|
||||
STR_6129 :Kopiera valda föremål till urklipp
|
||||
STR_6130 :Kopiera hela listan till urklipp
|
||||
STR_6131 :Källa för objektet
|
||||
STR_6132 :Ignorera forskning
|
||||
STR_6133 :{SMALLFONT}{BLACK}Ger tillgång till åkturer och dekorationer som inte har blivit uppfunna än
|
||||
STR_6134 :Rensa dekoration
|
||||
STR_6135 :Klient skickade ogiltig begäran
|
||||
STR_6136 :Server skickade ogiltig begäran
|
||||
|
||||
#############
|
||||
# Scenarion #
|
||||
|
@ -4578,9 +4584,9 @@ STR_SCNR :Funtopia
|
|||
STR_PARK :Funtopia
|
||||
STR_DTLS :Utsträckande mark på båda sidor av en motorväg, denna park har ett flertal åkturer igång
|
||||
|
||||
<Haunted Harbor>
|
||||
STR_SCNR :Haunted Harbor
|
||||
STR_PARK :Haunted Harbor
|
||||
<Haunted Harbour>
|
||||
STR_SCNR :Haunted Harbour
|
||||
STR_PARK :Haunted Harbour
|
||||
STR_DTLS :Den lokala myndigheten har godkänt tillåtelse att sälja land i närheten billigt till denna lilla sjösatta park, på villkoret att vissa åkturer är bevarade
|
||||
|
||||
<Fun Fortress>
|
||||
|
|
|
@ -895,7 +895,7 @@ STR_0884 :载入地形
|
|||
STR_0885 :保存地形
|
||||
STR_0886 :退出游戏
|
||||
STR_0887 :退出场景编辑器
|
||||
STR_0888 :退出过山车设计工具
|
||||
STR_0888 :退出轨道设计工具
|
||||
STR_0889 :退出轨道设计管理工具
|
||||
STR_0890 :<removed string - do not use>
|
||||
STR_0891 :截图
|
||||
|
@ -3220,7 +3220,7 @@ STR_3203 :设置研发清单
|
|||
STR_3204 :选取选项
|
||||
STR_3205 :选取目标
|
||||
STR_3206 :存储剧情
|
||||
STR_3207 :过山车设计工具
|
||||
STR_3207 :轨道设计工具
|
||||
STR_3208 :轨道设计管理工具
|
||||
STR_3209 :上一步:
|
||||
STR_3210 :下一步:
|
||||
|
@ -3348,7 +3348,7 @@ STR_3331 :由地图边缘到乐园入口的道路尚未连接好, 或者太
|
|||
STR_3332 :乐园入口倒转了, 或没有道路连接至地图边缘
|
||||
STR_3333 :在存档中导出附加物
|
||||
STR_3334 :{SMALLFONT}{BLACK}Select whether to save any additional plug-in object data required (add-in data not supplied with the main product) in saved game or scenario files, allowing them to be loaded by someone who doesn't have the additional object data
|
||||
STR_3335 :过山车设计工具 - 选择游乐设施的类型及车辆种类
|
||||
STR_3335 :轨道设计工具 - 选择游乐设施的类型及车辆种类
|
||||
STR_3336 :轨道设计管理工具 - 选择游乐设施的类型
|
||||
STR_3337 :<not used anymore>
|
||||
STR_3338 :{BLACK}Custom-designed layout
|
||||
|
@ -3357,7 +3357,7 @@ STR_3340 :{BLACK}{COMMA16} designs available, or custom-designed layout
|
|||
STR_3341 :{SMALLFONT}{BLACK}游戏工具
|
||||
STR_3342 :剧情编辑器
|
||||
STR_3343 :将游戏存档转换成剧情关
|
||||
STR_3344 :过山车设计工具
|
||||
STR_3344 :轨道设计工具
|
||||
STR_3345 :轨道设计管理工具
|
||||
STR_3346 :不能保存轨道设计...
|
||||
STR_3347 :Ride is too large, contains too many elements, or scenery is too spread out
|
||||
|
@ -3774,7 +3774,7 @@ STR_5426 :结束
|
|||
STR_5427 :坐标:
|
||||
STR_5428 :逆时针旋转次数:
|
||||
STR_5429 :放大级别:
|
||||
STR_5430 :等待秒数:
|
||||
STR_5430 :等待毫秒数:
|
||||
STR_5431 :要读取的存档:
|
||||
STR_5432 :命令:
|
||||
STR_5433 :Title Sequences
|
||||
|
@ -4373,7 +4373,82 @@ STR_6055 :OpenRCT2高度图文件
|
|||
STR_6056 :{SMALLFONT}{BLACK}静音
|
||||
STR_6057 :{SMALLFONT}{BLACK}在工具栏为静音选项显示一个单独的按钮
|
||||
STR_6058 :静音
|
||||
|
||||
STR_6059 :{RIGHTGUILLEMET}
|
||||
STR_6060 :将游客的购买行为用动画表现
|
||||
STR_6061 :{SMALLFONT}{BLACK}当游客购买时播放金钱动画效果{NEWLINE}.
|
||||
STR_6062 :{OUTLINE}{GREEN}+ {CURRENCY2DP}
|
||||
STR_6063 :{OUTLINE}{RED}- {CURRENCY2DP}
|
||||
STR_6064 :拥有所有土地
|
||||
STR_6065 :记录用户操作
|
||||
STR_6066 :{SMALLFONT}{BLACK}在你的用户文件夹下用文件记录所有用户的操作.
|
||||
STR_6067 :服务器开启.
|
||||
STR_6068 :服务器关闭.
|
||||
STR_6069 :{STRING} 被{STRING}从服务器踢出.
|
||||
STR_6070 :{STRING} 被设置到组'{STRING}', 通过{STRING}设置.
|
||||
STR_6071 :{STRING} 创建新的玩家组'{STRING}'.
|
||||
STR_6072 :{STRING} 删除玩家组'{String}'.
|
||||
STR_6073 :{STRING} 编辑玩家组'{String}'的权限.
|
||||
STR_6074 :{STRING} 将玩家组名称从'{String}'改名为'{String}'.
|
||||
STR_6075 :{STRING} 设置默认玩家组为'{String}'.
|
||||
STR_6076 :{STRING} 使用/开启作弊'{STRING}'.
|
||||
STR_6077 :增加金钱
|
||||
STR_6078 :{STRING} 建造游乐设施'{STRING}'.
|
||||
STR_6079 :{STRING} 拆除游乐设施'{STRING}'.
|
||||
STR_6080 :{STRING} 改变游乐设施'{STRING}'的外观.
|
||||
STR_6081 :{STRING} 将游乐设施'{STRING}'的状态变为已关闭.
|
||||
STR_6082 :{STRING} 将游乐设施'{STRING}'的状态变为开放中.
|
||||
STR_6083 :{STRING} 将游乐设施'{STRING}'的状态变为测试中.
|
||||
STR_6084 :{STRING} 改变游乐设施'{STRING}'的车辆选项.
|
||||
STR_6085 :{STRING} 改变游乐设施'{STRING}'的设备选项.
|
||||
STR_6086 :{STRING} 将游乐设施'{STRING}'改名为'{STRING}'.
|
||||
STR_6087 :{STRING} 将游乐设施的价格从'{STRING}'调整到{STRING}
|
||||
STR_6088 :{STRING} 将游乐设施的第二价格从'{STRING}'调整到{STRING}
|
||||
STR_6089 :{STRING} 将游乐园名称从'{STRING}'改名为'{STRING}'.
|
||||
STR_6090 :{STRING} 开放游乐园.
|
||||
STR_6091 :{STRING} 关闭游乐园.
|
||||
STR_6092 :{STRING} 将游乐园门票价格调整为{STRING}
|
||||
STR_6093 :{STRING} 放置新景观.
|
||||
STR_6094 :{STRING} 移除景观.
|
||||
STR_6095 :{STRING} 编辑景观.
|
||||
STR_6096 :{STRING} 将指示牌命名为'{STRING}'.
|
||||
STR_6097 :{STRING} 为游乐设施放置一条新轨道'{STRING}'.
|
||||
STR_6098 :{STRING} 移除游乐设施的一条轨道.
|
||||
STR_6099 :你已连接到服务器.
|
||||
STR_6100 :你已从服务器断开.
|
||||
STR_6101 :游乐设施不会随时间流逝而贬值
|
||||
STR_6102 :{SMALLFONT}{BLACK}游乐设施的价值不会随时间流逝而贬值, 因此游客不会产生玩此游乐设施太贵的想法.
|
||||
STR_6103 :{SMALLFONT}{BLACK}此选项在联网模式下被禁用.
|
||||
STR_6104 :螺旋过山车
|
||||
STR_6105 :Hypercoaster
|
||||
STR_6106 :轨道小车
|
||||
STR_6107 :Monster Trucks
|
||||
STR_6108 :钢架旋转式
|
||||
STR_6109 :超旋转式
|
||||
STR_6110 :Junior过山车
|
||||
STR_6111 :经典迷你过山车
|
||||
STR_6112 :一种紧凑的钢制轨道过山车, 其车厢穿越螺旋轨道和回旋轨道
|
||||
STR_6113 :一种高大的非翻转的过山车, 拥有巨大降落, 高速和只有围栏限制的舒适的车厢
|
||||
#TODO 6114
|
||||
STR_6114 :乘客沿轨道缓慢行驶
|
||||
STR_6115 :动力十足的4x4四驱卡车, 可以攀爬陡峭的斜坡
|
||||
STR_6116 :宽阔的过山车车厢沿着光滑的钢轨滑行,穿过各种倒置轨道
|
||||
STR_6117 :坐在舒适的只有简单的围栏护手的车厢中,即可享受巨大落差和旋转轨道,就像在山丘上的大量'空中时光'
|
||||
STR_6118 :对于还没有勇气面对更大游乐设施的人们而言,这是一种温和的过山车
|
||||
STR_6119 :一种廉价且方便建造的过山车, 但是有高度限制
|
||||
STR_6120 :{BABYBLUE}新车辆可用于{STRINGID}:{NEWLINE}{STRINGID}
|
||||
STR_6121 :{SMALLFONT}{BLACK}将游乐园土地所有权扩展至地图边缘
|
||||
STR_6122 :此剧情中没有足够的过山车!
|
||||
STR_6123 :加载错误的游乐园对象
|
||||
STR_6124 :对象名称
|
||||
STR_6125 :对象类型
|
||||
STR_6126 :未知类型
|
||||
STR_6127 :文件: {STRING}
|
||||
STR_6128 :文件不能被加载, 因为其中一部分引用的对象丢失或错误. 以下是这些对象的列表.
|
||||
STR_6129 :将选中的项目复制到剪贴板
|
||||
STR_6130 :将整个列表复制到剪贴板
|
||||
STR_6131 :对象源
|
||||
STR_6132 :忽略研究状态
|
||||
STR_6133 :{SMALLFONT}{BLACK}使用还未被研究出的游乐设施和景观
|
||||
|
||||
|
||||
|
||||
|
@ -4518,9 +4593,9 @@ STR_SCNR :Funtopia
|
|||
STR_PARK :Funtopia
|
||||
STR_DTLS :Covering land both sides of a highway, this park has several rides already operating
|
||||
|
||||
<Haunted Harbor>
|
||||
STR_SCNR :Haunted Harbor
|
||||
STR_PARK :Haunted Harbor
|
||||
<Haunted Harbour>
|
||||
STR_SCNR :Haunted Harbour
|
||||
STR_PARK :Haunted Harbour
|
||||
STR_DTLS :The local authority has agreed to sell nearby land cheaply to this small seaside park, on the condition that certain rides are preserved
|
||||
|
||||
<Fun Fortress>
|
||||
|
|
|
@ -4389,46 +4389,46 @@ STR_6076 :{STRING} 使用/開啟了密技 '{STRING}'.
|
|||
STR_6077 :添加金錢
|
||||
STR_6078 :{STRING} 建造了遊樂設施 '{STRING}'.
|
||||
STR_6079 :{STRING} 拆除了遊樂設施 '{STRING}'.
|
||||
STR_6080 :{STRING} changed the appearance of ride '{STRING}'.
|
||||
STR_6081 :{STRING} changed the status of ride '{STRING}' to closed.
|
||||
STR_6082 :{STRING} changed the status of ride '{STRING}' to open.
|
||||
STR_6083 :{STRING} changed the status of ride '{STRING}' to testing.
|
||||
STR_6084 :{STRING} changed the vehicle settings of ride '{STRING}'.
|
||||
STR_6085 :{STRING} changed the ride settings of ride '{STRING}'.
|
||||
STR_6086 :{STRING} renamed the ride '{STRING}' to '{STRING}'.
|
||||
STR_6087 :{STRING} changed the price of ride '{STRING}' to {STRING}
|
||||
STR_6088 :{STRING} changed the secondary price of ride '{STRING}' to {STRING}
|
||||
STR_6089 :{STRING} renamed the park from '{STRING}' to '{STRING}'.
|
||||
STR_6090 :{STRING} opened the park.
|
||||
STR_6091 :{STRING} closed the park.
|
||||
STR_6092 :{STRING} changed the park entrance fee to {STRING}
|
||||
STR_6093 :{STRING} placed new scenery.
|
||||
STR_6094 :{STRING} removed scenery.
|
||||
STR_6095 :{STRING} edited scenery.
|
||||
STR_6096 :{STRING} set sign name to '{STRING}'.
|
||||
STR_6097 :{STRING} placed a track of ride '{STRING}'.
|
||||
STR_6098 :{STRING} removed a track of ride.
|
||||
STR_6080 :{STRING} 更改了遊樂設施 '{STRING}' 的外觀.
|
||||
STR_6081 :{STRING} 關閉了遊樂設施 '{STRING}'.
|
||||
STR_6082 :{STRING} 開啟了遊樂設施 '{STRING}'.
|
||||
STR_6083 :{STRING} 測試了遊樂設施 '{STRING}'.
|
||||
STR_6084 :{STRING} 更改了遊樂設施 '{STRING}' 的車輛設置.
|
||||
STR_6085 :{STRING} 更改了遊樂設施 '{STRING}' 的運行設置.
|
||||
STR_6086 :{STRING} 將遊樂設施 '{STRING}' 重命名至 '{STRING}'.
|
||||
STR_6087 :{STRING} 將遊樂設施 '{STRING}' 的價錢調整至 {STRING}
|
||||
STR_6088 :{STRING} 將遊樂設施 '{STRING}' 的額外價錢調整至 {STRING}
|
||||
STR_6089 :{STRING} 將樂園 '{STRING}' 重命名至 '{STRING}'.
|
||||
STR_6090 :{STRING} 開啟了樂園.
|
||||
STR_6091 :{STRING} 關啟了樂園.
|
||||
STR_6092 :{STRING} 將樂園的入場費調整至 {STRING}
|
||||
STR_6093 :{STRING} 放置了新的景物.
|
||||
STR_6094 :{STRING} 移除了景物.
|
||||
STR_6095 :{STRING} 修改了景物.
|
||||
STR_6096 :{STRING} 將橫額重命名至 '{STRING}'.
|
||||
STR_6097 :{STRING} 於遊樂設施'{STRING}' 中添加了路軌.
|
||||
STR_6098 :{STRING} 移除了某個遊樂設施中的路軌.
|
||||
STR_6099 :你已連接到伺服器.
|
||||
STR_6100 :你已由伺服器中斷線.
|
||||
STR_6101 :遊樂設施的價值不會因隨時間下降
|
||||
STR_6102 :{SMALLFONT}{BLACK}遊樂設施的價值再不會因隨時間下降, 因此遊客並不會突然有'不想花那麼多錢乘坐某個遊樂設施'的想法.
|
||||
STR_6101 :遊樂設施的價值不會因隨時間折舊
|
||||
STR_6102 :{SMALLFONT}{BLACK}遊樂設施的價值再不會因隨時間折舊, 因此遊客並不會突然有'不想花那麼多錢乘坐某個遊樂設施'的想法.
|
||||
STR_6103 :{SMALLFONT}{BLACK}此選項於多人模式下被禁用.
|
||||
STR_6104 :Corkscrew Roller Coaster
|
||||
STR_6105 :Hypercoaster
|
||||
STR_6106 :Car Ride
|
||||
STR_6107 :Monster Trucks
|
||||
STR_6108 :Steel Twister
|
||||
STR_6109 :Hyper-Twister
|
||||
STR_6110 :Junior Roller Coaster
|
||||
STR_6111 :Classic Mini Roller Coaster
|
||||
STR_6112 :A compact steel-tracked roller coaster where the train travels through corkscrews and loops
|
||||
STR_6113 :A tall non-inverting roller coaster with large drops, high speed, and comfortable trains with only lap bar restraints
|
||||
STR_6114 :Riders travel slowly in powered vehicles along a track-based route
|
||||
STR_6115 :Powered giant 4 x 4 trucks which can climb steep slopes
|
||||
STR_6116 :Wide roller coaster trains glide along smooth steel track, traveling through a variety of inversions
|
||||
STR_6117 :Sitting in comfortable trains with only simple lap restraints riders enjoy giant smooth drops and twisting track as well as plenty of 'air time' over the hills
|
||||
STR_6118 :A gentle roller coaster for people who haven't yet got the courage to face the larger rides
|
||||
STR_6119 :A cheap and easy to build roller coaster, but with a limited height
|
||||
STR_6104 :瓶塞鑽式雲霄飛車
|
||||
STR_6105 :超級雲霄飛車
|
||||
STR_6106 :自駕軌道車輛
|
||||
STR_6107 :怪獸卡車
|
||||
STR_6108 :鐵架旋轉式雲霄飛車
|
||||
STR_6109 :超級旋轉式
|
||||
STR_6110 :兒童雲霄飛車
|
||||
STR_6111 :經典式迷你雲霄飛車
|
||||
STR_6112 :一款列車會穿過螺旋及迴環的較小型雲霄飛車
|
||||
STR_6113 :一款又高速又巨大但不倒轉發車的雲霄飛車, 擁有很高的下落軌道, 舒適但只有簡單大腿式安全裝備的列車
|
||||
STR_6114 :乘客會坐在有動力的車輛內, 慢慢地依照軌道路線遊覽
|
||||
STR_6115 :有動力並可以駕駛於陡斜的斜坡上的4 x 4卡車
|
||||
STR_6116 :寬闊的雲霄飛車列車不費吹灰之力穿梭於順滑的金屬軌道上的各種倒轉軌道
|
||||
STR_6117 :乘客坐在舒適並只有簡單安全裝備的列車上享受巨大而順滑的下滑, 扭曲的軌道和充足的'空中'時間
|
||||
STR_6118 :一款較溫和的雲霄飛車, 設計給不敢乘坐雲霄飛車的乘客壯膽
|
||||
STR_6119 :一款便宜又易於建造的雲霄飛車, 但亦因此只有著高度的限制
|
||||
STR_6120 :{BABYBLUE}全新車廂種類可供使用於{STRINGID}:{NEWLINE}{STRINGID}
|
||||
STR_6121 :{SMALLFONT}{BLACK}擴張樂園的土地擁有權到整個地圖的邊界
|
||||
STR_6122 :此劇情沒有足夠的雲霄飛車!
|
||||
|
@ -4737,7 +4737,7 @@ STR_DTLS :此樂園設定於一個沉睡火山口的湖之上
|
|||
<Vertigo Views>
|
||||
STR_SCNR :Vertigo Views
|
||||
STR_PARK :Vertigo Views
|
||||
STR_DTLS :這個大型的樂園已經擁有一座很棒的Hyper式雲霄飛車, 但你的任務是要將他的利潤大幅增加
|
||||
STR_DTLS :這個大型的樂園已經擁有一座很棒的超級雲霄飛車, 但你的任務是要將他的利潤大幅增加
|
||||
|
||||
<Paradise Pier 2>
|
||||
STR_SCNR :Paradise Pier 2
|
||||
|
|
|
@ -1,5 +1,10 @@
|
|||
#version 150
|
||||
|
||||
const int FLAG_COLOUR = (1 << 0);
|
||||
const int FLAG_REMAP = (1 << 1);
|
||||
const int FLAG_TRANSPARENT = (1 << 2);
|
||||
const int FLAG_TRANSPARENT_SPECIAL = (1 << 3);
|
||||
|
||||
uniform vec4 uPalette[256];
|
||||
uniform usampler2DArray uTexture;
|
||||
|
||||
|
@ -30,13 +35,13 @@ void main()
|
|||
vec4 texel;
|
||||
|
||||
// If remap palette used
|
||||
if ((fFlags & (1 << 1)) != 0)
|
||||
if ((fFlags & FLAG_REMAP) != 0)
|
||||
{
|
||||
// z is the size of each x pixel in the atlas
|
||||
float x = fTexPaletteBounds.x + texture(uTexture, vec3(fTexColourCoords, float(fTexColourAtlas))).r * fTexPaletteBounds.z;
|
||||
texel = uPalette[texture(uTexture, vec3(x, fTexPaletteBounds.y, float(fTexPaletteAtlas))).r];
|
||||
} // If transparent or special transparent
|
||||
else if ((fFlags & ((1 << 2) | (1 << 3))) != 0)
|
||||
else if ((fFlags & (FLAG_TRANSPARENT | FLAG_TRANSPARENT_SPECIAL)) != 0)
|
||||
{
|
||||
float line = texture(uTexture,vec3(fTexColourCoords, float(fTexColourAtlas))).r;
|
||||
if (line == 0.0)
|
||||
|
@ -44,7 +49,7 @@ void main()
|
|||
discard;
|
||||
}
|
||||
float alpha = 0.5;
|
||||
if ((fFlags & (1 << 2)) != 0)
|
||||
if ((fFlags & FLAG_TRANSPARENT_SPECIAL) != 0)
|
||||
{
|
||||
alpha = 0.5 + (line - 1.0) / 10.0;
|
||||
}
|
||||
|
@ -59,15 +64,20 @@ void main()
|
|||
{
|
||||
texel = uPalette[texture(uTexture, vec3(fTexColourCoords, float(fTexColourAtlas))).r];
|
||||
}
|
||||
vec4 mask = uPalette[texture(uTexture, vec3(fTexMaskCoords, float(fTexMaskAtlas))).r];
|
||||
|
||||
if (fMask != 0)
|
||||
{
|
||||
oColour = texel * mask;
|
||||
float mask = texture(uTexture, vec3(fTexMaskCoords, float(fTexMaskAtlas))).r;
|
||||
if ( mask == 0.0 )
|
||||
{
|
||||
discard;
|
||||
}
|
||||
|
||||
oColour = texel;
|
||||
}
|
||||
else
|
||||
{
|
||||
if ((fFlags & 1) != 0)
|
||||
if ((fFlags & FLAG_COLOUR) != 0)
|
||||
{
|
||||
oColour = vec4(fColour.rgb, fColour.a * texel.a);
|
||||
}
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
openrct2 (0.1.0-develop-1) unstable; urgency=medium
|
||||
openrct2 (0.1.1-develop-1) unstable; urgency=medium
|
||||
|
||||
* Release 2017-07 (Closes: #XXXXXX)
|
||||
|
||||
|
|
|
@ -1,3 +1,46 @@
|
|||
0.1.1 (in development)
|
||||
------------------------------------------------------------------------
|
||||
- Feature: [#5815] Add cheat to ignore research status and access rides/scenery not yet invented.
|
||||
- Feature: [#5857] Keyboard shortcut for clear scenery.
|
||||
- Feature: [#5877] Allow up to 16 stations to be synchronised
|
||||
- Feature: [#5970] The Bobsleigh Roller Coaster now supports on-ride photos.
|
||||
- Feature: [#5991] Allow all tracked rides that can be tested without guests to the Track Designer
|
||||
- Fix: [#2127, #2229, #5586] Mountain tool cost calculation
|
||||
- Fix: [#3589] Crash due to invalid footpathEntry in path_paint
|
||||
- Fix: [#3852] Constructing path not clearing scenery on server.
|
||||
- Fix: [#4455] Crash in window_sign_invalidate due to original bug
|
||||
- Fix: [#4715] Fix OpenGL rendering of water when zoomed. See #5890.
|
||||
- Fix: [#4931] Crash in path_paint - footpathentry was null
|
||||
- Fix: [#5629] Issue with tower ride modes approach to station - incorrect sum caused sawtooth in velocity
|
||||
- Fix: [#5768] Prevent loading non-existent title sequences.
|
||||
- Fix: [#5858] Crash when using custom ride with no colour presets.
|
||||
- Fix: [#5865] Ride preview flickering on uneven terrain or mid air.
|
||||
- Fix: [#5872] Incorrect OpenGL rendering of masked sprites
|
||||
- Fix: [#5880] Leaving bumper cars without building causes assertion.
|
||||
- Fix: [#5890] Fix zoomed OpenGL rendering of special sprites with primary and secondary colours.
|
||||
- Fix: [#5912] Negative queue when moving entrance in paused state.
|
||||
- Fix: [#5920] Placing guest spawn doesn't do anything every 3rd click
|
||||
- Fix: [#5939] Crash when importing 'Six Flags Santa Fe'.
|
||||
- Fix: [#5977] Custom music files not showing up in music list
|
||||
- Fix: [#5981] Ride list doesn't update after using quick demolish.
|
||||
- Fix: [#5984] Allow socket binding to same port after crash
|
||||
- Fix: [#5998] Staff not getting paid / no loan interest.
|
||||
- Fix: [#6026] 'Select ride to advertise' dropdown does not display all items.
|
||||
- Fix: [#6052] Unable to place entrance/exit on certain ride types.
|
||||
- Fix: [#6071] Quick demolish can delete protected ride.
|
||||
- Fix: [#6111] Mute button always visible in editor.
|
||||
- Fix: [#6113] Track preview shows incorrect highest drop height.
|
||||
- Improved: [#2223] Change mountain tool to ignore higher surrounding tiles.
|
||||
- Improved: [#4301] Leading and trailing whitespace in player name is now removed.
|
||||
- Improved: [#5859] OpenGL rendering performance
|
||||
- Improved: [#5863] Switching drawing engines no longer requires the application to restart.
|
||||
- Improved: [#6003] Doors placed on tracks will now work with all vehicles
|
||||
- Improved: [#6037] Autosaves are now stored in a subfolder
|
||||
- Improved: The land tool buttons can now be held down to increase/decrease size.
|
||||
- Improved: Dropdowns longer than 32 items overflow into columns.
|
||||
- Improved: Ride Type option in ride window is now a dropdown.
|
||||
- Improved: "About OpenRCT2" window redesigned, now contains OpenRCT2 info and access to changelog
|
||||
|
||||
0.1.0 (2017-07-12)
|
||||
------------------------------------------------------------------------
|
||||
- Feature: [#1399 (partial), #5177] Add window that displays any missing/corrupt objects when loading a park
|
||||
|
|
|
@ -13,7 +13,7 @@
|
|||
<key>CFBundlePackageType</key>
|
||||
<string>APPL</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>0.1.0</string>
|
||||
<string>0.1.1</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>ORCT</string>
|
||||
<key>LSMinimumSystemVersion</key>
|
||||
|
|
|
@ -28,6 +28,7 @@
|
|||
|
||||
<ItemDefinitionGroup>
|
||||
<ClCompile>
|
||||
<WarningLevel>Level4</WarningLevel>
|
||||
<DisableSpecificWarnings>4068;4091;4100;4132;4200;4201;4204;4206;4221;4244;4245;%(DisableSpecificWarnings)</DisableSpecificWarnings>
|
||||
<!-- Warnings:
|
||||
C4068: unknown pragma
|
||||
|
@ -42,12 +43,19 @@
|
|||
C4244: 'conversion_type': conversion from 'type1' to 'type2', possible loss of data
|
||||
C4245: 'conversion_type': conversion from 'type1' to 'type2', signed/unsigned mismatch
|
||||
-->
|
||||
<WarningLevel>Level4</WarningLevel>
|
||||
<TreatSpecificWarningsAsErrors>4263;4265;4548;4549;4555</TreatSpecificWarningsAsErrors>
|
||||
<!-- Warnings, that have to be enabled manually:
|
||||
C4263: 'function': member function does not override any base class virtual member function
|
||||
C4265: 'class': class has virtual functions, but destructor is not virtual
|
||||
C4548: expression before comma has no effect; expected expression with side-effect
|
||||
C4549: 'operator': operator before comma has no effect; did you intend 'operator'?
|
||||
C4555: expression has no effect; expected expression with side-effect
|
||||
-->
|
||||
<PreprocessorDefinitions>NO_RCT2;OPENGL_NO_LINK;_CRT_SECURE_NO_WARNINGS;_USE_MATH_DEFINES;CURL_STATICLIB;SDL_MAIN_HANDLED;_WINSOCK_DEPRECATED_NO_WARNINGS;ZIP_STATIC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
||||
<TreatWarningAsError>true</TreatWarningAsError>
|
||||
<AdditionalOptions>/utf-8 /std:c++latest</AdditionalOptions>
|
||||
<AdditionalOptions>/utf-8 /std:c++latest /permissive-</AdditionalOptions>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>imm32.lib;version.lib;winmm.lib;crypt32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
|
@ -76,7 +84,7 @@
|
|||
<SDLCheck />
|
||||
<OmitFramePointers />
|
||||
<BufferSecurityCheck>false</BufferSecurityCheck>
|
||||
<PreprocessorDefinitions>%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
|
|
|
@ -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.0</Version>
|
||||
<Version>0.1.1</Version>
|
||||
<VersionExtra Condition="'$(GIT_BRANCH)'!=''">-$(GIT_BRANCH)-$(GIT_COMMIT_SHA1_SHORT)</VersionExtra>
|
||||
<VersionExtra Condition="'$(GIT_TAG)'!=''"></VersionExtra>
|
||||
<TargetLibsVersion>12</TargetLibsVersion>
|
||||
|
|
|
@ -14,49 +14,48 @@ mkdir -p $cachedir
|
|||
|
||||
# Sets default target to "linux", if none specified
|
||||
TARGET=${TARGET-linux}
|
||||
SYSTEM=$(uname -s)
|
||||
|
||||
if [[ ! -d build ]]; then
|
||||
mkdir -p build
|
||||
fi
|
||||
|
||||
pushd build
|
||||
echo OPENRCT2_CMAKE_OPTS = $OPENRCT2_CMAKE_OPTS
|
||||
echo OPENRCT2_CMAKE_OPTS = "$OPENRCT2_CMAKE_OPTS"
|
||||
if [[ $TARGET == "docker32" ]]
|
||||
then
|
||||
PARENT=$(readlink -f ../)
|
||||
chmod a+rwx $(pwd)
|
||||
chmod g+s $(pwd)
|
||||
chmod a+rwx "$(pwd)"
|
||||
chmod g+s "$(pwd)"
|
||||
# CMAKE and MAKE opts from environment
|
||||
docker run -u travis -v $PARENT:$PARENT -w $PARENT/build -i -t openrct2/openrct2:32bit-only bash -c "cmake ../ -DFORCE32=on $OPENRCT2_CMAKE_OPTS && make $OPENRCT_MAKE_OPTS"
|
||||
docker run -u travis -v "$PARENT":"$PARENT" -w "$PARENT"/build -i -t openrct2/openrct2:32bit-only bash -c "cmake ../ -DFORCE32=on $OPENRCT2_CMAKE_OPTS && make $OPENRCT_MAKE_OPTS"
|
||||
elif [[ $TARGET == "docker64" ]]
|
||||
then
|
||||
PARENT=$(readlink -f ../)
|
||||
chmod a+rwx $(pwd)
|
||||
chmod g+s $(pwd)
|
||||
chmod a+rwx "$(pwd)"
|
||||
chmod g+s "$(pwd)"
|
||||
# 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 && make $OPENRCT_MAKE_OPTS && make test ARGS=\"-V\""
|
||||
docker run -v "$PARENT":"$PARENT" -w "$PARENT"/build -i -t openrct2/openrct2:64bit-only bash -c "cmake ../ -DWITH_TESTS=on $OPENRCT2_CMAKE_OPTS && make $OPENRCT_MAKE_OPTS && make test ARGS=\"-V\""
|
||||
elif [[ $TARGET == "ubuntu_i686" ]]
|
||||
then
|
||||
PARENT=$(readlink -f ../)
|
||||
chmod a+rwx $(pwd)
|
||||
chmod g+s $(pwd)
|
||||
chmod a+rwx "$(pwd)"
|
||||
chmod g+s "$(pwd)"
|
||||
# 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 && make all testpaint install $OPENRCT_MAKE_OPTS && make test ARGS=\"-V\" && ( ./testpaint --quiet || if [[ \$? -eq 1 ]] ; then echo Allowing failed tests to pass ; else echo here ; false; fi )"
|
||||
docker run -v "$PARENT":"$PARENT" -w "$PARENT"/build -i -t openrct2/openrct2:ubuntu_i686 bash -c "cmake ../ -DWITH_TESTS=on $OPENRCT2_CMAKE_OPTS && make all testpaint install $OPENRCT_MAKE_OPTS && make test ARGS=\"-V\" && ( ./testpaint --quiet || if [[ \$? -eq 1 ]] ; then echo Allowing failed tests to pass ; else echo here ; false; fi )"
|
||||
elif [[ $TARGET == "ubuntu_amd64" ]]
|
||||
then
|
||||
PARENT=$(readlink -f ../)
|
||||
chmod a+rwx $(pwd)
|
||||
chmod g+s $(pwd)
|
||||
chmod a+rwx "$(pwd)"
|
||||
chmod g+s "$(pwd)"
|
||||
# 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 && make $OPENRCT_MAKE_OPTS install && make test ARGS=\"-V\""
|
||||
docker run -v "$PARENT":"$PARENT" -w "$PARENT"/build -i -t openrct2/openrct2:ubuntu_amd64 bash -c "cmake ../ -DWITH_TESTS=on $OPENRCT2_CMAKE_OPTS && make $OPENRCT_MAKE_OPTS install && make test ARGS=\"-V\""
|
||||
elif [[ $TARGET == "windows" ]]
|
||||
then
|
||||
PARENT=$(readlink -f ../)
|
||||
chmod a+rwx $(pwd)
|
||||
chmod g+s $(pwd)
|
||||
chmod a+rwx "$(pwd)"
|
||||
chmod g+s "$(pwd)"
|
||||
# CMAKE and MAKE opts from environment
|
||||
docker run -v $PARENT:$PARENT -w $PARENT/build -i -t openrct2/openrct2:mingw-arch bash -c "cmake ../ $OPENRCT2_CMAKE_OPTS && make $OPENRCT_MAKE_OPTS"
|
||||
docker run -v "$PARENT":"$PARENT" -w "$PARENT"/build -i -t openrct2/openrct2:mingw-arch bash -c "cmake ../ $OPENRCT2_CMAKE_OPTS && make $OPENRCT_MAKE_OPTS"
|
||||
else
|
||||
echo "Unkown target $TARGET"
|
||||
exit 1
|
||||
|
|
|
@ -7,9 +7,6 @@ then
|
|||
exit 1
|
||||
fi
|
||||
|
||||
SDL2_PV=2.0.3
|
||||
SDL2_TTF_PV=2.0.12
|
||||
|
||||
cachedir=.cache
|
||||
if [[ $(uname -s) == "Darwin" ]]; then
|
||||
liburl=https://openrct2.website/files/orctlibs-osx.zip
|
||||
|
@ -20,9 +17,6 @@ mkdir -p "$cachedir"
|
|||
|
||||
# Sets default target to "ubuntu_amd64", if none specified
|
||||
TARGET=${TARGET-ubuntu_amd64}
|
||||
# keep in sync with version in build.sh
|
||||
libversion=3
|
||||
libVFile="./libversion"
|
||||
|
||||
function has_cmd {
|
||||
command -v "$1" >/dev/null 2>&1
|
||||
|
|
|
@ -3,9 +3,9 @@
|
|||
###########################################
|
||||
|
||||
$nottesting = (${env:Configuration} -notlike "*tests")
|
||||
# Only deploy from VS2015 for now.
|
||||
$notvs2017 = (${env:APPVEYOR_JOB_NAME} -notlike "*2017*")
|
||||
if ($nottesting -and $notvs2017)
|
||||
# Only deploy from VS2017 for now.
|
||||
$notvs2015 = (${env:APPVEYOR_JOB_NAME} -notlike "*2015*")
|
||||
if ($nottesting -and $notvs2015)
|
||||
{
|
||||
# Check if OpenRCT2.org API security token is available
|
||||
if (${env:OPENRCT2_ORG_TOKEN})
|
||||
|
|
|
@ -10,7 +10,7 @@ android {
|
|||
targetSdkVersion 25
|
||||
|
||||
versionCode 2
|
||||
versionName '0.1.0'
|
||||
versionName '0.1.1'
|
||||
|
||||
externalNativeBuild {
|
||||
cmake {
|
||||
|
@ -83,7 +83,7 @@ android.applicationVariants.all { variant ->
|
|||
dest "$variant.mergeAssets.outputDir/data"
|
||||
}
|
||||
download {
|
||||
src 'https://github.com/OpenRCT2/title-sequences/releases/download/v0.0.5/title-sequence-v0.0.5.zip'
|
||||
src 'https://github.com/OpenRCT2/title-sequences/releases/download/v0.1.0/title-sequence-v0.1.0.zip'
|
||||
dest new File(buildDir, 'title-sequence.zip')
|
||||
}
|
||||
copy {
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
# CMAKE project for openrct2-cli (CLI-only build of OpenRCT2)
|
||||
cmake_minimum_required(VERSION 2.6)
|
||||
cmake_minimum_required(VERSION 3.1)
|
||||
if (CMAKE_BINARY_DIR STREQUAL CMAKE_SOURCE_DIR)
|
||||
message(FATAL_ERROR "Building in-source is not supported! Create a build dir and remove ${CMAKE_SOURCE_DIR}/CMakeCache.txt")
|
||||
endif ()
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
# CMAKE project for openrct2-ui (UI build of OpenRCT2)
|
||||
cmake_minimum_required(VERSION 2.6)
|
||||
cmake_minimum_required(VERSION 3.1)
|
||||
if (CMAKE_BINARY_DIR STREQUAL CMAKE_SOURCE_DIR)
|
||||
message(FATAL_ERROR "Building in-source is not supported! Create a build dir and remove ${CMAKE_SOURCE_DIR}/CMakeCache.txt")
|
||||
endif ()
|
||||
|
|
|
@ -30,6 +30,7 @@
|
|||
#include <openrct2/localisation/string_ids.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"
|
||||
|
@ -72,8 +73,6 @@ private:
|
|||
SDL_Window * _window = nullptr;
|
||||
sint32 _width = 0;
|
||||
sint32 _height = 0;
|
||||
uint32 _windowFlags = 0;
|
||||
uint32 _windowFlagsLastCheckTick = 0;
|
||||
|
||||
bool _resolutionsAllowAnyAspectRatio = false;
|
||||
std::vector<Resolution> _fsResolutions;
|
||||
|
@ -108,6 +107,7 @@ public:
|
|||
~UiContext() override
|
||||
{
|
||||
CloseWindow();
|
||||
delete _windowManager;
|
||||
SDL_QuitSubSystem(SDL_INIT_VIDEO);
|
||||
delete _platformUiContext;
|
||||
}
|
||||
|
@ -283,7 +283,7 @@ public:
|
|||
{
|
||||
switch (e.type) {
|
||||
case SDL_QUIT:
|
||||
rct2_quit();
|
||||
context_quit();
|
||||
break;
|
||||
case SDL_WINDOWEVENT:
|
||||
// HACK: Fix #2158, OpenRCT2 does not draw if it does not think that the window is
|
||||
|
@ -429,7 +429,7 @@ public:
|
|||
if (_cursorState.touchIsDouble)
|
||||
{
|
||||
store_mouse_input(MOUSE_STATE_RIGHT_RELEASE, x, y);
|
||||
_cursorState.left = CURSOR_RELEASED;
|
||||
_cursorState.right = CURSOR_RELEASED;
|
||||
_cursorState.old = 4;
|
||||
}
|
||||
else {
|
||||
|
@ -516,44 +516,28 @@ public:
|
|||
sint32 x = SDL_WINDOWPOS_UNDEFINED_DISPLAY(defaultDisplay);
|
||||
sint32 y = SDL_WINDOWPOS_UNDEFINED_DISPLAY(defaultDisplay);
|
||||
|
||||
// Get saved window size
|
||||
sint32 width = gConfigGeneral.window_width;
|
||||
sint32 height = gConfigGeneral.window_height;
|
||||
if (width <= 0) width = 640;
|
||||
if (height <= 0) height = 480;
|
||||
|
||||
// Create window in window first rather than fullscreen so we have the display the window is on first
|
||||
uint32 flags = SDL_WINDOW_RESIZABLE;
|
||||
if (gConfigGeneral.drawing_engine == DRAWING_ENGINE_OPENGL)
|
||||
{
|
||||
flags |= SDL_WINDOW_OPENGL;
|
||||
}
|
||||
|
||||
_window = SDL_CreateWindow(OPENRCT2_NAME, x, y, width, height, flags);
|
||||
if (_window == nullptr)
|
||||
{
|
||||
SDLException::Throw("SDL_CreateWindow(...)");
|
||||
}
|
||||
|
||||
SDL_SetWindowMinimumSize(_window, 720, 480);
|
||||
SetCursorTrap(gConfigGeneral.trap_cursor);
|
||||
_platformUiContext->SetWindowIcon(_window);
|
||||
|
||||
// Initialise the surface, palette and draw buffer
|
||||
OnResize(width, height);
|
||||
|
||||
UpdateFullscreenResolutions();
|
||||
SetFullscreenMode((FULLSCREEN_MODE)gConfigGeneral.fullscreen_mode);
|
||||
CreateWindow(x, y);
|
||||
|
||||
// Check if steam overlay renderer is loaded into the process
|
||||
_steamOverlayActive = _platformUiContext->IsSteamOverlayAttached();
|
||||
TriggerResize();
|
||||
}
|
||||
|
||||
void CloseWindow() override
|
||||
{
|
||||
drawing_engine_dispose();
|
||||
SDL_DestroyWindow(_window);
|
||||
_window = nullptr;
|
||||
}
|
||||
|
||||
void RecreateWindow() override
|
||||
{
|
||||
// Use the position of the current window for the new window
|
||||
sint32 x, y;
|
||||
SDL_SetWindowFullscreen(_window, 0);
|
||||
SDL_GetWindowPosition(_window, &x, &y);
|
||||
|
||||
CloseWindow();
|
||||
CreateWindow(x, y);
|
||||
}
|
||||
|
||||
void ShowMessageBox(const std::string &message) override
|
||||
|
@ -646,6 +630,41 @@ public:
|
|||
|
||||
|
||||
private:
|
||||
void CreateWindow(sint32 x, sint32 y)
|
||||
{
|
||||
// Get saved window size
|
||||
sint32 width = gConfigGeneral.window_width;
|
||||
sint32 height = gConfigGeneral.window_height;
|
||||
if (width <= 0) width = 640;
|
||||
if (height <= 0) height = 480;
|
||||
|
||||
// Create window in window first rather than fullscreen so we have the display the window is on first
|
||||
uint32 flags = SDL_WINDOW_RESIZABLE;
|
||||
if (gConfigGeneral.drawing_engine == DRAWING_ENGINE_OPENGL)
|
||||
{
|
||||
flags |= SDL_WINDOW_OPENGL;
|
||||
}
|
||||
|
||||
_window = SDL_CreateWindow(OPENRCT2_NAME, x, y, width, height, flags);
|
||||
if (_window == nullptr)
|
||||
{
|
||||
SDLException::Throw("SDL_CreateWindow(...)");
|
||||
}
|
||||
|
||||
SDL_SetWindowMinimumSize(_window, 720, 480);
|
||||
SetCursorTrap(gConfigGeneral.trap_cursor);
|
||||
_platformUiContext->SetWindowIcon(_window);
|
||||
|
||||
// Initialise the surface, palette and draw buffer
|
||||
drawing_engine_init();
|
||||
OnResize(width, height);
|
||||
|
||||
UpdateFullscreenResolutions();
|
||||
SetFullscreenMode((FULLSCREEN_MODE)gConfigGeneral.fullscreen_mode);
|
||||
|
||||
TriggerResize();
|
||||
}
|
||||
|
||||
void OnResize(sint32 width, sint32 height)
|
||||
{
|
||||
// Scale the native window size to the game's canvas size
|
||||
|
@ -664,7 +683,6 @@ private:
|
|||
gfx_invalidate_screen();
|
||||
|
||||
// Check if the window has been resized in windowed mode and update the config file accordingly
|
||||
// This is called in rct2_update and is only called after resizing a window has finished
|
||||
sint32 nonWindowFlags =
|
||||
#ifndef __MACOSX__
|
||||
SDL_WINDOW_MAXIMIZED |
|
||||
|
@ -764,14 +782,7 @@ private:
|
|||
|
||||
uint32 GetWindowFlags()
|
||||
{
|
||||
// Don't check if window is minimised too frequently (every second is fine)
|
||||
uint32 tick = Platform::GetTicks();
|
||||
if (tick > _windowFlagsLastCheckTick + 1000)
|
||||
{
|
||||
_windowFlags = SDL_GetWindowFlags(_window);
|
||||
_windowFlagsLastCheckTick = tick;
|
||||
}
|
||||
return _windowFlags;
|
||||
return SDL_GetWindowFlags(_window);
|
||||
}
|
||||
};
|
||||
|
||||
|
|
|
@ -118,14 +118,14 @@ namespace OpenRCT2 { namespace Ui
|
|||
panel.canChooseFiles = false;
|
||||
panel.canChooseDirectories = true;
|
||||
panel.allowsMultipleSelection = false;
|
||||
utf8 *url = NULL;
|
||||
if ([panel runModal] == NSFileHandlingPanelOKButton)
|
||||
{
|
||||
NSString *selectedPath = panel.URL.path;
|
||||
const char *path = selectedPath.UTF8String;
|
||||
url = _strdup(path);
|
||||
return path;
|
||||
} else {
|
||||
return "";
|
||||
}
|
||||
return url;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -26,7 +26,7 @@ namespace OpenRCT2 { namespace Audio
|
|||
class AudioContext : public IAudioContext
|
||||
{
|
||||
private:
|
||||
IAudioMixer * _audioMixer;
|
||||
IAudioMixer * _audioMixer = nullptr;
|
||||
|
||||
public:
|
||||
AudioContext()
|
||||
|
@ -40,6 +40,7 @@ namespace OpenRCT2 { namespace Audio
|
|||
|
||||
~AudioContext() override
|
||||
{
|
||||
delete _audioMixer;
|
||||
SDL_QuitSubSystem(SDL_INIT_AUDIO);
|
||||
}
|
||||
|
||||
|
|
|
@ -18,6 +18,7 @@
|
|||
#include <SDL.h>
|
||||
#include <speex/speex_resampler.h>
|
||||
#include <list>
|
||||
#include <openrct2/Context.h>
|
||||
#include <openrct2/core/Guard.hpp>
|
||||
#include <openrct2/core/Math.hpp>
|
||||
#include <openrct2/core/Memory.hpp>
|
||||
|
@ -35,7 +36,6 @@ extern "C"
|
|||
#include <openrct2/localisation/localisation.h>
|
||||
#include <openrct2/OpenRCT2.h>
|
||||
#include <openrct2/platform/platform.h>
|
||||
#include <openrct2/rct2.h>
|
||||
}
|
||||
|
||||
namespace OpenRCT2 { namespace Audio
|
||||
|
@ -207,7 +207,7 @@ namespace OpenRCT2 { namespace Audio
|
|||
IAudioSource * source = _musicSources[pathId];
|
||||
if (source == nullptr)
|
||||
{
|
||||
const utf8 * path = get_file_path((sint32)pathId);
|
||||
const utf8 * path = context_get_path_legacy((sint32)pathId);
|
||||
source = AudioSource::CreateMemoryFromWAV(path, &_format);
|
||||
if (source == nullptr)
|
||||
{
|
||||
|
@ -238,7 +238,7 @@ namespace OpenRCT2 { namespace Audio
|
|||
private:
|
||||
void LoadAllSounds()
|
||||
{
|
||||
const utf8 * css1Path = get_file_path(PATH_ID_CSS1);
|
||||
const utf8 * css1Path = context_get_path_legacy(PATH_ID_CSS1);
|
||||
for (size_t i = 0; i < Util::CountOf(_css1Sources); i++)
|
||||
{
|
||||
auto source = AudioSource::CreateMemoryFromCSS1(css1Path, i, &_format);
|
||||
|
|
|
@ -53,7 +53,8 @@ private:
|
|||
|
||||
public:
|
||||
explicit HardwareDisplayDrawingEngine(IUiContext * uiContext)
|
||||
: _uiContext(uiContext)
|
||||
: X8DrawingEngine(uiContext),
|
||||
_uiContext(uiContext)
|
||||
{
|
||||
_window = (SDL_Window *)_uiContext->GetWindow();
|
||||
}
|
||||
|
@ -75,8 +76,13 @@ public:
|
|||
SDL_DestroyTexture(_screenTexture);
|
||||
SDL_FreeFormat(_screenTextureFormat);
|
||||
|
||||
SDL_RendererInfo rendererInfo;
|
||||
SDL_GetRendererInfo(_sdlRenderer, &rendererInfo);
|
||||
SDL_RendererInfo rendererInfo = {};
|
||||
sint32 result = SDL_GetRendererInfo(_sdlRenderer, &rendererInfo);
|
||||
if (result < 0)
|
||||
{
|
||||
log_warning("HWDisplayDrawingEngine::Resize error: %s", SDL_GetError());
|
||||
return;
|
||||
}
|
||||
uint32 pixelFormat = SDL_PIXELFORMAT_UNKNOWN;
|
||||
for (uint32 i = 0; i < rendererInfo.num_texture_formats; i++)
|
||||
{
|
||||
|
@ -121,9 +127,8 @@ public:
|
|||
}
|
||||
}
|
||||
|
||||
void Draw() override
|
||||
void EndDraw() override
|
||||
{
|
||||
X8DrawingEngine::Draw();
|
||||
Display();
|
||||
}
|
||||
|
||||
|
|
|
@ -44,7 +44,8 @@ private:
|
|||
|
||||
public:
|
||||
explicit SoftwareDrawingEngine(IUiContext * uiContext)
|
||||
: _uiContext(uiContext)
|
||||
: X8DrawingEngine(uiContext),
|
||||
_uiContext(uiContext)
|
||||
{
|
||||
_window = (SDL_Window *)_uiContext->GetWindow();
|
||||
}
|
||||
|
@ -104,9 +105,8 @@ public:
|
|||
}
|
||||
}
|
||||
|
||||
void Draw() override
|
||||
void EndDraw() override
|
||||
{
|
||||
X8DrawingEngine::Draw();
|
||||
Display();
|
||||
}
|
||||
|
||||
|
|
|
@ -35,13 +35,4 @@ struct DrawLineCommand {
|
|||
sint32 pos[4];
|
||||
};
|
||||
|
||||
struct DrawImageCommand {
|
||||
uint32 flags;
|
||||
vec4f colour;
|
||||
sint32 clip[4];
|
||||
CachedTextureInfo texMask;
|
||||
CachedTextureInfo texColour;
|
||||
CachedTextureInfo texPalette;
|
||||
sint32 bounds[4];
|
||||
bool mask;
|
||||
};
|
||||
typedef DrawImageInstance DrawImageCommand;
|
||||
|
|
|
@ -81,8 +81,6 @@ DrawImageShader::~DrawImageShader()
|
|||
glDeleteBuffers(1, &_vbo);
|
||||
glDeleteBuffers(1, &_vboInstances);
|
||||
glDeleteVertexArrays(1, &_vao);
|
||||
|
||||
glBindVertexArray(_vao);
|
||||
}
|
||||
|
||||
void DrawImageShader::GetLocations()
|
||||
|
|
|
@ -34,6 +34,14 @@ struct DrawImageInstance {
|
|||
vec4f colour;
|
||||
vec4i bounds;
|
||||
sint32 mask;
|
||||
|
||||
enum
|
||||
{
|
||||
FLAG_COLOUR = (1 << 0),
|
||||
FLAG_REMAP = (1 << 1),
|
||||
FLAG_TRANSPARENT = (1 << 2),
|
||||
FLAG_TRANSPARENT_SPECIAL = (1 << 3),
|
||||
};
|
||||
};
|
||||
|
||||
class DrawImageShader final : public OpenGLShaderProgram
|
||||
|
|
|
@ -41,8 +41,6 @@ DrawLineShader::~DrawLineShader()
|
|||
{
|
||||
glDeleteBuffers(1, &_vbo);
|
||||
glDeleteVertexArrays(1, &_vao);
|
||||
|
||||
glBindVertexArray(_vao);
|
||||
}
|
||||
|
||||
void DrawLineShader::GetLocations()
|
||||
|
|
|
@ -43,8 +43,6 @@ FillRectShader::~FillRectShader()
|
|||
{
|
||||
glDeleteBuffers(1, &_vbo);
|
||||
glDeleteVertexArrays(1, &_vao);
|
||||
|
||||
glBindVertexArray(_vao);
|
||||
}
|
||||
|
||||
void FillRectShader::GetLocations()
|
||||
|
|
|
@ -121,8 +121,14 @@ static const char * TryLoadAllProcAddresses()
|
|||
|
||||
namespace OpenGLState
|
||||
{
|
||||
uint16 ActiveTexture = UINT16_MAX;
|
||||
GLuint CurrentProgram = UINT32_MAX;
|
||||
uint16 ActiveTexture;
|
||||
GLuint CurrentProgram;
|
||||
|
||||
void Reset()
|
||||
{
|
||||
ActiveTexture = UINT16_MAX;
|
||||
CurrentProgram = UINT32_MAX;
|
||||
}
|
||||
}
|
||||
|
||||
void OpenGLAPI::SetTexture(uint16 index, GLenum type, GLuint texture)
|
||||
|
@ -136,6 +142,8 @@ void OpenGLAPI::SetTexture(uint16 index, GLenum type, GLuint texture)
|
|||
|
||||
bool OpenGLAPI::Initialise()
|
||||
{
|
||||
OpenGLState::Reset();
|
||||
|
||||
#ifdef OPENGL_NO_LINK
|
||||
const char * failedProcName = TryLoadAllProcAddresses();
|
||||
if (failedProcName != nullptr)
|
||||
|
|
|
@ -198,4 +198,6 @@ namespace OpenGLState
|
|||
{
|
||||
extern uint16 ActiveTexture;
|
||||
extern GLuint CurrentProgram;
|
||||
|
||||
void Reset();
|
||||
}
|
||||
|
|
|
@ -330,41 +330,42 @@ public:
|
|||
{
|
||||
}
|
||||
|
||||
void Draw() override
|
||||
void BeginDraw() override
|
||||
{
|
||||
assert(_screenFramebuffer != nullptr);
|
||||
assert(_swapFramebuffer != nullptr);
|
||||
|
||||
_swapFramebuffer->Bind();
|
||||
}
|
||||
|
||||
if (gIntroState != INTRO_STATE_NONE) {
|
||||
intro_draw(&_bitsDPI);
|
||||
} else {
|
||||
window_update_all_viewports();
|
||||
window_draw_all(&_bitsDPI, 0, 0, _width, _height);
|
||||
window_update_all();
|
||||
|
||||
gfx_draw_pickedup_peep(&_bitsDPI);
|
||||
|
||||
_drawingContext->FlushCommandBuffers();
|
||||
_swapFramebuffer->SwapCopy();
|
||||
|
||||
rct2_draw(&_bitsDPI);
|
||||
}
|
||||
|
||||
void EndDraw() override
|
||||
{
|
||||
_drawingContext->FlushCommandBuffers();
|
||||
|
||||
// Scale up to window
|
||||
_screenFramebuffer->Bind();
|
||||
_copyFramebufferShader->Use();
|
||||
_copyFramebufferShader->SetTexture(_swapFramebuffer->GetTargetFramebuffer()
|
||||
->GetTexture());
|
||||
_copyFramebufferShader->SetTexture(_swapFramebuffer->GetTargetFramebuffer()->GetTexture());
|
||||
_copyFramebufferShader->Draw();
|
||||
|
||||
CheckGLError();
|
||||
Display();
|
||||
}
|
||||
|
||||
void PaintWindows() override
|
||||
{
|
||||
window_update_all_viewports();
|
||||
window_draw_all(&_bitsDPI, 0, 0, _width, _height);
|
||||
|
||||
// TODO move this out from drawing
|
||||
window_update_all();
|
||||
}
|
||||
|
||||
void PaintRain() override
|
||||
{
|
||||
// Not implemented
|
||||
}
|
||||
|
||||
sint32 Screenshot() override
|
||||
{
|
||||
const OpenGLFramebuffer * framebuffer = _swapFramebuffer->GetTargetFramebuffer();
|
||||
|
@ -707,7 +708,7 @@ void OpenGLDrawingContext::DrawSprite(uint32 image, sint32 x, sint32 y, uint32 t
|
|||
zoomedDPI.pitch = _dpi->pitch;
|
||||
zoomedDPI.zoom_level = _dpi->zoom_level - 1;
|
||||
SetDPI(&zoomedDPI);
|
||||
DrawSprite((image & 0xE0000000) | (g1Id - g1Element->zoomed_offset), x >> 1, y >> 1, tertiaryColour);
|
||||
DrawSprite((image & 0xFFF80000) | (g1Id - g1Element->zoomed_offset), x >> 1, y >> 1, tertiaryColour);
|
||||
return;
|
||||
}
|
||||
if (g1Element->flags & (1 << 5))
|
||||
|
@ -769,18 +770,7 @@ void OpenGLDrawingContext::DrawSprite(uint32 image, sint32 x, sint32 y, uint32 t
|
|||
right += _clipLeft;
|
||||
bottom += _clipTop;
|
||||
|
||||
DrawImageCommand command = {};
|
||||
|
||||
command.flags = 0;
|
||||
command.mask = false;
|
||||
|
||||
command.clip[0] = _clipLeft;
|
||||
command.clip[1] = _clipTop;
|
||||
command.clip[2] = _clipRight;
|
||||
command.clip[3] = _clipBottom;
|
||||
|
||||
auto texture = _textureCache->GetOrLoadImageTexture(image);
|
||||
command.texColour = texture;
|
||||
|
||||
bool special = false;
|
||||
if (!(image & IMAGE_TYPE_REMAP_2_PLUS) && (image & IMAGE_TYPE_REMAP)) {
|
||||
|
@ -793,23 +783,42 @@ void OpenGLDrawingContext::DrawSprite(uint32 image, sint32 x, sint32 y, uint32 t
|
|||
tertiaryColour = 0;
|
||||
}
|
||||
|
||||
texture = _textureCache->GetOrLoadPaletteTexture(image, tertiaryColour, special);
|
||||
command.texPalette = texture;
|
||||
auto texture2 = _textureCache->GetOrLoadPaletteTexture(image, tertiaryColour, special);
|
||||
|
||||
if (image & IMAGE_TYPE_TRANSPARENT) {
|
||||
command.flags |= (1 << 3);
|
||||
DrawImageCommand command;
|
||||
|
||||
command.clip = { _clipLeft, _clipTop, _clipRight, _clipBottom };
|
||||
command.texColourAtlas = texture.index;
|
||||
command.texColourBounds = texture.normalizedBounds;
|
||||
command.texMaskAtlas = 0;
|
||||
command.texMaskBounds = { 0.0f, 0.0f, 0.0f };
|
||||
command.texPaletteAtlas = texture2.index;
|
||||
command.texPaletteBounds = {
|
||||
texture2.normalizedBounds.x,
|
||||
texture2.normalizedBounds.y,
|
||||
(texture2.normalizedBounds.z - texture2.normalizedBounds.x) / (float)(texture2.bounds.z - texture2.bounds.x),
|
||||
(texture2.normalizedBounds.w - texture2.normalizedBounds.y) / (float)(texture2.bounds.w - texture2.bounds.y)
|
||||
};
|
||||
command.colour = { 0.0f, 0.0f, 0.0f };
|
||||
command.bounds = { left, top, right, bottom };
|
||||
command.mask = 0;
|
||||
command.flags = 0;
|
||||
|
||||
if (special)
|
||||
{
|
||||
command.flags |= DrawImageCommand::FLAG_TRANSPARENT_SPECIAL;
|
||||
}
|
||||
else if (image & (IMAGE_TYPE_REMAP_2_PLUS | IMAGE_TYPE_REMAP)){
|
||||
command.flags |= (1 << 1);
|
||||
|
||||
if (image & IMAGE_TYPE_TRANSPARENT)
|
||||
{
|
||||
command.flags |= DrawImageCommand::FLAG_TRANSPARENT;
|
||||
}
|
||||
else if (image & (IMAGE_TYPE_REMAP_2_PLUS | IMAGE_TYPE_REMAP))
|
||||
{
|
||||
command.flags |= DrawImageCommand::FLAG_REMAP;
|
||||
}
|
||||
command.flags |= special << 2;
|
||||
|
||||
command.bounds[0] = left;
|
||||
command.bounds[1] = top;
|
||||
command.bounds[2] = right;
|
||||
command.bounds[3] = bottom;
|
||||
|
||||
_commandBuffers.images.push_back(command);
|
||||
_commandBuffers.images.emplace_back(std::move(command));
|
||||
}
|
||||
|
||||
void OpenGLDrawingContext::DrawSpriteRawMasked(sint32 x, sint32 y, uint32 maskImage, uint32 colourImage)
|
||||
|
@ -856,24 +865,21 @@ void OpenGLDrawingContext::DrawSpriteRawMasked(sint32 x, sint32 y, uint32 maskIm
|
|||
right += _clipLeft;
|
||||
bottom += _clipTop;
|
||||
|
||||
DrawImageCommand command = {};
|
||||
DrawImageCommand command;
|
||||
|
||||
command.mask = true;
|
||||
command.clip = { _clipLeft, _clipTop, _clipRight, _clipBottom };
|
||||
command.texColourAtlas = textureColour.index;
|
||||
command.texColourBounds = textureColour.normalizedBounds;
|
||||
command.texMaskAtlas = textureMask.index;
|
||||
command.texMaskBounds = textureMask.normalizedBounds;
|
||||
command.texPaletteAtlas = 0;
|
||||
command.texPaletteBounds = {0.0f, 0.0f, 0.0f};
|
||||
command.flags = 0;
|
||||
command.colour = {0.0f, 0.0f, 0.0f};
|
||||
command.bounds = { left, top, right, bottom };
|
||||
command.mask = 1;
|
||||
|
||||
command.clip[0] = _clipLeft;
|
||||
command.clip[1] = _clipTop;
|
||||
command.clip[2] = _clipRight;
|
||||
command.clip[3] = _clipBottom;
|
||||
|
||||
command.texMask = textureMask;
|
||||
command.texColour = textureColour;
|
||||
|
||||
command.bounds[0] = left;
|
||||
command.bounds[1] = top;
|
||||
command.bounds[2] = right;
|
||||
command.bounds[3] = bottom;
|
||||
|
||||
_commandBuffers.images.push_back(command);
|
||||
_commandBuffers.images.emplace_back(std::move(command));
|
||||
}
|
||||
|
||||
void OpenGLDrawingContext::DrawSpriteSolid(uint32 image, sint32 x, sint32 y, uint8 colour)
|
||||
|
@ -909,25 +915,26 @@ void OpenGLDrawingContext::DrawSpriteSolid(uint32 image, sint32 x, sint32 y, uin
|
|||
right += _offsetX;
|
||||
bottom += _offsetY;
|
||||
|
||||
DrawImageCommand command = {};
|
||||
DrawImageCommand command;
|
||||
|
||||
command.flags = 1;
|
||||
command.mask = false;
|
||||
command.clip = { _clipLeft, _clipTop, _clipRight, _clipBottom };
|
||||
command.texColourAtlas = texture.index;
|
||||
command.texColourBounds = texture.normalizedBounds;
|
||||
command.texMaskAtlas = 0;
|
||||
command.texMaskBounds = { 0.0f, 0.0f, 0.0f };
|
||||
command.texPaletteAtlas = texture.index;
|
||||
command.texPaletteBounds = {
|
||||
texture.normalizedBounds.x,
|
||||
texture.normalizedBounds.y,
|
||||
(texture.normalizedBounds.z - texture.normalizedBounds.x) / (float)(texture.bounds.z - texture.bounds.x),
|
||||
(texture.normalizedBounds.w - texture.normalizedBounds.y) / (float)(texture.bounds.w - texture.bounds.y)
|
||||
};
|
||||
command.flags = DrawImageCommand::FLAG_COLOUR;
|
||||
command.colour = paletteColour;
|
||||
command.bounds = { left, top, right, bottom };
|
||||
command.mask = 0;
|
||||
|
||||
command.clip[0] = _clipLeft;
|
||||
command.clip[1] = _clipTop;
|
||||
command.clip[2] = _clipRight;
|
||||
command.clip[3] = _clipBottom;
|
||||
|
||||
command.texColour = texture;
|
||||
|
||||
command.bounds[0] = left;
|
||||
command.bounds[1] = top;
|
||||
command.bounds[2] = right;
|
||||
command.bounds[3] = bottom;
|
||||
|
||||
_commandBuffers.images.push_back(command);
|
||||
_commandBuffers.images.emplace_back(std::move(command));
|
||||
}
|
||||
|
||||
void OpenGLDrawingContext::DrawGlyph(uint32 image, sint32 x, sint32 y, uint8 * palette)
|
||||
|
@ -961,31 +968,27 @@ void OpenGLDrawingContext::DrawGlyph(uint32 image, sint32 x, sint32 y, uint8 * p
|
|||
right += _offsetX;
|
||||
bottom += _offsetY;
|
||||
|
||||
DrawImageCommand command = {};
|
||||
DrawImageCommand command;
|
||||
|
||||
command.clip = { _clipLeft, _clipTop, _clipRight, _clipBottom };
|
||||
command.texColourAtlas = texture.index;
|
||||
command.texColourBounds = texture.normalizedBounds;
|
||||
command.texMaskAtlas = 0;
|
||||
command.texMaskBounds = { 0.0f, 0.0f, 0.0f };
|
||||
command.texPaletteAtlas = 0;
|
||||
command.texPaletteBounds = { 0.0f, 0.0f, 0.0f};
|
||||
command.flags = 0;
|
||||
command.mask = false;
|
||||
command.colour = { 0.0f, 0.0f, 0.0f };
|
||||
command.bounds = { left, top, right, bottom };
|
||||
command.mask = 0;
|
||||
|
||||
command.clip[0] = _clipLeft;
|
||||
command.clip[1] = _clipTop;
|
||||
command.clip[2] = _clipRight;
|
||||
command.clip[3] = _clipBottom;
|
||||
|
||||
command.texColour = texture;
|
||||
|
||||
command.bounds[0] = left;
|
||||
command.bounds[1] = top;
|
||||
command.bounds[2] = right;
|
||||
command.bounds[3] = bottom;
|
||||
|
||||
_commandBuffers.images.push_back(command);
|
||||
_commandBuffers.images.emplace_back(std::move(command));
|
||||
}
|
||||
|
||||
void OpenGLDrawingContext::FlushCommandBuffers()
|
||||
{
|
||||
FlushRectangles();
|
||||
FlushLines();
|
||||
|
||||
FlushImages();
|
||||
}
|
||||
|
||||
|
@ -1023,37 +1026,8 @@ void OpenGLDrawingContext::FlushImages()
|
|||
|
||||
OpenGLAPI::SetTexture(0, GL_TEXTURE_2D_ARRAY, _textureCache->GetAtlasesTexture());
|
||||
|
||||
std::vector<DrawImageInstance> instances;
|
||||
instances.reserve(_commandBuffers.images.size());
|
||||
|
||||
for (const auto& command : _commandBuffers.images)
|
||||
{
|
||||
DrawImageInstance instance;
|
||||
|
||||
instance.clip = {command.clip[0], command.clip[1], command.clip[2], command.clip[3]};
|
||||
instance.texColourAtlas = command.texColour.index;
|
||||
instance.texColourBounds = command.texColour.normalizedBounds;
|
||||
instance.texMaskAtlas = command.texMask.index;
|
||||
instance.texMaskBounds = command.texMask.normalizedBounds;
|
||||
instance.flags = command.flags;
|
||||
instance.colour = command.colour;
|
||||
instance.bounds = {command.bounds[0], command.bounds[1], command.bounds[2], command.bounds[3]};
|
||||
instance.mask = command.mask;
|
||||
instance.texPaletteAtlas = command.texPalette.index;
|
||||
if (instance.flags != 0) {
|
||||
instance.texPaletteBounds = {
|
||||
command.texPalette.normalizedBounds.x,
|
||||
command.texPalette.normalizedBounds.y,
|
||||
(command.texPalette.normalizedBounds.z - command.texPalette.normalizedBounds.x) / (float)(command.texPalette.bounds.z - command.texPalette.bounds.x),
|
||||
(command.texPalette.normalizedBounds.w - command.texPalette.normalizedBounds.y) / (float)(command.texPalette.bounds.w - command.texPalette.bounds.y)
|
||||
};
|
||||
}
|
||||
|
||||
instances.push_back(instance);
|
||||
}
|
||||
|
||||
_drawImageShader->Use();
|
||||
_drawImageShader->DrawInstances(instances);
|
||||
_drawImageShader->DrawInstances(_commandBuffers.images);
|
||||
|
||||
_commandBuffers.images.clear();
|
||||
}
|
||||
|
|
|
@ -309,4 +309,5 @@ const uint16 KeyboardShortcuts::DefaultKeys[SHORTCUT_COUNT] =
|
|||
SDL_SCANCODE_KP_0, // SHORTCUT_RIDE_CONSTRUCTION_BUILD_CURRENT
|
||||
SDL_SCANCODE_KP_MINUS, // SHORTCUT_RIDE_CONSTRUCTION_DEMOLISH_CURRENT
|
||||
PLATFORM_MODIFIER | SDL_SCANCODE_L, // SHORTCUT_LOAD_GAME
|
||||
SDL_SCANCODE_B, // SHORTCUT_CLEAR_SCENERY
|
||||
};
|
||||
|
|
|
@ -95,6 +95,7 @@ enum
|
|||
SHORTCUT_RIDE_CONSTRUCTION_BUILD_CURRENT,
|
||||
SHORTCUT_RIDE_CONSTRUCTION_DEMOLISH_CURRENT,
|
||||
SHORTCUT_LOAD_GAME,
|
||||
SHORTCUT_CLEAR_SCENERY,
|
||||
|
||||
SHORTCUT_COUNT,
|
||||
|
||||
|
|
|
@ -23,6 +23,7 @@
|
|||
#include <openrct2/interface/Screenshot.h>
|
||||
#include <openrct2/localisation/localisation.h>
|
||||
#include <openrct2/network/network.h>
|
||||
#include <openrct2/OpenRCT2.h>
|
||||
#include <openrct2/platform/platform.h>
|
||||
#include <openrct2/ride/track.h>
|
||||
#include <openrct2/ride/track_paint.h>
|
||||
|
@ -214,7 +215,7 @@ static void shortcut_remove_top_bottom_toolbar_toggle()
|
|||
window_close(window_find_by_class(WC_TITLE_OPTIONS));
|
||||
window_close(window_find_by_class(WC_TITLE_MENU));
|
||||
window_close(window_find_by_class(WC_TITLE_EXIT));
|
||||
gTitleHideVersionInfo = true;
|
||||
title_set_hide_version_info(true);
|
||||
} else {
|
||||
title_create_windows();
|
||||
}
|
||||
|
@ -495,6 +496,23 @@ static void shortcut_open_cheat_window()
|
|||
window_cheats_open();
|
||||
}
|
||||
|
||||
static void shortcut_clear_scenery()
|
||||
{
|
||||
if (gScreenFlags & SCREEN_FLAGS_TITLE_DEMO)
|
||||
return;
|
||||
|
||||
if (!(gScreenFlags & SCREEN_FLAGS_SCENARIO_EDITOR) || gS6Info.editor_step == EDITOR_STEP_LANDSCAPE_EDITOR) {
|
||||
if (!(gScreenFlags & (SCREEN_FLAGS_TRACK_DESIGNER | SCREEN_FLAGS_TRACK_MANAGER))) {
|
||||
rct_window *window = window_find_by_class(WC_TOP_TOOLBAR);
|
||||
if (window != NULL) {
|
||||
window_invalidate(window);
|
||||
window_event_mouse_up_call(window, WC_TOP_TOOLBAR__WIDX_CLEAR_SCENERY);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
static void shortcut_open_chat_window()
|
||||
{
|
||||
if (gScreenFlags & SCREEN_FLAGS_TITLE_DEMO)
|
||||
|
@ -722,6 +740,7 @@ static const shortcut_action shortcut_table[SHORTCUT_COUNT] = {
|
|||
shortcut_ride_construction_build_current,
|
||||
shortcut_ride_construction_demolish_current,
|
||||
shortcut_load_game,
|
||||
shortcut_clear_scenery,
|
||||
};
|
||||
|
||||
#pragma endregion
|
||||
|
|
|
@ -150,6 +150,7 @@ const rct_string_id ShortcutStringIds[] = {
|
|||
STR_SHORTCUT_RIDE_CONSTRUCTION_BUILD_CURRENT,
|
||||
STR_SHORTCUT_RIDE_CONSTRUCTION_DEMOLISH_CURRENT,
|
||||
STR_LOAD_GAME,
|
||||
STR_SHORTCUT_CLEAR_SCENERY,
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
# CMAKE project for libopenrct2 (core OpenRCT2 component)
|
||||
cmake_minimum_required(VERSION 2.6)
|
||||
cmake_minimum_required(VERSION 3.1)
|
||||
if (CMAKE_BINARY_DIR STREQUAL CMAKE_SOURCE_DIR)
|
||||
message(FATAL_ERROR "Building in-source is not supported! Create a build dir and remove ${CMAKE_SOURCE_DIR}/CMakeCache.txt")
|
||||
endif ()
|
||||
|
@ -128,7 +128,7 @@ endif ()
|
|||
# Outputs
|
||||
set(PROJECT libopenrct2)
|
||||
project(${PROJECT})
|
||||
add_library(${PROJECT} SHARED ${OPENRCT2_CORE_SOURCES} ${OPENRCT2_CORE_MM_SOURCES} ${RCT2_SECTIONS})
|
||||
add_library(${PROJECT} ${OPENRCT2_CORE_SOURCES} ${OPENRCT2_CORE_MM_SOURCES} ${RCT2_SECTIONS})
|
||||
set_target_properties(${PROJECT} PROPERTIES PREFIX "")
|
||||
set_target_properties(${PROJECT} PROPERTIES COMPILE_FLAGS "-Wundef")
|
||||
|
||||
|
@ -164,6 +164,12 @@ if (NOT DISABLE_NETWORK)
|
|||
if (WIN32)
|
||||
target_link_libraries(${PROJECT} ws2_32)
|
||||
endif ()
|
||||
|
||||
# our HTTP implementation requires use of threads
|
||||
set(THREADS_PREFER_PTHREAD_FLAG ON)
|
||||
find_package(Threads REQUIRED)
|
||||
target_link_libraries(${PROJECT} Threads::Threads)
|
||||
|
||||
if (STATIC)
|
||||
target_link_libraries(${PROJECT} ${LIBCURL_STATIC_LIBRARIES}
|
||||
${SSL_STATIC_LIBRARIES})
|
||||
|
@ -265,3 +271,13 @@ if (NOT DISABLE_RCT2)
|
|||
# builds without need for -fno-omit-frame-pointer
|
||||
set_source_files_properties(${CMAKE_CURRENT_LIST_DIR}/rct2/addresses.c PROPERTIES COMPILE_FLAGS -O0)
|
||||
endif ()
|
||||
|
||||
if (CXX_WARN_SUGGEST_FINAL_TYPES)
|
||||
# Disable -Wsuggest-final-types via pragmas where due.
|
||||
add_definitions(-D__WARN_SUGGEST_FINAL_TYPES__)
|
||||
endif ()
|
||||
|
||||
if (CXX_WARN_SUGGEST_FINAL_METHODS)
|
||||
# Disable -Wsuggest-final-methods via pragmas where due.
|
||||
add_definitions(-D__WARN_SUGGEST_FINAL_METHODS__)
|
||||
endif ()
|
||||
|
|
|
@ -22,9 +22,12 @@
|
|||
#include "ui/UiContext.h"
|
||||
#include "core/Console.hpp"
|
||||
#include "core/File.h"
|
||||
#include "core/FileScanner.h"
|
||||
#include "core/FileStream.hpp"
|
||||
#include "core/Guard.hpp"
|
||||
#include "core/Math.hpp"
|
||||
#include "core/MemoryStream.h"
|
||||
#include "core/Path.hpp"
|
||||
#include "core/String.hpp"
|
||||
#include "FileClassifier.h"
|
||||
#include "network/network.h"
|
||||
|
@ -45,19 +48,23 @@ extern "C"
|
|||
{
|
||||
#include "audio/audio.h"
|
||||
#include "config/Config.h"
|
||||
#include "drawing/lightfx.h"
|
||||
#include "editor.h"
|
||||
#include "game.h"
|
||||
#include "input.h"
|
||||
#include "interface/chat.h"
|
||||
#include "interface/console.h"
|
||||
#include "interface/themes.h"
|
||||
#include "intro.h"
|
||||
#include "localisation/localisation.h"
|
||||
#include "network/http.h"
|
||||
#include "network/network.h"
|
||||
#include "network/twitch.h"
|
||||
#include "object_list.h"
|
||||
#include "platform/platform.h"
|
||||
#include "rct1.h"
|
||||
#include "rct2.h"
|
||||
#include "rct2/interop.h"
|
||||
#include "util/util.h"
|
||||
}
|
||||
|
||||
using namespace OpenRCT2;
|
||||
|
@ -80,9 +87,14 @@ namespace OpenRCT2
|
|||
ITrackDesignRepository * _trackDesignRepository = nullptr;
|
||||
IScenarioRepository * _scenarioRepository = nullptr;
|
||||
|
||||
bool _isWindowMinimised = false;
|
||||
uint32 _lastTick = 0;
|
||||
uint32 _accumulator = 0;
|
||||
// Game states
|
||||
TitleScreen * _titleScreen = nullptr;
|
||||
|
||||
bool _initialised = false;
|
||||
bool _isWindowMinimised = false;
|
||||
uint32 _lastTick = 0;
|
||||
uint32 _accumulator = 0;
|
||||
uint32 _lastUpdateTick = 0;
|
||||
|
||||
/** If set, will end the OpenRCT2 game loop. Intentially private to this module so that the flag can not be set back to false. */
|
||||
bool _finished = false;
|
||||
|
@ -107,13 +119,23 @@ namespace OpenRCT2
|
|||
network_close();
|
||||
http_dispose();
|
||||
language_close_all();
|
||||
rct2_dispose();
|
||||
object_manager_unload_all_objects();
|
||||
gfx_object_check_all_images_freed();
|
||||
gfx_unload_g2();
|
||||
gfx_unload_g1();
|
||||
config_release();
|
||||
#ifndef DISABLE_NETWORK
|
||||
EVP_MD_CTX_destroy(gHashCTX);
|
||||
#endif // DISABLE_NETWORK
|
||||
rct2_interop_dispose();
|
||||
platform_free();
|
||||
|
||||
delete _titleScreen;
|
||||
|
||||
delete _scenarioRepository;
|
||||
delete _trackDesignRepository;
|
||||
delete _objectManager;
|
||||
delete _objectRepository;
|
||||
|
||||
Instance = nullptr;
|
||||
}
|
||||
|
||||
|
@ -144,8 +166,95 @@ namespace OpenRCT2
|
|||
_finished = true;
|
||||
}
|
||||
|
||||
void Quit() override
|
||||
{
|
||||
gSavePromptMode = PM_QUIT;
|
||||
window_save_prompt_open();
|
||||
}
|
||||
|
||||
std::string GetPathLegacy(sint32 pathId) override
|
||||
{
|
||||
static const char * const LegacyFileNames[PATH_ID_END] =
|
||||
{
|
||||
nullptr,
|
||||
nullptr,
|
||||
"css1.dat",
|
||||
"css2.dat",
|
||||
"css4.dat",
|
||||
"css5.dat",
|
||||
"css6.dat",
|
||||
"css7.dat",
|
||||
"css8.dat",
|
||||
"css9.dat",
|
||||
"css11.dat",
|
||||
"css12.dat",
|
||||
"css13.dat",
|
||||
"css14.dat",
|
||||
"css15.dat",
|
||||
"css3.dat",
|
||||
"css17.dat",
|
||||
"css18.dat",
|
||||
"css19.dat",
|
||||
"css20.dat",
|
||||
"css21.dat",
|
||||
"css22.dat",
|
||||
nullptr,
|
||||
"css23.dat",
|
||||
"css24.dat",
|
||||
"css25.dat",
|
||||
"css26.dat",
|
||||
"css27.dat",
|
||||
"css28.dat",
|
||||
"css29.dat",
|
||||
"css30.dat",
|
||||
"css31.dat",
|
||||
"css32.dat",
|
||||
"css33.dat",
|
||||
"css34.dat",
|
||||
"css35.dat",
|
||||
"css36.dat",
|
||||
"css37.dat",
|
||||
"css38.dat",
|
||||
"CUSTOM1.WAV",
|
||||
"CUSTOM2.WAV",
|
||||
"css39.dat",
|
||||
"css40.dat",
|
||||
"css41.dat",
|
||||
nullptr,
|
||||
"css42.dat",
|
||||
"css43.dat",
|
||||
"css44.dat",
|
||||
"css45.dat",
|
||||
"css46.dat",
|
||||
"css50.dat"
|
||||
};
|
||||
|
||||
std::string result;
|
||||
if (pathId == PATH_ID_CSS50)
|
||||
{
|
||||
auto dataPath = _env->GetDirectoryPath(DIRBASE::RCT1, DIRID::DATA);
|
||||
result = Path::Combine(dataPath, "css17.dat");
|
||||
}
|
||||
else if (pathId >= 0 && pathId < PATH_ID_END)
|
||||
{
|
||||
auto fileName = LegacyFileNames[pathId];
|
||||
if (fileName != nullptr)
|
||||
{
|
||||
auto dataPath = _env->GetDirectoryPath(DIRBASE::RCT2, DIRID::DATA);
|
||||
result = Path::Combine(dataPath, fileName);
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
bool Initialise() final override
|
||||
{
|
||||
if (_initialised)
|
||||
{
|
||||
throw std::runtime_error("Context already initialised.");
|
||||
}
|
||||
_initialised = true;
|
||||
|
||||
#ifndef DISABLE_NETWORK
|
||||
gHashCTX = EVP_MD_CTX_create();
|
||||
Guard::Assert(gHashCTX != nullptr, "EVP_MD_CTX_create failed");
|
||||
|
@ -170,15 +279,29 @@ namespace OpenRCT2
|
|||
config_save_default();
|
||||
}
|
||||
|
||||
if (!rct2_init_directories() || !rct2_startup_checks())
|
||||
if (platform_process_is_elevated())
|
||||
{
|
||||
std::string elevationWarning = "It is not recommended to run OpenRCT2 with elevated permissions.";
|
||||
if (gOpenRCT2Headless)
|
||||
{
|
||||
Console::Error::WriteLine(elevationWarning.c_str());
|
||||
}
|
||||
else
|
||||
{
|
||||
_uiContext->ShowMessageBox(elevationWarning);
|
||||
}
|
||||
}
|
||||
|
||||
auto rct2InstallPath = GetOrPromptRCT2Path();
|
||||
if (rct2InstallPath.empty())
|
||||
{
|
||||
return false;
|
||||
}
|
||||
_env->SetBasePath(DIRBASE::RCT2, gRCT2AddressAppPath);
|
||||
_env->SetBasePath(DIRBASE::RCT2, rct2InstallPath);
|
||||
|
||||
if (!gOpenRCT2Headless)
|
||||
{
|
||||
GetContext()->GetUiContext()->CreateWindow();
|
||||
_uiContext->CreateWindow();
|
||||
}
|
||||
|
||||
// TODO add configuration option to allow multiple instances
|
||||
|
@ -219,26 +342,82 @@ namespace OpenRCT2
|
|||
{
|
||||
audio_init();
|
||||
audio_populate_devices();
|
||||
audio_init_ride_sounds_and_info();
|
||||
}
|
||||
|
||||
http_init();
|
||||
network_set_env(_env);
|
||||
chat_init();
|
||||
theme_manager_initialise();
|
||||
CopyOriginalUserFilesOver();
|
||||
|
||||
rct2_interop_setup_hooks();
|
||||
|
||||
if (!rct2_init())
|
||||
if (!gOpenRCT2NoGraphics)
|
||||
{
|
||||
return false;
|
||||
LoadBaseGraphics();
|
||||
#ifdef __ENABLE_LIGHTFX__
|
||||
lightfx_init();
|
||||
#endif
|
||||
}
|
||||
gScenarioTicks = 0;
|
||||
util_srand((uint32)time(0));
|
||||
input_reset_place_obj_modifier();
|
||||
viewport_init_all();
|
||||
game_init_all(150);
|
||||
|
||||
chat_init();
|
||||
|
||||
rct2_copy_original_user_files_over();
|
||||
_titleScreen = new TitleScreen();
|
||||
return true;
|
||||
}
|
||||
|
||||
void Open(const std::string &path) final override
|
||||
{
|
||||
auto fs = FileStream(path, FILE_MODE_OPEN);
|
||||
OpenParkAutoDetectFormat(&fs, path);
|
||||
}
|
||||
|
||||
private:
|
||||
std::string GetOrPromptRCT2Path()
|
||||
{
|
||||
auto result = std::string();
|
||||
if (String::IsNullOrEmpty(gCustomRCT2DataPath))
|
||||
{
|
||||
// Check install directory
|
||||
if (gConfigGeneral.rct2_path == nullptr || !platform_original_game_data_exists(gConfigGeneral.rct2_path))
|
||||
{
|
||||
log_verbose("install directory does not exist or invalid directory selected, %s", gConfigGeneral.rct2_path);
|
||||
if (!config_find_or_browse_install_directory())
|
||||
{
|
||||
utf8 path[MAX_PATH];
|
||||
config_get_default_path(path, sizeof(path));
|
||||
Console::Error::WriteLine("An RCT2 install directory must be specified! Please edit \"game_path\" in %s.\n", path);
|
||||
return std::string();
|
||||
}
|
||||
}
|
||||
result = std::string(gConfigGeneral.rct2_path);
|
||||
}
|
||||
else
|
||||
{
|
||||
result = std::string(gCustomRCT2DataPath);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
bool LoadBaseGraphics()
|
||||
{
|
||||
if (!gfx_load_g1(_env))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
if (!gfx_load_g2())
|
||||
{
|
||||
return false;
|
||||
}
|
||||
gfx_load_csg();
|
||||
font_sprite_initialise_characters();
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Launches the game, after command line arguments have been parsed and processed.
|
||||
*/
|
||||
|
@ -260,7 +439,6 @@ namespace OpenRCT2
|
|||
break;
|
||||
case STARTUP_ACTION_OPEN:
|
||||
{
|
||||
bool parkLoaded = false;
|
||||
// A path that includes "://" is illegal with all common filesystems, so it is almost certainly a URL
|
||||
// This way all cURL supported protocols, like http, ftp, scp and smb are automatically handled
|
||||
if (strstr(gOpenRCT2StartupActionPath, "://") != nullptr)
|
||||
|
@ -276,18 +454,27 @@ namespace OpenRCT2
|
|||
}
|
||||
|
||||
auto ms = MemoryStream(data, dataSize, MEMORY_ACCESS::OWNER);
|
||||
parkLoaded = OpenParkAutoDetectFormat(&ms);
|
||||
if (!OpenParkAutoDetectFormat(&ms, gOpenRCT2StartupActionPath))
|
||||
{
|
||||
Console::Error::WriteLine("Failed to load '%s'", gOpenRCT2StartupActionPath);
|
||||
title_load();
|
||||
break;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
else
|
||||
{
|
||||
parkLoaded = rct2_open_file(gOpenRCT2StartupActionPath);
|
||||
}
|
||||
|
||||
if (!parkLoaded)
|
||||
{
|
||||
Console::Error::WriteLine("Failed to load '%s'", gOpenRCT2StartupActionPath);
|
||||
break;
|
||||
try
|
||||
{
|
||||
Open(gOpenRCT2StartupActionPath);
|
||||
}
|
||||
catch (const std::exception &ex)
|
||||
{
|
||||
Console::Error::WriteLine("Failed to load '%s'", gOpenRCT2StartupActionPath);
|
||||
Console::Error::WriteLine("%s", ex.what());
|
||||
title_load();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
gScreenFlags = SCREEN_FLAGS_PLAYING;
|
||||
|
@ -315,7 +502,7 @@ namespace OpenRCT2
|
|||
}
|
||||
network_begin_server(gNetworkStartPort, gNetworkStartAddress);
|
||||
}
|
||||
#endif // DISABLE_NETWORK
|
||||
#endif // DISABLE_NETWORK
|
||||
break;
|
||||
}
|
||||
case STARTUP_ACTION_EDIT:
|
||||
|
@ -396,28 +583,23 @@ namespace OpenRCT2
|
|||
}
|
||||
|
||||
uint32 elapsed = currentTick - _lastTick;
|
||||
if (elapsed > UPDATE_TIME_MS)
|
||||
{
|
||||
elapsed = UPDATE_TIME_MS;
|
||||
}
|
||||
|
||||
_lastTick = currentTick;
|
||||
_accumulator += elapsed;
|
||||
_accumulator = Math::Min(_accumulator + elapsed, (uint32)GAME_UPDATE_MAX_THRESHOLD);
|
||||
|
||||
GetContext()->GetUiContext()->ProcessMessages();
|
||||
_uiContext->ProcessMessages();
|
||||
|
||||
if (_accumulator < UPDATE_TIME_MS)
|
||||
if (_accumulator < GAME_UPDATE_TIME_MS)
|
||||
{
|
||||
platform_sleep(UPDATE_TIME_MS - _accumulator - 1);
|
||||
platform_sleep(GAME_UPDATE_TIME_MS - _accumulator - 1);
|
||||
return;
|
||||
}
|
||||
|
||||
_accumulator -= UPDATE_TIME_MS;
|
||||
_accumulator -= GAME_UPDATE_TIME_MS;
|
||||
|
||||
rct2_update();
|
||||
Update();
|
||||
if (!_isWindowMinimised && !gOpenRCT2Headless)
|
||||
{
|
||||
platform_draw();
|
||||
drawing_engine_draw();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -434,25 +616,21 @@ namespace OpenRCT2
|
|||
}
|
||||
|
||||
uint32 elapsed = currentTick - _lastTick;
|
||||
if (elapsed > UPDATE_TIME_MS)
|
||||
{
|
||||
elapsed = UPDATE_TIME_MS;
|
||||
}
|
||||
|
||||
_lastTick = currentTick;
|
||||
_accumulator += elapsed;
|
||||
_accumulator = Math::Min(_accumulator + elapsed, (uint32)GAME_UPDATE_MAX_THRESHOLD);
|
||||
|
||||
GetContext()->GetUiContext()->ProcessMessages();
|
||||
_uiContext->ProcessMessages();
|
||||
|
||||
while (_accumulator >= UPDATE_TIME_MS)
|
||||
while (_accumulator >= GAME_UPDATE_TIME_MS)
|
||||
{
|
||||
// Get the original position of each sprite
|
||||
if(draw)
|
||||
sprite_position_tween_store_a();
|
||||
|
||||
rct2_update();
|
||||
Update();
|
||||
|
||||
_accumulator -= UPDATE_TIME_MS;
|
||||
_accumulator -= GAME_UPDATE_TIME_MS;
|
||||
|
||||
// Get the next position of each sprite
|
||||
if(draw)
|
||||
|
@ -461,16 +639,47 @@ namespace OpenRCT2
|
|||
|
||||
if (draw)
|
||||
{
|
||||
const float alpha = (float)_accumulator / UPDATE_TIME_MS;
|
||||
const float alpha = (float)_accumulator / GAME_UPDATE_TIME_MS;
|
||||
sprite_position_tween_all(alpha);
|
||||
|
||||
platform_draw();
|
||||
drawing_engine_draw();
|
||||
|
||||
sprite_position_tween_restore();
|
||||
}
|
||||
}
|
||||
|
||||
bool OpenParkAutoDetectFormat(IStream * stream)
|
||||
void Update()
|
||||
{
|
||||
uint32 currentUpdateTick = platform_get_ticks();
|
||||
gTicksSinceLastUpdate = std::min<uint32>(currentUpdateTick - _lastUpdateTick, 500);
|
||||
_lastUpdateTick = currentUpdateTick;
|
||||
|
||||
if (game_is_not_paused())
|
||||
{
|
||||
gPaletteEffectFrame += gTicksSinceLastUpdate;
|
||||
}
|
||||
|
||||
date_update_real_time_of_day();
|
||||
|
||||
if (gIntroState != INTRO_STATE_NONE)
|
||||
{
|
||||
intro_update();
|
||||
}
|
||||
else if ((gScreenFlags & SCREEN_FLAGS_TITLE_DEMO) && !gOpenRCT2Headless)
|
||||
{
|
||||
_titleScreen->Update();
|
||||
}
|
||||
else
|
||||
{
|
||||
game_update();
|
||||
}
|
||||
|
||||
twitch_update();
|
||||
chat_update();
|
||||
console_update();
|
||||
}
|
||||
|
||||
bool OpenParkAutoDetectFormat(IStream * stream, const std::string &path)
|
||||
{
|
||||
ClassifiedFile info;
|
||||
if (TryClassifyFile(stream, &info))
|
||||
|
@ -488,41 +697,29 @@ namespace OpenRCT2
|
|||
parkImporter.reset(ParkImporter::CreateS6(_objectRepository, _objectManager));
|
||||
}
|
||||
|
||||
if (info.Type == FILE_TYPE::SAVED_GAME)
|
||||
auto result = parkImporter->LoadFromStream(stream, info.Type == FILE_TYPE::SCENARIO);
|
||||
if (result.Error == PARK_LOAD_ERROR_OK)
|
||||
{
|
||||
try
|
||||
parkImporter->Import();
|
||||
game_fix_save_vars();
|
||||
sprite_position_tween_reset();
|
||||
gScreenAge = 0;
|
||||
gLastAutoSaveUpdate = AUTOSAVE_PAUSE;
|
||||
if (info.Type == FILE_TYPE::SAVED_GAME)
|
||||
{
|
||||
parkImporter->LoadFromStream(stream, false);
|
||||
parkImporter->Import();
|
||||
game_fix_save_vars();
|
||||
sprite_position_tween_reset();
|
||||
gScreenAge = 0;
|
||||
gLastAutoSaveUpdate = AUTOSAVE_PAUSE;
|
||||
game_load_init();
|
||||
return true;
|
||||
}
|
||||
catch (const Exception &)
|
||||
else
|
||||
{
|
||||
Console::Error::WriteLine("Error loading saved game.");
|
||||
reset_sprite_spatial_index();
|
||||
reset_all_sprite_quadrant_placements();
|
||||
scenario_begin();
|
||||
}
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
try
|
||||
{
|
||||
parkImporter->LoadFromStream(stream, true);
|
||||
parkImporter->Import();
|
||||
game_fix_save_vars();
|
||||
sprite_position_tween_reset();
|
||||
gScreenAge = 0;
|
||||
gLastAutoSaveUpdate = AUTOSAVE_PAUSE;
|
||||
scenario_begin();
|
||||
return true;
|
||||
}
|
||||
catch (const Exception &)
|
||||
{
|
||||
Console::Error::WriteLine("Error loading scenario.");
|
||||
}
|
||||
handle_park_load_failure_with_title_opt(&result, path.c_str(), true);
|
||||
}
|
||||
}
|
||||
else
|
||||
|
@ -536,6 +733,58 @@ namespace OpenRCT2
|
|||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Copy saved games and landscapes to user directory
|
||||
*/
|
||||
void CopyOriginalUserFilesOver()
|
||||
{
|
||||
CopyOriginalUserFilesOver(DIRID::SAVE, "*.sv6");
|
||||
CopyOriginalUserFilesOver(DIRID::LANDSCAPE, "*.sc6");
|
||||
}
|
||||
|
||||
void CopyOriginalUserFilesOver(DIRID dirid, const std::string &pattern)
|
||||
{
|
||||
auto src = _env->GetDirectoryPath(DIRBASE::RCT2, dirid);
|
||||
auto dst = _env->GetDirectoryPath(DIRBASE::USER, dirid);
|
||||
CopyOriginalUserFilesOver(src, dst, pattern);
|
||||
}
|
||||
|
||||
void CopyOriginalUserFilesOver(const std::string &srcRoot, const std::string &dstRoot, const std::string &pattern)
|
||||
{
|
||||
log_verbose("CopyOriginalUserFilesOver('%s', '%s', '%s')", srcRoot.c_str(), dstRoot.c_str(), pattern.c_str());
|
||||
|
||||
auto scanPattern = Path::Combine(srcRoot, pattern);
|
||||
auto scanner = Path::ScanDirectory(scanPattern, true);
|
||||
while (scanner->Next())
|
||||
{
|
||||
auto src = std::string(scanner->GetPath());
|
||||
auto dst = Path::Combine(dstRoot, scanner->GetPathRelative());
|
||||
auto dstDirectory = Path::GetDirectory(dst);
|
||||
|
||||
// Create the directory if necessary
|
||||
if (!platform_directory_exists(dstDirectory.c_str()))
|
||||
{
|
||||
Console::WriteLine("Creating directory '%s'", dstDirectory.c_str());
|
||||
if (!platform_ensure_directory_exists(dstDirectory.c_str()))
|
||||
{
|
||||
Console::Error::WriteLine("Could not create directory %s.", dstDirectory.c_str());
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// Only copy the file if it doesn't already exist
|
||||
if (!File::Exists(dst))
|
||||
{
|
||||
Console::WriteLine("Copying '%s' to '%s'", src.c_str(), dst.c_str());
|
||||
if (!File::Copy(src, dst, false))
|
||||
{
|
||||
Console::Error::WriteLine("Failed to copy '%s' to '%s'", src.c_str(), dst.c_str());
|
||||
}
|
||||
}
|
||||
}
|
||||
delete scanner;
|
||||
}
|
||||
};
|
||||
|
||||
class PlainContext final : public Context
|
||||
|
@ -663,6 +912,11 @@ extern "C"
|
|||
return GetContext()->GetUiContext()->SetFullscreenMode((FULLSCREEN_MODE)mode);
|
||||
}
|
||||
|
||||
void context_recreate_window()
|
||||
{
|
||||
GetContext()->GetUiContext()->RecreateWindow();
|
||||
}
|
||||
|
||||
sint32 context_get_resolutions(Resolution * * outResolutions)
|
||||
{
|
||||
auto resolutions = GetContext()->GetUiContext()->GetFullscreenResolutions();
|
||||
|
@ -709,6 +963,19 @@ extern "C"
|
|||
return GetContext()->GetUiContext()->ReadBMP(outPixels, outWidth, outHeight, std::string(path));
|
||||
}
|
||||
|
||||
void context_quit()
|
||||
{
|
||||
GetContext()->Quit();
|
||||
}
|
||||
|
||||
const utf8 * context_get_path_legacy(sint32 pathId)
|
||||
{
|
||||
static utf8 result[MAX_PATH];
|
||||
auto path = GetContext()->GetPathLegacy(pathId);
|
||||
String::Set(result, sizeof(result), path.c_str());
|
||||
return result;
|
||||
}
|
||||
|
||||
bool platform_open_common_file_dialog(utf8 * outFilename, file_dialog_desc * desc, size_t outSize)
|
||||
{
|
||||
try
|
||||
|
|
|
@ -67,6 +67,8 @@ enum
|
|||
|
||||
#ifdef __cplusplus
|
||||
|
||||
#include <string>
|
||||
|
||||
namespace OpenRCT2
|
||||
{
|
||||
interface IPlatformEnvironment;
|
||||
|
@ -94,21 +96,95 @@ namespace OpenRCT2
|
|||
virtual sint32 RunOpenRCT2(int argc, char * * argv) abstract;
|
||||
|
||||
virtual bool Initialise() abstract;
|
||||
virtual void Open(const std::string &path) abstract;
|
||||
virtual void Finish() abstract;
|
||||
virtual void Quit() abstract;
|
||||
|
||||
/**
|
||||
* This is deprecated, use IPlatformEnvironment.
|
||||
*/
|
||||
virtual std::string GetPathLegacy(sint32 pathId) abstract;
|
||||
};
|
||||
|
||||
IContext * CreateContext();
|
||||
IContext * CreateContext(IPlatformEnvironment * env, Audio::IAudioContext * audioContext, Ui::IUiContext * uiContext);
|
||||
IContext * GetContext();
|
||||
|
||||
// The game update inverval in milliseconds, (1000 / 40fps) = 25ms
|
||||
constexpr uint32 UPDATE_TIME_MS = 25;
|
||||
// The number of logical update / ticks per second.
|
||||
constexpr uint32 UPDATE_FPS = 40;
|
||||
}
|
||||
|
||||
#endif // __cplusplus
|
||||
|
||||
enum
|
||||
{
|
||||
// The game update inverval in milliseconds, (1000 / 40fps) = 25ms
|
||||
GAME_UPDATE_TIME_MS = 25,
|
||||
// The number of logical update / ticks per second.
|
||||
GAME_UPDATE_FPS = 40,
|
||||
// The maximum amount of updates in case rendering is slower
|
||||
GAME_MAX_UPDATES = 4,
|
||||
// The maximum threshold to advance.
|
||||
GAME_UPDATE_MAX_THRESHOLD = GAME_UPDATE_TIME_MS * GAME_MAX_UPDATES,
|
||||
};
|
||||
|
||||
/**
|
||||
* Legacy get_file_path IDs.
|
||||
* Remove when context_get_path_legacy is removed.
|
||||
*/
|
||||
enum
|
||||
{
|
||||
PATH_ID_G1,
|
||||
PATH_ID_PLUGIN,
|
||||
PATH_ID_CSS1,
|
||||
PATH_ID_CSS2,
|
||||
PATH_ID_CSS4,
|
||||
PATH_ID_CSS5,
|
||||
PATH_ID_CSS6,
|
||||
PATH_ID_CSS7,
|
||||
PATH_ID_CSS8,
|
||||
PATH_ID_CSS9,
|
||||
PATH_ID_CSS11,
|
||||
PATH_ID_CSS12,
|
||||
PATH_ID_CSS13,
|
||||
PATH_ID_CSS14,
|
||||
PATH_ID_CSS15,
|
||||
PATH_ID_CSS3,
|
||||
PATH_ID_CSS17,
|
||||
PATH_ID_CSS18,
|
||||
PATH_ID_CSS19,
|
||||
PATH_ID_CSS20,
|
||||
PATH_ID_CSS21,
|
||||
PATH_ID_CSS22,
|
||||
PATH_ID_SCORES,
|
||||
PATH_ID_CSS23,
|
||||
PATH_ID_CSS24,
|
||||
PATH_ID_CSS25,
|
||||
PATH_ID_CSS26,
|
||||
PATH_ID_CSS27,
|
||||
PATH_ID_CSS28,
|
||||
PATH_ID_CSS29,
|
||||
PATH_ID_CSS30,
|
||||
PATH_ID_CSS31,
|
||||
PATH_ID_CSS32,
|
||||
PATH_ID_CSS33,
|
||||
PATH_ID_CSS34,
|
||||
PATH_ID_CSS35,
|
||||
PATH_ID_CSS36,
|
||||
PATH_ID_CSS37,
|
||||
PATH_ID_CSS38,
|
||||
PATH_ID_CUSTOM1,
|
||||
PATH_ID_CUSTOM2,
|
||||
PATH_ID_CSS39,
|
||||
PATH_ID_CSS40,
|
||||
PATH_ID_CSS41,
|
||||
PATH_ID_SIXFLAGS_MAGICMOUNTAIN,
|
||||
PATH_ID_CSS42,
|
||||
PATH_ID_CSS43,
|
||||
PATH_ID_CSS44,
|
||||
PATH_ID_CSS45,
|
||||
PATH_ID_CSS46,
|
||||
PATH_ID_CSS50,
|
||||
PATH_ID_END,
|
||||
};
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C"
|
||||
{
|
||||
|
@ -127,6 +203,7 @@ extern "C"
|
|||
bool context_is_input_active();
|
||||
void context_trigger_resize();
|
||||
void context_set_fullscreen_mode(sint32 mode);
|
||||
void context_recreate_window();
|
||||
sint32 context_get_resolutions(struct Resolution * * outResolutions);
|
||||
sint32 context_get_width();
|
||||
sint32 context_get_height();
|
||||
|
@ -135,6 +212,8 @@ extern "C"
|
|||
rct_window * context_open_window(rct_windowclass wc);
|
||||
void context_input_handle_keyboard(bool isTitle);
|
||||
bool context_read_bmp(void * * outPixels, uint32 * outWidth, uint32 * outHeight, const utf8 * path);
|
||||
void context_quit();
|
||||
const utf8 * context_get_path_legacy(sint32 pathId);
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
|
|
@ -15,6 +15,7 @@
|
|||
#pragma endregion
|
||||
|
||||
#include "core/FileStream.hpp"
|
||||
#include "core/Path.hpp"
|
||||
#include "FileClassifier.h"
|
||||
#include "rct12/SawyerChunkReader.h"
|
||||
|
||||
|
@ -151,3 +152,19 @@ static bool TryClassifyAsTD4_TD6(IStream * stream, ClassifiedFile * result)
|
|||
|
||||
return success;
|
||||
}
|
||||
|
||||
extern "C"
|
||||
{
|
||||
uint32 get_file_extension_type(const utf8 * path)
|
||||
{
|
||||
auto extension = Path::GetExtension(path);
|
||||
if (String::Equals(extension, ".dat", true)) return FILE_EXTENSION_DAT;
|
||||
if (String::Equals(extension, ".sc4", true)) return FILE_EXTENSION_SC4;
|
||||
if (String::Equals(extension, ".sv4", true)) return FILE_EXTENSION_SV4;
|
||||
if (String::Equals(extension, ".td4", true)) return FILE_EXTENSION_TD4;
|
||||
if (String::Equals(extension, ".sc6", true)) return FILE_EXTENSION_SC6;
|
||||
if (String::Equals(extension, ".sv6", true)) return FILE_EXTENSION_SV6;
|
||||
if (String::Equals(extension, ".td6", true)) return FILE_EXTENSION_TD6;
|
||||
return FILE_EXTENSION_UNKNOWN;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -16,9 +16,24 @@
|
|||
|
||||
#pragma once
|
||||
|
||||
#include <string>
|
||||
#include "common.h"
|
||||
|
||||
enum
|
||||
{
|
||||
FILE_EXTENSION_UNKNOWN,
|
||||
FILE_EXTENSION_DAT,
|
||||
FILE_EXTENSION_SC4,
|
||||
FILE_EXTENSION_SV4,
|
||||
FILE_EXTENSION_TD4,
|
||||
FILE_EXTENSION_SC6,
|
||||
FILE_EXTENSION_SV6,
|
||||
FILE_EXTENSION_TD6,
|
||||
};
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
||||
#include <string>
|
||||
|
||||
interface IStream;
|
||||
|
||||
enum class FILE_TYPE
|
||||
|
@ -38,3 +53,15 @@ struct ClassifiedFile
|
|||
|
||||
bool TryClassifyFile(const std::string &path, ClassifiedFile * result);
|
||||
bool TryClassifyFile(IStream * stream, ClassifiedFile * result);
|
||||
|
||||
#endif // __cplusplus
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C"
|
||||
{
|
||||
#endif
|
||||
uint32 get_file_extension_type(const utf8 * path);
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
|
|
@ -23,7 +23,6 @@ extern "C"
|
|||
{
|
||||
#include "audio/audio.h"
|
||||
#include "platform/platform.h"
|
||||
#include "rct2.h"
|
||||
}
|
||||
|
||||
extern "C"
|
||||
|
@ -48,33 +47,8 @@ extern "C"
|
|||
EVP_MD_CTX * gHashCTX = nullptr;
|
||||
#endif // DISABLE_NETWORK
|
||||
|
||||
bool check_file_path(sint32 pathId)
|
||||
{
|
||||
const utf8 * path = get_file_path(pathId);
|
||||
switch (pathId) {
|
||||
case PATH_ID_G1:
|
||||
if (!File::Exists(path))
|
||||
{
|
||||
Console::Error::WriteLine("Unable to find '%s'", path);
|
||||
return false;
|
||||
}
|
||||
break;
|
||||
case PATH_ID_CUSTOM1:
|
||||
case PATH_ID_CUSTOM2:
|
||||
if (File::Exists(path))
|
||||
{
|
||||
try
|
||||
{
|
||||
auto fs = FileStream(path, FILE_MODE_OPEN);
|
||||
sint32 index = 36 + (pathId - PATH_ID_CUSTOM1);
|
||||
gRideMusicInfoList[index]->length = fs.GetLength();
|
||||
}
|
||||
catch (const Exception &)
|
||||
{
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
uint32 gCurrentDrawCount = 0;
|
||||
uint8 gScreenFlags;
|
||||
uint32 gScreenAge;
|
||||
uint8 gSavePromptMode;
|
||||
}
|
||||
|
|
|
@ -37,6 +37,18 @@ enum STARTUP_ACTION
|
|||
STARTUP_ACTION_EDIT
|
||||
};
|
||||
|
||||
enum
|
||||
{
|
||||
// Although this is labeled a flag it actually means when
|
||||
// zero the screen is in playing mode.
|
||||
SCREEN_FLAGS_PLAYING = 0,
|
||||
SCREEN_FLAGS_TITLE_DEMO = 1,
|
||||
SCREEN_FLAGS_SCENARIO_EDITOR = 2,
|
||||
SCREEN_FLAGS_TRACK_DESIGNER = 4,
|
||||
SCREEN_FLAGS_TRACK_MANAGER = 8,
|
||||
SCREEN_FLAGS_EDITOR = (SCREEN_FLAGS_SCENARIO_EDITOR | SCREEN_FLAGS_TRACK_DESIGNER | SCREEN_FLAGS_TRACK_MANAGER),
|
||||
};
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C"
|
||||
{
|
||||
|
@ -67,6 +79,11 @@ extern "C"
|
|||
extern char* gNetworkStartAddress;
|
||||
#endif
|
||||
|
||||
extern uint32 gCurrentDrawCount;
|
||||
extern uint8 gScreenFlags;
|
||||
extern uint32 gScreenAge;
|
||||
extern uint8 gSavePromptMode;
|
||||
|
||||
void openrct2_write_full_version_info(utf8 * buffer, size_t bufferSize);
|
||||
void openrct2_finish();
|
||||
|
||||
|
|
|
@ -27,7 +27,6 @@
|
|||
extern "C"
|
||||
{
|
||||
#include "platform/platform.h"
|
||||
#include "rct2.h"
|
||||
}
|
||||
|
||||
using namespace OpenRCT2;
|
||||
|
|
|
@ -33,7 +33,7 @@ const char gVersionInfoFull[] =
|
|||
#ifdef OPENRCT2_BUILD_SERVER
|
||||
" provided by " OPENRCT2_BUILD_SERVER
|
||||
#endif
|
||||
#ifdef DEBUG
|
||||
#ifndef NDEBUG
|
||||
" (DEBUG)"
|
||||
#endif
|
||||
;
|
||||
|
|
|
@ -19,7 +19,7 @@
|
|||
#include "common.h"
|
||||
|
||||
#define OPENRCT2_NAME "OpenRCT2"
|
||||
#define OPENRCT2_VERSION "0.1.0"
|
||||
#define OPENRCT2_VERSION "0.1.1"
|
||||
|
||||
#if defined(__amd64__) || defined(_M_AMD64)
|
||||
#define OPENRCT2_ARCHITECTURE "x86-64"
|
||||
|
|
|
@ -359,7 +359,7 @@ void audio_init_ride_sounds_and_info()
|
|||
for (size_t m = 0; m < Util::CountOf(gRideMusicInfoList); m++)
|
||||
{
|
||||
rct_ride_music_info *rideMusicInfo = gRideMusicInfoList[m];
|
||||
const utf8 *path = get_file_path(rideMusicInfo->path_id);
|
||||
const utf8 * path = context_get_path_legacy(rideMusicInfo->path_id);
|
||||
if (File::Exists(path))
|
||||
{
|
||||
try
|
||||
|
@ -370,6 +370,13 @@ void audio_init_ride_sounds_and_info()
|
|||
{
|
||||
rideMusicInfo->length = 0;
|
||||
}
|
||||
// FIX: Custom ones have no length set and while populating the combo box
|
||||
// they are ignored if 0.
|
||||
if ((m == 36 || m == 37) && rideMusicInfo->length == 0)
|
||||
{
|
||||
// Try to get it.
|
||||
rideMusicInfo->length = fs.GetLength();
|
||||
}
|
||||
}
|
||||
catch (const Exception &)
|
||||
{
|
|
@ -23,11 +23,6 @@
|
|||
#include "AudioMixer.h"
|
||||
#include "AudioSource.h"
|
||||
|
||||
extern "C"
|
||||
{
|
||||
#include "../rct2.h"
|
||||
}
|
||||
|
||||
using namespace OpenRCT2;
|
||||
using namespace OpenRCT2::Audio;
|
||||
|
||||
|
@ -143,7 +138,7 @@ void * Mixer_Play_Music(sint32 pathId, sint32 loop, sint32 streaming)
|
|||
{
|
||||
if (streaming)
|
||||
{
|
||||
const utf8 * path = get_file_path(pathId);
|
||||
const utf8 * path = context_get_path_legacy(pathId);
|
||||
|
||||
IAudioContext * audioContext = GetContext()->GetAudioContext();
|
||||
IAudioSource * source = audioContext->CreateStreamFromWAV(path);
|
||||
|
|
|
@ -22,6 +22,7 @@
|
|||
#include "localisation/localisation.h"
|
||||
#include "management/finance.h"
|
||||
#include "network/network.h"
|
||||
#include "ride/station.h"
|
||||
#include "util/util.h"
|
||||
#include "world/Climate.h"
|
||||
#include "world/footpath.h"
|
||||
|
@ -50,6 +51,7 @@ bool gCheatsDisablePlantAging = false;
|
|||
bool gCheatsEnableChainLiftOnAllTrack = false;
|
||||
bool gCheatsAllowArbitraryRideTypeChanges = false;
|
||||
bool gCheatsDisableRideValueAging = false;
|
||||
bool gCheatsIgnoreResearchStatus = false;
|
||||
|
||||
sint32 park_rating_spinner_value;
|
||||
|
||||
|
@ -69,7 +71,7 @@ static void cheat_set_grass_length(sint32 length)
|
|||
if (map_element_get_terrain(mapElement) != TERRAIN_GRASS)
|
||||
continue;
|
||||
|
||||
if ((mapElement->properties.surface.terrain & 0x1F) > 0)
|
||||
if (map_get_water_height(mapElement) > 0)
|
||||
continue;
|
||||
|
||||
mapElement->properties.surface.grass_length = length;
|
||||
|
@ -174,7 +176,7 @@ static void cheat_renew_rides()
|
|||
// Set build date to current date (so the ride is brand new)
|
||||
ride->build_date = gDateMonthsElapsed;
|
||||
// Set reliability to 100
|
||||
ride->reliability = (100 << 8);
|
||||
ride->reliability = RIDE_INITIAL_RELIABILITY;
|
||||
}
|
||||
window_invalidate_by_class(WC_RIDE);
|
||||
}
|
||||
|
@ -283,36 +285,39 @@ static void cheat_set_guest_parameter(sint32 parameter, sint32 value)
|
|||
|
||||
FOR_ALL_GUESTS(spriteIndex, peep) {
|
||||
switch(parameter) {
|
||||
case GUEST_PARAMETER_HAPPINESS:
|
||||
peep->happiness = value;
|
||||
// Clear the 'red-faced with anger' status if we're making the guest happy
|
||||
if (value > 0)
|
||||
{
|
||||
peep->peep_flags &= ~PEEP_FLAGS_ANGRY;
|
||||
peep->angriness = 0;
|
||||
}
|
||||
break;
|
||||
case GUEST_PARAMETER_ENERGY:
|
||||
peep->energy = value;
|
||||
break;
|
||||
case GUEST_PARAMETER_HUNGER:
|
||||
peep->hunger = value;
|
||||
break;
|
||||
case GUEST_PARAMETER_THIRST:
|
||||
peep->thirst = value;
|
||||
break;
|
||||
case GUEST_PARAMETER_NAUSEA:
|
||||
peep->nausea = value;
|
||||
break;
|
||||
case GUEST_PARAMETER_NAUSEA_TOLERANCE:
|
||||
peep->nausea_tolerance = value;
|
||||
break;
|
||||
case GUEST_PARAMETER_BATHROOM:
|
||||
peep->bathroom = value;
|
||||
break;
|
||||
case GUEST_PARAMETER_PREFERRED_RIDE_INTENSITY:
|
||||
peep->intensity = (15 << 4) | value;
|
||||
break;
|
||||
case GUEST_PARAMETER_HAPPINESS:
|
||||
peep->happiness = value;
|
||||
peep->happiness_target = value;
|
||||
// Clear the 'red-faced with anger' status if we're making the guest happy
|
||||
if (value > 0)
|
||||
{
|
||||
peep->peep_flags &= ~PEEP_FLAGS_ANGRY;
|
||||
peep->angriness = 0;
|
||||
}
|
||||
break;
|
||||
case GUEST_PARAMETER_ENERGY:
|
||||
peep->energy = value;
|
||||
peep->energy_target = value;
|
||||
break;
|
||||
case GUEST_PARAMETER_HUNGER:
|
||||
peep->hunger = value;
|
||||
break;
|
||||
case GUEST_PARAMETER_THIRST:
|
||||
peep->thirst = value;
|
||||
break;
|
||||
case GUEST_PARAMETER_NAUSEA:
|
||||
peep->nausea = value;
|
||||
peep->nausea_target = value;
|
||||
break;
|
||||
case GUEST_PARAMETER_NAUSEA_TOLERANCE:
|
||||
peep->nausea_tolerance = value;
|
||||
break;
|
||||
case GUEST_PARAMETER_BATHROOM:
|
||||
peep->bathroom = value;
|
||||
break;
|
||||
case GUEST_PARAMETER_PREFERRED_RIDE_INTENSITY:
|
||||
peep->intensity = (15 << 4) | value;
|
||||
break;
|
||||
}
|
||||
peep_update_sprite_type(peep);
|
||||
}
|
||||
|
@ -369,7 +374,7 @@ static void cheat_remove_all_guests()
|
|||
{
|
||||
ride->num_riders = 0;
|
||||
|
||||
for (size_t stationIndex = 0; stationIndex < RCT12_MAX_STATIONS_PER_RIDE; stationIndex++)
|
||||
for (size_t stationIndex = 0; stationIndex < MAX_STATIONS; stationIndex++)
|
||||
{
|
||||
ride->queue_length[stationIndex] = 0;
|
||||
ride->last_peep_in_queue[stationIndex] = SPRITE_INDEX_NULL;
|
||||
|
@ -428,7 +433,7 @@ static void cheat_set_staff_speed(uint8 value)
|
|||
|
||||
FOR_ALL_STAFF(spriteIndex, peep) {
|
||||
peep->energy = value;
|
||||
peep->energy_growth_rate = value;
|
||||
peep->energy_target = value;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -526,6 +531,7 @@ void game_command_cheat(sint32* eax, sint32* ebx, sint32* ecx, sint32* edx, sint
|
|||
case CHEAT_ALLOW_ARBITRARY_RIDE_TYPE_CHANGES: gCheatsAllowArbitraryRideTypeChanges = *edx != 0; window_invalidate_by_class(WC_RIDE); break;
|
||||
case CHEAT_OWNALLLAND: cheat_own_all_land(); break;
|
||||
case CHEAT_DISABLERIDEVALUEAGING: gCheatsDisableRideValueAging = *edx != 0; break;
|
||||
case CHEAT_IGNORERESEARCHSTATUS: gCheatsIgnoreResearchStatus = *edx != 0; break;
|
||||
}
|
||||
if (network_get_mode() == NETWORK_MODE_NONE) {
|
||||
config_save_default();
|
||||
|
@ -557,6 +563,7 @@ void cheats_reset()
|
|||
gCheatsDisablePlantAging = false;
|
||||
gCheatsAllowArbitraryRideTypeChanges = false;
|
||||
gCheatsDisableRideValueAging = false;
|
||||
gCheatsIgnoreResearchStatus = false;
|
||||
}
|
||||
|
||||
//Generates the string to print for the server log when a cheat is used.
|
||||
|
@ -763,6 +770,7 @@ const char* cheats_get_cheat_string(int cheat, int edx, int edi) {
|
|||
case CHEAT_SETMONEY: return language_get_string(STR_SET_MONEY);
|
||||
case CHEAT_OWNALLLAND: return language_get_string(STR_CHEAT_OWN_ALL_LAND);
|
||||
case CHEAT_DISABLERIDEVALUEAGING: return language_get_string(STR_CHEAT_DISABLE_RIDE_VALUE_AGING);
|
||||
case CHEAT_IGNORERESEARCHSTATUS: return language_get_string(STR_CHEAT_IGNORE_RESEARCH_STATUS);
|
||||
}
|
||||
|
||||
return "";
|
||||
|
|
|
@ -39,6 +39,7 @@ extern bool gCheatsDisablePlantAging;
|
|||
extern bool gCheatsDisableRideValueAging;
|
||||
extern bool gCheatsEnableChainLiftOnAllTrack;
|
||||
extern bool gCheatsAllowArbitraryRideTypeChanges;
|
||||
extern bool gCheatsIgnoreResearchStatus;
|
||||
|
||||
|
||||
enum {
|
||||
|
@ -88,6 +89,7 @@ enum {
|
|||
CHEAT_ALLOW_ARBITRARY_RIDE_TYPE_CHANGES,
|
||||
CHEAT_OWNALLLAND,
|
||||
CHEAT_DISABLERIDEVALUEAGING,
|
||||
CHEAT_IGNORERESEARCHSTATUS,
|
||||
};
|
||||
|
||||
enum {
|
||||
|
@ -108,7 +110,6 @@ enum {
|
|||
OBJECT_UMBRELLA
|
||||
};
|
||||
|
||||
#define CHEATS_MONEY_INCREMENT MONEY(5000,00)
|
||||
#define CHEATS_GIVE_GUESTS_MONEY MONEY(1000,00)
|
||||
#define CHEATS_TRAM_INCREMENT 250
|
||||
#define CHEATS_STAFF_FAST_SPEED 0xFF
|
||||
|
|
|
@ -20,6 +20,7 @@
|
|||
#include "../core/Exception.hpp"
|
||||
#include "../core/Guard.hpp"
|
||||
#include "../core/Path.hpp"
|
||||
#include "../FileClassifier.h"
|
||||
#include "../ParkImporter.h"
|
||||
#include "../rct2/S6Exporter.h"
|
||||
#include "CommandLine.hpp"
|
||||
|
@ -29,7 +30,6 @@ extern "C"
|
|||
#include "../game.h"
|
||||
#include "../interface/window.h"
|
||||
#include "../OpenRCT2.h"
|
||||
#include "../rct2.h"
|
||||
}
|
||||
|
||||
static void WriteConvertFromAndToMessage(uint32 sourceFileType, uint32 destinationFileType);
|
||||
|
|
|
@ -791,7 +791,7 @@ sint32 cmdline_for_sprite(const char **argv, sint32 argc)
|
|||
fprintf(stdout, "Finished\n");
|
||||
return 1;
|
||||
} else {
|
||||
fprintf(stderr, "Unknown sprite command.");
|
||||
fprintf(stderr, "Unknown sprite command.\n");
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -347,18 +347,22 @@ namespace Config
|
|||
{
|
||||
// If the `player_name` setting is missing or equal to the empty string
|
||||
// use the logged-in user's username instead
|
||||
utf8* playerName = reader->GetCString("player_name", "");
|
||||
if (String::IsNullOrEmpty(playerName))
|
||||
auto playerName = reader->GetString("player_name", "");
|
||||
if (playerName.empty())
|
||||
{
|
||||
playerName = String::Duplicate(platform_get_username());
|
||||
if (playerName == nullptr)
|
||||
playerName = String::ToStd(platform_get_username());
|
||||
if (playerName.empty())
|
||||
{
|
||||
playerName = String::Duplicate("Player");
|
||||
playerName = "Player";
|
||||
}
|
||||
}
|
||||
|
||||
// Trim any whitespace before or after the player's name,
|
||||
// to avoid people pretending to be someone else
|
||||
playerName = String::Trim(playerName);
|
||||
|
||||
auto model = &gConfigNetwork;
|
||||
model->player_name = playerName;
|
||||
model->player_name = String::Duplicate(playerName);
|
||||
model->default_port = reader->GetSint32("default_port", NETWORK_DEFAULT_PORT);
|
||||
model->listen_address = reader->GetCString("listen_address", "");
|
||||
model->default_password = reader->GetCString("default_password", nullptr);
|
||||
|
@ -664,6 +668,7 @@ extern "C"
|
|||
SafeFree(gConfigSound.device);
|
||||
SafeFree(gConfigTwitch.channel);
|
||||
SafeFree(gConfigNetwork.player_name);
|
||||
SafeFree(gConfigNetwork.listen_address);
|
||||
SafeFree(gConfigNetwork.default_password);
|
||||
SafeFree(gConfigNetwork.server_name);
|
||||
SafeFree(gConfigNetwork.server_description);
|
||||
|
|
|
@ -34,14 +34,13 @@
|
|||
|
||||
extern "C"
|
||||
{
|
||||
void openrct2_assert(bool expression, const char * message, ...)
|
||||
void openrct2_assert_fwd(bool expression, const char * message, ...)
|
||||
{
|
||||
va_list args;
|
||||
va_start(args, message);
|
||||
Guard::Assert_VA(expression, message, args);
|
||||
va_end(args);
|
||||
va_list va;
|
||||
va_start(va, message);
|
||||
Guard::Assert_VA(expression, message, va);
|
||||
va_end(va);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
namespace Guard
|
||||
|
|
|
@ -16,17 +16,19 @@
|
|||
|
||||
#pragma once
|
||||
|
||||
#include <stdarg.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif // __cplusplus
|
||||
|
||||
void openrct2_assert(bool expression, const char * message, ...);
|
||||
void openrct2_assert_fwd(bool expression, const char * message, ...);
|
||||
|
||||
#define openrct2_assert(expr, msg, ...) if(!(expr)) { openrct2_assert_fwd((expr), msg, ##__VA_ARGS__); }
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
||||
#include <stdarg.h>
|
||||
|
||||
enum class ASSERT_BEHAVIOUR
|
||||
{
|
||||
ABORT,
|
||||
|
|
|
@ -57,7 +57,10 @@ namespace OpenRCT2 { namespace Drawing
|
|||
virtual void SetUncappedFrameRate(bool uncapped) abstract;
|
||||
|
||||
virtual void Invalidate(sint32 left, sint32 top, sint32 right, sint32 bottom) abstract;
|
||||
virtual void Draw() abstract;
|
||||
virtual void BeginDraw() abstract;
|
||||
virtual void EndDraw() abstract;
|
||||
virtual void PaintWindows() abstract;
|
||||
virtual void PaintRain() abstract;
|
||||
virtual void CopyRect(sint32 x, sint32 y, sint32 width, sint32 height, sint32 dx, sint32 dy) abstract;
|
||||
virtual sint32 Screenshot() abstract;
|
||||
|
||||
|
|
|
@ -20,6 +20,7 @@
|
|||
#include "../core/Exception.hpp"
|
||||
#include "../core/Registration.hpp"
|
||||
#include "../interface/Screenshot.h"
|
||||
#include "../paint/Painter.h"
|
||||
#include "IDrawingContext.h"
|
||||
#include "IDrawingEngine.h"
|
||||
#include "NewDrawing.h"
|
||||
|
@ -30,15 +31,17 @@ extern "C"
|
|||
#include "../drawing/drawing.h"
|
||||
#include "../localisation/string_ids.h"
|
||||
#include "../platform/platform.h"
|
||||
#include "../rct2.h"
|
||||
}
|
||||
|
||||
using namespace OpenRCT2;
|
||||
using namespace OpenRCT2::Drawing;
|
||||
using namespace OpenRCT2::Paint;
|
||||
using namespace OpenRCT2::Ui;
|
||||
|
||||
static sint32 _drawingEngineType = DRAWING_ENGINE_SOFTWARE;
|
||||
static IDrawingEngine * _drawingEngine = nullptr;
|
||||
// TODO move this to Context
|
||||
static Painter * _painter = nullptr;
|
||||
|
||||
extern "C"
|
||||
{
|
||||
|
@ -57,31 +60,33 @@ extern "C"
|
|||
return _drawingEngineType;
|
||||
}
|
||||
|
||||
bool drawing_engine_requires_restart(sint32 srcEngine, sint32 dstEngine)
|
||||
bool drawing_engine_requires_new_window(sint32 srcEngine, sint32 dstEngine)
|
||||
{
|
||||
// Linux requires a restart. This could be improved in the future by recreating the window,
|
||||
// https://github.com/OpenRCT2/OpenRCT2/issues/2015
|
||||
bool requiresRestart = true;
|
||||
#ifdef _WIN32
|
||||
if (dstEngine != DRAWING_ENGINE_OPENGL)
|
||||
if (srcEngine != DRAWING_ENGINE_OPENGL && dstEngine != DRAWING_ENGINE_OPENGL)
|
||||
{
|
||||
// Windows is apparently able to switch to hardware rendering on the fly although
|
||||
// using the same window in an unaccelerated and accelerated context is unsupported by SDL2
|
||||
requiresRestart = false;
|
||||
return false;
|
||||
}
|
||||
#endif
|
||||
return requiresRestart;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
void drawing_engine_init()
|
||||
{
|
||||
assert(_drawingEngine == nullptr);
|
||||
assert(_painter == nullptr);
|
||||
|
||||
_drawingEngineType = gConfigGeneral.drawing_engine;
|
||||
|
||||
IContext * context = GetContext();
|
||||
IUiContext * uiContext = context->GetUiContext();
|
||||
IDrawingEngine * drawingEngine = uiContext->CreateDrawingEngine((DRAWING_ENGINE_TYPE)_drawingEngineType);
|
||||
auto context = GetContext();
|
||||
auto uiContext = context->GetUiContext();
|
||||
auto drawingEngine = uiContext->CreateDrawingEngine((DRAWING_ENGINE_TYPE)_drawingEngineType);
|
||||
|
||||
_painter = new Painter(uiContext);
|
||||
|
||||
if (drawingEngine == nullptr)
|
||||
{
|
||||
if (_drawingEngineType == DRAWING_ENGINE_SOFTWARE)
|
||||
|
@ -135,13 +140,11 @@ extern "C"
|
|||
|
||||
void drawing_engine_resize()
|
||||
{
|
||||
if (_drawingEngine == nullptr)
|
||||
if (_drawingEngine != nullptr)
|
||||
{
|
||||
drawing_engine_init();
|
||||
IUiContext * uiContext = GetContext()->GetUiContext();
|
||||
_drawingEngine->Resize(uiContext->GetWidth(), uiContext->GetHeight());
|
||||
}
|
||||
|
||||
IUiContext * uiContext = GetContext()->GetUiContext();
|
||||
_drawingEngine->Resize(uiContext->GetWidth(), uiContext->GetHeight());
|
||||
}
|
||||
|
||||
void drawing_engine_set_palette(const rct_palette_entry * colours)
|
||||
|
@ -154,9 +157,11 @@ extern "C"
|
|||
|
||||
void drawing_engine_draw()
|
||||
{
|
||||
if (_drawingEngine != nullptr)
|
||||
if (_drawingEngine != nullptr && _painter != nullptr)
|
||||
{
|
||||
_drawingEngine->Draw();
|
||||
_drawingEngine->BeginDraw();
|
||||
_painter->Paint(_drawingEngine);
|
||||
_drawingEngine->EndDraw();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -171,7 +176,9 @@ extern "C"
|
|||
void drawing_engine_dispose()
|
||||
{
|
||||
delete _drawingEngine;
|
||||
delete _painter;
|
||||
_drawingEngine = nullptr;
|
||||
_painter = nullptr;
|
||||
}
|
||||
|
||||
rct_drawpixelinfo * drawing_engine_get_dpi()
|
||||
|
|
|
@ -21,13 +21,12 @@ extern "C"
|
|||
{
|
||||
#endif
|
||||
|
||||
#include "../rct2.h"
|
||||
#include "drawing.h"
|
||||
|
||||
extern rct_string_id DrawingEngineStringIds[3];
|
||||
|
||||
sint32 drawing_engine_get_type();
|
||||
bool drawing_engine_requires_restart(sint32 srcEngine, sint32 dstEngine);
|
||||
bool drawing_engine_requires_new_window(sint32 srcEngine, sint32 dstEngine);
|
||||
void drawing_engine_init();
|
||||
void drawing_engine_resize();
|
||||
void drawing_engine_set_palette(const rct_palette_entry * colours);
|
||||
|
|
|
@ -24,6 +24,7 @@
|
|||
#include "../core/Path.hpp"
|
||||
#include "../core/Util.hpp"
|
||||
#include "../OpenRCT2.h"
|
||||
#include "../PlatformEnvironment.h"
|
||||
#include "../sprites.h"
|
||||
#include "../ui/UiContext.h"
|
||||
|
||||
|
@ -88,12 +89,15 @@ extern "C"
|
|||
*
|
||||
* rct2: 0x00678998
|
||||
*/
|
||||
bool gfx_load_g1()
|
||||
bool gfx_load_g1(void * platformEnvironment)
|
||||
{
|
||||
log_verbose("gfx_load_g1()");
|
||||
auto env = (IPlatformEnvironment *)platformEnvironment;
|
||||
|
||||
log_verbose("gfx_load_g1(...)");
|
||||
try
|
||||
{
|
||||
auto fs = FileStream(get_file_path(PATH_ID_G1), FILE_MODE_OPEN);
|
||||
auto path = Path::Combine(env->GetDirectoryPath(DIRBASE::RCT2, DIRID::DATA), "g1.dat");
|
||||
auto fs = FileStream(path, FILE_MODE_OPEN);
|
||||
rct_g1_header header = fs.ReadValue<rct_g1_header>();
|
||||
|
||||
/* number of elements is stored in g1.dat, but because the entry
|
||||
|
@ -702,4 +706,13 @@ extern "C"
|
|||
{
|
||||
return _csgLoaded;
|
||||
}
|
||||
|
||||
rct_size16 FASTCALL gfx_get_sprite_size(uint32 image_id)
|
||||
{
|
||||
rct_g1_element *g1_source = gfx_get_g1_element(image_id & 0X7FFFF);
|
||||
rct_size16 size;
|
||||
size.width = g1_source->width;
|
||||
size.height = g1_source->height;
|
||||
return size;
|
||||
}
|
||||
}
|
|
@ -33,7 +33,6 @@ extern "C"
|
|||
#include "../interface/window.h"
|
||||
#include "../intro.h"
|
||||
#include "../platform/platform.h"
|
||||
#include "../rct2.h"
|
||||
#include "drawing.h"
|
||||
#include "lightfx.h"
|
||||
}
|
||||
|
@ -133,10 +132,12 @@ void X8RainDrawer::Restore()
|
|||
}
|
||||
}
|
||||
|
||||
#ifdef __WARN_SUGGEST_FINAL_METHODS__
|
||||
#pragma GCC diagnostic push
|
||||
#pragma GCC diagnostic ignored "-Wsuggest-final-methods"
|
||||
#endif
|
||||
|
||||
X8DrawingEngine::X8DrawingEngine()
|
||||
X8DrawingEngine::X8DrawingEngine(Ui::IUiContext * uiContext)
|
||||
{
|
||||
_drawingContext = new X8DrawingContext(this);
|
||||
#ifdef __ENABLE_LIGHTFX__
|
||||
|
@ -200,44 +201,45 @@ void X8DrawingEngine::Invalidate(sint32 left, sint32 top, sint32 right, sint32 b
|
|||
}
|
||||
}
|
||||
|
||||
void X8DrawingEngine::Draw()
|
||||
void X8DrawingEngine::BeginDraw()
|
||||
{
|
||||
if (gIntroState != INTRO_STATE_NONE)
|
||||
{
|
||||
intro_draw(&_bitsDPI);
|
||||
}
|
||||
else
|
||||
if (gIntroState == INTRO_STATE_NONE)
|
||||
{
|
||||
#ifdef __ENABLE_LIGHTFX__
|
||||
// HACK we need to re-configure the bits if light fx has been enabled / disabled
|
||||
if (_lastLightFXenabled != (gConfigGeneral.enable_light_fx != 0))
|
||||
{
|
||||
Resize(_width, _height);
|
||||
}
|
||||
// HACK we need to re-configure the bits if light fx has been enabled / disabled
|
||||
if (_lastLightFXenabled != (gConfigGeneral.enable_light_fx != 0))
|
||||
{
|
||||
Resize(_width, _height);
|
||||
}
|
||||
#endif
|
||||
|
||||
_rainDrawer.SetDPI(&_bitsDPI);
|
||||
_rainDrawer.Restore();
|
||||
|
||||
ResetWindowVisbilities();
|
||||
|
||||
// Redraw dirty regions before updating the viewports, otherwise
|
||||
// when viewports get panned, they copy dirty pixels
|
||||
DrawAllDirtyBlocks();
|
||||
|
||||
window_update_all_viewports();
|
||||
DrawAllDirtyBlocks();
|
||||
window_update_all();
|
||||
|
||||
gfx_draw_pickedup_peep(&_bitsDPI);
|
||||
gfx_invalidate_pickedup_peep();
|
||||
|
||||
DrawRain(&_bitsDPI, &_rainDrawer);
|
||||
|
||||
rct2_draw(&_bitsDPI);
|
||||
}
|
||||
}
|
||||
|
||||
void X8DrawingEngine::EndDraw()
|
||||
{
|
||||
}
|
||||
|
||||
void X8DrawingEngine::PaintWindows()
|
||||
{
|
||||
ResetWindowVisbilities();
|
||||
|
||||
// Redraw dirty regions before updating the viewports, otherwise
|
||||
// when viewports get panned, they copy dirty pixels
|
||||
DrawAllDirtyBlocks();
|
||||
window_update_all_viewports();
|
||||
DrawAllDirtyBlocks();
|
||||
|
||||
// TODO move this out from drawing
|
||||
window_update_all();
|
||||
}
|
||||
|
||||
void X8DrawingEngine::PaintRain()
|
||||
{
|
||||
DrawRain(&_bitsDPI, &_rainDrawer);
|
||||
}
|
||||
|
||||
void X8DrawingEngine::CopyRect(sint32 x, sint32 y, sint32 width, sint32 height, sint32 dx, sint32 dy)
|
||||
{
|
||||
if (dx == 0 && dy == 0) return;
|
||||
|
@ -467,7 +469,9 @@ void X8DrawingEngine::DrawDirtyBlocks(uint32 x, uint32 y, uint32 columns, uint32
|
|||
window_draw_all(&_bitsDPI, left, top, right, bottom);
|
||||
}
|
||||
|
||||
#ifdef __WARN_SUGGEST_FINAL_METHODS__
|
||||
#pragma GCC diagnostic pop
|
||||
#endif
|
||||
|
||||
X8DrawingContext::X8DrawingContext(X8DrawingEngine * engine)
|
||||
{
|
||||
|
@ -709,16 +713,17 @@ void X8DrawingContext::FilterRect(FILTER_PALETTE_ID palette, sint32 left, sint32
|
|||
rct_g1_element * g1Element = &g1Elements[g1Index];
|
||||
uint8 * g1Bits = g1Element->offset;
|
||||
|
||||
const sint32 scaled_width = width >> dpi->zoom_level;
|
||||
const sint32 step = ((dpi->width >> dpi->zoom_level) + dpi->pitch);
|
||||
|
||||
// Fill the rectangle with the colours from the colour table
|
||||
for (sint32 i = 0; i < height >> dpi->zoom_level; i++)
|
||||
{
|
||||
uint8 * nextdst = dst + (dpi->width >> dpi->zoom_level) + dpi->pitch;
|
||||
for (sint32 j = 0; j < (width >> dpi->zoom_level); j++)
|
||||
uint8 * nextdst = dst + step * i;
|
||||
for (sint32 j = 0; j < scaled_width; j++)
|
||||
{
|
||||
*dst = g1Bits[*dst];
|
||||
dst++;
|
||||
*(nextdst + j) = g1Bits[*(nextdst + j)];
|
||||
}
|
||||
dst = nextdst;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -744,7 +749,7 @@ void X8DrawingContext::DrawSpriteSolid(uint32 image, sint32 x, sint32 y, uint8 c
|
|||
palette[0] = 0;
|
||||
|
||||
image &= 0x7FFFF;
|
||||
gfx_draw_sprite_palette_set_software(_dpi, image | 0x20000000, x, y, palette, nullptr);
|
||||
gfx_draw_sprite_palette_set_software(_dpi, image | IMAGE_TYPE_REMAP, x, y, palette, nullptr);
|
||||
}
|
||||
|
||||
void X8DrawingContext::DrawGlyph(uint32 image, sint32 x, sint32 y, uint8 * palette)
|
||||
|
|
|
@ -20,118 +20,133 @@
|
|||
#include "IDrawingContext.h"
|
||||
#include "IDrawingEngine.h"
|
||||
|
||||
namespace OpenRCT2 { namespace Drawing
|
||||
namespace OpenRCT2
|
||||
{
|
||||
class X8DrawingContext;
|
||||
|
||||
struct DirtyGrid
|
||||
namespace Ui
|
||||
{
|
||||
uint32 BlockShiftX;
|
||||
uint32 BlockShiftY;
|
||||
uint32 BlockWidth;
|
||||
uint32 BlockHeight;
|
||||
uint32 BlockColumns;
|
||||
uint32 BlockRows;
|
||||
uint8 * Blocks;
|
||||
};
|
||||
interface IUiContext;
|
||||
}
|
||||
|
||||
class X8RainDrawer final : public IRainDrawer
|
||||
namespace Drawing
|
||||
{
|
||||
private:
|
||||
struct RainPixel
|
||||
class X8DrawingContext;
|
||||
|
||||
struct DirtyGrid
|
||||
{
|
||||
uint32 Position;
|
||||
uint8 Colour;
|
||||
uint32 BlockShiftX;
|
||||
uint32 BlockShiftY;
|
||||
uint32 BlockWidth;
|
||||
uint32 BlockHeight;
|
||||
uint32 BlockColumns;
|
||||
uint32 BlockRows;
|
||||
uint8 * Blocks;
|
||||
};
|
||||
|
||||
static constexpr uint32 MaxRainPixels = 0xFFFE;
|
||||
class X8RainDrawer final : public IRainDrawer
|
||||
{
|
||||
private:
|
||||
struct RainPixel
|
||||
{
|
||||
uint32 Position;
|
||||
uint8 Colour;
|
||||
};
|
||||
|
||||
size_t _rainPixelsCapacity = MaxRainPixels;
|
||||
uint32 _rainPixelsCount = 0;
|
||||
RainPixel * _rainPixels = nullptr;
|
||||
rct_drawpixelinfo * _screenDPI = nullptr;
|
||||
static constexpr uint32 MaxRainPixels = 0xFFFE;
|
||||
|
||||
public:
|
||||
X8RainDrawer();
|
||||
~X8RainDrawer();
|
||||
void SetDPI(rct_drawpixelinfo * dpi);
|
||||
void Draw(sint32 x, sint32 y, sint32 width, sint32 height, sint32 xStart, sint32 yStart) override;
|
||||
void Restore();
|
||||
};
|
||||
size_t _rainPixelsCapacity = MaxRainPixels;
|
||||
uint32 _rainPixelsCount = 0;
|
||||
RainPixel * _rainPixels = nullptr;
|
||||
rct_drawpixelinfo * _screenDPI = nullptr;
|
||||
|
||||
#pragma GCC diagnostic push
|
||||
#pragma GCC diagnostic ignored "-Wsuggest-final-types"
|
||||
class X8DrawingEngine : public IDrawingEngine
|
||||
{
|
||||
protected:
|
||||
uint32 _width = 0;
|
||||
uint32 _height = 0;
|
||||
uint32 _pitch = 0;
|
||||
size_t _bitsSize = 0;
|
||||
uint8 * _bits = nullptr;
|
||||
public:
|
||||
X8RainDrawer();
|
||||
~X8RainDrawer();
|
||||
void SetDPI(rct_drawpixelinfo * dpi);
|
||||
void Draw(sint32 x, sint32 y, sint32 width, sint32 height, sint32 xStart, sint32 yStart) override;
|
||||
void Restore();
|
||||
};
|
||||
|
||||
DirtyGrid _dirtyGrid = { 0 };
|
||||
#ifdef __WARN_SUGGEST_FINAL_TYPES__
|
||||
#pragma GCC diagnostic push
|
||||
#pragma GCC diagnostic ignored "-Wsuggest-final-types"
|
||||
#endif
|
||||
class X8DrawingEngine : public IDrawingEngine
|
||||
{
|
||||
protected:
|
||||
uint32 _width = 0;
|
||||
uint32 _height = 0;
|
||||
uint32 _pitch = 0;
|
||||
size_t _bitsSize = 0;
|
||||
uint8 * _bits = nullptr;
|
||||
|
||||
rct_drawpixelinfo _bitsDPI = { 0 };
|
||||
DirtyGrid _dirtyGrid = { 0 };
|
||||
|
||||
#ifdef __ENABLE_LIGHTFX__
|
||||
bool _lastLightFXenabled = false;
|
||||
rct_drawpixelinfo _bitsDPI = { 0 };
|
||||
|
||||
#ifdef __ENABLE_LIGHTFX__
|
||||
bool _lastLightFXenabled = false;
|
||||
#endif
|
||||
|
||||
X8RainDrawer _rainDrawer;
|
||||
X8DrawingContext * _drawingContext;
|
||||
|
||||
public:
|
||||
explicit X8DrawingEngine(Ui::IUiContext * uiContext);
|
||||
~X8DrawingEngine() override;
|
||||
|
||||
void Initialise() override;
|
||||
void Resize(uint32 width, uint32 height) override;
|
||||
void SetPalette(const rct_palette_entry * palette) override;
|
||||
void SetUncappedFrameRate(bool uncapped) override;
|
||||
void Invalidate(sint32 left, sint32 top, sint32 right, sint32 bottom) override;
|
||||
void BeginDraw() override;
|
||||
void EndDraw() override;
|
||||
void PaintWindows() override;
|
||||
void PaintRain() override;
|
||||
void CopyRect(sint32 x, sint32 y, sint32 width, sint32 height, sint32 dx, sint32 dy) override;
|
||||
sint32 Screenshot() override;
|
||||
IDrawingContext * GetDrawingContext(rct_drawpixelinfo * dpi) override;
|
||||
rct_drawpixelinfo * GetDrawingPixelInfo() override;
|
||||
DRAWING_ENGINE_FLAGS GetFlags() override;
|
||||
void InvalidateImage(uint32 image) override;
|
||||
|
||||
rct_drawpixelinfo * GetDPI();
|
||||
|
||||
protected:
|
||||
void ConfigureBits(uint32 width, uint32 height, uint32 pitch);
|
||||
|
||||
private:
|
||||
void ConfigureDirtyGrid();
|
||||
static void ResetWindowVisbilities();
|
||||
void DrawAllDirtyBlocks();
|
||||
void DrawDirtyBlocks(uint32 x, uint32 y, uint32 columns, uint32 rows);
|
||||
};
|
||||
#ifdef __WARN_SUGGEST_FINAL_TYPES__
|
||||
#pragma GCC diagnostic pop
|
||||
#endif
|
||||
|
||||
X8RainDrawer _rainDrawer;
|
||||
X8DrawingContext * _drawingContext;
|
||||
class X8DrawingContext final : public IDrawingContext
|
||||
{
|
||||
private:
|
||||
X8DrawingEngine * _engine = nullptr;
|
||||
rct_drawpixelinfo * _dpi = nullptr;
|
||||
|
||||
public:
|
||||
explicit X8DrawingEngine();
|
||||
~X8DrawingEngine() override;
|
||||
public:
|
||||
explicit X8DrawingContext(X8DrawingEngine * engine);
|
||||
~X8DrawingContext() override;
|
||||
|
||||
void Initialise() override;
|
||||
void Resize(uint32 width, uint32 height) override;
|
||||
void SetPalette(const rct_palette_entry * palette) override;
|
||||
void SetUncappedFrameRate(bool uncapped) override;
|
||||
void Invalidate(sint32 left, sint32 top, sint32 right, sint32 bottom) override;
|
||||
void Draw() override;
|
||||
void CopyRect(sint32 x, sint32 y, sint32 width, sint32 height, sint32 dx, sint32 dy) override;
|
||||
sint32 Screenshot() override;
|
||||
IDrawingContext * GetDrawingContext(rct_drawpixelinfo * dpi) override;
|
||||
rct_drawpixelinfo * GetDrawingPixelInfo() override;
|
||||
DRAWING_ENGINE_FLAGS GetFlags() override;
|
||||
void InvalidateImage(uint32 image) override;
|
||||
IDrawingEngine * GetEngine() override;
|
||||
|
||||
rct_drawpixelinfo * GetDPI();
|
||||
void Clear(uint8 paletteIndex) override;
|
||||
void FillRect(uint32 colour, sint32 x, sint32 y, sint32 w, sint32 h) override;
|
||||
void FilterRect(FILTER_PALETTE_ID palette, sint32 left, sint32 top, sint32 right, sint32 bottom) override;
|
||||
void DrawLine(uint32 colour, sint32 x1, sint32 y1, sint32 x2, sint32 y2) override;
|
||||
void DrawSprite(uint32 image, sint32 x, sint32 y, uint32 tertiaryColour) override;
|
||||
void DrawSpriteRawMasked(sint32 x, sint32 y, uint32 maskImage, uint32 colourImage) override;
|
||||
void DrawSpriteSolid(uint32 image, sint32 x, sint32 y, uint8 colour) override;
|
||||
void DrawGlyph(uint32 image, sint32 x, sint32 y, uint8 * palette) override;
|
||||
|
||||
protected:
|
||||
void ConfigureBits(uint32 width, uint32 height, uint32 pitch);
|
||||
|
||||
private:
|
||||
void ConfigureDirtyGrid();
|
||||
static void ResetWindowVisbilities();
|
||||
void DrawAllDirtyBlocks();
|
||||
void DrawDirtyBlocks(uint32 x, uint32 y, uint32 columns, uint32 rows);
|
||||
};
|
||||
#pragma GCC diagnostic pop
|
||||
|
||||
class X8DrawingContext final : public IDrawingContext
|
||||
{
|
||||
private:
|
||||
X8DrawingEngine * _engine = nullptr;
|
||||
rct_drawpixelinfo * _dpi = nullptr;
|
||||
|
||||
public:
|
||||
explicit X8DrawingContext(X8DrawingEngine * engine);
|
||||
~X8DrawingContext() override;
|
||||
|
||||
IDrawingEngine * GetEngine() override;
|
||||
|
||||
void Clear(uint8 paletteIndex) override;
|
||||
void FillRect(uint32 colour, sint32 x, sint32 y, sint32 w, sint32 h) override;
|
||||
void FilterRect(FILTER_PALETTE_ID palette, sint32 left, sint32 top, sint32 right, sint32 bottom) override;
|
||||
void DrawLine(uint32 colour, sint32 x1, sint32 y1, sint32 x2, sint32 y2) override;
|
||||
void DrawSprite(uint32 image, sint32 x, sint32 y, uint32 tertiaryColour) override;
|
||||
void DrawSpriteRawMasked(sint32 x, sint32 y, uint32 maskImage, uint32 colourImage) override;
|
||||
void DrawSpriteSolid(uint32 image, sint32 x, sint32 y, uint8 colour) override;
|
||||
void DrawGlyph(uint32 image, sint32 x, sint32 y, uint8 * palette) override;
|
||||
|
||||
void SetDPI(rct_drawpixelinfo * dpi);
|
||||
};
|
||||
} }
|
||||
void SetDPI(rct_drawpixelinfo * dpi);
|
||||
};
|
||||
}
|
||||
}
|
||||
|
|
|
@ -22,7 +22,6 @@
|
|||
#include "../object.h"
|
||||
#include "../OpenRCT2.h"
|
||||
#include "../platform/platform.h"
|
||||
#include "../rct2.h"
|
||||
#include "../world/water.h"
|
||||
#include "drawing.h"
|
||||
|
||||
|
|
|
@ -238,9 +238,15 @@ typedef struct rct_palette {
|
|||
rct_palette_entry entries[256];
|
||||
} rct_palette;
|
||||
|
||||
typedef struct rct_size16
|
||||
{
|
||||
sint16 width;
|
||||
sint16 height;
|
||||
} rct_size16;
|
||||
|
||||
#define SPRITE_ID_PALETTE_COLOUR_1(colourId) (IMAGE_TYPE_REMAP | ((colourId) << 19))
|
||||
#define SPRITE_ID_PALETTE_COLOUR_2(primaryId, secondaryId) (IMAGE_TYPE_REMAP_2_PLUS | IMAGE_TYPE_REMAP | ((primaryId << 19) | (scondaryId << 24)))
|
||||
#define SPRITE_ID_PALETTE_COLOUR_3(primaryId, secondaryId) (IMAGE_TYPE_REMAP_2_PLUS | ((primaryId << 19) | (scondaryId << 24)))
|
||||
#define SPRITE_ID_PALETTE_COLOUR_2(primaryId, secondaryId) (IMAGE_TYPE_REMAP_2_PLUS | IMAGE_TYPE_REMAP | ((primaryId << 19) | (secondaryId << 24)))
|
||||
#define SPRITE_ID_PALETTE_COLOUR_3(primaryId, secondaryId) (IMAGE_TYPE_REMAP_2_PLUS | ((primaryId << 19) | (secondaryId << 24)))
|
||||
|
||||
#define PALETTE_TO_G1_OFFSET_COUNT 144
|
||||
|
||||
|
@ -311,7 +317,7 @@ void gfx_fill_rect_inset(rct_drawpixelinfo* dpi, sint16 left, sint16 top, sint16
|
|||
void gfx_filter_rect(rct_drawpixelinfo *dpi, sint32 left, sint32 top, sint32 right, sint32 bottom, FILTER_PALETTE_ID palette);
|
||||
|
||||
// sprite
|
||||
bool gfx_load_g1();
|
||||
bool gfx_load_g1(void * platformEnvironment);
|
||||
bool gfx_load_g2();
|
||||
bool gfx_load_csg();
|
||||
void gfx_unload_g1();
|
||||
|
@ -363,7 +369,7 @@ void shorten_path(utf8 *buffer, size_t bufferSize, const utf8 *path, sint32 avai
|
|||
void scrolling_text_initialise_bitmaps();
|
||||
sint32 scrolling_text_setup(rct_string_id stringId, uint16 scroll, uint16 scrollingMode);
|
||||
|
||||
void rct2_draw(rct_drawpixelinfo *dpi);
|
||||
rct_size16 FASTCALL gfx_get_sprite_size(uint32 image_id);
|
||||
|
||||
#include "NewDrawing.h"
|
||||
|
||||
|
|
|
@ -18,7 +18,6 @@
|
|||
|
||||
#include "../common.h"
|
||||
#include "../game.h"
|
||||
#include "../rct2.h"
|
||||
#include "../interface/viewport.h"
|
||||
#include "../interface/window.h"
|
||||
#include "../paint/map_element/map_element.h"
|
||||
|
@ -290,7 +289,7 @@ void lightfx_prepare_light_list()
|
|||
unk_140E9A8 = dpi;
|
||||
painter_setup();
|
||||
viewport_paint_setup();
|
||||
sub_688217();
|
||||
paint_arrange_structs();
|
||||
sub_68862C();
|
||||
|
||||
// log_warning("[%i, %i]", dpi->x, dpi->y);
|
||||
|
@ -326,7 +325,7 @@ void lightfx_prepare_light_list()
|
|||
// RCT2_GLOBAL(0x140E9A8, rct_drawpixelinfo*) = dpi;
|
||||
// painter_setup();
|
||||
// viewport_paint_setup();
|
||||
// sub_688217();
|
||||
// paint_arrange_structs();
|
||||
// sub_68862C();
|
||||
//}
|
||||
}
|
||||
|
|
|
@ -20,8 +20,8 @@
|
|||
#include FT_FREETYPE_H
|
||||
|
||||
#include "../localisation/localisation.h"
|
||||
#include "../OpenRCT2.h"
|
||||
#include "../platform/platform.h"
|
||||
#include "../rct2.h"
|
||||
#include "ttf.h"
|
||||
|
||||
static bool _ttfInitialised = false;
|
||||
|
|
|
@ -17,6 +17,7 @@
|
|||
#include "audio/audio.h"
|
||||
#include "drawing/drawing.h"
|
||||
#include "editor.h"
|
||||
#include "FileClassifier.h"
|
||||
#include "game.h"
|
||||
#include "interface/viewport.h"
|
||||
#include "interface/window.h"
|
||||
|
@ -27,6 +28,7 @@
|
|||
#include "network/network.h"
|
||||
#include "object.h"
|
||||
#include "object/ObjectManager.h"
|
||||
#include "OpenRCT2.h"
|
||||
#include "peep/staff.h"
|
||||
#include "platform/platform.h"
|
||||
#include "rct1.h"
|
||||
|
|
|
@ -18,7 +18,6 @@
|
|||
#define _EDITOR_H_
|
||||
|
||||
#include "object.h"
|
||||
#include "rct2.h"
|
||||
|
||||
typedef enum {
|
||||
EDITOR_STEP_OBJECT_SELECTION, // 0
|
||||
|
|
|
@ -19,6 +19,7 @@
|
|||
#include "config/Config.h"
|
||||
#include "Context.h"
|
||||
#include "editor.h"
|
||||
#include "FileClassifier.h"
|
||||
#include "game.h"
|
||||
#include "input.h"
|
||||
#include "interface/Screenshot.h"
|
||||
|
@ -63,7 +64,6 @@
|
|||
#define NUMBER_OF_AUTOSAVES_TO_KEEP 9
|
||||
|
||||
uint16 gTicksSinceLastUpdate;
|
||||
uint32 gLastTickCount;
|
||||
uint8 gGamePaused = 0;
|
||||
sint32 gGameSpeed = 1;
|
||||
float gDayNightCycle = 0;
|
||||
|
@ -285,7 +285,7 @@ void game_update()
|
|||
{
|
||||
gInUpdateCode = true;
|
||||
|
||||
sint32 i, numUpdates;
|
||||
sint32 numUpdates;
|
||||
|
||||
// 0x006E3AEC // screen_game_process_mouse_input();
|
||||
screenshot_check();
|
||||
|
@ -295,8 +295,8 @@ void game_update()
|
|||
if (gGameSpeed > 1) {
|
||||
numUpdates = 1 << (gGameSpeed - 1);
|
||||
} else {
|
||||
numUpdates = gTicksSinceLastUpdate / 31;
|
||||
numUpdates = clamp(1, numUpdates, 4);
|
||||
numUpdates = gTicksSinceLastUpdate / GAME_UPDATE_TIME_MS;
|
||||
numUpdates = clamp(1, numUpdates, GAME_MAX_UPDATES);
|
||||
}
|
||||
|
||||
if (network_get_mode() == NETWORK_MODE_CLIENT && network_get_status() == NETWORK_STATUS_CONNECTED && network_get_authstatus() == NETWORK_AUTH_OK) {
|
||||
|
@ -318,6 +318,25 @@ void game_update()
|
|||
network_process_game_commands();
|
||||
}
|
||||
|
||||
// Update the game one or more times
|
||||
for (sint32 i = 0; i < numUpdates; i++) {
|
||||
game_logic_update();
|
||||
|
||||
if (gGameSpeed > 1)
|
||||
continue;
|
||||
|
||||
if (input_get_state() == INPUT_STATE_RESET ||
|
||||
input_get_state() == INPUT_STATE_NORMAL
|
||||
) {
|
||||
if (input_test_flag(INPUT_FLAG_VIEWPORT_SCROLLING)) {
|
||||
input_set_flag(INPUT_FLAG_VIEWPORT_SCROLLING, false);
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (!gOpenRCT2Headless)
|
||||
{
|
||||
input_set_flag(INPUT_FLAG_VIEWPORT_SCROLLING, false);
|
||||
|
@ -348,25 +367,6 @@ void game_update()
|
|||
game_handle_input();
|
||||
}
|
||||
|
||||
// Update the game one or more times
|
||||
for (i = 0; i < numUpdates; i++) {
|
||||
game_logic_update();
|
||||
|
||||
if (gGameSpeed > 1)
|
||||
continue;
|
||||
|
||||
if (input_get_state() == INPUT_STATE_RESET ||
|
||||
input_get_state() == INPUT_STATE_NORMAL
|
||||
) {
|
||||
if (input_test_flag(INPUT_FLAG_VIEWPORT_SCROLLING)) {
|
||||
input_set_flag(INPUT_FLAG_VIEWPORT_SCROLLING, false);
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// Always perform autosave check, even when paused
|
||||
if (!(gScreenFlags & SCREEN_FLAGS_TITLE_DEMO) &&
|
||||
!(gScreenFlags & SCREEN_FLAGS_TRACK_DESIGNER) &&
|
||||
|
@ -1072,7 +1072,15 @@ void game_fix_save_vars()
|
|||
for (sint32 i = 0; i < MAX_RESEARCH_ITEMS; i++) {
|
||||
rct_research_item *researchItem = &gResearchItems[i];
|
||||
if (researchItem->entryIndex == RESEARCHED_ITEMS_SEPARATOR) continue;
|
||||
if (researchItem->entryIndex == RESEARCHED_ITEMS_END) continue;
|
||||
if (researchItem->entryIndex == RESEARCHED_ITEMS_END)
|
||||
{
|
||||
if (i == MAX_RESEARCH_ITEMS - 1)
|
||||
{
|
||||
(--researchItem)->entryIndex = RESEARCHED_ITEMS_END;
|
||||
}
|
||||
(++researchItem)->entryIndex = RESEARCHED_ITEMS_END_2;
|
||||
break;
|
||||
}
|
||||
if (researchItem->entryIndex == RESEARCHED_ITEMS_END_2) break;
|
||||
if (researchItem->entryIndex & 0x10000) {
|
||||
uint8 entryIndex = researchItem->entryIndex & 0xFF;
|
||||
|
@ -1096,7 +1104,6 @@ void game_fix_save_vars()
|
|||
|
||||
// Fix invalid vehicle sprite sizes, thus preventing visual corruption of sprites
|
||||
fix_invalid_vehicle_sprite_sizes();
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -1125,6 +1132,7 @@ bool game_load_save(const utf8 *path)
|
|||
}
|
||||
|
||||
if (load_success) {
|
||||
ParkLoadResult_Delete(result);
|
||||
if (network_get_mode() == NETWORK_MODE_CLIENT) {
|
||||
network_close();
|
||||
}
|
||||
|
@ -1139,6 +1147,7 @@ bool game_load_save(const utf8 *path)
|
|||
return true;
|
||||
} else {
|
||||
handle_park_load_failure(result, path);
|
||||
ParkLoadResult_Delete(result);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
@ -1277,9 +1286,11 @@ static void limit_autosave_count(const size_t numberOfFilesToKeep, bool processL
|
|||
|
||||
if (processLandscapeFolder) {
|
||||
platform_get_user_directory(filter, "landscape", sizeof(filter));
|
||||
safe_strcat_path(filter, "autosave", sizeof(filter));
|
||||
safe_strcat_path(filter, "autosave_*.sc6", sizeof(filter));
|
||||
} else {
|
||||
platform_get_user_directory(filter, "save", sizeof(filter));
|
||||
safe_strcat_path(filter, "autosave", sizeof(filter));
|
||||
safe_strcat_path(filter, "autosave_*.sv6", sizeof(filter));
|
||||
}
|
||||
|
||||
|
@ -1308,6 +1319,7 @@ static void limit_autosave_count(const size_t numberOfFilesToKeep, bool processL
|
|||
} else {
|
||||
platform_get_user_directory(autosaveFiles[i], "save", sizeof(utf8) * MAX_PATH);
|
||||
}
|
||||
safe_strcat_path(autosaveFiles[i], "autosave", sizeof(utf8) * MAX_PATH);
|
||||
safe_strcat_path(autosaveFiles[i], fileInfo.path, sizeof(utf8) * MAX_PATH);
|
||||
}
|
||||
}
|
||||
|
@ -1361,6 +1373,8 @@ void game_autosave()
|
|||
utf8 path[MAX_PATH];
|
||||
utf8 backupPath[MAX_PATH];
|
||||
platform_get_user_directory(path, subDirectory, sizeof(path));
|
||||
safe_strcat_path(path, "autosave", sizeof(path));
|
||||
platform_ensure_directory_exists(path);
|
||||
safe_strcpy(backupPath, path, sizeof(backupPath));
|
||||
safe_strcat_path(path, timeName, sizeof(path));
|
||||
safe_strcat_path(backupPath, "autosave", sizeof(backupPath));
|
||||
|
@ -1490,6 +1504,7 @@ void game_init_all(sint32 mapSize)
|
|||
window_staff_list_init_vars();
|
||||
scenery_set_default_placement_configuration();
|
||||
window_tile_inspector_clear_clipboard();
|
||||
load_palette();
|
||||
}
|
||||
|
||||
GAME_COMMAND_POINTER* new_game_command_table[GAME_COMMAND_COUNT] = {
|
||||
|
|
|
@ -143,7 +143,6 @@ extern uint32 gCurrentTicks;
|
|||
#endif
|
||||
|
||||
extern uint16 gTicksSinceLastUpdate;
|
||||
extern uint32 gLastTickCount;
|
||||
extern uint8 gGamePaused;
|
||||
extern sint32 gGameSpeed;
|
||||
extern float gDayNightCycle;
|
||||
|
|
|
@ -36,7 +36,6 @@
|
|||
#include "world/sprite.h"
|
||||
#include "world/scenery.h"
|
||||
#include "OpenRCT2.h"
|
||||
#include "rct2.h"
|
||||
|
||||
typedef struct rct_mouse_data {
|
||||
uint32 x;
|
||||
|
@ -1207,7 +1206,7 @@ void input_state_widget_pressed(sint32 x, sint32 y, sint32 state, rct_widgetinde
|
|||
goto dropdown_cleanup;
|
||||
}
|
||||
|
||||
if (dropdown_index < 64 && gDropdownItemsDisabled & (1ULL << dropdown_index)) {
|
||||
if (dropdown_index < DROPDOWN_ITEMS_MAX_SIZE && dropdown_is_disabled(dropdown_index)) {
|
||||
goto dropdown_cleanup;
|
||||
}
|
||||
|
||||
|
@ -1344,7 +1343,7 @@ void input_state_widget_pressed(sint32 x, sint32 y, sint32 state, rct_widgetinde
|
|||
window_tooltip_show(colourTooltips[dropdown_index], x, y);
|
||||
}
|
||||
|
||||
if (dropdown_index < 64 && gDropdownItemsDisabled & (1ULL << dropdown_index)) {
|
||||
if (dropdown_index < DROPDOWN_ITEMS_MAX_SIZE && dropdown_is_disabled(dropdown_index)) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
|
@ -30,7 +30,6 @@ extern "C"
|
|||
#include "../intro.h"
|
||||
#include "../localisation/localisation.h"
|
||||
#include "../platform/platform.h"
|
||||
#include "../rct2.h"
|
||||
#include "../util/util.h"
|
||||
#include "../windows/error.h"
|
||||
#include "viewport.h"
|
||||
|
@ -269,7 +268,7 @@ sint32 cmdline_for_gfxbench(const char **argv, sint32 argc)
|
|||
if (context->Initialise())
|
||||
{
|
||||
drawing_engine_init();
|
||||
rct2_open_file(inputPath);
|
||||
context->Open(inputPath);
|
||||
|
||||
gIntroState = INTRO_STATE_NONE;
|
||||
gScreenFlags = SCREEN_FLAGS_PLAYING;
|
||||
|
@ -388,7 +387,7 @@ sint32 cmdline_for_screenshot(const char **argv, sint32 argc)
|
|||
if (context->Initialise())
|
||||
{
|
||||
drawing_engine_init();
|
||||
rct2_open_file(inputPath);
|
||||
context->Open(inputPath);
|
||||
|
||||
gIntroState = INTRO_STATE_NONE;
|
||||
gScreenFlags = SCREEN_FLAGS_PLAYING;
|
||||
|
|
|
@ -707,11 +707,7 @@ extern "C"
|
|||
ThemeManager::ActiveAvailableThemeIndex = index;
|
||||
String::DiscardDuplicate(&gConfigInterface.current_theme_preset, theme_manager_get_available_theme_name(index));
|
||||
|
||||
// Apply the selected theme to all open windows
|
||||
for (rct_window *w = g_window_list; w < gWindowNextSlot; w++)
|
||||
{
|
||||
colour_scheme_update(w);
|
||||
}
|
||||
colour_scheme_update_all();
|
||||
}
|
||||
|
||||
uint8 theme_get_colour(rct_windowclass wc, uint8 index)
|
||||
|
@ -861,6 +857,14 @@ extern "C"
|
|||
return desc->WindowName;
|
||||
}
|
||||
|
||||
void colour_scheme_update_all()
|
||||
{
|
||||
for (rct_window *w = g_window_list; w < gWindowNextSlot; w++)
|
||||
{
|
||||
colour_scheme_update(w);
|
||||
}
|
||||
}
|
||||
|
||||
void colour_scheme_update(rct_window * window)
|
||||
{
|
||||
colour_scheme_update_by_class(window, window->classification);
|
||||
|
|
|
@ -21,7 +21,6 @@
|
|||
#include "../localisation/localisation.h"
|
||||
#include "../network/network.h"
|
||||
#include "../platform/platform.h"
|
||||
#include "../rct2.h"
|
||||
#include "../util/util.h"
|
||||
#include "chat.h"
|
||||
|
||||
|
|
|
@ -30,9 +30,9 @@
|
|||
#include "../object.h"
|
||||
#include "../object/ObjectManager.h"
|
||||
#include "../object/ObjectRepository.h"
|
||||
#include "../OpenRCT2.h"
|
||||
#include "../peep/staff.h"
|
||||
#include "../platform/platform.h"
|
||||
#include "../rct2.h"
|
||||
#include "../ride/ride.h"
|
||||
#include "../ride/ride_data.h"
|
||||
#include "../util/sawyercoding.h"
|
||||
|
@ -665,7 +665,7 @@ static sint32 cc_staff(const utf8 **argv, sint32 argc)
|
|||
rct_peep *peep = GET_PEEP(int_val[0]);
|
||||
|
||||
peep->energy = int_val[1];
|
||||
peep->energy_growth_rate = int_val[1];
|
||||
peep->energy_target = int_val[1];
|
||||
}
|
||||
} else if (strcmp(argv[1], "costume") == 0) {
|
||||
sint32 int_val[2];
|
||||
|
|
|
@ -28,6 +28,7 @@ enum {
|
|||
};
|
||||
|
||||
void colour_scheme_update(rct_window *window);
|
||||
void colour_scheme_update_all();
|
||||
void colour_scheme_update_by_class(rct_window *window, rct_windowclass classification);
|
||||
|
||||
void theme_manager_initialise();
|
||||
|
|
|
@ -23,7 +23,6 @@
|
|||
#include "../paint/paint.h"
|
||||
#include "../paint/supports.h"
|
||||
#include "../peep/staff.h"
|
||||
#include "../rct2.h"
|
||||
#include "../ride/ride_data.h"
|
||||
#include "../ride/track_data.h"
|
||||
#include "../world/banner.h"
|
||||
|
@ -1039,7 +1038,7 @@ static bool sub_679236_679662_679B0D_679FF1(uint32 ebx, rct_g1_element *image, u
|
|||
return false;
|
||||
}
|
||||
|
||||
if (ebx & 0x20000000) {
|
||||
if (ebx & IMAGE_TYPE_REMAP) {
|
||||
uint8 *ebx_palette = unk_9ABDA4;
|
||||
|
||||
uint8 al = *esi;
|
||||
|
@ -1048,7 +1047,7 @@ static bool sub_679236_679662_679B0D_679FF1(uint32 ebx, rct_g1_element *image, u
|
|||
return (al2 != 0);
|
||||
}
|
||||
|
||||
if (ebx & 0x40000000) {
|
||||
if (ebx & IMAGE_TYPE_TRANSPARENT) {
|
||||
return false;
|
||||
}
|
||||
|
||||
|
@ -1302,10 +1301,10 @@ static bool sub_679074(rct_drawpixelinfo *dpi, sint32 imageId, sint16 x, sint16
|
|||
static bool sub_679023(rct_drawpixelinfo *dpi, sint32 imageId, sint32 x, sint32 y)
|
||||
{
|
||||
imageId &= 0xBFFFFFFF;
|
||||
if (imageId & 0x20000000) {
|
||||
gUnkEDF81C = 0x20000000;
|
||||
if (imageId & IMAGE_TYPE_REMAP) {
|
||||
gUnkEDF81C = IMAGE_TYPE_REMAP;
|
||||
sint32 index = (imageId >> 19) & 0x7F;
|
||||
if (imageId & 0x80000000) {
|
||||
if (imageId & IMAGE_TYPE_REMAP_2_PLUS) {
|
||||
index &= 0x1F;
|
||||
}
|
||||
sint32 g1Index = palette_to_g1_offset[index];
|
||||
|
@ -1482,7 +1481,7 @@ static rct_viewport *viewport_find_from_point(sint32 screenX, sint32 screenY)
|
|||
void screen_get_map_xy(sint32 screenX, sint32 screenY, sint16 *x, sint16 *y, rct_viewport **viewport) {
|
||||
sint16 my_x, my_y;
|
||||
sint32 interactionType;
|
||||
rct_viewport *myViewport;
|
||||
rct_viewport *myViewport = NULL;
|
||||
get_map_coordinates_from_pos(screenX, screenY, VIEWPORT_INTERACTION_MASK_TERRAIN, &my_x, &my_y, &interactionType, NULL, &myViewport);
|
||||
if (interactionType == VIEWPORT_INTERACTION_ITEM_NONE) {
|
||||
*x = 0x8000;
|
||||
|
|
|
@ -19,6 +19,7 @@
|
|||
#include "../game.h"
|
||||
#include "../input.h"
|
||||
#include "../localisation/localisation.h"
|
||||
#include "../OpenRCT2.h"
|
||||
#include "../ride/ride.h"
|
||||
#include "../ride/ride_data.h"
|
||||
#include "../ride/track.h"
|
||||
|
@ -246,9 +247,9 @@ sint32 viewport_interaction_get_item_right(sint32 x, sint32 y, viewport_interact
|
|||
set_map_tooltip_format_arg(6, uint32, ride->name_arguments);
|
||||
set_map_tooltip_format_arg(10, rct_string_id, RideComponentNames[RideNameConvention[ride->type].station].capitalised);
|
||||
|
||||
stationIndex = map_get_station(mapElement);
|
||||
stationIndex = map_element_get_station(mapElement);
|
||||
for (i = stationIndex; i >= 0; i--)
|
||||
if (ride->station_starts[i] == 0xFFFF)
|
||||
if (ride->station_starts[i].xy == RCT_XY8_UNDEFINED)
|
||||
stationIndex--;
|
||||
stationIndex++;
|
||||
set_map_tooltip_format_arg(12, uint16, stationIndex);
|
||||
|
@ -265,7 +266,7 @@ sint32 viewport_interaction_get_item_right(sint32 x, sint32 y, viewport_interact
|
|||
|
||||
case VIEWPORT_INTERACTION_ITEM_LARGE_SCENERY:
|
||||
sceneryEntry = get_large_scenery_entry(mapElement->properties.scenerymultiple.type & 0x3FF);
|
||||
if (sceneryEntry->large_scenery.var_11 != 255) {
|
||||
if (sceneryEntry->large_scenery.scrolling_mode != 255) {
|
||||
set_map_tooltip_format_arg(0, rct_string_id, STR_MAP_TOOLTIP_STRINGID_CLICK_TO_MODIFY);
|
||||
set_map_tooltip_format_arg(2, rct_string_id, sceneryEntry->name);
|
||||
return info->type;
|
||||
|
@ -469,7 +470,7 @@ static void viewport_interaction_remove_footpath_item(rct_map_element *mapElemen
|
|||
*/
|
||||
void viewport_interaction_remove_park_entrance(rct_map_element *mapElement, sint32 x, sint32 y)
|
||||
{
|
||||
sint32 rotation = (mapElement->type + 1) & 3;
|
||||
sint32 rotation = map_element_get_direction_with_offset(mapElement, 1);
|
||||
switch (mapElement->properties.entrance.index & 0x0F) {
|
||||
case 1:
|
||||
x += TileDirectionDelta[rotation].x;
|
||||
|
@ -499,7 +500,7 @@ static void viewport_interaction_remove_park_wall(rct_map_element *mapElement, s
|
|||
x,
|
||||
GAME_COMMAND_FLAG_APPLY,
|
||||
y,
|
||||
(mapElement->type & 0x3) | (mapElement->base_height << 8),
|
||||
map_element_get_direction(mapElement) | (mapElement->base_height << 8),
|
||||
GAME_COMMAND_REMOVE_WALL,
|
||||
0,
|
||||
0
|
||||
|
@ -515,7 +516,7 @@ static void viewport_interaction_remove_large_scenery(rct_map_element *mapElemen
|
|||
{
|
||||
rct_scenery_entry *sceneryEntry = get_large_scenery_entry(mapElement->properties.scenerymultiple.type & MAP_ELEMENT_LARGE_TYPE_MASK);
|
||||
|
||||
if (sceneryEntry->large_scenery.var_11 != 0xFF){
|
||||
if (sceneryEntry->large_scenery.scrolling_mode != 0xFF){
|
||||
sint32 id = (mapElement->type & 0xC0) |
|
||||
((mapElement->properties.scenerymultiple.colour[0] & 0xE0) >> 2) |
|
||||
((mapElement->properties.scenerymultiple.colour[1] & 0xE0) >> 5);
|
||||
|
@ -524,7 +525,7 @@ static void viewport_interaction_remove_large_scenery(rct_map_element *mapElemen
|
|||
gGameCommandErrorTitle = STR_CANT_REMOVE_THIS;
|
||||
game_do_command(
|
||||
x,
|
||||
1 | ((mapElement->type & 0x3) << 8),
|
||||
1 | (map_element_get_direction(mapElement) << 8),
|
||||
y,
|
||||
mapElement->base_height | ((mapElement->properties.scenerymultiple.type >> 10) << 8),
|
||||
GAME_COMMAND_REMOVE_LARGE_SCENERY,
|
||||
|
@ -593,7 +594,7 @@ void sub_68A15E(sint32 screenX, sint32 screenY, sint16 *x, sint16 *y, sint32 *di
|
|||
|
||||
sint16 originalZ = 0;
|
||||
if (interactionType == VIEWPORT_INTERACTION_ITEM_WATER) {
|
||||
originalZ = (myMapElement->properties.surface.terrain & MAP_ELEMENT_WATER_HEIGHT_MASK) << 4;
|
||||
originalZ = map_get_water_height(myMapElement) << 4;
|
||||
}
|
||||
|
||||
rct_xy16 start_vp_pos = screen_coord_to_viewport_coord(viewport, screenX, screenY);
|
||||
|
|
|
@ -212,7 +212,7 @@ static void widget_frame_draw(rct_drawpixelinfo *dpi, rct_window *w, rct_widgeti
|
|||
// Draw the resize sprite at the bottom right corner
|
||||
l = w->x + widget->right - 18;
|
||||
t = w->y + widget->bottom - 18;
|
||||
gfx_draw_sprite(dpi, SPR_RESIZE | 0x20000000 | ((colour & 0x7F) << 19), l, t, 0);
|
||||
gfx_draw_sprite(dpi, SPR_RESIZE | IMAGE_TYPE_REMAP | ((colour & 0x7F) << 19), l, t, 0);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -245,7 +245,7 @@ static void widget_resize_draw(rct_drawpixelinfo *dpi, rct_window *w, rct_widget
|
|||
// Draw the resize sprite at the bottom right corner
|
||||
l = w->x + widget->right - 18;
|
||||
t = w->y + widget->bottom - 18;
|
||||
gfx_draw_sprite(dpi, SPR_RESIZE | 0x20000000 | ((colour & 0x7F) << 19), l, t, 0);
|
||||
gfx_draw_sprite(dpi, SPR_RESIZE | IMAGE_TYPE_REMAP | ((colour & 0x7F) << 19), l, t, 0);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -300,7 +300,7 @@ static void widget_tab_draw(rct_drawpixelinfo *dpi, rct_window *w, rct_widgetind
|
|||
}
|
||||
|
||||
// Do not draw hidden tabs, unless given a sprite.
|
||||
if (widget->type == WWT_TAB && widget->image != (0x20000000 | SPR_G2_TAB_DISABLED))
|
||||
if (widget->type == WWT_TAB && widget->image != (IMAGE_TYPE_REMAP | SPR_G2_TAB_DISABLED))
|
||||
return;
|
||||
|
||||
if (widget->type != WWT_TRNBTN) {
|
||||
|
@ -857,12 +857,12 @@ static void widget_draw_image(rct_drawpixelinfo *dpi, rct_window *w, rct_widgeti
|
|||
colour = ColourMapA[NOT_TRANSLUCENT(colour)].mid_light;
|
||||
gfx_draw_sprite_solid(dpi, image, l, t, colour);
|
||||
} else {
|
||||
if (image & 0x80000000) {
|
||||
if (image & IMAGE_TYPE_REMAP_2_PLUS) {
|
||||
// ?
|
||||
}
|
||||
|
||||
if (image & 0x40000000)
|
||||
image &= ~0x40000000;
|
||||
if (image & IMAGE_TYPE_TRANSPARENT)
|
||||
image &= ~IMAGE_TYPE_TRANSPARENT;
|
||||
else
|
||||
image |= colour << 19;
|
||||
|
||||
|
|
|
@ -49,7 +49,9 @@ typedef enum {
|
|||
WWT_TEXT_BOX = 27,
|
||||
WWT_LAST = 26,
|
||||
} WINDOW_WIDGET_TYPES;
|
||||
|
||||
#define WIDGETS_END WWT_LAST, 0, 0, 0, 0, 0, 0, 0
|
||||
#define BAR_BLINK (1u << 31)
|
||||
|
||||
enum {
|
||||
SCROLL_HORIZONTAL = (1 << 0),
|
||||
|
|
|
@ -26,6 +26,7 @@
|
|||
#include "../interface/themes.h"
|
||||
#include "../localisation/localisation.h"
|
||||
#include "../localisation/string_ids.h"
|
||||
#include "../OpenRCT2.h"
|
||||
#include "../platform/platform.h"
|
||||
#include "../world/map.h"
|
||||
#include "../world/sprite.h"
|
||||
|
@ -283,7 +284,7 @@ static bool window_other_wheel_input(rct_window *w, rct_widgetindex widgetIndex,
|
|||
// Preview / Increment / Decrement
|
||||
if (widgetIndex >= previewWidgetIndex && widgetIndex < previewWidgetIndex + 3) {
|
||||
rct_widgetindex buttonWidgetIndex = wheel < 0 ? previewWidgetIndex + 2 : previewWidgetIndex + 1;
|
||||
window_event_mouse_up_call(w, buttonWidgetIndex);
|
||||
window_event_mouse_down_call(w, buttonWidgetIndex);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -1932,7 +1933,7 @@ void window_event_resize_call(rct_window *w)
|
|||
void window_event_mouse_down_call(rct_window *w, rct_widgetindex widgetIndex)
|
||||
{
|
||||
if (w->event_handlers->mouse_down != NULL)
|
||||
w->event_handlers->mouse_down(widgetIndex, w, &w->widgets[widgetIndex]);
|
||||
w->event_handlers->mouse_down(w, widgetIndex, &w->widgets[widgetIndex]);
|
||||
}
|
||||
|
||||
void window_event_dropdown_call(rct_window *w, rct_widgetindex widgetIndex, sint32 dropdownIndex)
|
||||
|
|
|
@ -155,7 +155,7 @@ typedef struct rct_window_event_list {
|
|||
void (*close)(struct rct_window*);
|
||||
void (*mouse_up)(struct rct_window*, rct_widgetindex);
|
||||
void (*resize)(struct rct_window*);
|
||||
void (*mouse_down)(rct_widgetindex, struct rct_window*, rct_widget*);
|
||||
void (*mouse_down)(struct rct_window*, rct_widgetindex, rct_widget*);
|
||||
void (*dropdown)(struct rct_window*, rct_widgetindex, sint32);
|
||||
void (*unknown_05)(struct rct_window*);
|
||||
void (*update)(struct rct_window*);
|
||||
|
@ -278,6 +278,8 @@ typedef struct rct_window {
|
|||
sint16 page; // 0x48A
|
||||
union {
|
||||
sint16 picked_peep_old_x; // 0x48C staff/guest window: peep x gets set to 0x8000 on pickup, this is the old value
|
||||
sint16 vehicleIndex; // 0x48C Ride window: selected car when setting vehicle colours
|
||||
sint16 numberOfStaff; // 0x48C Used in park window.
|
||||
sint16 var_48C;
|
||||
};
|
||||
uint16 frame_no; // 0x48E updated every tic for motion in windows sprites
|
||||
|
@ -497,6 +499,7 @@ enum {
|
|||
#define WC_TOP_TOOLBAR__WIDX_WATER 9
|
||||
#define WC_TOP_TOOLBAR__WIDX_SCENERY 10
|
||||
#define WC_TOP_TOOLBAR__WIDX_PATH 11
|
||||
#define WC_TOP_TOOLBAR__WIDX_CLEAR_SCENERY 17
|
||||
#define WC_RIDE_CONSTRUCTION__WIDX_CONSTRUCT 23
|
||||
#define WC_RIDE_CONSTRUCTION__WIDX_ENTRANCE 29
|
||||
#define WC_RIDE_CONSTRUCTION__WIDX_EXIT 30
|
||||
|
@ -753,7 +756,6 @@ void window_research_funding_page_paint(rct_window *w, rct_drawpixelinfo *dpi, r
|
|||
|
||||
void window_scenery_open();
|
||||
void window_music_credits_open();
|
||||
void window_publisher_credits_open();
|
||||
void window_track_manage_open(struct track_design_file_ref *tdFileRef);
|
||||
void window_viewport_open();
|
||||
void window_themes_open();
|
||||
|
|
|
@ -19,7 +19,6 @@
|
|||
#include "Context.h"
|
||||
#include "drawing/drawing.h"
|
||||
#include "intro.h"
|
||||
#include "rct2.h"
|
||||
#include "sprites.h"
|
||||
|
||||
#define BACKROUND_COLOUR_DARK PALETTE_INDEX_10
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue