Merge branch 'master' into jgrpp
# Conflicts: # cmake/CompileFlags.cmake # src/aircraft_cmd.cpp # src/blitter/32bpp_anim.cpp # src/cargopacket.cpp # src/cheat_gui.cpp # src/company_cmd.cpp # src/company_gui.cpp # src/core/pool_func.hpp # src/date.cpp # src/economy.cpp # src/error_gui.cpp # src/ground_vehicle.cpp # src/ground_vehicle.hpp # src/group_gui.cpp # src/industry_cmd.cpp # src/lang/dutch.txt # src/lang/french.txt # src/lang/german.txt # src/linkgraph/linkgraph_gui.cpp # src/linkgraph/mcf.cpp # src/network/network_content.cpp # src/network/network_server.cpp # src/network/network_udp.cpp # src/newgrf_engine.cpp # src/newgrf_station.cpp # src/order_cmd.cpp # src/order_gui.cpp # src/pathfinder/follow_track.hpp # src/pathfinder/yapf/yapf_common.hpp # src/saveload/saveload.cpp # src/settings_gui.cpp # src/station_cmd.cpp # src/station_kdtree.h # src/string_func.h # src/table/settings.ini # src/tgp.cpp # src/timetable_cmd.cpp # src/timetable_gui.cpp # src/toolbar_gui.cpp # src/town_cmd.cpp # src/train_cmd.cpp # src/train_gui.cpp # src/tree_gui.cpp # src/tunnelbridge_cmd.cpp # src/vehicle.cpp # src/vehicle_gui.cpp # src/video/sdl2_v.cpp # src/video/sdl_v.cpp # src/video/win32_v.cpp # src/viewport.cpp # src/viewport_sprite_sorter_sse4.cpp # src/window.cpp
This commit is contained in:
1
.github/PULL_REQUEST_TEMPLATE.md
vendored
1
.github/PULL_REQUEST_TEMPLATE.md
vendored
@@ -44,4 +44,5 @@ Some things are not automated, and forgotten often. This list is a reminder for
|
||||
* ai_changelog.hpp, gs_changelog.hpp need updating.
|
||||
* The compatibility wrappers (compat_*.nut) need updating.
|
||||
* This PR affects the NewGRF API? (label 'needs review: NewGRF')
|
||||
* newgrf_debug_data.h may need updating.
|
||||
* [PR must be added to API tracker](https://wiki.openttd.org/en/Development/NewGRF/Specification%20Status)
|
||||
|
12
.github/workflows/ci-build.yml
vendored
12
.github/workflows/ci-build.yml
vendored
@@ -210,6 +210,18 @@ jobs:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v2
|
||||
|
||||
# "restore-cache" which is done by "run-vcpkg" uses Windows tar.
|
||||
# A git clone on windows marks a few files as read-only; when Windows tar
|
||||
# tries to extract the cache over this folder, it fails, despite the files
|
||||
# being identical. This failure shows up as an warning in the logs. We
|
||||
# avoid this by simply removing the read-only mark from the git folder.
|
||||
# In other words: this is a hack!
|
||||
# See: https://github.com/lukka/run-vcpkg/issues/61
|
||||
- name: Remove read-only flag from vcpkg git folder
|
||||
shell: powershell
|
||||
run: |
|
||||
attrib -r "c:\vcpkg\.git\*.*" /s
|
||||
|
||||
- name: Prepare vcpkg (with cache)
|
||||
uses: lukka/run-vcpkg@v6
|
||||
with:
|
||||
|
19
.github/workflows/release.yml
vendored
19
.github/workflows/release.yml
vendored
@@ -366,8 +366,10 @@ jobs:
|
||||
include:
|
||||
- arch: x64
|
||||
full_arch: x86_64
|
||||
- arch: arm64
|
||||
full_arch: arm64
|
||||
|
||||
runs-on: macos-11.0
|
||||
runs-on: macos-10.15
|
||||
env:
|
||||
MACOSX_DEPLOYMENT_TARGET: 10.9
|
||||
|
||||
@@ -381,11 +383,20 @@ jobs:
|
||||
run: |
|
||||
tar -xf source.tar.gz --strip-components=1
|
||||
|
||||
# The following step can be removed and the default vcpkg installation
|
||||
# (/usr/local/share/vcpkg) restored when the build VM is updated with a revision of
|
||||
# vcpkg dating from roughly 01/01/2021 or later.
|
||||
- name: Update vcpkg
|
||||
run: |
|
||||
cd /tmp
|
||||
git clone https://github.com/Microsoft/vcpkg
|
||||
|
||||
- name: Prepare vcpkg (with cache)
|
||||
uses: lukka/run-vcpkg@v6
|
||||
with:
|
||||
vcpkgDirectory: '/usr/local/share/vcpkg'
|
||||
doNotUpdateVcpkg: true
|
||||
vcpkgDirectory: '/tmp/vcpkg'
|
||||
doNotUpdateVcpkg: false
|
||||
vcpkgGitCommitId: 2a42024b53ebb512fb5dd63c523338bf26c8489c
|
||||
vcpkgArguments: 'freetype liblzma lzo'
|
||||
vcpkgTriplet: '${{ matrix.arch }}-osx'
|
||||
|
||||
@@ -418,7 +429,7 @@ jobs:
|
||||
cmake ${GITHUB_WORKSPACE} \
|
||||
-DCMAKE_OSX_ARCHITECTURES=${{ matrix.full_arch }} \
|
||||
-DVCPKG_TARGET_TRIPLET=${{ matrix.arch }}-osx \
|
||||
-DCMAKE_TOOLCHAIN_FILE=/usr/local/share/vcpkg/scripts/buildsystems/vcpkg.cmake \
|
||||
-DCMAKE_TOOLCHAIN_FILE=/tmp/vcpkg/scripts/buildsystems/vcpkg.cmake \
|
||||
-DHOST_BINARY_DIR=${GITHUB_WORKSPACE}/build-host \
|
||||
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
|
||||
# EOF
|
||||
|
@@ -134,18 +134,20 @@ macro(compile_flags)
|
||||
endif()
|
||||
|
||||
if(CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang")
|
||||
add_compile_options(
|
||||
-fno-stack-check
|
||||
)
|
||||
|
||||
include(CheckCXXCompilerFlag)
|
||||
check_cxx_compiler_flag("-mno-sse4" NO_SSE4_FOUND)
|
||||
|
||||
if(NO_SSE4_FOUND)
|
||||
if (NOT CMAKE_OSX_ARCHITECTURES STREQUAL "arm64")
|
||||
add_compile_options(
|
||||
# Don't use SSE4 for general sources to increase compatibility.
|
||||
-mno-sse4
|
||||
-fno-stack-check
|
||||
)
|
||||
|
||||
include(CheckCXXCompilerFlag)
|
||||
check_cxx_compiler_flag("-mno-sse4" NO_SSE4_FOUND)
|
||||
|
||||
if(NO_SSE4_FOUND)
|
||||
add_compile_options(
|
||||
# Don't use SSE4 for general sources to increase compatibility.
|
||||
-mno-sse4
|
||||
)
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
elseif(CMAKE_CXX_COMPILER_ID STREQUAL "Intel")
|
||||
|
@@ -74,23 +74,30 @@ list(LENGTH REGRESSION_EXPECTED REGRESSION_EXPECTED_LENGTH)
|
||||
|
||||
# Compare the output
|
||||
foreach(RESULT IN LISTS REGRESSION_RESULT)
|
||||
list(GET REGRESSION_EXPECTED ${ARGC} EXPECTED)
|
||||
unset(EXPECTED)
|
||||
if(ARGC LESS REGRESSION_EXPECTED_LENGTH)
|
||||
list(GET REGRESSION_EXPECTED ${ARGC} EXPECTED)
|
||||
endif()
|
||||
|
||||
math(EXPR ARGC "${ARGC} + 1")
|
||||
|
||||
if(NOT RESULT STREQUAL EXPECTED)
|
||||
message("${ARGC}: - ${EXPECTED}")
|
||||
message("${ARGC}: + ${RESULT}'")
|
||||
set(ERROR YES)
|
||||
endif()
|
||||
|
||||
math(EXPR ARGC "${ARGC} + 1")
|
||||
endforeach()
|
||||
|
||||
if(NOT REGRESSION_EXPECTED_LENGTH EQUAL ARGC)
|
||||
math(EXPR MISSING "${REGRESSION_EXPECTED_LENGTH} - ${ARGC}")
|
||||
message("(${MISSING} more lines were expected than found)")
|
||||
message("(${REGRESSION_EXPECTED_LENGTH} lines were expected but ${ARGC} were found)")
|
||||
set(ERROR YES)
|
||||
endif()
|
||||
|
||||
if(ERROR)
|
||||
message(FATAL_ERROR "Regression failed")
|
||||
# Ouput the regression result to a file
|
||||
set(REGRESSION_FILE "${CMAKE_CURRENT_BINARY_DIR}/regression_${REGRESSION_TEST}_output.txt")
|
||||
string(REPLACE ";" "\n" REGRESSION_RESULT "${REGRESSION_RESULT}")
|
||||
file(WRITE ${REGRESSION_FILE} "${REGRESSION_RESULT}")
|
||||
|
||||
message(FATAL_ERROR "Regression failed - Output in ${REGRESSION_FILE}")
|
||||
endif()
|
||||
|
@@ -332,7 +332,8 @@ function Regression::Cargo()
|
||||
for (local i = -1; i < 15; i++) {
|
||||
print(" Cargo " + i);
|
||||
print(" IsValidCargo(): " + AICargo.IsValidCargo(i));
|
||||
print(" GetCargoLabel(): '" + AICargo.GetCargoLabel(i)+ "'");
|
||||
print(" GetName(): '" + AICargo.GetName(i) + "'");
|
||||
print(" GetCargoLabel(): '" + AICargo.GetCargoLabel(i) + "'");
|
||||
print(" IsFreight(): " + AICargo.IsFreight(i));
|
||||
print(" HasCargoClass(): " + AICargo.HasCargoClass(i, AICargo.CC_PASSENGERS));
|
||||
print(" GetTownEffect(): " + AICargo.GetTownEffect(i));
|
||||
@@ -428,29 +429,29 @@ function Regression::Company()
|
||||
print(" GetCompanyHQ(): " + AICompany.GetCompanyHQ(AICompany.COMPANY_SELF));
|
||||
print(" BuildCompanyHQ(): " + AICompany.BuildCompanyHQ(AIMap.GetTileIndex(239, 76)));
|
||||
print(" GetLastErrorString(): " + AIError.GetLastErrorString());
|
||||
print(" GetAutoRenewStatus(); " + AICompany.GetAutoRenewStatus(AICompany.COMPANY_SELF));
|
||||
print(" SetAutoRenewStatus(true); " + AICompany.SetAutoRenewStatus(true));
|
||||
print(" GetAutoRenewStatus(); " + AICompany.GetAutoRenewStatus(AICompany.COMPANY_SELF));
|
||||
print(" SetAutoRenewStatus(true); " + AICompany.SetAutoRenewStatus(true));
|
||||
print(" SetAutoRenewStatus(false); " + AICompany.SetAutoRenewStatus(false));
|
||||
print(" GetAutoRenewStatus(); " + AICompany.GetAutoRenewStatus(AICompany.COMPANY_SELF));
|
||||
print(" GetAutoRenewMonths(); " + AICompany.GetAutoRenewMonths(AICompany.COMPANY_SELF));
|
||||
print(" SetAutoRenewMonths(-12); " + AICompany.SetAutoRenewMonths(-12));
|
||||
print(" GetAutoRenewMonths(); " + AICompany.GetAutoRenewMonths(AICompany.COMPANY_SELF));
|
||||
print(" SetAutoRenewMonths(-12); " + AICompany.SetAutoRenewMonths(-12));
|
||||
print(" SetAutoRenewMonths(6); " + AICompany.SetAutoRenewMonths(6));
|
||||
print(" GetAutoRenewMoney(); " + AICompany.GetAutoRenewMoney(AICompany.COMPANY_SELF));
|
||||
print(" SetAutoRenewMoney(200000); " + AICompany.SetAutoRenewMoney(200000));
|
||||
print(" GetAutoRenewMoney(); " + AICompany.GetAutoRenewMoney(AICompany.COMPANY_SELF));
|
||||
print(" SetAutoRenewMoney(200000); " + AICompany.SetAutoRenewMoney(200000));
|
||||
print(" SetAutoRenewMoney(100000); " + AICompany.SetAutoRenewMoney(100000));
|
||||
print(" GetAutoRenewStatus(): " + AICompany.GetAutoRenewStatus(AICompany.COMPANY_SELF));
|
||||
print(" SetAutoRenewStatus(true): " + AICompany.SetAutoRenewStatus(true));
|
||||
print(" GetAutoRenewStatus(): " + AICompany.GetAutoRenewStatus(AICompany.COMPANY_SELF));
|
||||
print(" SetAutoRenewStatus(true): " + AICompany.SetAutoRenewStatus(true));
|
||||
print(" SetAutoRenewStatus(false): " + AICompany.SetAutoRenewStatus(false));
|
||||
print(" GetAutoRenewStatus(): " + AICompany.GetAutoRenewStatus(AICompany.COMPANY_SELF));
|
||||
print(" GetAutoRenewMonths(): " + AICompany.GetAutoRenewMonths(AICompany.COMPANY_SELF));
|
||||
print(" SetAutoRenewMonths(-12): " + AICompany.SetAutoRenewMonths(-12));
|
||||
print(" GetAutoRenewMonths(): " + AICompany.GetAutoRenewMonths(AICompany.COMPANY_SELF));
|
||||
print(" SetAutoRenewMonths(-12): " + AICompany.SetAutoRenewMonths(-12));
|
||||
print(" SetAutoRenewMonths(6): " + AICompany.SetAutoRenewMonths(6));
|
||||
print(" GetAutoRenewMoney(): " + AICompany.GetAutoRenewMoney(AICompany.COMPANY_SELF));
|
||||
print(" SetAutoRenewMoney(200000): " + AICompany.SetAutoRenewMoney(200000));
|
||||
print(" GetAutoRenewMoney(): " + AICompany.GetAutoRenewMoney(AICompany.COMPANY_SELF));
|
||||
print(" SetAutoRenewMoney(200000): " + AICompany.SetAutoRenewMoney(200000));
|
||||
print(" SetAutoRenewMoney(100000): " + AICompany.SetAutoRenewMoney(100000));
|
||||
for (local i = -1; i <= AICompany.EARLIEST_QUARTER; i++) {
|
||||
print(" Quarter: " + i);
|
||||
print(" GetQuarterlyIncome(); " + AICompany.GetQuarterlyIncome(AICompany.COMPANY_SELF, i));
|
||||
print(" GetQuarterlyExpenses(); " + AICompany.GetQuarterlyExpenses(AICompany.COMPANY_SELF, i));
|
||||
print(" GetQuarterlyCargoDelivered(); " + AICompany.GetQuarterlyCargoDelivered(AICompany.COMPANY_SELF, i));
|
||||
print(" GetQuarterlyPerformanceRating(); " + AICompany.GetQuarterlyPerformanceRating(AICompany.COMPANY_SELF, i));
|
||||
print(" GetQuarterlyCompanyValue(); " + AICompany.GetQuarterlyCompanyValue(AICompany.COMPANY_SELF, i));
|
||||
print(" GetQuarterlyIncome(): " + AICompany.GetQuarterlyIncome(AICompany.COMPANY_SELF, i));
|
||||
print(" GetQuarterlyExpenses(): " + AICompany.GetQuarterlyExpenses(AICompany.COMPANY_SELF, i));
|
||||
print(" GetQuarterlyCargoDelivered(): " + AICompany.GetQuarterlyCargoDelivered(AICompany.COMPANY_SELF, i));
|
||||
print(" GetQuarterlyPerformanceRating(): " + AICompany.GetQuarterlyPerformanceRating(AICompany.COMPANY_SELF, i));
|
||||
print(" GetQuarterlyCompanyValue(): " + AICompany.GetQuarterlyCompanyValue(AICompany.COMPANY_SELF, i));
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -615,178 +615,178 @@ ERROR: IsEnd() is invalid as Begin() is never called
|
||||
GetCompanyHQ(): 33153
|
||||
BuildCompanyHQ(): false
|
||||
GetLastErrorString(): ERR_AREA_NOT_CLEAR
|
||||
GetAutoRenewStatus(); true
|
||||
SetAutoRenewStatus(true); true
|
||||
GetAutoRenewStatus(); true
|
||||
SetAutoRenewStatus(true); true
|
||||
SetAutoRenewStatus(false); true
|
||||
GetAutoRenewStatus(); false
|
||||
GetAutoRenewMonths(); 6
|
||||
SetAutoRenewMonths(-12); true
|
||||
GetAutoRenewMonths(); -12
|
||||
SetAutoRenewMonths(-12); true
|
||||
SetAutoRenewMonths(6); true
|
||||
GetAutoRenewMoney(); 100000
|
||||
SetAutoRenewMoney(200000); true
|
||||
GetAutoRenewMoney(); 200000
|
||||
SetAutoRenewMoney(200000); true
|
||||
SetAutoRenewMoney(100000); true
|
||||
GetAutoRenewStatus(): true
|
||||
SetAutoRenewStatus(true): true
|
||||
GetAutoRenewStatus(): true
|
||||
SetAutoRenewStatus(true): true
|
||||
SetAutoRenewStatus(false): true
|
||||
GetAutoRenewStatus(): false
|
||||
GetAutoRenewMonths(): 6
|
||||
SetAutoRenewMonths(-12): true
|
||||
GetAutoRenewMonths(): -12
|
||||
SetAutoRenewMonths(-12): true
|
||||
SetAutoRenewMonths(6): true
|
||||
GetAutoRenewMoney(): 100000
|
||||
SetAutoRenewMoney(200000): true
|
||||
GetAutoRenewMoney(): 200000
|
||||
SetAutoRenewMoney(200000): true
|
||||
SetAutoRenewMoney(100000): true
|
||||
Quarter: -1
|
||||
GetQuarterlyIncome(); -1
|
||||
GetQuarterlyExpenses(); -1
|
||||
GetQuarterlyCargoDelivered(); -1
|
||||
GetQuarterlyPerformanceRating(); -1
|
||||
GetQuarterlyCompanyValue(); -1
|
||||
GetQuarterlyIncome(): -1
|
||||
GetQuarterlyExpenses(): -1
|
||||
GetQuarterlyCargoDelivered(): -1
|
||||
GetQuarterlyPerformanceRating(): -1
|
||||
GetQuarterlyCompanyValue(): -1
|
||||
Quarter: 0
|
||||
GetQuarterlyIncome(); 0
|
||||
GetQuarterlyExpenses(); -210
|
||||
GetQuarterlyCargoDelivered(); 0
|
||||
GetQuarterlyPerformanceRating(); -1
|
||||
GetQuarterlyCompanyValue(); 1
|
||||
GetQuarterlyIncome(): 0
|
||||
GetQuarterlyExpenses(): -210
|
||||
GetQuarterlyCargoDelivered(): 0
|
||||
GetQuarterlyPerformanceRating(): -1
|
||||
GetQuarterlyCompanyValue(): 1
|
||||
Quarter: 1
|
||||
GetQuarterlyIncome(); 0
|
||||
GetQuarterlyExpenses(); 0
|
||||
GetQuarterlyCargoDelivered(); 0
|
||||
GetQuarterlyPerformanceRating(); 0
|
||||
GetQuarterlyCompanyValue(); 0
|
||||
GetQuarterlyIncome(): 0
|
||||
GetQuarterlyExpenses(): 0
|
||||
GetQuarterlyCargoDelivered(): 0
|
||||
GetQuarterlyPerformanceRating(): 0
|
||||
GetQuarterlyCompanyValue(): 0
|
||||
Quarter: 2
|
||||
GetQuarterlyIncome(); 0
|
||||
GetQuarterlyExpenses(); 0
|
||||
GetQuarterlyCargoDelivered(); 0
|
||||
GetQuarterlyPerformanceRating(); 0
|
||||
GetQuarterlyCompanyValue(); 0
|
||||
GetQuarterlyIncome(): 0
|
||||
GetQuarterlyExpenses(): 0
|
||||
GetQuarterlyCargoDelivered(): 0
|
||||
GetQuarterlyPerformanceRating(): 0
|
||||
GetQuarterlyCompanyValue(): 0
|
||||
Quarter: 3
|
||||
GetQuarterlyIncome(); 0
|
||||
GetQuarterlyExpenses(); 0
|
||||
GetQuarterlyCargoDelivered(); 0
|
||||
GetQuarterlyPerformanceRating(); 0
|
||||
GetQuarterlyCompanyValue(); 0
|
||||
GetQuarterlyIncome(): 0
|
||||
GetQuarterlyExpenses(): 0
|
||||
GetQuarterlyCargoDelivered(): 0
|
||||
GetQuarterlyPerformanceRating(): 0
|
||||
GetQuarterlyCompanyValue(): 0
|
||||
Quarter: 4
|
||||
GetQuarterlyIncome(); 0
|
||||
GetQuarterlyExpenses(); 0
|
||||
GetQuarterlyCargoDelivered(); 0
|
||||
GetQuarterlyPerformanceRating(); 0
|
||||
GetQuarterlyCompanyValue(); 0
|
||||
GetQuarterlyIncome(): 0
|
||||
GetQuarterlyExpenses(): 0
|
||||
GetQuarterlyCargoDelivered(): 0
|
||||
GetQuarterlyPerformanceRating(): 0
|
||||
GetQuarterlyCompanyValue(): 0
|
||||
Quarter: 5
|
||||
GetQuarterlyIncome(); 0
|
||||
GetQuarterlyExpenses(); 0
|
||||
GetQuarterlyCargoDelivered(); 0
|
||||
GetQuarterlyPerformanceRating(); 0
|
||||
GetQuarterlyCompanyValue(); 0
|
||||
GetQuarterlyIncome(): 0
|
||||
GetQuarterlyExpenses(): 0
|
||||
GetQuarterlyCargoDelivered(): 0
|
||||
GetQuarterlyPerformanceRating(): 0
|
||||
GetQuarterlyCompanyValue(): 0
|
||||
Quarter: 6
|
||||
GetQuarterlyIncome(); 0
|
||||
GetQuarterlyExpenses(); 0
|
||||
GetQuarterlyCargoDelivered(); 0
|
||||
GetQuarterlyPerformanceRating(); 0
|
||||
GetQuarterlyCompanyValue(); 0
|
||||
GetQuarterlyIncome(): 0
|
||||
GetQuarterlyExpenses(): 0
|
||||
GetQuarterlyCargoDelivered(): 0
|
||||
GetQuarterlyPerformanceRating(): 0
|
||||
GetQuarterlyCompanyValue(): 0
|
||||
Quarter: 7
|
||||
GetQuarterlyIncome(); 0
|
||||
GetQuarterlyExpenses(); 0
|
||||
GetQuarterlyCargoDelivered(); 0
|
||||
GetQuarterlyPerformanceRating(); 0
|
||||
GetQuarterlyCompanyValue(); 0
|
||||
GetQuarterlyIncome(): 0
|
||||
GetQuarterlyExpenses(): 0
|
||||
GetQuarterlyCargoDelivered(): 0
|
||||
GetQuarterlyPerformanceRating(): 0
|
||||
GetQuarterlyCompanyValue(): 0
|
||||
Quarter: 8
|
||||
GetQuarterlyIncome(); 0
|
||||
GetQuarterlyExpenses(); 0
|
||||
GetQuarterlyCargoDelivered(); 0
|
||||
GetQuarterlyPerformanceRating(); 0
|
||||
GetQuarterlyCompanyValue(); 0
|
||||
GetQuarterlyIncome(): 0
|
||||
GetQuarterlyExpenses(): 0
|
||||
GetQuarterlyCargoDelivered(): 0
|
||||
GetQuarterlyPerformanceRating(): 0
|
||||
GetQuarterlyCompanyValue(): 0
|
||||
Quarter: 9
|
||||
GetQuarterlyIncome(); 0
|
||||
GetQuarterlyExpenses(); 0
|
||||
GetQuarterlyCargoDelivered(); 0
|
||||
GetQuarterlyPerformanceRating(); 0
|
||||
GetQuarterlyCompanyValue(); 0
|
||||
GetQuarterlyIncome(): 0
|
||||
GetQuarterlyExpenses(): 0
|
||||
GetQuarterlyCargoDelivered(): 0
|
||||
GetQuarterlyPerformanceRating(): 0
|
||||
GetQuarterlyCompanyValue(): 0
|
||||
Quarter: 10
|
||||
GetQuarterlyIncome(); 0
|
||||
GetQuarterlyExpenses(); 0
|
||||
GetQuarterlyCargoDelivered(); 0
|
||||
GetQuarterlyPerformanceRating(); 0
|
||||
GetQuarterlyCompanyValue(); 0
|
||||
GetQuarterlyIncome(): 0
|
||||
GetQuarterlyExpenses(): 0
|
||||
GetQuarterlyCargoDelivered(): 0
|
||||
GetQuarterlyPerformanceRating(): 0
|
||||
GetQuarterlyCompanyValue(): 0
|
||||
Quarter: 11
|
||||
GetQuarterlyIncome(); 0
|
||||
GetQuarterlyExpenses(); 0
|
||||
GetQuarterlyCargoDelivered(); 0
|
||||
GetQuarterlyPerformanceRating(); 0
|
||||
GetQuarterlyCompanyValue(); 0
|
||||
GetQuarterlyIncome(): 0
|
||||
GetQuarterlyExpenses(): 0
|
||||
GetQuarterlyCargoDelivered(): 0
|
||||
GetQuarterlyPerformanceRating(): 0
|
||||
GetQuarterlyCompanyValue(): 0
|
||||
Quarter: 12
|
||||
GetQuarterlyIncome(); 0
|
||||
GetQuarterlyExpenses(); 0
|
||||
GetQuarterlyCargoDelivered(); 0
|
||||
GetQuarterlyPerformanceRating(); 0
|
||||
GetQuarterlyCompanyValue(); 0
|
||||
GetQuarterlyIncome(): 0
|
||||
GetQuarterlyExpenses(): 0
|
||||
GetQuarterlyCargoDelivered(): 0
|
||||
GetQuarterlyPerformanceRating(): 0
|
||||
GetQuarterlyCompanyValue(): 0
|
||||
Quarter: 13
|
||||
GetQuarterlyIncome(); 0
|
||||
GetQuarterlyExpenses(); 0
|
||||
GetQuarterlyCargoDelivered(); 0
|
||||
GetQuarterlyPerformanceRating(); 0
|
||||
GetQuarterlyCompanyValue(); 0
|
||||
GetQuarterlyIncome(): 0
|
||||
GetQuarterlyExpenses(): 0
|
||||
GetQuarterlyCargoDelivered(): 0
|
||||
GetQuarterlyPerformanceRating(): 0
|
||||
GetQuarterlyCompanyValue(): 0
|
||||
Quarter: 14
|
||||
GetQuarterlyIncome(); 0
|
||||
GetQuarterlyExpenses(); 0
|
||||
GetQuarterlyCargoDelivered(); 0
|
||||
GetQuarterlyPerformanceRating(); 0
|
||||
GetQuarterlyCompanyValue(); 0
|
||||
GetQuarterlyIncome(): 0
|
||||
GetQuarterlyExpenses(): 0
|
||||
GetQuarterlyCargoDelivered(): 0
|
||||
GetQuarterlyPerformanceRating(): 0
|
||||
GetQuarterlyCompanyValue(): 0
|
||||
Quarter: 15
|
||||
GetQuarterlyIncome(); 0
|
||||
GetQuarterlyExpenses(); 0
|
||||
GetQuarterlyCargoDelivered(); 0
|
||||
GetQuarterlyPerformanceRating(); 0
|
||||
GetQuarterlyCompanyValue(); 0
|
||||
GetQuarterlyIncome(): 0
|
||||
GetQuarterlyExpenses(): 0
|
||||
GetQuarterlyCargoDelivered(): 0
|
||||
GetQuarterlyPerformanceRating(): 0
|
||||
GetQuarterlyCompanyValue(): 0
|
||||
Quarter: 16
|
||||
GetQuarterlyIncome(); 0
|
||||
GetQuarterlyExpenses(); 0
|
||||
GetQuarterlyCargoDelivered(); 0
|
||||
GetQuarterlyPerformanceRating(); 0
|
||||
GetQuarterlyCompanyValue(); 0
|
||||
GetQuarterlyIncome(): 0
|
||||
GetQuarterlyExpenses(): 0
|
||||
GetQuarterlyCargoDelivered(): 0
|
||||
GetQuarterlyPerformanceRating(): 0
|
||||
GetQuarterlyCompanyValue(): 0
|
||||
Quarter: 17
|
||||
GetQuarterlyIncome(); 0
|
||||
GetQuarterlyExpenses(); 0
|
||||
GetQuarterlyCargoDelivered(); 0
|
||||
GetQuarterlyPerformanceRating(); 0
|
||||
GetQuarterlyCompanyValue(); 0
|
||||
GetQuarterlyIncome(): 0
|
||||
GetQuarterlyExpenses(): 0
|
||||
GetQuarterlyCargoDelivered(): 0
|
||||
GetQuarterlyPerformanceRating(): 0
|
||||
GetQuarterlyCompanyValue(): 0
|
||||
Quarter: 18
|
||||
GetQuarterlyIncome(); 0
|
||||
GetQuarterlyExpenses(); 0
|
||||
GetQuarterlyCargoDelivered(); 0
|
||||
GetQuarterlyPerformanceRating(); 0
|
||||
GetQuarterlyCompanyValue(); 0
|
||||
GetQuarterlyIncome(): 0
|
||||
GetQuarterlyExpenses(): 0
|
||||
GetQuarterlyCargoDelivered(): 0
|
||||
GetQuarterlyPerformanceRating(): 0
|
||||
GetQuarterlyCompanyValue(): 0
|
||||
Quarter: 19
|
||||
GetQuarterlyIncome(); 0
|
||||
GetQuarterlyExpenses(); 0
|
||||
GetQuarterlyCargoDelivered(); 0
|
||||
GetQuarterlyPerformanceRating(); 0
|
||||
GetQuarterlyCompanyValue(); 0
|
||||
GetQuarterlyIncome(): 0
|
||||
GetQuarterlyExpenses(): 0
|
||||
GetQuarterlyCargoDelivered(): 0
|
||||
GetQuarterlyPerformanceRating(): 0
|
||||
GetQuarterlyCompanyValue(): 0
|
||||
Quarter: 20
|
||||
GetQuarterlyIncome(); 0
|
||||
GetQuarterlyExpenses(); 0
|
||||
GetQuarterlyCargoDelivered(); 0
|
||||
GetQuarterlyPerformanceRating(); 0
|
||||
GetQuarterlyCompanyValue(); 0
|
||||
GetQuarterlyIncome(): 0
|
||||
GetQuarterlyExpenses(): 0
|
||||
GetQuarterlyCargoDelivered(): 0
|
||||
GetQuarterlyPerformanceRating(): 0
|
||||
GetQuarterlyCompanyValue(): 0
|
||||
Quarter: 21
|
||||
GetQuarterlyIncome(); 0
|
||||
GetQuarterlyExpenses(); 0
|
||||
GetQuarterlyCargoDelivered(); 0
|
||||
GetQuarterlyPerformanceRating(); 0
|
||||
GetQuarterlyCompanyValue(); 0
|
||||
GetQuarterlyIncome(): 0
|
||||
GetQuarterlyExpenses(): 0
|
||||
GetQuarterlyCargoDelivered(): 0
|
||||
GetQuarterlyPerformanceRating(): 0
|
||||
GetQuarterlyCompanyValue(): 0
|
||||
Quarter: 22
|
||||
GetQuarterlyIncome(); 0
|
||||
GetQuarterlyExpenses(); 0
|
||||
GetQuarterlyCargoDelivered(); 0
|
||||
GetQuarterlyPerformanceRating(); 0
|
||||
GetQuarterlyCompanyValue(); 0
|
||||
GetQuarterlyIncome(): 0
|
||||
GetQuarterlyExpenses(): 0
|
||||
GetQuarterlyCargoDelivered(): 0
|
||||
GetQuarterlyPerformanceRating(): 0
|
||||
GetQuarterlyCompanyValue(): 0
|
||||
Quarter: 23
|
||||
GetQuarterlyIncome(); 0
|
||||
GetQuarterlyExpenses(); 0
|
||||
GetQuarterlyCargoDelivered(); 0
|
||||
GetQuarterlyPerformanceRating(); 0
|
||||
GetQuarterlyCompanyValue(); 0
|
||||
GetQuarterlyIncome(): 0
|
||||
GetQuarterlyExpenses(): 0
|
||||
GetQuarterlyCargoDelivered(): 0
|
||||
GetQuarterlyPerformanceRating(): 0
|
||||
GetQuarterlyCompanyValue(): 0
|
||||
Quarter: 24
|
||||
GetQuarterlyIncome(); 0
|
||||
GetQuarterlyExpenses(); 0
|
||||
GetQuarterlyCargoDelivered(); 0
|
||||
GetQuarterlyPerformanceRating(); 0
|
||||
GetQuarterlyCompanyValue(); 0
|
||||
GetQuarterlyIncome(): 0
|
||||
GetQuarterlyExpenses(): 0
|
||||
GetQuarterlyCargoDelivered(): 0
|
||||
GetQuarterlyPerformanceRating(): 0
|
||||
GetQuarterlyCompanyValue(): 0
|
||||
|
||||
--AIAirport--
|
||||
IsHangarTile(): false
|
||||
@@ -1109,6 +1109,7 @@ ERROR: IsEnd() is invalid as Begin() is never called
|
||||
--AICargo--
|
||||
Cargo -1
|
||||
IsValidCargo(): false
|
||||
GetName(): '(null : 0x00000000)'
|
||||
GetCargoLabel(): '(null : 0x00000000)'
|
||||
IsFreight(): false
|
||||
HasCargoClass(): false
|
||||
@@ -1120,6 +1121,7 @@ ERROR: IsEnd() is invalid as Begin() is never called
|
||||
GetRoadVehicleTypeForCargo(): 1
|
||||
Cargo 0
|
||||
IsValidCargo(): true
|
||||
GetName(): 'Passengers'
|
||||
GetCargoLabel(): 'PASS'
|
||||
IsFreight(): false
|
||||
HasCargoClass(): true
|
||||
@@ -1131,6 +1133,7 @@ ERROR: IsEnd() is invalid as Begin() is never called
|
||||
GetRoadVehicleTypeForCargo(): 0
|
||||
Cargo 1
|
||||
IsValidCargo(): true
|
||||
GetName(): 'Coal'
|
||||
GetCargoLabel(): 'COAL'
|
||||
IsFreight(): true
|
||||
HasCargoClass(): false
|
||||
@@ -1142,6 +1145,7 @@ ERROR: IsEnd() is invalid as Begin() is never called
|
||||
GetRoadVehicleTypeForCargo(): 1
|
||||
Cargo 2
|
||||
IsValidCargo(): true
|
||||
GetName(): 'Mail'
|
||||
GetCargoLabel(): 'MAIL'
|
||||
IsFreight(): false
|
||||
HasCargoClass(): false
|
||||
@@ -1153,6 +1157,7 @@ ERROR: IsEnd() is invalid as Begin() is never called
|
||||
GetRoadVehicleTypeForCargo(): 1
|
||||
Cargo 3
|
||||
IsValidCargo(): true
|
||||
GetName(): 'Oil'
|
||||
GetCargoLabel(): 'OIL_'
|
||||
IsFreight(): true
|
||||
HasCargoClass(): false
|
||||
@@ -1164,6 +1169,7 @@ ERROR: IsEnd() is invalid as Begin() is never called
|
||||
GetRoadVehicleTypeForCargo(): 1
|
||||
Cargo 4
|
||||
IsValidCargo(): true
|
||||
GetName(): 'Livestock'
|
||||
GetCargoLabel(): 'LVST'
|
||||
IsFreight(): true
|
||||
HasCargoClass(): false
|
||||
@@ -1175,6 +1181,7 @@ ERROR: IsEnd() is invalid as Begin() is never called
|
||||
GetRoadVehicleTypeForCargo(): 1
|
||||
Cargo 5
|
||||
IsValidCargo(): true
|
||||
GetName(): 'Goods'
|
||||
GetCargoLabel(): 'GOOD'
|
||||
IsFreight(): true
|
||||
HasCargoClass(): false
|
||||
@@ -1186,6 +1193,7 @@ ERROR: IsEnd() is invalid as Begin() is never called
|
||||
GetRoadVehicleTypeForCargo(): 1
|
||||
Cargo 6
|
||||
IsValidCargo(): true
|
||||
GetName(): 'Grain'
|
||||
GetCargoLabel(): 'GRAI'
|
||||
IsFreight(): true
|
||||
HasCargoClass(): false
|
||||
@@ -1197,6 +1205,7 @@ ERROR: IsEnd() is invalid as Begin() is never called
|
||||
GetRoadVehicleTypeForCargo(): 1
|
||||
Cargo 7
|
||||
IsValidCargo(): true
|
||||
GetName(): 'Wood'
|
||||
GetCargoLabel(): 'WOOD'
|
||||
IsFreight(): true
|
||||
HasCargoClass(): false
|
||||
@@ -1208,6 +1217,7 @@ ERROR: IsEnd() is invalid as Begin() is never called
|
||||
GetRoadVehicleTypeForCargo(): 1
|
||||
Cargo 8
|
||||
IsValidCargo(): true
|
||||
GetName(): 'Iron Ore'
|
||||
GetCargoLabel(): 'IORE'
|
||||
IsFreight(): true
|
||||
HasCargoClass(): false
|
||||
@@ -1219,6 +1229,7 @@ ERROR: IsEnd() is invalid as Begin() is never called
|
||||
GetRoadVehicleTypeForCargo(): 1
|
||||
Cargo 9
|
||||
IsValidCargo(): true
|
||||
GetName(): 'Steel'
|
||||
GetCargoLabel(): 'STEL'
|
||||
IsFreight(): true
|
||||
HasCargoClass(): false
|
||||
@@ -1230,6 +1241,7 @@ ERROR: IsEnd() is invalid as Begin() is never called
|
||||
GetRoadVehicleTypeForCargo(): 1
|
||||
Cargo 10
|
||||
IsValidCargo(): true
|
||||
GetName(): 'Valuables'
|
||||
GetCargoLabel(): 'VALU'
|
||||
IsFreight(): true
|
||||
HasCargoClass(): false
|
||||
@@ -1241,6 +1253,7 @@ ERROR: IsEnd() is invalid as Begin() is never called
|
||||
GetRoadVehicleTypeForCargo(): 1
|
||||
Cargo 11
|
||||
IsValidCargo(): false
|
||||
GetName(): '(null : 0x00000000)'
|
||||
GetCargoLabel(): '(null : 0x00000000)'
|
||||
IsFreight(): false
|
||||
HasCargoClass(): false
|
||||
@@ -1252,6 +1265,7 @@ ERROR: IsEnd() is invalid as Begin() is never called
|
||||
GetRoadVehicleTypeForCargo(): 1
|
||||
Cargo 12
|
||||
IsValidCargo(): false
|
||||
GetName(): '(null : 0x00000000)'
|
||||
GetCargoLabel(): '(null : 0x00000000)'
|
||||
IsFreight(): false
|
||||
HasCargoClass(): false
|
||||
@@ -1263,6 +1277,7 @@ ERROR: IsEnd() is invalid as Begin() is never called
|
||||
GetRoadVehicleTypeForCargo(): 1
|
||||
Cargo 13
|
||||
IsValidCargo(): false
|
||||
GetName(): '(null : 0x00000000)'
|
||||
GetCargoLabel(): '(null : 0x00000000)'
|
||||
IsFreight(): false
|
||||
HasCargoClass(): false
|
||||
@@ -1274,6 +1289,7 @@ ERROR: IsEnd() is invalid as Begin() is never called
|
||||
GetRoadVehicleTypeForCargo(): 1
|
||||
Cargo 14
|
||||
IsValidCargo(): false
|
||||
GetName(): '(null : 0x00000000)'
|
||||
GetCargoLabel(): '(null : 0x00000000)'
|
||||
IsFreight(): false
|
||||
HasCargoClass(): false
|
||||
@@ -7314,7 +7330,7 @@ ERROR: IsEnd() is invalid as Begin() is never called
|
||||
IsBuoyTile(): false
|
||||
IsLockTile(): false
|
||||
IsCanalTile(): false
|
||||
GetBankBalance(): 1999979664
|
||||
GetBankBalance(): 1999979304
|
||||
BuildWaterDepot(): true
|
||||
BuildDock(): true
|
||||
BuildBuoy(): true
|
||||
@@ -7327,7 +7343,7 @@ ERROR: IsEnd() is invalid as Begin() is never called
|
||||
IsBuoyTile(): true
|
||||
IsLockTile(): true
|
||||
IsCanalTile(): true
|
||||
GetBankBalance(): 1999965040
|
||||
GetBankBalance(): 1999964680
|
||||
|
||||
--AIWaypointList(BUOY)--
|
||||
Count(): 1
|
||||
@@ -7346,7 +7362,7 @@ ERROR: IsEnd() is invalid as Begin() is never called
|
||||
IsBuoyTile(): false
|
||||
IsLockTile(): false
|
||||
IsCanalTile(): false
|
||||
GetBankBalance(): 1999959645
|
||||
GetBankBalance(): 1999959285
|
||||
BuildWaterDepot(): true
|
||||
BuildDock(): true
|
||||
|
||||
|
5
src/3rdparty/squirrel/squirrel/sqbaselib.cpp
vendored
5
src/3rdparty/squirrel/squirrel/sqbaselib.cpp
vendored
@@ -1,14 +1,9 @@
|
||||
/*
|
||||
* see copyright notice in squirrel.h
|
||||
*/
|
||||
/*
|
||||
* Needs to be first due to a squirrel header defining type() and type()
|
||||
* being used in some versions of the headers included by algorithm.
|
||||
*/
|
||||
|
||||
#include "../../../stdafx.h"
|
||||
|
||||
#include <algorithm>
|
||||
#include "sqpcheader.h"
|
||||
#include "sqvm.h"
|
||||
#include "sqstring.h"
|
||||
|
@@ -39,7 +39,7 @@ AIConfig::AIConfig(const AIConfig *config) : ScriptConfig(config)
|
||||
* This is necessary because the ScriptConfig constructor will instead call
|
||||
* ScriptConfig::AddRandomDeviation(). */
|
||||
int start_date = config->GetSetting("start_date");
|
||||
this->SetSetting("start_date", start_date != 0 ? max(1, this->GetSetting("start_date")) : 0);
|
||||
this->SetSetting("start_date", start_date != 0 ? std::max(1, this->GetSetting("start_date")) : 0);
|
||||
}
|
||||
|
||||
/* static */ AIConfig *AIConfig::GetConfig(CompanyID company, ScriptSettingSource source)
|
||||
@@ -134,5 +134,5 @@ void AIConfig::AddRandomDeviation()
|
||||
|
||||
/* start_date = 0 is a special case, where random deviation does not occur.
|
||||
* If start_date was not already 0, then a minimum value of 1 must apply. */
|
||||
this->SetSetting("start_date", start_date != 0 ? max(1, this->GetSetting("start_date")) : 0);
|
||||
this->SetSetting("start_date", start_date != 0 ? std::max(1, this->GetSetting("start_date")) : 0);
|
||||
}
|
||||
|
@@ -247,7 +247,7 @@ struct AIListWindow : public Window {
|
||||
this->vscroll->SetCount((int)this->info_list->size() + 1);
|
||||
|
||||
/* selected goes from -1 .. length of ai list - 1. */
|
||||
this->selected = min(this->selected, this->vscroll->GetCount() - 2);
|
||||
this->selected = std::min(this->selected, this->vscroll->GetCount() - 2);
|
||||
}
|
||||
};
|
||||
|
||||
@@ -360,7 +360,7 @@ struct AISettingsWindow : public Window {
|
||||
void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize) override
|
||||
{
|
||||
if (widget == WID_AIS_BACKGROUND) {
|
||||
this->line_height = max(SETTING_BUTTON_HEIGHT, FONT_HEIGHT_NORMAL) + WD_MATRIX_TOP + WD_MATRIX_BOTTOM;
|
||||
this->line_height = std::max(SETTING_BUTTON_HEIGHT, FONT_HEIGHT_NORMAL) + WD_MATRIX_TOP + WD_MATRIX_BOTTOM;
|
||||
|
||||
resize->width = 1;
|
||||
resize->height = this->line_height;
|
||||
@@ -890,9 +890,9 @@ struct AIConfigWindow : public Window {
|
||||
case WID_AIC_INCREASE: {
|
||||
int new_value;
|
||||
if (widget == WID_AIC_DECREASE) {
|
||||
new_value = max(0, GetGameSettings().difficulty.max_no_competitors - 1);
|
||||
new_value = std::max(0, GetGameSettings().difficulty.max_no_competitors - 1);
|
||||
} else {
|
||||
new_value = min(MAX_COMPANIES - 1, GetGameSettings().difficulty.max_no_competitors + 1);
|
||||
new_value = std::min(MAX_COMPANIES - 1, GetGameSettings().difficulty.max_no_competitors + 1);
|
||||
}
|
||||
IConsoleSetSetting("difficulty.max_no_competitors", new_value);
|
||||
break;
|
||||
@@ -1187,7 +1187,7 @@ struct AIDebugWindow : public Window {
|
||||
this->autoscroll = this->vscroll->GetPosition() >= log->used - this->vscroll->GetCapacity();
|
||||
}
|
||||
if (this->autoscroll) {
|
||||
int scroll_pos = max(0, log->used - this->vscroll->GetCapacity());
|
||||
int scroll_pos = std::max(0, log->used - this->vscroll->GetCapacity());
|
||||
if (scroll_pos != this->vscroll->GetPosition()) {
|
||||
this->vscroll->SetPosition(scroll_pos);
|
||||
|
||||
|
@@ -668,7 +668,7 @@ static int UpdateAircraftSpeed(Aircraft *v, uint speed_limit = SPEED_LIMIT_NONE,
|
||||
if (v->breakdown_ctr == 1 && v->breakdown_type == BREAKDOWN_AIRCRAFT_SPEED) {
|
||||
const uint broken_speed = v->breakdown_severity << 3;
|
||||
if (broken_speed < speed_limit) hard_limit = false;
|
||||
speed_limit = min(speed_limit, broken_speed);
|
||||
speed_limit = std::min(speed_limit, broken_speed);
|
||||
}
|
||||
|
||||
if (v->vcache.cached_max_speed < speed_limit) {
|
||||
@@ -685,10 +685,10 @@ static int UpdateAircraftSpeed(Aircraft *v, uint speed_limit = SPEED_LIMIT_NONE,
|
||||
* speeds to that aircraft do not get to taxi speed straight after
|
||||
* touchdown. */
|
||||
if (!hard_limit && v->cur_speed > speed_limit) {
|
||||
speed_limit = v->cur_speed - max(1, ((v->cur_speed * v->cur_speed) / 16384) / _settings_game.vehicle.plane_speed);
|
||||
speed_limit = v->cur_speed - std::max(1, ((v->cur_speed * v->cur_speed) / 16384) / _settings_game.vehicle.plane_speed);
|
||||
}
|
||||
|
||||
spd = min(v->cur_speed + (spd >> 8) + (v->subspeed < t), speed_limit);
|
||||
spd = std::min(v->cur_speed + (spd >> 8) + (v->subspeed < t), speed_limit);
|
||||
|
||||
/* updates statusbar only if speed have changed to save CPU time */
|
||||
if (spd != v->cur_speed) {
|
||||
@@ -751,7 +751,7 @@ void GetAircraftFlightLevelBounds(const Vehicle *v, int *min_level, int *max_lev
|
||||
}
|
||||
|
||||
/* Make faster planes fly higher so that they can overtake slower ones */
|
||||
base_altitude += min(20 * (v->vcache.cached_max_speed / 200) - 90, 0);
|
||||
base_altitude += std::min(20 * (v->vcache.cached_max_speed / 200) - 90, 0);
|
||||
|
||||
if (min_level != nullptr) *min_level = base_altitude + AIRCRAFT_MIN_FLYING_ALTITUDE;
|
||||
if (max_level != nullptr) *max_level = base_altitude + AIRCRAFT_MAX_FLYING_ALTITUDE;
|
||||
@@ -870,8 +870,6 @@ static void MaybeCrashAirplane(Aircraft *v);
|
||||
*/
|
||||
static bool AircraftController(Aircraft *v)
|
||||
{
|
||||
int count;
|
||||
|
||||
/* nullptr if station is invalid */
|
||||
const Station *st = Station::GetIfValid(v->targetairport);
|
||||
/* INVALID_TILE if there is no station */
|
||||
@@ -931,7 +929,7 @@ static bool AircraftController(Aircraft *v)
|
||||
}
|
||||
} else {
|
||||
u->cur_speed = 32;
|
||||
count = UpdateAircraftSpeed(v);
|
||||
int count = UpdateAircraftSpeed(v);
|
||||
if (count > 0) {
|
||||
v->tile = 0;
|
||||
|
||||
@@ -943,7 +941,7 @@ static bool AircraftController(Aircraft *v)
|
||||
v->cur_speed = 0;
|
||||
return true;
|
||||
}
|
||||
SetAircraftPosition(v, v->x_pos, v->y_pos, min(v->z_pos + count, z_dest));
|
||||
SetAircraftPosition(v, v->x_pos, v->y_pos, std::min(v->z_pos + count, z_dest));
|
||||
}
|
||||
}
|
||||
return false;
|
||||
@@ -989,12 +987,12 @@ static bool AircraftController(Aircraft *v)
|
||||
}
|
||||
u->cur_speed += 4;
|
||||
} else {
|
||||
count = UpdateAircraftSpeed(v);
|
||||
int count = UpdateAircraftSpeed(v);
|
||||
if (count > 0) {
|
||||
if (v->z_pos > z) {
|
||||
SetAircraftPosition(v, v->x_pos, v->y_pos, max(v->z_pos - count, z));
|
||||
SetAircraftPosition(v, v->x_pos, v->y_pos, std::max(v->z_pos - count, z));
|
||||
} else {
|
||||
SetAircraftPosition(v, v->x_pos, v->y_pos, min(v->z_pos + count, z));
|
||||
SetAircraftPosition(v, v->x_pos, v->y_pos, std::min(v->z_pos + count, z));
|
||||
}
|
||||
} else {
|
||||
v->UpdatePosition();
|
||||
@@ -1042,16 +1040,23 @@ static bool AircraftController(Aircraft *v)
|
||||
if (amd.flag & AMED_LAND) { speed_limit = SPEED_LIMIT_APPROACH; hard_limit = false; }
|
||||
if (amd.flag & AMED_BRAKE) { speed_limit = SPEED_LIMIT_TAXI; hard_limit = false; }
|
||||
|
||||
count = UpdateAircraftSpeed(v, speed_limit, hard_limit);
|
||||
int count = UpdateAircraftSpeed(v, speed_limit, hard_limit);
|
||||
if (count == 0) return false;
|
||||
|
||||
/* If the plane will be a few subpixels away from the destination after
|
||||
* this movement loop, start nudging him towards the exact position for
|
||||
* the whole loop. Otherwise, heavily depending on the speed of the plane,
|
||||
* it is possible we totally overshoot the target, causing the plane to
|
||||
* make a loop, and trying again, and again, and again .. */
|
||||
bool nudge_towards_target = static_cast<uint>(count) + 3 > dist;
|
||||
|
||||
if (v->turn_counter != 0) v->turn_counter--;
|
||||
|
||||
do {
|
||||
|
||||
GetNewVehiclePosResult gp;
|
||||
|
||||
if (dist < 4 || (amd.flag & AMED_LAND)) {
|
||||
if (nudge_towards_target || (amd.flag & AMED_LAND)) {
|
||||
/* move vehicle one pixel towards target */
|
||||
gp.x = (v->x_pos != (x + amd.x)) ?
|
||||
v->x_pos + ((x + amd.x > v->x_pos) ? 1 : -1) :
|
||||
@@ -1144,7 +1149,7 @@ static bool AircraftController(Aircraft *v)
|
||||
|
||||
/* We're not flying below our destination, right? */
|
||||
assert(airport_z <= z);
|
||||
int t = max(1U, dist - 4);
|
||||
int t = std::max(1U, dist - 4);
|
||||
int delta = z - airport_z;
|
||||
|
||||
/* Only start lowering when we're sufficiently close for a 1:1 glide */
|
||||
@@ -1428,7 +1433,7 @@ static void MaybeCrashAirplane(Aircraft *v)
|
||||
}
|
||||
if (_settings_game.vehicle.improved_breakdowns && v->breakdown_ctr == 1 && v->breakdown_type == BREAKDOWN_AIRCRAFT_EM_LANDING) {
|
||||
/* Airplanes that are attempting an emergency landing have a 2% chance to crash */
|
||||
prob = max<uint32>(prob, 0x10000 / 50);
|
||||
prob = std::max<uint32>(prob, 0x10000 / 50);
|
||||
}
|
||||
|
||||
if (GB(Random(), 0, 22) > prob) return;
|
||||
|
@@ -71,6 +71,7 @@ struct BuildAirToolbarWindow : Window {
|
||||
BuildAirToolbarWindow(WindowDesc *desc, WindowNumber window_number) : Window(desc)
|
||||
{
|
||||
this->InitNested(window_number);
|
||||
this->OnInvalidateData();
|
||||
if (_settings_client.gui.link_terraform_toolbar) ShowTerraformToolbar(this);
|
||||
this->last_user_action = WIDGET_LIST_END;
|
||||
}
|
||||
@@ -90,7 +91,18 @@ struct BuildAirToolbarWindow : Window {
|
||||
{
|
||||
if (!gui_scope) return;
|
||||
|
||||
if (!CanBuildVehicleInfrastructure(VEH_AIRCRAFT)) delete this;
|
||||
bool can_build = CanBuildVehicleInfrastructure(VEH_AIRCRAFT);
|
||||
this->SetWidgetsDisabledState(!can_build,
|
||||
WID_AT_AIRPORT,
|
||||
WIDGET_LIST_END);
|
||||
if (!can_build) {
|
||||
DeleteWindowById(WC_BUILD_STATION, TRANSPORT_AIR);
|
||||
|
||||
/* Show in the tooltip why this button is disabled. */
|
||||
this->GetWidget<NWidgetCore>(WID_AT_AIRPORT)->SetToolTip(STR_TOOLBAR_DISABLED_NO_VEHICLE_AVAILABLE);
|
||||
} else {
|
||||
this->GetWidget<NWidgetCore>(WID_AT_AIRPORT)->SetToolTip(STR_TOOLBAR_AIRCRAFT_BUILD_AIRPORT_TOOLTIP);
|
||||
}
|
||||
}
|
||||
|
||||
void OnClick(Point pt, int widget, int click_count) override
|
||||
@@ -160,7 +172,7 @@ struct BuildAirToolbarWindow : Window {
|
||||
*/
|
||||
static EventState AirportToolbarGlobalHotkeys(int hotkey)
|
||||
{
|
||||
if (_game_mode != GM_NORMAL || !CanBuildVehicleInfrastructure(VEH_AIRCRAFT)) return ES_NOT_HANDLED;
|
||||
if (_game_mode != GM_NORMAL) return ES_NOT_HANDLED;
|
||||
Window *w = ShowBuildAirToolbar();
|
||||
if (w == nullptr) return ES_NOT_HANDLED;
|
||||
return w->OnHotkey(hotkey);
|
||||
@@ -314,7 +326,7 @@ public:
|
||||
const AirportSpec *as = AirportSpec::Get(i);
|
||||
if (!as->enabled) continue;
|
||||
|
||||
size->width = max(size->width, GetStringBoundingBox(as->name).width);
|
||||
size->width = std::max(size->width, GetStringBoundingBox(as->name).width);
|
||||
}
|
||||
|
||||
this->line_height = FONT_HEIGHT_NORMAL + WD_MATRIX_TOP + WD_MATRIX_BOTTOM;
|
||||
|
@@ -21,6 +21,8 @@
|
||||
#include "vehiclelist.h"
|
||||
#include "road.h"
|
||||
#include "ai/ai.hpp"
|
||||
#include "news_func.h"
|
||||
#include "strings_func.h"
|
||||
|
||||
#include "table/strings.h"
|
||||
|
||||
@@ -116,7 +118,7 @@ void CheckCargoCapacity(Vehicle *v)
|
||||
assert(dest->cargo.TotalCount() == dest->cargo.ActionCount(VehicleCargoList::MTA_KEEP));
|
||||
if (dest->cargo.TotalCount() >= dest->cargo_cap || dest->cargo_type != src->cargo_type) continue;
|
||||
|
||||
uint amount = min(to_spread, dest->cargo_cap - dest->cargo.TotalCount());
|
||||
uint amount = std::min(to_spread, dest->cargo_cap - dest->cargo.TotalCount());
|
||||
src->cargo.Shift(amount, &dest->cargo);
|
||||
to_spread -= amount;
|
||||
}
|
||||
@@ -158,7 +160,7 @@ static void TransferCargo(Vehicle *old_veh, Vehicle *new_head, bool part_of_chai
|
||||
}
|
||||
if (dest->cargo_type != src->cargo_type) continue;
|
||||
|
||||
uint amount = min(src->cargo.TotalCount(), dest->cargo_cap - dest->cargo.TotalCount());
|
||||
uint amount = std::min(src->cargo.TotalCount(), dest->cargo_cap - dest->cargo.TotalCount());
|
||||
if (amount <= 0) continue;
|
||||
|
||||
src->cargo.Shift(amount, &dest->cargo);
|
||||
@@ -192,6 +194,29 @@ static bool VerifyAutoreplaceRefitForOrders(const Vehicle *v, EngineID engine_ty
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the index of the first refit order that is incompatible with the requested engine type
|
||||
* @param v The vehicle to be replaced
|
||||
* @param engine_type The type we want to replace with
|
||||
* @return index of the incompatible order or -1 if none were found
|
||||
*/
|
||||
static int GetIncompatibleRefitOrderIdForAutoreplace(const Vehicle *v, EngineID engine_type)
|
||||
{
|
||||
CargoTypes union_refit_mask = GetUnionOfArticulatedRefitMasks(engine_type, false);
|
||||
|
||||
const Order *o;
|
||||
const Vehicle *u = (v->type == VEH_TRAIN) ? v->First() : v;
|
||||
|
||||
const OrderList *orders = u->orders.list;
|
||||
for (VehicleOrderID i = 0; i < orders->GetNumOrders(); i++) {
|
||||
o = orders->GetOrderAt(i);
|
||||
if (!o->IsRefit()) continue;
|
||||
if (!HasBit(union_refit_mask, o->GetRefitCargo())) return i;
|
||||
}
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
/**
|
||||
* Function to find what type of cargo to refit to when autoreplacing
|
||||
* @param *v Original vehicle that is being replaced.
|
||||
@@ -298,7 +323,23 @@ static CommandCost BuildReplacementVehicle(Vehicle *old_veh, Vehicle **new_vehic
|
||||
|
||||
/* Does it need to be refitted */
|
||||
CargoID refit_cargo = GetNewCargoTypeForReplace(old_veh, e, part_of_chain);
|
||||
if (refit_cargo == CT_INVALID) return CommandCost(); // incompatible cargoes
|
||||
if (refit_cargo == CT_INVALID) {
|
||||
SetDParam(0, old_veh->index);
|
||||
|
||||
int order_id = GetIncompatibleRefitOrderIdForAutoreplace(old_veh, e);
|
||||
if (order_id != -1) {
|
||||
/* Orders contained a refit order that is incompatible with the new vehicle. */
|
||||
SetDParam(1, STR_ERROR_AUTOREPLACE_INCOMPATIBLE_REFIT);
|
||||
SetDParam(2, order_id + 1); // 1-based indexing for display
|
||||
} else {
|
||||
/* Current cargo is incompatible with the new vehicle. */
|
||||
SetDParam(1, STR_ERROR_AUTOREPLACE_INCOMPATIBLE_CARGO);
|
||||
SetDParam(2, CargoSpec::Get(old_veh->cargo_type)->name);
|
||||
}
|
||||
|
||||
AddVehicleAdviceNewsItem(STR_NEWS_VEHICLE_AUTORENEW_FAILED, old_veh->index);
|
||||
return CommandCost();
|
||||
}
|
||||
|
||||
/* Build the new vehicle */
|
||||
cost = DoCommand(old_veh->tile, e | (CT_INVALID << 24), 0, DC_EXEC | DC_AUTOREPLACE, GetCmdBuildVeh(old_veh));
|
||||
|
@@ -416,8 +416,8 @@ public:
|
||||
case WID_RV_LEFT_MATRIX:
|
||||
case WID_RV_RIGHT_MATRIX: {
|
||||
int side = (widget == WID_RV_LEFT_MATRIX) ? 0 : 1;
|
||||
EngineID start = this->vscroll[side]->GetPosition(); // what is the offset for the start (scrolling)
|
||||
EngineID end = min(this->vscroll[side]->GetCapacity() + start, (uint)this->engines[side].size());
|
||||
EngineID start = static_cast<EngineID>(this->vscroll[side]->GetPosition()); // what is the offset for the start (scrolling)
|
||||
EngineID end = static_cast<EngineID>(std::min<size_t>(this->vscroll[side]->GetCapacity() + start, this->engines[side].size()));
|
||||
|
||||
/* Do the actual drawing */
|
||||
DrawEngineList((VehicleType)this->window_number, r.left + WD_FRAMERECT_LEFT, r.right - WD_FRAMERECT_RIGHT, r.top + WD_FRAMERECT_TOP,
|
||||
@@ -475,7 +475,7 @@ public:
|
||||
NWidgetBase *nwi = this->GetWidget<NWidgetBase>(side == 0 ? WID_RV_LEFT_DETAILS : WID_RV_RIGHT_DETAILS);
|
||||
int text_end = DrawVehiclePurchaseInfo(nwi->pos_x + WD_FRAMETEXT_LEFT, nwi->pos_x + nwi->current_x - WD_FRAMETEXT_RIGHT,
|
||||
nwi->pos_y + WD_FRAMERECT_TOP, this->sel_engine[side], ted);
|
||||
needed_height = max(needed_height, text_end - (int)nwi->pos_y + WD_FRAMERECT_BOTTOM);
|
||||
needed_height = std::max(needed_height, text_end - (int)nwi->pos_y + WD_FRAMERECT_BOTTOM);
|
||||
}
|
||||
}
|
||||
if (needed_height != this->details_height) { // Details window are not high enough, enlarge them.
|
||||
|
@@ -84,7 +84,7 @@ inline void Blitter_32bppAnim::Draw(const Blitter::BlitterParams *bp, ZoomLevel
|
||||
dst = dst_end - skip_left;
|
||||
dst_end = dst + width;
|
||||
|
||||
n = min<uint>(n - d, (uint)width);
|
||||
n = std::min<uint>(n - d, (uint)width);
|
||||
goto draw;
|
||||
}
|
||||
dst += n;
|
||||
@@ -103,7 +103,7 @@ inline void Blitter_32bppAnim::Draw(const Blitter::BlitterParams *bp, ZoomLevel
|
||||
if (fast_path) {
|
||||
n = *src_n++;
|
||||
} else {
|
||||
n = min<uint>(*src_n++, (uint)(dst_end - dst));
|
||||
n = std::min<uint>(*src_n++, (uint)(dst_end - dst));
|
||||
}
|
||||
|
||||
if (src_px->a == 0) {
|
||||
|
@@ -58,7 +58,7 @@ void Blitter_32bppSSE2_Anim::PaletteAnimate(const Palette &palette)
|
||||
if (unlikely(x < 8 || colour_cmp_result != 0xFFFF ||
|
||||
_mm_movemask_epi8(_mm_cmpeq_epi16(_mm_srli_epi16(data, 8), brightness_cmp)) != 0xFFFF)) {
|
||||
/* slow path: < 8 pixels left or unexpected brightnesses */
|
||||
for (int z = min<int>(x, 8); z != 0 ; z--) {
|
||||
for (int z = std::min<int>(x, 8); z != 0 ; z--) {
|
||||
int value = _mm_extract_epi16(data, 0);
|
||||
uint8 colour = GB(value, 0, 8);
|
||||
if (colour >= PALETTE_ANIM_START) {
|
||||
|
@@ -199,9 +199,9 @@ Colour Blitter_32bppBase::ReallyAdjustBrightness(Colour colour, uint8 brightness
|
||||
/* Reduce overbright strength */
|
||||
ob /= 2;
|
||||
return Colour(
|
||||
r >= 255 ? 255 : min(r + ob * (255 - r) / 256, 255),
|
||||
g >= 255 ? 255 : min(g + ob * (255 - g) / 256, 255),
|
||||
b >= 255 ? 255 : min(b + ob * (255 - b) / 256, 255),
|
||||
r >= 255 ? 255 : std::min(r + ob * (255 - r) / 256, 255),
|
||||
g >= 255 ? 255 : std::min(g + ob * (255 - g) / 256, 255),
|
||||
b >= 255 ? 255 : std::min(b + ob * (255 - b) / 256, 255),
|
||||
colour.a);
|
||||
}
|
||||
|
||||
|
@@ -83,7 +83,7 @@ inline void Blitter_32bppOptimized::Draw(const Blitter::BlitterParams *bp, ZoomL
|
||||
dst = dst_end - bp->skip_left;
|
||||
dst_end = dst + bp->width;
|
||||
|
||||
n = min<uint>(n - d, (uint)bp->width);
|
||||
n = std::min(n - d, (uint)bp->width);
|
||||
goto draw;
|
||||
}
|
||||
dst += n;
|
||||
@@ -98,7 +98,7 @@ inline void Blitter_32bppOptimized::Draw(const Blitter::BlitterParams *bp, ZoomL
|
||||
dst_end += bp->width;
|
||||
|
||||
while (dst < dst_end) {
|
||||
n = min<uint>(*src_n++, (uint)(dst_end - dst));
|
||||
n = std::min<uint>(*src_n++, dst_end - dst);
|
||||
|
||||
if (src_px->a == 0) {
|
||||
dst += n;
|
||||
@@ -278,7 +278,7 @@ Sprite *Blitter_32bppOptimized::Encode(const SpriteLoader::Sprite *sprite, Alloc
|
||||
zoom_max = ZOOM_LVL_NORMAL;
|
||||
} else {
|
||||
zoom_min = _settings_client.gui.zoom_min;
|
||||
zoom_max = (ZoomLevel) min(_settings_client.gui.zoom_max, ZOOM_LVL_DRAW_SPR);
|
||||
zoom_max = (ZoomLevel) std::min(_settings_client.gui.zoom_max, ZOOM_LVL_DRAW_SPR);
|
||||
if (zoom_max == zoom_min) zoom_max = ZOOM_LVL_DRAW_SPR;
|
||||
}
|
||||
|
||||
@@ -330,7 +330,7 @@ Sprite *Blitter_32bppOptimized::Encode(const SpriteLoader::Sprite *sprite, Alloc
|
||||
if (src->m >= PALETTE_ANIM_START) flags &= ~SF_NO_ANIM;
|
||||
|
||||
/* Get brightest value */
|
||||
uint8 rgb_max = max(src->r, max(src->g, src->b));
|
||||
uint8 rgb_max = std::max({src->r, src->g, src->b});
|
||||
|
||||
/* Black pixel (8bpp or old 32bpp image), so use default value */
|
||||
if (rgb_max == 0) rgb_max = DEFAULT_BRIGHTNESS;
|
||||
|
@@ -132,7 +132,7 @@ Sprite *Blitter_32bppSimple::Encode(const SpriteLoader::Sprite *sprite, Allocato
|
||||
dst[i].v = 0;
|
||||
} else {
|
||||
/* Get brightest value */
|
||||
uint8 rgb_max = max(src->r, max(src->g, src->b));
|
||||
uint8 rgb_max = std::max({src->r, src->g, src->b});
|
||||
|
||||
/* Black pixel (8bpp or old 32bpp image), so use default value */
|
||||
if (rgb_max == 0) rgb_max = DEFAULT_BRIGHTNESS;
|
||||
|
@@ -80,7 +80,7 @@ Sprite *Blitter_32bppSSE_Base::Encode(const SpriteLoader::Sprite *sprite, Alloca
|
||||
if (src->m >= PALETTE_ANIM_START) has_anim = true;
|
||||
|
||||
/* Get brightest value (or default brightness if it's a black pixel). */
|
||||
const uint8 rgb_max = max(src->r, max(src->g, src->b));
|
||||
const uint8 rgb_max = std::max({src->r, src->g, src->b});
|
||||
dst_mv->v = (rgb_max == 0) ? Blitter_32bppBase::DEFAULT_BRIGHTNESS : rgb_max;
|
||||
|
||||
/* Pre-convert the mapping channel to a RGB value. */
|
||||
|
@@ -80,7 +80,7 @@ void Blitter_8bppOptimized::Draw(Blitter::BlitterParams *bp, BlitterMode mode, Z
|
||||
dst += trans;
|
||||
width -= trans;
|
||||
if (width <= 0 || pixels == 0) continue;
|
||||
pixels = min<uint>(pixels, (uint)width);
|
||||
pixels = std::min<uint>(pixels, width);
|
||||
width -= pixels;
|
||||
|
||||
switch (mode) {
|
||||
@@ -132,7 +132,7 @@ Sprite *Blitter_8bppOptimized::Encode(const SpriteLoader::Sprite *sprite, Alloca
|
||||
zoom_max = ZOOM_LVL_NORMAL;
|
||||
} else {
|
||||
zoom_min = _settings_client.gui.zoom_min;
|
||||
zoom_max = (ZoomLevel) min(_settings_client.gui.zoom_max, ZOOM_LVL_DRAW_SPR);
|
||||
zoom_max = (ZoomLevel) std::min(_settings_client.gui.zoom_max, ZOOM_LVL_DRAW_SPR);
|
||||
if (zoom_max == zoom_min) zoom_max = ZOOM_LVL_DRAW_SPR;
|
||||
}
|
||||
|
||||
|
@@ -45,7 +45,7 @@ void Blitter::DrawLineGeneric(int x, int y, int x2, int y2, int screen_width, in
|
||||
return;
|
||||
}
|
||||
|
||||
int frac_diff = width * max(dx, dy);
|
||||
int frac_diff = width * std::max(dx, dy);
|
||||
if (width > 1) {
|
||||
/* compute frac_diff = width * sqrt(dx*dx + dy*dy)
|
||||
* Start interval:
|
||||
|
@@ -200,7 +200,7 @@ public:
|
||||
}
|
||||
sprite_dim.height++; // Sprite is rendered one pixel down in the matrix field.
|
||||
text_dim.height++; // Allowing the bottom row pixels to be rendered on the edge of the matrix field.
|
||||
resize->height = max(sprite_dim.height, text_dim.height) + 2; // Max of both sizes + account for matrix edges.
|
||||
resize->height = std::max(sprite_dim.height, text_dim.height) + 2; // Max of both sizes + account for matrix edges.
|
||||
|
||||
this->bridgetext_offset = WD_MATRIX_LEFT + sprite_dim.width + 1; // Left edge of text, 1 pixel distance from the sprite.
|
||||
size->width = this->bridgetext_offset + text_dim.width + WD_MATRIX_RIGHT;
|
||||
|
@@ -46,7 +46,7 @@
|
||||
*/
|
||||
uint GetEngineListHeight(VehicleType type)
|
||||
{
|
||||
return max<uint>(FONT_HEIGHT_NORMAL + WD_MATRIX_TOP + WD_MATRIX_BOTTOM, GetVehicleImageCellSize(type, EIT_PURCHASE).height);
|
||||
return std::max<uint>(FONT_HEIGHT_NORMAL + WD_MATRIX_TOP + WD_MATRIX_BOTTOM, GetVehicleImageCellSize(type, EIT_PURCHASE).height);
|
||||
}
|
||||
|
||||
static const NWidgetPart _nested_build_vehicle_widgets[] = {
|
||||
@@ -1581,7 +1581,7 @@ struct BuildVehicleWindow : Window {
|
||||
case WID_BV_LIST:
|
||||
resize->height = GetEngineListHeight(this->vehicle_type);
|
||||
size->height = 3 * resize->height;
|
||||
size->width = max(size->width, GetVehicleImageCellSize(this->vehicle_type, EIT_PURCHASE).extend_left + GetVehicleImageCellSize(this->vehicle_type, EIT_PURCHASE).extend_right + 165);
|
||||
size->width = std::max(size->width, GetVehicleImageCellSize(this->vehicle_type, EIT_PURCHASE).extend_left + GetVehicleImageCellSize(this->vehicle_type, EIT_PURCHASE).extend_right + 165);
|
||||
break;
|
||||
|
||||
case WID_BV_PANEL:
|
||||
@@ -1616,7 +1616,18 @@ struct BuildVehicleWindow : Window {
|
||||
{
|
||||
switch (widget) {
|
||||
case WID_BV_LIST:
|
||||
DrawEngineList(this->vehicle_type, r.left + WD_FRAMERECT_LEFT, r.right - WD_FRAMERECT_RIGHT, r.top + WD_FRAMERECT_TOP, &this->eng_list, this->vscroll->GetPosition(), min(this->vscroll->GetPosition() + this->vscroll->GetCapacity(), (uint)this->eng_list.size()), this->sel_engine, false, DEFAULT_GROUP);
|
||||
DrawEngineList(
|
||||
this->vehicle_type,
|
||||
r.left + WD_FRAMERECT_LEFT,
|
||||
r.right - WD_FRAMERECT_RIGHT,
|
||||
r.top + WD_FRAMERECT_TOP,
|
||||
&this->eng_list,
|
||||
this->vscroll->GetPosition(),
|
||||
static_cast<uint16>(std::min<size_t>(this->vscroll->GetPosition() + this->vscroll->GetCapacity(), this->eng_list.size())),
|
||||
this->sel_engine,
|
||||
false,
|
||||
DEFAULT_GROUP
|
||||
);
|
||||
break;
|
||||
|
||||
case WID_BV_SORT_ASCENDING_DESCENDING:
|
||||
@@ -1644,7 +1655,7 @@ struct BuildVehicleWindow : Window {
|
||||
NWidgetBase *nwi = this->GetWidget<NWidgetBase>(WID_BV_PANEL);
|
||||
int text_end = DrawVehiclePurchaseInfo(nwi->pos_x + WD_FRAMETEXT_LEFT, nwi->pos_x + nwi->current_x - WD_FRAMETEXT_RIGHT,
|
||||
nwi->pos_y + WD_FRAMERECT_TOP, this->sel_engine, this->te);
|
||||
needed_height = max(needed_height, text_end - (int)nwi->pos_y + WD_FRAMERECT_BOTTOM);
|
||||
needed_height = std::max(needed_height, text_end - (int)nwi->pos_y + WD_FRAMERECT_BOTTOM);
|
||||
}
|
||||
if (needed_height != this->details_height) { // Details window are not high enough, enlarge them.
|
||||
int resize = needed_height - this->details_height;
|
||||
|
@@ -742,7 +742,7 @@ uint VehicleCargoList::Reassign(uint max_move, TileOrStationID)
|
||||
{
|
||||
static_assert(Tfrom != MTA_TRANSFER && Tto != MTA_TRANSFER);
|
||||
static_assert(Tfrom - Tto == 1 || Tto - Tfrom == 1);
|
||||
max_move = min(this->action_counts[Tfrom], max_move);
|
||||
max_move = std::min(this->action_counts[Tfrom], max_move);
|
||||
this->action_counts[Tfrom] -= max_move;
|
||||
this->action_counts[Tto] += max_move;
|
||||
return max_move;
|
||||
@@ -758,7 +758,7 @@ uint VehicleCargoList::Reassign(uint max_move, TileOrStationID)
|
||||
template<>
|
||||
uint VehicleCargoList::Reassign<VehicleCargoList::MTA_DELIVER, VehicleCargoList::MTA_TRANSFER>(uint max_move, TileOrStationID next_station)
|
||||
{
|
||||
max_move = min(this->action_counts[MTA_DELIVER], max_move);
|
||||
max_move = std::min(this->action_counts[MTA_DELIVER], max_move);
|
||||
|
||||
uint sum = 0;
|
||||
for (Iterator it(this->packets.begin()); sum < this->action_counts[MTA_TRANSFER] + max_move;) {
|
||||
@@ -791,7 +791,7 @@ uint VehicleCargoList::Reassign<VehicleCargoList::MTA_DELIVER, VehicleCargoList:
|
||||
*/
|
||||
uint VehicleCargoList::Return(uint max_move, StationCargoList *dest, StationID next)
|
||||
{
|
||||
max_move = min(this->action_counts[MTA_LOAD], max_move);
|
||||
max_move = std::min(this->action_counts[MTA_LOAD], max_move);
|
||||
this->PopCargo(CargoReturn(this, dest, max_move, next));
|
||||
return max_move;
|
||||
}
|
||||
@@ -804,7 +804,7 @@ uint VehicleCargoList::Return(uint max_move, StationCargoList *dest, StationID n
|
||||
*/
|
||||
uint VehicleCargoList::Shift(uint max_move, VehicleCargoList *dest)
|
||||
{
|
||||
max_move = min(this->count, max_move);
|
||||
max_move = std::min(this->count, max_move);
|
||||
this->PopCargo(CargoShift(this, dest, max_move));
|
||||
return max_move;
|
||||
}
|
||||
@@ -821,12 +821,12 @@ uint VehicleCargoList::Unload(uint max_move, StationCargoList *dest, CargoPaymen
|
||||
{
|
||||
uint moved = 0;
|
||||
if (this->action_counts[MTA_TRANSFER] > 0) {
|
||||
uint move = min(this->action_counts[MTA_TRANSFER], max_move);
|
||||
uint move = std::min(this->action_counts[MTA_TRANSFER], max_move);
|
||||
this->ShiftCargo(CargoTransfer(this, dest, move));
|
||||
moved += move;
|
||||
}
|
||||
if (this->action_counts[MTA_TRANSFER] == 0 && this->action_counts[MTA_DELIVER] > 0 && moved < max_move) {
|
||||
uint move = min(this->action_counts[MTA_DELIVER], max_move - moved);
|
||||
uint move = std::min(this->action_counts[MTA_DELIVER], max_move - moved);
|
||||
this->ShiftCargo(CargoDelivery(this, move, payment));
|
||||
moved += move;
|
||||
}
|
||||
@@ -841,7 +841,7 @@ uint VehicleCargoList::Unload(uint max_move, StationCargoList *dest, CargoPaymen
|
||||
*/
|
||||
uint VehicleCargoList::Truncate(uint max_move)
|
||||
{
|
||||
max_move = min(this->count, max_move);
|
||||
max_move = std::min(this->count, max_move);
|
||||
if (max_move > this->ActionCount(MTA_KEEP)) this->KeepAll();
|
||||
this->PopCargo(CargoRemoval<VehicleCargoList>(this, max_move));
|
||||
return max_move;
|
||||
@@ -857,7 +857,7 @@ uint VehicleCargoList::Truncate(uint max_move)
|
||||
*/
|
||||
uint VehicleCargoList::Reroute(uint max_move, VehicleCargoList *dest, StationID avoid, StationID avoid2, const GoodsEntry *ge)
|
||||
{
|
||||
max_move = min(this->action_counts[MTA_TRANSFER], max_move);
|
||||
max_move = std::min(this->action_counts[MTA_TRANSFER], max_move);
|
||||
this->ShiftCargoWithFrontInsert(VehicleCargoReroute(this, dest, max_move, avoid, avoid2, ge));
|
||||
return max_move;
|
||||
}
|
||||
@@ -965,7 +965,7 @@ uint StationCargoList::AvailableViaCount(StationID next) const
|
||||
*/
|
||||
uint StationCargoList::Truncate(uint max_move, StationCargoAmountMap *cargo_per_source)
|
||||
{
|
||||
max_move = min(max_move, this->count);
|
||||
max_move = std::min(max_move, this->count);
|
||||
uint prev_count = this->count;
|
||||
uint moved = 0;
|
||||
uint loop = 0;
|
||||
@@ -1036,7 +1036,7 @@ uint StationCargoList::Reserve(uint max_move, VehicleCargoList *dest, TileIndex
|
||||
*/
|
||||
uint StationCargoList::Load(uint max_move, VehicleCargoList *dest, TileIndex load_place, StationIDStack next_station)
|
||||
{
|
||||
uint move = min(dest->ActionCount(VehicleCargoList::MTA_LOAD), max_move);
|
||||
uint move = std::min(dest->ActionCount(VehicleCargoList::MTA_LOAD), max_move);
|
||||
if (move > 0) {
|
||||
this->reserved_count -= move;
|
||||
dest->Reassign<VehicleCargoList::MTA_LOAD, VehicleCargoList::MTA_KEEP>(move);
|
||||
|
@@ -12,7 +12,6 @@
|
||||
#include "newgrf_cargo.h"
|
||||
#include "string_func.h"
|
||||
#include "strings_func.h"
|
||||
#include <algorithm>
|
||||
|
||||
#include "table/sprites.h"
|
||||
#include "table/strings.h"
|
||||
|
@@ -216,12 +216,14 @@ static const NWidgetPart _nested_cheat_widgets[] = {
|
||||
NWidget(WWT_STICKYBOX, COLOUR_GREY),
|
||||
EndContainer(),
|
||||
NWidget(WWT_PANEL, COLOUR_GREY, WID_C_PANEL), SetDataTip(0x0, STR_CHEATS_TOOLTIP), EndContainer(),
|
||||
NWidget(WWT_PANEL, COLOUR_GREY),
|
||||
NWidget(WWT_LABEL, COLOUR_GREY, WID_C_NOTE), SetFill(1, 1), SetDataTip(STR_CHEATS_NOTE, STR_NULL), SetPadding(WD_PAR_VSEP_NORMAL, 4, WD_PAR_VSEP_NORMAL, 4),
|
||||
EndContainer(),
|
||||
};
|
||||
|
||||
/** GUI for the cheats. */
|
||||
struct CheatWindow : Window {
|
||||
int clicked;
|
||||
int header_height;
|
||||
int clicked_widget;
|
||||
uint line_height;
|
||||
int box_width;
|
||||
@@ -236,8 +238,7 @@ struct CheatWindow : Window {
|
||||
{
|
||||
if (widget != WID_C_PANEL) return;
|
||||
|
||||
int y = r.top + WD_FRAMERECT_TOP + this->header_height;
|
||||
DrawStringMultiLine(r.left + WD_FRAMERECT_LEFT, r.right - WD_FRAMERECT_LEFT, r.top + WD_FRAMERECT_TOP, y, STR_CHEATS_WARNING, TC_FROMSTRING, SA_CENTER);
|
||||
int y = r.top + WD_FRAMERECT_TOP + WD_PAR_VSEP_NORMAL;
|
||||
|
||||
bool rtl = _current_text_dir == TD_RTL;
|
||||
uint box_left = rtl ? r.right - this->box_width - 5 : r.left + 5;
|
||||
@@ -324,9 +325,9 @@ struct CheatWindow : Window {
|
||||
|
||||
case SLE_BOOL:
|
||||
SetDParam(0, STR_CONFIG_SETTING_ON);
|
||||
width = max(width, GetStringBoundingBox(ce->str).width);
|
||||
width = std::max(width, GetStringBoundingBox(ce->str).width);
|
||||
SetDParam(0, STR_CONFIG_SETTING_OFF);
|
||||
width = max(width, GetStringBoundingBox(ce->str).width);
|
||||
width = std::max(width, GetStringBoundingBox(ce->str).width);
|
||||
break;
|
||||
|
||||
default:
|
||||
@@ -334,37 +335,36 @@ struct CheatWindow : Window {
|
||||
/* Display date for change date cheat */
|
||||
case STR_CHEAT_CHANGE_DATE:
|
||||
SetDParam(0, ConvertYMDToDate(MAX_YEAR, 11, 31));
|
||||
width = max(width, GetStringBoundingBox(ce->str).width);
|
||||
width = std::max(width, GetStringBoundingBox(ce->str).width);
|
||||
break;
|
||||
|
||||
/* Draw coloured flag for change company cheat */
|
||||
case STR_CHEAT_CHANGE_COMPANY:
|
||||
SetDParamMaxValue(0, MAX_COMPANIES);
|
||||
width = max(width, GetStringBoundingBox(ce->str).width + 10 + 10);
|
||||
width = std::max(width, GetStringBoundingBox(ce->str).width + 10 + 10);
|
||||
break;
|
||||
|
||||
default:
|
||||
SetDParam(0, INT64_MAX);
|
||||
width = max(width, GetStringBoundingBox(ce->str).width);
|
||||
width = std::max(width, GetStringBoundingBox(ce->str).width);
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
this->line_height = max(GetSpriteSize(SPR_BOX_CHECKED).height, GetSpriteSize(SPR_BOX_EMPTY).height);
|
||||
this->line_height = max<uint>(this->line_height, SETTING_BUTTON_HEIGHT);
|
||||
this->line_height = max<uint>(this->line_height, FONT_HEIGHT_NORMAL) + WD_PAR_VSEP_NORMAL;
|
||||
this->line_height = std::max(GetSpriteSize(SPR_BOX_CHECKED).height, GetSpriteSize(SPR_BOX_EMPTY).height);
|
||||
this->line_height = std::max<uint>(this->line_height, SETTING_BUTTON_HEIGHT);
|
||||
this->line_height = std::max<uint>(this->line_height, FONT_HEIGHT_NORMAL) + WD_PAR_VSEP_NORMAL;
|
||||
|
||||
size->width = width + 20 + this->box_width + SETTING_BUTTON_WIDTH /* stuff on the left */ + 10 /* extra spacing on right */;
|
||||
this->header_height = GetStringHeight(STR_CHEATS_WARNING, size->width - WD_FRAMERECT_LEFT - WD_FRAMERECT_RIGHT) + WD_PAR_VSEP_WIDE;
|
||||
size->height = this->header_height + WD_FRAMERECT_TOP + WD_PAR_VSEP_NORMAL + WD_FRAMERECT_BOTTOM + this->line_height * lines;
|
||||
size->height = WD_FRAMERECT_TOP + WD_PAR_VSEP_NORMAL + WD_FRAMERECT_BOTTOM + this->line_height * lines;
|
||||
}
|
||||
|
||||
void OnClick(Point pt, int widget, int click_count) override
|
||||
{
|
||||
const NWidgetBase *wid = this->GetWidget<NWidgetBase>(WID_C_PANEL);
|
||||
uint btn = (pt.y - wid->pos_y - WD_FRAMERECT_TOP - this->header_height) / this->line_height;
|
||||
uint btn = (pt.y - wid->pos_y - WD_FRAMERECT_TOP - WD_PAR_VSEP_NORMAL) / this->line_height;
|
||||
int x = pt.x - wid->pos_x;
|
||||
bool rtl = _current_text_dir == TD_RTL;
|
||||
if (rtl) x = wid->current_x - x;
|
||||
|
@@ -218,7 +218,7 @@ static void TileLoopClearAlps(TileIndex tile)
|
||||
}
|
||||
/* Update snow density. */
|
||||
uint current_density = GetClearDensity(tile);
|
||||
uint req_density = (k < 0) ? 0u : min((uint)k, 3);
|
||||
uint req_density = (k < 0) ? 0u : std::min<uint>(k, 3u);
|
||||
|
||||
if (current_density < req_density) {
|
||||
AddClearDensity(tile, 1);
|
||||
|
@@ -600,12 +600,12 @@ static void DumpSubCommandLog(char *&buffer, const char *last, const CommandLog
|
||||
|
||||
char *DumpCommandLog(char *buffer, const char *last)
|
||||
{
|
||||
const unsigned int count = min<unsigned int>(_command_log.count, 128);
|
||||
const unsigned int count = std::min<unsigned int>(_command_log.count, 128);
|
||||
buffer += seprintf(buffer, last, "Command Log:\n Showing most recent %u of %u commands\n", count, _command_log.count);
|
||||
DumpSubCommandLog(buffer, last, _command_log, count);
|
||||
|
||||
if (_command_log_aux.count > 0) {
|
||||
const unsigned int aux_count = min<unsigned int>(_command_log_aux.count, 32);
|
||||
const unsigned int aux_count = std::min<unsigned int>(_command_log_aux.count, 32);
|
||||
buffer += seprintf(buffer, last, "\n Showing most recent %u of %u commands (aux log)\n", aux_count, _command_log_aux.count);
|
||||
DumpSubCommandLog(buffer, last, _command_log_aux, aux_count);
|
||||
}
|
||||
|
@@ -278,11 +278,11 @@ void SubtractMoneyFromCompanyFract(CompanyID company, const CommandCost &cst)
|
||||
void UpdateLandscapingLimits()
|
||||
{
|
||||
for (Company *c : Company::Iterate()) {
|
||||
c->terraform_limit = min(c->terraform_limit + _settings_game.construction.terraform_per_64k_frames, (uint32)_settings_game.construction.terraform_frame_burst << 16);
|
||||
c->clear_limit = min(c->clear_limit + _settings_game.construction.clear_per_64k_frames, (uint32)_settings_game.construction.clear_frame_burst << 16);
|
||||
c->tree_limit = min(c->tree_limit + _settings_game.construction.tree_per_64k_frames, (uint32)_settings_game.construction.tree_frame_burst << 16);
|
||||
c->purchase_land_limit = min(c->purchase_land_limit + _settings_game.construction.purchase_land_per_64k_frames, (uint32)_settings_game.construction.purchase_land_frame_burst << 16);
|
||||
c->build_object_limit = min(c->build_object_limit + _settings_game.construction.build_object_per_64k_frames, (uint32)_settings_game.construction.build_object_frame_burst << 16);
|
||||
c->terraform_limit = std::min(c->terraform_limit + _settings_game.construction.terraform_per_64k_frames, (uint32)_settings_game.construction.terraform_frame_burst << 16);
|
||||
c->clear_limit = std::min(c->clear_limit + _settings_game.construction.clear_per_64k_frames, (uint32)_settings_game.construction.clear_frame_burst << 16);
|
||||
c->tree_limit = std::min(c->tree_limit + _settings_game.construction.tree_per_64k_frames, (uint32)_settings_game.construction.tree_frame_burst << 16);
|
||||
c->purchase_land_limit = std::min(c->purchase_land_limit + _settings_game.construction.purchase_land_per_64k_frames, (uint32)_settings_game.construction.purchase_land_frame_burst << 16);
|
||||
c->build_object_limit = std::min(c->build_object_limit + _settings_game.construction.build_object_per_64k_frames, (uint32)_settings_game.construction.build_object_frame_burst << 16);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -571,7 +571,7 @@ Company *DoStartupNewCompany(DoStartupNewCompanyFlag flags, CompanyID company)
|
||||
ResetCompanyLivery(c);
|
||||
_company_colours[c->index] = (Colours)c->colour;
|
||||
|
||||
c->money = c->current_loan = (min(INITIAL_LOAN, _economy.max_loan) * _economy.inflation_prices >> 16) / 50000 * 50000;
|
||||
c->money = c->current_loan = (std::min<int64>(INITIAL_LOAN, _economy.max_loan) * _economy.inflation_prices >> 16) / 50000 * 50000;
|
||||
|
||||
c->share_owners[0] = c->share_owners[1] = c->share_owners[2] = c->share_owners[3] = INVALID_OWNER;
|
||||
|
||||
@@ -727,7 +727,7 @@ void OnTick_Companies()
|
||||
|
||||
if (_next_competitor_start == 0) {
|
||||
/* AI::GetStartNextTime() can return 0. */
|
||||
_next_competitor_start = max(1, AI::GetStartNextTime() * DAY_TICKS);
|
||||
_next_competitor_start = std::max(1, AI::GetStartNextTime() * DAY_TICKS);
|
||||
}
|
||||
|
||||
if (_game_mode != GM_MENU && AI::CanStartNew() && --_next_competitor_start == 0) {
|
||||
|
@@ -116,11 +116,11 @@ struct ExpensesList {
|
||||
ExpensesType et = this->et[i];
|
||||
if (et == INVALID_EXPENSES) {
|
||||
if (!invalid_expenses_measured) {
|
||||
width = max(width, GetStringBoundingBox(STR_FINANCES_TOTAL_CAPTION).width);
|
||||
width = std::max(width, GetStringBoundingBox(STR_FINANCES_TOTAL_CAPTION).width);
|
||||
invalid_expenses_measured = true;
|
||||
}
|
||||
} else {
|
||||
width = max(width, GetStringBoundingBox(STR_FINANCES_SECTION_CONSTRUCTION + et).width);
|
||||
width = std::max(width, GetStringBoundingBox(STR_FINANCES_SECTION_CONSTRUCTION + et).width);
|
||||
}
|
||||
}
|
||||
return width;
|
||||
@@ -281,7 +281,7 @@ struct CompanyFinancesWindow : Window {
|
||||
CompanyFinancesWindow(WindowDesc *desc, CompanyID company) : Window(desc)
|
||||
{
|
||||
const Company *c = Company::Get(company);
|
||||
this->max_money = max<Money>(abs(c->money) * 2, INT32_MAX);
|
||||
this->max_money = std::max<Money>(abs(c->money) * 2, INT32_MAX);
|
||||
this->small = false;
|
||||
this->CreateNestedTree();
|
||||
this->SetupWidgets();
|
||||
@@ -328,7 +328,7 @@ struct CompanyFinancesWindow : Window {
|
||||
case WID_CF_LOAN_VALUE:
|
||||
case WID_CF_TOTAL_VALUE:
|
||||
SetDParamMaxValue(0, this->max_money);
|
||||
size->width = max(GetStringBoundingBox(STR_FINANCES_NEGATIVE_INCOME).width, GetStringBoundingBox(STR_FINANCES_POSITIVE_INCOME).width) + padding.width;
|
||||
size->width = std::max(GetStringBoundingBox(STR_FINANCES_NEGATIVE_INCOME).width, GetStringBoundingBox(STR_FINANCES_POSITIVE_INCOME).width) + padding.width;
|
||||
break;
|
||||
|
||||
case WID_CF_MAXLOAN_GAP:
|
||||
@@ -348,7 +348,7 @@ struct CompanyFinancesWindow : Window {
|
||||
case WID_CF_EXPS_PRICE2:
|
||||
case WID_CF_EXPS_PRICE3: {
|
||||
const Company *c = Company::Get((CompanyID)this->window_number);
|
||||
int age = min(_cur_year - c->inaugurated_year, 2);
|
||||
int age = std::min(_cur_year - c->inaugurated_year, 2);
|
||||
int wid_offset = widget - WID_CF_EXPS_PRICE1;
|
||||
if (wid_offset <= age) {
|
||||
DrawYearColumn(r, _cur_year - (age - wid_offset), c->yearly_expenses + (age - wid_offset));
|
||||
@@ -461,7 +461,7 @@ struct CompanyFinancesWindow : Window {
|
||||
{
|
||||
const Company *c = Company::Get((CompanyID)this->window_number);
|
||||
if (abs(c->money) > this->max_money) {
|
||||
this->max_money = max<Money>(abs(c->money) * 2, this->max_money * 4);
|
||||
this->max_money = std::max<Money>(abs(c->money) * 2, this->max_money * 4);
|
||||
this->SetupWidgets();
|
||||
this->ReInit();
|
||||
}
|
||||
@@ -529,7 +529,7 @@ public:
|
||||
|
||||
uint Height(uint width) const override
|
||||
{
|
||||
return max(FONT_HEIGHT_NORMAL, ScaleGUITrad(12) + 2);
|
||||
return std::max(FONT_HEIGHT_NORMAL, ScaleGUITrad(12) + 2);
|
||||
}
|
||||
|
||||
bool Selectable() const override
|
||||
@@ -742,7 +742,7 @@ public:
|
||||
/* Position scrollbar to selected group */
|
||||
for (uint i = 0; i < this->rows; i++) {
|
||||
if (this->groups[i]->index == sel) {
|
||||
this->vscroll->SetPosition(Clamp(i - this->vscroll->GetCapacity() / 2, 0, max(this->vscroll->GetCount() - this->vscroll->GetCapacity(), 0)));
|
||||
this->vscroll->SetPosition(Clamp(i - this->vscroll->GetCapacity() / 2, 0, std::max(this->vscroll->GetCount() - this->vscroll->GetCapacity(), 0)));
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -766,14 +766,14 @@ public:
|
||||
}
|
||||
}
|
||||
|
||||
size->width = max(size->width, 5 + d.width + WD_FRAMERECT_RIGHT);
|
||||
size->width = std::max(size->width, 5 + d.width + WD_FRAMERECT_RIGHT);
|
||||
break;
|
||||
}
|
||||
|
||||
case WID_SCL_MATRIX: {
|
||||
/* 11 items in the default rail class */
|
||||
this->square = GetSpriteSize(SPR_SQUARE);
|
||||
this->line_height = max(this->square.height, (uint)FONT_HEIGHT_NORMAL) + 4;
|
||||
this->line_height = std::max(this->square.height, (uint)FONT_HEIGHT_NORMAL) + 4;
|
||||
|
||||
size->height = 11 * this->line_height;
|
||||
resize->width = 1;
|
||||
@@ -792,9 +792,9 @@ public:
|
||||
this->square = GetSpriteSize(SPR_SQUARE);
|
||||
int padding = this->square.width + NWidgetScrollbar::GetVerticalDimension().width + 10;
|
||||
for (const StringID *id = _colour_dropdown; id != endof(_colour_dropdown); id++) {
|
||||
size->width = max(size->width, GetStringBoundingBox(*id).width + padding);
|
||||
size->width = std::max(size->width, GetStringBoundingBox(*id).width + padding);
|
||||
}
|
||||
size->width = max(size->width, GetStringBoundingBox(STR_COLOUR_DEFAULT).width + padding);
|
||||
size->width = std::max(size->width, GetStringBoundingBox(STR_COLOUR_DEFAULT).width + padding);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -909,7 +909,7 @@ public:
|
||||
}
|
||||
}
|
||||
} else {
|
||||
uint max = min(this->vscroll->GetPosition() + this->vscroll->GetCapacity(), (uint)this->groups.size());
|
||||
uint max = static_cast<uint>(std::min<size_t>(this->vscroll->GetPosition() + this->vscroll->GetCapacity(), this->groups.size()));
|
||||
for (uint i = this->vscroll->GetPosition(); i < max; ++i) {
|
||||
const Group *g = this->groups[i];
|
||||
SetDParam(0, g->index);
|
||||
@@ -1391,7 +1391,7 @@ public:
|
||||
number_dim.width += WD_FRAMERECT_LEFT + WD_FRAMERECT_RIGHT + arrows_width;
|
||||
number_dim.height += WD_FRAMERECT_TOP + WD_FRAMERECT_BOTTOM;
|
||||
/* Compute width of both buttons. */
|
||||
yesno_dim.width = max(yesno_dim.width, number_dim.width);
|
||||
yesno_dim.width = std::max(yesno_dim.width, number_dim.width);
|
||||
number_dim.width = yesno_dim.width - arrows_width;
|
||||
|
||||
this->yesno_dim = yesno_dim;
|
||||
@@ -1403,8 +1403,8 @@ public:
|
||||
switch (widget) {
|
||||
case WID_SCMF_FACE: {
|
||||
Dimension face_size = GetSpriteSize(SPR_GRADIENT);
|
||||
size->width = max(size->width, face_size.width);
|
||||
size->height = max(size->height, face_size.height);
|
||||
size->width = std::max(size->width, face_size.width);
|
||||
size->height = std::max(size->height, face_size.height);
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -1896,22 +1896,22 @@ struct CompanyInfrastructureWindow : Window
|
||||
case WID_CI_RAIL_DESC: {
|
||||
uint lines = 1; // Starts at 1 because a line is also required for the section title
|
||||
|
||||
size->width = max(size->width, GetStringBoundingBox(STR_COMPANY_INFRASTRUCTURE_VIEW_RAIL_SECT).width);
|
||||
size->width = std::max(size->width, GetStringBoundingBox(STR_COMPANY_INFRASTRUCTURE_VIEW_RAIL_SECT).width);
|
||||
|
||||
RailType rt;
|
||||
FOR_ALL_SORTED_RAILTYPES(rt) {
|
||||
if (HasBit(this->railtypes, rt)) {
|
||||
lines++;
|
||||
SetDParam(0, GetRailTypeInfo(rt)->strings.name);
|
||||
size->width = max(size->width, GetStringBoundingBox(STR_WHITE_STRING).width + WD_FRAMERECT_LEFT);
|
||||
size->width = std::max(size->width, GetStringBoundingBox(STR_WHITE_STRING).width + WD_FRAMERECT_LEFT);
|
||||
}
|
||||
}
|
||||
if (this->railtypes != RAILTYPES_NONE) {
|
||||
lines++;
|
||||
size->width = max(size->width, GetStringBoundingBox(STR_COMPANY_INFRASTRUCTURE_VIEW_SIGNALS).width + WD_FRAMERECT_LEFT);
|
||||
size->width = std::max(size->width, GetStringBoundingBox(STR_COMPANY_INFRASTRUCTURE_VIEW_SIGNALS).width + WD_FRAMERECT_LEFT);
|
||||
}
|
||||
|
||||
size->height = max(size->height, lines * FONT_HEIGHT_NORMAL);
|
||||
size->height = std::max(size->height, lines * FONT_HEIGHT_NORMAL);
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -1919,30 +1919,30 @@ struct CompanyInfrastructureWindow : Window
|
||||
case WID_CI_TRAM_DESC: {
|
||||
uint lines = 1; // Starts at 1 because a line is also required for the section title
|
||||
|
||||
size->width = max(size->width, GetStringBoundingBox(widget == WID_CI_ROAD_DESC ? STR_COMPANY_INFRASTRUCTURE_VIEW_ROAD_SECT : STR_COMPANY_INFRASTRUCTURE_VIEW_TRAM_SECT).width);
|
||||
size->width = std::max(size->width, GetStringBoundingBox(widget == WID_CI_ROAD_DESC ? STR_COMPANY_INFRASTRUCTURE_VIEW_ROAD_SECT : STR_COMPANY_INFRASTRUCTURE_VIEW_TRAM_SECT).width);
|
||||
|
||||
RoadType rt;
|
||||
FOR_ALL_SORTED_ROADTYPES(rt) {
|
||||
if (HasBit(this->roadtypes, rt) && RoadTypeIsRoad(rt) == (widget == WID_CI_ROAD_DESC)) {
|
||||
lines++;
|
||||
SetDParam(0, GetRoadTypeInfo(rt)->strings.name);
|
||||
size->width = max(size->width, GetStringBoundingBox(STR_WHITE_STRING).width + WD_FRAMERECT_LEFT);
|
||||
size->width = std::max(size->width, GetStringBoundingBox(STR_WHITE_STRING).width + WD_FRAMERECT_LEFT);
|
||||
}
|
||||
}
|
||||
|
||||
size->height = max(size->height, lines * FONT_HEIGHT_NORMAL);
|
||||
size->height = std::max(size->height, lines * FONT_HEIGHT_NORMAL);
|
||||
break;
|
||||
}
|
||||
|
||||
case WID_CI_WATER_DESC:
|
||||
size->width = max(size->width, GetStringBoundingBox(STR_COMPANY_INFRASTRUCTURE_VIEW_WATER_SECT).width);
|
||||
size->width = max(size->width, GetStringBoundingBox(STR_COMPANY_INFRASTRUCTURE_VIEW_CANALS).width + WD_FRAMERECT_LEFT);
|
||||
size->width = std::max(size->width, GetStringBoundingBox(STR_COMPANY_INFRASTRUCTURE_VIEW_WATER_SECT).width);
|
||||
size->width = std::max(size->width, GetStringBoundingBox(STR_COMPANY_INFRASTRUCTURE_VIEW_CANALS).width + WD_FRAMERECT_LEFT);
|
||||
break;
|
||||
|
||||
case WID_CI_STATION_DESC:
|
||||
size->width = max(size->width, GetStringBoundingBox(STR_COMPANY_INFRASTRUCTURE_VIEW_STATION_SECT).width);
|
||||
size->width = max(size->width, GetStringBoundingBox(STR_COMPANY_INFRASTRUCTURE_VIEW_STATIONS).width + WD_FRAMERECT_LEFT);
|
||||
size->width = max(size->width, GetStringBoundingBox(STR_COMPANY_INFRASTRUCTURE_VIEW_AIRPORTS).width + WD_FRAMERECT_LEFT);
|
||||
size->width = std::max(size->width, GetStringBoundingBox(STR_COMPANY_INFRASTRUCTURE_VIEW_STATION_SECT).width);
|
||||
size->width = std::max(size->width, GetStringBoundingBox(STR_COMPANY_INFRASTRUCTURE_VIEW_STATIONS).width + WD_FRAMERECT_LEFT);
|
||||
size->width = std::max(size->width, GetStringBoundingBox(STR_COMPANY_INFRASTRUCTURE_VIEW_AIRPORTS).width + WD_FRAMERECT_LEFT);
|
||||
break;
|
||||
|
||||
case WID_CI_RAIL_COUNT:
|
||||
@@ -1956,24 +1956,24 @@ struct CompanyInfrastructureWindow : Window
|
||||
Money max_cost = 10000; // Some random number to reserve enough space.
|
||||
uint32 rail_total = c->infrastructure.GetRailTotal();
|
||||
for (RailType rt = RAILTYPE_BEGIN; rt < RAILTYPE_END; rt++) {
|
||||
max_val = max(max_val, c->infrastructure.rail[rt]);
|
||||
max_cost = max(max_cost, RailMaintenanceCost(rt, c->infrastructure.rail[rt], rail_total));
|
||||
max_val = std::max(max_val, c->infrastructure.rail[rt]);
|
||||
max_cost = std::max(max_cost, RailMaintenanceCost(rt, c->infrastructure.rail[rt], rail_total));
|
||||
}
|
||||
max_val = max(max_val, c->infrastructure.signal);
|
||||
max_cost = max(max_cost, SignalMaintenanceCost(c->infrastructure.signal));
|
||||
max_val = std::max(max_val, c->infrastructure.signal);
|
||||
max_cost = std::max(max_cost, SignalMaintenanceCost(c->infrastructure.signal));
|
||||
uint32 road_total = c->infrastructure.GetRoadTotal();
|
||||
uint32 tram_total = c->infrastructure.GetTramTotal();
|
||||
for (RoadType rt = ROADTYPE_BEGIN; rt < ROADTYPE_END; rt++) {
|
||||
max_val = max(max_val, c->infrastructure.road[rt]);
|
||||
max_cost = max(max_cost, RoadMaintenanceCost(rt, c->infrastructure.road[rt], RoadTypeIsRoad(rt) ? road_total : tram_total));
|
||||
max_val = std::max(max_val, c->infrastructure.road[rt]);
|
||||
max_cost = std::max(max_cost, RoadMaintenanceCost(rt, c->infrastructure.road[rt], RoadTypeIsRoad(rt) ? road_total : tram_total));
|
||||
|
||||
}
|
||||
max_val = max(max_val, c->infrastructure.water);
|
||||
max_cost = max(max_cost, CanalMaintenanceCost(c->infrastructure.water));
|
||||
max_val = max(max_val, c->infrastructure.station);
|
||||
max_cost = max(max_cost, StationMaintenanceCost(c->infrastructure.station));
|
||||
max_val = max(max_val, c->infrastructure.airport);
|
||||
max_cost = max(max_cost, AirportMaintenanceCost(c->index));
|
||||
max_val = std::max(max_val, c->infrastructure.water);
|
||||
max_cost = std::max(max_cost, CanalMaintenanceCost(c->infrastructure.water));
|
||||
max_val = std::max(max_val, c->infrastructure.station);
|
||||
max_cost = std::max(max_cost, StationMaintenanceCost(c->infrastructure.station));
|
||||
max_val = std::max(max_val, c->infrastructure.airport);
|
||||
max_cost = std::max(max_cost, AirportMaintenanceCost(c->index));
|
||||
|
||||
SetDParamMaxValue(0, max_val);
|
||||
uint count_width = GetStringBoundingBox(STR_WHITE_COMMA).width + 20; // Reserve some wiggle room
|
||||
@@ -1981,17 +1981,17 @@ struct CompanyInfrastructureWindow : Window
|
||||
if (_settings_game.economy.infrastructure_maintenance) {
|
||||
SetDParamMaxValue(0, this->GetTotalMaintenanceCost() * 12); // Convert to per year
|
||||
this->total_width = GetStringBoundingBox(STR_COMPANY_INFRASTRUCTURE_VIEW_TOTAL).width + 20;
|
||||
size->width = max(size->width, this->total_width);
|
||||
size->width = std::max(size->width, this->total_width);
|
||||
|
||||
SetDParamMaxValue(0, max_cost * 12); // Convert to per year
|
||||
count_width += max(this->total_width, GetStringBoundingBox(STR_COMPANY_INFRASTRUCTURE_VIEW_TOTAL).width);
|
||||
count_width += std::max(this->total_width, GetStringBoundingBox(STR_COMPANY_INFRASTRUCTURE_VIEW_TOTAL).width);
|
||||
}
|
||||
|
||||
size->width = max(size->width, count_width);
|
||||
size->width = std::max(size->width, count_width);
|
||||
|
||||
/* Set height of the total line. */
|
||||
if (widget == WID_CI_TOTAL) {
|
||||
size->height = _settings_game.economy.infrastructure_maintenance ? max(size->height, EXP_LINESPACE + FONT_HEIGHT_NORMAL) : 0;
|
||||
size->height = _settings_game.economy.infrastructure_maintenance ? std::max(size->height, EXP_LINESPACE + FONT_HEIGHT_NORMAL) : 0;
|
||||
}
|
||||
break;
|
||||
}
|
||||
@@ -2385,8 +2385,8 @@ struct CompanyWindow : Window
|
||||
switch (widget) {
|
||||
case WID_C_FACE: {
|
||||
Dimension face_size = GetSpriteSize(SPR_GRADIENT);
|
||||
size->width = max(size->width, face_size.width);
|
||||
size->height = max(size->height, face_size.height);
|
||||
size->width = std::max(size->width, face_size.width);
|
||||
size->height = std::max(size->height, face_size.height);
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -2407,18 +2407,18 @@ struct CompanyWindow : Window
|
||||
case WID_C_DESC_VEHICLE_COUNTS:
|
||||
SetDParamMaxValue(0, 5000); // Maximum number of vehicles
|
||||
for (uint i = 0; i < lengthof(_company_view_vehicle_count_strings); i++) {
|
||||
size->width = max(size->width, GetStringBoundingBox(_company_view_vehicle_count_strings[i]).width);
|
||||
size->width = std::max(size->width, GetStringBoundingBox(_company_view_vehicle_count_strings[i]).width);
|
||||
}
|
||||
break;
|
||||
|
||||
case WID_C_DESC_INFRASTRUCTURE_COUNTS:
|
||||
SetDParamMaxValue(0, UINT_MAX);
|
||||
size->width = max(size->width, GetStringBoundingBox(STR_COMPANY_VIEW_INFRASTRUCTURE_RAIL).width);
|
||||
size->width = max(size->width, GetStringBoundingBox(STR_COMPANY_VIEW_INFRASTRUCTURE_ROAD).width);
|
||||
size->width = max(size->width, GetStringBoundingBox(STR_COMPANY_VIEW_INFRASTRUCTURE_WATER).width);
|
||||
size->width = max(size->width, GetStringBoundingBox(STR_COMPANY_VIEW_INFRASTRUCTURE_STATION).width);
|
||||
size->width = max(size->width, GetStringBoundingBox(STR_COMPANY_VIEW_INFRASTRUCTURE_AIRPORT).width);
|
||||
size->width = max(size->width, GetStringBoundingBox(STR_COMPANY_VIEW_INFRASTRUCTURE_NONE).width);
|
||||
size->width = std::max(size->width, GetStringBoundingBox(STR_COMPANY_VIEW_INFRASTRUCTURE_RAIL).width);
|
||||
size->width = std::max(size->width, GetStringBoundingBox(STR_COMPANY_VIEW_INFRASTRUCTURE_ROAD).width);
|
||||
size->width = std::max(size->width, GetStringBoundingBox(STR_COMPANY_VIEW_INFRASTRUCTURE_WATER).width);
|
||||
size->width = std::max(size->width, GetStringBoundingBox(STR_COMPANY_VIEW_INFRASTRUCTURE_STATION).width);
|
||||
size->width = std::max(size->width, GetStringBoundingBox(STR_COMPANY_VIEW_INFRASTRUCTURE_AIRPORT).width);
|
||||
size->width = std::max(size->width, GetStringBoundingBox(STR_COMPANY_VIEW_INFRASTRUCTURE_NONE).width);
|
||||
break;
|
||||
|
||||
case WID_C_DESC_OWNERS: {
|
||||
@@ -2426,7 +2426,7 @@ struct CompanyWindow : Window
|
||||
SetDParamMaxValue(0, 75);
|
||||
SetDParam(1, c2->index);
|
||||
|
||||
size->width = max(size->width, GetStringBoundingBox(STR_COMPANY_VIEW_SHARES_OWNED_BY).width);
|
||||
size->width = std::max(size->width, GetStringBoundingBox(STR_COMPANY_VIEW_SHARES_OWNED_BY).width);
|
||||
}
|
||||
break;
|
||||
}
|
||||
@@ -2437,12 +2437,12 @@ struct CompanyWindow : Window
|
||||
case WID_C_VIEW_INFRASTRUCTURE:
|
||||
case WID_C_COMPANY_PASSWORD:
|
||||
case WID_C_COMPANY_JOIN:
|
||||
size->width = max(size->width, GetStringBoundingBox(STR_COMPANY_VIEW_VIEW_HQ_BUTTON).width);
|
||||
size->width = max(size->width, GetStringBoundingBox(STR_COMPANY_VIEW_BUILD_HQ_BUTTON).width);
|
||||
size->width = max(size->width, GetStringBoundingBox(STR_COMPANY_VIEW_RELOCATE_HQ).width);
|
||||
size->width = max(size->width, GetStringBoundingBox(STR_COMPANY_VIEW_INFRASTRUCTURE_BUTTON).width);
|
||||
size->width = max(size->width, GetStringBoundingBox(STR_COMPANY_VIEW_PASSWORD).width);
|
||||
size->width = max(size->width, GetStringBoundingBox(STR_COMPANY_VIEW_JOIN).width);
|
||||
size->width = std::max(size->width, GetStringBoundingBox(STR_COMPANY_VIEW_VIEW_HQ_BUTTON).width);
|
||||
size->width = std::max(size->width, GetStringBoundingBox(STR_COMPANY_VIEW_BUILD_HQ_BUTTON).width);
|
||||
size->width = std::max(size->width, GetStringBoundingBox(STR_COMPANY_VIEW_RELOCATE_HQ).width);
|
||||
size->width = std::max(size->width, GetStringBoundingBox(STR_COMPANY_VIEW_INFRASTRUCTURE_BUTTON).width);
|
||||
size->width = std::max(size->width, GetStringBoundingBox(STR_COMPANY_VIEW_PASSWORD).width);
|
||||
size->width = std::max(size->width, GetStringBoundingBox(STR_COMPANY_VIEW_JOIN).width);
|
||||
break;
|
||||
|
||||
|
||||
|
@@ -1148,6 +1148,23 @@ DEF_CONSOLE_CMD(ConRestart)
|
||||
return true;
|
||||
}
|
||||
|
||||
DEF_CONSOLE_CMD(ConReload)
|
||||
{
|
||||
if (argc == 0) {
|
||||
IConsoleHelp("Reload game. Usage: 'reload'");
|
||||
IConsoleHelp("Reloads a game.");
|
||||
IConsoleHelp(" * if you started from a savegame / scenario / heightmap, that exact same savegame / scenario / heightmap will be loaded.");
|
||||
IConsoleHelp(" * if you started from a new game, this acts the same as 'restart'.");
|
||||
return true;
|
||||
}
|
||||
|
||||
/* Don't copy the _newgame pointers to the real pointers, so call SwitchToMode directly */
|
||||
_settings_game.game_creation.map_x = MapLogX();
|
||||
_settings_game.game_creation.map_y = FindFirstBit(MapSizeY());
|
||||
_switch_mode = SM_RELOADGAME;
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Print a text buffer line by line to the console. Lines are separated by '\n'.
|
||||
* @param buf The buffer to print.
|
||||
@@ -2596,8 +2613,8 @@ DEF_CONSOLE_CMD(ConViewportMarkDirty)
|
||||
Viewport *vp = FindWindowByClass(WC_MAIN_WINDOW)->viewport;
|
||||
uint l = strtoul(argv[1], nullptr, 0);
|
||||
uint t = strtoul(argv[2], nullptr, 0);
|
||||
uint r = min<uint>(l + ((argc > 3) ? strtoul(argv[3], nullptr, 0) : 1), vp->dirty_blocks_per_row);
|
||||
uint b = min<uint>(t + ((argc > 4) ? strtoul(argv[4], nullptr, 0) : 1), vp->dirty_blocks_per_column);
|
||||
uint r = std::min<uint>(l + ((argc > 3) ? strtoul(argv[3], nullptr, 0) : 1), vp->dirty_blocks_per_row);
|
||||
uint b = std::min<uint>(t + ((argc > 4) ? strtoul(argv[4], nullptr, 0) : 1), vp->dirty_blocks_per_column);
|
||||
for (uint x = l; x < r; x++) {
|
||||
for (uint y = t; y < b; y++) {
|
||||
vp->dirty_blocks[(x * vp->dirty_blocks_per_column) + y] = true;
|
||||
@@ -2832,7 +2849,7 @@ DEF_CONSOLE_CMD(ConNewGRFProfile)
|
||||
if (started > 0) {
|
||||
IConsolePrintF(CC_DEBUG, "Started profiling for GRFID%s %s", (started > 1) ? "s" : "", grfids.c_str());
|
||||
if (argc >= 3) {
|
||||
int days = max(atoi(argv[2]), 1);
|
||||
int days = std::max(atoi(argv[2]), 1);
|
||||
_newgrf_profile_end_date = _date + days;
|
||||
|
||||
char datestrbuf[32]{ 0 };
|
||||
@@ -3069,6 +3086,7 @@ void IConsoleStdLibRegister()
|
||||
IConsoleCmdRegister("list_aliases", ConListAliases);
|
||||
IConsoleCmdRegister("newgame", ConNewGame);
|
||||
IConsoleCmdRegister("restart", ConRestart);
|
||||
IConsoleCmdRegister("reload", ConReload);
|
||||
IConsoleCmdRegister("getseed", ConGetSeed);
|
||||
IConsoleCmdRegister("getdate", ConGetDate);
|
||||
IConsoleCmdRegister("getsysdate", ConGetSysDate);
|
||||
|
@@ -12,6 +12,7 @@
|
||||
#include "window_gui.h"
|
||||
#include "console_gui.h"
|
||||
#include "console_internal.h"
|
||||
#include "guitimer_func.h"
|
||||
#include "window_func.h"
|
||||
#include "string_func.h"
|
||||
#include "strings_func.h"
|
||||
@@ -172,6 +173,7 @@ struct IConsoleWindow : Window
|
||||
static int scroll;
|
||||
int line_height; ///< Height of one line of text in the console.
|
||||
int line_offset;
|
||||
GUITimer truncate_timer;
|
||||
|
||||
IConsoleWindow() : Window(&_console_window_desc)
|
||||
{
|
||||
@@ -180,6 +182,7 @@ struct IConsoleWindow : Window
|
||||
this->line_offset = GetStringBoundingBox("] ").width + 5;
|
||||
|
||||
this->InitNested(0);
|
||||
this->truncate_timer.SetInterval(3000);
|
||||
ResizeWindow(this, _screen.width, _screen.height / 3);
|
||||
}
|
||||
|
||||
@@ -195,7 +198,7 @@ struct IConsoleWindow : Window
|
||||
*/
|
||||
void Scroll(int amount)
|
||||
{
|
||||
int max_scroll = max<int>(0, IConsoleLine::size + 1 - this->height / this->line_height);
|
||||
int max_scroll = std::max(0, IConsoleLine::size + 1 - this->height / this->line_height);
|
||||
IConsoleWindow::scroll = Clamp<int>(IConsoleWindow::scroll + amount, 0, max_scroll);
|
||||
this->SetDirty();
|
||||
}
|
||||
@@ -228,11 +231,13 @@ struct IConsoleWindow : Window
|
||||
}
|
||||
}
|
||||
|
||||
void OnHundredthTick() override
|
||||
void OnRealtimeTick(uint delta_ms) override
|
||||
{
|
||||
if (this->truncate_timer.CountElapsed(delta_ms) == 0) return;
|
||||
|
||||
if (IConsoleLine::Truncate() &&
|
||||
(IConsoleWindow::scroll > IConsoleLine::size)) {
|
||||
IConsoleWindow::scroll = max(0, IConsoleLine::size - (this->height / this->line_height) + 1);
|
||||
IConsoleWindow::scroll = std::max(0, IConsoleLine::size - (this->height / this->line_height) + 1);
|
||||
this->SetDirty();
|
||||
}
|
||||
}
|
||||
@@ -346,7 +351,7 @@ struct IConsoleWindow : Window
|
||||
|
||||
Point GetCaretPosition() const override
|
||||
{
|
||||
int delta = min(this->width - this->line_offset - _iconsole_cmdline.pixels - ICON_RIGHT_BORDERWIDTH, 0);
|
||||
int delta = std::min<int>(this->width - this->line_offset - _iconsole_cmdline.pixels - ICON_RIGHT_BORDERWIDTH, 0);
|
||||
Point pt = {this->line_offset + delta + _iconsole_cmdline.caretxoffs, this->height - this->line_height};
|
||||
|
||||
return pt;
|
||||
@@ -354,7 +359,7 @@ struct IConsoleWindow : Window
|
||||
|
||||
Rect GetTextBoundingRect(const char *from, const char *to) const override
|
||||
{
|
||||
int delta = min(this->width - this->line_offset - _iconsole_cmdline.pixels - ICON_RIGHT_BORDERWIDTH, 0);
|
||||
int delta = std::min<int>(this->width - this->line_offset - _iconsole_cmdline.pixels - ICON_RIGHT_BORDERWIDTH, 0);
|
||||
|
||||
Point p1 = GetCharPosInString(_iconsole_cmdline.buf, from, FS_NORMAL);
|
||||
Point p2 = from != to ? GetCharPosInString(_iconsole_cmdline.buf, from) : p1;
|
||||
@@ -365,7 +370,7 @@ struct IConsoleWindow : Window
|
||||
|
||||
const char *GetTextCharacterAtPosition(const Point &pt) const override
|
||||
{
|
||||
int delta = min(this->width - this->line_offset - _iconsole_cmdline.pixels - ICON_RIGHT_BORDERWIDTH, 0);
|
||||
int delta = std::min<int>(this->width - this->line_offset - _iconsole_cmdline.pixels - ICON_RIGHT_BORDERWIDTH, 0);
|
||||
|
||||
if (!IsInsideMM(pt.y, this->height - this->line_height, this->height)) return nullptr;
|
||||
|
||||
|
@@ -22,8 +22,8 @@
|
||||
Dimension maxdim(const Dimension &d1, const Dimension &d2)
|
||||
{
|
||||
Dimension d;
|
||||
d.width = max(d1.width, d2.width);
|
||||
d.height = max(d1.height, d2.height);
|
||||
d.width = std::max(d1.width, d2.width);
|
||||
d.height = std::max(d1.height, d2.height);
|
||||
return d;
|
||||
}
|
||||
|
||||
|
@@ -12,7 +12,6 @@
|
||||
|
||||
#include "../stdafx.h"
|
||||
#include <vector>
|
||||
#include <algorithm>
|
||||
#include <limits>
|
||||
|
||||
/**
|
||||
@@ -261,7 +260,7 @@ class Kdtree {
|
||||
best = SelectNearestNodeDistance(best, this->FindNearestRecursive(xy, next, level + 1));
|
||||
}
|
||||
|
||||
limit = min(best.second, limit);
|
||||
limit = std::min(best.second, limit);
|
||||
|
||||
/* Check if the distance from current best is worse than distance from target to splitting line,
|
||||
* if it is we also need to check the other side of the split. */
|
||||
|
@@ -10,66 +10,6 @@
|
||||
#ifndef MATH_FUNC_HPP
|
||||
#define MATH_FUNC_HPP
|
||||
|
||||
/**
|
||||
* Returns the maximum of two values.
|
||||
*
|
||||
* This function returns the greater value of two given values.
|
||||
* If they are equal the value of a is returned.
|
||||
*
|
||||
* @param a The first value
|
||||
* @param b The second value
|
||||
* @return The greater value or a if equals
|
||||
*/
|
||||
template <typename T>
|
||||
static inline T max(const T a, const T b)
|
||||
{
|
||||
return (a >= b) ? a : b;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the minimum of two values.
|
||||
*
|
||||
* This function returns the smaller value of two given values.
|
||||
* If they are equal the value of b is returned.
|
||||
*
|
||||
* @param a The first value
|
||||
* @param b The second value
|
||||
* @return The smaller value or b if equals
|
||||
*/
|
||||
template <typename T>
|
||||
static inline T min(const T a, const T b)
|
||||
{
|
||||
return (a < b) ? a : b;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the minimum of two integer.
|
||||
*
|
||||
* This function returns the smaller value of two given integers.
|
||||
*
|
||||
* @param a The first integer
|
||||
* @param b The second integer
|
||||
* @return The smaller value
|
||||
*/
|
||||
static inline int min(const int a, const int b)
|
||||
{
|
||||
return min<int>(a, b);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the minimum of two unsigned integers.
|
||||
*
|
||||
* This function returns the smaller value of two given unsigned integers.
|
||||
*
|
||||
* @param a The first unsigned integer
|
||||
* @param b The second unsigned integer
|
||||
* @return The smaller value
|
||||
*/
|
||||
static inline uint minu(const uint a, const uint b)
|
||||
{
|
||||
return min<uint>(a, b);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the absolute value of (scalar) variable.
|
||||
*
|
||||
@@ -239,7 +179,7 @@ static inline uint16 ClampToU16(const uint64 a)
|
||||
* match for min(uint64, uint) than uint64 min(uint64, uint64). As such we
|
||||
* need to cast the UINT16_MAX to prevent MSVC from displaying its
|
||||
* infinite loads of warnings. */
|
||||
return static_cast<uint16>(min<uint64>(a, static_cast<uint64>(UINT16_MAX)));
|
||||
return static_cast<uint16>(std::min(a, static_cast<uint64>(UINT16_MAX)));
|
||||
}
|
||||
|
||||
/**
|
||||
|
@@ -55,7 +55,7 @@ DEFINE_POOL_METHOD(inline void)::ResizeFor(size_t index)
|
||||
assert(index >= this->size);
|
||||
assert(index < Tmax_size);
|
||||
|
||||
size_t new_size = min(Tmax_size, Align(index + 1, max<uint>(64, Tgrowth_step)));
|
||||
size_t new_size = std::min(Tmax_size, Align(index + 1, std::max<uint>(64, Tgrowth_step)));
|
||||
|
||||
this->data = ReallocT(this->data, new_size);
|
||||
MemSetT(this->data + this->size, 0, new_size - this->size);
|
||||
@@ -111,7 +111,7 @@ DEFINE_POOL_METHOD(inline void *)::AllocateItem(size_t size, size_t index)
|
||||
{
|
||||
assert(this->data[index] == nullptr);
|
||||
|
||||
this->first_unused = max(this->first_unused, index + 1);
|
||||
this->first_unused = std::max(this->first_unused, index + 1);
|
||||
this->items++;
|
||||
|
||||
Titem *item;
|
||||
@@ -200,7 +200,7 @@ DEFINE_POOL_METHOD(void)::FreeItem(size_t index)
|
||||
}
|
||||
this->data[index] = nullptr;
|
||||
ClrBit(this->free_bitmap[index / 64], index % 64);
|
||||
this->first_free = min(this->first_free, index);
|
||||
this->first_free = std::min(this->first_free, index);
|
||||
this->items--;
|
||||
if (!this->cleaning) Titem::PostDestructor(index);
|
||||
}
|
||||
|
@@ -234,7 +234,7 @@ public:
|
||||
if (x * new_height > new_capacity) continue;
|
||||
(*copy)(new_data + (x - 1) * new_height,
|
||||
this->data + (x - 1) * this->height,
|
||||
min(this->height, new_height));
|
||||
std::min(this->height, new_height));
|
||||
}
|
||||
} else {
|
||||
/* If matrix is shrinking copy from the front. */
|
||||
@@ -242,7 +242,7 @@ public:
|
||||
if ((x + 1) * new_height > new_capacity) break;
|
||||
(*copy)(new_data + x * new_height,
|
||||
this->data + x * this->height,
|
||||
min(this->height, new_height));
|
||||
std::min(this->height, new_height));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -38,7 +38,7 @@ public:
|
||||
if (index < Tmax_size) {
|
||||
this->data[index].valid = true;
|
||||
this->first_free = index + 1;
|
||||
this->first_unused = max(this->first_unused, this->first_free);
|
||||
this->first_unused = std::max(this->first_unused, this->first_free);
|
||||
}
|
||||
return index;
|
||||
}
|
||||
@@ -50,7 +50,7 @@ public:
|
||||
inline void Destroy(Tindex index)
|
||||
{
|
||||
this->data[index].valid = false;
|
||||
this->first_free = min(this->first_free, index);
|
||||
this->first_free = std::min(this->first_free, index);
|
||||
}
|
||||
|
||||
private:
|
||||
|
@@ -13,7 +13,6 @@
|
||||
#include "alloc_func.hpp"
|
||||
#include "mem_func.hpp"
|
||||
#include <vector>
|
||||
#include <algorithm>
|
||||
|
||||
/**
|
||||
* Helper function to append an item to a vector if it is not already contained
|
||||
|
@@ -376,7 +376,7 @@ char *CrashLog::LogRecentNews(char *buffer, const char *last) const
|
||||
for (NewsItem *news = _latest_news; news != nullptr; news = news->prev) {
|
||||
total++;
|
||||
}
|
||||
uint show = min<uint>(total, 32);
|
||||
uint show = std::min<uint>(total, 32);
|
||||
buffer += seprintf(buffer, last, "Recent news messages (%u of %u):\n", show, total);
|
||||
|
||||
int i = 0;
|
||||
|
10
src/date.cpp
10
src/date.cpp
@@ -37,8 +37,6 @@ YearMonthDay _game_load_cur_date_ymd;
|
||||
DateFract _game_load_date_fract;
|
||||
uint8 _game_load_tick_skip_counter;
|
||||
|
||||
int32 _old_ending_year_slv_105; ///< Old ending year for savegames before SLV_105
|
||||
|
||||
/**
|
||||
* Set the date.
|
||||
* @param date New date
|
||||
@@ -215,11 +213,13 @@ static void OnNewYear()
|
||||
|
||||
if (_cur_date_ymd.year == _settings_client.gui.semaphore_build_before) ResetSignalVariant();
|
||||
|
||||
/* check if we reached end of the game (end of ending year) */
|
||||
if (_cur_date_ymd.year == _settings_game.game_creation.ending_year + 1) {
|
||||
/* check if we reached end of the game (end of ending year); 0 = never */
|
||||
if (_cur_date_ymd.year == _settings_game.game_creation.ending_year + 1 && _settings_game.game_creation.ending_year != 0) {
|
||||
ShowEndGameChart();
|
||||
}
|
||||
|
||||
/* check if we reached the maximum year, decrement dates by a year */
|
||||
} else if (_cur_date_ymd.year == MAX_YEAR + 1) {
|
||||
if (_cur_date_ymd.year == MAX_YEAR + 1) {
|
||||
int days_this_year;
|
||||
|
||||
_cur_date_ymd.year--;
|
||||
|
@@ -42,8 +42,8 @@ struct SetDateWindow : Window {
|
||||
SetDateWindow(WindowDesc *desc, WindowNumber window_number, Window *parent, Date initial_date, Year min_year, Year max_year, SetDateCallback *callback) :
|
||||
Window(desc),
|
||||
callback(callback),
|
||||
min_year(max(MIN_YEAR, min_year)),
|
||||
max_year(min(MAX_YEAR, max_year))
|
||||
min_year(std::max(MIN_YEAR, min_year)),
|
||||
max_year(std::min(MAX_YEAR, max_year))
|
||||
{
|
||||
assert(this->min_year <= this->max_year);
|
||||
this->parent = parent;
|
||||
|
@@ -335,7 +335,7 @@ char *DumpDesyncMsgLog(char *buffer, const char *last)
|
||||
{
|
||||
if (!desync_msg_log_count) return buffer;
|
||||
|
||||
const unsigned int count = min<unsigned int>(desync_msg_log_count, desync_msg_log.size());
|
||||
const unsigned int count = std::min<unsigned int>(desync_msg_log_count, desync_msg_log.size());
|
||||
unsigned int log_index = (desync_msg_log_next + desync_msg_log.size() - count) % desync_msg_log.size();
|
||||
unsigned int display_num = desync_msg_log_count - count;
|
||||
|
||||
|
@@ -491,7 +491,7 @@ public:
|
||||
this->EnableWidget(WID_DB_SHOW_DEPS);
|
||||
}
|
||||
|
||||
this->vscroll->SetCount(min(_settings_client.gui.max_departures, this->departures->size() + this->arrivals->size()));
|
||||
this->vscroll->SetCount(std::min<uint>(_settings_client.gui.max_departures, this->departures->size() + this->arrivals->size()));
|
||||
this->DrawWidgets();
|
||||
}
|
||||
|
||||
@@ -548,9 +548,9 @@ void DeparturesWindow<Twaypoint>::RecomputeDateWidth()
|
||||
cached_date_display_method = _settings_time.time_in_minutes;
|
||||
cached_arr_dep_display_method = _settings_client.gui.departure_show_both;
|
||||
|
||||
cached_status_width = max((GetStringBoundingBox(STR_DEPARTURES_ON_TIME)).width, cached_status_width);
|
||||
cached_status_width = max((GetStringBoundingBox(STR_DEPARTURES_DELAYED)).width, cached_status_width);
|
||||
cached_status_width = max((GetStringBoundingBox(STR_DEPARTURES_CANCELLED)).width, cached_status_width);
|
||||
cached_status_width = std::max((GetStringBoundingBox(STR_DEPARTURES_ON_TIME)).width, cached_status_width);
|
||||
cached_status_width = std::max((GetStringBoundingBox(STR_DEPARTURES_DELAYED)).width, cached_status_width);
|
||||
cached_status_width = std::max((GetStringBoundingBox(STR_DEPARTURES_CANCELLED)).width, cached_status_width);
|
||||
|
||||
uint interval = cached_date_display_method ? _settings_time.ticks_per_minute : DAY_TICKS;
|
||||
uint count = cached_date_display_method ? 24*60 : 365;
|
||||
@@ -558,8 +558,8 @@ void DeparturesWindow<Twaypoint>::RecomputeDateWidth()
|
||||
for (uint i = 0; i < count; ++i) {
|
||||
SetDParam(0, INT_MAX - (i*interval));
|
||||
SetDParam(1, INT_MAX - (i*interval));
|
||||
cached_date_width = max(GetStringBoundingBox(cached_arr_dep_display_method ? STR_DEPARTURES_TIME_BOTH : STR_DEPARTURES_TIME_DEP).width, cached_date_width);
|
||||
cached_status_width = max((GetStringBoundingBox(STR_DEPARTURES_EXPECTED)).width, cached_status_width);
|
||||
cached_date_width = std::max(GetStringBoundingBox(cached_arr_dep_display_method ? STR_DEPARTURES_TIME_BOTH : STR_DEPARTURES_TIME_DEP).width, cached_date_width);
|
||||
cached_status_width = std::max((GetStringBoundingBox(STR_DEPARTURES_EXPECTED)).width, cached_status_width);
|
||||
}
|
||||
|
||||
SetDParam(0, 0);
|
||||
@@ -623,7 +623,7 @@ void DeparturesWindow<Twaypoint>::DrawDeparturesListItems(const Rect &r) const
|
||||
int text_right = right - (rtl ? text_offset : 0);
|
||||
|
||||
int y = r.top + 1;
|
||||
uint max_departures = min(this->vscroll->GetPosition() + this->vscroll->GetCapacity(), this->departures->size() + this->arrivals->size());
|
||||
uint max_departures = std::min<uint>(this->vscroll->GetPosition() + this->vscroll->GetCapacity(), this->departures->size() + this->arrivals->size());
|
||||
|
||||
if (max_departures > _settings_client.gui.max_departures) {
|
||||
max_departures = _settings_client.gui.max_departures;
|
||||
|
@@ -196,12 +196,12 @@ static void InitBlocksizeForVehicles(VehicleType type, EngineImageType image_typ
|
||||
|
||||
switch (image_type) {
|
||||
case EIT_IN_DEPOT:
|
||||
_base_block_sizes_depot[type].height = max<uint>(ScaleGUITrad(GetVehicleHeight(type)), max_height);
|
||||
_base_block_sizes_depot[type].height = std::max<uint>(ScaleGUITrad(GetVehicleHeight(type)), max_height);
|
||||
_base_block_sizes_depot[type].extend_left = Clamp(max_extend_left, min_extend, max_extend);
|
||||
_base_block_sizes_depot[type].extend_right = Clamp(max_extend_right, min_extend, max_extend);
|
||||
break;
|
||||
case EIT_PURCHASE:
|
||||
_base_block_sizes_purchase[type].height = max<uint>(ScaleGUITrad(GetVehicleHeight(type)), max_height);
|
||||
_base_block_sizes_purchase[type].height = std::max<uint>(ScaleGUITrad(GetVehicleHeight(type)), max_height);
|
||||
_base_block_sizes_purchase[type].extend_left = Clamp(max_extend_left, min_extend, max_extend);
|
||||
_base_block_sizes_purchase[type].extend_right = Clamp(max_extend_right, min_extend, max_extend);
|
||||
break;
|
||||
@@ -397,7 +397,7 @@ struct DepotWindow : Window {
|
||||
uint16 rows_in_display = wid->current_y / wid->resize_y;
|
||||
|
||||
uint16 num = this->vscroll->GetPosition() * this->num_columns;
|
||||
int maxval = min((uint)this->vehicle_list.size(), num + (rows_in_display * this->num_columns));
|
||||
uint maxval = static_cast<uint>(std::min<size_t>(this->vehicle_list.size(), num + (rows_in_display * this->num_columns)));
|
||||
int y;
|
||||
for (y = r.top + 1; num < maxval; y += this->resize.step_height) { // Draw the rows
|
||||
for (byte i = 0; i < this->num_columns && num < maxval; i++, num++) {
|
||||
@@ -412,7 +412,7 @@ struct DepotWindow : Window {
|
||||
}
|
||||
}
|
||||
|
||||
maxval = min((uint)this->vehicle_list.size() + (uint)this->wagon_list.size(), (this->vscroll->GetPosition() * this->num_columns) + (rows_in_display * this->num_columns));
|
||||
maxval = static_cast<uint>(std::min<size_t>(this->vehicle_list.size() + this->wagon_list.size(), (this->vscroll->GetPosition() * this->num_columns) + (rows_in_display * this->num_columns)));
|
||||
|
||||
/* Draw the train wagons without an engine in front. */
|
||||
for (; num < maxval; num++, y += this->resize.step_height) {
|
||||
@@ -670,15 +670,15 @@ struct DepotWindow : Window {
|
||||
this->flag_height = UnScaleGUI(spr->height);
|
||||
|
||||
if (this->type == VEH_TRAIN || this->type == VEH_ROAD) {
|
||||
min_height = max<uint>(unumber.height + WD_MATRIX_TOP, UnScaleGUI(spr->height));
|
||||
min_height = std::max<uint>(unumber.height + WD_MATRIX_TOP, UnScaleGUI(spr->height));
|
||||
this->header_width = unumber.width + this->flag_width + WD_FRAMERECT_LEFT;
|
||||
} else {
|
||||
min_height = unumber.height + UnScaleGUI(spr->height) + WD_MATRIX_TOP + WD_PAR_VSEP_NORMAL + WD_MATRIX_BOTTOM;
|
||||
this->header_width = max<uint>(unumber.width, this->flag_width) + WD_FRAMERECT_RIGHT;
|
||||
this->header_width = std::max<uint>(unumber.width, this->flag_width) + WD_FRAMERECT_RIGHT;
|
||||
}
|
||||
int base_width = this->count_width + this->header_width;
|
||||
|
||||
resize->height = max<uint>(GetVehicleImageCellSize(this->type, EIT_IN_DEPOT).height, min_height);
|
||||
resize->height = std::max<uint>(GetVehicleImageCellSize(this->type, EIT_IN_DEPOT).height, min_height);
|
||||
if (this->type == VEH_TRAIN) {
|
||||
resize->width = 1;
|
||||
size->width = base_width + 2 * ScaleGUITrad(29); // about 2 parts
|
||||
@@ -730,7 +730,7 @@ struct DepotWindow : Window {
|
||||
for (const Train *v = Train::From(this->vehicle_list[num]); v != nullptr; v = v->Next()) {
|
||||
width += v->GetDisplayImageWidth();
|
||||
}
|
||||
max_width = max(max_width, width);
|
||||
max_width = std::max(max_width, width);
|
||||
}
|
||||
/* Always have 1 empty row, so people can change the setting of the train */
|
||||
this->vscroll->SetCount((uint)this->vehicle_list.size() + (uint)this->wagon_list.size() + 1);
|
||||
|
@@ -214,7 +214,7 @@ void DisasterVehicle::UpdatePosition(int x, int y, int z)
|
||||
int safe_y = Clamp(y - 1, 0, MapMaxY() * TILE_SIZE);
|
||||
|
||||
u->x_pos = x;
|
||||
u->y_pos = y - 1 - (max(z - GetSlopePixelZ(safe_x, safe_y), 0) >> 3);
|
||||
u->y_pos = y - 1 - (std::max(z - GetSlopePixelZ(safe_x, safe_y), 0) >> 3);
|
||||
safe_y = Clamp(u->y_pos, 0, MapMaxY() * TILE_SIZE);
|
||||
u->z_pos = GetSlopePixelZ(safe_x, safe_y);
|
||||
u->direction = this->direction;
|
||||
|
@@ -72,7 +72,7 @@ static TileIndex GetOtherAqueductEnd(TileIndex tile_from, TileIndex *tile_to = n
|
||||
/* Direction the aqueduct is built to. */
|
||||
TileIndexDiff offset = TileOffsByDiagDir(ReverseDiagDir(dir));
|
||||
/* The maximum length of the aqueduct. */
|
||||
int max_length = min(_settings_game.construction.max_bridge_length, DistanceFromEdgeDir(tile_from, ReverseDiagDir(dir)) - 1);
|
||||
int max_length = std::min<int>(_settings_game.construction.max_bridge_length, DistanceFromEdgeDir(tile_from, ReverseDiagDir(dir)) - 1);
|
||||
|
||||
TileIndex endtile = tile_from;
|
||||
for (int length = 0; IsValidTile(endtile) && TileX(endtile) != 0 && TileY(endtile) != 0; length++) {
|
||||
@@ -127,6 +127,19 @@ struct BuildDocksToolbarWindow : Window {
|
||||
DeleteWindowById(WC_BUILD_STATION, TRANSPORT_WATER);
|
||||
DeleteWindowById(WC_BUILD_DEPOT, TRANSPORT_WATER);
|
||||
}
|
||||
|
||||
if (_game_mode != GM_EDITOR) {
|
||||
if (!can_build) {
|
||||
/* Show in the tooltip why this button is disabled. */
|
||||
this->GetWidget<NWidgetCore>(WID_DT_DEPOT)->SetToolTip(STR_TOOLBAR_DISABLED_NO_VEHICLE_AVAILABLE);
|
||||
this->GetWidget<NWidgetCore>(WID_DT_STATION)->SetToolTip(STR_TOOLBAR_DISABLED_NO_VEHICLE_AVAILABLE);
|
||||
this->GetWidget<NWidgetCore>(WID_DT_BUOY)->SetToolTip(STR_TOOLBAR_DISABLED_NO_VEHICLE_AVAILABLE);
|
||||
} else {
|
||||
this->GetWidget<NWidgetCore>(WID_DT_DEPOT)->SetToolTip(STR_WATERWAYS_TOOLBAR_BUILD_DEPOT_TOOLTIP);
|
||||
this->GetWidget<NWidgetCore>(WID_DT_STATION)->SetToolTip(STR_WATERWAYS_TOOLBAR_BUILD_DOCK_TOOLTIP);
|
||||
this->GetWidget<NWidgetCore>(WID_DT_BUOY)->SetToolTip(STR_WATERWAYS_TOOLBAR_BUOY_TOOLTIP);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void OnClick(Point pt, int widget, int click_count) override
|
||||
@@ -145,17 +158,14 @@ struct BuildDocksToolbarWindow : Window {
|
||||
break;
|
||||
|
||||
case WID_DT_DEPOT: // Build depot button
|
||||
if (!CanBuildVehicleInfrastructure(VEH_SHIP)) return;
|
||||
if (HandlePlacePushButton(this, WID_DT_DEPOT, SPR_CURSOR_SHIP_DEPOT, HT_RECT)) ShowBuildDocksDepotPicker(this);
|
||||
break;
|
||||
|
||||
case WID_DT_STATION: // Build station button
|
||||
if (!CanBuildVehicleInfrastructure(VEH_SHIP)) return;
|
||||
if (HandlePlacePushButton(this, WID_DT_STATION, SPR_CURSOR_DOCK, HT_SPECIAL)) ShowBuildDockStationPicker(this);
|
||||
break;
|
||||
|
||||
case WID_DT_BUOY: // Build buoy button
|
||||
if (!CanBuildVehicleInfrastructure(VEH_SHIP)) return;
|
||||
HandlePlacePushButton(this, WID_DT_BUOY, SPR_CURSOR_BUOY, HT_RECT);
|
||||
break;
|
||||
|
||||
|
@@ -142,7 +142,7 @@ Money CalculateCompanyValue(const Company *c, bool including_loan)
|
||||
if (including_loan) value -= c->current_loan;
|
||||
value += c->money;
|
||||
|
||||
return max(value, (Money)1);
|
||||
return std::max<Money>(value, 1);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -201,15 +201,15 @@ int UpdateCompanyRatingAndValue(Company *c, bool update)
|
||||
|
||||
/* Generate statistics depending on recent income statistics */
|
||||
{
|
||||
int numec = min(c->num_valid_stat_ent, 12);
|
||||
int numec = std::min<uint>(c->num_valid_stat_ent, 12u);
|
||||
if (numec != 0) {
|
||||
const CompanyEconomyEntry *cee = c->old_economy;
|
||||
Money min_income = cee->income + cee->expenses;
|
||||
Money max_income = cee->income + cee->expenses;
|
||||
|
||||
do {
|
||||
min_income = min(min_income, cee->income + cee->expenses);
|
||||
max_income = max(max_income, cee->income + cee->expenses);
|
||||
min_income = std::min(min_income, cee->income + cee->expenses);
|
||||
max_income = std::max(max_income, cee->income + cee->expenses);
|
||||
} while (++cee, --numec);
|
||||
|
||||
if (min_income > 0) {
|
||||
@@ -222,7 +222,7 @@ int UpdateCompanyRatingAndValue(Company *c, bool update)
|
||||
|
||||
/* Generate score depending on amount of transported cargo */
|
||||
{
|
||||
int numec = min(c->num_valid_stat_ent, 4);
|
||||
int numec = std::min<uint>(c->num_valid_stat_ent, 4u);
|
||||
if (numec != 0) {
|
||||
const CompanyEconomyEntry *cee = c->old_economy;
|
||||
OverflowSafeInt64 total_delivered = 0;
|
||||
@@ -370,7 +370,7 @@ void ChangeOwnershipOfCompanyItems(Owner old_owner, Owner new_owner)
|
||||
if (HasBit(t->have_ratings, old_owner)) {
|
||||
if (HasBit(t->have_ratings, new_owner)) {
|
||||
/* use max of the two ratings. */
|
||||
t->ratings[new_owner] = max(t->ratings[new_owner], t->ratings[old_owner]);
|
||||
t->ratings[new_owner] = std::max(t->ratings[new_owner], t->ratings[old_owner]);
|
||||
} else {
|
||||
SetBit(t->have_ratings, new_owner);
|
||||
t->ratings[new_owner] = t->ratings[old_owner];
|
||||
@@ -961,12 +961,12 @@ void StartupEconomy()
|
||||
{
|
||||
_economy.interest_rate = _settings_game.difficulty.initial_interest;
|
||||
_economy.infl_amount = _settings_game.difficulty.initial_interest;
|
||||
_economy.infl_amount_pr = max(0, _settings_game.difficulty.initial_interest - 1);
|
||||
_economy.infl_amount_pr = std::max(0, _settings_game.difficulty.initial_interest - 1);
|
||||
_economy.fluct = GB(Random(), 0, 8) + 168;
|
||||
|
||||
if (_settings_game.economy.inflation && _settings_game.economy.inflation_fixed_dates) {
|
||||
/* Apply inflation that happened before our game start year. */
|
||||
int months = (min(_cur_year, ORIGINAL_MAX_YEAR) - ORIGINAL_BASE_YEAR) * 12;
|
||||
int months = (std::min(_cur_year, ORIGINAL_MAX_YEAR) - ORIGINAL_BASE_YEAR) * 12;
|
||||
for (int i = 0; i < months; i++) {
|
||||
AddInflation(false);
|
||||
}
|
||||
@@ -1023,7 +1023,7 @@ Money GetTransportedGoodsIncome(uint num_pieces, uint dist, byte transit_days, C
|
||||
|
||||
/* Use callback to calculate cargo profit, if available */
|
||||
if (HasBit(cs->callback_mask, CBM_CARGO_PROFIT_CALC)) {
|
||||
uint32 var18 = min(dist, 0xFFFF) | (min(num_pieces, 0xFF) << 16) | (transit_days << 24);
|
||||
uint32 var18 = std::min(dist, 0xFFFFu) | (std::min(num_pieces, 0xFFu) << 16) | (transit_days << 24);
|
||||
uint16 callback = GetCargoCallback(CBID_CARGO_PROFIT_CALC, 0, var18, cs);
|
||||
if (callback != CALLBACK_FAILED) {
|
||||
int result = GB(callback, 0, 14);
|
||||
@@ -1043,8 +1043,8 @@ Money GetTransportedGoodsIncome(uint num_pieces, uint dist, byte transit_days, C
|
||||
|
||||
const int days1 = cs->transit_days[0];
|
||||
const int days2 = cs->transit_days[1];
|
||||
const int days_over_days1 = max( transit_days - days1, 0);
|
||||
const int days_over_days2 = max(days_over_days1 - days2, 0);
|
||||
const int days_over_days1 = std::max( transit_days - days1, 0);
|
||||
const int days_over_days2 = std::max(days_over_days1 - days2, 0);
|
||||
|
||||
/*
|
||||
* The time factor is calculated based on the time it took
|
||||
@@ -1056,7 +1056,7 @@ Money GetTransportedGoodsIncome(uint num_pieces, uint dist, byte transit_days, C
|
||||
* - linear decreasing with time with a slope of -2 for slow transports
|
||||
*
|
||||
*/
|
||||
const int time_factor = max(MAX_TIME_FACTOR - days_over_days1 - days_over_days2, MIN_TIME_FACTOR);
|
||||
const int time_factor = std::max(MAX_TIME_FACTOR - days_over_days1 - days_over_days2, MIN_TIME_FACTOR);
|
||||
|
||||
return BigMulS(dist * time_factor * num_pieces, cs->current_payment, 21);
|
||||
}
|
||||
@@ -1105,7 +1105,7 @@ static uint DeliverGoodsToIndustry(const Station *st, CargoID cargo_type, uint n
|
||||
/* Insert the industry into _cargo_delivery_destinations, if not yet contained */
|
||||
include(_cargo_delivery_destinations, ind);
|
||||
|
||||
uint amount = min(num_pieces, 0xFFFFU - ind->incoming_cargo_waiting[cargo_index]);
|
||||
uint amount = std::min(num_pieces, 0xFFFFu - ind->incoming_cargo_waiting[cargo_index]);
|
||||
ind->incoming_cargo_waiting[cargo_index] += amount;
|
||||
ind->last_cargo_accepted_at[cargo_index] = _date;
|
||||
num_pieces -= amount;
|
||||
@@ -1200,7 +1200,7 @@ static void TriggerIndustryProduction(Industry *i)
|
||||
if (cargo_waiting == 0) continue;
|
||||
|
||||
for (uint ci_out = 0; ci_out < lengthof(i->produced_cargo_waiting); ci_out++) {
|
||||
i->produced_cargo_waiting[ci_out] = min(i->produced_cargo_waiting[ci_out] + (cargo_waiting * indspec->input_cargo_multiplier[ci_in][ci_out] / 256), 0xFFFF);
|
||||
i->produced_cargo_waiting[ci_out] = std::min(i->produced_cargo_waiting[ci_out] + (cargo_waiting * indspec->input_cargo_multiplier[ci_in][ci_out] / 256), 0xFFFFu);
|
||||
}
|
||||
|
||||
i->incoming_cargo_waiting[ci_in] = 0;
|
||||
@@ -1402,7 +1402,7 @@ static uint GetLoadAmount(Vehicle *v)
|
||||
if (HasBit(e->info.misc_flags, EF_NO_DEFAULT_CARGO_MULTIPLIER) && !air_mail) load_amount = CeilDiv(load_amount * CargoSpec::Get(v->cargo_type)->multiplier, 0x100);
|
||||
|
||||
/* Zero load amount breaks a lot of things. */
|
||||
return max(1u, load_amount);
|
||||
return std::max(1u, load_amount);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1726,7 +1726,7 @@ static void UpdateLoadUnloadTicks(Vehicle *front, const Station *st, int ticks,
|
||||
}
|
||||
}
|
||||
/* Always wait at least 1, otherwise we'll wait 'infinitively' long. */
|
||||
front->load_unload_ticks = max(1, ticks);
|
||||
front->load_unload_ticks = std::max(1, ticks);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1873,7 +1873,7 @@ static void LoadUnloadVehicle(Vehicle *front)
|
||||
|
||||
if (HasBit(v->vehicle_flags, VF_CARGO_UNLOADING) && (GetUnloadType(v) & OUFB_NO_UNLOAD) == 0) {
|
||||
uint cargo_count = v->cargo.UnloadCount();
|
||||
uint amount_unloaded = _settings_game.order.gradual_loading ? min(cargo_count, GetLoadAmount(v)) : cargo_count;
|
||||
uint amount_unloaded = _settings_game.order.gradual_loading ? std::min(cargo_count, GetLoadAmount(v)) : cargo_count;
|
||||
bool remaining = false; // Are there cargo entities in this vehicle that can still be unloaded here?
|
||||
|
||||
assert(payment != nullptr);
|
||||
@@ -1976,8 +1976,8 @@ static void LoadUnloadVehicle(Vehicle *front)
|
||||
}
|
||||
|
||||
/* if last speed is 0, we treat that as if no vehicle has ever visited the station. */
|
||||
ge->last_speed = min(t, 255);
|
||||
ge->last_age = min(_cur_year - front->build_year, 255);
|
||||
ge->last_speed = std::min(t, 255);
|
||||
ge->last_age = std::min(_cur_year - front->build_year, 255);
|
||||
|
||||
assert(v->cargo_cap >= v->cargo.StoredCount());
|
||||
/* Capacity available for loading more cargo. */
|
||||
@@ -1991,7 +1991,7 @@ static void LoadUnloadVehicle(Vehicle *front)
|
||||
* has capacity for it, load it on the vehicle. */
|
||||
if ((v->cargo.ActionCount(VehicleCargoList::MTA_LOAD) > 0 || ge->cargo.AvailableCount() > 0) && MayLoadUnderExclusiveRights(st, v)) {
|
||||
if (v->cargo.StoredCount() == 0) TriggerVehicle(v, VEHICLE_TRIGGER_NEW_CARGO);
|
||||
if (_settings_game.order.gradual_loading) cap_left = min(cap_left, GetLoadAmount(v));
|
||||
if (_settings_game.order.gradual_loading) cap_left = std::min(cap_left, GetLoadAmount(v));
|
||||
|
||||
uint loaded = ge->cargo.Load(cap_left, &v->cargo, st->xy, next_station.Get(v->cargo_type));
|
||||
if (v->cargo.ActionCount(VehicleCargoList::MTA_LOAD) > 0) {
|
||||
@@ -2095,7 +2095,7 @@ static void LoadUnloadVehicle(Vehicle *front)
|
||||
/* We loaded less cargo than possible for all cargo types and it's not full
|
||||
* load and we're not supposed to wait any longer: stop loading. */
|
||||
if (!anything_unloaded && full_load_amount == 0 && reservation_left == 0 && full_load_cargo_mask == 0 &&
|
||||
(front->current_order_time >= (uint)max<int>(front->current_order.GetTimetabledWait() - front->lateness_counter, 0) ||
|
||||
(front->current_order_time >= (uint)std::max<int>(front->current_order.GetTimetabledWait() - front->lateness_counter, 0) ||
|
||||
may_leave_early())) {
|
||||
SetBit(front->vehicle_flags, VF_STOP_LOADING);
|
||||
if (may_leave_early()) {
|
||||
|
@@ -262,7 +262,8 @@ static int GetPCPElevation(TileIndex tile, DiagDirection PCPpos)
|
||||
* Also note that the result of GetSlopePixelZ() is very special on bridge-ramps.
|
||||
*/
|
||||
|
||||
int z = GetSlopePixelZ(TileX(tile) * TILE_SIZE + min(x_pcp_offsets[PCPpos], TILE_SIZE - 1), TileY(tile) * TILE_SIZE + min(y_pcp_offsets[PCPpos], TILE_SIZE - 1));
|
||||
int z = GetSlopePixelZ(TileX(tile) * TILE_SIZE + std::min<int8>(x_pcp_offsets[PCPpos], TILE_SIZE - 1),
|
||||
TileY(tile) * TILE_SIZE + std::min<int8>(y_pcp_offsets[PCPpos], TILE_SIZE - 1));
|
||||
return (z + 2) & ~3; // this means z = (z + TILE_HEIGHT / 4) / (TILE_HEIGHT / 2) * (TILE_HEIGHT / 2);
|
||||
}
|
||||
|
||||
|
@@ -600,7 +600,7 @@ static void CalcEngineReliability(Engine *e)
|
||||
/* Check for early retirement */
|
||||
if (e->company_avail != 0 && !_settings_game.vehicle.never_expire_vehicles && e->info.base_life != 0xFF) {
|
||||
int retire_early = e->info.retire_early;
|
||||
uint retire_early_max_age = max(0, e->duration_phase_1 + e->duration_phase_2 - retire_early * 12);
|
||||
uint retire_early_max_age = std::max(0, e->duration_phase_1 + e->duration_phase_2 - retire_early * 12);
|
||||
if (retire_early != 0 && age >= retire_early_max_age) {
|
||||
/* Early retirement is enabled and we're past the date... */
|
||||
RetireEngineIfPossible(e, retire_early_max_age);
|
||||
@@ -645,7 +645,7 @@ void SetYearEngineAgingStops()
|
||||
YearMonthDay ymd;
|
||||
ConvertDateToYMD(ei->base_intro + (ei->lifelength * DAYS_IN_LEAP_YEAR) / 2, &ymd);
|
||||
|
||||
_year_engine_aging_stops = max(_year_engine_aging_stops, ymd.year);
|
||||
_year_engine_aging_stops = std::max(_year_engine_aging_stops, ymd.year);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -713,7 +713,7 @@ void StartupOneEngine(Engine *e, Date aging_date)
|
||||
void StartupEngines()
|
||||
{
|
||||
/* Aging of vehicles stops, so account for that when starting late */
|
||||
const Date aging_date = min(_date, ConvertYMDToDate(_year_engine_aging_stops, 0, 1));
|
||||
const Date aging_date = std::min(_date, ConvertYMDToDate(_year_engine_aging_stops, 0, 1));
|
||||
|
||||
for (Engine *e : Engine::Iterate()) {
|
||||
StartupOneEngine(e, aging_date);
|
||||
@@ -755,6 +755,7 @@ static void EnableEngineForCompany(EngineID eid, CompanyID company)
|
||||
InvalidateWindowData(WC_MAIN_TOOLBAR, 0);
|
||||
if (e->type == VEH_ROAD) InvalidateWindowData(WC_BUILD_TOOLBAR, TRANSPORT_ROAD);
|
||||
if (e->type == VEH_SHIP) InvalidateWindowData(WC_BUILD_TOOLBAR, TRANSPORT_WATER);
|
||||
if (e->type == VEH_AIRCRAFT) InvalidateWindowData(WC_BUILD_TOOLBAR, TRANSPORT_AIR);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1038,6 +1039,7 @@ static void NewVehicleAvailable(Engine *e)
|
||||
/* Update the toolbar. */
|
||||
if (e->type == VEH_ROAD) InvalidateWindowData(WC_BUILD_TOOLBAR, TRANSPORT_ROAD);
|
||||
if (e->type == VEH_SHIP) InvalidateWindowData(WC_BUILD_TOOLBAR, TRANSPORT_WATER);
|
||||
if (e->type == VEH_AIRCRAFT) InvalidateWindowData(WC_BUILD_TOOLBAR, TRANSPORT_AIR);
|
||||
|
||||
/* Close pending preview windows */
|
||||
DeleteWindowById(WC_ENGINE_PREVIEW, index);
|
||||
@@ -1216,7 +1218,7 @@ void CheckEngines()
|
||||
if ((e->flags & ENGINE_AVAILABLE) != 0 && e->company_avail != 0) return;
|
||||
|
||||
/* Okay, try to find the earliest date. */
|
||||
min_date = min(min_date, e->info.base_intro);
|
||||
min_date = std::min(min_date, e->info.base_intro);
|
||||
}
|
||||
|
||||
if (min_date < INT32_MAX) {
|
||||
|
@@ -93,9 +93,9 @@ struct EnginePreviewWindow : Window {
|
||||
case VEH_SHIP: GetShipSpriteSize( engine, x, y, x_offs, y_offs, image_type); break;
|
||||
case VEH_AIRCRAFT: GetAircraftSpriteSize(engine, x, y, x_offs, y_offs, image_type); break;
|
||||
}
|
||||
this->vehicle_space = max<int>(40, y - y_offs);
|
||||
this->vehicle_space = std::max<int>(40, y - y_offs);
|
||||
|
||||
size->width = max(size->width, x - x_offs);
|
||||
size->width = std::max(size->width, x - x_offs);
|
||||
SetDParam(0, GetEngineCategoryName(engine));
|
||||
size->height = GetStringHeight(STR_ENGINE_PREVIEW_MESSAGE, size->width) + WD_PAR_VSEP_WIDE + FONT_HEIGHT_NORMAL + this->vehicle_space;
|
||||
SetDParam(0, engine);
|
||||
|
@@ -13,6 +13,7 @@
|
||||
#include "strings_type.h"
|
||||
#include "company_type.h"
|
||||
#include "core/geometry_type.hpp"
|
||||
#include "guitimer_func.h"
|
||||
|
||||
struct GRFFile;
|
||||
|
||||
@@ -27,7 +28,7 @@ enum WarningLevel {
|
||||
/** The data of the error message. */
|
||||
class ErrorMessageData {
|
||||
protected:
|
||||
uint duration; ///< Length of display of the message. 0 means forever,
|
||||
GUITimer display_timer; ///< Timer before closing the message.
|
||||
uint64 decode_params[20]; ///< Parameters of the message strings.
|
||||
const char *strings[20]; ///< Copies of raw strings that were used.
|
||||
const GRFFile *textref_stack_grffile; ///< NewGRF that filled the #TextRefStack for the error message.
|
||||
|
@@ -71,7 +71,7 @@ static WindowDesc _errmsg_face_desc(
|
||||
* @param data The data to copy.
|
||||
*/
|
||||
ErrorMessageData::ErrorMessageData(const ErrorMessageData &data) :
|
||||
duration(data.duration), textref_stack_grffile(data.textref_stack_grffile), textref_stack_size(data.textref_stack_size),
|
||||
display_timer(data.display_timer), textref_stack_grffile(data.textref_stack_grffile), textref_stack_size(data.textref_stack_size),
|
||||
summary_msg(data.summary_msg), detailed_msg(data.detailed_msg), extra_msg(data.extra_msg), position(data.position), face(data.face)
|
||||
{
|
||||
memcpy(this->textref_stack, data.textref_stack, sizeof(this->textref_stack));
|
||||
@@ -104,7 +104,6 @@ ErrorMessageData::~ErrorMessageData()
|
||||
* @param extra_msg Extra error message showed in third line. Can be INVALID_STRING_ID.
|
||||
*/
|
||||
ErrorMessageData::ErrorMessageData(StringID summary_msg, StringID detailed_msg, uint duration, int x, int y, const GRFFile *textref_stack_grffile, uint textref_stack_size, const uint32 *textref_stack, StringID extra_msg) :
|
||||
duration(duration),
|
||||
textref_stack_grffile(textref_stack_grffile),
|
||||
textref_stack_size(textref_stack_size),
|
||||
summary_msg(summary_msg),
|
||||
@@ -121,6 +120,8 @@ ErrorMessageData::ErrorMessageData(StringID summary_msg, StringID detailed_msg,
|
||||
if (textref_stack_size > 0) MemCpyT(this->textref_stack, textref_stack, textref_stack_size);
|
||||
|
||||
assert(summary_msg != INVALID_STRING_ID);
|
||||
|
||||
this->display_timer.SetInterval(duration * 3000);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -192,7 +193,7 @@ public:
|
||||
CopyInDParam(0, this->decode_params, lengthof(this->decode_params));
|
||||
if (this->textref_stack_size > 0) StartTextRefStackUsage(this->textref_stack_grffile, this->textref_stack_size, this->textref_stack);
|
||||
|
||||
int text_width = max(0, (int)size->width - WD_FRAMETEXT_LEFT - WD_FRAMETEXT_RIGHT);
|
||||
int text_width = std::max(0, (int)size->width - WD_FRAMETEXT_LEFT - WD_FRAMETEXT_RIGHT);
|
||||
this->height_summary = GetStringHeight(this->summary_msg, text_width);
|
||||
this->height_detailed = (this->detailed_msg == INVALID_STRING_ID) ? 0 : GetStringHeight(this->detailed_msg, text_width);
|
||||
this->height_extra = (this->extra_msg == INVALID_STRING_ID) ? 0 : GetStringHeight(this->extra_msg, text_width);
|
||||
@@ -203,13 +204,13 @@ public:
|
||||
if (this->detailed_msg != INVALID_STRING_ID) panel_height += this->height_detailed + WD_PAR_VSEP_WIDE;
|
||||
if (this->extra_msg != INVALID_STRING_ID) panel_height += this->height_extra + WD_PAR_VSEP_WIDE;
|
||||
|
||||
size->height = max(size->height, panel_height);
|
||||
size->height = std::max(size->height, panel_height);
|
||||
break;
|
||||
}
|
||||
case WID_EM_FACE: {
|
||||
Dimension face_size = GetSpriteSize(SPR_GRADIENT);
|
||||
size->width = max(size->width, face_size.width);
|
||||
size->height = max(size->height, face_size.height);
|
||||
size->width = std::max(size->width, face_size.width);
|
||||
size->height = std::max(size->height, face_size.height);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -317,16 +318,14 @@ public:
|
||||
void OnMouseLoop() override
|
||||
{
|
||||
/* Disallow closing the window too easily, if timeout is disabled */
|
||||
if (_right_button_down && this->duration != 0) delete this;
|
||||
if (_right_button_down && !this->display_timer.HasElapsed()) delete this;
|
||||
}
|
||||
|
||||
void OnHundredthTick() override
|
||||
void OnRealtimeTick(uint delta_ms) override
|
||||
{
|
||||
/* Timeout enabled? */
|
||||
if (this->duration != 0) {
|
||||
this->duration--;
|
||||
if (this->duration == 0) delete this;
|
||||
}
|
||||
if (this->display_timer.CountElapsed(delta_ms) == 0) return;
|
||||
|
||||
delete this;
|
||||
}
|
||||
|
||||
~ErrmsgWindow()
|
||||
@@ -341,7 +340,7 @@ public:
|
||||
*/
|
||||
bool IsCritical()
|
||||
{
|
||||
return this->duration == 0;
|
||||
return this->display_timer.HasElapsed();
|
||||
}
|
||||
};
|
||||
|
||||
|
@@ -24,7 +24,6 @@
|
||||
#include <pwd.h>
|
||||
#endif
|
||||
#include <sys/stat.h>
|
||||
#include <algorithm>
|
||||
#include <array>
|
||||
#include <sstream>
|
||||
|
||||
@@ -125,7 +124,7 @@ byte FioReadByte()
|
||||
void FioSkipBytes(int n)
|
||||
{
|
||||
for (;;) {
|
||||
int m = min(_fio.buffer_end - _fio.buffer, n);
|
||||
int m = std::min<int>(_fio.buffer_end - _fio.buffer, n);
|
||||
_fio.buffer += m;
|
||||
n -= m;
|
||||
if (n == 0) break;
|
||||
@@ -898,7 +897,7 @@ bool ExtractTar(const std::string &tar_filename, Subdirectory subdir)
|
||||
char buffer[4096];
|
||||
size_t read;
|
||||
for (; to_copy != 0; to_copy -= read) {
|
||||
read = fread(buffer, 1, min(to_copy, lengthof(buffer)), in.get());
|
||||
read = fread(buffer, 1, std::min(to_copy, lengthof(buffer)), in.get());
|
||||
if (read <= 0 || fwrite(buffer, 1, read, out.get()) != read) break;
|
||||
}
|
||||
|
||||
|
@@ -496,7 +496,7 @@ void FreeTypeFontCache::SetFontSize(FontSize fs, FT_Face face, int pixels)
|
||||
/* Font height is minimum height plus the difference between the default
|
||||
* height for this font size and the small size. */
|
||||
int diff = scaled_height - ScaleFontTrad(_default_font_height[FS_SMALL]);
|
||||
pixels = Clamp(min(head->Lowest_Rec_PPEM, 20) + diff, scaled_height, MAX_FONT_SIZE);
|
||||
pixels = Clamp(std::min<uint>(head->Lowest_Rec_PPEM, 20u) + diff, scaled_height, MAX_FONT_SIZE);
|
||||
}
|
||||
} else {
|
||||
pixels = ScaleFontTrad(pixels);
|
||||
@@ -662,8 +662,8 @@ const Sprite *FreeTypeFontCache::InternalGetGlyph(GlyphID key, bool aa)
|
||||
aa = (slot->bitmap.pixel_mode == FT_PIXEL_MODE_GRAY);
|
||||
|
||||
/* Add 1 pixel for the shadow on the medium font. Our sprite must be at least 1x1 pixel */
|
||||
uint width = max(1U, (uint)slot->bitmap.width + (this->fs == FS_NORMAL));
|
||||
uint height = max(1U, (uint)slot->bitmap.rows + (this->fs == FS_NORMAL));
|
||||
uint width = std::max(1U, (uint)slot->bitmap.width + (this->fs == FS_NORMAL));
|
||||
uint height = std::max(1U, (uint)slot->bitmap.rows + (this->fs == FS_NORMAL));
|
||||
|
||||
/* Limit glyph size to prevent overflows later on. */
|
||||
if (width > 256 || height > 256) usererror("Font glyph is too large");
|
||||
@@ -803,7 +803,7 @@ void Win32FontCache::SetFontSize(FontSize fs, int pixels)
|
||||
/* Font height is minimum height plus the difference between the default
|
||||
* height for this font size and the small size. */
|
||||
int diff = scaled_height - ScaleFontTrad(_default_font_height[FS_SMALL]);
|
||||
pixels = Clamp(min(otm->otmusMinimumPPEM, 20) + diff, scaled_height, MAX_FONT_SIZE);
|
||||
pixels = Clamp(std::min(otm->otmusMinimumPPEM, 20u) + diff, scaled_height, MAX_FONT_SIZE);
|
||||
|
||||
SelectObject(dc, old);
|
||||
DeleteObject(temp);
|
||||
@@ -859,7 +859,7 @@ void Win32FontCache::ClearFontCache()
|
||||
MAT2 mat = { {0, 1}, {0, 0}, {0, 0}, {0, 1} };
|
||||
|
||||
/* Make a guess for the needed memory size. */
|
||||
DWORD size = this->glyph_size.cy * Align(aa ? this->glyph_size.cx : max(this->glyph_size.cx / 8l, 1l), 4); // Bitmap data is DWORD-aligned rows.
|
||||
DWORD size = this->glyph_size.cy * Align(aa ? this->glyph_size.cx : std::max(this->glyph_size.cx / 8l, 1l), 4); // Bitmap data is DWORD-aligned rows.
|
||||
byte *bmp = AllocaM(byte, size);
|
||||
size = GetGlyphOutline(this->dc, key, GGO_GLYPH_INDEX | (aa ? GGO_GRAY8_BITMAP : GGO_BITMAP), &gm, size, bmp, &mat);
|
||||
|
||||
@@ -876,8 +876,8 @@ void Win32FontCache::ClearFontCache()
|
||||
}
|
||||
|
||||
/* Add 1 pixel for the shadow on the medium font. Our sprite must be at least 1x1 pixel. */
|
||||
uint width = max(1U, (uint)gm.gmBlackBoxX + (this->fs == FS_NORMAL));
|
||||
uint height = max(1U, (uint)gm.gmBlackBoxY + (this->fs == FS_NORMAL));
|
||||
uint width = std::max(1U, (uint)gm.gmBlackBoxX + (this->fs == FS_NORMAL));
|
||||
uint height = std::max(1U, (uint)gm.gmBlackBoxY + (this->fs == FS_NORMAL));
|
||||
|
||||
/* Limit glyph size to prevent overflows later on. */
|
||||
if (width > 256 || height > 256) usererror("Font glyph is too large");
|
||||
@@ -897,7 +897,7 @@ void Win32FontCache::ClearFontCache()
|
||||
* For anti-aliased rendering, GDI uses the strange value range of 0 to 64,
|
||||
* inclusively. To map this to 0 to 255, we shift left by two and then
|
||||
* subtract one. */
|
||||
uint pitch = Align(aa ? gm.gmBlackBoxX : max(gm.gmBlackBoxX / 8u, 1u), 4);
|
||||
uint pitch = Align(aa ? gm.gmBlackBoxX : std::max(gm.gmBlackBoxX / 8u, 1u), 4);
|
||||
|
||||
/* Draw shadow for medium size. */
|
||||
if (this->fs == FS_NORMAL && !aa) {
|
||||
|
@@ -222,7 +222,7 @@ static const char *GetEnglishFontName(const ENUMLOGFONTEX *logfont)
|
||||
offset += buf[pos++];
|
||||
|
||||
/* Don't buffer overflow */
|
||||
length = min(length, MAX_PATH - 1);
|
||||
length = std::min(length, MAX_PATH - 1);
|
||||
for (uint j = 0; j < length; j++) font_name[j] = buf[stringOffset + offset + j];
|
||||
font_name[length] = '\0';
|
||||
|
||||
|
@@ -76,7 +76,7 @@ namespace {
|
||||
this->prev_index = this->next_index;
|
||||
this->next_index += 1;
|
||||
if (this->next_index >= NUM_FRAMERATE_POINTS) this->next_index = 0;
|
||||
this->num_valid = min(NUM_FRAMERATE_POINTS, this->num_valid + 1);
|
||||
this->num_valid = std::min(NUM_FRAMERATE_POINTS, this->num_valid + 1);
|
||||
}
|
||||
|
||||
/** Begin an accumulation of multiple measurements into a single value, from a given start time */
|
||||
@@ -87,7 +87,7 @@ namespace {
|
||||
this->prev_index = this->next_index;
|
||||
this->next_index += 1;
|
||||
if (this->next_index >= NUM_FRAMERATE_POINTS) this->next_index = 0;
|
||||
this->num_valid = min(NUM_FRAMERATE_POINTS, this->num_valid + 1);
|
||||
this->num_valid = std::min(NUM_FRAMERATE_POINTS, this->num_valid + 1);
|
||||
|
||||
this->acc_duration = 0;
|
||||
this->acc_timestamp = start_time;
|
||||
@@ -115,7 +115,7 @@ namespace {
|
||||
/** Get average cycle processing time over a number of data points */
|
||||
double GetAverageDurationMilliseconds(int count)
|
||||
{
|
||||
count = min(count, this->num_valid);
|
||||
count = std::min(count, this->num_valid);
|
||||
|
||||
int first_point = this->prev_index - count;
|
||||
if (first_point < 0) first_point += NUM_FRAMERATE_POINTS;
|
||||
@@ -395,7 +395,7 @@ struct FramerateWindow : Window {
|
||||
{
|
||||
const double threshold_good = target * 0.95;
|
||||
const double threshold_bad = target * 2 / 3;
|
||||
value = min(9999.99, value);
|
||||
value = std::min(9999.99, value);
|
||||
this->value = (uint32)(value * 100);
|
||||
this->strid = (value > threshold_good) ? STR_FRAMERATE_FPS_GOOD : (value < threshold_bad) ? STR_FRAMERATE_FPS_BAD : STR_FRAMERATE_FPS_WARN;
|
||||
}
|
||||
@@ -404,7 +404,7 @@ struct FramerateWindow : Window {
|
||||
{
|
||||
const double threshold_good = target / 3;
|
||||
const double threshold_bad = target;
|
||||
value = min(9999.99, value);
|
||||
value = std::min(9999.99, value);
|
||||
this->value = (uint32)(value * 100);
|
||||
this->strid = (value < threshold_good) ? STR_FRAMERATE_MS_GOOD : (value > threshold_bad) ? STR_FRAMERATE_MS_BAD : STR_FRAMERATE_MS_WARN;
|
||||
}
|
||||
@@ -422,8 +422,8 @@ struct FramerateWindow : Window {
|
||||
CachedDecimal times_shortterm[PFE_MAX]; ///< cached short term average times
|
||||
CachedDecimal times_longterm[PFE_MAX]; ///< cached long term average times
|
||||
|
||||
static const int VSPACING = 3; ///< space between column heading and values
|
||||
static const int MIN_ELEMENTS = 5; ///< smallest number of elements to display
|
||||
static constexpr int VSPACING = 3; ///< space between column heading and values
|
||||
static constexpr int MIN_ELEMENTS = 5; ///< smallest number of elements to display
|
||||
|
||||
FramerateWindow(WindowDesc *desc, WindowNumber number) : Window(desc)
|
||||
{
|
||||
@@ -435,7 +435,7 @@ struct FramerateWindow : Window {
|
||||
this->next_update.SetInterval(100);
|
||||
|
||||
/* Window is always initialised to MIN_ELEMENTS height, resize to contain num_displayed */
|
||||
ResizeWindow(this, 0, (max(MIN_ELEMENTS, this->num_displayed) - MIN_ELEMENTS) * FONT_HEIGHT_NORMAL);
|
||||
ResizeWindow(this, 0, (std::max(MIN_ELEMENTS, this->num_displayed) - MIN_ELEMENTS) * FONT_HEIGHT_NORMAL);
|
||||
}
|
||||
|
||||
void OnRealtimeTick(uint delta_ms) override
|
||||
@@ -486,7 +486,7 @@ struct FramerateWindow : Window {
|
||||
this->num_active = new_active;
|
||||
Scrollbar *sb = this->GetScrollbar(WID_FRW_SCROLLBAR);
|
||||
sb->SetCount(this->num_active);
|
||||
sb->SetCapacity(min(this->num_displayed, this->num_active));
|
||||
sb->SetCapacity(std::min(this->num_displayed, this->num_active));
|
||||
this->ReInit();
|
||||
}
|
||||
}
|
||||
@@ -555,7 +555,7 @@ struct FramerateWindow : Window {
|
||||
SetDParamStr(1, GetAIName(e - PFE_AI0));
|
||||
line_size = GetStringBoundingBox(STR_FRAMERATE_AI);
|
||||
}
|
||||
size->width = max(size->width, line_size.width);
|
||||
size->width = std::max(size->width, line_size.width);
|
||||
}
|
||||
break;
|
||||
}
|
||||
@@ -567,7 +567,7 @@ struct FramerateWindow : Window {
|
||||
SetDParam(0, 999999);
|
||||
SetDParam(1, 2);
|
||||
Dimension item_size = GetStringBoundingBox(STR_FRAMERATE_MS_GOOD);
|
||||
size->width = max(size->width, item_size.width);
|
||||
size->width = std::max(size->width, item_size.width);
|
||||
size->height += FONT_HEIGHT_NORMAL * MIN_ELEMENTS + VSPACING;
|
||||
resize->width = 0;
|
||||
resize->height = FONT_HEIGHT_NORMAL;
|
||||
@@ -769,7 +769,7 @@ struct FrametimeGraphWindow : Window {
|
||||
Dimension size_s_label = GetStringBoundingBox(STR_FRAMERATE_GRAPH_SECONDS);
|
||||
|
||||
/* Size graph in height to fit at least 10 vertical labels with space between, or at least 100 pixels */
|
||||
graph_size.height = max<uint>(100, 10 * (size_ms_label.height + 1));
|
||||
graph_size.height = std::max(100u, 10 * (size_ms_label.height + 1));
|
||||
/* Always 2:1 graph area */
|
||||
graph_size.width = 2 * graph_size.height;
|
||||
*size = graph_size;
|
||||
@@ -980,7 +980,7 @@ struct FrametimeGraphWindow : Window {
|
||||
TextColour tc_peak = (TextColour)(TC_IS_PALETTE_COLOUR | c_peak);
|
||||
GfxFillRect(peak_point.x - 1, peak_point.y - 1, peak_point.x + 1, peak_point.y + 1, c_peak);
|
||||
SetDParam(0, peak_value * 1000 / TIMESTAMP_PRECISION);
|
||||
int label_y = max(y_max, peak_point.y - FONT_HEIGHT_SMALL);
|
||||
int label_y = std::max(y_max, peak_point.y - FONT_HEIGHT_SMALL);
|
||||
if (peak_point.x - x_zero > (int)this->graph_size.width / 2) {
|
||||
DrawString(x_zero, peak_point.x - 2, label_y, STR_FRAMERATE_GRAPH_MILLISECONDS, tc_peak, SA_RIGHT | SA_FORCE, false, FS_SMALL);
|
||||
} else {
|
||||
|
@@ -790,7 +790,7 @@ void GamelogInfo(LoggedAction *gamelog_action, uint gamelog_actions, uint32 *las
|
||||
|
||||
case GLCT_REVISION:
|
||||
*last_ottd_rev = lc->revision.newgrf;
|
||||
*ever_modified = max(*ever_modified, lc->revision.modified);
|
||||
*ever_modified = std::max(*ever_modified, lc->revision.modified);
|
||||
break;
|
||||
|
||||
case GLCT_GRFREM:
|
||||
|
@@ -549,7 +549,7 @@ struct GenerateLandscapeWindow : public Window {
|
||||
}
|
||||
}
|
||||
size->width += padding.width;
|
||||
size->height = max(size->height, (uint)(FONT_HEIGHT_NORMAL + WD_DROPDOWNTEXT_TOP + WD_DROPDOWNTEXT_BOTTOM));
|
||||
size->height = std::max(size->height, (uint)(FONT_HEIGHT_NORMAL + WD_DROPDOWNTEXT_TOP + WD_DROPDOWNTEXT_BOTTOM));
|
||||
}
|
||||
|
||||
void DrawWidget(const Rect &r, int widget) const override
|
||||
@@ -1270,7 +1270,7 @@ struct GenerateProgressWindow : public Window {
|
||||
|
||||
case WID_GP_PROGRESS_TEXT:
|
||||
for (uint i = 0; i < GWP_CLASS_COUNT; i++) {
|
||||
size->width = max(size->width, GetStringBoundingBox(_generation_class_table[i]).width);
|
||||
size->width = std::max(size->width, GetStringBoundingBox(_generation_class_table[i]).width);
|
||||
}
|
||||
size->height = FONT_HEIGHT_NORMAL * 2 + WD_PAR_VSEP_NORMAL;
|
||||
break;
|
||||
|
36
src/gfx.cpp
36
src/gfx.cpp
@@ -283,8 +283,8 @@ void GfxFillPolygon(const std::vector<Point> &shape, int colour, FillRectMode mo
|
||||
std::sort(intersections.begin(), intersections.end());
|
||||
for (size_t i = 1; i < intersections.size(); i += 2) {
|
||||
/* Check clipping. */
|
||||
const int x1 = max(0, intersections[i - 1]);
|
||||
const int x2 = min(intersections[i], dpi->width);
|
||||
const int x1 = std::max(0, intersections[i - 1]);
|
||||
const int x2 = std::min(intersections[i], dpi->width);
|
||||
if (x2 < 0) continue;
|
||||
if (x1 >= dpi->width) continue;
|
||||
|
||||
@@ -347,7 +347,7 @@ static inline void GfxDoDrawLine(void *video, int x, int y, int x2, int y2, int
|
||||
|
||||
/* prevent integer overflows. */
|
||||
int margin = 1;
|
||||
while (INT_MAX / abs(grade_y) < max(abs(clip.left - x), abs(clip.right - x))) {
|
||||
while (INT_MAX / abs(grade_y) < std::max(abs(clip.left - x), abs(clip.right - x))) {
|
||||
grade_y /= 2;
|
||||
grade_x /= 2;
|
||||
margin *= 2; // account for rounding errors
|
||||
@@ -656,7 +656,7 @@ static int DrawLayoutLine(const ParagraphLayouter::Line &line, int y, int left,
|
||||
int DrawString(int left, int right, int top, const char *str, TextColour colour, StringAlignment align, bool underline, FontSize fontsize)
|
||||
{
|
||||
/* The string may contain control chars to change the font, just use the biggest font for clipping. */
|
||||
int max_height = max(max(FONT_HEIGHT_SMALL, FONT_HEIGHT_NORMAL), max(FONT_HEIGHT_LARGE, FONT_HEIGHT_MONO));
|
||||
int max_height = std::max({FONT_HEIGHT_SMALL, FONT_HEIGHT_NORMAL, FONT_HEIGHT_LARGE, FONT_HEIGHT_MONO});
|
||||
|
||||
/* Funny glyphs may extent outside the usual bounds, so relax the clipping somewhat. */
|
||||
int extra = max_height / 2;
|
||||
@@ -936,8 +936,8 @@ Dimension GetSpriteSize(SpriteID sprid, Point *offset, ZoomLevel zoom)
|
||||
}
|
||||
|
||||
Dimension d;
|
||||
d.width = max<int>(0, UnScaleByZoom(sprite->x_offs + sprite->width, zoom));
|
||||
d.height = max<int>(0, UnScaleByZoom(sprite->y_offs + sprite->height, zoom));
|
||||
d.width = std::max<int>(0, UnScaleByZoom(sprite->x_offs + sprite->width, zoom));
|
||||
d.height = std::max<int>(0, UnScaleByZoom(sprite->y_offs + sprite->height, zoom));
|
||||
return d;
|
||||
}
|
||||
|
||||
@@ -1045,10 +1045,10 @@ static void GfxBlitter(const Sprite * const sprite, int x, int y, BlitterMode mo
|
||||
bp.height = UnScaleByZoom(sprite->height, zoom);
|
||||
} else {
|
||||
/* Amount of pixels to clip from the source sprite */
|
||||
int clip_left = max(0, -sprite->x_offs + sub->left * ZOOM_BASE );
|
||||
int clip_top = max(0, -sprite->y_offs + sub->top * ZOOM_BASE );
|
||||
int clip_right = max(0, sprite->width - (-sprite->x_offs + (sub->right + 1) * ZOOM_BASE));
|
||||
int clip_bottom = max(0, sprite->height - (-sprite->y_offs + (sub->bottom + 1) * ZOOM_BASE));
|
||||
int clip_left = std::max(0, -sprite->x_offs + sub->left * ZOOM_BASE );
|
||||
int clip_top = std::max(0, -sprite->y_offs + sub->top * ZOOM_BASE );
|
||||
int clip_right = std::max(0, sprite->width - (-sprite->x_offs + (sub->right + 1) * ZOOM_BASE));
|
||||
int clip_bottom = std::max(0, sprite->height - (-sprite->y_offs + (sub->bottom + 1) * ZOOM_BASE));
|
||||
|
||||
if (clip_left + clip_right >= sprite->width) return;
|
||||
if (clip_top + clip_bottom >= sprite->height) return;
|
||||
@@ -1328,7 +1328,7 @@ byte GetDigitWidth(FontSize size)
|
||||
{
|
||||
byte width = 0;
|
||||
for (char c = '0'; c <= '9'; c++) {
|
||||
width = max(GetCharacterWidth(size, c), width);
|
||||
width = std::max(GetCharacterWidth(size, c), width);
|
||||
}
|
||||
return width;
|
||||
}
|
||||
@@ -1525,7 +1525,7 @@ static void DrawOverlappedWindowWithClipping(Window *w, int left, int top, int r
|
||||
|
||||
if (right < 0 || bottom < 0 || left >= _screen.width || top >= _screen.height) return;
|
||||
|
||||
DrawOverlappedWindow(w, max(0, left), max(0, top), min(_screen.width, right), min(_screen.height, bottom), flags);
|
||||
DrawOverlappedWindow(w, std::max(0, left), std::max(0, top), std::min(_screen.width, right), std::min(_screen.height, bottom), flags);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1722,10 +1722,10 @@ void DrawDirtyBlocks()
|
||||
no_more_coalesc:
|
||||
|
||||
assert(_cur_dpi == &bk);
|
||||
int draw_left = max<int>(0, ((left == 0) ? 0 : vp->dirty_block_left_margin + (left << vp->GetDirtyBlockWidthShift())) + vp->left);
|
||||
int draw_top = max<int>(0, (top << vp->GetDirtyBlockHeightShift()) + vp->top);
|
||||
int draw_right = min<int>(_screen.width, min<int>((right << vp->GetDirtyBlockWidthShift()) + vp->dirty_block_left_margin, vp->width) + vp->left);
|
||||
int draw_bottom = min<int>(_screen.height, min<int>(bottom << vp->GetDirtyBlockHeightShift(), vp->height) + vp->top);
|
||||
int draw_left = std::max<int>(0, ((left == 0) ? 0 : vp->dirty_block_left_margin + (left << vp->GetDirtyBlockWidthShift())) + vp->left);
|
||||
int draw_top = std::max<int>(0, (top << vp->GetDirtyBlockHeightShift()) + vp->top);
|
||||
int draw_right = std::min<int>(_screen.width, std::min<int>((right << vp->GetDirtyBlockWidthShift()) + vp->dirty_block_left_margin, vp->width) + vp->left);
|
||||
int draw_bottom = std::min<int>(_screen.height, std::min<int>(bottom << vp->GetDirtyBlockHeightShift(), vp->height) + vp->top);
|
||||
if (draw_left < draw_right && draw_top < draw_bottom) {
|
||||
DrawDirtyViewport(0, draw_left, draw_top, draw_right, draw_bottom);
|
||||
}
|
||||
@@ -2001,8 +2001,8 @@ void UpdateCursorSize()
|
||||
_cursor.total_offs = offs;
|
||||
_cursor.total_size = size;
|
||||
} else {
|
||||
int right = max(_cursor.total_offs.x + _cursor.total_size.x, offs.x + size.x);
|
||||
int bottom = max(_cursor.total_offs.y + _cursor.total_size.y, offs.y + size.y);
|
||||
int right = std::max(_cursor.total_offs.x + _cursor.total_size.x, offs.x + size.x);
|
||||
int bottom = std::max(_cursor.total_offs.y + _cursor.total_size.y, offs.y + size.y);
|
||||
if (offs.x < _cursor.total_offs.x) _cursor.total_offs.x = offs.x;
|
||||
if (offs.y < _cursor.total_offs.y) _cursor.total_offs.y = offs.y;
|
||||
_cursor.total_size.x = right - _cursor.total_offs.x;
|
||||
|
@@ -431,7 +431,7 @@ int FallbackParagraphLayout::FallbackLine::GetLeading() const
|
||||
{
|
||||
int leading = 0;
|
||||
for (const auto &run : *this) {
|
||||
leading = max(leading, run.GetLeading());
|
||||
leading = std::max(leading, run.GetLeading());
|
||||
}
|
||||
|
||||
return leading;
|
||||
@@ -747,7 +747,7 @@ Dimension Layouter::GetBounds()
|
||||
{
|
||||
Dimension d = { 0, 0 };
|
||||
for (const auto &l : *this) {
|
||||
d.width = max<uint>(d.width, l->GetWidth());
|
||||
d.width = std::max<uint>(d.width, l->GetWidth());
|
||||
d.height += l->GetLeading();
|
||||
}
|
||||
return d;
|
||||
|
@@ -552,7 +552,7 @@ MD5File::ChecksumResult MD5File::CheckMD5(Subdirectory subdir, size_t max_size)
|
||||
|
||||
if (f == nullptr) return CR_NO_FILE;
|
||||
|
||||
size = min(size, max_size);
|
||||
size = std::min(size, max_size);
|
||||
|
||||
Md5 checksum;
|
||||
uint8 buffer[1024];
|
||||
|
@@ -291,7 +291,7 @@ struct GoalListWindow : public Window {
|
||||
}
|
||||
|
||||
NWidgetBase *wid = this->GetWidget<NWidgetBase>(WID_GOAL_LIST);
|
||||
uint progress_col_width = min(max_width, wid->current_x);
|
||||
uint progress_col_width = std::min(max_width, wid->current_x);
|
||||
|
||||
/* Draw goal list. */
|
||||
this->DrawListColumn(GC_PROGRESS, wid, progress_col_width);
|
||||
|
@@ -110,7 +110,7 @@ struct GraphLegendWindow : Window {
|
||||
static NWidgetBase *MakeNWidgetCompanyLines(int *biggest_index)
|
||||
{
|
||||
NWidgetVertical *vert = new NWidgetVertical();
|
||||
uint line_height = max<uint>(GetSpriteSize(SPR_COMPANY_ICON).height, FONT_HEIGHT_NORMAL) + WD_FRAMERECT_TOP + WD_FRAMERECT_BOTTOM;
|
||||
uint line_height = std::max<uint>(GetSpriteSize(SPR_COMPANY_ICON).height, FONT_HEIGHT_NORMAL) + WD_FRAMERECT_TOP + WD_FRAMERECT_BOTTOM;
|
||||
|
||||
for (int widnum = WID_GL_FIRST_COMPANY; widnum <= WID_GL_LAST_COMPANY; widnum++) {
|
||||
NWidgetBackground *panel = new NWidgetBackground(WWT_PANEL, COLOUR_GREY, widnum);
|
||||
@@ -212,8 +212,8 @@ protected:
|
||||
OverflowSafeInt64 datapoint = this->cost[i][j];
|
||||
|
||||
if (datapoint != INVALID_DATAPOINT) {
|
||||
current_interval.highest = max(current_interval.highest, datapoint);
|
||||
current_interval.lowest = min(current_interval.lowest, datapoint);
|
||||
current_interval.highest = std::max(current_interval.highest, datapoint);
|
||||
current_interval.lowest = std::min(current_interval.lowest, datapoint);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -240,7 +240,7 @@ protected:
|
||||
/* Get the required grid size for each side and use the maximum one. */
|
||||
int64 grid_size_higher = (abs_higher > 0) ? ((int64)abs_higher + num_pos_grids - 1) / num_pos_grids : 0;
|
||||
int64 grid_size_lower = (abs_lower > 0) ? ((int64)abs_lower + num_hori_lines - num_pos_grids - 1) / (num_hori_lines - num_pos_grids) : 0;
|
||||
grid_size = max(grid_size_higher, grid_size_lower);
|
||||
grid_size = std::max(grid_size_higher, grid_size_lower);
|
||||
} else {
|
||||
/* If both values are zero, show an empty graph. */
|
||||
num_pos_grids = num_hori_lines / 2;
|
||||
@@ -435,7 +435,7 @@ protected:
|
||||
* least significant bits are removed.
|
||||
*/
|
||||
int mult_range = FindLastBit(x_axis_offset) + FindLastBit(abs(datapoint));
|
||||
int reduce_range = max(mult_range - 31, 0);
|
||||
int reduce_range = std::max(mult_range - 31, 0);
|
||||
|
||||
/* Handle negative values differently (don't shift sign) */
|
||||
if (datapoint < 0) {
|
||||
@@ -496,7 +496,7 @@ public:
|
||||
SetDParam(0, month + STR_MONTH_ABBREV_JAN);
|
||||
SetDParam(1, month + STR_MONTH_ABBREV_JAN + 2);
|
||||
SetDParam(2, year);
|
||||
x_label_width = max(x_label_width, GetStringBoundingBox(month == 0 ? STR_GRAPH_X_LABEL_MONTH_YEAR : STR_GRAPH_X_LABEL_MONTH).width);
|
||||
x_label_width = std::max(x_label_width, GetStringBoundingBox(month == 0 ? STR_GRAPH_X_LABEL_MONTH_YEAR : STR_GRAPH_X_LABEL_MONTH).width);
|
||||
|
||||
month += 3;
|
||||
if (month >= 12) {
|
||||
@@ -514,9 +514,9 @@ public:
|
||||
SetDParam(1, INT64_MAX);
|
||||
uint y_label_width = GetStringBoundingBox(STR_GRAPH_Y_LABEL).width;
|
||||
|
||||
size->width = max<uint>(size->width, 5 + y_label_width + this->num_on_x_axis * (x_label_width + 5) + 9);
|
||||
size->height = max<uint>(size->height, 5 + (1 + MIN_GRAPH_NUM_LINES_Y * 2 + (this->month != 0xFF ? 3 : 1)) * FONT_HEIGHT_SMALL + 4);
|
||||
size->height = max<uint>(size->height, size->width / 3);
|
||||
size->width = std::max<uint>(size->width, 5 + y_label_width + this->num_on_x_axis * (x_label_width + 5) + 9);
|
||||
size->height = std::max<uint>(size->height, 5 + (1 + MIN_GRAPH_NUM_LINES_Y * 2 + (this->month != 0xFF ? 3 : 1)) * FONT_HEIGHT_SMALL + 4);
|
||||
size->height = std::max<uint>(size->height, size->width / 3);
|
||||
}
|
||||
|
||||
void DrawWidget(const Rect &r, int widget) const override
|
||||
@@ -568,7 +568,7 @@ public:
|
||||
|
||||
byte nums = 0;
|
||||
for (const Company *c : Company::Iterate()) {
|
||||
nums = min(this->num_vert_lines, max(nums, c->num_valid_stat_ent));
|
||||
nums = std::min(this->num_vert_lines, std::max(nums, c->num_valid_stat_ent));
|
||||
}
|
||||
|
||||
int mo = (_cur_date_ymd.month / 3 - nums) * 3;
|
||||
@@ -1115,7 +1115,7 @@ static const StringID _performance_titles[] = {
|
||||
|
||||
static inline StringID GetPerformanceTitleFromValue(uint value)
|
||||
{
|
||||
return _performance_titles[minu(value, 1000) >> 6];
|
||||
return _performance_titles[std::min(value, 1000u) >> 6];
|
||||
}
|
||||
|
||||
class CompanyLeagueWindow : public Window {
|
||||
@@ -1199,7 +1199,7 @@ public:
|
||||
|
||||
this->ordinal_width = 0;
|
||||
for (uint i = 0; i < MAX_COMPANIES; i++) {
|
||||
this->ordinal_width = max(this->ordinal_width, GetStringBoundingBox(STR_ORDINAL_NUMBER_1ST + i).width);
|
||||
this->ordinal_width = std::max(this->ordinal_width, GetStringBoundingBox(STR_ORDINAL_NUMBER_1ST + i).width);
|
||||
}
|
||||
this->ordinal_width += 5; // Keep some extra spacing
|
||||
|
||||
@@ -1215,13 +1215,13 @@ public:
|
||||
|
||||
Dimension d = GetSpriteSize(SPR_COMPANY_ICON);
|
||||
this->icon_width = d.width + 2;
|
||||
this->line_height = max<int>(d.height + 2, FONT_HEIGHT_NORMAL);
|
||||
this->line_height = std::max<int>(d.height + 2, FONT_HEIGHT_NORMAL);
|
||||
|
||||
for (const Company *c : Company::Iterate()) {
|
||||
SetDParam(0, c->index);
|
||||
SetDParam(1, c->index);
|
||||
SetDParam(2, _performance_titles[widest_title]);
|
||||
widest_width = max(widest_width, GetStringBoundingBox(STR_COMPANY_LEAGUE_COMPANY_NAME).width);
|
||||
widest_width = std::max(widest_width, GetStringBoundingBox(STR_COMPANY_LEAGUE_COMPANY_NAME).width);
|
||||
}
|
||||
|
||||
this->text_width = widest_width + 30; // Keep some extra spacing
|
||||
@@ -1321,7 +1321,7 @@ struct PerformanceRatingDetailWindow : Window {
|
||||
|
||||
uint score_info_width = 0;
|
||||
for (uint i = SCORE_BEGIN; i < SCORE_END; i++) {
|
||||
score_info_width = max(score_info_width, GetStringBoundingBox(STR_PERFORMANCE_DETAIL_VEHICLES + i).width);
|
||||
score_info_width = std::max(score_info_width, GetStringBoundingBox(STR_PERFORMANCE_DETAIL_VEHICLES + i).width);
|
||||
}
|
||||
SetDParamMaxValue(0, 1000);
|
||||
score_info_width += GetStringBoundingBox(STR_BLACK_COMMA).width + WD_FRAMERECT_LEFT;
|
||||
|
@@ -37,7 +37,7 @@ void GroundVehicle<T, Type>::PowerChanged()
|
||||
|
||||
/* Get minimum max speed for this track. */
|
||||
uint16 track_speed = u->GetMaxTrackSpeed();
|
||||
if (track_speed > 0) max_track_speed = min(max_track_speed, track_speed);
|
||||
if (track_speed > 0) max_track_speed = std::min(max_track_speed, track_speed);
|
||||
}
|
||||
|
||||
byte air_drag;
|
||||
@@ -47,7 +47,7 @@ void GroundVehicle<T, Type>::PowerChanged()
|
||||
if (air_drag_value == 0) {
|
||||
uint16 max_speed = v->GetDisplayMaxSpeed();
|
||||
/* Simplification of the method used in TTDPatch. It uses <= 10 to change more steadily from 128 to 196. */
|
||||
air_drag = (max_speed <= 10) ? 192 : max(2048 / max_speed, 1);
|
||||
air_drag = (max_speed <= 10) ? 192 : std::max(2048 / max_speed, 1);
|
||||
} else {
|
||||
/* According to the specs, a value of 0x01 in the air drag property means "no air drag". */
|
||||
air_drag = (air_drag_value == 1) ? 0 : air_drag_value;
|
||||
@@ -114,7 +114,7 @@ void GroundVehicle<T, Type>::CargoChanged()
|
||||
ClrBit(this->vcache.cached_veh_flags, VCF_GV_ZERO_SLOPE_RESIST);
|
||||
|
||||
/* Store consist weight in cache. */
|
||||
this->gcache.cached_weight = max<uint32>(1, weight);
|
||||
this->gcache.cached_weight = std::max(1u, weight);
|
||||
/* Friction in bearings and other mechanical parts is 0.1% of the weight (result in N). */
|
||||
this->gcache.cached_axle_resistance = 10 * weight;
|
||||
|
||||
@@ -201,8 +201,8 @@ GroundVehicleAcceleration GroundVehicle<T, Type>::GetAcceleration()
|
||||
}
|
||||
} else {
|
||||
/* "Kickoff" acceleration. */
|
||||
force = (mode == AS_ACCEL && !maglev) ? min(max_te, power) : power;
|
||||
force = max(force, (mass * 8) + resistance);
|
||||
force = (mode == AS_ACCEL && !maglev) ? std::min<uint64>(max_te, power) : power;
|
||||
force = std::max(force, (mass * 8) + resistance);
|
||||
braking_force = force;
|
||||
}
|
||||
|
||||
@@ -230,15 +230,15 @@ GroundVehicleAcceleration GroundVehicle<T, Type>::GetAcceleration()
|
||||
* @note A seperate correction for multiheaded engines is done in CheckVehicleBreakdown. We can't do that here because it would affect the whole consist.
|
||||
*/
|
||||
uint64 breakdown_factor = (uint64)abs(resistance) * (uint64)(this->cur_speed << 16);
|
||||
breakdown_factor /= (max(force, (int64)100) * this->gcache.cached_max_track_speed);
|
||||
breakdown_factor = min((64 << 16) + (breakdown_factor * 128), 255 << 16);
|
||||
breakdown_factor /= (std::max(force, (int64)100) * this->gcache.cached_max_track_speed);
|
||||
breakdown_factor = std::min<uint64>((64 << 16) + (breakdown_factor * 128), 255 << 16);
|
||||
if (Type == VEH_TRAIN && Train::From(this)->tcache.cached_num_engines > 1) {
|
||||
/* For multiengine trains, breakdown chance is multiplied by 3 / (num_engines + 2) */
|
||||
breakdown_factor *= 3;
|
||||
breakdown_factor /= (Train::From(this)->tcache.cached_num_engines + 2);
|
||||
}
|
||||
/* breakdown_chance is at least 5 (5 / 128 = ~4% of the normal chance) */
|
||||
this->breakdown_chance_factor = max(breakdown_factor >> 16, (uint64)5);
|
||||
this->breakdown_chance_factor = std::max(breakdown_factor >> 16, (uint64)5);
|
||||
}
|
||||
|
||||
int braking_accel;
|
||||
@@ -250,9 +250,9 @@ GroundVehicleAcceleration GroundVehicle<T, Type>::GetAcceleration()
|
||||
|
||||
/* Defensive driving: prevent ridiculously fast deceleration.
|
||||
* -130 corresponds to a braking distance of about 6.2 tiles from 160 km/h. */
|
||||
braking_accel = max(braking_accel, -130);
|
||||
braking_accel = std::max(braking_accel, -130);
|
||||
} else {
|
||||
braking_accel = ClampToI32(min(-braking_force - resistance, -10000) / mass);
|
||||
braking_accel = ClampToI32(std::min<int64>(-braking_force - resistance, -10000) / mass);
|
||||
}
|
||||
|
||||
if (mode == AS_ACCEL) {
|
||||
@@ -265,7 +265,7 @@ GroundVehicleAcceleration GroundVehicle<T, Type>::GetAcceleration()
|
||||
* a hill will never speed up enough to (eventually) get back to the
|
||||
* same (maximum) speed. */
|
||||
int accel = ClampToI32((force - resistance) / (mass * 4));
|
||||
accel = force < resistance ? min(-1, accel) : max(1, accel);
|
||||
accel = force < resistance ? std::min(-1, accel) : std::max(1, accel);
|
||||
if (this->type == VEH_TRAIN) {
|
||||
if(_settings_game.vehicle.train_acceleration_model == AM_ORIGINAL &&
|
||||
HasBit(Train::From(this)->flags, VRF_BREAKDOWN_POWER)) {
|
||||
|
@@ -443,7 +443,7 @@ protected:
|
||||
this->subspeed = (byte)spd;
|
||||
|
||||
if (!(Type == VEH_TRAIN && _settings_game.vehicle.train_braking_model == TBM_REALISTIC)) {
|
||||
max_speed = min(max_speed, advisory_max_speed);
|
||||
max_speed = std::min(max_speed, advisory_max_speed);
|
||||
}
|
||||
|
||||
int tempmax = max_speed;
|
||||
@@ -460,7 +460,7 @@ protected:
|
||||
}
|
||||
}
|
||||
} else if (this->breakdown_type == BREAKDOWN_LOW_SPEED) {
|
||||
tempmax = min(max_speed, this->breakdown_severity);
|
||||
tempmax = std::min<int>(max_speed, this->breakdown_severity);
|
||||
} else {
|
||||
tempmax = this->cur_speed;
|
||||
}
|
||||
@@ -471,7 +471,7 @@ protected:
|
||||
extern void TrainBrakesOverheatedBreakdown(Vehicle *v);
|
||||
TrainBrakesOverheatedBreakdown(this);
|
||||
}
|
||||
tempmax = max(this->cur_speed - (this->cur_speed / 10) - 1, max_speed);
|
||||
tempmax = std::max(this->cur_speed - (this->cur_speed / 10) - 1, max_speed);
|
||||
}
|
||||
|
||||
/* Enforce a maximum and minimum speed. Normally we would use something like
|
||||
@@ -479,7 +479,7 @@ protected:
|
||||
* threshold for some reason. That makes acceleration fail and assertions
|
||||
* happen in Clamp. So make it explicit that min_speed overrules the maximum
|
||||
* speed by explicit ordering of min and max. */
|
||||
int tempspeed = min(this->cur_speed + ((int)spd >> 8), tempmax);
|
||||
int tempspeed = std::min(this->cur_speed + ((int)spd >> 8), tempmax);
|
||||
|
||||
if (Type == VEH_TRAIN && _settings_game.vehicle.train_braking_model == TBM_REALISTIC && tempspeed > advisory_max_speed && accel.braking != accel.acceleration) {
|
||||
spd = initial_subspeed + accel.braking;
|
||||
@@ -502,7 +502,7 @@ protected:
|
||||
}
|
||||
}
|
||||
|
||||
this->cur_speed = max(tempspeed, min_speed);
|
||||
this->cur_speed = std::max(tempspeed, min_speed);
|
||||
|
||||
int scaled_spd = this->GetAdvanceSpeed(this->cur_speed);
|
||||
|
||||
|
@@ -240,14 +240,14 @@ private:
|
||||
this->tiny_step_height = this->column_size[VGC_FOLD].height;
|
||||
|
||||
this->column_size[VGC_NAME] = maxdim(GetStringBoundingBox(STR_GROUP_DEFAULT_TRAINS + this->vli.vtype), GetStringBoundingBox(STR_GROUP_ALL_TRAINS + this->vli.vtype));
|
||||
this->column_size[VGC_NAME].width = max((170u * FONT_HEIGHT_NORMAL) / 10u, this->column_size[VGC_NAME].width);
|
||||
this->tiny_step_height = max(this->tiny_step_height, this->column_size[VGC_NAME].height);
|
||||
this->column_size[VGC_NAME].width = std::max((170u * FONT_HEIGHT_NORMAL) / 10u, this->column_size[VGC_NAME].width);
|
||||
this->tiny_step_height = std::max(this->tiny_step_height, this->column_size[VGC_NAME].height);
|
||||
|
||||
this->column_size[VGC_PROTECT] = GetSpriteSize(SPR_GROUP_REPLACE_PROTECT);
|
||||
this->tiny_step_height = max(this->tiny_step_height, this->column_size[VGC_PROTECT].height);
|
||||
this->tiny_step_height = std::max(this->tiny_step_height, this->column_size[VGC_PROTECT].height);
|
||||
|
||||
this->column_size[VGC_AUTOREPLACE] = GetSpriteSize(SPR_GROUP_REPLACE_ACTIVE);
|
||||
this->tiny_step_height = max(this->tiny_step_height, this->column_size[VGC_AUTOREPLACE].height);
|
||||
this->tiny_step_height = std::max(this->tiny_step_height, this->column_size[VGC_AUTOREPLACE].height);
|
||||
|
||||
this->column_size[VGC_PROFIT].width = 0;
|
||||
this->column_size[VGC_PROFIT].height = 0;
|
||||
@@ -256,13 +256,13 @@ private:
|
||||
Dimension d = GetSpriteSize(profit_sprites[i]);
|
||||
this->column_size[VGC_PROFIT] = maxdim(this->column_size[VGC_PROFIT], d);
|
||||
}
|
||||
this->tiny_step_height = max(this->tiny_step_height, this->column_size[VGC_PROFIT].height);
|
||||
this->tiny_step_height = std::max(this->tiny_step_height, this->column_size[VGC_PROFIT].height);
|
||||
|
||||
int num_vehicle = GetGroupNumVehicle(this->vli.company, ALL_GROUP, this->vli.vtype);
|
||||
SetDParamMaxValue(0, num_vehicle, 3, FS_SMALL);
|
||||
SetDParamMaxValue(1, num_vehicle, 3, FS_SMALL);
|
||||
this->column_size[VGC_NUMBER] = GetStringBoundingBox(STR_GROUP_COUNT_WITH_SUBGROUP);
|
||||
this->tiny_step_height = max(this->tiny_step_height, this->column_size[VGC_NUMBER].height);
|
||||
this->tiny_step_height = std::max(this->tiny_step_height, this->column_size[VGC_NUMBER].height);
|
||||
|
||||
this->tiny_step_height += WD_MATRIX_TOP;
|
||||
|
||||
@@ -466,9 +466,9 @@ public:
|
||||
|
||||
/* ... minus the buttons at the bottom ... */
|
||||
uint max_icon_height = GetSpriteSize(this->GetWidget<NWidgetCore>(WID_GL_CREATE_GROUP)->widget_data).height;
|
||||
max_icon_height = max(max_icon_height, GetSpriteSize(this->GetWidget<NWidgetCore>(WID_GL_RENAME_GROUP)->widget_data).height);
|
||||
max_icon_height = max(max_icon_height, GetSpriteSize(this->GetWidget<NWidgetCore>(WID_GL_DELETE_GROUP)->widget_data).height);
|
||||
max_icon_height = max(max_icon_height, GetSpriteSize(this->GetWidget<NWidgetCore>(WID_GL_REPLACE_PROTECTION)->widget_data).height);
|
||||
max_icon_height = std::max(max_icon_height, GetSpriteSize(this->GetWidget<NWidgetCore>(WID_GL_RENAME_GROUP)->widget_data).height);
|
||||
max_icon_height = std::max(max_icon_height, GetSpriteSize(this->GetWidget<NWidgetCore>(WID_GL_DELETE_GROUP)->widget_data).height);
|
||||
max_icon_height = std::max(max_icon_height, GetSpriteSize(this->GetWidget<NWidgetCore>(WID_GL_REPLACE_PROTECTION)->widget_data).height);
|
||||
|
||||
/* ... minus the height of the group info ... */
|
||||
max_icon_height += (FONT_HEIGHT_NORMAL * 3) + WD_FRAMERECT_TOP + WD_FRAMERECT_BOTTOM;
|
||||
@@ -675,7 +675,7 @@ public:
|
||||
|
||||
case WID_GL_LIST_GROUP: {
|
||||
int y1 = r.top + WD_FRAMERECT_TOP;
|
||||
int max = min(this->group_sb->GetPosition() + this->group_sb->GetCapacity(), (uint)this->groups.size());
|
||||
int max = std::min<size_t>(this->group_sb->GetPosition() + this->group_sb->GetCapacity(), this->groups.size());
|
||||
for (int i = this->group_sb->GetPosition(); i < max; ++i) {
|
||||
const Group *g = this->groups[i];
|
||||
|
||||
@@ -699,7 +699,7 @@ public:
|
||||
if (this->vli.index != ALL_GROUP && this->grouping == GB_NONE) {
|
||||
/* Mark vehicles which are in sub-groups (only if we are not using shared order coalescing) */
|
||||
int y = r.top;
|
||||
uint max = min(this->vscroll->GetPosition() + this->vscroll->GetCapacity(), static_cast<uint>(this->vehgroups.size()));
|
||||
uint max = static_cast<uint>(std::min<size_t>(this->vscroll->GetPosition() + this->vscroll->GetCapacity(), this->vehgroups.size()));
|
||||
for (uint i = this->vscroll->GetPosition(); i < max; ++i) {
|
||||
const Vehicle *v = this->vehgroups[i].GetSingleVehicle();
|
||||
if (v->group_id != this->vli.index) {
|
||||
|
@@ -43,7 +43,7 @@ static const StringID _endgame_perf_titles[] = {
|
||||
|
||||
StringID EndGameGetPerformanceTitleFromValue(uint value)
|
||||
{
|
||||
value = minu(value / 64, lengthof(_endgame_perf_titles) - 1);
|
||||
value = std::min<uint>(value / 64, lengthof(_endgame_perf_titles) - 1);
|
||||
|
||||
return _endgame_perf_titles[value];
|
||||
}
|
||||
@@ -132,7 +132,7 @@ void SaveToHighScore()
|
||||
for (i = 0; i < SP_SAVED_HIGHSCORE_END; i++) {
|
||||
for (hs = _highscore_table[i]; hs != endof(_highscore_table[i]); hs++) {
|
||||
/* First character is a command character, so strlen will fail on that */
|
||||
byte length = min(sizeof(hs->company), StrEmpty(hs->company) ? 0 : (int)strlen(&hs->company[1]) + 1);
|
||||
byte length = std::min(sizeof(hs->company), StrEmpty(hs->company) ? 0 : strlen(&hs->company[1]) + 1);
|
||||
|
||||
if (fwrite(&length, sizeof(length), 1, fp) != 1 || // write away string length
|
||||
fwrite(hs->company, length, 1, fp) > 1 || // Yes... could be 0 bytes too
|
||||
@@ -163,7 +163,7 @@ void LoadFromHighScore()
|
||||
for (hs = _highscore_table[i]; hs != endof(_highscore_table[i]); hs++) {
|
||||
byte length;
|
||||
if (fread(&length, sizeof(length), 1, fp) != 1 ||
|
||||
fread(hs->company, min<int>(lengthof(hs->company), length), 1, fp) > 1 || // Yes... could be 0 bytes too
|
||||
fread(hs->company, std::min<int>(lengthof(hs->company), length), 1, fp) > 1 || // Yes... could be 0 bytes too
|
||||
fread(&hs->score, sizeof(hs->score), 1, fp) != 1 ||
|
||||
fseek(fp, 2, SEEK_CUR) == -1) { // XXX - placeholder for hs->title, not saved anymore; compatibility
|
||||
DEBUG(misc, 1, "Highscore corrupted");
|
||||
|
@@ -58,7 +58,7 @@ struct EndGameHighScoreBaseWindow : Window {
|
||||
/** Return the coordinate of the screen such that a window of 640x480 is centered at the screen. */
|
||||
Point GetTopLeft(int x, int y)
|
||||
{
|
||||
Point pt = {max(0, (_screen.width / 2) - (x / 2)), max(0, (_screen.height / 2) - (y / 2))};
|
||||
Point pt = {std::max(0, (_screen.width / 2) - (x / 2)), std::max(0, (_screen.height / 2) - (y / 2))};
|
||||
return pt;
|
||||
}
|
||||
|
||||
|
@@ -10,7 +10,6 @@
|
||||
#ifndef INDUSTRY_H
|
||||
#define INDUSTRY_H
|
||||
|
||||
#include <algorithm>
|
||||
#include "newgrf_storage.h"
|
||||
#include "subsidy_type.h"
|
||||
#include "industry_map.h"
|
||||
|
@@ -534,7 +534,7 @@ static bool TransportIndustryGoods(TileIndex tile)
|
||||
bool moved_cargo = false;
|
||||
|
||||
for (uint j = 0; j < lengthof(i->produced_cargo_waiting); j++) {
|
||||
uint cw = min(i->produced_cargo_waiting[j], 255);
|
||||
uint cw = std::min<uint>(i->produced_cargo_waiting[j], 255u);
|
||||
if (cw > indspec->minimal_cargo && i->produced_cargo[j] != CT_INVALID) {
|
||||
i->produced_cargo_waiting[j] -= cw;
|
||||
|
||||
@@ -1076,7 +1076,7 @@ static void PlantFarmField(TileIndex tile, IndustryID industry)
|
||||
uint size_x = GB(r, 0, 8);
|
||||
uint size_y = GB(r, 8, 8);
|
||||
|
||||
TileArea ta(tile - TileDiffXY(min(TileX(tile), size_x / 2), min(TileY(tile), size_y / 2)), size_x, size_y);
|
||||
TileArea ta(tile - TileDiffXY(std::min(TileX(tile), size_x / 2), std::min(TileY(tile), size_y / 2)), size_x, size_y);
|
||||
ta.ClampToMap();
|
||||
|
||||
if (ta.w == 0 || ta.h == 0) return;
|
||||
@@ -1165,7 +1165,7 @@ static void ChopLumberMillTrees(Industry *i)
|
||||
|
||||
TileIndex tile = i->location.tile;
|
||||
if (CircularTileSearch(&tile, 40, SearchLumberMillTrees, nullptr)) { // 40x40 tiles to search.
|
||||
i->produced_cargo_waiting[0] = min(0xffff, i->produced_cargo_waiting[0] + 45); // Found a tree, add according value to waiting cargo.
|
||||
i->produced_cargo_waiting[0] = std::min(0xffff, i->produced_cargo_waiting[0] + 45); // Found a tree, add according value to waiting cargo.
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1176,7 +1176,7 @@ static void ProduceIndustryGoodsFromRate(Industry *i, bool scale)
|
||||
if (amount != 0 && scale) {
|
||||
amount = ScaleQuantity(amount, _settings_game.economy.industry_cargo_scale_factor);
|
||||
}
|
||||
i->produced_cargo_waiting[j] = min(0xffff, i->produced_cargo_waiting[j] + amount);
|
||||
i->produced_cargo_waiting[j] = std::min<uint>(0xffff, i->produced_cargo_waiting[j] + amount);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1815,7 +1815,7 @@ static void DoCreateNewIndustry(Industry *i, TileIndex tile, IndustryType type,
|
||||
/* Randomize inital production if non-original economy is used and there are no production related callbacks. */
|
||||
if (!indspec->UsesOriginalEconomy()) {
|
||||
for (size_t ci = 0; ci < lengthof(i->production_rate); ci++) {
|
||||
i->production_rate[ci] = min((RandomRange(256) + 128) * i->production_rate[ci] >> 8, 255);
|
||||
i->production_rate[ci] = std::min((RandomRange(256) + 128) * i->production_rate[ci] >> 8, 255u);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2281,7 +2281,7 @@ static uint GetNumberOfIndustries()
|
||||
|
||||
assert(lengthof(numof_industry_table) == ID_END);
|
||||
uint difficulty = (_game_mode != GM_EDITOR) ? _settings_game.difficulty.industry_density : (uint)ID_VERY_LOW;
|
||||
return min(IndustryPool::MAX_SIZE, ScaleByMapSize(numof_industry_table[difficulty]));
|
||||
return std::min<uint>(IndustryPool::MAX_SIZE, ScaleByMapSize(numof_industry_table[difficulty]));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -2357,7 +2357,7 @@ void IndustryBuildData::MonthlyLoop()
|
||||
|
||||
/* To prevent running out of unused industries for the player to connect,
|
||||
* add a fraction of new industries each month, but only if the manager can keep up. */
|
||||
uint max_behind = 1 + min(99u, ScaleByMapSize(3)); // At most 2 industries for small maps, and 100 at the biggest map (about 6 months industry build attempts).
|
||||
uint max_behind = 1 + std::min(99u, ScaleByMapSize(3)); // At most 2 industries for small maps, and 100 at the biggest map (about 6 months industry build attempts).
|
||||
if (GetCurrentTotalNumberOfIndustries() + max_behind >= (this->wanted_inds >> 16)) {
|
||||
this->wanted_inds += ScaleByMapSize(NEWINDS_PER_MONTH);
|
||||
}
|
||||
@@ -2425,7 +2425,7 @@ static void UpdateIndustryStatistics(Industry *i)
|
||||
byte pct = 0;
|
||||
if (i->this_month_production[j] != 0) {
|
||||
i->last_prod_year = _cur_year;
|
||||
pct = min(i->this_month_transported[j] * 256 / i->this_month_production[j], 255);
|
||||
pct = std::min(i->this_month_transported[j] * 256 / i->this_month_production[j], 255);
|
||||
}
|
||||
i->last_month_pct_transported[j] = pct;
|
||||
|
||||
@@ -2449,7 +2449,7 @@ void Industry::RecomputeProductionMultipliers()
|
||||
|
||||
/* Rates are rounded up, so e.g. oilrig always produces some passengers */
|
||||
for (size_t i = 0; i < lengthof(this->production_rate); i++) {
|
||||
this->production_rate[i] = min(CeilDiv(indspec->production_rate[i] * this->prod_level, PRODLEVEL_DEFAULT), 0xFF);
|
||||
this->production_rate[i] = std::min(CeilDiv(indspec->production_rate[i] * this->prod_level, PRODLEVEL_DEFAULT), 0xFFu);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2582,10 +2582,10 @@ void IndustryBuildData::TryBuildNewIndustry()
|
||||
const Industry *ind = PlaceIndustry(it, IACT_RANDOMCREATION, false);
|
||||
if (ind == nullptr) {
|
||||
this->builddata[it].wait_count = this->builddata[it].max_wait + 1; // Compensate for decrementing below.
|
||||
this->builddata[it].max_wait = min(1000, this->builddata[it].max_wait + 2);
|
||||
this->builddata[it].max_wait = std::min(1000, this->builddata[it].max_wait + 2);
|
||||
} else {
|
||||
AdvertiseIndustryOpening(ind);
|
||||
this->builddata[it].max_wait = max(this->builddata[it].max_wait / 2, 1); // Reduce waiting time of the industry type.
|
||||
this->builddata[it].max_wait = std::max(this->builddata[it].max_wait / 2, 1); // Reduce waiting time of the industry type.
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2822,7 +2822,7 @@ static void ChangeIndustryProduction(Industry *i, bool monthly)
|
||||
/* 4.5% chance for 3-23% (or 1 unit for very low productions) production change,
|
||||
* determined by mult value. If mult = 1 prod. increases, else (-1) it decreases. */
|
||||
if (Chance16I(1, 22, r >> 16)) {
|
||||
new_prod += mult * (max(((RandomRange(50) + 10) * old_prod) >> 8, 1U));
|
||||
new_prod += mult * (std::max(((RandomRange(50) + 10) * old_prod) >> 8, 1U));
|
||||
}
|
||||
|
||||
/* Prevent production to overflow or Oil Rig passengers to be over-"produced" */
|
||||
@@ -2867,7 +2867,7 @@ static void ChangeIndustryProduction(Industry *i, bool monthly)
|
||||
|
||||
/* Increase if needed */
|
||||
while (mul-- != 0 && i->prod_level < PRODLEVEL_MAXIMUM) {
|
||||
i->prod_level = min(i->prod_level * 2, PRODLEVEL_MAXIMUM);
|
||||
i->prod_level = std::min<int>(i->prod_level * 2, PRODLEVEL_MAXIMUM);
|
||||
recalculate_multipliers = true;
|
||||
if (str == STR_NULL) str = indspec->production_up_text;
|
||||
}
|
||||
@@ -2878,7 +2878,7 @@ static void ChangeIndustryProduction(Industry *i, bool monthly)
|
||||
closeit = true;
|
||||
break;
|
||||
} else {
|
||||
i->prod_level = max(i->prod_level / 2, (int)PRODLEVEL_MINIMUM); // typecast to int required to please MSVC
|
||||
i->prod_level = std::max<int>(i->prod_level / 2, PRODLEVEL_MINIMUM);
|
||||
recalculate_multipliers = true;
|
||||
if (str == STR_NULL) str = indspec->production_down_text;
|
||||
}
|
||||
@@ -2970,7 +2970,7 @@ void IndustryDailyLoop()
|
||||
|
||||
uint perc = 3; // Between 3% and 9% chance of creating a new industry.
|
||||
if ((_industry_builder.wanted_inds >> 16) > GetCurrentTotalNumberOfIndustries()) {
|
||||
perc = min(9u, perc + (_industry_builder.wanted_inds >> 16) - GetCurrentTotalNumberOfIndustries());
|
||||
perc = std::min(9u, perc + (_industry_builder.wanted_inds >> 16) - GetCurrentTotalNumberOfIndustries());
|
||||
}
|
||||
for (uint16 j = 0; j < change_loop; j++) {
|
||||
if (Chance16(perc, 100)) {
|
||||
|
@@ -434,7 +434,7 @@ public:
|
||||
std::string cargostring = this->MakeCargoListString(indsp->accepts_cargo, cargo_suffix, lengthof(indsp->accepts_cargo), STR_INDUSTRY_VIEW_REQUIRES_N_CARGO);
|
||||
Dimension strdim = GetStringBoundingBox(cargostring.c_str());
|
||||
if (strdim.width > max_minwidth) {
|
||||
extra_lines_req = max(extra_lines_req, strdim.width / max_minwidth + 1);
|
||||
extra_lines_req = std::max(extra_lines_req, strdim.width / max_minwidth + 1);
|
||||
strdim.width = max_minwidth;
|
||||
}
|
||||
d = maxdim(d, strdim);
|
||||
@@ -444,7 +444,7 @@ public:
|
||||
cargostring = this->MakeCargoListString(indsp->produced_cargo, cargo_suffix, lengthof(indsp->produced_cargo), STR_INDUSTRY_VIEW_PRODUCES_N_CARGO);
|
||||
strdim = GetStringBoundingBox(cargostring.c_str());
|
||||
if (strdim.width > max_minwidth) {
|
||||
extra_lines_prd = max(extra_lines_prd, strdim.width / max_minwidth + 1);
|
||||
extra_lines_prd = std::max(extra_lines_prd, strdim.width / max_minwidth + 1);
|
||||
strdim.width = max_minwidth;
|
||||
}
|
||||
d = maxdim(d, strdim);
|
||||
@@ -966,22 +966,22 @@ public:
|
||||
case EA_MULTIPLIER:
|
||||
if (button == 1) {
|
||||
if (i->prod_level <= PRODLEVEL_MINIMUM) return;
|
||||
i->prod_level = max<uint>(i->prod_level / 2, PRODLEVEL_MINIMUM);
|
||||
i->prod_level = std::max<uint>(i->prod_level / 2, PRODLEVEL_MINIMUM);
|
||||
} else {
|
||||
if (i->prod_level >= PRODLEVEL_MAXIMUM) return;
|
||||
i->prod_level = minu(i->prod_level * 2, PRODLEVEL_MAXIMUM);
|
||||
i->prod_level = std::min<uint>(i->prod_level * 2, PRODLEVEL_MAXIMUM);
|
||||
}
|
||||
break;
|
||||
|
||||
case EA_RATE:
|
||||
if (button == 1) {
|
||||
if (i->production_rate[line - IL_RATE1] <= 0) return;
|
||||
i->production_rate[line - IL_RATE1] = max(i->production_rate[line - IL_RATE1] / 2, 0);
|
||||
i->production_rate[line - IL_RATE1] = std::max(i->production_rate[line - IL_RATE1] / 2, 0);
|
||||
} else {
|
||||
if (i->production_rate[line - IL_RATE1] >= 255) return;
|
||||
/* a zero production industry is unlikely to give anything but zero, so push it a little bit */
|
||||
int new_prod = i->production_rate[line - IL_RATE1] == 0 ? 1 : i->production_rate[line - IL_RATE1] * 2;
|
||||
i->production_rate[line - IL_RATE1] = minu(new_prod, 255);
|
||||
i->production_rate[line - IL_RATE1] = std::min<uint>(new_prod, 255);
|
||||
}
|
||||
break;
|
||||
|
||||
@@ -1468,7 +1468,7 @@ protected:
|
||||
}
|
||||
|
||||
/* Display first 3 cargos */
|
||||
for (size_t j = 0; j < min<size_t>(3, cargos.size()); j++) {
|
||||
for (size_t j = 0; j < std::min<size_t>(3, cargos.size()); j++) {
|
||||
CargoInfo ci = cargos[j];
|
||||
SetDParam(p++, STR_INDUSTRY_DIRECTORY_ITEM_INFO);
|
||||
SetDParam(p++, std::get<0>(ci));
|
||||
@@ -2399,10 +2399,10 @@ struct IndustryCargoesWindow : public Window {
|
||||
const IndustrySpec *indsp = GetIndustrySpec(it);
|
||||
if (!indsp->enabled) continue;
|
||||
this->ind_textsize = maxdim(this->ind_textsize, GetStringBoundingBox(indsp->name));
|
||||
CargoesField::max_cargoes = max<uint>(CargoesField::max_cargoes, std::count_if(indsp->accepts_cargo, endof(indsp->accepts_cargo), IsCargoIDValid));
|
||||
CargoesField::max_cargoes = max<uint>(CargoesField::max_cargoes, std::count_if(indsp->produced_cargo, endof(indsp->produced_cargo), IsCargoIDValid));
|
||||
CargoesField::max_cargoes = std::max<uint>(CargoesField::max_cargoes, std::count_if(indsp->accepts_cargo, endof(indsp->accepts_cargo), IsCargoIDValid));
|
||||
CargoesField::max_cargoes = std::max<uint>(CargoesField::max_cargoes, std::count_if(indsp->produced_cargo, endof(indsp->produced_cargo), IsCargoIDValid));
|
||||
}
|
||||
d.width = max(d.width, this->ind_textsize.width);
|
||||
d.width = std::max(d.width, this->ind_textsize.width);
|
||||
d.height = this->ind_textsize.height;
|
||||
this->ind_textsize = maxdim(this->ind_textsize, GetStringBoundingBox(STR_INDUSTRY_CARGOES_SELECT_INDUSTRY));
|
||||
|
||||
@@ -2420,7 +2420,7 @@ struct IndustryCargoesWindow : public Window {
|
||||
d.width += 2 * HOR_TEXT_PADDING;
|
||||
/* Ensure the height is enough for the industry type text, for the horizontal connections, and for the cargo labels. */
|
||||
uint min_ind_height = CargoesField::VERT_CARGO_EDGE * 2 + CargoesField::max_cargoes * FONT_HEIGHT_NORMAL + (CargoesField::max_cargoes - 1) * CargoesField::VERT_CARGO_SPACE;
|
||||
d.height = max(d.height + 2 * VERT_TEXT_PADDING, min_ind_height);
|
||||
d.height = std::max(d.height + 2 * VERT_TEXT_PADDING, min_ind_height);
|
||||
|
||||
CargoesField::industry_width = d.width;
|
||||
CargoesField::normal_height = d.height + CargoesField::VERT_INTER_INDUSTRY_SPACE;
|
||||
@@ -2437,11 +2437,11 @@ struct IndustryCargoesWindow : public Window {
|
||||
break;
|
||||
|
||||
case WID_IC_IND_DROPDOWN:
|
||||
size->width = max(size->width, this->ind_textsize.width + padding.width);
|
||||
size->width = std::max(size->width, this->ind_textsize.width + padding.width);
|
||||
break;
|
||||
|
||||
case WID_IC_CARGO_DROPDOWN:
|
||||
size->width = max(size->width, this->cargo_textsize.width + padding.width);
|
||||
size->width = std::max(size->width, this->cargo_textsize.width + padding.width);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -2646,7 +2646,7 @@ struct IndustryCargoesWindow : public Window {
|
||||
/* Make a field consisting of two cargo columns. */
|
||||
int num_supp = CountMatchingProducingIndustries(central_sp->accepts_cargo, lengthof(central_sp->accepts_cargo)) + houses_supply;
|
||||
int num_cust = CountMatchingAcceptingIndustries(central_sp->produced_cargo, lengthof(central_sp->produced_cargo)) + houses_accept;
|
||||
int num_indrows = max(3, max(num_supp, num_cust)); // One is needed for the 'it' industry, and 2 for the cargo labels.
|
||||
int num_indrows = std::max(3, std::max(num_supp, num_cust)); // One is needed for the 'it' industry, and 2 for the cargo labels.
|
||||
for (int i = 0; i < num_indrows; i++) {
|
||||
CargoesRow &row = this->fields.emplace_back();
|
||||
row.columns[0].MakeEmpty(CFT_EMPTY);
|
||||
@@ -2722,7 +2722,7 @@ struct IndustryCargoesWindow : public Window {
|
||||
bool houses_accept = HousesCanAccept(&cid, 1);
|
||||
int num_supp = CountMatchingProducingIndustries(&cid, 1) + houses_supply + 1; // Ensure room for the cargo label.
|
||||
int num_cust = CountMatchingAcceptingIndustries(&cid, 1) + houses_accept;
|
||||
int num_indrows = max(num_supp, num_cust);
|
||||
int num_indrows = std::max(num_supp, num_cust);
|
||||
for (int i = 0; i < num_indrows; i++) {
|
||||
CargoesRow &row = this->fields.emplace_back();
|
||||
row.columns[0].MakeEmpty(CFT_EMPTY);
|
||||
|
@@ -38,7 +38,7 @@ static void PaySharingFee(Vehicle *v, Owner infra_owner, Money cost)
|
||||
Company *c = Company::Get(v->owner);
|
||||
if (!_settings_game.economy.sharing_payment_in_debt) {
|
||||
/* Do not allow fee payment to drop (money - loan) below 0. */
|
||||
cost = min(cost, (c->money - c->current_loan) << 8);
|
||||
cost = std::min(cost, (c->money - c->current_loan) << 8);
|
||||
if (cost <= 0) return;
|
||||
}
|
||||
v->profit_this_year -= cost;
|
||||
|
@@ -232,7 +232,7 @@ void IniLoadFile::LoadFromDisk(const std::string &filename, Subdirectory subdir,
|
||||
uint a = comment_alloc;
|
||||
/* add to comment */
|
||||
if (ns > a) {
|
||||
a = max(a, 128U);
|
||||
a = std::max(a, 128U);
|
||||
do a *= 2; while (a < ns);
|
||||
comment = ReallocT(comment, comment_alloc = a);
|
||||
}
|
||||
|
@@ -135,12 +135,12 @@ Point InverseRemapCoords2(int x, int y, bool clamp_to_map, bool *clamped)
|
||||
* So give it a z-malus of 4 in the first iterations. */
|
||||
int z = 0;
|
||||
if (clamp_to_map) {
|
||||
for (int i = 0; i < 5; i++) z = GetSlopePixelZ(Clamp(pt.x + max(z, 4) - 4, min_coord, max_x), Clamp(pt.y + max(z, 4) - 4, min_coord, max_y)) / 2;
|
||||
for (int m = 3; m > 0; m--) z = GetSlopePixelZ(Clamp(pt.x + max(z, m) - m, min_coord, max_x), Clamp(pt.y + max(z, m) - m, min_coord, max_y)) / 2;
|
||||
for (int i = 0; i < 5; i++) z = GetSlopePixelZ(Clamp(pt.x + std::max(z, 4) - 4, min_coord, max_x), Clamp(pt.y + std::max(z, 4) - 4, min_coord, max_y)) / 2;
|
||||
for (int m = 3; m > 0; m--) z = GetSlopePixelZ(Clamp(pt.x + std::max(z, m) - m, min_coord, max_x), Clamp(pt.y + std::max(z, m) - m, min_coord, max_y)) / 2;
|
||||
for (int i = 0; i < 5; i++) z = GetSlopePixelZ(Clamp(pt.x + z, min_coord, max_x), Clamp(pt.y + z, min_coord, max_y)) / 2;
|
||||
} else {
|
||||
for (int i = 0; i < 5; i++) z = GetSlopePixelZOutsideMap(pt.x + max(z, 4) - 4, pt.y + max(z, 4) - 4) / 2;
|
||||
for (int m = 3; m > 0; m--) z = GetSlopePixelZOutsideMap(pt.x + max(z, m) - m, pt.y + max(z, m) - m) / 2;
|
||||
for (int i = 0; i < 5; i++) z = GetSlopePixelZOutsideMap(pt.x + std::max(z, 4) - 4, pt.y + std::max(z, 4) - 4) / 2;
|
||||
for (int m = 3; m > 0; m--) z = GetSlopePixelZOutsideMap(pt.x + std::max(z, m) - m, pt.y + std::max(z, m) - m) / 2;
|
||||
for (int i = 0; i < 5; i++) z = GetSlopePixelZOutsideMap(pt.x + z, pt.y + z ) / 2;
|
||||
}
|
||||
|
||||
@@ -639,8 +639,8 @@ void SetSnowLine(byte table[SNOW_LINE_MONTHS][SNOW_LINE_DAYS])
|
||||
|
||||
for (uint i = 0; i < SNOW_LINE_MONTHS; i++) {
|
||||
for (uint j = 0; j < SNOW_LINE_DAYS; j++) {
|
||||
_snow_line->highest_value = max(_snow_line->highest_value, table[i][j]);
|
||||
_snow_line->lowest_value = min(_snow_line->lowest_value, table[i][j]);
|
||||
_snow_line->highest_value = std::max(_snow_line->highest_value, table[i][j]);
|
||||
_snow_line->lowest_value = std::min(_snow_line->lowest_value, table[i][j]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -1806,7 +1806,6 @@ STR_ABANDON_SCENARIO_QUERY :{YELLOW}Is jy s
|
||||
# Cheat window
|
||||
STR_CHEATS :{WHITE}Kullery
|
||||
STR_CHEATS_TOOLTIP :{BLACK}Keuseblokkies wys aan as jy die kulkode voorheen gebruik het
|
||||
STR_CHEATS_WARNING :{BLACK}Waarskuwing! U staan op die punt om jou mededinger te veraai. Hou in gedagte dat so 'n skande vir ewigheid sal onthou word.
|
||||
STR_CHEAT_MONEY :{LTBLUE}Vermeerder geld met {CURRENCY_LONG}
|
||||
STR_CHEAT_CHANGE_COMPANY :{LTBLUE}Speel as maatskappy: {ORANGE}{COMMA}
|
||||
STR_CHEAT_EXTRA_DYNAMITE :{LTBLUE}Tower stootskraper (verwyder nywerhede, onbeweegbare voorwerpe): {ORANGE}{STRING}
|
||||
@@ -2315,6 +2314,8 @@ STR_JOIN_STATION_CREATE_SPLITTED_STATION :{YELLOW}Bou 'n
|
||||
STR_JOIN_WAYPOINT_CAPTION :{WHITE}Verbind roetebaken
|
||||
STR_JOIN_WAYPOINT_CREATE_SPLITTED_WAYPOINT :{YELLOW}Bou 'n aparte roetebaken
|
||||
|
||||
# Generic toolbar
|
||||
|
||||
# Rail construction toolbar
|
||||
STR_RAIL_TOOLBAR_RAILROAD_CONSTRUCTION_CAPTION :Spoorwegkonstruksie
|
||||
STR_RAIL_TOOLBAR_ELRAIL_CONSTRUCTION_CAPTION :Elektriese spoorwegkonstruksie
|
||||
|
@@ -192,6 +192,7 @@ STR_COLOUR_WHITE :ابيض
|
||||
STR_UNITS_VELOCITY_IMPERIAL :{COMMA}{NBSP}ميل/س
|
||||
STR_UNITS_VELOCITY_METRIC :{COMMA}{NBSP}كم/س
|
||||
STR_UNITS_VELOCITY_SI :{COMMA}{NBSP}م/ث
|
||||
STR_UNITS_VELOCITY_GAMEUNITS :{DECIMAL}{NBSP}مربعات/ اليوم
|
||||
|
||||
STR_UNITS_POWER_IMPERIAL :{COMMA}{NBSP}حصان
|
||||
STR_UNITS_POWER_METRIC :{COMMA}{NBSP}حصان
|
||||
@@ -226,6 +227,7 @@ STR_TOOLTIP_FILTER_CRITERIA :{BLACK}حدد
|
||||
STR_BUTTON_SORT_BY :{BLACK} رتب بـ
|
||||
STR_BUTTON_LOCATION :{BLACK}الموقع
|
||||
STR_BUTTON_RENAME :{BLACK}اعادة تسمية
|
||||
STR_BUTTON_CATCHMENT :{BLACK}مدى التغطية
|
||||
|
||||
STR_TOOLTIP_CLOSE_WINDOW :{BLACK}اغلاق الاطار
|
||||
STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS :{BLACK}عنوان الاطار- اسحب لتحريك الاطار
|
||||
@@ -880,6 +882,8 @@ STR_GAME_OPTIONS_CURRENCY_TRY :ليرة ترك
|
||||
STR_GAME_OPTIONS_CURRENCY_SKK :كرونا سلوفاكية (SKK)
|
||||
STR_GAME_OPTIONS_CURRENCY_BRL :ريال برازيلي (BRL)
|
||||
STR_GAME_OPTIONS_CURRENCY_EEK :كرونا استونية (EEK)
|
||||
STR_GAME_OPTIONS_CURRENCY_KRW :وون كوريا الجنوبية (KRW)
|
||||
STR_GAME_OPTIONS_CURRENCY_ZAR :راند جنوب أفريقيا (ZAR)
|
||||
STR_GAME_OPTIONS_CURRENCY_CUSTOM :مخصص ...
|
||||
############ end of currency region
|
||||
|
||||
@@ -1088,6 +1092,7 @@ STR_CONFIG_SETTING_AUTOSLOPE :السماح ب
|
||||
STR_CONFIG_SETTING_CATCHMENT :السماح بحدود اكثر واقعية للمحطات بحسب الحجم: {STRING}
|
||||
STR_CONFIG_SETTING_EXTRADYNAMITE :السماح بحذف اكثر من الطرق المملوكة للمدينة و الجسور و غيرها: {STRING}
|
||||
STR_CONFIG_SETTING_SMOKE_AMOUNT :كمية دخان/شرار القطارات:{STRING}
|
||||
STR_CONFIG_SETTING_SMOKE_AMOUNT_HELPTEXT :حدد مقدار الدخان أو عدد الشرارت من المركبات
|
||||
STR_CONFIG_SETTING_TRAIN_ACCELERATION_MODEL :موديل تسارع القطارات: {STRING}
|
||||
STR_CONFIG_SETTING_ROAD_VEHICLE_ACCELERATION_MODEL :نمط تسارع عربات الطريق: {STRING}
|
||||
STR_CONFIG_SETTING_FORBID_90_DEG :منع القطارات والسفن من الدوران بزاوية تسعين درجة : {STRING}
|
||||
@@ -1098,6 +1103,7 @@ STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NONE :بدون
|
||||
STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NORMAL :ككل المصانع الأخرى
|
||||
STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_PROSPECTING :تنقيب
|
||||
STR_CONFIG_SETTING_MULTIPINDTOWN :السماح بوجود أكثر من مصنع من نفس النوع في المدينة الواحدة: {STRING}
|
||||
STR_CONFIG_SETTING_SIGNALSIDE_DRIVING_SIDE :على جانب القيادة
|
||||
STR_CONFIG_SETTING_SHOWFINANCES :أعرض نافذة المالية في آخر السنة: {STRING}
|
||||
STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT :الامر الجديد - بدون توقف - قياسيا: {STRING}
|
||||
STR_CONFIG_SETTING_STOP_LOCATION :اوامر القطار الجديدة تتوقف قياسيا في {STRING} رصيف المحطة
|
||||
@@ -1117,6 +1123,7 @@ STR_CONFIG_SETTING_PLANE_CRASHES_REDUCED :منخفض
|
||||
STR_CONFIG_SETTING_PLANE_CRASHES_NORMAL :طبيعي
|
||||
STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD :السماح للعربات بالعبور خلال المواقف المملوكة داخل المدن: {STRING}
|
||||
STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD :السماح بمرور العربات خلال المحطات المملوكة للمنافسين: {STRING}
|
||||
STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD_HELPTEXT :السماح ببناء مواقف السيارات على الطرق المملوكة لشركات أخرى
|
||||
STR_CONFIG_SETTING_DYNAMIC_ENGINES_EXISTING_VEHICLES :{WHITE}تغير هذا الخيار غير متاح عندما يكون هناك عربات
|
||||
STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE :صيانة البنية التحتية: {STRING}
|
||||
|
||||
@@ -1244,6 +1251,7 @@ STR_CONFIG_SETTING_DISABLE_UNSUITABLE_BUILDING :عطل ادوا
|
||||
STR_CONFIG_SETTING_MAX_TRAINS :الحد الأعلى لعدد القطارات لكل شركة: {STRING}
|
||||
STR_CONFIG_SETTING_MAX_ROAD_VEHICLES :الحد الأعلى لعدد العربات لكل شركة: {STRING}
|
||||
STR_CONFIG_SETTING_MAX_AIRCRAFT :الحد الأعلى لعدد الطائرات لكل شركة: {STRING}
|
||||
STR_CONFIG_SETTING_MAX_AIRCRAFT_HELPTEXT :الحد الأقصى لعدد الطائرات التي يمكن أن تمتلكها الشركة
|
||||
STR_CONFIG_SETTING_MAX_SHIPS :الحد الأعلى لعدد السفن لكل شركة: {STRING}
|
||||
|
||||
STR_CONFIG_SETTING_AI_BUILDS_TRAINS :حظر القطارات على الحاسوب: {STRING}
|
||||
@@ -1251,6 +1259,7 @@ STR_CONFIG_SETTING_AI_BUILDS_ROAD_VEHICLES :حظر العر
|
||||
STR_CONFIG_SETTING_AI_BUILDS_AIRCRAFT :حظر الطائرات على الحاسوب: {STRING}
|
||||
STR_CONFIG_SETTING_AI_BUILDS_SHIPS :حظر السفن على الحاسوب: {STRING}
|
||||
|
||||
STR_CONFIG_SETTING_AI_PROFILE_EASY :سهل
|
||||
|
||||
STR_CONFIG_SETTING_AI_IN_MULTIPLAYER :السماح بالذكاء الصناعي في اللعب الجماعي : {STRING}
|
||||
STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES :#opcodes قبل تعليق الاسكربت: {STRING}
|
||||
@@ -1289,6 +1298,7 @@ STR_CONFIG_SETTING_NEWS_MESSAGES_FULL :ممتلئ
|
||||
|
||||
STR_CONFIG_SETTING_COLOURED_NEWS_YEAR :الاخبار الملونة تظهر في: {STRING}
|
||||
STR_CONFIG_SETTING_STARTING_YEAR :سنة البدايه: {STRING}
|
||||
STR_CONFIG_SETTING_ENDING_YEAR_ZERO :لا تنتهي
|
||||
STR_CONFIG_SETTING_ALLOW_SHARES :السماح بشراء حصص من الشركات الاخرى: {STRING}
|
||||
STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE :اتاحة استخدام الأشارات بالأعلام قبل :{STRING}
|
||||
STR_CONFIG_SETTING_ENABLE_SIGNAL_GUI :السماح باستخدام اشارات واجهة المستخدم الرسومية: {STRING}
|
||||
@@ -1336,11 +1346,15 @@ STR_CONFIG_SETTING_TOWN_GROWTH_FAST :سريع
|
||||
STR_CONFIG_SETTING_TOWN_GROWTH_VERY_FAST :سريع جدا
|
||||
STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER :مضاعف المدن المبدئي: {STRING}
|
||||
|
||||
STR_CONFIG_SETTING_DEMAND_SIZE_HELPTEXT :ضبط هذا إلى أقل من 100٪ يؤدي إلى جعل التوزيع المتماثل يتصرف مثل التوزيع غير المتماثل. سيتم إعادة شحنات أقل غصبا إذا تم إرسال مبلغ معين إلى المحطة. إذا قمت بتعيينه على 0٪ ، فإن التوزيع المتماثل يتصرف تمامًا مثل التوزيع غير المتماثل
|
||||
|
||||
STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_METRIC :(متري (كم / ساعة
|
||||
|
||||
|
||||
STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_METRIC :(متري (طن
|
||||
|
||||
|
||||
|
||||
STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE ::وحدات جهد الجر {STRING}
|
||||
|
||||
STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_METRIC :م) متري)
|
||||
|
||||
@@ -1442,7 +1456,6 @@ STR_ABANDON_SCENARIO_QUERY :{YELLOW}هل ت
|
||||
# Cheat window
|
||||
STR_CHEATS :{WHITE}اسرار
|
||||
STR_CHEATS_TOOLTIP :{BLACK}علامة صح اذا استخدمت هذا السرمن قبل
|
||||
STR_CHEATS_WARNING :{BLACK}تحذير! انت على وشك ان تغش منافسيك. إعلم انهم سيتذكرون عليك هذا العار للإبد
|
||||
STR_CHEAT_MONEY :{LTBLUE}زيادة السيولة بـ {CURRENCY_LONG}
|
||||
STR_CHEAT_CHANGE_COMPANY :{LTBLUE}العب كشركة{ORANGE}{COMMA}
|
||||
STR_CHEAT_EXTRA_DYNAMITE :{LTBLUE}الجرافة السحرية - لازالة المصانع و الاجسام غير القابلة للازالة.{ORANGE}{STRING}
|
||||
@@ -1830,6 +1843,7 @@ STR_CONTENT_SELECT_UPDATES_CAPTION :{BLACK} اخت
|
||||
STR_CONTENT_SELECT_UPDATES_CAPTION_TOOLTIP :{BLACK} ضع علامة على التحديثات للمحتويات الموجودة و التي سيتم تحميلها
|
||||
STR_CONTENT_UNSELECT_ALL_CAPTION :{BLACK} مسح الكل
|
||||
STR_CONTENT_UNSELECT_ALL_CAPTION_TOOLTIP :{BLACK} ضع علامة على المحتوى التي لن يتم تحميلها
|
||||
STR_CONTENT_SEARCH_EXTERNAL :{BLACK}بحث المواقع الخارجية
|
||||
STR_CONTENT_FILTER_TITLE :{BLACK}مُرَشِح:
|
||||
STR_CONTENT_DOWNLOAD_CAPTION :{BLACK} تحميل
|
||||
STR_CONTENT_DOWNLOAD_CAPTION_TOOLTIP :{BLACK} ابدأ تحميل المحتويات المختارة
|
||||
@@ -1915,6 +1929,8 @@ STR_JOIN_STATION_CREATE_SPLITTED_STATION :{YELLOW} بنا
|
||||
STR_JOIN_WAYPOINT_CAPTION :{WHITE}اربط نقطة العبور
|
||||
STR_JOIN_WAYPOINT_CREATE_SPLITTED_WAYPOINT :{YELLOW} ابني نقطة عبور مستقلة
|
||||
|
||||
# Generic toolbar
|
||||
|
||||
# Rail construction toolbar
|
||||
STR_RAIL_TOOLBAR_RAILROAD_CONSTRUCTION_CAPTION :بناء السكك الحديدية
|
||||
STR_RAIL_TOOLBAR_ELRAIL_CONSTRUCTION_CAPTION :بناء سكة القطار الكهربائية
|
||||
@@ -2200,6 +2216,7 @@ STR_LAND_AREA_INFORMATION_NEWGRF_NAME :{BLACK}NewGRF:
|
||||
STR_LAND_AREA_INFORMATION_CARGO_ACCEPTED :{BLACK}الشحنة المقبولة: {LTBLUE}
|
||||
STR_LAND_AREA_INFORMATION_CARGO_EIGHTS :({COMMA} /8 {STRING})
|
||||
STR_LANG_AREA_INFORMATION_ROAD_TYPE :{BLACK}:نوع الطريق {LTBLUE}{STRING}
|
||||
STR_LANG_AREA_INFORMATION_TRAM_TYPE :{BLACK}:نوع الترام {LTBLUE}{STRING}
|
||||
STR_LANG_AREA_INFORMATION_RAIL_SPEED_LIMIT :{BLACK}حدود سرعة سكة الحديد: {LTBLUE}{VELOCITY}
|
||||
STR_LANG_AREA_INFORMATION_ROAD_SPEED_LIMIT :{BLACK}حدود سرعه الطريق: {LTBLUE}{VELOCITY}
|
||||
|
||||
@@ -2301,9 +2318,12 @@ STR_ABOUT_VERSION :{BLACK}النس
|
||||
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}النسخة المفتوحة {COPYRIGHT}2002-{STRING} فريق النسخة المفتوحة
|
||||
|
||||
# Framerate display window
|
||||
STR_FRAMERATE_FPS_GOOD :{LTBLUE}{DECIMAL} صورة في الثانية
|
||||
############ Leave those lines in this order!!
|
||||
STR_FRAMERATE_AI :{BLACK} AI {NUM} {STRING}
|
||||
############ End of leave-in-this-order
|
||||
############ Leave those lines in this order!!
|
||||
STR_FRAMETIME_CAPTION_GAMESCRIPT :كتابة اللعبة
|
||||
############ End of leave-in-this-order
|
||||
|
||||
|
||||
@@ -2329,6 +2349,7 @@ STR_SAVELOAD_DETAIL_CAPTION :{BLACK}تفاص
|
||||
STR_SAVELOAD_DETAIL_NOT_AVAILABLE :{BLACK}لا توجد معلومات متاحة
|
||||
STR_SAVELOAD_DETAIL_COMPANY_INDEX :{SILVER}{COMMA}: {WHITE}{STRING}
|
||||
STR_SAVELOAD_DETAIL_GRFSTATUS :{SILVER}اضافات جديدة: {WHITE}{STRING}
|
||||
STR_SAVELOAD_OVERWRITE_TITLE :{WHITE}الكتابة على الملف
|
||||
|
||||
STR_SAVELOAD_OSKTITLE :{BLACK}ادخل اسم الحفظ للعبة
|
||||
|
||||
@@ -2639,6 +2660,7 @@ STR_GOAL_QUESTION_CAPTION_WARNING :تحذير
|
||||
STR_GOAL_QUESTION_CAPTION_ERROR :خطا
|
||||
|
||||
############ Start of Goal Question button list
|
||||
STR_GOAL_QUESTION_BUTTON_RETRY :إعادة المحاولة
|
||||
############ End of Goal Question button list
|
||||
|
||||
# Subsidies window
|
||||
@@ -2651,6 +2673,7 @@ STR_SUBSIDIES_SUBSIDISED_FROM_TO :{ORANGE}{STRING
|
||||
STR_SUBSIDIES_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}اضغط على الخدمة لتوسيط الخريطة على المصنع/المدينة. اضغط + كنترول لفتح شاشة عرض جديدة للمدينة.
|
||||
|
||||
# Story book window
|
||||
STR_STORY_BOOK_CAPTION :{WHITE}{COMPANY}كتاب القصة
|
||||
|
||||
# Station list window
|
||||
STR_STATION_LIST_TOOLTIP :{BLACK}اسم المحطة - اضغط على اسم المحطة لتوسيطها في الشاشة. اضغط + كنترول لفتح شاشة عرض جديدة بمنطقة المحطة.
|
||||
@@ -2676,6 +2699,7 @@ STR_STATION_VIEW_ACCEPTS_CARGO :{BLACK}يقبل
|
||||
STR_STATION_VIEW_RATINGS_BUTTON :{BLACK}معدل النقل
|
||||
STR_STATION_VIEW_RATINGS_TOOLTIP :{BLACK}اظهار معدل النقل للمحطة
|
||||
|
||||
STR_STATION_VIEW_WAITING_AMOUNT :الكمية: في الانتظار
|
||||
|
||||
|
||||
############ range for rating starts
|
||||
@@ -2787,7 +2811,9 @@ STR_BUY_COMPANY_MESSAGE :{WHITE}نحن
|
||||
STR_INDUSTRY_DIRECTORY_CAPTION :{WHITE}صناعات
|
||||
STR_INDUSTRY_DIRECTORY_NONE :{ORANGE}-بدون-
|
||||
STR_INDUSTRY_DIRECTORY_ITEM_NOPROD :{ORANGE}{INDUSTRY}
|
||||
STR_INDUSTRY_DIRECTORY_ITEM_PROD1 :{ORANGE}{INDUSTRY} {STRING}
|
||||
STR_INDUSTRY_DIRECTORY_LIST_CAPTION :{BLACK}اسماء المصانع - اضغط على اسم المصنع لتوسيط الشاشة عليه. اضغط + كنترول لفتح شاشة عرض جديدة لمنطقة المصنع.
|
||||
STR_INDUSTRY_DIRECTORY_FILTER_NONE :بدون
|
||||
|
||||
# Industry view
|
||||
STR_INDUSTRY_VIEW_CAPTION :{WHITE}{INDUSTRY}
|
||||
@@ -2894,6 +2920,7 @@ STR_PURCHASE_INFO_AIRCRAFT_CAPACITY :{BLACK} الس
|
||||
STR_PURCHASE_INFO_PWAGPOWER_PWAGWEIGHT :{BLACK} العربات ذات الطاقة: {GOLD}+{POWER}{BLACK} الوزن: {GOLD}+{WEIGHT_SHORT}
|
||||
STR_PURCHASE_INFO_REFITTABLE_TO :{BLACK}يمكن تعديلها الى: {GOLD}{STRING}
|
||||
STR_PURCHASE_INFO_ALL_TYPES :كل انواع الحمولة
|
||||
STR_PURCHASE_INFO_NONE :بدون
|
||||
STR_PURCHASE_INFO_ALL_BUT :الكل الا {CARGO_LIST}
|
||||
STR_PURCHASE_INFO_MAX_TE :{BLACK}تأثير الجذب القصى: {GOLD}{FORCE}
|
||||
|
||||
@@ -2926,6 +2953,7 @@ STR_BUY_VEHICLE_SHIP_RENAME_TOOLTIP :{BLACK}اعاد
|
||||
STR_BUY_VEHICLE_AIRCRAFT_RENAME_TOOLTIP :{BLACK}اعادة تسمية نوع الطائرة
|
||||
|
||||
|
||||
STR_BUY_VEHICLE_AIRCRAFT_SHOW_TOGGLE_BUTTON :{BLACK}عرض
|
||||
|
||||
STR_BUY_VEHICLE_AIRCRAFT_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK} تبيدل بين إخفاء / عرض نوع الطائرة
|
||||
|
||||
@@ -3192,6 +3220,7 @@ STR_VEHICLE_DETAILS_TRAIN_ARTICULATED_RV_CAPACITY :{BLACK}السع
|
||||
STR_REFIT_CAPTION :{WHITE}{VEHICLE} (تغيير)
|
||||
STR_REFIT_TITLE :{GOLD}اختر نوع الحمولة ...
|
||||
STR_REFIT_NEW_CAPACITY_COST_OF_REFIT :{BLACK}السعة الجديدة: {GOLD}{CARGO_LONG}{}{BLACK}تكلفة التغيير: {RED}{CURRENCY_LONG}
|
||||
STR_REFIT_NEW_CAPACITY_INCOME_FROM_REFIT :{BLACK}:المساحة الجديدة {GOLD}{CARGO_LONG}{}{BLACK}:الدخل من التجديد {GREEN}{CURRENCY_LONG}
|
||||
STR_REFIT_NEW_CAPACITY_COST_OF_AIRCRAFT_REFIT :{BLACK}السعة الجديدة: {GOLD}{CARGO_LONG}, {GOLD}{CARGO_LONG}{}{BLACK}تكلفة اعادة التهيئة: {RED}{CURRENCY_LONG}
|
||||
STR_REFIT_SELECT_VEHICLES_TOOLTIP :{BLACK}اختر العربة لاعادة تهيئتها. اسحب بالفارة لاختيار عدة عربات. اضغط على مساحة خالية لاختيار كل العربات. اضغط + كنترول لاختيار العربة الحالية وما بعدها.
|
||||
|
||||
@@ -3479,6 +3508,7 @@ STR_AI_LIST_ACCEPT_TOOLTIP :{BLACK} اخت
|
||||
STR_AI_LIST_CANCEL :{BLACK} الغاء
|
||||
STR_AI_LIST_CANCEL_TOOLTIP :{BLACK} لا تغير الذكاء الصناعي
|
||||
|
||||
STR_SCREENSHOT_ZOOMIN_SCREENSHOT :{BLACK}التقط لقطة شاشة كاملة
|
||||
|
||||
# AI Parameters
|
||||
STR_AI_SETTINGS_CLOSE :{BLACK} اغلاق
|
||||
@@ -3753,6 +3783,7 @@ STR_ERROR_CAN_T_REMOVE_ROAD_FROM :{WHITE}تعذر
|
||||
STR_ERROR_CAN_T_REMOVE_TRAMWAY_FROM :{WHITE}تعذر إزاله سكه الترام من هنا...
|
||||
STR_ERROR_THERE_IS_NO_ROAD :{WHITE}... لا يوجد طريق
|
||||
STR_ERROR_THERE_IS_NO_TRAMWAY :{WHITE}... لا يوجد سكه ترام هنا
|
||||
STR_ERROR_NO_SUITABLE_TRAMWAY :{WHITE}لا يوجد ترام مناسب
|
||||
|
||||
# Waterway construction errors
|
||||
STR_ERROR_CAN_T_BUILD_CANALS :{WHITE}تعذر بناء القناه هنا...
|
||||
|
@@ -1682,7 +1682,6 @@ STR_ABANDON_SCENARIO_QUERY :{YELLOW}¿Segur
|
||||
# Cheat window
|
||||
STR_CHEATS :{WHITE}Trukoak
|
||||
STR_CHEATS_TOOLTIP :{BLACK}Kontrol laukiek erakutsiko dute trukoak erabili badituzu
|
||||
STR_CHEATS_WARNING :{BLACK}Abisua! Zure kideak traizionatzear zaude. Gogoratu traizioa ez dela inoiz ahaztuko
|
||||
STR_CHEAT_MONEY :{LTBLUE}Dirua {CURRENCY_LONG}-etan areagotu
|
||||
STR_CHEAT_CHANGE_COMPANY :{LTBLUE} {ORANGE}{COMMA} konpainiarekin jolastu
|
||||
STR_CHEAT_EXTRA_DYNAMITE :{LTBLUE}Bulldozer magikoa (edozer ezabatzen du): {ORANGE}{STRING}
|
||||
@@ -2177,6 +2176,8 @@ STR_JOIN_STATION_CREATE_SPLITTED_STATION :{YELLOW}Geltoki
|
||||
STR_JOIN_WAYPOINT_CAPTION :{WHITE}Bidepuntua lotu
|
||||
STR_JOIN_WAYPOINT_CREATE_SPLITTED_WAYPOINT :{YELLOW}Ibilbide puntu bereizitua eraiki
|
||||
|
||||
# Generic toolbar
|
||||
|
||||
# Rail construction toolbar
|
||||
STR_RAIL_TOOLBAR_RAILROAD_CONSTRUCTION_CAPTION :Trenbidea eraiki
|
||||
STR_RAIL_TOOLBAR_ELRAIL_CONSTRUCTION_CAPTION :Trenbide elektrikoa eraiki
|
||||
|
@@ -2116,7 +2116,6 @@ STR_ABANDON_SCENARIO_QUERY :{YELLOW}Вы ў
|
||||
# Cheat window
|
||||
STR_CHEATS :{WHITE}Махлярства (чыты)
|
||||
STR_CHEATS_TOOLTIP :{BLACK}Птушкі паказваюць, ці выкарыстоўвалі Вы гэты чыт раней
|
||||
STR_CHEATS_WARNING :{BLACK}Увага, Вы зьбіраецеся здрадзіць сваім спаборнікам! Гэтага вам ніколі не даруюць!
|
||||
STR_CHEAT_MONEY :{LTBLUE}Дадаць {CURRENCY_LONG}
|
||||
STR_CHEAT_CHANGE_COMPANY :{LTBLUE}Гульня за кампанію: {ORANGE}{COMMA}
|
||||
STR_CHEAT_EXTRA_DYNAMITE :{LTBLUE}Чароўны дынамiт (знос УСЯГО): {ORANGE}{STRING}
|
||||
@@ -2640,6 +2639,8 @@ STR_JOIN_STATION_CREATE_SPLITTED_STATION :{YELLOW}Паб
|
||||
STR_JOIN_WAYPOINT_CAPTION :{WHITE}Аб'яднаць пункты шляху
|
||||
STR_JOIN_WAYPOINT_CREATE_SPLITTED_WAYPOINT :{YELLOW}Пабудаваць асобны пункт шляху
|
||||
|
||||
# Generic toolbar
|
||||
|
||||
# Rail construction toolbar
|
||||
STR_RAIL_TOOLBAR_RAILROAD_CONSTRUCTION_CAPTION :Чыгунка
|
||||
STR_RAIL_TOOLBAR_ELRAIL_CONSTRUCTION_CAPTION :Электрыфікаваная чыгунка
|
||||
|
@@ -1816,7 +1816,6 @@ STR_ABANDON_SCENARIO_QUERY :{YELLOW}Você t
|
||||
# Cheat window
|
||||
STR_CHEATS :{WHITE}Trapaças
|
||||
STR_CHEATS_TOOLTIP :{BLACK}As caixas de verificação indicam se você usou esta trapaça antes
|
||||
STR_CHEATS_WARNING :{BLACK}Atenção! Você está prestes a trair os seus companheiros oponentes. Tenha em mente que tal desgraça será lembrada pela eternidade
|
||||
STR_CHEAT_MONEY :{LTBLUE}Aumentar dinheiro em {CURRENCY_LONG}
|
||||
STR_CHEAT_CHANGE_COMPANY :{LTBLUE}Jogando pela Co.: {ORANGE}{COMMA}
|
||||
STR_CHEAT_EXTRA_DYNAMITE :{LTBLUE}Escavadeira mágica (destrói indústrias, objetos estáticos): {ORANGE}{STRING}
|
||||
@@ -2325,6 +2324,8 @@ STR_JOIN_STATION_CREATE_SPLITTED_STATION :{YELLOW}Constru
|
||||
STR_JOIN_WAYPOINT_CAPTION :{WHITE}Unir ponto de controle
|
||||
STR_JOIN_WAYPOINT_CREATE_SPLITTED_WAYPOINT :{YELLOW}Construir um ponto de controle separado
|
||||
|
||||
# Generic toolbar
|
||||
|
||||
# Rail construction toolbar
|
||||
STR_RAIL_TOOLBAR_RAILROAD_CONSTRUCTION_CAPTION :Construir ferrovias
|
||||
STR_RAIL_TOOLBAR_ELRAIL_CONSTRUCTION_CAPTION :Construir ferrovias (elétricas)
|
||||
|
@@ -1728,7 +1728,6 @@ STR_ABANDON_SCENARIO_QUERY :{YELLOW}Иск
|
||||
# Cheat window
|
||||
STR_CHEATS :{WHITE}Кодове
|
||||
STR_CHEATS_TOOLTIP :{BLACK}Кутийките показват дали този код е бил използван
|
||||
STR_CHEATS_WARNING :{BLACK}Внимание! По този начин ще измамите своите съперници. Имайте в предвид, че това безчестие ще бъде запомнено вовеки веков.
|
||||
STR_CHEAT_MONEY :{LTBLUE}Увеличаване на парите с {CURRENCY_LONG}
|
||||
STR_CHEAT_CHANGE_COMPANY :{LTBLUE}Играе като компания: {ORANGE}{COMMA}
|
||||
STR_CHEAT_EXTRA_DYNAMITE :{LTBLUE}Магически булдозер (премахва промишленост, неподвижни обекти): {ORANGE}{STRING}
|
||||
@@ -2230,6 +2229,8 @@ STR_JOIN_STATION_CREATE_SPLITTED_STATION :{YELLOW}Нап
|
||||
STR_JOIN_WAYPOINT_CAPTION :{WHITE}Съедини пътеводител
|
||||
STR_JOIN_WAYPOINT_CREATE_SPLITTED_WAYPOINT :{YELLOW}Построи отделен пътеводител
|
||||
|
||||
# Generic toolbar
|
||||
|
||||
# Rail construction toolbar
|
||||
STR_RAIL_TOOLBAR_RAILROAD_CONSTRUCTION_CAPTION :Конструкции за Двурелсов път
|
||||
STR_RAIL_TOOLBAR_ELRAIL_CONSTRUCTION_CAPTION :Строене на електрифицирана ЖП мрежа
|
||||
|
@@ -1452,6 +1452,8 @@ STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS :Mantingues les
|
||||
STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS_HELPTEXT :Mantingues les eines de construcció pels ponts, túnels, etc. obertes després d'utilitzar-les
|
||||
STR_CONFIG_SETTING_EXPENSES_LAYOUT :Agrupa les despeses a la finestra de finances de la companyia: {STRING}
|
||||
STR_CONFIG_SETTING_EXPENSES_LAYOUT_HELPTEXT :Defineix la disposició de la companyia a la finestra de despeses
|
||||
STR_CONFIG_SETTING_AUTO_REMOVE_SIGNALS :Treu automàticament els senyals durant la construcció ferroviària: {STRING}
|
||||
STR_CONFIG_SETTING_AUTO_REMOVE_SIGNALS_HELPTEXT :Treu automàticament els senyals ferroviaris que hi hagi pel mig durant la construcció de rail. Aneu amb compte ja que pot provocar col·lisions de trens.
|
||||
|
||||
STR_CONFIG_SETTING_SOUND_TICKER :Barra de notícies: {STRING}
|
||||
STR_CONFIG_SETTING_SOUND_TICKER_HELPTEXT :Reprodueix un so quan apareixen les notícies resumides a la barra inferior
|
||||
@@ -1836,7 +1838,6 @@ STR_ABANDON_SCENARIO_QUERY :{YELLOW}Esteu s
|
||||
# Cheat window
|
||||
STR_CHEATS :{WHITE}Trampes
|
||||
STR_CHEATS_TOOLTIP :{BLACK}Les caselles de selecció indiquen si heu fet servir aquesta trampa.
|
||||
STR_CHEATS_WARNING :{BLACK}Atenció! Esteu a punt d'enredar als altres jugadors. Penseu que una cosa així serà recordada per tota l'eternitat.
|
||||
STR_CHEAT_MONEY :{LTBLUE}Augmenta els diners de la companyia actual en {CURRENCY_LONG}.
|
||||
STR_CHEAT_CHANGE_COMPANY :{LTBLUE}Juga amb la companyia: {ORANGE}{COMMA}
|
||||
STR_CHEAT_EXTRA_DYNAMITE :{LTBLUE}Eruga màgica (treu indústries i altres objectes inamovibles): {ORANGE}{STRING}
|
||||
@@ -2233,6 +2234,7 @@ STR_NETWORK_MESSAGE_CLIENT_COMPANY_SPECTATE :*** {STRING} s'
|
||||
STR_NETWORK_MESSAGE_CLIENT_COMPANY_NEW :*** {STRING} ha començat una nova companyia (#{2:NUM})
|
||||
STR_NETWORK_MESSAGE_CLIENT_LEFT :*** {STRING} ha deixat la partida ({2:STRING})
|
||||
STR_NETWORK_MESSAGE_NAME_CHANGE :*** {STRING} ha canviat el seu nom a {STRING}
|
||||
STR_NETWORK_MESSAGE_GIVE_MONEY :*** {STRING} ha donat {2:CURRENCY_LONG} a {1:STRING}.
|
||||
STR_NETWORK_MESSAGE_SERVER_SHUTDOWN :{WHITE}El servidor ha tancat la sessió
|
||||
STR_NETWORK_MESSAGE_SERVER_REBOOT :{WHITE}El servidor està reiniciant...{}Espera un moment...
|
||||
STR_NETWORK_MESSAGE_KICKED :*** S'ha expulsat {STRING}. Motiu: {STRING}
|
||||
@@ -2351,6 +2353,9 @@ STR_JOIN_STATION_CREATE_SPLITTED_STATION :{YELLOW}Constru
|
||||
STR_JOIN_WAYPOINT_CAPTION :{WHITE}Uneix punt de pas
|
||||
STR_JOIN_WAYPOINT_CREATE_SPLITTED_WAYPOINT :{YELLOW}Construeix un punt de pas separat
|
||||
|
||||
# Generic toolbar
|
||||
STR_TOOLBAR_DISABLED_NO_VEHICLE_AVAILABLE :{BLACK}S'ha desactivat ja que actualment no disposeu de vehicles per usar aquesta infraestructura.
|
||||
|
||||
# Rail construction toolbar
|
||||
STR_RAIL_TOOLBAR_RAILROAD_CONSTRUCTION_CAPTION :Construcció de ferrocarril
|
||||
STR_RAIL_TOOLBAR_ELRAIL_CONSTRUCTION_CAPTION :Construcció de ferrocarril elèctric
|
||||
@@ -3373,7 +3378,8 @@ STR_COMPANY_VIEW_RELOCATE_HQ :{BLACK}Trasllad
|
||||
STR_COMPANY_VIEW_RELOCATE_COMPANY_HEADQUARTERS :{BLACK}Trasllada la seu a un altre lloc amb el cost d'un 1% del valor de la companyia. Amb Maj+Clic, mostra el cost estimat sense traslladar la seu.
|
||||
STR_COMPANY_VIEW_INFRASTRUCTURE_BUTTON :{BLACK}Detalls
|
||||
STR_COMPANY_VIEW_INFRASTRUCTURE_TOOLTIP :{BLACK}Veure els detalls de la infraestructura de la companyia.
|
||||
STR_COMPANY_VIEW_GIVE_MONEY_BUTTON :{BLACK}Entrega diners
|
||||
STR_COMPANY_VIEW_GIVE_MONEY_BUTTON :{BLACK}Dóna diners
|
||||
STR_COMPANY_VIEW_GIVE_MONEY_TOOLTIP :{BLACK}Doneu diners a aquesta companyia.
|
||||
|
||||
STR_COMPANY_VIEW_NEW_FACE_BUTTON :{BLACK}Modifica la cara
|
||||
STR_COMPANY_VIEW_NEW_FACE_TOOLTIP :{BLACK}Modifica la cara del president de la companyia.
|
||||
@@ -3391,7 +3397,7 @@ STR_COMPANY_VIEW_SELL_SHARE_TOOLTIP :{BLACK}Ven un 2
|
||||
|
||||
STR_COMPANY_VIEW_COMPANY_NAME_QUERY_CAPTION :Nom de la companyia
|
||||
STR_COMPANY_VIEW_PRESIDENT_S_NAME_QUERY_CAPTION :Nom del president
|
||||
STR_COMPANY_VIEW_GIVE_MONEY_QUERY_CAPTION :Introdueix la quantitat de diners que vols donar
|
||||
STR_COMPANY_VIEW_GIVE_MONEY_QUERY_CAPTION :Escriviu la quantitat de diners que voleu donar
|
||||
|
||||
STR_BUY_COMPANY_MESSAGE :{WHITE}Estem venent la nostra companyia de transports.{}{}Vols comprar {COMPANY} per {CURRENCY_LONG}?
|
||||
|
||||
@@ -4018,6 +4024,7 @@ STR_ORDER_REFIT_STOP_ORDER :(Remodela a {ST
|
||||
STR_ORDER_STOP_ORDER :(Para)
|
||||
|
||||
STR_ORDER_GO_TO_STATION :{STRING} {STATION} {STRING}
|
||||
STR_ORDER_GO_TO_STATION_CAN_T_USE_STATION :{PUSH_COLOUR}{RED}(No pot usar l'estació){POP_COLOUR} {STRING} {STATION} {STRING}
|
||||
|
||||
STR_ORDER_IMPLICIT :(Implícit)
|
||||
|
||||
@@ -4343,6 +4350,7 @@ STR_ERROR_LOAN_ALREADY_REPAYED :{WHITE}... No q
|
||||
STR_ERROR_CURRENCY_REQUIRED :{WHITE}... {CURRENCY_LONG} necessaris
|
||||
STR_ERROR_CAN_T_REPAY_LOAN :{WHITE}No es pot amortitzar préstec...
|
||||
STR_ERROR_INSUFFICIENT_FUNDS :{WHITE}No es poden regalar els diners deixats pel banc...
|
||||
STR_ERROR_CAN_T_GIVE_MONEY :{WHITE}No podeu donar diners a aquesta companyia...
|
||||
STR_ERROR_CAN_T_BUY_COMPANY :{WHITE}No pots comprar la companyia...
|
||||
STR_ERROR_CAN_T_BUILD_COMPANY_HEADQUARTERS :{WHITE}No es pot construir la seu de la companyia...
|
||||
STR_ERROR_CAN_T_BUY_25_SHARE_IN_THIS :{WHITE}No pots comprar el 25% de participació en aquesta companyia...
|
||||
@@ -4469,6 +4477,8 @@ STR_ERROR_DEPOT_WRONG_DEPOT_TYPE :Tipus de cotxer
|
||||
STR_ERROR_TRAIN_TOO_LONG_AFTER_REPLACEMENT :{WHITE}{VEHICLE} és massa llarg després de la substitució
|
||||
STR_ERROR_AUTOREPLACE_NOTHING_TO_DO :{WHITE}No s'han aplicat normes d'autosubstitució/renovació
|
||||
STR_ERROR_AUTOREPLACE_MONEY_LIMIT :(límit de diners)
|
||||
STR_ERROR_AUTOREPLACE_INCOMPATIBLE_CARGO :{WHITE}El vehicle nou no pot portar {STRING}.
|
||||
STR_ERROR_AUTOREPLACE_INCOMPATIBLE_REFIT :{WHITE}El vehicle nou no pot complir el remodelat de l'ordre {NUM}.
|
||||
|
||||
# Rail construction errors
|
||||
STR_ERROR_IMPOSSIBLE_TRACK_COMBINATION :{WHITE}Combinació de vies impossible
|
||||
|
@@ -1911,7 +1911,6 @@ STR_ABANDON_SCENARIO_QUERY :{YELLOW}Doista
|
||||
# Cheat window
|
||||
STR_CHEATS :{WHITE}Varanje
|
||||
STR_CHEATS_TOOLTIP :{BLACK}Kvačice ukazuju na to jesi li koristio ovo varanje prije
|
||||
STR_CHEATS_WARNING :{BLACK}Upozorenje! Upravo se spremaš izdati svoj kolege natjecatelje. Imaj na umu da se takva sramota pamti zauvijek
|
||||
STR_CHEAT_MONEY :{LTBLUE}Povećaj novce za iznos {CURRENCY_LONG}
|
||||
STR_CHEAT_CHANGE_COMPANY :{LTBLUE}Igraj kao tvrtka: {ORANGE}{COMMA}
|
||||
STR_CHEAT_EXTRA_DYNAMITE :{LTBLUE}Magični buldožer (uklanja industrije, nepokretne objekte): {ORANGE}{STRING}
|
||||
@@ -2420,6 +2419,8 @@ STR_JOIN_STATION_CREATE_SPLITTED_STATION :{YELLOW}Izgradi
|
||||
STR_JOIN_WAYPOINT_CAPTION :{WHITE}Spoji čvorište
|
||||
STR_JOIN_WAYPOINT_CREATE_SPLITTED_WAYPOINT :{YELLOW}Izgradi zasebno čvorište
|
||||
|
||||
# Generic toolbar
|
||||
|
||||
# Rail construction toolbar
|
||||
STR_RAIL_TOOLBAR_RAILROAD_CONSTRUCTION_CAPTION :Izgradnja željeznice
|
||||
STR_RAIL_TOOLBAR_ELRAIL_CONSTRUCTION_CAPTION :Izgradnja elektrificirane željeznice
|
||||
|
@@ -2157,7 +2157,6 @@ STR_ABANDON_SCENARIO_QUERY :{YELLOW}Určite
|
||||
# Cheat window
|
||||
STR_CHEATS :{WHITE}Cheaty
|
||||
STR_CHEATS_TOOLTIP :{BLACK}Zaškrtávací políčka ukazují, jestli jsi tento cheat už použil
|
||||
STR_CHEATS_WARNING :{BLACK}Varování! Chystáš se podvést ostatní hráče. Pamatuj si, že tento podlý čin nebude nikdy zapomenut!
|
||||
STR_CHEAT_MONEY :{LTBLUE}Navýšit peníze o {CURRENCY_LONG}
|
||||
STR_CHEAT_CHANGE_COMPANY :{LTBLUE}Hrát jako společnost: {ORANGE}{COMMA}
|
||||
STR_CHEAT_EXTRA_DYNAMITE :{LTBLUE}Magický buldozer (odstraní průmysl a další objekty): {ORANGE}{STRING}
|
||||
@@ -2677,6 +2676,8 @@ STR_JOIN_STATION_CREATE_SPLITTED_STATION :{YELLOW}Postavi
|
||||
STR_JOIN_WAYPOINT_CAPTION :{WHITE}Spojování směrování
|
||||
STR_JOIN_WAYPOINT_CREATE_SPLITTED_WAYPOINT :{YELLOW}Postavit samostatné směrování
|
||||
|
||||
# Generic toolbar
|
||||
|
||||
# Rail construction toolbar
|
||||
STR_RAIL_TOOLBAR_RAILROAD_CONSTRUCTION_CAPTION :Výstavba železnice
|
||||
STR_RAIL_TOOLBAR_ELRAIL_CONSTRUCTION_CAPTION :Výstavba elektrifikované železnice
|
||||
|
@@ -1816,7 +1816,6 @@ STR_ABANDON_SCENARIO_QUERY :{YELLOW}Er du s
|
||||
# Cheat window
|
||||
STR_CHEATS :{WHITE}Snydefunktioner
|
||||
STR_CHEATS_TOOLTIP :{BLACK}Checkbokse viser, om du har brugt denne snydefunktion før
|
||||
STR_CHEATS_WARNING :{BLACK}Advarsel! Du er ved at forråde dine modstandere. Tænk lige på at dette vil blive husket i al evighed.
|
||||
STR_CHEAT_MONEY :{LTBLUE}Forøg kassebeholdning med {CURRENCY_LONG}
|
||||
STR_CHEAT_CHANGE_COMPANY :{LTBLUE}Spiller som firmaet: {ORANGE}{COMMA}
|
||||
STR_CHEAT_EXTRA_DYNAMITE :{LTBLUE}Magisk bulldozer (nedriv ting, som normalt ikke kan fjernes): {ORANGE}{STRING}
|
||||
@@ -2325,6 +2324,8 @@ STR_JOIN_STATION_CREATE_SPLITTED_STATION :{YELLOW}Byg en
|
||||
STR_JOIN_WAYPOINT_CAPTION :{WHITE}Forbind waypoint
|
||||
STR_JOIN_WAYPOINT_CREATE_SPLITTED_WAYPOINT :{YELLOW}Byg et separat waypoint
|
||||
|
||||
# Generic toolbar
|
||||
|
||||
# Rail construction toolbar
|
||||
STR_RAIL_TOOLBAR_RAILROAD_CONSTRUCTION_CAPTION :Jernbanekonstruktion
|
||||
STR_RAIL_TOOLBAR_ELRAIL_CONSTRUCTION_CAPTION :Elektrisk jernbanekonstruktion
|
||||
|
@@ -194,6 +194,7 @@ STR_COLOUR_DEFAULT :Standaard
|
||||
STR_UNITS_VELOCITY_IMPERIAL :{COMMA}{NBSP}mph
|
||||
STR_UNITS_VELOCITY_METRIC :{COMMA}{NBSP}km/u
|
||||
STR_UNITS_VELOCITY_SI :{COMMA}{NBSP}m/s
|
||||
STR_UNITS_VELOCITY_GAMEUNITS :{DECIMAL}{NBSP}tegels/dag
|
||||
|
||||
STR_UNITS_POWER_IMPERIAL :{COMMA}{NBSP}pk
|
||||
STR_UNITS_POWER_METRIC :{COMMA}{NBSP}pk
|
||||
@@ -314,8 +315,15 @@ STR_SORT_BY_CARGO_CAPACITY :Vrachtcapacitei
|
||||
STR_SORT_BY_RANGE :Bereik
|
||||
STR_SORT_BY_POPULATION :Aantal inwoners
|
||||
STR_SORT_BY_RATING :Waardering
|
||||
STR_SORT_BY_NUM_VEHICLES :Aantal voertuigen
|
||||
STR_SORT_BY_TOTAL_PROFIT_LAST_YEAR :Totale winst vorig jaar
|
||||
STR_SORT_BY_TOTAL_PROFIT_THIS_YEAR :Totale winst dit jaar
|
||||
STR_SORT_BY_AVERAGE_PROFIT_LAST_YEAR :Gemiddelde winst vorig jaar
|
||||
STR_SORT_BY_AVERAGE_PROFIT_THIS_YEAR :Gemiddelde winst dit jaar
|
||||
|
||||
# Group by options for vehicle list
|
||||
STR_GROUP_BY_NONE :Geen
|
||||
STR_GROUP_BY_SHARED_ORDERS :Gedeelde orders
|
||||
|
||||
# Tooltips for the main toolbar
|
||||
STR_TOOLBAR_TOOLTIP_PAUSE_GAME :{BLACK}Hiermee pauzeer je het spel
|
||||
@@ -772,6 +780,7 @@ STR_SMALLMAP_TOOLTIP_ENABLE_ALL_CARGOS :{BLACK}Alle vra
|
||||
STR_STATUSBAR_TOOLTIP_SHOW_LAST_NEWS :{BLACK}Laatste (nieuws-)bericht weergeven
|
||||
STR_STATUSBAR_COMPANY_NAME :{SILVER}- - {COMPANY} - -
|
||||
STR_STATUSBAR_PAUSED :{YELLOW}* * GEPAUZEERD * *
|
||||
STR_STATUSBAR_PAUSED_LINK_GRAPH :{ORANGE}* * GEPAUZEERD (wacht op bijwerken koppelinggrafiek) * *
|
||||
STR_STATUSBAR_AUTOSAVE :{RED}AUTOMATISCH OPSLAAN
|
||||
STR_STATUSBAR_SAVING_GAME :{RED}* * SPEL WORDT OPGESLAGEN * *
|
||||
|
||||
@@ -1442,6 +1451,8 @@ STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS :Bouwgereedschap
|
||||
STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS_HELPTEXT :Houd de bouwhulpmiddelen voor bruggen, tunnels, enz. open na gebruik
|
||||
STR_CONFIG_SETTING_EXPENSES_LAYOUT :Uitgaven in bedrijfsfinanciënvenster groeperen: {STRING}
|
||||
STR_CONFIG_SETTING_EXPENSES_LAYOUT_HELPTEXT :Definieer de lay-out voor het bedrijfsuitgavenvenster
|
||||
STR_CONFIG_SETTING_AUTO_REMOVE_SIGNALS :Automatisch seinen verwijderen tijdens spooraanleg: {STRING}
|
||||
STR_CONFIG_SETTING_AUTO_REMOVE_SIGNALS_HELPTEXT :Seinen automatisch verwijderen tijdens spooraanleg als deze in de weg staan. Dit kan botsingen veroorzaken.
|
||||
|
||||
STR_CONFIG_SETTING_SOUND_TICKER :Nieuwsticker: {STRING}
|
||||
STR_CONFIG_SETTING_SOUND_TICKER_HELPTEXT :Speel geluidseffecten af bij korte nieuwsberichten
|
||||
@@ -1555,6 +1566,11 @@ STR_CONFIG_SETTING_ENDING_YEAR :Eindjaar voor s
|
||||
STR_CONFIG_SETTING_ENDING_YEAR_HELPTEXT :Jaar dat het spel eindigt ten behoeve van de score. Aan het einde van dit jaar wordt de score van het bedrijf vastgelegd en verschijnt het venster met topscores. De spelers kunnen echter doorgaan met spelen.{}Als dit voor het startjaar ligt, verschijnt het venster met topscores niet.
|
||||
STR_CONFIG_SETTING_ENDING_YEAR_VALUE :{NUM}
|
||||
STR_CONFIG_SETTING_ENDING_YEAR_ZERO :Nooit
|
||||
STR_CONFIG_SETTING_ECONOMY_TYPE :Type economie: {STRING}
|
||||
STR_CONFIG_SETTING_ECONOMY_TYPE_HELPTEXT :Bij gelijkmatige economie zijn er vaker wijzigingen in productie, die in kleinere stappen verlopen. Bij vaste economie zijn er geen wijzigingen in productie en sluiten bedrijven niet. Deze instelling werkt misschien niet als de soorten industrie worden geleverd in een NewGRF.
|
||||
STR_CONFIG_SETTING_ECONOMY_TYPE_ORIGINAL :Origineel
|
||||
STR_CONFIG_SETTING_ECONOMY_TYPE_SMOOTH :Gelijkmatig
|
||||
STR_CONFIG_SETTING_ECONOMY_TYPE_FROZEN :Vast
|
||||
STR_CONFIG_SETTING_ALLOW_SHARES :Kopen van aandelen in andere bedrijven toestaan: {STRING}
|
||||
STR_CONFIG_SETTING_ALLOW_SHARES_HELPTEXT :Wanneer ingeschakeld is het toegestaan om bedrijfsaandelen te kopen en te verkopen. Aandelen zullen alleen beschikbaar zijn voor bedrijven die een bepaalde leeftijd hebben bereikt
|
||||
STR_CONFIG_SETTING_MIN_YEARS_FOR_SHARES :Minimale leeftijd van bedrijf om aandelen te kunnen verhandelen: {STRING}
|
||||
@@ -1606,6 +1622,10 @@ STR_CONFIG_SETTING_TOWN_CARGOGENMODE_BITCOUNT :Lineair
|
||||
|
||||
STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT :Plaatsing van bomen in het spel: {STRING}
|
||||
STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_HELPTEXT :Beheert het willekeurig verschijnen van bomen tijdens het spel. Dit kan gevolgen hebben voor industrietakken die afhankelijk zijn van groei van bomen, bijvoorbeeld houtzagerijen.
|
||||
STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_NO_SPREAD :Groeien maar niet verspreiden {RED}(houtzagerijen werken niet meer)
|
||||
STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_SPREAD_RAINFOREST :Groeien, maar alleen verspreiden in regenwoud
|
||||
STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_SPREAD_ALL :Overal groeien en verspreiden
|
||||
STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_NO_GROWTH_NO_SPREAD :Niet groeien, niet verspreiden {RED}(houtzagerijen werken niet meer)
|
||||
|
||||
STR_CONFIG_SETTING_TOOLBAR_POS :Positie van algemene knoppenbalk: {STRING}
|
||||
STR_CONFIG_SETTING_TOOLBAR_POS_HELPTEXT :Horizontale positie van de algemene taakbalk aan de bovenkant van het scherm.
|
||||
@@ -1672,6 +1692,7 @@ STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_HELPTEXT :Wanneer een sne
|
||||
STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_IMPERIAL :Imperiaal (mph)
|
||||
STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_METRIC :Metrisch (km/h)
|
||||
STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_SI :SI (m/s)
|
||||
STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_GAMEUNITS :Speleenheden (tegels/dag)
|
||||
|
||||
STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER :Voertuigkrachteenheden: {STRING}
|
||||
STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_HELPTEXT :Als het verbruik van een voertuig wordt weergegeven in het gebruikersscherm, gebruik dan de geselecteerde eenheden
|
||||
@@ -1804,6 +1825,7 @@ STR_INTRO_TRANSLATION :{BLACK}Deze ver
|
||||
|
||||
# Quit window
|
||||
STR_QUIT_CAPTION :{WHITE}Afsluiten
|
||||
STR_QUIT_ARE_YOU_SURE_YOU_WANT_TO_EXIT_OPENTTD :{YELLOW}Weet je zeker dat je OpenTTD wilt verlaten?
|
||||
STR_QUIT_YES :{BLACK}Ja
|
||||
STR_QUIT_NO :{BLACK}Nee
|
||||
|
||||
@@ -1815,7 +1837,6 @@ STR_ABANDON_SCENARIO_QUERY :{YELLOW}Weet je
|
||||
# Cheat window
|
||||
STR_CHEATS :{WHITE}Valsspelen
|
||||
STR_CHEATS_TOOLTIP :{BLACK}Keuzevakjes geven aan of je deze manier van valsspelen eerder hebt gebruikt
|
||||
STR_CHEATS_WARNING :{BLACK}Waarschuwing! Je staat op het punt je medespelers te verraden. Onthoud dat zo'n schande eeuwig wordt onthouden
|
||||
STR_CHEAT_MONEY :{LTBLUE}Kapitaal vergroten met {CURRENCY_LONG}
|
||||
STR_CHEAT_CHANGE_COMPANY :{LTBLUE}Spelen als bedrijf: {ORANGE}{COMMA}
|
||||
STR_CHEAT_EXTRA_DYNAMITE :{LTBLUE}Magische bulldozer (industrieën en andere onverplaatsbare objecten verwijderen): {ORANGE}{STRING}
|
||||
@@ -1967,6 +1988,10 @@ STR_NETWORK_SERVER_LIST_JOIN_GAME :{BLACK}Meespele
|
||||
STR_NETWORK_SERVER_LIST_REFRESH :{BLACK}Ververs server
|
||||
STR_NETWORK_SERVER_LIST_REFRESH_TOOLTIP :{BLACK}Ververs de informatie over deze server
|
||||
|
||||
STR_NETWORK_SERVER_LIST_SEARCH_SERVER_INTERNET :{BLACK}Op internet zoeken
|
||||
STR_NETWORK_SERVER_LIST_SEARCH_SERVER_INTERNET_TOOLTIP :{BLACK}Op het internet zoeken naar openbare servers
|
||||
STR_NETWORK_SERVER_LIST_SEARCH_SERVER_LAN :{BLACK}Op LAN zoeken
|
||||
STR_NETWORK_SERVER_LIST_SEARCH_SERVER_LAN_TOOLTIP :{BLACK}Op lokaal netwerk zoeken naar servers
|
||||
STR_NETWORK_SERVER_LIST_ADD_SERVER :{BLACK}Voeg server toe
|
||||
STR_NETWORK_SERVER_LIST_ADD_SERVER_TOOLTIP :{BLACK}Voegt een server toe aan de lijst die altijd gecontroleerd zal worden op draaiende spellen
|
||||
STR_NETWORK_SERVER_LIST_START_SERVER :{BLACK}Start server
|
||||
@@ -2192,11 +2217,13 @@ STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_1 :Spel nog steeds
|
||||
STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_2 :Spel nog steeds gepauzeerd ({STRING}, {STRING})
|
||||
STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_3 :Spel nog steeds gepauzeerd ({STRING}, {STRING}, {STRING})
|
||||
STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_4 :Spel nog steeds gepauzeerd ({STRING}, {STRING}, {STRING}, {STRING})
|
||||
STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_5 :Spel nog steeds gepauzeerd ({STRING}, {STRING}, {STRING}, {STRING}, {STRING})
|
||||
STR_NETWORK_SERVER_MESSAGE_GAME_UNPAUSED :Spel vervolgd ({STRING})
|
||||
STR_NETWORK_SERVER_MESSAGE_GAME_REASON_NOT_ENOUGH_PLAYERS :aantal spelers
|
||||
STR_NETWORK_SERVER_MESSAGE_GAME_REASON_CONNECTING_CLIENTS :spelers maken verbinding
|
||||
STR_NETWORK_SERVER_MESSAGE_GAME_REASON_MANUAL :Handmatig
|
||||
STR_NETWORK_SERVER_MESSAGE_GAME_REASON_GAME_SCRIPT :spelscript
|
||||
STR_NETWORK_SERVER_MESSAGE_GAME_REASON_LINK_GRAPH :wacht op bijwerken koppelinggrafiek
|
||||
############ End of leave-in-this-order
|
||||
STR_NETWORK_MESSAGE_CLIENT_LEAVING :vertrekt
|
||||
STR_NETWORK_MESSAGE_CLIENT_JOINED :*** {STRING} heeft zich bij het spel gevoegd
|
||||
@@ -2206,6 +2233,7 @@ STR_NETWORK_MESSAGE_CLIENT_COMPANY_SPECTATE :*** {STRING} ki
|
||||
STR_NETWORK_MESSAGE_CLIENT_COMPANY_NEW :*** {STRING} heeft een nieuw bedrijf opgericht (nr. {2:NUM})
|
||||
STR_NETWORK_MESSAGE_CLIENT_LEFT :*** {STRING} heeft het spel verlaten ({2:STRING})
|
||||
STR_NETWORK_MESSAGE_NAME_CHANGE :*** {STRING} heeft zijn/haar naam gewijzigd naar {STRING}
|
||||
STR_NETWORK_MESSAGE_GIVE_MONEY :*** {STRING} gaf {2:CURRENCY_LONG} aan {1:STRING}
|
||||
STR_NETWORK_MESSAGE_SERVER_SHUTDOWN :{WHITE}De server heeft de sessie gesloten
|
||||
STR_NETWORK_MESSAGE_SERVER_REBOOT :{WHITE}De server wordt opnieuw gestart...{}Wacht alstublieft...
|
||||
STR_NETWORK_MESSAGE_KICKED :*** {STRING} is eruit geschopt. Reden: ({STRING})
|
||||
@@ -2324,6 +2352,8 @@ STR_JOIN_STATION_CREATE_SPLITTED_STATION :{YELLOW}Een los
|
||||
STR_JOIN_WAYPOINT_CAPTION :{WHITE}Routepunt samenvoegen
|
||||
STR_JOIN_WAYPOINT_CREATE_SPLITTED_WAYPOINT :{YELLOW}Los routepunt bouwen
|
||||
|
||||
# Generic toolbar
|
||||
|
||||
# Rail construction toolbar
|
||||
STR_RAIL_TOOLBAR_RAILROAD_CONSTRUCTION_CAPTION :Spoorwegen bouwen
|
||||
STR_RAIL_TOOLBAR_ELRAIL_CONSTRUCTION_CAPTION :Geëlektrificeerde spoorwegen bouwen
|
||||
@@ -2518,6 +2548,12 @@ STR_TREES_RANDOM_TYPE :{BLACK}Willekeu
|
||||
STR_TREES_RANDOM_TYPE_TOOLTIP :{BLACK}Willekeurig bomen planten. Shift+klik wisselt tussen bouwen/verwachte kosten.
|
||||
STR_TREES_RANDOM_TREES_BUTTON :{BLACK}Willekeurige bomen
|
||||
STR_TREES_RANDOM_TREES_TOOLTIP :{BLACK}Hiermee plant je bomen willekeurig over het landschap
|
||||
STR_TREES_MODE_NORMAL_BUTTON :{BLACK}Normaal
|
||||
STR_TREES_MODE_NORMAL_TOOLTIP :{BLACK}Losse bomen planten door over het landschap te slepen
|
||||
STR_TREES_MODE_FOREST_SM_BUTTON :{BLACK}Groepje bomen
|
||||
STR_TREES_MODE_FOREST_SM_TOOLTIP :{BLACK}Kleine bossen planten door over het landschap te slepen
|
||||
STR_TREES_MODE_FOREST_LG_BUTTON :{BLACK}Bos
|
||||
STR_TREES_MODE_FOREST_LG_TOOLTIP :{BLACK}Grote bossen planten door over het landschap te slepen
|
||||
|
||||
# Land generation window (SE)
|
||||
STR_TERRAFORM_TOOLBAR_LAND_GENERATION_CAPTION :{WHITE}Landontwikkeling
|
||||
@@ -3147,10 +3183,10 @@ STR_GOALS_COMPANY_TITLE :{BLACK}Bedrijfs
|
||||
STR_GOALS_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Klik op doel centreert venster op industrie/stad/tegel. Ctrl+Klik opent een nieuw venster op de locatie van de industrie/stad/tegel.
|
||||
|
||||
# Goal question window
|
||||
STR_GOAL_QUESTION_CAPTION_QUESTION :Vraag
|
||||
STR_GOAL_QUESTION_CAPTION_INFORMATION :Informatie
|
||||
STR_GOAL_QUESTION_CAPTION_WARNING :Waarschuwing
|
||||
STR_GOAL_QUESTION_CAPTION_ERROR :Fout
|
||||
STR_GOAL_QUESTION_CAPTION_QUESTION :{BLACK}Vraag
|
||||
STR_GOAL_QUESTION_CAPTION_INFORMATION :{BLACK}Informatie
|
||||
STR_GOAL_QUESTION_CAPTION_WARNING :{BLACK}Waarschuwing
|
||||
STR_GOAL_QUESTION_CAPTION_ERROR :{YELLOW}Fout
|
||||
|
||||
############ Start of Goal Question button list
|
||||
STR_GOAL_QUESTION_BUTTON_CANCEL :Annuleren
|
||||
@@ -3341,6 +3377,7 @@ STR_COMPANY_VIEW_RELOCATE_COMPANY_HEADQUARTERS :{BLACK}Hoofdkan
|
||||
STR_COMPANY_VIEW_INFRASTRUCTURE_BUTTON :{BLACK}Details
|
||||
STR_COMPANY_VIEW_INFRASTRUCTURE_TOOLTIP :{BLACK}Gedetailleerde aantallen infrastructuur bekijken
|
||||
STR_COMPANY_VIEW_GIVE_MONEY_BUTTON :{BLACK}Geld geven
|
||||
STR_COMPANY_VIEW_GIVE_MONEY_TOOLTIP :{BLACK}Geld geven aan dit bedrijf
|
||||
|
||||
STR_COMPANY_VIEW_NEW_FACE_BUTTON :{BLACK}Nieuw gezicht
|
||||
STR_COMPANY_VIEW_NEW_FACE_TOOLTIP :{BLACK}Nieuw gezicht voor directeur kiezen
|
||||
@@ -3358,7 +3395,7 @@ STR_COMPANY_VIEW_SELL_SHARE_TOOLTIP :{BLACK}Verkoop
|
||||
|
||||
STR_COMPANY_VIEW_COMPANY_NAME_QUERY_CAPTION :Bedrijfsnaam
|
||||
STR_COMPANY_VIEW_PRESIDENT_S_NAME_QUERY_CAPTION :Naam van directeur
|
||||
STR_COMPANY_VIEW_GIVE_MONEY_QUERY_CAPTION :Voer de hoeveelheid geld die je wilt geven in
|
||||
STR_COMPANY_VIEW_GIVE_MONEY_QUERY_CAPTION :Voer het bedrag in om weg te geven
|
||||
|
||||
STR_BUY_COMPANY_MESSAGE :{WHITE}We zoeken een transportbedrijf dat ons bedrijf over kan nemen.{}{}Wil je {COMPANY} kopen voor {CURRENCY_LONG}?
|
||||
|
||||
@@ -4229,6 +4266,7 @@ STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :Opgeslagen spel
|
||||
STR_GAME_SAVELOAD_ERROR_FILE_NOT_READABLE :Bestand is niet leesbaar
|
||||
STR_GAME_SAVELOAD_ERROR_FILE_NOT_WRITEABLE :Bestand is niet schrijfbaar
|
||||
STR_GAME_SAVELOAD_ERROR_DATA_INTEGRITY_CHECK_FAILED :Data-integriteitscontrole mislukt
|
||||
STR_GAME_SAVELOAD_ERROR_PATCHPACK :Opgeslagen spel is gemaakt met een aangepaste versie
|
||||
STR_GAME_SAVELOAD_NOT_AVAILABLE :<niet beschikbaar>
|
||||
STR_WARNING_LOADGAME_REMOVED_TRAMS :{WHITE}Spel was opgeslagen in een versie zonder tramondersteuning. Alle trams zijn verwijderd
|
||||
|
||||
@@ -4309,6 +4347,7 @@ STR_ERROR_LOAN_ALREADY_REPAYED :{WHITE}... geen
|
||||
STR_ERROR_CURRENCY_REQUIRED :{WHITE}... {CURRENCY_LONG} benodigd
|
||||
STR_ERROR_CAN_T_REPAY_LOAN :{WHITE}Kan de lening niet afbetalen..
|
||||
STR_ERROR_INSUFFICIENT_FUNDS :{WHITE}Kan geen geld weggeven dat van de bank geleend is...
|
||||
STR_ERROR_CAN_T_GIVE_MONEY :{WHITE}Kan geen geld weggeven aan dit bedrijf...
|
||||
STR_ERROR_CAN_T_BUY_COMPANY :{WHITE}Kan het bedrijf niet kopen...
|
||||
STR_ERROR_CAN_T_BUILD_COMPANY_HEADQUARTERS :{WHITE}Kan bedrijfshoofdkantoor niet bouwen...
|
||||
STR_ERROR_CAN_T_BUY_25_SHARE_IN_THIS :{WHITE}Kan geen 25% aandeel in dit bedrijf kopen...
|
||||
@@ -4721,10 +4760,10 @@ STR_INDUSTRY_NAME_SUGAR_MINE :Suikermijn
|
||||
##id 0x6000
|
||||
STR_SV_EMPTY :
|
||||
STR_SV_UNNAMED :Geen naam
|
||||
STR_SV_TRAIN_NAME :Trein {COMMA}
|
||||
STR_SV_ROAD_VEHICLE_NAME :Wegvoertuig {COMMA}
|
||||
STR_SV_SHIP_NAME :Schip {COMMA}
|
||||
STR_SV_AIRCRAFT_NAME :Vliegtuig {COMMA}
|
||||
STR_SV_TRAIN_NAME :Trein #{COMMA}
|
||||
STR_SV_ROAD_VEHICLE_NAME :Wegvoertuig #{COMMA}
|
||||
STR_SV_SHIP_NAME :Schip #{COMMA}
|
||||
STR_SV_AIRCRAFT_NAME :Vliegtuig #{COMMA}
|
||||
|
||||
STR_SV_STNAME :{STRING}
|
||||
STR_SV_STNAME_NORTH :{STRING} Noord
|
||||
@@ -5026,6 +5065,7 @@ STR_FORMAT_BUOY_NAME :Boei {TOWN}
|
||||
STR_FORMAT_BUOY_NAME_SERIAL :Boei {TOWN} {COMMA}
|
||||
STR_FORMAT_COMPANY_NUM :(Bedrijf {COMMA})
|
||||
STR_FORMAT_GROUP_NAME :Groep {COMMA}
|
||||
STR_FORMAT_GROUP_VEHICLE_NAME :{GROUP} #{COMMA}
|
||||
STR_FORMAT_INDUSTRY_NAME :{1:STRING} {0:TOWN}
|
||||
STR_FORMAT_WAYPOINT_NAME :Routepunt {TOWN}
|
||||
STR_FORMAT_WAYPOINT_NAME_SERIAL :Routepunt {TOWN} {COMMA}
|
||||
|
@@ -2151,7 +2151,7 @@ STR_ABANDON_SCENARIO_QUERY :{YELLOW}Are you
|
||||
# Cheat window
|
||||
STR_CHEATS :{WHITE}Cheats
|
||||
STR_CHEATS_TOOLTIP :{BLACK}Checkboxes indicate if you have used this cheat before
|
||||
STR_CHEATS_WARNING :{BLACK}Warning! You are about to betray your fellow competitors. Keep in mind that such a disgrace will be remembered for eternity
|
||||
STR_CHEATS_NOTE :{BLACK}Note: any usage of these settings will be recorded by the savegame
|
||||
STR_CHEAT_MONEY :{LTBLUE}Increase money by {CURRENCY_LONG}
|
||||
STR_CHEAT_CHANGE_COMPANY :{LTBLUE}Playing as company: {ORANGE}{COMMA}
|
||||
STR_CHEAT_EXTRA_DYNAMITE :{LTBLUE}Magic bulldozer (remove industries, unmovable objects): {ORANGE}{STRING1}
|
||||
@@ -2675,6 +2675,9 @@ STR_JOIN_STATION_CREATE_SPLITTED_STATION :{YELLOW}Build a
|
||||
STR_JOIN_WAYPOINT_CAPTION :{WHITE}Join waypoint
|
||||
STR_JOIN_WAYPOINT_CREATE_SPLITTED_WAYPOINT :{YELLOW}Build a separate waypoint
|
||||
|
||||
# Generic toolbar
|
||||
STR_TOOLBAR_DISABLED_NO_VEHICLE_AVAILABLE :{BLACK}Disabled as currently no vehicles are available for this infrastructure
|
||||
|
||||
# Rail construction toolbar
|
||||
STR_RAIL_TOOLBAR_RAILROAD_CONSTRUCTION_CAPTION :Railway Construction
|
||||
STR_RAIL_TOOLBAR_ELRAIL_CONSTRUCTION_CAPTION :Electrified Railway Construction
|
||||
@@ -4973,6 +4976,7 @@ STR_ORDER_STOP_ORDER :(Stop)
|
||||
STR_ORDER_SELL_ORDER :(Sell vehicle)
|
||||
|
||||
STR_ORDER_GO_TO_STATION :{STRING} {STATION} {STRING1}
|
||||
STR_ORDER_GO_TO_STATION_CAN_T_USE_STATION :{PUSH_COLOUR}{RED}(Can't use station){POP_COLOUR} {STRING} {STATION} {STRING1}
|
||||
|
||||
STR_ORDER_IMPLICIT :(Implicit)
|
||||
|
||||
@@ -5548,6 +5552,8 @@ STR_ERROR_DEPOT_WRONG_DEPOT_TYPE :Wrong depot typ
|
||||
STR_ERROR_TRAIN_TOO_LONG_AFTER_REPLACEMENT :{WHITE}{VEHICLE} is too long after replacement
|
||||
STR_ERROR_AUTOREPLACE_NOTHING_TO_DO :{WHITE}No autoreplace/renew rules applied
|
||||
STR_ERROR_AUTOREPLACE_MONEY_LIMIT :(money limit)
|
||||
STR_ERROR_AUTOREPLACE_INCOMPATIBLE_CARGO :{WHITE}New vehicle can't carry {STRING}
|
||||
STR_ERROR_AUTOREPLACE_INCOMPATIBLE_REFIT :{WHITE}New vehicle can't do refit in order {NUM}
|
||||
|
||||
# Rail construction errors
|
||||
STR_ERROR_IMPOSSIBLE_TRACK_COMBINATION :{WHITE}Impossible track combination
|
||||
|
@@ -1738,7 +1738,6 @@ STR_ABANDON_SCENARIO_QUERY :{YELLOW}Are you
|
||||
# Cheat window
|
||||
STR_CHEATS :{WHITE}Cheats
|
||||
STR_CHEATS_TOOLTIP :{BLACK}Checkboxes indicate if you have used this cheat before
|
||||
STR_CHEATS_WARNING :{BLACK}Warning! You are about to betray your fellow competitors. Keep in mind that such a disgrace will be remembered for eternity
|
||||
STR_CHEAT_MONEY :{LTBLUE}Increase money by {CURRENCY_LONG}
|
||||
STR_CHEAT_CHANGE_COMPANY :{LTBLUE}Playing as company: {ORANGE}{COMMA}
|
||||
STR_CHEAT_EXTRA_DYNAMITE :{LTBLUE}Magic bulldozer (remove industries, unmovable objects): {ORANGE}{STRING}
|
||||
@@ -2240,6 +2239,8 @@ STR_JOIN_STATION_CREATE_SPLITTED_STATION :{YELLOW}Build a
|
||||
STR_JOIN_WAYPOINT_CAPTION :{WHITE}Join waypoint
|
||||
STR_JOIN_WAYPOINT_CREATE_SPLITTED_WAYPOINT :{YELLOW}Build a separate waypoint
|
||||
|
||||
# Generic toolbar
|
||||
|
||||
# Rail construction toolbar
|
||||
STR_RAIL_TOOLBAR_RAILROAD_CONSTRUCTION_CAPTION :Railway Construction
|
||||
STR_RAIL_TOOLBAR_ELRAIL_CONSTRUCTION_CAPTION :Electrified Railway Construction
|
||||
|
@@ -1813,7 +1813,6 @@ STR_ABANDON_SCENARIO_QUERY :{YELLOW}Are you
|
||||
# Cheat window
|
||||
STR_CHEATS :{WHITE}Cheats
|
||||
STR_CHEATS_TOOLTIP :{BLACK}Checkboxes indicate if you have used this cheat before
|
||||
STR_CHEATS_WARNING :{BLACK}Warning! You are about to betray your fellow competitors. Keep in mind that such a disgrace will be remembered for eternity
|
||||
STR_CHEAT_MONEY :{LTBLUE}Increase money by {CURRENCY_LONG}
|
||||
STR_CHEAT_CHANGE_COMPANY :{LTBLUE}Playing as company: {ORANGE}{COMMA}
|
||||
STR_CHEAT_EXTRA_DYNAMITE :{LTBLUE}Magic bulldozer (remove industries, unmovable objects): {ORANGE}{STRING}
|
||||
@@ -2320,6 +2319,8 @@ STR_JOIN_STATION_CREATE_SPLITTED_STATION :{YELLOW}Build a
|
||||
STR_JOIN_WAYPOINT_CAPTION :{WHITE}Join waypoint
|
||||
STR_JOIN_WAYPOINT_CREATE_SPLITTED_WAYPOINT :{YELLOW}Build a separate waypoint
|
||||
|
||||
# Generic toolbar
|
||||
|
||||
# Rail construction toolbar
|
||||
STR_RAIL_TOOLBAR_RAILROAD_CONSTRUCTION_CAPTION :Railroad Construction
|
||||
STR_RAIL_TOOLBAR_ELRAIL_CONSTRUCTION_CAPTION :Electrified Railroad Construction
|
||||
|
@@ -1422,7 +1422,6 @@ STR_ABANDON_SCENARIO_QUERY :{YELLOW}Ĉu vi
|
||||
# Cheat window
|
||||
STR_CHEATS :{WHITE}Filudaĵoj
|
||||
STR_CHEATS_TOOLTIP :{BLACK}La kvadratetoj indikas ĉu vi jam uzis la filudaĵon antaŭe.
|
||||
STR_CHEATS_WARNING :{BLACK}Atentu! Vi preskaŭ perfidos viajn kunulajn konkurantojn. Memoru ke io tia rememoriĝos eterne
|
||||
STR_CHEAT_MONEY :{LTBLUE}Altigu monkvanton per {CURRENCY_LONG}
|
||||
STR_CHEAT_CHANGE_COMPANY :{LTBLUE}Ludanta kiel kompanio: {ORANGE}{COMMA}
|
||||
STR_CHEAT_EXTRA_DYNAMITE :{LTBLUE}Magia forigilo (forviŝu industriojn, nemovebla objektoj): {ORANGE}{STRING}
|
||||
@@ -1893,6 +1892,8 @@ STR_JOIN_STATION_CREATE_SPLITTED_STATION :{YELLOW}Konstru
|
||||
STR_JOIN_WAYPOINT_CAPTION :{WHITE}Ligi vojpunkton
|
||||
STR_JOIN_WAYPOINT_CREATE_SPLITTED_WAYPOINT :{YELLOW}Krei apartan vojpunkton
|
||||
|
||||
# Generic toolbar
|
||||
|
||||
# Rail construction toolbar
|
||||
STR_RAIL_TOOLBAR_RAILROAD_CONSTRUCTION_CAPTION :Konstruado de Fervojo
|
||||
STR_RAIL_TOOLBAR_ELRAIL_CONSTRUCTION_CAPTION :Konstruado de Elektrofervojo
|
||||
|
@@ -1829,7 +1829,6 @@ STR_ABANDON_SCENARIO_QUERY :{YELLOW}Kas sa
|
||||
# Cheat window
|
||||
STR_CHEATS :{WHITE}Petmine
|
||||
STR_CHEATS_TOOLTIP :{BLACK}Märgistatud kastid näitavad et, kas sa oled varem seda pettust kasutanud
|
||||
STR_CHEATS_WARNING :{BLACK}Hoiatus! Sa kavatsed oma konkurente reeta. Pea meeles, et sellisest häbist ei saa sa enam kunagi lahti
|
||||
STR_CHEAT_MONEY :{LTBLUE}Suurenda raha hulka {CURRENCY_LONG} võrra
|
||||
STR_CHEAT_CHANGE_COMPANY :{LTBLUE}Mängimine ettevõttena: {ORANGE}{COMMA}
|
||||
STR_CHEAT_EXTRA_DYNAMITE :{LTBLUE}Võlubuldooser (eemaldab tööstused, paiksed objektid): {ORANGE}{STRING}
|
||||
@@ -2337,6 +2336,8 @@ STR_JOIN_STATION_CREATE_SPLITTED_STATION :{YELLOW}Ehita e
|
||||
STR_JOIN_WAYPOINT_CAPTION :{WHITE}Liida teemärgis
|
||||
STR_JOIN_WAYPOINT_CREATE_SPLITTED_WAYPOINT :{YELLOW}Ehita eraldi teemärgis
|
||||
|
||||
# Generic toolbar
|
||||
|
||||
# Rail construction toolbar
|
||||
STR_RAIL_TOOLBAR_RAILROAD_CONSTRUCTION_CAPTION :Rööbasteede ehitamine
|
||||
STR_RAIL_TOOLBAR_ELRAIL_CONSTRUCTION_CAPTION :Elektriraudtee ehitamine
|
||||
|
@@ -1588,7 +1588,6 @@ STR_ABANDON_SCENARIO_QUERY :{YELLOW}Er tú
|
||||
# Cheat window
|
||||
STR_CHEATS :{WHITE}Snýt
|
||||
STR_CHEATS_TOOLTIP :{BLACK}Flugubeins kassanir vísa um tú hevur nýtt hetta snýti áður
|
||||
STR_CHEATS_WARNING :{BLACK}Ávaring! Tú er í holt við at svíkja tínar kappingarneytar. Hav í huga at ein slík vanæra verður aldrin gloymd á ævini
|
||||
STR_CHEAT_MONEY :{LTBLUE}Hækka pening við {CURRENCY_LONG}
|
||||
STR_CHEAT_CHANGE_COMPANY :{LTBLUE}Spælir sum fyritøka: {ORANGE}{COMMA}
|
||||
STR_CHEAT_EXTRA_DYNAMITE :{LTBLUE}Gandaður bulldosari (bein burtur ídnaðir, lutir ið ikki kunnu flytast): {ORANGE}{STRING}
|
||||
@@ -2078,6 +2077,8 @@ STR_JOIN_STATION_CREATE_SPLITTED_STATION :{YELLOW}Bygg se
|
||||
STR_JOIN_WAYPOINT_CAPTION :{WHITE}Bind waypoint saman
|
||||
STR_JOIN_WAYPOINT_CREATE_SPLITTED_WAYPOINT :{YELLOW}Bygg eitt serstakt waypoint
|
||||
|
||||
# Generic toolbar
|
||||
|
||||
# Rail construction toolbar
|
||||
STR_RAIL_TOOLBAR_RAILROAD_CONSTRUCTION_CAPTION :Jarnbreyta bygging
|
||||
STR_RAIL_TOOLBAR_ELRAIL_CONSTRUCTION_CAPTION :Ravmagns jarnbreyta bygging
|
||||
|
@@ -1451,6 +1451,8 @@ STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS :Pidä rakennust
|
||||
STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS_HELPTEXT :Pidä siltojen, tunneleiden, jne. rakennustyökalut käytössä käytön jälkeen
|
||||
STR_CONFIG_SETTING_EXPENSES_LAYOUT :Ryhmitä kulut yhtiön rahoitusikkunassa: {STRING}
|
||||
STR_CONFIG_SETTING_EXPENSES_LAYOUT_HELPTEXT :Määritä asettelu yhtiön rahoitusikkunalle
|
||||
STR_CONFIG_SETTING_AUTO_REMOVE_SIGNALS :Poista automaattisesti opastimia rautateitä rakennettaessa: {STRING}
|
||||
STR_CONFIG_SETTING_AUTO_REMOVE_SIGNALS_HELPTEXT :Poista automaattisesti opastimia, jos ne ovat rautatien rakentamisen tiellä. Huomaa, että tämä saattaa johtaa junien yhteentörmäyksiin.
|
||||
|
||||
STR_CONFIG_SETTING_SOUND_TICKER :Uutiset: {STRING}
|
||||
STR_CONFIG_SETTING_SOUND_TICKER_HELPTEXT :Toista ääni tiivistetyille uutisviesteille
|
||||
@@ -1835,7 +1837,7 @@ STR_ABANDON_SCENARIO_QUERY :{YELLOW}Lopetet
|
||||
# Cheat window
|
||||
STR_CHEATS :{WHITE}Huijaukset
|
||||
STR_CHEATS_TOOLTIP :{BLACK}Valintaruudut osoittavat, oletko käyttänyt huijausta aiemmin
|
||||
STR_CHEATS_WARNING :{BLACK}Varoitus! Olet juuri pettämässä kanssakilpailijoitasi. Pidä mielessä, että tällainen häväistys pidetään mielessä ikuisuuden ajan
|
||||
STR_CHEATS_NOTE :{BLACK}Huom.: näiden asetusten käyttö tallentuu pelitallenteeseen
|
||||
STR_CHEAT_MONEY :{LTBLUE}Anna lisää rahaa: {CURRENCY_LONG}
|
||||
STR_CHEAT_CHANGE_COMPANY :{LTBLUE}Hallinnassa oleva yhtiö: {ORANGE}{COMMA}
|
||||
STR_CHEAT_EXTRA_DYNAMITE :{LTBLUE}Taikapuskutraktori (poista teollisuutta, liikuttamattomia kohteita): {ORANGE}{STRING}
|
||||
@@ -2351,6 +2353,9 @@ STR_JOIN_STATION_CREATE_SPLITTED_STATION :{YELLOW}Rakenna
|
||||
STR_JOIN_WAYPOINT_CAPTION :{WHITE}Liitä reittipiste
|
||||
STR_JOIN_WAYPOINT_CREATE_SPLITTED_WAYPOINT :{YELLOW}Rakenna erillinen reittipiste
|
||||
|
||||
# Generic toolbar
|
||||
STR_TOOLBAR_DISABLED_NO_VEHICLE_AVAILABLE :{BLACK}Ei käytössä, koska tälle infrastruktuurille ei ole kulkuneuvoja tällä hetkellä
|
||||
|
||||
# Rail construction toolbar
|
||||
STR_RAIL_TOOLBAR_RAILROAD_CONSTRUCTION_CAPTION :Rautatien rakentaminen
|
||||
STR_RAIL_TOOLBAR_ELRAIL_CONSTRUCTION_CAPTION :Sähköradan rakentaminen
|
||||
@@ -4019,6 +4024,7 @@ STR_ORDER_REFIT_STOP_ORDER :(Sovita rahtity
|
||||
STR_ORDER_STOP_ORDER :(Pysähdy)
|
||||
|
||||
STR_ORDER_GO_TO_STATION :{STRING} {STATION} {STRING}
|
||||
STR_ORDER_GO_TO_STATION_CAN_T_USE_STATION :{PUSH_COLOUR}{RED}(Asema ei käytettävissä){POP_COLOUR} {STRING} {STATION} {STRING}
|
||||
|
||||
STR_ORDER_IMPLICIT :(Ehdoton)
|
||||
|
||||
@@ -4471,6 +4477,8 @@ STR_ERROR_DEPOT_WRONG_DEPOT_TYPE :Väärä varikk
|
||||
STR_ERROR_TRAIN_TOO_LONG_AFTER_REPLACEMENT :{WHITE}{VEHICLE} on liian pitkä korvaamisen jälkeen
|
||||
STR_ERROR_AUTOREPLACE_NOTHING_TO_DO :{WHITE}Ei käytössä olevia itsekorvaus- tai itseuudistussääntöjä
|
||||
STR_ERROR_AUTOREPLACE_MONEY_LIMIT :(rahoitusraja)
|
||||
STR_ERROR_AUTOREPLACE_INCOMPATIBLE_CARGO :{WHITE}Uusi kulkuneuvo ei voi kuljettaa {STRING}
|
||||
STR_ERROR_AUTOREPLACE_INCOMPATIBLE_REFIT :{WHITE}Uutta kulkuneuvoa ei voida uudelleensovittaa käskyssä {NUM}
|
||||
|
||||
# Rail construction errors
|
||||
STR_ERROR_IMPOSSIBLE_TRACK_COMBINATION :{WHITE}Mahdoton ratayhdistelmä.
|
||||
|
@@ -1452,6 +1452,8 @@ STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS :Conserver les o
|
||||
STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS_HELPTEXT :Garde les outils de construction de ponts, tunnels, etc. ouverts après usage
|
||||
STR_CONFIG_SETTING_EXPENSES_LAYOUT :Regrouper les dépenses dans la fenêtre des finances{NBSP}: {STRING}
|
||||
STR_CONFIG_SETTING_EXPENSES_LAYOUT_HELPTEXT :Définit la mise en forme de la fenêtre des dépenses de la compagnie
|
||||
STR_CONFIG_SETTING_AUTO_REMOVE_SIGNALS :Retire automatiquement les signaux durant la construction de la voie ferrée: {STRING}
|
||||
STR_CONFIG_SETTING_AUTO_REMOVE_SIGNALS_HELPTEXT :Retire automatiquement les signaux durant la construction de la voie ferrée si les signaux sont sur le chemin. A noter que ça peut potentiellement mener à des accidents de trains.
|
||||
|
||||
STR_CONFIG_SETTING_SOUND_TICKER :Bulletin{NBSP}: {STRING}
|
||||
STR_CONFIG_SETTING_SOUND_TICKER_HELPTEXT :Jouer un son pour les bulletins
|
||||
@@ -1836,7 +1838,7 @@ STR_ABANDON_SCENARIO_QUERY :{YELLOW}Êtes-v
|
||||
# Cheat window
|
||||
STR_CHEATS :{WHITE}Triches
|
||||
STR_CHEATS_TOOLTIP :{BLACK}Les cases à cocher montrent si vous avez déjà utilisé cette triche auparavant
|
||||
STR_CHEATS_WARNING :{BLACK}Attention{NBSP}! Vous êtes sur le point de trahir vos adversaires. Vous et votre famille serez déshonoré pour l'éternité.
|
||||
STR_CHEATS_NOTE :{BLACK}Note{}: tout usage de ces paramètres sera enregistré dans la sauvegarde
|
||||
STR_CHEAT_MONEY :{LTBLUE}Augmenter l'argent de {CURRENCY_LONG}
|
||||
STR_CHEAT_CHANGE_COMPANY :{LTBLUE}Jouer en tant que compagnie{NBSP}: {ORANGE}{COMMA}
|
||||
STR_CHEAT_EXTRA_DYNAMITE :{LTBLUE}Bulldozer magique (enlèvement des industries et des objets fixes){NBSP}: {ORANGE}{STRING}
|
||||
@@ -2233,6 +2235,7 @@ STR_NETWORK_MESSAGE_CLIENT_COMPANY_SPECTATE :*** {STRING} a
|
||||
STR_NETWORK_MESSAGE_CLIENT_COMPANY_NEW :*** {STRING} a lancé une nouvelle compagnie (n°{NBSP}{2:NUM})
|
||||
STR_NETWORK_MESSAGE_CLIENT_LEFT :*** {STRING} a quitté la partie ({2:STRING})
|
||||
STR_NETWORK_MESSAGE_NAME_CHANGE :*** {STRING} a changé son nom en {STRING}
|
||||
STR_NETWORK_MESSAGE_GIVE_MONEY :*** {STRING} a donné {2:CURRENCY_LONG} à {1:STRING}
|
||||
STR_NETWORK_MESSAGE_SERVER_SHUTDOWN :{WHITE}Le serveur a fermé la session
|
||||
STR_NETWORK_MESSAGE_SERVER_REBOOT :{WHITE}Le serveur redémarre...{}Veuillez patienter...
|
||||
STR_NETWORK_MESSAGE_KICKED :*** {STRING} a été exclu. Raison{NBSP}: ({STRING})
|
||||
@@ -2351,6 +2354,9 @@ STR_JOIN_STATION_CREATE_SPLITTED_STATION :{YELLOW}Constru
|
||||
STR_JOIN_WAYPOINT_CAPTION :{WHITE}Joindre un point de contrôle
|
||||
STR_JOIN_WAYPOINT_CREATE_SPLITTED_WAYPOINT :{YELLOW}Construire un point de contrôle séparé
|
||||
|
||||
# Generic toolbar
|
||||
STR_TOOLBAR_DISABLED_NO_VEHICLE_AVAILABLE :{BLACK}Désactivé car aucun véhicule n'est actuellement disponible pour cette infrastructure
|
||||
|
||||
# Rail construction toolbar
|
||||
STR_RAIL_TOOLBAR_RAILROAD_CONSTRUCTION_CAPTION :Construction de voie ferrée
|
||||
STR_RAIL_TOOLBAR_ELRAIL_CONSTRUCTION_CAPTION :Construction de voie ferrée électrifiée
|
||||
@@ -3374,6 +3380,7 @@ STR_COMPANY_VIEW_RELOCATE_COMPANY_HEADQUARTERS :{BLACK}Reconstr
|
||||
STR_COMPANY_VIEW_INFRASTRUCTURE_BUTTON :{BLACK}Détails
|
||||
STR_COMPANY_VIEW_INFRASTRUCTURE_TOOLTIP :{BLACK}Afficher le détail des calculs d'infrastructure
|
||||
STR_COMPANY_VIEW_GIVE_MONEY_BUTTON :{BLACK}Donner de l'argent
|
||||
STR_COMPANY_VIEW_GIVE_MONEY_TOOLTIP :{BLACK}Donner de l’argent à cette compagnie
|
||||
|
||||
STR_COMPANY_VIEW_NEW_FACE_BUTTON :{BLACK}Nouveau visage
|
||||
STR_COMPANY_VIEW_NEW_FACE_TOOLTIP :{BLACK}Choix d'un nouveau visage pour le P.D.G.
|
||||
@@ -3391,7 +3398,7 @@ STR_COMPANY_VIEW_SELL_SHARE_TOOLTIP :{BLACK}Vendre 2
|
||||
|
||||
STR_COMPANY_VIEW_COMPANY_NAME_QUERY_CAPTION :Nom de la société
|
||||
STR_COMPANY_VIEW_PRESIDENT_S_NAME_QUERY_CAPTION :Nom du P.D.G.
|
||||
STR_COMPANY_VIEW_GIVE_MONEY_QUERY_CAPTION :Entrer le montant que vous voulez donner
|
||||
STR_COMPANY_VIEW_GIVE_MONEY_QUERY_CAPTION :Entrer le montant que vous souhaiter donner
|
||||
|
||||
STR_BUY_COMPANY_MESSAGE :{WHITE}Nous sommes à la recherche d'un repreneur pour notre compagnie{}{}Voulez-vous acheter {COMPANY} pour {CURRENCY_LONG}{NBSP}?
|
||||
|
||||
@@ -4018,6 +4025,7 @@ STR_ORDER_REFIT_STOP_ORDER :(Réaménager p
|
||||
STR_ORDER_STOP_ORDER :(Arrêt)
|
||||
|
||||
STR_ORDER_GO_TO_STATION :{STRING} {STATION} {STRING}
|
||||
STR_ORDER_GO_TO_STATION_CAN_T_USE_STATION :{PUSH_COLOUR}{RED}(Station inutilisable){POP_COLOUR} {STRING} {STATION} {STRING}
|
||||
|
||||
STR_ORDER_IMPLICIT :(Implicite)
|
||||
|
||||
@@ -4343,6 +4351,7 @@ STR_ERROR_LOAN_ALREADY_REPAYED :{WHITE}... empr
|
||||
STR_ERROR_CURRENCY_REQUIRED :{WHITE}... {CURRENCY_LONG} nécessaires
|
||||
STR_ERROR_CAN_T_REPAY_LOAN :{WHITE}Impossible de rembourser...
|
||||
STR_ERROR_INSUFFICIENT_FUNDS :{WHITE}Impossible de distribuer de l'argent emprunté à la banque...
|
||||
STR_ERROR_CAN_T_GIVE_MONEY :{WHITE}Vous ne pouvez pas donner de l’argent à cette compagnie
|
||||
STR_ERROR_CAN_T_BUY_COMPANY :{WHITE}Impossible d'acheter la compagnie...
|
||||
STR_ERROR_CAN_T_BUILD_COMPANY_HEADQUARTERS :{WHITE}Impossible de construire le siège...
|
||||
STR_ERROR_CAN_T_BUY_25_SHARE_IN_THIS :{WHITE}Impossible d'acheter 25{NBSP}% des parts...
|
||||
@@ -4469,6 +4478,8 @@ STR_ERROR_DEPOT_WRONG_DEPOT_TYPE :Dépôt incompa
|
||||
STR_ERROR_TRAIN_TOO_LONG_AFTER_REPLACEMENT :{WHITE}{VEHICLE} est trop long après remplacement
|
||||
STR_ERROR_AUTOREPLACE_NOTHING_TO_DO :{WHITE}Aucune règle de remplacement/renouvellement automatique appliquée
|
||||
STR_ERROR_AUTOREPLACE_MONEY_LIMIT :(limite d'argent)
|
||||
STR_ERROR_AUTOREPLACE_INCOMPATIBLE_CARGO :{WHITE}Le nouveau véhicule ne peut pas transporter {STRING}
|
||||
STR_ERROR_AUTOREPLACE_INCOMPATIBLE_REFIT :{WHITE}Le nouveau véhicule ne peut être réaménagé à l'ordre {NUM}
|
||||
|
||||
# Rail construction errors
|
||||
STR_ERROR_IMPOSSIBLE_TRACK_COMBINATION :{WHITE}Combinaison de rails impossible
|
||||
|
@@ -1972,7 +1972,6 @@ STR_ABANDON_SCENARIO_QUERY :{YELLOW}A bheil
|
||||
# Cheat window
|
||||
STR_CHEATS :{WHITE}Cealgaireachd
|
||||
STR_CHEATS_TOOLTIP :{BLACK}Is ciall dha bhogsaichean-cromaige gun deach a' chealgaireachd seo a chleachdadh roimhe
|
||||
STR_CHEATS_WARNING :{BLACK}Rabhadh! Tha thu gu bhith a' mealladh nan co-fharpaiseach agad. Thoir an aire gun cumar cuimhne air an tàmailt seo gu bràth tuilleadh
|
||||
STR_CHEAT_MONEY :{LTBLUE}Meudaich an t-airgead le {CURRENCY_LONG}
|
||||
STR_CHEAT_CHANGE_COMPANY :{LTBLUE}A' cluich mar a' chompanaidh: {ORANGE}{COMMA}
|
||||
STR_CHEAT_EXTRA_DYNAMITE :{LTBLUE}Bulldozer draoidheach (thoir air falbh gnìomhachasan, oibseactan do-ghluasad): {ORANGE}{STRING}
|
||||
@@ -2477,6 +2476,8 @@ STR_JOIN_STATION_CREATE_SPLITTED_STATION :{YELLOW}Tog st
|
||||
STR_JOIN_WAYPOINT_CAPTION :{WHITE}Co-aonaich a' phuing-thurais
|
||||
STR_JOIN_WAYPOINT_CREATE_SPLITTED_WAYPOINT :{YELLOW}Tog puing-thurais fa leth
|
||||
|
||||
# Generic toolbar
|
||||
|
||||
# Rail construction toolbar
|
||||
STR_RAIL_TOOLBAR_RAILROAD_CONSTRUCTION_CAPTION :Tog rathad-iarainn
|
||||
STR_RAIL_TOOLBAR_ELRAIL_CONSTRUCTION_CAPTION :Togail rathaid-iarainn dealain
|
||||
|
@@ -1808,7 +1808,6 @@ STR_ABANDON_SCENARIO_QUERY :{YELLOW}Estás
|
||||
# Cheat window
|
||||
STR_CHEATS :{WHITE}Trampulladas
|
||||
STR_CHEATS_TOOLTIP :{BLACK}As caixas de confirmación indican se usaches esta trampa antes
|
||||
STR_CHEATS_WARNING :{BLACK}Coidado! Estás a piques de traizoar aos teus competidores. Ten en conta que un escándalo coma este vai ser lembrado eternamente
|
||||
STR_CHEAT_MONEY :{LTBLUE}Incrementar os cartos en {CURRENCY_LONG}
|
||||
STR_CHEAT_CHANGE_COMPANY :{LTBLUE}Xogando coma compañía: {ORANGE}{COMMA}
|
||||
STR_CHEAT_EXTRA_DYNAMITE :{LTBLUE}Escavadora máxica (elimina industrias, obxectos non eliminables): {ORANGE}{STRING}
|
||||
@@ -2315,6 +2314,8 @@ STR_JOIN_STATION_CREATE_SPLITTED_STATION :{YELLOW}Constru
|
||||
STR_JOIN_WAYPOINT_CAPTION :{WHITE}Unir punto de ruta
|
||||
STR_JOIN_WAYPOINT_CREATE_SPLITTED_WAYPOINT :{YELLOW}Constrúe un un punto de ruta separado
|
||||
|
||||
# Generic toolbar
|
||||
|
||||
# Rail construction toolbar
|
||||
STR_RAIL_TOOLBAR_RAILROAD_CONSTRUCTION_CAPTION :Construción de Ferrocarrís
|
||||
STR_RAIL_TOOLBAR_ELRAIL_CONSTRUCTION_CAPTION :Construción de Vías Electrificadas
|
||||
|
@@ -328,6 +328,7 @@ STR_SORT_BY_AVERAGE_PROFIT_THIS_YEAR :Durchschnittlic
|
||||
|
||||
# Group by options for vehicle list
|
||||
STR_GROUP_BY_NONE :Keine
|
||||
STR_GROUP_BY_SHARED_ORDERS :Gemeinsame Aufträge
|
||||
|
||||
# Tooltips for the main toolbar
|
||||
STR_TOOLBAR_TOOLTIP_PAUSE_GAME :{BLACK}Spiel anhalten
|
||||
@@ -1607,6 +1608,8 @@ STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS :Belasse Bauwerk
|
||||
STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS_HELPTEXT :Die Bauwerkzeuge für Brücken, Tunnel, etc. nach Benutzung weiter aktiviert lassen
|
||||
STR_CONFIG_SETTING_EXPENSES_LAYOUT :Zwischensummen für Kategorien bei Firmenausgaben:{STRING}
|
||||
STR_CONFIG_SETTING_EXPENSES_LAYOUT_HELPTEXT :Lege das Layout für das Fenster mit den Firmenausgaben fest
|
||||
STR_CONFIG_SETTING_AUTO_REMOVE_SIGNALS :Automatische Entfernung von Signalen während der Errichtung von Bahntrassen: {STRING}
|
||||
STR_CONFIG_SETTING_AUTO_REMOVE_SIGNALS_HELPTEXT :Automatische Entfernung von Signalen während der Errichtung der Bahntrasse, wenn diese sich im Weg befinden.Hinweis: Dies kann zu Unfällen führen!
|
||||
|
||||
STR_CONFIG_SETTING_ENABLE_BUILD_RIVER :Aktiviere das Bauen von Flüssen: {STRING}
|
||||
STR_CONFIG_SETTING_ENABLE_BUILD_RIVER_HELPTEXT :Aktiviere das Bauen von Flüssen außerhalb des Szenarioeditors
|
||||
@@ -2134,7 +2137,7 @@ STR_ABANDON_SCENARIO_QUERY :{YELLOW}Soll da
|
||||
# Cheat window
|
||||
STR_CHEATS :{WHITE}Cheats
|
||||
STR_CHEATS_TOOLTIP :{BLACK}Die Kontrollkästchen zeigen an, ob dieser Cheat schonmal verwendet worden ist
|
||||
STR_CHEATS_WARNING :{BLACK}Achtung! Hiermit betrügt man seine Mitbewerber. Man sollte bedenken, dass sie das niemals verzeihen werden
|
||||
STR_CHEATS_NOTE :{BLACK}Hinweis: Jede Nutzung dieser Einstellungen wird im Spielstand gespeichert!
|
||||
STR_CHEAT_MONEY :{LTBLUE}Kontostand um {CURRENCY_LONG} erhöhen
|
||||
STR_CHEAT_CHANGE_COMPANY :{LTBLUE}Spiele die Firma: {ORANGE}{COMMA}
|
||||
STR_CHEAT_EXTRA_DYNAMITE :{LTBLUE}Mächtigeres Abrisswerkzeug (entfernt Industrien und unbewegliche Objekte): {ORANGE}{STRING}
|
||||
@@ -2525,7 +2528,7 @@ STR_NETWORK_SERVER_MESSAGE_GAME_REASON_NOT_ENOUGH_PLAYERS :Spieleranzahl
|
||||
STR_NETWORK_SERVER_MESSAGE_GAME_REASON_CONNECTING_CLIENTS :Teilnehmer meldet sich an
|
||||
STR_NETWORK_SERVER_MESSAGE_GAME_REASON_MANUAL :manuell
|
||||
STR_NETWORK_SERVER_MESSAGE_GAME_REASON_GAME_SCRIPT :Skript
|
||||
STR_NETWORK_SERVER_MESSAGE_GAME_REASON_LINK_GRAPH :warte auf Update des Verteilungsgraphen
|
||||
STR_NETWORK_SERVER_MESSAGE_GAME_REASON_LINK_GRAPH :Warten auf Neuberechnung des Verteilungsgraphen.
|
||||
############ End of leave-in-this-order
|
||||
STR_NETWORK_MESSAGE_CLIENT_LEAVING :geht
|
||||
STR_NETWORK_MESSAGE_CLIENT_JOINED :*** {STRING} ist dem Spiel beigetreten
|
||||
@@ -2658,6 +2661,9 @@ STR_JOIN_STATION_CREATE_SPLITTED_STATION :{YELLOW}Erricht
|
||||
STR_JOIN_WAYPOINT_CAPTION :{WHITE}Verbinde mit Wegpunkt
|
||||
STR_JOIN_WAYPOINT_CREATE_SPLITTED_WAYPOINT :{YELLOW}Errichte einen getrennten Wegpunkt
|
||||
|
||||
# Generic toolbar
|
||||
STR_TOOLBAR_DISABLED_NO_VEHICLE_AVAILABLE :Deaktiviert, da aktuell keine Fahrzeuge für diese Infrastruktur verfügbar sind.
|
||||
|
||||
# Rail construction toolbar
|
||||
STR_RAIL_TOOLBAR_RAILROAD_CONSTRUCTION_CAPTION :Eisenbahnbau
|
||||
STR_RAIL_TOOLBAR_ELRAIL_CONSTRUCTION_CAPTION :Bau elektrifizierter Strecken
|
||||
@@ -4166,8 +4172,8 @@ STR_COMPANY_VIEW_RELOCATE_HQ :{BLACK}Verlegen
|
||||
STR_COMPANY_VIEW_RELOCATE_COMPANY_HEADQUARTERS :{BLACK}Errichte Firmensitz für 1% des Firmenwertes an anderer Stelle neu. Shift+Klick zeigt einen Kostenvoranschlag
|
||||
STR_COMPANY_VIEW_INFRASTRUCTURE_BUTTON :{BLACK}Details
|
||||
STR_COMPANY_VIEW_INFRASTRUCTURE_TOOLTIP :{BLACK}Detaillierte Informationen zur Infrastruktur dieser Firma anzeigen
|
||||
STR_COMPANY_VIEW_GIVE_MONEY_BUTTON :{BLACK}Geld schenken
|
||||
STR_COMPANY_VIEW_GIVE_MONEY_TOOLTIP :{BLACK}Überweise Geld an eine andere Firma
|
||||
STR_COMPANY_VIEW_GIVE_MONEY_BUTTON :{BLACK}Verschenke Geld
|
||||
STR_COMPANY_VIEW_GIVE_MONEY_TOOLTIP :{BLACK}Geld an diese Firma verschenken
|
||||
|
||||
STR_COMPANY_VIEW_NEW_FACE_BUTTON :{BLACK}Neues Gesicht
|
||||
STR_COMPANY_VIEW_NEW_FACE_TOOLTIP :{BLACK}Neues Gesicht für Manager aussuchen
|
||||
@@ -4185,7 +4191,7 @@ STR_COMPANY_VIEW_SELL_SHARE_TOOLTIP :{BLACK}25% der
|
||||
|
||||
STR_COMPANY_VIEW_COMPANY_NAME_QUERY_CAPTION :Firmenname
|
||||
STR_COMPANY_VIEW_PRESIDENT_S_NAME_QUERY_CAPTION :Name des Managers
|
||||
STR_COMPANY_VIEW_GIVE_MONEY_QUERY_CAPTION :Wieviel Geld soll übergeben werden?
|
||||
STR_COMPANY_VIEW_GIVE_MONEY_QUERY_CAPTION :Geben Sie den Betrag des Geldes ein, welchen sie verschenken möchten.
|
||||
|
||||
STR_BUY_COMPANY_MESSAGE :{WHITE}Wir suchen eine Transportfirma, die unsere Firma übernimmt.{}{}Besteht Interesse daran, {COMPANY} für {CURRENCY_LONG} zu übernehmen?
|
||||
|
||||
@@ -5391,6 +5397,7 @@ STR_ERROR_LOAN_ALREADY_REPAYED :{WHITE}... Kred
|
||||
STR_ERROR_CURRENCY_REQUIRED :{WHITE}... erfordert {CURRENCY_LONG}
|
||||
STR_ERROR_CAN_T_REPAY_LOAN :{WHITE}Kredit kann nicht getilgt werden...
|
||||
STR_ERROR_INSUFFICIENT_FUNDS :{WHITE}Von der Bank geliehenes Geld kann nicht abgegeben werden...
|
||||
STR_ERROR_CAN_T_GIVE_MONEY :{WHITE}Geld kann nicht an diese Firma verschenkt werden...
|
||||
STR_ERROR_CAN_T_BUY_COMPANY :{WHITE}Firmenkauf nicht möglich...
|
||||
STR_ERROR_CAN_T_BUILD_COMPANY_HEADQUARTERS :{WHITE}Firmensitz kann nicht gebaut werden ...
|
||||
STR_ERROR_CAN_T_BUY_25_SHARE_IN_THIS :{WHITE}Kauf von 25% der Aktien dieser Firma nicht möglich...
|
||||
@@ -5529,6 +5536,8 @@ STR_ERROR_DEPOT_WRONG_DEPOT_TYPE :Falscher Depott
|
||||
STR_ERROR_TRAIN_TOO_LONG_AFTER_REPLACEMENT :{WHITE}{VEHICLE} ist nach Ersetzung zu lang
|
||||
STR_ERROR_AUTOREPLACE_NOTHING_TO_DO :{WHITE}Es treffen keine Ersetzungs-/Erneuerungsregeln zu
|
||||
STR_ERROR_AUTOREPLACE_MONEY_LIMIT :(Geld fehlt)
|
||||
STR_ERROR_AUTOREPLACE_INCOMPATIBLE_CARGO :{WHITE}Neues Fahrzeug kann diesen Frachttyp nicht transportieren. {STRING}
|
||||
STR_ERROR_AUTOREPLACE_INCOMPATIBLE_REFIT :{WHITE}Neues Fahrzeug kann nicht wie geplant umgerüstet werden {NUM}
|
||||
|
||||
# Rail construction errors
|
||||
STR_ERROR_IMPOSSIBLE_TRACK_COMBINATION :{WHITE}Unmögliche Gleisverbindung
|
||||
|
@@ -1901,7 +1901,6 @@ STR_ABANDON_SCENARIO_QUERY :{YELLOW}Είσ
|
||||
# Cheat window
|
||||
STR_CHEATS :{WHITE}Απατεωνιές
|
||||
STR_CHEATS_TOOLTIP :{BLACK}Τα κουτάκια δείχνουν αν έχετε ξαναχρησιμοποιήσει αυτή την απατεωνιά
|
||||
STR_CHEATS_WARNING :{BLACK}Προσοχή! Είστε έτοιμοι να προδώσετε τους φίλους ανταγωνιστές σας. Θυμηθείτε ότι αυτή η ντροπή θα μείνει για πάντα.
|
||||
STR_CHEAT_MONEY :{LTBLUE}Αύξηση χρημάτων κατά {CURRENCY_LONG}
|
||||
STR_CHEAT_CHANGE_COMPANY :{LTBLUE}Παίζετε με την εταιρία: {ORANGE}{COMMA}
|
||||
STR_CHEAT_EXTRA_DYNAMITE :{LTBLUE}Μαγική μπουλντόζα (αφαιρεί βιομηχανίες, αμετακίνητα αντικείμενα): {ORANGE}{STRING}
|
||||
@@ -2408,6 +2407,8 @@ STR_JOIN_STATION_CREATE_SPLITTED_STATION :{YELLOW}Χτί
|
||||
STR_JOIN_WAYPOINT_CAPTION :{WHITE}Συνένωση σημείου καθοδήγησης
|
||||
STR_JOIN_WAYPOINT_CREATE_SPLITTED_WAYPOINT :{YELLOW}Κτίσιμο ενός ξεχωριστού σημείου καθοδήγησης
|
||||
|
||||
# Generic toolbar
|
||||
|
||||
# Rail construction toolbar
|
||||
STR_RAIL_TOOLBAR_RAILROAD_CONSTRUCTION_CAPTION :Κατασκευή Σιδηρόδρομου
|
||||
STR_RAIL_TOOLBAR_ELRAIL_CONSTRUCTION_CAPTION :Κατασκευή Ηλεκτροδοτημένου Σιδηρόδρομου
|
||||
|
@@ -1787,7 +1787,6 @@ STR_ABANDON_SCENARIO_QUERY :{YELLOW}האם
|
||||
# Cheat window
|
||||
STR_CHEATS :{WHITE}(cheats) טריקים
|
||||
STR_CHEATS_TOOLTIP :{BLACK}תיבות הסימון מציינות האם השתמשת בטריק הנתון בעבר
|
||||
STR_CHEATS_WARNING :{BLACK}אזהרה! את/ה עומ/ת לבגוד בחבריך למשחק. קח/י בחשבון שחרפה כזו תיזכר לנצח.
|
||||
STR_CHEAT_MONEY :{LTBLUE}{CURRENCY_LONG}- הגדל את כמות הכסף במאזנך ל
|
||||
STR_CHEAT_CHANGE_COMPANY :{ORANGE}{COMMA}{LTBLUE} :שחק כבעלי החברה
|
||||
STR_CHEAT_EXTRA_DYNAMITE :{LTBLUE}טרקטור אימתני (הסרת מפעלים, רכיבים שאי אפשר להזיז): {ORANGE}{STRING}
|
||||
@@ -2291,6 +2290,8 @@ STR_JOIN_STATION_CREATE_SPLITTED_STATION :{YELLOW}בנה
|
||||
STR_JOIN_WAYPOINT_CAPTION :{WHITE}חבר נקודות ציון
|
||||
STR_JOIN_WAYPOINT_CREATE_SPLITTED_WAYPOINT :{YELLOW}בנה נקודת ציון נפרדת
|
||||
|
||||
# Generic toolbar
|
||||
|
||||
# Rail construction toolbar
|
||||
STR_RAIL_TOOLBAR_RAILROAD_CONSTRUCTION_CAPTION :בניית מסילות
|
||||
STR_RAIL_TOOLBAR_ELRAIL_CONSTRUCTION_CAPTION :בניית מסילות חשמליות
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user