diff --git a/.github/workflows/release-linux-legacy.yml b/.github/workflows/release-linux-legacy.yml new file mode 100644 index 0000000000..021a9d0511 --- /dev/null +++ b/.github/workflows/release-linux-legacy.yml @@ -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 diff --git a/.github/workflows/release-linux.yml b/.github/workflows/release-linux.yml index 201452daca..becb0af9fb 100644 --- a/.github/workflows/release-linux.yml +++ b/.github/workflows/release-linux.yml @@ -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 diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 4443d66e77..2bdd479e55 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -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 diff --git a/src/lang/afrikaans.txt b/src/lang/afrikaans.txt index 5ba8541085..4ce522557d 100644 --- a/src/lang/afrikaans.txt +++ b/src/lang/afrikaans.txt @@ -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 diff --git a/src/lang/arabic_egypt.txt b/src/lang/arabic_egypt.txt index bb95b67a74..cad329a0bc 100644 --- a/src/lang/arabic_egypt.txt +++ b/src/lang/arabic_egypt.txt @@ -958,6 +958,7 @@ STR_GAME_OPTIONS_GUI_SCALE_AUTO_TOOLTIP :{BLACK}اختر + STR_GAME_OPTIONS_GRAPHICS :{BLACK}الرسومات STR_GAME_OPTIONS_REFRESH_RATE :{BLACK}معدل تحديث الشاشة diff --git a/src/lang/basque.txt b/src/lang/basque.txt index 347e42061e..21a98abb8c 100644 --- a/src/lang/basque.txt +++ b/src/lang/basque.txt @@ -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 diff --git a/src/lang/belarusian.txt b/src/lang/belarusian.txt index 00615a8032..4ba5ddd541 100644 --- a/src/lang/belarusian.txt +++ b/src/lang/belarusian.txt @@ -1265,6 +1265,7 @@ STR_GAME_OPTIONS_RESOLUTION_OTHER :Iншае + STR_GAME_OPTIONS_REFRESH_RATE :{BLACK}Чашчыня абнаўлення экрана STR_GAME_OPTIONS_BASE_GRF :{BLACK}Набор базавай ґрафікі diff --git a/src/lang/brazilian_portuguese.txt b/src/lang/brazilian_portuguese.txt index ece32ddb64..942f469e3f 100644 --- a/src/lang/brazilian_portuguese.txt +++ b/src/lang/brazilian_portuguese.txt @@ -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} diff --git a/src/lang/bulgarian.txt b/src/lang/bulgarian.txt index ffde8fc17e..b1c035a59e 100644 --- a/src/lang/bulgarian.txt +++ b/src/lang/bulgarian.txt @@ -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}Допълнителна информация за базовия графичен пакет diff --git a/src/lang/catalan.txt b/src/lang/catalan.txt index 135dcf7474..49b3b075de 100644 --- a/src/lang/catalan.txt +++ b/src/lang/catalan.txt @@ -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 diff --git a/src/lang/chuvash.txt b/src/lang/chuvash.txt index d0b0a36daa..fd680f834f 100644 --- a/src/lang/chuvash.txt +++ b/src/lang/chuvash.txt @@ -504,6 +504,7 @@ STR_GAME_OPTIONS_RESOLUTION_OTHER :расна + # Custom currency window diff --git a/src/lang/croatian.txt b/src/lang/croatian.txt index fb44607043..8c38f759cb 100644 --- a/src/lang/croatian.txt +++ b/src/lang/croatian.txt @@ -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 diff --git a/src/lang/czech.txt b/src/lang/czech.txt index 0e808b0c88..bc429c53cb 100644 --- a/src/lang/czech.txt +++ b/src/lang/czech.txt @@ -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 diff --git a/src/lang/danish.txt b/src/lang/danish.txt index 3a76f963b6..487cc64845 100644 --- a/src/lang/danish.txt +++ b/src/lang/danish.txt @@ -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 diff --git a/src/lang/dutch.txt b/src/lang/dutch.txt index cbeb1d4baa..2505e8f216 100644 --- a/src/lang/dutch.txt +++ b/src/lang/dutch.txt @@ -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 diff --git a/src/lang/english.txt b/src/lang/english.txt index 17eafcb7cc..4a07f6cf00 100644 --- a/src/lang/english.txt +++ b/src/lang/english.txt @@ -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. diff --git a/src/lang/english_AU.txt b/src/lang/english_AU.txt index 32db2da2c0..356fd40e28 100644 --- a/src/lang/english_AU.txt +++ b/src/lang/english_AU.txt @@ -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 diff --git a/src/lang/english_US.txt b/src/lang/english_US.txt index d95cdb1a76..5a1dc437d5 100644 --- a/src/lang/english_US.txt +++ b/src/lang/english_US.txt @@ -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 diff --git a/src/lang/esperanto.txt b/src/lang/esperanto.txt index b4b0dcb3b7..66750d936d 100644 --- a/src/lang/esperanto.txt +++ b/src/lang/esperanto.txt @@ -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 diff --git a/src/lang/estonian.txt b/src/lang/estonian.txt index 5cc64f621d..d906dbcae5 100644 --- a/src/lang/estonian.txt +++ b/src/lang/estonian.txt @@ -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 diff --git a/src/lang/faroese.txt b/src/lang/faroese.txt index c5ed95da6d..0016999e76 100644 --- a/src/lang/faroese.txt +++ b/src/lang/faroese.txt @@ -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 diff --git a/src/lang/finnish.txt b/src/lang/finnish.txt index a5065187e3..eba16aca40 100644 --- a/src/lang/finnish.txt +++ b/src/lang/finnish.txt @@ -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× diff --git a/src/lang/french.txt b/src/lang/french.txt index 30bca63088..f4f34aaee6 100644 --- a/src/lang/french.txt +++ b/src/lang/french.txt @@ -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 diff --git a/src/lang/frisian.txt b/src/lang/frisian.txt index adddf4f7f1..0a84eb5941 100644 --- a/src/lang/frisian.txt +++ b/src/lang/frisian.txt @@ -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 diff --git a/src/lang/gaelic.txt b/src/lang/gaelic.txt index 02aa8e4fe0..0a577702cc 100644 --- a/src/lang/gaelic.txt +++ b/src/lang/gaelic.txt @@ -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 diff --git a/src/lang/galician.txt b/src/lang/galician.txt index ca48a8a607..2592df8b1e 100644 --- a/src/lang/galician.txt +++ b/src/lang/galician.txt @@ -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 diff --git a/src/lang/german.txt b/src/lang/german.txt index 18e619c091..074bf8548e 100644 --- a/src/lang/german.txt +++ b/src/lang/german.txt @@ -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× diff --git a/src/lang/greek.txt b/src/lang/greek.txt index e95db16036..81a004f608 100644 --- a/src/lang/greek.txt +++ b/src/lang/greek.txt @@ -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 diff --git a/src/lang/hebrew.txt b/src/lang/hebrew.txt index 9407747ae9..7f267a0187 100644 --- a/src/lang/hebrew.txt +++ b/src/lang/hebrew.txt @@ -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 diff --git a/src/lang/hindi.txt b/src/lang/hindi.txt index 9201ecba92..0b51c6808e 100644 --- a/src/lang/hindi.txt +++ b/src/lang/hindi.txt @@ -307,6 +307,7 @@ STR_GAME_OPTIONS_GUI_SCALE_FRAME :{BLACK}इं + # Custom currency window STR_CURRENCY_DECREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}एक पाउंड (£) की तुलना में अपनी मुद्रा का अवमूल्यन करें diff --git a/src/lang/hungarian.txt b/src/lang/hungarian.txt index 4e6cba2269..37298468ce 100644 --- a/src/lang/hungarian.txt +++ b/src/lang/hungarian.txt @@ -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 diff --git a/src/lang/icelandic.txt b/src/lang/icelandic.txt index 17bcc64c4b..9e1ae402de 100644 --- a/src/lang/icelandic.txt +++ b/src/lang/icelandic.txt @@ -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 diff --git a/src/lang/ido.txt b/src/lang/ido.txt index 41d5e90b39..b9c4e11b17 100644 --- a/src/lang/ido.txt +++ b/src/lang/ido.txt @@ -488,6 +488,7 @@ STR_GAME_OPTIONS_RESOLUTION_OTHER :altra + # Custom currency window diff --git a/src/lang/indonesian.txt b/src/lang/indonesian.txt index 30a6cefb92..29b5895848 100644 --- a/src/lang/indonesian.txt +++ b/src/lang/indonesian.txt @@ -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 diff --git a/src/lang/irish.txt b/src/lang/irish.txt index 0ba710af89..e8bfa0aa6d 100644 --- a/src/lang/irish.txt +++ b/src/lang/irish.txt @@ -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 diff --git a/src/lang/italian.txt b/src/lang/italian.txt index 77c21ae50f..2d7c2f9490 100644 --- a/src/lang/italian.txt +++ b/src/lang/italian.txt @@ -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 diff --git a/src/lang/japanese.txt b/src/lang/japanese.txt index 4c4c348597..81c4c79032 100644 --- a/src/lang/japanese.txt +++ b/src/lang/japanese.txt @@ -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 diff --git a/src/lang/korean.txt b/src/lang/korean.txt index 80dca843e0..a7c9e70bf4 100644 --- a/src/lang/korean.txt +++ b/src/lang/korean.txt @@ -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 diff --git a/src/lang/latin.txt b/src/lang/latin.txt index 3f79a9371b..da104fa634 100644 --- a/src/lang/latin.txt +++ b/src/lang/latin.txt @@ -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 diff --git a/src/lang/latvian.txt b/src/lang/latvian.txt index 03f07d1687..9758f86843 100644 --- a/src/lang/latvian.txt +++ b/src/lang/latvian.txt @@ -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 diff --git a/src/lang/lithuanian.txt b/src/lang/lithuanian.txt index 65fd8020a9..d76a034512 100644 --- a/src/lang/lithuanian.txt +++ b/src/lang/lithuanian.txt @@ -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 diff --git a/src/lang/luxembourgish.txt b/src/lang/luxembourgish.txt index 49a280f507..9738d11b17 100644 --- a/src/lang/luxembourgish.txt +++ b/src/lang/luxembourgish.txt @@ -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 diff --git a/src/lang/macedonian.txt b/src/lang/macedonian.txt index 2cb57268a7..49ad8cc50f 100644 --- a/src/lang/macedonian.txt +++ b/src/lang/macedonian.txt @@ -803,6 +803,7 @@ STR_GAME_OPTIONS_CAPTION :{WHITE}Опци + # Custom currency window diff --git a/src/lang/malay.txt b/src/lang/malay.txt index adeb85c7c6..daed0255f3 100644 --- a/src/lang/malay.txt +++ b/src/lang/malay.txt @@ -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 diff --git a/src/lang/maltese.txt b/src/lang/maltese.txt index 4198f8b66b..b9da14b5d5 100644 --- a/src/lang/maltese.txt +++ b/src/lang/maltese.txt @@ -421,6 +421,7 @@ STR_GAME_OPTIONS_RESOLUTION_OTHER :oħrajn + # Custom currency window diff --git a/src/lang/marathi.txt b/src/lang/marathi.txt index 89183477ed..92dedc401e 100644 --- a/src/lang/marathi.txt +++ b/src/lang/marathi.txt @@ -738,6 +738,7 @@ STR_GAME_OPTIONS_RESOLUTION_OTHER :अन्य + # Custom currency window diff --git a/src/lang/norwegian_bokmal.txt b/src/lang/norwegian_bokmal.txt index b83c18439e..a506189a2b 100644 --- a/src/lang/norwegian_bokmal.txt +++ b/src/lang/norwegian_bokmal.txt @@ -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 diff --git a/src/lang/norwegian_nynorsk.txt b/src/lang/norwegian_nynorsk.txt index 62f630362a..d4e66ba17a 100644 --- a/src/lang/norwegian_nynorsk.txt +++ b/src/lang/norwegian_nynorsk.txt @@ -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 diff --git a/src/lang/persian.txt b/src/lang/persian.txt index de7bda6a78..07ee6e47d2 100644 --- a/src/lang/persian.txt +++ b/src/lang/persian.txt @@ -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} اطلاعات اضافه در مورد بسته ی گرافیکی پایه diff --git a/src/lang/polish.txt b/src/lang/polish.txt index e118cc27ba..70e22af9b0 100644 --- a/src/lang/polish.txt +++ b/src/lang/polish.txt @@ -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 diff --git a/src/lang/portuguese.txt b/src/lang/portuguese.txt index fc91c0bbcc..aa1fee66c7 100644 --- a/src/lang/portuguese.txt +++ b/src/lang/portuguese.txt @@ -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 diff --git a/src/lang/romanian.txt b/src/lang/romanian.txt index 8db5230f32..391feed7f3 100644 --- a/src/lang/romanian.txt +++ b/src/lang/romanian.txt @@ -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 diff --git a/src/lang/russian.txt b/src/lang/russian.txt index 51be414a6c..51e92e822e 100644 --- a/src/lang/russian.txt +++ b/src/lang/russian.txt @@ -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 diff --git a/src/lang/serbian.txt b/src/lang/serbian.txt index 4b400335d2..bca61146e4 100644 --- a/src/lang/serbian.txt +++ b/src/lang/serbian.txt @@ -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 diff --git a/src/lang/simplified_chinese.txt b/src/lang/simplified_chinese.txt index 1b98880ebc..af66954ddc 100644 --- a/src/lang/simplified_chinese.txt +++ b/src/lang/simplified_chinese.txt @@ -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倍 diff --git a/src/lang/slovak.txt b/src/lang/slovak.txt index 09274e2b86..e3cb79b90e 100644 --- a/src/lang/slovak.txt +++ b/src/lang/slovak.txt @@ -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 diff --git a/src/lang/slovenian.txt b/src/lang/slovenian.txt index 0011773278..9f43d02c8c 100644 --- a/src/lang/slovenian.txt +++ b/src/lang/slovenian.txt @@ -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 diff --git a/src/lang/spanish.txt b/src/lang/spanish.txt index 272a181f77..1b62c038cb 100644 --- a/src/lang/spanish.txt +++ b/src/lang/spanish.txt @@ -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 diff --git a/src/lang/spanish_MX.txt b/src/lang/spanish_MX.txt index 3f88e8c4f1..969b93aaf5 100644 --- a/src/lang/spanish_MX.txt +++ b/src/lang/spanish_MX.txt @@ -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 diff --git a/src/lang/swedish.txt b/src/lang/swedish.txt index 5cf80d3194..959586d4e2 100644 --- a/src/lang/swedish.txt +++ b/src/lang/swedish.txt @@ -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 diff --git a/src/lang/tamil.txt b/src/lang/tamil.txt index 922ac99c14..b609493937 100644 --- a/src/lang/tamil.txt +++ b/src/lang/tamil.txt @@ -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 diff --git a/src/lang/thai.txt b/src/lang/thai.txt index 3d672b908a..0403d9db30 100644 --- a/src/lang/thai.txt +++ b/src/lang/thai.txt @@ -952,6 +952,7 @@ STR_GAME_OPTIONS_RESOLUTION_OTHER :อื่นๆ + STR_GAME_OPTIONS_REFRESH_RATE :{BLACK}รีเฟรชเรทของหน้าจอ STR_GAME_OPTIONS_REFRESH_RATE_WARNING :{WHITE}หากตั้งรีเฟรชเรทไว้มากกว่า 60Hz ขึ้นไป อาจมีผลต่อประสิทธิภาพของเกมได้ diff --git a/src/lang/traditional_chinese.txt b/src/lang/traditional_chinese.txt index b8924b73bd..2fcf926003 100644 --- a/src/lang/traditional_chinese.txt +++ b/src/lang/traditional_chinese.txt @@ -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倍 diff --git a/src/lang/turkish.txt b/src/lang/turkish.txt index 3251f0ac7d..2fb28e199c 100644 --- a/src/lang/turkish.txt +++ b/src/lang/turkish.txt @@ -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 diff --git a/src/lang/ukrainian.txt b/src/lang/ukrainian.txt index 26dbdd262d..1c601dbf3c 100644 --- a/src/lang/ukrainian.txt +++ b/src/lang/ukrainian.txt @@ -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 diff --git a/src/lang/urdu.txt b/src/lang/urdu.txt index 7c8e0f076d..16a8e9b9c2 100644 --- a/src/lang/urdu.txt +++ b/src/lang/urdu.txt @@ -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}بُنیادی گرافک سیٹ کے بارے میں اضافی معلومات diff --git a/src/lang/vietnamese.txt b/src/lang/vietnamese.txt index c3845c29f2..b7f4eb0dbd 100644 --- a/src/lang/vietnamese.txt +++ b/src/lang/vietnamese.txt @@ -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 diff --git a/src/lang/welsh.txt b/src/lang/welsh.txt index 5a0456f8d8..0178e12cca 100644 --- a/src/lang/welsh.txt +++ b/src/lang/welsh.txt @@ -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 diff --git a/src/league_gui.cpp b/src/league_gui.cpp index 500ccce085..3faadad0c9 100644 --- a/src/league_gui.cpp +++ b/src/league_gui.cpp @@ -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(), }; diff --git a/src/pathfinder/yapf/yapf_costrail.hpp b/src/pathfinder/yapf/yapf_costrail.hpp index f08d32a20f..c92bff0402 100644 --- a/src/pathfinder/yapf/yapf_costrail.hpp +++ b/src/pathfinder/yapf/yapf_costrail.hpp @@ -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; } diff --git a/src/pathfinder/yapf/yapf_node_rail.hpp b/src/pathfinder/yapf/yapf_node_rail.hpp index 9767bf3918..3e31981306 100644 --- a/src/pathfinder/yapf/yapf_node_rail.hpp +++ b/src/pathfinder/yapf/yapf_node_rail.hpp @@ -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 diff --git a/src/rail_cmd.cpp b/src/rail_cmd.cpp index 6d9725a827..9cc292d803 100644 --- a/src/rail_cmd.cpp +++ b/src/rail_cmd.cpp @@ -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; diff --git a/src/rail_gui.cpp b/src/rail_gui.cpp index ea795a2dde..675035b6e2 100644 --- a/src/rail_gui.cpp +++ b/src/rail_gui.cpp @@ -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(_cur_signal_type, SIGTYPE_NORMAL, SIGTYPE_PBS_ONEWAY); + _settings_client.gui.default_signal_type = Clamp(_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)); } } } diff --git a/src/saveload/afterload.cpp b/src/saveload/afterload.cpp index f5551451d5..f8991e5d97 100644 --- a/src/saveload/afterload.cpp +++ b/src/saveload/afterload.cpp @@ -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); } } } diff --git a/src/script/api/script_rail.hpp b/src/script/api/script_rail.hpp index a64ed9566d..bb10a34728 100644 --- a/src/script/api/script_rail.hpp +++ b/src/script/api/script_rail.hpp @@ -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. diff --git a/src/script/script_gui.cpp b/src/script/script_gui.cpp index 38e7b4884b..b2ad3ef754 100644 --- a/src/script/script_gui.cpp +++ b/src/script/script_gui.cpp @@ -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 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), diff --git a/src/settings.cpp b/src/settings.cpp index 4d8155a890..d1efd4ba3d 100644 --- a/src/settings.cpp +++ b/src/settings.cpp @@ -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); } diff --git a/src/signal.cpp b/src/signal.cpp index accc6c8432..5113783210 100644 --- a/src/signal.cpp +++ b/src/signal.cpp @@ -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); } diff --git a/src/signal_func.h b/src/signal_func.h index 45e72971ea..b350d9f8c0 100644 --- a/src/signal_func.h +++ b/src/signal_func.h @@ -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 } } diff --git a/src/signal_type.h b/src/signal_type.h index b1ad3f135f..5f2142d189 100644 --- a/src/signal_type.h +++ b/src/signal_type.h @@ -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 : MakeEnumPropsT {}; +template <> struct EnumPropsT : MakeEnumPropsT {}; /** Reference to a signal * diff --git a/src/sl/oldloader_sl.cpp b/src/sl/oldloader_sl.cpp index 590387e1e7..89524898bc 100644 --- a/src/sl/oldloader_sl.cpp +++ b/src/sl/oldloader_sl.cpp @@ -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 map3; - _old_map3 = map3.data(); _old_vehicle_names = nullptr; try { if (!LoadChunk(ls, nullptr, main_chunk)) { diff --git a/src/sl/vehicle_sl.cpp b/src/sl/vehicle_sl.cpp index 52597f6d1a..424c620d33 100644 --- a/src/sl/vehicle_sl.cpp +++ b/src/sl/vehicle_sl.cpp @@ -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; + } + } + } } /** diff --git a/src/table/settings/gui_settings.ini b/src/table/settings/gui_settings.ini index 290927839e..cbf411181a 100644 --- a/src/table/settings/gui_settings.ini +++ b/src/table/settings/gui_settings.ini @@ -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 diff --git a/src/train_cmd.cpp b/src/train_cmd.cpp index bdc16b379a..f771399c9b 100644 --- a/src/train_cmd.cpp +++ b/src/train_cmd.cpp @@ -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); diff --git a/src/tunnelbridge_cmd.cpp b/src/tunnelbridge_cmd.cpp index 153825fa1d..11877c7dc3 100644 --- a/src/tunnelbridge_cmd.cpp +++ b/src/tunnelbridge_cmd.cpp @@ -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; } diff --git a/src/video/sdl2_v.cpp b/src/video/sdl2_v.cpp index 53f9788153..bdf5b523d0 100644 --- a/src/video/sdl2_v.cpp +++ b/src/video/sdl2_v.cpp @@ -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; diff --git a/src/widget.cpp b/src/widget.cpp index 229d7cca4a..fb8fa2873b 100644 --- a/src/widget.cpp +++ b/src/widget.cpp @@ -3411,9 +3411,10 @@ std::unique_ptr 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 MakeCompanyButtonRows(WidgetID widget_first, WidgetID widget_last, Colours button_colour, int max_length, StringID button_tooltip) +std::unique_ptr 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 vert = nullptr; // Storage for all rows. @@ -3440,7 +3441,7 @@ std::unique_ptr MakeCompanyButtonRows(WidgetID widget_first, Widget auto panel = std::make_unique(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 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(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)); diff --git a/src/widget_type.h b/src/widget_type.h index 9c59e444fa..7171b22925 100644 --- a/src/widget_type.h +++ b/src/widget_type.h @@ -1404,7 +1404,7 @@ bool IsContainerWidgetType(WidgetType tp); std::unique_ptr MakeNWidgets(const NWidgetPart *nwid_begin, const NWidgetPart *nwid_end, std::unique_ptr container); std::unique_ptr MakeWindowNWidgetTree(const NWidgetPart *nwid_begin, const NWidgetPart *nwid_end, NWidgetStacked **shade_select); -std::unique_ptr MakeCompanyButtonRows(WidgetID widget_first, WidgetID widget_last, Colours button_colour, int max_length, StringID button_tooltip); +std::unique_ptr MakeCompanyButtonRows(WidgetID widget_first, WidgetID widget_last, Colours button_colour, int max_length, StringID button_tooltip, bool resizable = true); void SetupWidgetDimensions();