Merge branch 'master' into jgrpp
# Conflicts: # .github/workflows/release-linux.yml # .github/workflows/release.yml # src/rail_cmd.cpp # src/rail_gui.cpp # src/script/api/script_rail.cpp # src/settings_gui.cpp # src/signal_type.h # src/video/sdl2_v.cpp
This commit is contained in:
208
.github/workflows/release-linux-legacy.yml
vendored
Normal file
208
.github/workflows/release-linux-legacy.yml
vendored
Normal file
@@ -0,0 +1,208 @@
|
||||
name: Release (Linux, Legacy)
|
||||
|
||||
on:
|
||||
workflow_call:
|
||||
inputs:
|
||||
survey_key:
|
||||
required: false
|
||||
type: string
|
||||
default: ""
|
||||
|
||||
jobs:
|
||||
linux:
|
||||
name: Linux (Legacy)
|
||||
|
||||
runs-on: ubuntu-latest
|
||||
container:
|
||||
# manylinux2014 is based on CentOS 7, and already has a lot of things
|
||||
# installed and preconfigured. It makes it easier to build OpenTTD.
|
||||
# This distro is based on glibc 2.17, released in 2012.
|
||||
image: quay.io/pypa/manylinux2014_x86_64
|
||||
|
||||
steps:
|
||||
- name: Download source
|
||||
uses: actions/download-artifact@v3
|
||||
with:
|
||||
name: internal-source
|
||||
|
||||
- name: Unpack source
|
||||
run: |
|
||||
tar -xf source.tar.gz --strip-components=1
|
||||
|
||||
# curl is too old for most of the tools to work properly. For example,
|
||||
# rust-toolchain doesn't work properly, neither vcpkg caching.
|
||||
# The easier solution here is to upgrade curl.
|
||||
- name: Update curl
|
||||
run: |
|
||||
yum install -y \
|
||||
openssl-devel \
|
||||
# EOF
|
||||
|
||||
mkdir /curl
|
||||
cd /curl
|
||||
curl -o curl-7.81.0.zip https://curl.se/download/curl-7.81.0.zip
|
||||
unzip curl-7.81.0.zip
|
||||
cd curl-7.81.0
|
||||
./configure --with-ssl --with-zlib --prefix=/usr --libdir=/usr/lib64
|
||||
make -j $(nproc)
|
||||
make install
|
||||
|
||||
- name: Install Rust toolchain
|
||||
uses: dtolnay/rust-toolchain@stable
|
||||
|
||||
- name: Enable Rust cache
|
||||
uses: Swatinem/rust-cache@v2.7.0
|
||||
|
||||
- name: Setup vcpkg caching
|
||||
uses: actions/github-script@v6
|
||||
with:
|
||||
script: |
|
||||
core.exportVariable('ACTIONS_CACHE_URL', process.env.ACTIONS_CACHE_URL || '');
|
||||
core.exportVariable('ACTIONS_RUNTIME_TOKEN', process.env.ACTIONS_RUNTIME_TOKEN || '');
|
||||
core.exportVariable('VCPKG_BINARY_SOURCES', 'clear;x-gha,readwrite')
|
||||
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
echo "::group::Install system dependencies"
|
||||
# perl-IPC-Cmd, wget, and zip are needed to run vcpkg.
|
||||
# autoconf-archive is needed to build ICU.
|
||||
yum install -y \
|
||||
autoconf-archive \
|
||||
perl-IPC-Cmd \
|
||||
wget \
|
||||
zip \
|
||||
# EOF
|
||||
|
||||
# aclocal looks first in /usr/local/share/aclocal, and if that doesn't
|
||||
# exist only looks in /usr/share/aclocal. We have files in both that
|
||||
# are important. So copy the latter to the first, and we are good to
|
||||
# go.
|
||||
cp /usr/share/aclocal/* /usr/local/share/aclocal/
|
||||
echo "::endgroup::"
|
||||
|
||||
# The yum variant of fluidsynth depends on all possible audio drivers,
|
||||
# like jack, ALSA, pulseaudio, etc. This is not really useful for us,
|
||||
# as we route the output of fluidsynth back via our sound driver, and
|
||||
# as such do not use these audio driver outputs at all.
|
||||
# The vcpkg variant of fluidsynth depends on ALSA. Similar issue here.
|
||||
# So instead, we compile fluidsynth ourselves, with as few
|
||||
# dependencies as possible. We do it before anything else is installed,
|
||||
# to make sure it doesn't pick up on any of the drivers.
|
||||
echo "::group::Install fluidsynth"
|
||||
wget https://github.com/FluidSynth/fluidsynth/archive/v2.3.3.tar.gz
|
||||
tar xf v2.3.3.tar.gz
|
||||
(
|
||||
cd fluidsynth-2.3.3
|
||||
mkdir build
|
||||
cd build
|
||||
cmake .. -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_INSTALL_PREFIX=/usr
|
||||
cmake --build . -j $(nproc)
|
||||
cmake --install .
|
||||
)
|
||||
|
||||
# The container we use is old enough, that it doesn't know SHF_COMPRESSED.
|
||||
# But, breakpad needs this symbol to exist. So we patch it in our system
|
||||
# libraries.
|
||||
(
|
||||
cd /
|
||||
patch -p1 < ${GITHUB_WORKSPACE}/os/linux/shf-compressed.patch
|
||||
)
|
||||
echo "::endgroup::"
|
||||
|
||||
echo "::group::Install audio drivers"
|
||||
# These audio libs are to make sure the SDL version of vcpkg adds
|
||||
# sound-support; these libraries are not added to the resulting
|
||||
# binary, but the headers are used to enable them in SDL.
|
||||
yum install -y \
|
||||
alsa-lib-devel \
|
||||
jack-audio-connection-kit-devel \
|
||||
pulseaudio-libs-devel \
|
||||
# EOF
|
||||
echo "::endgroup::"
|
||||
|
||||
echo "::group::Install video drivers"
|
||||
# These video libs are to make sure the SDL version of vcpkg adds
|
||||
# video-support; these libraries are not added to the resulting
|
||||
# binary, but the headers are used to enable them in SDL.
|
||||
yum install -y \
|
||||
libX11-devel \
|
||||
libXcursor-devel \
|
||||
libXext-devel \
|
||||
libXfixes-devel \
|
||||
libXi-devel \
|
||||
libxkbcommon-devel \
|
||||
libXrandr-devel \
|
||||
libXScrnSaver-devel \
|
||||
# EOF
|
||||
echo "::endgroup::"
|
||||
|
||||
# We use vcpkg for our dependencies, to get more up-to-date version.
|
||||
echo "::group::Install vcpkg and dependencies"
|
||||
|
||||
git clone https://github.com/microsoft/vcpkg /vcpkg
|
||||
|
||||
(
|
||||
cd /vcpkg
|
||||
./bootstrap-vcpkg.sh -disableMetrics
|
||||
)
|
||||
|
||||
# Make Python3 available for other packages. This needs to be done
|
||||
# first, as otherwise dependencies fail to build because Python3 is
|
||||
# not available.
|
||||
(
|
||||
cd /
|
||||
|
||||
/vcpkg/vcpkg install python3
|
||||
ln -sf /vcpkg/installed/x64-linux/tools/python3/python3.[0-9][0-9] /usr/bin/python3
|
||||
)
|
||||
echo "::endgroup::"
|
||||
|
||||
- name: Patch bundle name
|
||||
run: |
|
||||
sed -i 's/generic/legacy/g' cmake/InstallAndPackage.cmake
|
||||
|
||||
- name: Install GCC problem matcher
|
||||
uses: ammaraskar/gcc-problem-matcher@master
|
||||
|
||||
- name: Build
|
||||
run: |
|
||||
mkdir -p build
|
||||
cd build
|
||||
|
||||
echo "::group::CMake"
|
||||
cmake ${GITHUB_WORKSPACE} \
|
||||
-DCMAKE_TOOLCHAIN_FILE=/vcpkg/scripts/buildsystems/vcpkg.cmake \
|
||||
-DCMAKE_BUILD_TYPE=Release \
|
||||
-DOPTION_COMPRESS_DEBUG=ON \
|
||||
-DOPTION_LTO=ON \
|
||||
-DOPTION_TRIM_PATH_PREFIX=ON \
|
||||
|
||||
-DOPTION_SURVEY_KEY=${{ inputs.survey_key }} \
|
||||
-DOPTION_PACKAGE_DEPENDENCIES=ON \
|
||||
# EOF
|
||||
echo "::endgroup::"
|
||||
|
||||
echo "::group::Build"
|
||||
echo "Running on $(nproc) cores"
|
||||
cmake --build . -j $(nproc) --target openttd
|
||||
echo "::endgroup::"
|
||||
|
||||
- name: Create bundles
|
||||
run: |
|
||||
cd ${GITHUB_WORKSPACE}/build
|
||||
echo "::group::Run CPack"
|
||||
cpack
|
||||
echo "::endgroup::"
|
||||
|
||||
echo "::group::Cleanup"
|
||||
# Remove the sha256 files CPack generates; we will do this ourself at
|
||||
# the end of this workflow.
|
||||
rm -f bundles/*.sha256
|
||||
echo "::endgroup::"
|
||||
|
||||
- name: Store bundles
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: openttd-linux-legacy
|
||||
path: build/bundles
|
||||
retention-days: 5
|
67
.github/workflows/release-linux.yml
vendored
67
.github/workflows/release-linux.yml
vendored
@@ -14,9 +14,10 @@ jobs:
|
||||
|
||||
runs-on: ubuntu-latest
|
||||
container:
|
||||
# manylinux2014 is based on CentOS 7, but already has a lot of things
|
||||
# manylinux_2_28 is based on AlmaLinux 8, and already has a lot of things
|
||||
# installed and preconfigured. It makes it easier to build OpenTTD.
|
||||
image: quay.io/pypa/manylinux2014_x86_64
|
||||
# This distro is based on glibc 2.28, released in 2018.
|
||||
image: quay.io/pypa/manylinux_2_28_x86_64
|
||||
|
||||
steps:
|
||||
- name: Download source
|
||||
@@ -28,29 +29,11 @@ jobs:
|
||||
run: |
|
||||
tar -xf source.tar.gz --strip-components=1
|
||||
|
||||
# curl is too old for most of the tools to work properly. For example,
|
||||
# rust-toolchain doesn't work properly, neither vcpkg caching.
|
||||
# The easier solution here is to upgrade curl.
|
||||
- name: Update curl
|
||||
run: |
|
||||
yum install -y \
|
||||
openssl-devel \
|
||||
# EOF
|
||||
|
||||
mkdir /curl
|
||||
cd /curl
|
||||
curl -o curl-7.81.0.zip https://curl.se/download/curl-7.81.0.zip
|
||||
unzip curl-7.81.0.zip
|
||||
cd curl-7.81.0
|
||||
./configure --with-ssl --with-zlib --prefix=/usr --libdir=/usr/lib64
|
||||
make -j $(nproc)
|
||||
make install
|
||||
|
||||
- name: Install Rust toolchain
|
||||
uses: dtolnay/rust-toolchain@stable
|
||||
|
||||
- name: Enable Rust cache
|
||||
uses: Swatinem/rust-cache@v2.7.0
|
||||
uses: Swatinem/rust-cache@v2
|
||||
|
||||
- name: Setup vcpkg caching
|
||||
uses: actions/github-script@v6
|
||||
@@ -99,26 +82,37 @@ jobs:
|
||||
cmake --install .
|
||||
)
|
||||
|
||||
# The container we use is old enough, that it doesn't know SHF_COMPRESSED.
|
||||
# But, breakpad needs this symbol to exist. So we patch it in our system
|
||||
# libraries.
|
||||
(
|
||||
cd /
|
||||
patch -p1 < ${GITHUB_WORKSPACE}/os/linux/shf-compressed.patch
|
||||
)
|
||||
echo "::endgroup::"
|
||||
|
||||
echo "::group::Install audio drivers"
|
||||
# These audio libs are to make sure the SDL version of vcpkg adds
|
||||
# sound-support; these libraries are not added to the resulting
|
||||
# binary, but the headers are used to enable them in SDL.
|
||||
yum install -y \
|
||||
alsa-lib-devel \
|
||||
jack-audio-connection-kit-devel \
|
||||
pulseaudio-libs-devel \
|
||||
# EOF
|
||||
echo "::endgroup::"
|
||||
|
||||
echo "::group::Install video drivers"
|
||||
# These video libs are to make sure the SDL version of vcpkg adds
|
||||
# video-support; these libraries are not added to the resulting
|
||||
# binary, but the headers are used to enable them in SDL.
|
||||
yum install -y \
|
||||
libX11-devel \
|
||||
libXcursor-devel \
|
||||
libXext-devel \
|
||||
libXfixes-devel \
|
||||
libXi-devel \
|
||||
libxkbcommon-devel \
|
||||
libXrandr-devel \
|
||||
libXScrnSaver-devel \
|
||||
mesa-libEGL-devel \
|
||||
mesa-libGL-devel \
|
||||
mesa-libGLES-devel \
|
||||
wayland-devel \
|
||||
wayland-protocols-devel \
|
||||
# EOF
|
||||
echo "::endgroup::"
|
||||
|
||||
# We use vcpkg for our dependencies, to get more up-to-date version.
|
||||
echo "::group::Install vcpkg and dependencies"
|
||||
|
||||
@@ -129,17 +123,6 @@ jobs:
|
||||
./bootstrap-vcpkg.sh -disableMetrics
|
||||
)
|
||||
|
||||
# Make Python3 available for other packages. This needs to be done
|
||||
# first, as otherwise dependencies fail to build because Python3 is
|
||||
# not available.
|
||||
(
|
||||
cd /
|
||||
|
||||
/vcpkg/vcpkg install python3
|
||||
ln -sf /vcpkg/installed/x64-linux/tools/python3/python3.[0-9][0-9] /usr/bin/python3
|
||||
)
|
||||
echo "::endgroup::"
|
||||
|
||||
- name: Install GCC problem matcher
|
||||
uses: ammaraskar/gcc-problem-matcher@master
|
||||
|
||||
|
10
.github/workflows/release.yml
vendored
10
.github/workflows/release.yml
vendored
@@ -31,6 +31,16 @@ jobs:
|
||||
with:
|
||||
version: ${{ needs.source.outputs.version }}
|
||||
|
||||
linux-legacy:
|
||||
name: Linux (Legacy)
|
||||
needs: source
|
||||
|
||||
uses: ./.github/workflows/release-linux-legacy.yml
|
||||
secrets: inherit
|
||||
|
||||
with:
|
||||
survey_key: ${{ needs.source.outputs.survey_key }}
|
||||
|
||||
linux:
|
||||
name: Linux (Generic)
|
||||
needs: source
|
||||
|
@@ -957,6 +957,7 @@ STR_GAME_OPTIONS_RESOLUTION_OTHER :ander
|
||||
|
||||
|
||||
|
||||
|
||||
STR_GAME_OPTIONS_BASE_GRF :{BLACK}Basis-grafikastel
|
||||
STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Kies die basis-grafikastel stel om te gebruik
|
||||
STR_GAME_OPTIONS_BASE_GRF_DESCRIPTION_TOOLTIP :{BLACK}Meer inligting oor die basis-grafikastel
|
||||
|
@@ -958,6 +958,7 @@ STR_GAME_OPTIONS_GUI_SCALE_AUTO_TOOLTIP :{BLACK}اختر
|
||||
|
||||
|
||||
|
||||
|
||||
STR_GAME_OPTIONS_GRAPHICS :{BLACK}الرسومات
|
||||
|
||||
STR_GAME_OPTIONS_REFRESH_RATE :{BLACK}معدل تحديث الشاشة
|
||||
|
@@ -928,6 +928,7 @@ STR_GAME_OPTIONS_RESOLUTION_OTHER :besteak
|
||||
|
||||
|
||||
|
||||
|
||||
STR_GAME_OPTIONS_BASE_GRF :{BLACK}Grafiko basea markatu
|
||||
STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Aukeratu erabili beharreko grafiko paketea
|
||||
STR_GAME_OPTIONS_BASE_GRF_DESCRIPTION_TOOLTIP :{BLACK}Markatutako grafiko basearen informazio gehiago
|
||||
|
@@ -1265,6 +1265,7 @@ STR_GAME_OPTIONS_RESOLUTION_OTHER :Iншае
|
||||
|
||||
|
||||
|
||||
|
||||
STR_GAME_OPTIONS_REFRESH_RATE :{BLACK}Чашчыня абнаўлення экрана
|
||||
|
||||
STR_GAME_OPTIONS_BASE_GRF :{BLACK}Набор базавай ґрафікі
|
||||
|
@@ -1045,6 +1045,7 @@ STR_GAME_OPTIONS_GUI_SCALE_AUTO_TOOLTIP :{BLACK}Marque e
|
||||
STR_GAME_OPTIONS_GUI_SCALE_BEVELS :{BLACK}Escalar chanfros
|
||||
STR_GAME_OPTIONS_GUI_SCALE_BEVELS_TOOLTIP :{BLACK}Marque esta caixa para dimensionar os chanfros por tamanho de interface
|
||||
|
||||
|
||||
STR_GAME_OPTIONS_GUI_SCALE_1X :1x
|
||||
STR_GAME_OPTIONS_GUI_SCALE_2X :2x
|
||||
STR_GAME_OPTIONS_GUI_SCALE_3X :3x
|
||||
@@ -3018,7 +3019,7 @@ STR_LAND_AREA_INFORMATION_RAIL_OWNER :{BLACK}Dono da
|
||||
STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY :{BLACK}Prefeitura: {LTBLUE}{STRING}
|
||||
STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY_NONE :Nenhum
|
||||
STR_LAND_AREA_INFORMATION_LANDINFO_COORDS :{BLACK}Coordenadas: {LTBLUE}{NUM} x {NUM} x {NUM} ({STRING})
|
||||
STR_LAND_AREA_INFORMATION_BUILD_DATE :{BLACK}Construído: {LTBLUE}{DATE_LONG}
|
||||
STR_LAND_AREA_INFORMATION_BUILD_DATE :{BLACK}Construído/renovado: {LTBLUE}{DATE_LONG}
|
||||
STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}Classe de Estação: {LTBLUE}{STRING}
|
||||
STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}Tipo de Estação: {LTBLUE}{STRING}
|
||||
STR_LAND_AREA_INFORMATION_AIRPORT_CLASS :{BLACK}Classe do aeroporto: {LTBLUE}{STRING}
|
||||
|
@@ -936,6 +936,7 @@ STR_GAME_OPTIONS_RESOLUTION_OTHER :друго
|
||||
|
||||
|
||||
|
||||
|
||||
STR_GAME_OPTIONS_BASE_GRF :{BLACK}Базов графичен набор
|
||||
STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Изберете базов графичен набор
|
||||
STR_GAME_OPTIONS_BASE_GRF_DESCRIPTION_TOOLTIP :{BLACK}Допълнителна информация за базовия графичен пакет
|
||||
|
@@ -1044,6 +1044,7 @@ STR_GAME_OPTIONS_GUI_SCALE_AUTO_TOOLTIP :{BLACK}Marqueu
|
||||
STR_GAME_OPTIONS_GUI_SCALE_BEVELS :{BLACK}Escala els bisells
|
||||
STR_GAME_OPTIONS_GUI_SCALE_BEVELS_TOOLTIP :{BLACK}Marqueu aquesta opció si voleu que s'escalin els bisells segons la mida de la interfície.
|
||||
|
||||
|
||||
STR_GAME_OPTIONS_GUI_SCALE_1X :x1
|
||||
STR_GAME_OPTIONS_GUI_SCALE_2X :x2
|
||||
STR_GAME_OPTIONS_GUI_SCALE_3X :x3
|
||||
|
@@ -504,6 +504,7 @@ STR_GAME_OPTIONS_RESOLUTION_OTHER :расна
|
||||
|
||||
|
||||
|
||||
|
||||
# Custom currency window
|
||||
|
||||
|
||||
|
@@ -1059,6 +1059,7 @@ STR_GAME_OPTIONS_VIDEO_VSYNC :{BLACK}VSync
|
||||
|
||||
|
||||
|
||||
|
||||
STR_GAME_OPTIONS_BASE_GRF :{BLACK}Osnovni set grafike
|
||||
STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Odaberi osnovni grafički set za igru
|
||||
STR_GAME_OPTIONS_BASE_GRF_DESCRIPTION_TOOLTIP :{BLACK}Dodatne informacije o osnovnom grafičkom setu
|
||||
|
@@ -1101,6 +1101,7 @@ STR_GAME_OPTIONS_GUI_SCALE_AUTO_TOOLTIP :{BLACK}Zaškrtn
|
||||
STR_GAME_OPTIONS_GUI_SCALE_BEVELS :{BLACK}Škálovat úkosy
|
||||
STR_GAME_OPTIONS_GUI_SCALE_BEVELS_TOOLTIP :{BLACK}Zaškrtni toto políčko pro škálování úkosů dle velikosti uživatelského rozhraní
|
||||
|
||||
|
||||
STR_GAME_OPTIONS_GUI_SCALE_1X :1x
|
||||
STR_GAME_OPTIONS_GUI_SCALE_2X :2x
|
||||
STR_GAME_OPTIONS_GUI_SCALE_3X :3x
|
||||
|
@@ -1044,6 +1044,7 @@ STR_GAME_OPTIONS_GUI_SCALE_AUTO_TOOLTIP :{BLACK}Marker d
|
||||
STR_GAME_OPTIONS_GUI_SCALE_BEVELS :{BLACK}Skalere facetter
|
||||
STR_GAME_OPTIONS_GUI_SCALE_BEVELS_TOOLTIP :{BLACK}Marker dette afkrydsningsfelt for at skalere facetter efter grænsefladestørrelse
|
||||
|
||||
|
||||
STR_GAME_OPTIONS_GUI_SCALE_1X :1x
|
||||
STR_GAME_OPTIONS_GUI_SCALE_2X :2x
|
||||
STR_GAME_OPTIONS_GUI_SCALE_3X :3x
|
||||
|
@@ -1044,6 +1044,7 @@ STR_GAME_OPTIONS_GUI_SCALE_AUTO_TOOLTIP :{BLACK}Vink dit
|
||||
STR_GAME_OPTIONS_GUI_SCALE_BEVELS :{BLACK}Randen schalen
|
||||
STR_GAME_OPTIONS_GUI_SCALE_BEVELS_TOOLTIP :{BLACK}Vink dit vakje aan om randen te schalen op grootte van gebruikersscherm
|
||||
|
||||
|
||||
STR_GAME_OPTIONS_GUI_SCALE_1X :1x
|
||||
STR_GAME_OPTIONS_GUI_SCALE_2X :2x
|
||||
STR_GAME_OPTIONS_GUI_SCALE_3X :3x
|
||||
|
@@ -1045,7 +1045,7 @@ STR_GAME_OPTIONS_GUI_SCALE_BEVELS :{BLACK}Scale be
|
||||
STR_GAME_OPTIONS_GUI_SCALE_BEVELS_TOOLTIP :{BLACK}Check this box to scale bevels by interface size
|
||||
|
||||
STR_GAME_OPTIONS_GUI_FONT_SPRITE :{BLACK}Use traditional sprite font
|
||||
STR_GAME_OPTIONS_GUI_FONT_SPRITE_TOOLTIP :{BLACK}Check this box if you prefer to use the tradition fixed-size sprite font.
|
||||
STR_GAME_OPTIONS_GUI_FONT_SPRITE_TOOLTIP :{BLACK}Check this box if you prefer to use the traditional fixed-size sprite font.
|
||||
STR_GAME_OPTIONS_GUI_FONT_AA :{BLACK}Anti-alias fonts
|
||||
STR_GAME_OPTIONS_GUI_FONT_AA_TOOLTIP :{BLACK}Check this box to anti-alias resizable fonts.
|
||||
|
||||
|
@@ -1044,6 +1044,7 @@ STR_GAME_OPTIONS_GUI_SCALE_AUTO_TOOLTIP :{BLACK}Check th
|
||||
STR_GAME_OPTIONS_GUI_SCALE_BEVELS :{BLACK}Scale bevels
|
||||
STR_GAME_OPTIONS_GUI_SCALE_BEVELS_TOOLTIP :{BLACK}Check this box to scale bevels by interface size
|
||||
|
||||
|
||||
STR_GAME_OPTIONS_GUI_SCALE_1X :1x
|
||||
STR_GAME_OPTIONS_GUI_SCALE_2X :2x
|
||||
STR_GAME_OPTIONS_GUI_SCALE_3X :3x
|
||||
|
@@ -1044,6 +1044,7 @@ STR_GAME_OPTIONS_GUI_SCALE_AUTO_TOOLTIP :{BLACK}Check th
|
||||
STR_GAME_OPTIONS_GUI_SCALE_BEVELS :{BLACK}Scale bevels
|
||||
STR_GAME_OPTIONS_GUI_SCALE_BEVELS_TOOLTIP :{BLACK}Check this box to scale bevels by interface size
|
||||
|
||||
|
||||
STR_GAME_OPTIONS_GUI_SCALE_1X :1x
|
||||
STR_GAME_OPTIONS_GUI_SCALE_2X :2x
|
||||
STR_GAME_OPTIONS_GUI_SCALE_3X :3x
|
||||
|
@@ -1088,6 +1088,7 @@ STR_GAME_OPTIONS_GUI_SCALE_FRAME :{BLACK}Interfac
|
||||
STR_GAME_OPTIONS_GUI_SCALE_AUTO :{BLACK}Aŭtomate rekonu grandecon
|
||||
|
||||
|
||||
|
||||
STR_GAME_OPTIONS_GUI_SCALE_1X :1x
|
||||
STR_GAME_OPTIONS_GUI_SCALE_2X :2x
|
||||
STR_GAME_OPTIONS_GUI_SCALE_3X :3x
|
||||
|
@@ -1054,6 +1054,7 @@ STR_GAME_OPTIONS_GUI_SCALE_AUTO_TOOLTIP :{BLACK}Märgi s
|
||||
STR_GAME_OPTIONS_GUI_SCALE_BEVELS :{BLACK}Skaleeri kaldeid
|
||||
STR_GAME_OPTIONS_GUI_SCALE_BEVELS_TOOLTIP :{BLACK}Skaleeri kaldeid liidese suuruse järgi
|
||||
|
||||
|
||||
STR_GAME_OPTIONS_GUI_SCALE_1X :1x
|
||||
STR_GAME_OPTIONS_GUI_SCALE_2X :2x
|
||||
STR_GAME_OPTIONS_GUI_SCALE_3X :3x
|
||||
|
@@ -908,6 +908,7 @@ STR_GAME_OPTIONS_RESOLUTION_OTHER :annað
|
||||
|
||||
|
||||
|
||||
|
||||
STR_GAME_OPTIONS_BASE_GRF :{BLACK}Base grafikk sett
|
||||
STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Vel ta base grafikk setti tú vil brúka
|
||||
STR_GAME_OPTIONS_BASE_GRF_DESCRIPTION_TOOLTIP :{BLACK}Meira kunning um base grafikk setti
|
||||
|
@@ -1044,6 +1044,7 @@ STR_GAME_OPTIONS_GUI_SCALE_AUTO_TOOLTIP :{BLACK}Valitse
|
||||
STR_GAME_OPTIONS_GUI_SCALE_BEVELS :{BLACK}Skaalaa viisteet
|
||||
STR_GAME_OPTIONS_GUI_SCALE_BEVELS_TOOLTIP :{BLACK}Valitse tämä ruutu reunusten skaalaamiseksi käyttöliittymän koon mukaan
|
||||
|
||||
|
||||
STR_GAME_OPTIONS_GUI_SCALE_1X :1×
|
||||
STR_GAME_OPTIONS_GUI_SCALE_2X :2×
|
||||
STR_GAME_OPTIONS_GUI_SCALE_3X :3×
|
||||
|
@@ -1045,6 +1045,7 @@ STR_GAME_OPTIONS_GUI_SCALE_AUTO_TOOLTIP :{BLACK}Cochez c
|
||||
STR_GAME_OPTIONS_GUI_SCALE_BEVELS :{BLACK}Mettre à l’échelle les bordures
|
||||
STR_GAME_OPTIONS_GUI_SCALE_BEVELS_TOOLTIP :{BLACK}Cochez cette case pour mettre les bordures à l'échelle avec la taille de l'interface
|
||||
|
||||
|
||||
STR_GAME_OPTIONS_GUI_SCALE_1X :1x
|
||||
STR_GAME_OPTIONS_GUI_SCALE_2X :2x
|
||||
STR_GAME_OPTIONS_GUI_SCALE_3X :3x
|
||||
|
@@ -953,6 +953,7 @@ STR_GAME_OPTIONS_RESOLUTION_ITEM :{NUM}x{NUM}
|
||||
|
||||
|
||||
|
||||
|
||||
STR_GAME_OPTIONS_REFRESH_RATE :{BLACK}Byldferfaskingssnelheid
|
||||
|
||||
STR_GAME_OPTIONS_BASE_GRF :{BLACK}Basisset for ôfbyldings
|
||||
|
@@ -1141,6 +1141,7 @@ STR_GAME_OPTIONS_RESOLUTION_OTHER :Gnàthaichte
|
||||
|
||||
|
||||
|
||||
|
||||
STR_GAME_OPTIONS_BASE_GRF :{BLACK}Seata grafaigeachd bunasach
|
||||
STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Tagh an seata grafaigeachd bunasach a chleachdas tu
|
||||
STR_GAME_OPTIONS_BASE_GRF_DESCRIPTION_TOOLTIP :{BLACK}Barrachd fiosrachaidh mun t-seata ghrafaigeachd bhunasach
|
||||
|
@@ -1041,6 +1041,7 @@ STR_GAME_OPTIONS_GUI_SCALE_AUTO_TOOLTIP :{BLACK}Marca es
|
||||
STR_GAME_OPTIONS_GUI_SCALE_BEVELS :{BLACK}Escalar biseles
|
||||
STR_GAME_OPTIONS_GUI_SCALE_BEVELS_TOOLTIP :{BLACK}Marca esta caixa para escalar os biseles segundo o tamaño da interface
|
||||
|
||||
|
||||
STR_GAME_OPTIONS_GUI_SCALE_1X :1x
|
||||
STR_GAME_OPTIONS_GUI_SCALE_2X :2x
|
||||
STR_GAME_OPTIONS_GUI_SCALE_3X :3x
|
||||
|
@@ -1040,6 +1040,7 @@ STR_GAME_OPTIONS_GUI_SCALE_AUTO_TOOLTIP :{BLACK}Dieses K
|
||||
STR_GAME_OPTIONS_GUI_SCALE_BEVELS :{BLACK}Schrägen skalieren
|
||||
STR_GAME_OPTIONS_GUI_SCALE_BEVELS_TOOLTIP :{BLACK}Dieses Kästchen ankreuzen, um Schrägen nach der Oberflächengröße zu skalieren
|
||||
|
||||
|
||||
STR_GAME_OPTIONS_GUI_SCALE_1X :1×
|
||||
STR_GAME_OPTIONS_GUI_SCALE_2X :2×
|
||||
STR_GAME_OPTIONS_GUI_SCALE_3X :3×
|
||||
|
@@ -1104,6 +1104,7 @@ STR_GAME_OPTIONS_GUI_SCALE_AUTO_TOOLTIP :{BLACK}Τσεκ
|
||||
STR_GAME_OPTIONS_GUI_SCALE_BEVELS :{BLACK}Κλίση κλίμακας
|
||||
STR_GAME_OPTIONS_GUI_SCALE_BEVELS_TOOLTIP :{BLACK}Τσεκάρετε αυτό το κουτί για να αλλάζει μέγεθος το περίγραμμα με βάση το μέγεθος της διεπαφής
|
||||
|
||||
|
||||
STR_GAME_OPTIONS_GUI_SCALE_1X :1x
|
||||
STR_GAME_OPTIONS_GUI_SCALE_2X :2x
|
||||
STR_GAME_OPTIONS_GUI_SCALE_3X :3x
|
||||
|
@@ -958,6 +958,7 @@ STR_GAME_OPTIONS_VIDEO_VSYNC :{BLACK}VSync
|
||||
|
||||
|
||||
|
||||
|
||||
STR_GAME_OPTIONS_GUI_SCALE_2X :2x
|
||||
STR_GAME_OPTIONS_GUI_SCALE_3X :3x
|
||||
STR_GAME_OPTIONS_GUI_SCALE_4X :4x
|
||||
|
@@ -307,6 +307,7 @@ STR_GAME_OPTIONS_GUI_SCALE_FRAME :{BLACK}इं
|
||||
|
||||
|
||||
|
||||
|
||||
# Custom currency window
|
||||
|
||||
STR_CURRENCY_DECREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}एक पाउंड (£) की तुलना में अपनी मुद्रा का अवमूल्यन करें
|
||||
|
@@ -1103,6 +1103,7 @@ STR_GAME_OPTIONS_GUI_SCALE_AUTO_TOOLTIP :{BLACK}Jelöld
|
||||
STR_GAME_OPTIONS_GUI_SCALE_BEVELS :{BLACK}Élek méretezése
|
||||
STR_GAME_OPTIONS_GUI_SCALE_BEVELS_TOOLTIP :{BLACK}Jelöld be ezt a négyzetet hogy az interfész méretéhez igazítsd az éleket
|
||||
|
||||
|
||||
STR_GAME_OPTIONS_GUI_SCALE_1X :1x
|
||||
STR_GAME_OPTIONS_GUI_SCALE_2X :2x
|
||||
STR_GAME_OPTIONS_GUI_SCALE_3X :3x
|
||||
|
@@ -907,6 +907,7 @@ STR_GAME_OPTIONS_RESOLUTION_OTHER :annað
|
||||
|
||||
|
||||
|
||||
|
||||
STR_GAME_OPTIONS_BASE_GRF :{BLACK}Grunngrafík
|
||||
STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Nota grunngrafíkina
|
||||
STR_GAME_OPTIONS_BASE_GRF_DESCRIPTION_TOOLTIP :{BLACK}Frekari upplýsingar um grunngrafíkpakkann
|
||||
|
@@ -488,6 +488,7 @@ STR_GAME_OPTIONS_RESOLUTION_OTHER :altra
|
||||
|
||||
|
||||
|
||||
|
||||
# Custom currency window
|
||||
|
||||
|
||||
|
@@ -1039,6 +1039,7 @@ STR_GAME_OPTIONS_GUI_SCALE_AUTO_TOOLTIP :{BLACK}Pilih ko
|
||||
STR_GAME_OPTIONS_GUI_SCALE_BEVELS :{BLACK}Skala bevel
|
||||
STR_GAME_OPTIONS_GUI_SCALE_BEVELS_TOOLTIP :{BLACK}Pilih kotak ini untuk pengaturan perbandingan ukuran bevel dengan ukuran antarmuka
|
||||
|
||||
|
||||
STR_GAME_OPTIONS_GUI_SCALE_1X :1x
|
||||
STR_GAME_OPTIONS_GUI_SCALE_2X :2x
|
||||
STR_GAME_OPTIONS_GUI_SCALE_3X :3x
|
||||
|
@@ -982,6 +982,7 @@ STR_GAME_OPTIONS_VIDEO_VSYNC_TOOLTIP :{BLACK}Cuir tic
|
||||
|
||||
|
||||
|
||||
|
||||
STR_GAME_OPTIONS_GRAPHICS :{BLACK}Grafaicí
|
||||
|
||||
STR_GAME_OPTIONS_REFRESH_RATE :{BLACK}Ráta athnuachana na taispeána
|
||||
|
@@ -1045,6 +1045,7 @@ STR_GAME_OPTIONS_GUI_SCALE_AUTO_TOOLTIP :{BLACK}Selezion
|
||||
STR_GAME_OPTIONS_GUI_SCALE_BEVELS :{BLACK}Scala smussature
|
||||
STR_GAME_OPTIONS_GUI_SCALE_BEVELS_TOOLTIP :{BLACK}Seleziona questa casella per ridimensionare le smussature in base alle dimensioni dell'interfaccia
|
||||
|
||||
|
||||
STR_GAME_OPTIONS_GUI_SCALE_1X :1x
|
||||
STR_GAME_OPTIONS_GUI_SCALE_2X :2x
|
||||
STR_GAME_OPTIONS_GUI_SCALE_3X :3x
|
||||
|
@@ -1017,6 +1017,7 @@ STR_GAME_OPTIONS_GUI_SCALE_AUTO_TOOLTIP :{BLACK}ここ
|
||||
STR_GAME_OPTIONS_GUI_SCALE_BEVELS :{BLACK}ベベルのスケール
|
||||
STR_GAME_OPTIONS_GUI_SCALE_BEVELS_TOOLTIP :{BLACK}ここをチェックするとベベルはインタフェースのサイズに比例します
|
||||
|
||||
|
||||
STR_GAME_OPTIONS_GUI_SCALE_1X :1x
|
||||
STR_GAME_OPTIONS_GUI_SCALE_2X :2x
|
||||
STR_GAME_OPTIONS_GUI_SCALE_3X :3x
|
||||
|
@@ -1045,6 +1045,7 @@ STR_GAME_OPTIONS_GUI_SCALE_AUTO_TOOLTIP :{BLACK}인터
|
||||
STR_GAME_OPTIONS_GUI_SCALE_BEVELS :{BLACK}크기 조절
|
||||
STR_GAME_OPTIONS_GUI_SCALE_BEVELS_TOOLTIP :{BLACK}인터페이스 크기를 슬라이더로 조절하려면 이 박스에 체크하세요
|
||||
|
||||
|
||||
STR_GAME_OPTIONS_GUI_SCALE_1X :1x
|
||||
STR_GAME_OPTIONS_GUI_SCALE_2X :2x
|
||||
STR_GAME_OPTIONS_GUI_SCALE_3X :3x
|
||||
|
@@ -1133,6 +1133,7 @@ STR_GAME_OPTIONS_RESOLUTION_OTHER :alia
|
||||
|
||||
|
||||
|
||||
|
||||
STR_GAME_OPTIONS_BASE_GRF :{BLACK}Fundamentum graphicum
|
||||
STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Eligere fundamentum graphicum adhibendum
|
||||
STR_GAME_OPTIONS_BASE_GRF_DESCRIPTION_TOOLTIP :{BLACK}Indicia additicia de hoc fundamento graphico
|
||||
|
@@ -1046,6 +1046,7 @@ STR_GAME_OPTIONS_GUI_SCALE_AUTO_TOOLTIP :{BLACK}Atzīmē
|
||||
STR_GAME_OPTIONS_GUI_SCALE_BEVELS :{BLACK}Mēroga slīpumi
|
||||
STR_GAME_OPTIONS_GUI_SCALE_BEVELS_TOOLTIP :{BLACK}Atzīmējiet šo izvēlni, lai mērogotu slīpumu pēc saskarnes lieluma
|
||||
|
||||
|
||||
STR_GAME_OPTIONS_GUI_SCALE_1X :1x
|
||||
STR_GAME_OPTIONS_GUI_SCALE_2X :2x
|
||||
STR_GAME_OPTIONS_GUI_SCALE_3X :3x
|
||||
|
@@ -1196,6 +1196,7 @@ STR_GAME_OPTIONS_GUI_SCALE_AUTO_TOOLTIP :{BLACK}Pažymė
|
||||
STR_GAME_OPTIONS_GUI_SCALE_BEVELS :{BLACK}Skalės nuožulniai
|
||||
STR_GAME_OPTIONS_GUI_SCALE_BEVELS_TOOLTIP :{BLACK}Pažymėkite šį langelį, jei norite keisti kampus pagal sąsajos dydį
|
||||
|
||||
|
||||
STR_GAME_OPTIONS_GUI_SCALE_1X :1x
|
||||
STR_GAME_OPTIONS_GUI_SCALE_4X :4x
|
||||
|
||||
|
@@ -998,6 +998,7 @@ STR_GAME_OPTIONS_GUI_SCALE_AUTO_TOOLTIP :{BLACK}Klick d
|
||||
STR_GAME_OPTIONS_GUI_SCALE_BEVELS :{BLACK}Bevels skaléiren
|
||||
STR_GAME_OPTIONS_GUI_SCALE_BEVELS_TOOLTIP :{BLACK}Klick dës Optioun fir d'Bevels mat der Gréisst vum Interface ze skaléiren
|
||||
|
||||
|
||||
STR_GAME_OPTIONS_GUI_SCALE_1X :1x
|
||||
STR_GAME_OPTIONS_GUI_SCALE_2X :2x
|
||||
STR_GAME_OPTIONS_GUI_SCALE_3X :3x
|
||||
|
@@ -803,6 +803,7 @@ STR_GAME_OPTIONS_CAPTION :{WHITE}Опци
|
||||
|
||||
|
||||
|
||||
|
||||
# Custom currency window
|
||||
|
||||
|
||||
|
@@ -911,6 +911,7 @@ STR_GAME_OPTIONS_RESOLUTION_OTHER :lain
|
||||
|
||||
|
||||
|
||||
|
||||
STR_GAME_OPTIONS_BASE_GRF :{BLACK}Set grafik asas
|
||||
STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Pilih set grafik asas untuk digunakan
|
||||
STR_GAME_OPTIONS_BASE_GRF_DESCRIPTION_TOOLTIP :{BLACK}Maklumat tambahan tentang set grafik asas ini
|
||||
|
@@ -421,6 +421,7 @@ STR_GAME_OPTIONS_RESOLUTION_OTHER :oħrajn
|
||||
|
||||
|
||||
|
||||
|
||||
# Custom currency window
|
||||
|
||||
|
||||
|
@@ -738,6 +738,7 @@ STR_GAME_OPTIONS_RESOLUTION_OTHER :अन्य
|
||||
|
||||
|
||||
|
||||
|
||||
# Custom currency window
|
||||
|
||||
|
||||
|
@@ -984,6 +984,7 @@ STR_GAME_OPTIONS_VIDEO_VSYNC_TOOLTIP :{BLACK}Merk av
|
||||
|
||||
|
||||
|
||||
|
||||
STR_GAME_OPTIONS_GUI_SCALE_2X :2x
|
||||
STR_GAME_OPTIONS_GUI_SCALE_3X :3x
|
||||
|
||||
|
@@ -938,6 +938,7 @@ STR_GAME_OPTIONS_RESOLUTION_OTHER :anna
|
||||
|
||||
|
||||
|
||||
|
||||
STR_GAME_OPTIONS_BASE_GRF :{BLACK}Grafikksett
|
||||
STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Vel grafikksett som skal nyttast
|
||||
STR_GAME_OPTIONS_BASE_GRF_DESCRIPTION_TOOLTIP :{BLACK}Tilleggsinformasjon om grafikksettet
|
||||
|
@@ -928,6 +928,7 @@ STR_GAME_OPTIONS_RESOLUTION_OTHER :دیگر
|
||||
|
||||
|
||||
|
||||
|
||||
STR_GAME_OPTIONS_BASE_GRF :{BLACK}بسته گرافیک پایه
|
||||
STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}بسته گرافیک پایه را انتخاب کنید
|
||||
STR_GAME_OPTIONS_BASE_GRF_DESCRIPTION_TOOLTIP :{BLACK} اطلاعات اضافه در مورد بسته ی گرافیکی پایه
|
||||
|
@@ -1424,6 +1424,7 @@ STR_GAME_OPTIONS_GUI_SCALE_AUTO_TOOLTIP :{BLACK}Zaznacz
|
||||
STR_GAME_OPTIONS_GUI_SCALE_BEVELS :{BLACK}Skaluj fazy krawędzi
|
||||
STR_GAME_OPTIONS_GUI_SCALE_BEVELS_TOOLTIP :{BLACK}Zaznacz to pole, aby skalować fazy krawędzi zgodnie z rozmiarem interfejsu
|
||||
|
||||
|
||||
STR_GAME_OPTIONS_GUI_SCALE_1X :1x
|
||||
STR_GAME_OPTIONS_GUI_SCALE_2X :2x
|
||||
STR_GAME_OPTIONS_GUI_SCALE_3X :3x
|
||||
|
@@ -1045,6 +1045,7 @@ STR_GAME_OPTIONS_GUI_SCALE_AUTO_TOOLTIP :{BLACK}Marque e
|
||||
STR_GAME_OPTIONS_GUI_SCALE_BEVELS :{BLACK}Escalar chanfros
|
||||
STR_GAME_OPTIONS_GUI_SCALE_BEVELS_TOOLTIP :{BLACK}Marque esta caixa para dimensionar os chanfros por tamanho de interface
|
||||
|
||||
|
||||
STR_GAME_OPTIONS_GUI_SCALE_1X :1x
|
||||
STR_GAME_OPTIONS_GUI_SCALE_2X :2x
|
||||
STR_GAME_OPTIONS_GUI_SCALE_3X :3x
|
||||
|
@@ -1040,6 +1040,7 @@ STR_GAME_OPTIONS_GUI_SCALE_AUTO_TOOLTIP :{BLACK}Bifați
|
||||
STR_GAME_OPTIONS_GUI_SCALE_BEVELS :{BLACK}Scalează marginile
|
||||
STR_GAME_OPTIONS_GUI_SCALE_BEVELS_TOOLTIP :{BLACK}Bifați această casetă pentru a scala marginile în funcție de dimensiunea interfeței
|
||||
|
||||
|
||||
STR_GAME_OPTIONS_GUI_SCALE_1X :1x
|
||||
STR_GAME_OPTIONS_GUI_SCALE_2X :2x
|
||||
STR_GAME_OPTIONS_GUI_SCALE_3X :3x
|
||||
|
@@ -1189,6 +1189,7 @@ STR_GAME_OPTIONS_GUI_SCALE_AUTO_TOOLTIP :{BLACK}Нажм
|
||||
STR_GAME_OPTIONS_GUI_SCALE_BEVELS :{BLACK}Рельефные элементы
|
||||
STR_GAME_OPTIONS_GUI_SCALE_BEVELS_TOOLTIP :{BLACK}Масштабировать рельефные элементы интерфейса
|
||||
|
||||
|
||||
STR_GAME_OPTIONS_GUI_SCALE_1X :1x
|
||||
STR_GAME_OPTIONS_GUI_SCALE_2X :2x
|
||||
STR_GAME_OPTIONS_GUI_SCALE_3X :3x
|
||||
|
@@ -1203,6 +1203,7 @@ STR_GAME_OPTIONS_GUI_SCALE_AUTO_TOOLTIP :{BLACK}Označi
|
||||
STR_GAME_OPTIONS_GUI_SCALE_BEVELS :{BLACK}Povećanje okvira
|
||||
STR_GAME_OPTIONS_GUI_SCALE_BEVELS_TOOLTIP :{BLACK}Označi ovde da veličina okvira povećava sa veličinom prozora
|
||||
|
||||
|
||||
STR_GAME_OPTIONS_GUI_SCALE_1X :1x
|
||||
STR_GAME_OPTIONS_GUI_SCALE_2X :2x
|
||||
STR_GAME_OPTIONS_GUI_SCALE_3X :3x
|
||||
|
@@ -1044,6 +1044,7 @@ STR_GAME_OPTIONS_GUI_SCALE_AUTO_TOOLTIP :{BLACK}选中
|
||||
STR_GAME_OPTIONS_GUI_SCALE_BEVELS :{BLACK}适应边框大小
|
||||
STR_GAME_OPTIONS_GUI_SCALE_BEVELS_TOOLTIP :{BLACK}选中此框使边框大小随界面大小而缩放
|
||||
|
||||
|
||||
STR_GAME_OPTIONS_GUI_SCALE_1X :1倍
|
||||
STR_GAME_OPTIONS_GUI_SCALE_2X :2倍
|
||||
STR_GAME_OPTIONS_GUI_SCALE_3X :3倍
|
||||
|
@@ -1100,6 +1100,7 @@ STR_GAME_OPTIONS_GUI_SCALE_AUTO_TOOLTIP :{BLACK}Začiark
|
||||
STR_GAME_OPTIONS_GUI_SCALE_BEVELS :{BLACK}Mierkové úkosy
|
||||
STR_GAME_OPTIONS_GUI_SCALE_BEVELS_TOOLTIP :{BLACK}Začiarknutím tohto políčka zmeníte úkosy podľa veľkosti rozhrania
|
||||
|
||||
|
||||
STR_GAME_OPTIONS_GUI_SCALE_1X :1x
|
||||
STR_GAME_OPTIONS_GUI_SCALE_2X :2x
|
||||
STR_GAME_OPTIONS_GUI_SCALE_3X :3x
|
||||
|
@@ -1093,6 +1093,7 @@ STR_GAME_OPTIONS_RESOLUTION_OTHER :drugo
|
||||
|
||||
|
||||
|
||||
|
||||
STR_GAME_OPTIONS_BASE_GRF :{BLACK}Osnovni komplet grafik
|
||||
STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Izberi osnovni komplet grafik za uporabo
|
||||
STR_GAME_OPTIONS_BASE_GRF_DESCRIPTION_TOOLTIP :{BLACK}Dodatne informacije o osnovnem kompletu grafik
|
||||
|
@@ -999,6 +999,7 @@ STR_GAME_OPTIONS_GUI_SCALE_AUTO_TOOLTIP :{BLACK}Marca es
|
||||
STR_GAME_OPTIONS_GUI_SCALE_BEVELS :{BLACK}Escalar bordes
|
||||
STR_GAME_OPTIONS_GUI_SCALE_BEVELS_TOOLTIP :{BLACK}Marca esta casilla para escalar los bordes según el tamaño de la interfaz
|
||||
|
||||
|
||||
STR_GAME_OPTIONS_GUI_SCALE_1X :1x
|
||||
STR_GAME_OPTIONS_GUI_SCALE_2X :2x
|
||||
STR_GAME_OPTIONS_GUI_SCALE_3X :3x
|
||||
|
@@ -999,6 +999,7 @@ STR_GAME_OPTIONS_GUI_SCALE_AUTO_TOOLTIP :{BLACK}Detectar
|
||||
STR_GAME_OPTIONS_GUI_SCALE_BEVELS :{BLACK}Ajustar biseles
|
||||
STR_GAME_OPTIONS_GUI_SCALE_BEVELS_TOOLTIP :{BLACK}Ajustar el tamaño de los biseles respecto a la interfaz
|
||||
|
||||
|
||||
STR_GAME_OPTIONS_GUI_SCALE_1X :1x
|
||||
STR_GAME_OPTIONS_GUI_SCALE_2X :2x
|
||||
STR_GAME_OPTIONS_GUI_SCALE_3X :3x
|
||||
|
@@ -1035,6 +1035,7 @@ STR_GAME_OPTIONS_GUI_SCALE_AUTO_TOOLTIP :{BLACK}Kryssa i
|
||||
STR_GAME_OPTIONS_GUI_SCALE_BEVELS :{BLACK}Skala bården
|
||||
STR_GAME_OPTIONS_GUI_SCALE_BEVELS_TOOLTIP :{BLACK}Kryssa i den här rutan för att skala bården efter gränssnittets storlek
|
||||
|
||||
|
||||
STR_GAME_OPTIONS_GUI_SCALE_1X :1x
|
||||
STR_GAME_OPTIONS_GUI_SCALE_2X :2x
|
||||
STR_GAME_OPTIONS_GUI_SCALE_3X :3x
|
||||
|
@@ -949,6 +949,7 @@ STR_GAME_OPTIONS_VIDEO_VSYNC_TOOLTIP :{BLACK} தி
|
||||
|
||||
|
||||
|
||||
|
||||
STR_GAME_OPTIONS_GUI_SCALE_1X :1x
|
||||
STR_GAME_OPTIONS_GUI_SCALE_2X :2x
|
||||
|
||||
|
@@ -952,6 +952,7 @@ STR_GAME_OPTIONS_RESOLUTION_OTHER :อื่นๆ
|
||||
|
||||
|
||||
|
||||
|
||||
STR_GAME_OPTIONS_REFRESH_RATE :{BLACK}รีเฟรชเรทของหน้าจอ
|
||||
STR_GAME_OPTIONS_REFRESH_RATE_WARNING :{WHITE}หากตั้งรีเฟรชเรทไว้มากกว่า 60Hz ขึ้นไป อาจมีผลต่อประสิทธิภาพของเกมได้
|
||||
|
||||
|
@@ -1035,6 +1035,7 @@ STR_GAME_OPTIONS_GUI_SCALE_AUTO_TOOLTIP :{BLACK}勾選
|
||||
STR_GAME_OPTIONS_GUI_SCALE_BEVELS :{BLACK}縮放邊框
|
||||
STR_GAME_OPTIONS_GUI_SCALE_BEVELS_TOOLTIP :{BLACK}勾選此方框以令邊框隨界面大小而縮放
|
||||
|
||||
|
||||
STR_GAME_OPTIONS_GUI_SCALE_1X :1倍
|
||||
STR_GAME_OPTIONS_GUI_SCALE_2X :2倍
|
||||
STR_GAME_OPTIONS_GUI_SCALE_3X :3倍
|
||||
|
@@ -1044,6 +1044,7 @@ STR_GAME_OPTIONS_GUI_SCALE_AUTO_TOOLTIP :{BLACK}Arayüz
|
||||
STR_GAME_OPTIONS_GUI_SCALE_BEVELS :{BLACK}Eğimi ayarla
|
||||
STR_GAME_OPTIONS_GUI_SCALE_BEVELS_TOOLTIP :{BLACK}Eğimi arayüz boyutuna göre ayarlamak için bu kutucuğu işaretleyin
|
||||
|
||||
|
||||
STR_GAME_OPTIONS_GUI_SCALE_1X :1x
|
||||
STR_GAME_OPTIONS_GUI_SCALE_2X :2x
|
||||
STR_GAME_OPTIONS_GUI_SCALE_3X :3x
|
||||
|
@@ -1145,6 +1145,7 @@ STR_GAME_OPTIONS_GUI_SCALE_AUTO_TOOLTIP :{BLACK}Увім
|
||||
STR_GAME_OPTIONS_GUI_SCALE_BEVELS :{BLACK}Межі шкали
|
||||
STR_GAME_OPTIONS_GUI_SCALE_BEVELS_TOOLTIP :BLACK}Увімкнутий прапорець дозволить змінити розмір інтерфейсу
|
||||
|
||||
|
||||
STR_GAME_OPTIONS_GUI_SCALE_1X :1x
|
||||
STR_GAME_OPTIONS_GUI_SCALE_2X :2x
|
||||
STR_GAME_OPTIONS_GUI_SCALE_3X :3x
|
||||
|
@@ -903,6 +903,7 @@ STR_GAME_OPTIONS_RESOLUTION_OTHER :دیگر
|
||||
|
||||
|
||||
|
||||
|
||||
STR_GAME_OPTIONS_BASE_GRF :{BLACK}بُنیادی گرافک سیٹ
|
||||
STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}بُنیادی گرافک سیٹ اختیار کریں
|
||||
STR_GAME_OPTIONS_BASE_GRF_DESCRIPTION_TOOLTIP :{BLACK}بُنیادی گرافک سیٹ کے بارے میں اضافی معلومات
|
||||
|
@@ -1043,6 +1043,7 @@ STR_GAME_OPTIONS_GUI_SCALE_AUTO_TOOLTIP :{BLACK}Đánh d
|
||||
STR_GAME_OPTIONS_GUI_SCALE_BEVELS :Tỷ lệ góc xiên
|
||||
STR_GAME_OPTIONS_GUI_SCALE_BEVELS_TOOLTIP :{BLACK}Đánh dấu vào ô này để điều chỉnh tỷ lệ góc xiên theo kích thước giao diện
|
||||
|
||||
|
||||
STR_GAME_OPTIONS_GUI_SCALE_1X :1x
|
||||
STR_GAME_OPTIONS_GUI_SCALE_2X :2x
|
||||
STR_GAME_OPTIONS_GUI_SCALE_3X :3x
|
||||
|
@@ -961,6 +961,7 @@ STR_GAME_OPTIONS_GUI_SCALE_AUTO :{BLACK}Awto-gan
|
||||
STR_GAME_OPTIONS_GUI_SCALE_AUTO_TOOLTIP :{BLACK}Marciwch y blwch hwn i ganfod maint y rhyngwyneb yn awtomatig
|
||||
|
||||
|
||||
|
||||
STR_GAME_OPTIONS_GUI_SCALE_1X :1x
|
||||
STR_GAME_OPTIONS_GUI_SCALE_2X :2x
|
||||
STR_GAME_OPTIONS_GUI_SCALE_3X :3x
|
||||
|
@@ -426,7 +426,7 @@ static const NWidgetPart _nested_script_league_widgets[] = {
|
||||
NWidget(WWT_SHADEBOX, COLOUR_BROWN),
|
||||
NWidget(WWT_STICKYBOX, COLOUR_BROWN),
|
||||
EndContainer(),
|
||||
NWidget(WWT_PANEL, COLOUR_BROWN, WID_SLT_BACKGROUND), SetMinimalSize(400, 0), SetMinimalTextLines(15, WidgetDimensions::scaled.framerect.Vertical()),
|
||||
NWidget(WWT_PANEL, COLOUR_BROWN, WID_SLT_BACKGROUND), SetMinimalSize(400, 0), SetMinimalTextLines(15, WidgetDimensions::unscaled.framerect.Vertical()),
|
||||
EndContainer(),
|
||||
};
|
||||
|
||||
|
@@ -395,7 +395,7 @@ public:
|
||||
case SIGTYPE_PROG:
|
||||
case SIGTYPE_COMBO:
|
||||
case SIGTYPE_EXIT: cost += Yapf().PfGetSettings().rail_firstred_exit_penalty; break; // first signal is red pre-signal-exit
|
||||
case SIGTYPE_NORMAL:
|
||||
case SIGTYPE_BLOCK:
|
||||
case SIGTYPE_ENTRY: cost += Yapf().PfGetSettings().rail_firstred_penalty; break;
|
||||
default: break;
|
||||
}
|
||||
|
@@ -150,7 +150,7 @@ struct CYapfRailNodeT
|
||||
m_last_non_reserve_through_signal_tile = INVALID_TILE;
|
||||
m_last_non_reserve_through_signal_td = INVALID_TRACKDIR;
|
||||
flags_u.m_inherited_flags = 0;
|
||||
m_last_red_signal_type = SIGTYPE_NORMAL;
|
||||
m_last_red_signal_type = SIGTYPE_BLOCK;
|
||||
/* We use PBS as initial signal type because if we are in
|
||||
* a PBS section and need to route, i.e. we're at a safe
|
||||
* waiting point of a station, we need to account for the
|
||||
|
@@ -91,7 +91,7 @@ void ResolveRailTypeGUISignalSprites(RailTypeInfo *rti, uint8_t style, PalSprite
|
||||
spr += SPR_DUP_PROGSIGNAL_BASE - SPR_PROGSIGNAL_BASE;
|
||||
} else if (type == SIGTYPE_NO_ENTRY) {
|
||||
spr += SPR_DUP_EXTRASIGNAL_BASE - SPR_EXTRASIGNAL_BASE;
|
||||
} else if (var == SIG_ELECTRIC && type == SIGTYPE_NORMAL) {
|
||||
} else if (var == SIG_ELECTRIC && type == SIGTYPE_BLOCK) {
|
||||
spr += SPR_DUP_ORIGINAL_SIGNALS_BASE - SPR_ORIGINAL_SIGNALS_BASE;
|
||||
} else {
|
||||
spr += SPR_DUP_SIGNALS_BASE - SPR_SIGNALS_BASE;
|
||||
@@ -100,7 +100,7 @@ void ResolveRailTypeGUISignalSprites(RailTypeInfo *rti, uint8_t style, PalSprite
|
||||
return spr;
|
||||
};
|
||||
|
||||
for (SignalType type = SIGTYPE_NORMAL; type < SIGTYPE_END; type = (SignalType)(type + 1)) {
|
||||
for (SignalType type = SIGTYPE_BLOCK; type < SIGTYPE_END; type = (SignalType)(type + 1)) {
|
||||
for (SignalVariant var = SIG_ELECTRIC; var <= SIG_SEMAPHORE; var = (SignalVariant)(var + 1)) {
|
||||
PalSpriteID red = GetCustomSignalSprite(rti, INVALID_TILE, type, var, 0, CSSC_GUI, style).sprite;
|
||||
if (red.sprite != 0) {
|
||||
@@ -1742,10 +1742,10 @@ CommandCost CmdBuildSingleSignal(TileIndex tile, DoCommandFlag flags, uint32_t p
|
||||
} else if (convert_signal) {
|
||||
/* convert button pressed */
|
||||
if (ctrl_pressed || GetSignalVariant(tile, track) != sigvar || signal_style != GetSignalStyle(tile, track)) {
|
||||
/* convert electric <-> semaphore and/or change style */
|
||||
/* it costs money to change signal variant (light or semaphore) */
|
||||
cost = CommandCost(EXPENSES_CONSTRUCTION, _price[PR_BUILD_SIGNALS] + _price[PR_CLEAR_SIGNALS]);
|
||||
} else {
|
||||
/* it is free to change signal type: normal-pre-exit-combo */
|
||||
/* it is free to change signal type (block, exit, entry, combo, path, etc) */
|
||||
cost = CommandCost();
|
||||
}
|
||||
|
||||
@@ -1764,7 +1764,7 @@ CommandCost CmdBuildSingleSignal(TileIndex tile, DoCommandFlag flags, uint32_t p
|
||||
if (!is_style_usable(GetSignalVariant(tile, track), GetSignalStyle(tile, track), 1 << new_sigtype)) return_cmd_error(STR_ERROR_UNSUITABLE_SIGNAL_TYPE);
|
||||
}
|
||||
|
||||
/* it is free to change orientation/pre-exit-combo signals */
|
||||
/* it is free to change orientation or number of signals on the tile (for block/presignals which allow signals in both directions) */
|
||||
cost = CommandCost();
|
||||
}
|
||||
}
|
||||
@@ -2038,7 +2038,7 @@ static CommandCost CmdSignalTrackHelper(TileIndex tile, DoCommandFlag flags, uin
|
||||
|
||||
sigtype = GetSignalType(tile, track);
|
||||
/* Don't but copy entry or exit-signal type */
|
||||
if (sigtype == SIGTYPE_ENTRY || sigtype == SIGTYPE_EXIT) sigtype = SIGTYPE_NORMAL;
|
||||
if (sigtype == SIGTYPE_ENTRY || sigtype == SIGTYPE_EXIT) sigtype = SIGTYPE_BLOCK;
|
||||
|
||||
signal_style = GetSignalStyle(tile, track);
|
||||
} else { // no signals exist, drag a two-way signal stretch
|
||||
@@ -3202,8 +3202,8 @@ void DrawRestrictedSignal(SignalType type, SpriteID sprite, int x, int y, int z,
|
||||
static const SubSprite lower_part_plain = { -50, -5, 50, 50 };
|
||||
static const SubSprite upper_part_plain = { -50, -50, 50, -6 };
|
||||
|
||||
AddSortableSpriteToDraw(sprite, SPR_TRACERESTRICT_BASE + 2, x, y, 1, 1, dz, z, false, 0, 0, bb_offset_z, (type == SIGTYPE_NORMAL) ? &lower_part_plain : &lower_part);
|
||||
AddSortableSpriteToDraw(sprite, PAL_NONE, x, y, 1, 1, dz, z, false, 0, 0, bb_offset_z, (type == SIGTYPE_NORMAL) ? &upper_part_plain : &upper_part);
|
||||
AddSortableSpriteToDraw(sprite, SPR_TRACERESTRICT_BASE + 2, x, y, 1, 1, dz, z, false, 0, 0, bb_offset_z, (type == SIGTYPE_BLOCK) ? &lower_part_plain : &lower_part);
|
||||
AddSortableSpriteToDraw(sprite, PAL_NONE, x, y, 1, 1, dz, z, false, 0, 0, bb_offset_z, (type == SIGTYPE_BLOCK) ? &upper_part_plain : &upper_part);
|
||||
} else if (type == SIGTYPE_PBS || type == SIGTYPE_PBS_ONEWAY) {
|
||||
static const SubSprite lower_part = { -50, -10, 50, 50 };
|
||||
static const SubSprite upper_part = { -50, -50, 50, -11 };
|
||||
@@ -3296,7 +3296,7 @@ void DrawSingleSignal(TileIndex tile, const RailTypeInfo *rti, Track track, Sign
|
||||
is_custom_sprite = !(file != nullptr && file->flags & SFF_PROGSIG);
|
||||
} else {
|
||||
/* Normal electric signals are stored in a different sprite block than all other signals. */
|
||||
sprite = (type == SIGTYPE_NORMAL && variant == SIG_ELECTRIC) ? SPR_ORIGINAL_SIGNALS_BASE : SPR_SIGNALS_BASE - 16;
|
||||
sprite = (type == SIGTYPE_BLOCK && variant == SIG_ELECTRIC) ? SPR_ORIGINAL_SIGNALS_BASE : SPR_SIGNALS_BASE - 16;
|
||||
sprite += type * 16 + variant * 64 + image * 2 + condition + (IsSignalSpritePBS(type) ? 64 : 0);
|
||||
|
||||
SpriteFile *file = GetOriginFile(sprite);
|
||||
@@ -3320,7 +3320,7 @@ void DrawSingleSignal(TileIndex tile, const RailTypeInfo *rti, Track track, Sign
|
||||
sprite = SPR_DUP_EXTRASIGNAL_BASE + 8 + image;
|
||||
}
|
||||
} else {
|
||||
sprite = (type == SIGTYPE_NORMAL && variant == SIG_ELECTRIC) ? SPR_DUP_ORIGINAL_SIGNALS_BASE : SPR_DUP_SIGNALS_BASE - 16;
|
||||
sprite = (type == SIGTYPE_BLOCK && variant == SIG_ELECTRIC) ? SPR_DUP_ORIGINAL_SIGNALS_BASE : SPR_DUP_SIGNALS_BASE - 16;
|
||||
sprite += type * 16 + variant * 64 + image * 2 + condition + (IsSignalSpritePBS(type) ? 64 : 0);
|
||||
}
|
||||
pal = PAL_NONE;
|
||||
|
@@ -2008,7 +2008,7 @@ public:
|
||||
this->sig_sprite_bottom_offset = 0;
|
||||
|
||||
auto process_signals = [&](const PalSpriteID signals[SIGTYPE_END][2][2]) {
|
||||
for (uint type = SIGTYPE_NORMAL; type < SIGTYPE_END; type++) {
|
||||
for (uint type = SIGTYPE_BLOCK; type < SIGTYPE_END; type++) {
|
||||
for (uint variant = SIG_ELECTRIC; variant <= SIG_SEMAPHORE; variant++) {
|
||||
for (uint lowered = 0; lowered < 2; lowered++) {
|
||||
Point offset;
|
||||
@@ -2077,7 +2077,7 @@ public:
|
||||
static SignalType TypeForClick(uint id)
|
||||
{
|
||||
switch (id) {
|
||||
case 0: return SIGTYPE_NORMAL;
|
||||
case 0: return SIGTYPE_BLOCK;
|
||||
case 1: return SIGTYPE_ENTRY;
|
||||
case 2: return SIGTYPE_EXIT;
|
||||
case 3: return SIGTYPE_COMBO;
|
||||
@@ -2087,14 +2087,14 @@ public:
|
||||
case 7: return SIGTYPE_NO_ENTRY;
|
||||
default:
|
||||
assert(!"Bad signal type button ID");
|
||||
return SIGTYPE_NORMAL;
|
||||
return SIGTYPE_BLOCK;
|
||||
}
|
||||
}
|
||||
|
||||
static uint ClickForType(SignalType type)
|
||||
{
|
||||
switch (type) {
|
||||
case SIGTYPE_NORMAL: return 0;
|
||||
case SIGTYPE_BLOCK: return 0;
|
||||
case SIGTYPE_ENTRY: return 1;
|
||||
case SIGTYPE_EXIT: return 2;
|
||||
case SIGTYPE_COMBO: return 3;
|
||||
@@ -2134,7 +2134,7 @@ public:
|
||||
_cur_signal_variant = widget >= WID_BS_ELECTRIC_NORM ? SIG_ELECTRIC : SIG_SEMAPHORE;
|
||||
|
||||
/* Update default (last-used) signal type in config file. */
|
||||
_settings_client.gui.default_signal_type = Clamp<SignalType>(_cur_signal_type, SIGTYPE_NORMAL, SIGTYPE_PBS_ONEWAY);
|
||||
_settings_client.gui.default_signal_type = Clamp<SignalType>(_cur_signal_type, SIGTYPE_BLOCK, SIGTYPE_PBS_ONEWAY);
|
||||
|
||||
/* If 'remove' button of rail build toolbar is active, disable it. */
|
||||
ClearRemoveState();
|
||||
@@ -2941,7 +2941,7 @@ void ShowBuildRailToolbarWithPickTile(RailType railtype, TileIndex tile)
|
||||
}
|
||||
if (IsRailTunnelBridgeTile(tile) && IsTunnelBridgeWithSignalSimulation(tile) && HasTrack(GetTunnelBridgeTrackBits(tile), track)) {
|
||||
OpenBuildSignalWindow(w, IsTunnelBridgeSemaphore(tile) ? SIG_SEMAPHORE : SIG_ELECTRIC,
|
||||
IsTunnelBridgePBS(tile) ? SIGTYPE_PBS_ONEWAY : SIGTYPE_NORMAL, GetTunnelBridgeSignalStyle(tile));
|
||||
IsTunnelBridgePBS(tile) ? SIGTYPE_PBS_ONEWAY : SIGTYPE_BLOCK, GetTunnelBridgeSignalStyle(tile));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -3507,8 +3507,8 @@ bool AfterLoadGame()
|
||||
if (SlXvIsFeaturePresent(XSLFI_JOKERPP)) {
|
||||
for (TileIndex t = 0; t < map_size; t++) {
|
||||
if (IsTileType(t, MP_RAILWAY) && HasSignals(t)) {
|
||||
if (GetSignalType(t, TRACK_LOWER) == SIGTYPE_PROG) SetSignalType(t, TRACK_LOWER, SIGTYPE_NORMAL);
|
||||
if (GetSignalType(t, TRACK_UPPER) == SIGTYPE_PROG) SetSignalType(t, TRACK_UPPER, SIGTYPE_NORMAL);
|
||||
if (GetSignalType(t, TRACK_LOWER) == SIGTYPE_PROG) SetSignalType(t, TRACK_LOWER, SIGTYPE_BLOCK);
|
||||
if (GetSignalType(t, TRACK_UPPER) == SIGTYPE_PROG) SetSignalType(t, TRACK_UPPER, SIGTYPE_BLOCK);
|
||||
}
|
||||
}
|
||||
for (Vehicle *v : Vehicle::Iterate()) {
|
||||
@@ -3534,8 +3534,8 @@ bool AfterLoadGame()
|
||||
if (SlXvIsFeaturePresent(XSLFI_CHILLPP, SL_CHILLPP_232)) {
|
||||
for (TileIndex t = 0; t < map_size; t++) {
|
||||
if (IsTileType(t, MP_RAILWAY) && HasSignals(t)) {
|
||||
if (GetSignalType(t, TRACK_LOWER) == 7) SetSignalType(t, TRACK_LOWER, SIGTYPE_NORMAL);
|
||||
if (GetSignalType(t, TRACK_UPPER) == 7) SetSignalType(t, TRACK_UPPER, SIGTYPE_NORMAL);
|
||||
if (GetSignalType(t, TRACK_LOWER) == 7) SetSignalType(t, TRACK_LOWER, SIGTYPE_BLOCK);
|
||||
if (GetSignalType(t, TRACK_UPPER) == 7) SetSignalType(t, TRACK_UPPER, SIGTYPE_BLOCK);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -65,7 +65,7 @@ public:
|
||||
*/
|
||||
enum SignalType {
|
||||
/* Note: these values represent part of the in-game SignalType enum */
|
||||
SIGNALTYPE_NORMAL = ::SIGTYPE_NORMAL, ///< Normal signal.
|
||||
SIGNALTYPE_NORMAL = ::SIGTYPE_BLOCK, ///< Block signal.
|
||||
SIGNALTYPE_ENTRY = ::SIGTYPE_ENTRY, ///< Entry presignal.
|
||||
SIGNALTYPE_EXIT = ::SIGTYPE_EXIT, ///< Exit signal.
|
||||
SIGNALTYPE_COMBO = ::SIGTYPE_COMBO, ///< Combo signal.
|
||||
|
@@ -1222,7 +1222,7 @@ struct ScriptDebugWindow : public Window {
|
||||
/** Make a number of rows with buttons for each company for the Script debug window. */
|
||||
std::unique_ptr<NWidgetBase> MakeCompanyButtonRowsScriptDebug()
|
||||
{
|
||||
return MakeCompanyButtonRows(WID_SCRD_COMPANY_BUTTON_START, WID_SCRD_COMPANY_BUTTON_END, COLOUR_GREY, 8, STR_AI_DEBUG_SELECT_AI_TOOLTIP);
|
||||
return MakeCompanyButtonRows(WID_SCRD_COMPANY_BUTTON_START, WID_SCRD_COMPANY_BUTTON_END, COLOUR_GREY, 5, STR_AI_DEBUG_SELECT_AI_TOOLTIP, false);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1274,14 +1274,16 @@ static const NWidgetPart _nested_script_debug_widgets[] = {
|
||||
NWidget(WWT_DEFSIZEBOX, COLOUR_GREY),
|
||||
NWidget(WWT_STICKYBOX, COLOUR_GREY),
|
||||
EndContainer(),
|
||||
NWidget(WWT_PANEL, COLOUR_GREY, WID_SCRD_VIEW),
|
||||
NWidgetFunction(MakeCompanyButtonRowsScriptDebug), SetPadding(0, 2, 1, 2),
|
||||
EndContainer(),
|
||||
NWidget(NWID_HORIZONTAL),
|
||||
NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_SCRD_SCRIPT_GAME), SetMinimalSize(100, 20), SetResize(1, 0), SetDataTip(STR_AI_GAME_SCRIPT, STR_AI_GAME_SCRIPT_TOOLTIP),
|
||||
NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_SCRD_NAME_TEXT), SetFill(1, 0), SetResize(1, 0), SetDataTip(STR_JUST_STRING2, STR_AI_DEBUG_NAME_TOOLTIP),
|
||||
NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_SCRD_SETTINGS), SetMinimalSize(100, 20), SetDataTip(STR_AI_DEBUG_SETTINGS, STR_AI_DEBUG_SETTINGS_TOOLTIP),
|
||||
NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_SCRD_RELOAD_TOGGLE), SetMinimalSize(100, 20), SetDataTip(STR_AI_DEBUG_RELOAD, STR_AI_DEBUG_RELOAD_TOOLTIP),
|
||||
NWidget(WWT_PANEL, COLOUR_GREY, WID_SCRD_VIEW),
|
||||
NWidgetFunction(MakeCompanyButtonRowsScriptDebug), SetPadding(0, 2, 1, 2),
|
||||
EndContainer(),
|
||||
NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_SCRD_SCRIPT_GAME), SetMinimalSize(100, 20), SetDataTip(STR_AI_GAME_SCRIPT, STR_AI_GAME_SCRIPT_TOOLTIP),
|
||||
NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_SCRD_NAME_TEXT), SetResize(1, 0), SetDataTip(STR_JUST_STRING2, STR_AI_DEBUG_NAME_TOOLTIP),
|
||||
NWidget(NWID_VERTICAL),
|
||||
NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_SCRD_SETTINGS), SetMinimalSize(100, 20), SetFill(0, 1), SetDataTip(STR_AI_DEBUG_SETTINGS, STR_AI_DEBUG_SETTINGS_TOOLTIP),
|
||||
NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_SCRD_RELOAD_TOGGLE), SetMinimalSize(100, 20), SetFill(0, 1), SetDataTip(STR_AI_DEBUG_RELOAD, STR_AI_DEBUG_RELOAD_TOOLTIP),
|
||||
EndContainer(),
|
||||
EndContainer(),
|
||||
NWidget(NWID_HORIZONTAL),
|
||||
NWidget(NWID_VERTICAL),
|
||||
|
@@ -1193,7 +1193,7 @@ static void TrainBrakingModelChanged(int32_t new_value)
|
||||
TrackBits bits = GetTrackBits(t);
|
||||
do {
|
||||
Track track = RemoveFirstTrack(&bits);
|
||||
if (HasSignalOnTrack(t, track) && GetSignalType(t, track) == SIGTYPE_NORMAL && HasBit(GetRailReservationTrackBits(t), track)) {
|
||||
if (HasSignalOnTrack(t, track) && GetSignalType(t, track) == SIGTYPE_BLOCK && HasBit(GetRailReservationTrackBits(t), track)) {
|
||||
if (EnsureNoTrainOnTrackBits(t, TrackToTrackBits(track)).Succeeded()) {
|
||||
UnreserveTrack(t, track);
|
||||
}
|
||||
|
@@ -1868,7 +1868,7 @@ static bool DetermineExtraAspectsVariable()
|
||||
if (HasBit(_new_signal_styles[i].style_flags, NSSF_REALISTIC_BRAKING_ONLY) && _settings_game.vehicle.train_braking_model != TBM_REALISTIC) {
|
||||
mask = 0;
|
||||
} else if (_settings_game.vehicle.train_braking_model == TBM_REALISTIC) {
|
||||
mask &= (1 << SIGTYPE_NORMAL) | (1 << SIGTYPE_PBS) | (1 << SIGTYPE_PBS_ONEWAY) | (1 << SIGTYPE_NO_ENTRY);
|
||||
mask &= (1 << SIGTYPE_BLOCK) | (1 << SIGTYPE_PBS) | (1 << SIGTYPE_PBS_ONEWAY) | (1 << SIGTYPE_NO_ENTRY);
|
||||
}
|
||||
if ((_new_signal_styles[i].electric_mask | _new_signal_styles[i].semaphore_mask) & mask) SetBit(_enabled_new_signal_styles_mask, i + 1);
|
||||
}
|
||||
|
@@ -135,17 +135,17 @@ inline SignalType NextSignalType(SignalType cur, uint which_signals)
|
||||
bool block = (which_signals == SIGNAL_CYCLE_ALL);
|
||||
|
||||
switch(cur) {
|
||||
case SIGTYPE_NORMAL: return block ? SIGTYPE_ENTRY : SIGTYPE_PBS;
|
||||
case SIGTYPE_BLOCK: return block ? SIGTYPE_ENTRY : SIGTYPE_PBS;
|
||||
case SIGTYPE_ENTRY: return block ? SIGTYPE_EXIT : SIGTYPE_PBS;
|
||||
case SIGTYPE_EXIT: return block ? SIGTYPE_COMBO : SIGTYPE_PBS;
|
||||
case SIGTYPE_COMBO: return pbs ? SIGTYPE_PBS : SIGTYPE_NORMAL;
|
||||
case SIGTYPE_PROG: return pbs ? SIGTYPE_PBS : SIGTYPE_NORMAL;
|
||||
case SIGTYPE_PBS: return pbs ? SIGTYPE_PBS_ONEWAY : SIGTYPE_NORMAL;
|
||||
case SIGTYPE_PBS_ONEWAY: return block ? SIGTYPE_NORMAL : SIGTYPE_PBS;
|
||||
case SIGTYPE_NO_ENTRY: return pbs ? SIGTYPE_PBS : SIGTYPE_NORMAL;
|
||||
case SIGTYPE_COMBO: return pbs ? SIGTYPE_PBS : SIGTYPE_BLOCK;
|
||||
case SIGTYPE_PROG: return pbs ? SIGTYPE_PBS : SIGTYPE_BLOCK;
|
||||
case SIGTYPE_PBS: return pbs ? SIGTYPE_PBS_ONEWAY : SIGTYPE_BLOCK;
|
||||
case SIGTYPE_PBS_ONEWAY: return block ? SIGTYPE_BLOCK : SIGTYPE_PBS;
|
||||
case SIGTYPE_NO_ENTRY: return pbs ? SIGTYPE_PBS : SIGTYPE_BLOCK;
|
||||
default:
|
||||
DEBUG(map, 0, "Attempt to cycle from signal type %d", cur);
|
||||
return SIGTYPE_NORMAL; // Fortunately mostly harmless
|
||||
return SIGTYPE_BLOCK; // Fortunately mostly harmless
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -23,8 +23,8 @@ enum SignalVariant {
|
||||
|
||||
|
||||
/** Type of signal, i.e. how does the signal behave? */
|
||||
enum SignalType : uint8_t {
|
||||
SIGTYPE_NORMAL = 0, ///< normal signal
|
||||
enum SignalType : byte {
|
||||
SIGTYPE_BLOCK = 0, ///< block signal
|
||||
SIGTYPE_ENTRY = 1, ///< presignal block entry
|
||||
SIGTYPE_EXIT = 2, ///< presignal block exit
|
||||
SIGTYPE_COMBO = 3, ///< presignal inter-block
|
||||
@@ -38,7 +38,7 @@ enum SignalType : uint8_t {
|
||||
SIGTYPE_FIRST_PBS_SPRITE = SIGTYPE_PBS,
|
||||
};
|
||||
/** Helper information for extract tool. */
|
||||
template <> struct EnumPropsT<SignalType> : MakeEnumPropsT<SignalType, byte, SIGTYPE_NORMAL, SIGTYPE_END, SIGTYPE_END, 3> {};
|
||||
template <> struct EnumPropsT<SignalType> : MakeEnumPropsT<SignalType, byte, SIGTYPE_BLOCK, SIGTYPE_END, SIGTYPE_END, 3> {};
|
||||
|
||||
/** Reference to a signal
|
||||
*
|
||||
|
@@ -44,8 +44,6 @@ static bool _read_ttdpatch_flags; ///< Have we (tried to) read TTDPatch extra
|
||||
static uint16_t _old_extra_chunk_nums; ///< Number of extra TTDPatch chunks
|
||||
static byte _old_vehicle_multiplier; ///< TTDPatch vehicle multiplier
|
||||
|
||||
static uint8_t *_old_map3;
|
||||
|
||||
void FixOldMapArray()
|
||||
{
|
||||
/* TTO/TTD/TTDP savegames could have buoys at tile 0
|
||||
@@ -55,12 +53,6 @@ void FixOldMapArray()
|
||||
|
||||
static void FixTTDMapArray()
|
||||
{
|
||||
/* _old_map3 is moved to _m::m3 and _m::m4 */
|
||||
for (TileIndex t = 0; t < OLD_MAP_SIZE; t++) {
|
||||
_m[t].m3 = _old_map3[t * 2];
|
||||
_m[t].m4 = _old_map3[t * 2 + 1];
|
||||
}
|
||||
|
||||
for (TileIndex t = 0; t < OLD_MAP_SIZE; t++) {
|
||||
switch (GetTileType(t)) {
|
||||
case MP_STATION:
|
||||
@@ -495,6 +487,20 @@ static uint32_t _old_town_index;
|
||||
static uint16_t _old_string_id;
|
||||
static uint16_t _old_string_id_2;
|
||||
|
||||
static void ClearOldMap3(TileIndex t)
|
||||
{
|
||||
_m[t].m3 = 0;
|
||||
_m[t].m4 = 0;
|
||||
}
|
||||
|
||||
static Town *RemapTown(TileIndex fallback)
|
||||
{
|
||||
/* In some cases depots, industries and stations could refer to a missing town. */
|
||||
Town *t = Town::GetIfValid(RemapTownIndex(_old_town_index));
|
||||
if (t == nullptr) t = CalcClosestTownFromTile(fallback);
|
||||
return t;
|
||||
}
|
||||
|
||||
static void ReadTTDPatchFlags()
|
||||
{
|
||||
if (_read_ttdpatch_flags) return;
|
||||
@@ -510,7 +516,7 @@ static void ReadTTDPatchFlags()
|
||||
if (_savegame_type == SGT_TTO) return;
|
||||
|
||||
/* TTDPatch misuses _old_map3 for flags.. read them! */
|
||||
_old_vehicle_multiplier = _old_map3[0];
|
||||
_old_vehicle_multiplier = _m[0].m3;
|
||||
/* Somehow.... there was an error in some savegames, so 0 becomes 1
|
||||
* and 1 becomes 2. The rest of the values are okay */
|
||||
if (_old_vehicle_multiplier < 2) _old_vehicle_multiplier++;
|
||||
@@ -524,18 +530,25 @@ static void ReadTTDPatchFlags()
|
||||
* 1 vehicle == 128 bytes */
|
||||
_bump_assert_value = (_old_vehicle_multiplier - 1) * 850 * 128;
|
||||
|
||||
for (uint i = 0; i < 17; i++) { // check tile 0, too
|
||||
if (_old_map3[i] != 0) _savegame_type = SGT_TTDP1;
|
||||
/* The first 17 bytes are used by TTDP1, which translates to the first 9 m3s and first 8 m4s. */
|
||||
for (TileIndex i = 0; i <= 8; i++) { // check tile 0, too
|
||||
if (_m[i].m3 != 0 || (i != 8 && _m[i].m4 != 0)) _savegame_type = SGT_TTDP1;
|
||||
}
|
||||
|
||||
/* Check if we have a modern TTDPatch savegame (has extra data all around) */
|
||||
if (memcmp(&_old_map3[0x1FFFA], "TTDp", 4) == 0) _savegame_type = SGT_TTDP2;
|
||||
TileIndex ttdp2_header_first = MapSize() - 3;
|
||||
TileIndex ttdp2_header_second = MapSize() - 2;
|
||||
if (_m[ttdp2_header_first].m3 == 'T' && _m[ttdp2_header_first].m4 == 'T' &&
|
||||
_m[ttdp2_header_second].m3 == 'D' && _m[ttdp2_header_second].m4 == 'p') {
|
||||
_savegame_type = SGT_TTDP2;
|
||||
}
|
||||
|
||||
_old_extra_chunk_nums = _old_map3[_savegame_type == SGT_TTDP2 ? 0x1FFFE : 0x2];
|
||||
TileIndex extra_chunk_tile = _savegame_type == SGT_TTDP2 ? MapSize() - 1 : 1;
|
||||
_old_extra_chunk_nums = _m[extra_chunk_tile].m3 | (_m[extra_chunk_tile].m4 << 8);
|
||||
|
||||
/* Clean the misused places */
|
||||
for (uint i = 0; i < 17; i++) _old_map3[i] = 0;
|
||||
for (uint i = 0x1FE00; i < 0x20000; i++) _old_map3[i] = 0;
|
||||
for (TileIndex i = 0; i < 9; i++) ClearOldMap3(i);
|
||||
for (TileIndex i = TileXY(0, MapMaxY()); i < MapSize(); i++) ClearOldMap3(i);
|
||||
|
||||
if (_savegame_type == SGT_TTDP2) DEBUG(oldloader, 2, "Found TTDPatch game");
|
||||
|
||||
@@ -666,10 +679,7 @@ static bool LoadOldDepot(LoadgameState *ls, int num)
|
||||
if (!LoadChunk(ls, d, depot_chunk)) return false;
|
||||
|
||||
if (d->xy != 0) {
|
||||
/* In some cases, there could be depots referencing invalid town. */
|
||||
Town *t = Town::GetIfValid(RemapTownIndex(_old_town_index));
|
||||
if (t == nullptr) t = Town::GetRandom();
|
||||
d->town = t;
|
||||
d->town = RemapTown(d->xy);
|
||||
} else {
|
||||
delete d;
|
||||
}
|
||||
@@ -759,7 +769,7 @@ static bool LoadOldStation(LoadgameState *ls, int num)
|
||||
if (!LoadChunk(ls, st, station_chunk)) return false;
|
||||
|
||||
if (st->xy != 0) {
|
||||
st->town = Town::Get(RemapTownIndex(_old_town_index));
|
||||
st->town = RemapTown(st->xy);
|
||||
|
||||
if (_savegame_type == SGT_TTO) {
|
||||
if (IsInsideBS(_old_string_id, 0x180F, 32)) {
|
||||
@@ -836,7 +846,7 @@ static bool LoadOldIndustry(LoadgameState *ls, int num)
|
||||
if (!LoadChunk(ls, i, industry_chunk)) return false;
|
||||
|
||||
if (i->location.tile != 0) {
|
||||
i->town = Town::Get(RemapTownIndex(_old_town_index));
|
||||
i->town = RemapTown(i->location.tile);
|
||||
|
||||
if (_savegame_type == SGT_TTO) {
|
||||
if (i->type > 0x06) i->type++; // Printing Works were added
|
||||
@@ -1487,9 +1497,10 @@ static bool LoadOldMapPart1(LoadgameState *ls, int)
|
||||
}
|
||||
|
||||
if (_savegame_type != SGT_TTO) {
|
||||
/* old map3 is split into to m3 and m4 */
|
||||
for (uint i = 0; i < OLD_MAP_SIZE; i++) {
|
||||
_old_map3[i * 2] = ReadByte(ls);
|
||||
_old_map3[i * 2 + 1] = ReadByte(ls);
|
||||
_m[i].m3 = ReadByte(ls);
|
||||
_m[i].m4 = ReadByte(ls);
|
||||
}
|
||||
for (uint i = 0; i < OLD_MAP_SIZE / 4; i++) {
|
||||
byte b = ReadByte(ls);
|
||||
@@ -1756,8 +1767,6 @@ bool LoadTTDMain(LoadgameState *ls)
|
||||
_read_ttdpatch_flags = false;
|
||||
|
||||
/* Load the biggest chunk */
|
||||
std::array<byte, OLD_MAP_SIZE * 2> map3;
|
||||
_old_map3 = map3.data();
|
||||
_old_vehicle_names = nullptr;
|
||||
try {
|
||||
if (!LoadChunk(ls, nullptr, main_chunk)) {
|
||||
|
@@ -22,6 +22,7 @@
|
||||
#include "../string_func.h"
|
||||
#include "../error.h"
|
||||
#include "../strings_func.h"
|
||||
#include "../economy_base.h"
|
||||
#include "../3rdparty/cpp-btree/btree_map.h"
|
||||
#include "../core/format.hpp"
|
||||
|
||||
@@ -205,6 +206,19 @@ void UpdateOldAircraft()
|
||||
SetAircraftPosition(a, gp.x, gp.y, GetAircraftFlightLevel(a));
|
||||
}
|
||||
}
|
||||
|
||||
/* Clear aircraft from loading vehicles, if we bumped them into the air. */
|
||||
for (Station *st : Station::Iterate()) {
|
||||
for (auto iter = st->loading_vehicles.begin(); iter != st->loading_vehicles.end(); /* nothing */) {
|
||||
Vehicle *v = *iter;
|
||||
if (v->type == VEH_AIRCRAFT && !v->current_order.IsType(OT_LOADING)) {
|
||||
iter = st->loading_vehicles.erase(iter);
|
||||
delete v->cargo_payment;
|
||||
} else {
|
||||
++iter;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
@@ -1155,7 +1155,7 @@ cat = SC_BASIC
|
||||
var = gui.stop_location
|
||||
type = SLE_UINT8
|
||||
flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN
|
||||
def = 2
|
||||
def = 1
|
||||
min = 0
|
||||
max = 2
|
||||
interval = 1
|
||||
|
@@ -3750,7 +3750,7 @@ void FreeTrainTrackReservation(Train *v, TileIndex origin, Trackdir orig_td)
|
||||
break;
|
||||
} else {
|
||||
/* Turn the signal back to red. */
|
||||
if (GetSignalType(tile, TrackdirToTrack(td)) == SIGTYPE_NORMAL) {
|
||||
if (GetSignalType(tile, TrackdirToTrack(td)) == SIGTYPE_BLOCK) {
|
||||
update_signal = true;
|
||||
} else {
|
||||
SetSignalStateByTrackdir(tile, td, SIGNAL_STATE_RED);
|
||||
|
@@ -1777,7 +1777,7 @@ static void DrawTunnelBridgeRampSingleSignal(const TileInfo *ti, bool is_green,
|
||||
if (is_custom_sprite) {
|
||||
sprite.sprite += position;
|
||||
} else {
|
||||
if (variant == SIG_ELECTRIC && type == SIGTYPE_NORMAL) {
|
||||
if (variant == SIG_ELECTRIC && type == SIGTYPE_BLOCK) {
|
||||
/* Normal electric signals are picked from original sprites. */
|
||||
sprite = { SPR_ORIGINAL_SIGNALS_BASE + ((position << 1) + is_green), PAL_NONE };
|
||||
if (_settings_client.gui.show_all_signal_default == SSDM_ON) sprite.sprite += SPR_DUP_ORIGINAL_SIGNALS_BASE - SPR_ORIGINAL_SIGNALS_BASE;
|
||||
@@ -1793,7 +1793,7 @@ static void DrawTunnelBridgeRampSingleSignal(const TileInfo *ti, bool is_green,
|
||||
if (is_custom_sprite && show_restricted && style == 0 && _settings_client.gui.show_restricted_signal_recolour &&
|
||||
_settings_client.gui.show_all_signal_default == SSDM_RESTRICTED_RECOLOUR && !result.restricted_valid && variant == SIG_ELECTRIC) {
|
||||
/* Use duplicate sprite block, instead of GRF-specified signals */
|
||||
sprite = { (type == SIGTYPE_NORMAL && variant == SIG_ELECTRIC) ? SPR_DUP_ORIGINAL_SIGNALS_BASE : SPR_DUP_SIGNALS_BASE - 16, PAL_NONE };
|
||||
sprite = { (type == SIGTYPE_BLOCK && variant == SIG_ELECTRIC) ? SPR_DUP_ORIGINAL_SIGNALS_BASE : SPR_DUP_SIGNALS_BASE - 16, PAL_NONE };
|
||||
sprite.sprite += type * 16 + variant * 64 + position * 2 + is_green + (IsSignalSpritePBS(type) ? 64 : 0);
|
||||
is_custom_sprite = false;
|
||||
}
|
||||
@@ -1821,14 +1821,14 @@ static void DrawTunnelBridgeRampSignal(const TileInfo *ti)
|
||||
}
|
||||
|
||||
if (IsTunnelBridgeSignalSimulationExit(ti->tile)) {
|
||||
SignalType type = SIGTYPE_NORMAL;
|
||||
SignalType type = SIGTYPE_BLOCK;
|
||||
if (IsTunnelBridgePBS(ti->tile)) {
|
||||
type = IsTunnelBridgeSignalSimulationEntrance(ti->tile) ? SIGTYPE_PBS : SIGTYPE_PBS_ONEWAY;
|
||||
}
|
||||
DrawTunnelBridgeRampSingleSignal(ti, (GetTunnelBridgeExitSignalState(ti->tile) == SIGNAL_STATE_GREEN), position ^ 1, type, true);
|
||||
}
|
||||
if (IsTunnelBridgeSignalSimulationEntrance(ti->tile)) {
|
||||
DrawTunnelBridgeRampSingleSignal(ti, (GetTunnelBridgeEntranceSignalState(ti->tile) == SIGNAL_STATE_GREEN), position, SIGTYPE_NORMAL, false);
|
||||
DrawTunnelBridgeRampSingleSignal(ti, (GetTunnelBridgeEntranceSignalState(ti->tile) == SIGNAL_STATE_GREEN), position, SIGTYPE_BLOCK, false);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1896,7 +1896,7 @@ static void DrawBridgeSignalOnMiddlePart(const TileInfo *ti, TileIndex bridge_st
|
||||
}
|
||||
|
||||
const RailTypeInfo *rti = GetRailTypeInfo(GetRailType(bridge_start_tile));
|
||||
PalSpriteID sprite = GetCustomSignalSprite(rti, bridge_start_tile, SIGTYPE_NORMAL, variant, aspect, CSSC_BRIDGE_MIDDLE, style).sprite;
|
||||
PalSpriteID sprite = GetCustomSignalSprite(rti, bridge_start_tile, SIGTYPE_BLOCK, variant, aspect, CSSC_BRIDGE_MIDDLE, style).sprite;
|
||||
|
||||
if (sprite.sprite != 0) {
|
||||
sprite.sprite += position;
|
||||
@@ -2222,10 +2222,10 @@ static void DrawTile_TunnelBridge(TileInfo *ti, DrawTileProcParams params)
|
||||
}
|
||||
const TraceRestrictProgram *prog = IsTunnelBridgeRestrictedSignal(ti->tile) ? GetExistingTraceRestrictProgram(ti->tile, t) : nullptr;
|
||||
if (IsTunnelBridgeSignalSimulationEntrance(ti->tile)) {
|
||||
DrawSingleSignal(ti->tile, rti, t, GetTunnelBridgeEntranceSignalState(ti->tile), image, position, SIGTYPE_NORMAL, variant, prog, CSSC_TUNNEL_BRIDGE_ENTRANCE);
|
||||
DrawSingleSignal(ti->tile, rti, t, GetTunnelBridgeEntranceSignalState(ti->tile), image, position, SIGTYPE_BLOCK, variant, prog, CSSC_TUNNEL_BRIDGE_ENTRANCE);
|
||||
}
|
||||
if (IsTunnelBridgeSignalSimulationExit(ti->tile)) {
|
||||
SignalType type = SIGTYPE_NORMAL;
|
||||
SignalType type = SIGTYPE_BLOCK;
|
||||
if (IsTunnelBridgePBS(ti->tile)) {
|
||||
type = IsTunnelBridgeSignalSimulationEntrance(ti->tile) ? SIGTYPE_PBS : SIGTYPE_PBS_ONEWAY;
|
||||
}
|
||||
|
@@ -839,11 +839,6 @@ static const char *InitializeSDL()
|
||||
FcitxInit();
|
||||
#endif
|
||||
|
||||
/* Explicitly disable hardware acceleration. Enabling this causes
|
||||
* UpdateWindowSurface() to update the window's texture instead of
|
||||
* its surface. */
|
||||
SDL_SetHint(SDL_HINT_FRAMEBUFFER_ACCELERATION, "0");
|
||||
|
||||
/* Check if the video-driver is already initialized. */
|
||||
if (SDL_WasInit(SDL_INIT_VIDEO) != 0) return nullptr;
|
||||
|
||||
|
@@ -3411,9 +3411,10 @@ std::unique_ptr<NWidgetBase> MakeWindowNWidgetTree(const NWidgetPart *nwid_begin
|
||||
* @param colour The colour in which to draw the button.
|
||||
* @param max_length Maximal number of company buttons in one row.
|
||||
* @param button_tooltip The tooltip-string of every button.
|
||||
* @param resizable Whether the rows are resizable.
|
||||
* @return Panel with rows of company buttons.
|
||||
*/
|
||||
std::unique_ptr<NWidgetBase> MakeCompanyButtonRows(WidgetID widget_first, WidgetID widget_last, Colours button_colour, int max_length, StringID button_tooltip)
|
||||
std::unique_ptr<NWidgetBase> MakeCompanyButtonRows(WidgetID widget_first, WidgetID widget_last, Colours button_colour, int max_length, StringID button_tooltip, bool resizable)
|
||||
{
|
||||
assert(max_length >= 1);
|
||||
std::unique_ptr<NWidgetVertical> vert = nullptr; // Storage for all rows.
|
||||
@@ -3440,7 +3441,7 @@ std::unique_ptr<NWidgetBase> MakeCompanyButtonRows(WidgetID widget_first, Widget
|
||||
auto panel = std::make_unique<NWidgetBackground>(WWT_PANEL, button_colour, widnum);
|
||||
panel->SetMinimalSize(sprite_size.width, sprite_size.height);
|
||||
panel->SetFill(1, 1);
|
||||
panel->SetResize(1, 0);
|
||||
if (resizable) panel->SetResize(1, 0);
|
||||
panel->SetDataTip(0x0, button_tooltip);
|
||||
hor->Add(std::move(panel));
|
||||
hor_length++;
|
||||
@@ -3451,7 +3452,7 @@ std::unique_ptr<NWidgetBase> MakeCompanyButtonRows(WidgetID widget_first, Widget
|
||||
/* Last row is partial, add a spacer at the end to force all buttons to the left. */
|
||||
auto spc = std::make_unique<NWidgetSpacer>(sprite_size.width, sprite_size.height);
|
||||
spc->SetFill(1, 1);
|
||||
spc->SetResize(1, 0);
|
||||
if (resizable) spc->SetResize(1, 0);
|
||||
hor->Add(std::move(spc));
|
||||
}
|
||||
if (hor != nullptr) vert->Add(std::move(hor));
|
||||
|
@@ -1404,7 +1404,7 @@ bool IsContainerWidgetType(WidgetType tp);
|
||||
std::unique_ptr<NWidgetBase> MakeNWidgets(const NWidgetPart *nwid_begin, const NWidgetPart *nwid_end, std::unique_ptr<NWidgetBase> container);
|
||||
std::unique_ptr<NWidgetBase> MakeWindowNWidgetTree(const NWidgetPart *nwid_begin, const NWidgetPart *nwid_end, NWidgetStacked **shade_select);
|
||||
|
||||
std::unique_ptr<NWidgetBase> MakeCompanyButtonRows(WidgetID widget_first, WidgetID widget_last, Colours button_colour, int max_length, StringID button_tooltip);
|
||||
std::unique_ptr<NWidgetBase> MakeCompanyButtonRows(WidgetID widget_first, WidgetID widget_last, Colours button_colour, int max_length, StringID button_tooltip, bool resizable = true);
|
||||
|
||||
void SetupWidgetDimensions();
|
||||
|
||||
|
Reference in New Issue
Block a user