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.
|
* ai_changelog.hpp, gs_changelog.hpp need updating.
|
||||||
* The compatibility wrappers (compat_*.nut) need updating.
|
* The compatibility wrappers (compat_*.nut) need updating.
|
||||||
* This PR affects the NewGRF API? (label 'needs review: NewGRF')
|
* 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)
|
* [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
|
- name: Checkout
|
||||||
uses: actions/checkout@v2
|
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)
|
- name: Prepare vcpkg (with cache)
|
||||||
uses: lukka/run-vcpkg@v6
|
uses: lukka/run-vcpkg@v6
|
||||||
with:
|
with:
|
||||||
|
19
.github/workflows/release.yml
vendored
19
.github/workflows/release.yml
vendored
@@ -366,8 +366,10 @@ jobs:
|
|||||||
include:
|
include:
|
||||||
- arch: x64
|
- arch: x64
|
||||||
full_arch: x86_64
|
full_arch: x86_64
|
||||||
|
- arch: arm64
|
||||||
|
full_arch: arm64
|
||||||
|
|
||||||
runs-on: macos-11.0
|
runs-on: macos-10.15
|
||||||
env:
|
env:
|
||||||
MACOSX_DEPLOYMENT_TARGET: 10.9
|
MACOSX_DEPLOYMENT_TARGET: 10.9
|
||||||
|
|
||||||
@@ -381,11 +383,20 @@ jobs:
|
|||||||
run: |
|
run: |
|
||||||
tar -xf source.tar.gz --strip-components=1
|
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)
|
- name: Prepare vcpkg (with cache)
|
||||||
uses: lukka/run-vcpkg@v6
|
uses: lukka/run-vcpkg@v6
|
||||||
with:
|
with:
|
||||||
vcpkgDirectory: '/usr/local/share/vcpkg'
|
vcpkgDirectory: '/tmp/vcpkg'
|
||||||
doNotUpdateVcpkg: true
|
doNotUpdateVcpkg: false
|
||||||
|
vcpkgGitCommitId: 2a42024b53ebb512fb5dd63c523338bf26c8489c
|
||||||
vcpkgArguments: 'freetype liblzma lzo'
|
vcpkgArguments: 'freetype liblzma lzo'
|
||||||
vcpkgTriplet: '${{ matrix.arch }}-osx'
|
vcpkgTriplet: '${{ matrix.arch }}-osx'
|
||||||
|
|
||||||
@@ -418,7 +429,7 @@ jobs:
|
|||||||
cmake ${GITHUB_WORKSPACE} \
|
cmake ${GITHUB_WORKSPACE} \
|
||||||
-DCMAKE_OSX_ARCHITECTURES=${{ matrix.full_arch }} \
|
-DCMAKE_OSX_ARCHITECTURES=${{ matrix.full_arch }} \
|
||||||
-DVCPKG_TARGET_TRIPLET=${{ matrix.arch }}-osx \
|
-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 \
|
-DHOST_BINARY_DIR=${GITHUB_WORKSPACE}/build-host \
|
||||||
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
|
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
|
||||||
# EOF
|
# EOF
|
||||||
|
@@ -134,18 +134,20 @@ macro(compile_flags)
|
|||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang")
|
if(CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang")
|
||||||
add_compile_options(
|
if (NOT CMAKE_OSX_ARCHITECTURES STREQUAL "arm64")
|
||||||
-fno-stack-check
|
|
||||||
)
|
|
||||||
|
|
||||||
include(CheckCXXCompilerFlag)
|
|
||||||
check_cxx_compiler_flag("-mno-sse4" NO_SSE4_FOUND)
|
|
||||||
|
|
||||||
if(NO_SSE4_FOUND)
|
|
||||||
add_compile_options(
|
add_compile_options(
|
||||||
# Don't use SSE4 for general sources to increase compatibility.
|
-fno-stack-check
|
||||||
-mno-sse4
|
|
||||||
)
|
)
|
||||||
|
|
||||||
|
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()
|
||||||
endif()
|
endif()
|
||||||
elseif(CMAKE_CXX_COMPILER_ID STREQUAL "Intel")
|
elseif(CMAKE_CXX_COMPILER_ID STREQUAL "Intel")
|
||||||
|
@@ -74,23 +74,30 @@ list(LENGTH REGRESSION_EXPECTED REGRESSION_EXPECTED_LENGTH)
|
|||||||
|
|
||||||
# Compare the output
|
# Compare the output
|
||||||
foreach(RESULT IN LISTS REGRESSION_RESULT)
|
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)
|
if(NOT RESULT STREQUAL EXPECTED)
|
||||||
message("${ARGC}: - ${EXPECTED}")
|
message("${ARGC}: - ${EXPECTED}")
|
||||||
message("${ARGC}: + ${RESULT}'")
|
message("${ARGC}: + ${RESULT}'")
|
||||||
set(ERROR YES)
|
set(ERROR YES)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
math(EXPR ARGC "${ARGC} + 1")
|
|
||||||
endforeach()
|
endforeach()
|
||||||
|
|
||||||
if(NOT REGRESSION_EXPECTED_LENGTH EQUAL ARGC)
|
if(NOT REGRESSION_EXPECTED_LENGTH EQUAL ARGC)
|
||||||
math(EXPR MISSING "${REGRESSION_EXPECTED_LENGTH} - ${ARGC}")
|
message("(${REGRESSION_EXPECTED_LENGTH} lines were expected but ${ARGC} were found)")
|
||||||
message("(${MISSING} more lines were expected than found)")
|
|
||||||
set(ERROR YES)
|
set(ERROR YES)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(ERROR)
|
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()
|
endif()
|
||||||
|
@@ -332,7 +332,8 @@ function Regression::Cargo()
|
|||||||
for (local i = -1; i < 15; i++) {
|
for (local i = -1; i < 15; i++) {
|
||||||
print(" Cargo " + i);
|
print(" Cargo " + i);
|
||||||
print(" IsValidCargo(): " + AICargo.IsValidCargo(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(" IsFreight(): " + AICargo.IsFreight(i));
|
||||||
print(" HasCargoClass(): " + AICargo.HasCargoClass(i, AICargo.CC_PASSENGERS));
|
print(" HasCargoClass(): " + AICargo.HasCargoClass(i, AICargo.CC_PASSENGERS));
|
||||||
print(" GetTownEffect(): " + AICargo.GetTownEffect(i));
|
print(" GetTownEffect(): " + AICargo.GetTownEffect(i));
|
||||||
@@ -428,29 +429,29 @@ function Regression::Company()
|
|||||||
print(" GetCompanyHQ(): " + AICompany.GetCompanyHQ(AICompany.COMPANY_SELF));
|
print(" GetCompanyHQ(): " + AICompany.GetCompanyHQ(AICompany.COMPANY_SELF));
|
||||||
print(" BuildCompanyHQ(): " + AICompany.BuildCompanyHQ(AIMap.GetTileIndex(239, 76)));
|
print(" BuildCompanyHQ(): " + AICompany.BuildCompanyHQ(AIMap.GetTileIndex(239, 76)));
|
||||||
print(" GetLastErrorString(): " + AIError.GetLastErrorString());
|
print(" GetLastErrorString(): " + AIError.GetLastErrorString());
|
||||||
print(" GetAutoRenewStatus(); " + AICompany.GetAutoRenewStatus(AICompany.COMPANY_SELF));
|
print(" GetAutoRenewStatus(): " + AICompany.GetAutoRenewStatus(AICompany.COMPANY_SELF));
|
||||||
print(" SetAutoRenewStatus(true); " + AICompany.SetAutoRenewStatus(true));
|
print(" SetAutoRenewStatus(true): " + AICompany.SetAutoRenewStatus(true));
|
||||||
print(" GetAutoRenewStatus(); " + AICompany.GetAutoRenewStatus(AICompany.COMPANY_SELF));
|
print(" GetAutoRenewStatus(): " + AICompany.GetAutoRenewStatus(AICompany.COMPANY_SELF));
|
||||||
print(" SetAutoRenewStatus(true); " + AICompany.SetAutoRenewStatus(true));
|
print(" SetAutoRenewStatus(true): " + AICompany.SetAutoRenewStatus(true));
|
||||||
print(" SetAutoRenewStatus(false); " + AICompany.SetAutoRenewStatus(false));
|
print(" SetAutoRenewStatus(false): " + AICompany.SetAutoRenewStatus(false));
|
||||||
print(" GetAutoRenewStatus(); " + AICompany.GetAutoRenewStatus(AICompany.COMPANY_SELF));
|
print(" GetAutoRenewStatus(): " + AICompany.GetAutoRenewStatus(AICompany.COMPANY_SELF));
|
||||||
print(" GetAutoRenewMonths(); " + AICompany.GetAutoRenewMonths(AICompany.COMPANY_SELF));
|
print(" GetAutoRenewMonths(): " + AICompany.GetAutoRenewMonths(AICompany.COMPANY_SELF));
|
||||||
print(" SetAutoRenewMonths(-12); " + AICompany.SetAutoRenewMonths(-12));
|
print(" SetAutoRenewMonths(-12): " + AICompany.SetAutoRenewMonths(-12));
|
||||||
print(" GetAutoRenewMonths(); " + AICompany.GetAutoRenewMonths(AICompany.COMPANY_SELF));
|
print(" GetAutoRenewMonths(): " + AICompany.GetAutoRenewMonths(AICompany.COMPANY_SELF));
|
||||||
print(" SetAutoRenewMonths(-12); " + AICompany.SetAutoRenewMonths(-12));
|
print(" SetAutoRenewMonths(-12): " + AICompany.SetAutoRenewMonths(-12));
|
||||||
print(" SetAutoRenewMonths(6); " + AICompany.SetAutoRenewMonths(6));
|
print(" SetAutoRenewMonths(6): " + AICompany.SetAutoRenewMonths(6));
|
||||||
print(" GetAutoRenewMoney(); " + AICompany.GetAutoRenewMoney(AICompany.COMPANY_SELF));
|
print(" GetAutoRenewMoney(): " + AICompany.GetAutoRenewMoney(AICompany.COMPANY_SELF));
|
||||||
print(" SetAutoRenewMoney(200000); " + AICompany.SetAutoRenewMoney(200000));
|
print(" SetAutoRenewMoney(200000): " + AICompany.SetAutoRenewMoney(200000));
|
||||||
print(" GetAutoRenewMoney(); " + AICompany.GetAutoRenewMoney(AICompany.COMPANY_SELF));
|
print(" GetAutoRenewMoney(): " + AICompany.GetAutoRenewMoney(AICompany.COMPANY_SELF));
|
||||||
print(" SetAutoRenewMoney(200000); " + AICompany.SetAutoRenewMoney(200000));
|
print(" SetAutoRenewMoney(200000): " + AICompany.SetAutoRenewMoney(200000));
|
||||||
print(" SetAutoRenewMoney(100000); " + AICompany.SetAutoRenewMoney(100000));
|
print(" SetAutoRenewMoney(100000): " + AICompany.SetAutoRenewMoney(100000));
|
||||||
for (local i = -1; i <= AICompany.EARLIEST_QUARTER; i++) {
|
for (local i = -1; i <= AICompany.EARLIEST_QUARTER; i++) {
|
||||||
print(" Quarter: " + i);
|
print(" Quarter: " + i);
|
||||||
print(" GetQuarterlyIncome(); " + AICompany.GetQuarterlyIncome(AICompany.COMPANY_SELF, i));
|
print(" GetQuarterlyIncome(): " + AICompany.GetQuarterlyIncome(AICompany.COMPANY_SELF, i));
|
||||||
print(" GetQuarterlyExpenses(); " + AICompany.GetQuarterlyExpenses(AICompany.COMPANY_SELF, i));
|
print(" GetQuarterlyExpenses(): " + AICompany.GetQuarterlyExpenses(AICompany.COMPANY_SELF, i));
|
||||||
print(" GetQuarterlyCargoDelivered(); " + AICompany.GetQuarterlyCargoDelivered(AICompany.COMPANY_SELF, i));
|
print(" GetQuarterlyCargoDelivered(): " + AICompany.GetQuarterlyCargoDelivered(AICompany.COMPANY_SELF, i));
|
||||||
print(" GetQuarterlyPerformanceRating(); " + AICompany.GetQuarterlyPerformanceRating(AICompany.COMPANY_SELF, i));
|
print(" GetQuarterlyPerformanceRating(): " + AICompany.GetQuarterlyPerformanceRating(AICompany.COMPANY_SELF, i));
|
||||||
print(" GetQuarterlyCompanyValue(); " + AICompany.GetQuarterlyCompanyValue(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
|
GetCompanyHQ(): 33153
|
||||||
BuildCompanyHQ(): false
|
BuildCompanyHQ(): false
|
||||||
GetLastErrorString(): ERR_AREA_NOT_CLEAR
|
GetLastErrorString(): ERR_AREA_NOT_CLEAR
|
||||||
GetAutoRenewStatus(); true
|
GetAutoRenewStatus(): true
|
||||||
SetAutoRenewStatus(true); true
|
SetAutoRenewStatus(true): true
|
||||||
GetAutoRenewStatus(); true
|
GetAutoRenewStatus(): true
|
||||||
SetAutoRenewStatus(true); true
|
SetAutoRenewStatus(true): true
|
||||||
SetAutoRenewStatus(false); true
|
SetAutoRenewStatus(false): true
|
||||||
GetAutoRenewStatus(); false
|
GetAutoRenewStatus(): false
|
||||||
GetAutoRenewMonths(); 6
|
GetAutoRenewMonths(): 6
|
||||||
SetAutoRenewMonths(-12); true
|
SetAutoRenewMonths(-12): true
|
||||||
GetAutoRenewMonths(); -12
|
GetAutoRenewMonths(): -12
|
||||||
SetAutoRenewMonths(-12); true
|
SetAutoRenewMonths(-12): true
|
||||||
SetAutoRenewMonths(6); true
|
SetAutoRenewMonths(6): true
|
||||||
GetAutoRenewMoney(); 100000
|
GetAutoRenewMoney(): 100000
|
||||||
SetAutoRenewMoney(200000); true
|
SetAutoRenewMoney(200000): true
|
||||||
GetAutoRenewMoney(); 200000
|
GetAutoRenewMoney(): 200000
|
||||||
SetAutoRenewMoney(200000); true
|
SetAutoRenewMoney(200000): true
|
||||||
SetAutoRenewMoney(100000); true
|
SetAutoRenewMoney(100000): true
|
||||||
Quarter: -1
|
Quarter: -1
|
||||||
GetQuarterlyIncome(); -1
|
GetQuarterlyIncome(): -1
|
||||||
GetQuarterlyExpenses(); -1
|
GetQuarterlyExpenses(): -1
|
||||||
GetQuarterlyCargoDelivered(); -1
|
GetQuarterlyCargoDelivered(): -1
|
||||||
GetQuarterlyPerformanceRating(); -1
|
GetQuarterlyPerformanceRating(): -1
|
||||||
GetQuarterlyCompanyValue(); -1
|
GetQuarterlyCompanyValue(): -1
|
||||||
Quarter: 0
|
Quarter: 0
|
||||||
GetQuarterlyIncome(); 0
|
GetQuarterlyIncome(): 0
|
||||||
GetQuarterlyExpenses(); -210
|
GetQuarterlyExpenses(): -210
|
||||||
GetQuarterlyCargoDelivered(); 0
|
GetQuarterlyCargoDelivered(): 0
|
||||||
GetQuarterlyPerformanceRating(); -1
|
GetQuarterlyPerformanceRating(): -1
|
||||||
GetQuarterlyCompanyValue(); 1
|
GetQuarterlyCompanyValue(): 1
|
||||||
Quarter: 1
|
Quarter: 1
|
||||||
GetQuarterlyIncome(); 0
|
GetQuarterlyIncome(): 0
|
||||||
GetQuarterlyExpenses(); 0
|
GetQuarterlyExpenses(): 0
|
||||||
GetQuarterlyCargoDelivered(); 0
|
GetQuarterlyCargoDelivered(): 0
|
||||||
GetQuarterlyPerformanceRating(); 0
|
GetQuarterlyPerformanceRating(): 0
|
||||||
GetQuarterlyCompanyValue(); 0
|
GetQuarterlyCompanyValue(): 0
|
||||||
Quarter: 2
|
Quarter: 2
|
||||||
GetQuarterlyIncome(); 0
|
GetQuarterlyIncome(): 0
|
||||||
GetQuarterlyExpenses(); 0
|
GetQuarterlyExpenses(): 0
|
||||||
GetQuarterlyCargoDelivered(); 0
|
GetQuarterlyCargoDelivered(): 0
|
||||||
GetQuarterlyPerformanceRating(); 0
|
GetQuarterlyPerformanceRating(): 0
|
||||||
GetQuarterlyCompanyValue(); 0
|
GetQuarterlyCompanyValue(): 0
|
||||||
Quarter: 3
|
Quarter: 3
|
||||||
GetQuarterlyIncome(); 0
|
GetQuarterlyIncome(): 0
|
||||||
GetQuarterlyExpenses(); 0
|
GetQuarterlyExpenses(): 0
|
||||||
GetQuarterlyCargoDelivered(); 0
|
GetQuarterlyCargoDelivered(): 0
|
||||||
GetQuarterlyPerformanceRating(); 0
|
GetQuarterlyPerformanceRating(): 0
|
||||||
GetQuarterlyCompanyValue(); 0
|
GetQuarterlyCompanyValue(): 0
|
||||||
Quarter: 4
|
Quarter: 4
|
||||||
GetQuarterlyIncome(); 0
|
GetQuarterlyIncome(): 0
|
||||||
GetQuarterlyExpenses(); 0
|
GetQuarterlyExpenses(): 0
|
||||||
GetQuarterlyCargoDelivered(); 0
|
GetQuarterlyCargoDelivered(): 0
|
||||||
GetQuarterlyPerformanceRating(); 0
|
GetQuarterlyPerformanceRating(): 0
|
||||||
GetQuarterlyCompanyValue(); 0
|
GetQuarterlyCompanyValue(): 0
|
||||||
Quarter: 5
|
Quarter: 5
|
||||||
GetQuarterlyIncome(); 0
|
GetQuarterlyIncome(): 0
|
||||||
GetQuarterlyExpenses(); 0
|
GetQuarterlyExpenses(): 0
|
||||||
GetQuarterlyCargoDelivered(); 0
|
GetQuarterlyCargoDelivered(): 0
|
||||||
GetQuarterlyPerformanceRating(); 0
|
GetQuarterlyPerformanceRating(): 0
|
||||||
GetQuarterlyCompanyValue(); 0
|
GetQuarterlyCompanyValue(): 0
|
||||||
Quarter: 6
|
Quarter: 6
|
||||||
GetQuarterlyIncome(); 0
|
GetQuarterlyIncome(): 0
|
||||||
GetQuarterlyExpenses(); 0
|
GetQuarterlyExpenses(): 0
|
||||||
GetQuarterlyCargoDelivered(); 0
|
GetQuarterlyCargoDelivered(): 0
|
||||||
GetQuarterlyPerformanceRating(); 0
|
GetQuarterlyPerformanceRating(): 0
|
||||||
GetQuarterlyCompanyValue(); 0
|
GetQuarterlyCompanyValue(): 0
|
||||||
Quarter: 7
|
Quarter: 7
|
||||||
GetQuarterlyIncome(); 0
|
GetQuarterlyIncome(): 0
|
||||||
GetQuarterlyExpenses(); 0
|
GetQuarterlyExpenses(): 0
|
||||||
GetQuarterlyCargoDelivered(); 0
|
GetQuarterlyCargoDelivered(): 0
|
||||||
GetQuarterlyPerformanceRating(); 0
|
GetQuarterlyPerformanceRating(): 0
|
||||||
GetQuarterlyCompanyValue(); 0
|
GetQuarterlyCompanyValue(): 0
|
||||||
Quarter: 8
|
Quarter: 8
|
||||||
GetQuarterlyIncome(); 0
|
GetQuarterlyIncome(): 0
|
||||||
GetQuarterlyExpenses(); 0
|
GetQuarterlyExpenses(): 0
|
||||||
GetQuarterlyCargoDelivered(); 0
|
GetQuarterlyCargoDelivered(): 0
|
||||||
GetQuarterlyPerformanceRating(); 0
|
GetQuarterlyPerformanceRating(): 0
|
||||||
GetQuarterlyCompanyValue(); 0
|
GetQuarterlyCompanyValue(): 0
|
||||||
Quarter: 9
|
Quarter: 9
|
||||||
GetQuarterlyIncome(); 0
|
GetQuarterlyIncome(): 0
|
||||||
GetQuarterlyExpenses(); 0
|
GetQuarterlyExpenses(): 0
|
||||||
GetQuarterlyCargoDelivered(); 0
|
GetQuarterlyCargoDelivered(): 0
|
||||||
GetQuarterlyPerformanceRating(); 0
|
GetQuarterlyPerformanceRating(): 0
|
||||||
GetQuarterlyCompanyValue(); 0
|
GetQuarterlyCompanyValue(): 0
|
||||||
Quarter: 10
|
Quarter: 10
|
||||||
GetQuarterlyIncome(); 0
|
GetQuarterlyIncome(): 0
|
||||||
GetQuarterlyExpenses(); 0
|
GetQuarterlyExpenses(): 0
|
||||||
GetQuarterlyCargoDelivered(); 0
|
GetQuarterlyCargoDelivered(): 0
|
||||||
GetQuarterlyPerformanceRating(); 0
|
GetQuarterlyPerformanceRating(): 0
|
||||||
GetQuarterlyCompanyValue(); 0
|
GetQuarterlyCompanyValue(): 0
|
||||||
Quarter: 11
|
Quarter: 11
|
||||||
GetQuarterlyIncome(); 0
|
GetQuarterlyIncome(): 0
|
||||||
GetQuarterlyExpenses(); 0
|
GetQuarterlyExpenses(): 0
|
||||||
GetQuarterlyCargoDelivered(); 0
|
GetQuarterlyCargoDelivered(): 0
|
||||||
GetQuarterlyPerformanceRating(); 0
|
GetQuarterlyPerformanceRating(): 0
|
||||||
GetQuarterlyCompanyValue(); 0
|
GetQuarterlyCompanyValue(): 0
|
||||||
Quarter: 12
|
Quarter: 12
|
||||||
GetQuarterlyIncome(); 0
|
GetQuarterlyIncome(): 0
|
||||||
GetQuarterlyExpenses(); 0
|
GetQuarterlyExpenses(): 0
|
||||||
GetQuarterlyCargoDelivered(); 0
|
GetQuarterlyCargoDelivered(): 0
|
||||||
GetQuarterlyPerformanceRating(); 0
|
GetQuarterlyPerformanceRating(): 0
|
||||||
GetQuarterlyCompanyValue(); 0
|
GetQuarterlyCompanyValue(): 0
|
||||||
Quarter: 13
|
Quarter: 13
|
||||||
GetQuarterlyIncome(); 0
|
GetQuarterlyIncome(): 0
|
||||||
GetQuarterlyExpenses(); 0
|
GetQuarterlyExpenses(): 0
|
||||||
GetQuarterlyCargoDelivered(); 0
|
GetQuarterlyCargoDelivered(): 0
|
||||||
GetQuarterlyPerformanceRating(); 0
|
GetQuarterlyPerformanceRating(): 0
|
||||||
GetQuarterlyCompanyValue(); 0
|
GetQuarterlyCompanyValue(): 0
|
||||||
Quarter: 14
|
Quarter: 14
|
||||||
GetQuarterlyIncome(); 0
|
GetQuarterlyIncome(): 0
|
||||||
GetQuarterlyExpenses(); 0
|
GetQuarterlyExpenses(): 0
|
||||||
GetQuarterlyCargoDelivered(); 0
|
GetQuarterlyCargoDelivered(): 0
|
||||||
GetQuarterlyPerformanceRating(); 0
|
GetQuarterlyPerformanceRating(): 0
|
||||||
GetQuarterlyCompanyValue(); 0
|
GetQuarterlyCompanyValue(): 0
|
||||||
Quarter: 15
|
Quarter: 15
|
||||||
GetQuarterlyIncome(); 0
|
GetQuarterlyIncome(): 0
|
||||||
GetQuarterlyExpenses(); 0
|
GetQuarterlyExpenses(): 0
|
||||||
GetQuarterlyCargoDelivered(); 0
|
GetQuarterlyCargoDelivered(): 0
|
||||||
GetQuarterlyPerformanceRating(); 0
|
GetQuarterlyPerformanceRating(): 0
|
||||||
GetQuarterlyCompanyValue(); 0
|
GetQuarterlyCompanyValue(): 0
|
||||||
Quarter: 16
|
Quarter: 16
|
||||||
GetQuarterlyIncome(); 0
|
GetQuarterlyIncome(): 0
|
||||||
GetQuarterlyExpenses(); 0
|
GetQuarterlyExpenses(): 0
|
||||||
GetQuarterlyCargoDelivered(); 0
|
GetQuarterlyCargoDelivered(): 0
|
||||||
GetQuarterlyPerformanceRating(); 0
|
GetQuarterlyPerformanceRating(): 0
|
||||||
GetQuarterlyCompanyValue(); 0
|
GetQuarterlyCompanyValue(): 0
|
||||||
Quarter: 17
|
Quarter: 17
|
||||||
GetQuarterlyIncome(); 0
|
GetQuarterlyIncome(): 0
|
||||||
GetQuarterlyExpenses(); 0
|
GetQuarterlyExpenses(): 0
|
||||||
GetQuarterlyCargoDelivered(); 0
|
GetQuarterlyCargoDelivered(): 0
|
||||||
GetQuarterlyPerformanceRating(); 0
|
GetQuarterlyPerformanceRating(): 0
|
||||||
GetQuarterlyCompanyValue(); 0
|
GetQuarterlyCompanyValue(): 0
|
||||||
Quarter: 18
|
Quarter: 18
|
||||||
GetQuarterlyIncome(); 0
|
GetQuarterlyIncome(): 0
|
||||||
GetQuarterlyExpenses(); 0
|
GetQuarterlyExpenses(): 0
|
||||||
GetQuarterlyCargoDelivered(); 0
|
GetQuarterlyCargoDelivered(): 0
|
||||||
GetQuarterlyPerformanceRating(); 0
|
GetQuarterlyPerformanceRating(): 0
|
||||||
GetQuarterlyCompanyValue(); 0
|
GetQuarterlyCompanyValue(): 0
|
||||||
Quarter: 19
|
Quarter: 19
|
||||||
GetQuarterlyIncome(); 0
|
GetQuarterlyIncome(): 0
|
||||||
GetQuarterlyExpenses(); 0
|
GetQuarterlyExpenses(): 0
|
||||||
GetQuarterlyCargoDelivered(); 0
|
GetQuarterlyCargoDelivered(): 0
|
||||||
GetQuarterlyPerformanceRating(); 0
|
GetQuarterlyPerformanceRating(): 0
|
||||||
GetQuarterlyCompanyValue(); 0
|
GetQuarterlyCompanyValue(): 0
|
||||||
Quarter: 20
|
Quarter: 20
|
||||||
GetQuarterlyIncome(); 0
|
GetQuarterlyIncome(): 0
|
||||||
GetQuarterlyExpenses(); 0
|
GetQuarterlyExpenses(): 0
|
||||||
GetQuarterlyCargoDelivered(); 0
|
GetQuarterlyCargoDelivered(): 0
|
||||||
GetQuarterlyPerformanceRating(); 0
|
GetQuarterlyPerformanceRating(): 0
|
||||||
GetQuarterlyCompanyValue(); 0
|
GetQuarterlyCompanyValue(): 0
|
||||||
Quarter: 21
|
Quarter: 21
|
||||||
GetQuarterlyIncome(); 0
|
GetQuarterlyIncome(): 0
|
||||||
GetQuarterlyExpenses(); 0
|
GetQuarterlyExpenses(): 0
|
||||||
GetQuarterlyCargoDelivered(); 0
|
GetQuarterlyCargoDelivered(): 0
|
||||||
GetQuarterlyPerformanceRating(); 0
|
GetQuarterlyPerformanceRating(): 0
|
||||||
GetQuarterlyCompanyValue(); 0
|
GetQuarterlyCompanyValue(): 0
|
||||||
Quarter: 22
|
Quarter: 22
|
||||||
GetQuarterlyIncome(); 0
|
GetQuarterlyIncome(): 0
|
||||||
GetQuarterlyExpenses(); 0
|
GetQuarterlyExpenses(): 0
|
||||||
GetQuarterlyCargoDelivered(); 0
|
GetQuarterlyCargoDelivered(): 0
|
||||||
GetQuarterlyPerformanceRating(); 0
|
GetQuarterlyPerformanceRating(): 0
|
||||||
GetQuarterlyCompanyValue(); 0
|
GetQuarterlyCompanyValue(): 0
|
||||||
Quarter: 23
|
Quarter: 23
|
||||||
GetQuarterlyIncome(); 0
|
GetQuarterlyIncome(): 0
|
||||||
GetQuarterlyExpenses(); 0
|
GetQuarterlyExpenses(): 0
|
||||||
GetQuarterlyCargoDelivered(); 0
|
GetQuarterlyCargoDelivered(): 0
|
||||||
GetQuarterlyPerformanceRating(); 0
|
GetQuarterlyPerformanceRating(): 0
|
||||||
GetQuarterlyCompanyValue(); 0
|
GetQuarterlyCompanyValue(): 0
|
||||||
Quarter: 24
|
Quarter: 24
|
||||||
GetQuarterlyIncome(); 0
|
GetQuarterlyIncome(): 0
|
||||||
GetQuarterlyExpenses(); 0
|
GetQuarterlyExpenses(): 0
|
||||||
GetQuarterlyCargoDelivered(); 0
|
GetQuarterlyCargoDelivered(): 0
|
||||||
GetQuarterlyPerformanceRating(); 0
|
GetQuarterlyPerformanceRating(): 0
|
||||||
GetQuarterlyCompanyValue(); 0
|
GetQuarterlyCompanyValue(): 0
|
||||||
|
|
||||||
--AIAirport--
|
--AIAirport--
|
||||||
IsHangarTile(): false
|
IsHangarTile(): false
|
||||||
@@ -1109,6 +1109,7 @@ ERROR: IsEnd() is invalid as Begin() is never called
|
|||||||
--AICargo--
|
--AICargo--
|
||||||
Cargo -1
|
Cargo -1
|
||||||
IsValidCargo(): false
|
IsValidCargo(): false
|
||||||
|
GetName(): '(null : 0x00000000)'
|
||||||
GetCargoLabel(): '(null : 0x00000000)'
|
GetCargoLabel(): '(null : 0x00000000)'
|
||||||
IsFreight(): false
|
IsFreight(): false
|
||||||
HasCargoClass(): false
|
HasCargoClass(): false
|
||||||
@@ -1120,6 +1121,7 @@ ERROR: IsEnd() is invalid as Begin() is never called
|
|||||||
GetRoadVehicleTypeForCargo(): 1
|
GetRoadVehicleTypeForCargo(): 1
|
||||||
Cargo 0
|
Cargo 0
|
||||||
IsValidCargo(): true
|
IsValidCargo(): true
|
||||||
|
GetName(): 'Passengers'
|
||||||
GetCargoLabel(): 'PASS'
|
GetCargoLabel(): 'PASS'
|
||||||
IsFreight(): false
|
IsFreight(): false
|
||||||
HasCargoClass(): true
|
HasCargoClass(): true
|
||||||
@@ -1131,6 +1133,7 @@ ERROR: IsEnd() is invalid as Begin() is never called
|
|||||||
GetRoadVehicleTypeForCargo(): 0
|
GetRoadVehicleTypeForCargo(): 0
|
||||||
Cargo 1
|
Cargo 1
|
||||||
IsValidCargo(): true
|
IsValidCargo(): true
|
||||||
|
GetName(): 'Coal'
|
||||||
GetCargoLabel(): 'COAL'
|
GetCargoLabel(): 'COAL'
|
||||||
IsFreight(): true
|
IsFreight(): true
|
||||||
HasCargoClass(): false
|
HasCargoClass(): false
|
||||||
@@ -1142,6 +1145,7 @@ ERROR: IsEnd() is invalid as Begin() is never called
|
|||||||
GetRoadVehicleTypeForCargo(): 1
|
GetRoadVehicleTypeForCargo(): 1
|
||||||
Cargo 2
|
Cargo 2
|
||||||
IsValidCargo(): true
|
IsValidCargo(): true
|
||||||
|
GetName(): 'Mail'
|
||||||
GetCargoLabel(): 'MAIL'
|
GetCargoLabel(): 'MAIL'
|
||||||
IsFreight(): false
|
IsFreight(): false
|
||||||
HasCargoClass(): false
|
HasCargoClass(): false
|
||||||
@@ -1153,6 +1157,7 @@ ERROR: IsEnd() is invalid as Begin() is never called
|
|||||||
GetRoadVehicleTypeForCargo(): 1
|
GetRoadVehicleTypeForCargo(): 1
|
||||||
Cargo 3
|
Cargo 3
|
||||||
IsValidCargo(): true
|
IsValidCargo(): true
|
||||||
|
GetName(): 'Oil'
|
||||||
GetCargoLabel(): 'OIL_'
|
GetCargoLabel(): 'OIL_'
|
||||||
IsFreight(): true
|
IsFreight(): true
|
||||||
HasCargoClass(): false
|
HasCargoClass(): false
|
||||||
@@ -1164,6 +1169,7 @@ ERROR: IsEnd() is invalid as Begin() is never called
|
|||||||
GetRoadVehicleTypeForCargo(): 1
|
GetRoadVehicleTypeForCargo(): 1
|
||||||
Cargo 4
|
Cargo 4
|
||||||
IsValidCargo(): true
|
IsValidCargo(): true
|
||||||
|
GetName(): 'Livestock'
|
||||||
GetCargoLabel(): 'LVST'
|
GetCargoLabel(): 'LVST'
|
||||||
IsFreight(): true
|
IsFreight(): true
|
||||||
HasCargoClass(): false
|
HasCargoClass(): false
|
||||||
@@ -1175,6 +1181,7 @@ ERROR: IsEnd() is invalid as Begin() is never called
|
|||||||
GetRoadVehicleTypeForCargo(): 1
|
GetRoadVehicleTypeForCargo(): 1
|
||||||
Cargo 5
|
Cargo 5
|
||||||
IsValidCargo(): true
|
IsValidCargo(): true
|
||||||
|
GetName(): 'Goods'
|
||||||
GetCargoLabel(): 'GOOD'
|
GetCargoLabel(): 'GOOD'
|
||||||
IsFreight(): true
|
IsFreight(): true
|
||||||
HasCargoClass(): false
|
HasCargoClass(): false
|
||||||
@@ -1186,6 +1193,7 @@ ERROR: IsEnd() is invalid as Begin() is never called
|
|||||||
GetRoadVehicleTypeForCargo(): 1
|
GetRoadVehicleTypeForCargo(): 1
|
||||||
Cargo 6
|
Cargo 6
|
||||||
IsValidCargo(): true
|
IsValidCargo(): true
|
||||||
|
GetName(): 'Grain'
|
||||||
GetCargoLabel(): 'GRAI'
|
GetCargoLabel(): 'GRAI'
|
||||||
IsFreight(): true
|
IsFreight(): true
|
||||||
HasCargoClass(): false
|
HasCargoClass(): false
|
||||||
@@ -1197,6 +1205,7 @@ ERROR: IsEnd() is invalid as Begin() is never called
|
|||||||
GetRoadVehicleTypeForCargo(): 1
|
GetRoadVehicleTypeForCargo(): 1
|
||||||
Cargo 7
|
Cargo 7
|
||||||
IsValidCargo(): true
|
IsValidCargo(): true
|
||||||
|
GetName(): 'Wood'
|
||||||
GetCargoLabel(): 'WOOD'
|
GetCargoLabel(): 'WOOD'
|
||||||
IsFreight(): true
|
IsFreight(): true
|
||||||
HasCargoClass(): false
|
HasCargoClass(): false
|
||||||
@@ -1208,6 +1217,7 @@ ERROR: IsEnd() is invalid as Begin() is never called
|
|||||||
GetRoadVehicleTypeForCargo(): 1
|
GetRoadVehicleTypeForCargo(): 1
|
||||||
Cargo 8
|
Cargo 8
|
||||||
IsValidCargo(): true
|
IsValidCargo(): true
|
||||||
|
GetName(): 'Iron Ore'
|
||||||
GetCargoLabel(): 'IORE'
|
GetCargoLabel(): 'IORE'
|
||||||
IsFreight(): true
|
IsFreight(): true
|
||||||
HasCargoClass(): false
|
HasCargoClass(): false
|
||||||
@@ -1219,6 +1229,7 @@ ERROR: IsEnd() is invalid as Begin() is never called
|
|||||||
GetRoadVehicleTypeForCargo(): 1
|
GetRoadVehicleTypeForCargo(): 1
|
||||||
Cargo 9
|
Cargo 9
|
||||||
IsValidCargo(): true
|
IsValidCargo(): true
|
||||||
|
GetName(): 'Steel'
|
||||||
GetCargoLabel(): 'STEL'
|
GetCargoLabel(): 'STEL'
|
||||||
IsFreight(): true
|
IsFreight(): true
|
||||||
HasCargoClass(): false
|
HasCargoClass(): false
|
||||||
@@ -1230,6 +1241,7 @@ ERROR: IsEnd() is invalid as Begin() is never called
|
|||||||
GetRoadVehicleTypeForCargo(): 1
|
GetRoadVehicleTypeForCargo(): 1
|
||||||
Cargo 10
|
Cargo 10
|
||||||
IsValidCargo(): true
|
IsValidCargo(): true
|
||||||
|
GetName(): 'Valuables'
|
||||||
GetCargoLabel(): 'VALU'
|
GetCargoLabel(): 'VALU'
|
||||||
IsFreight(): true
|
IsFreight(): true
|
||||||
HasCargoClass(): false
|
HasCargoClass(): false
|
||||||
@@ -1241,6 +1253,7 @@ ERROR: IsEnd() is invalid as Begin() is never called
|
|||||||
GetRoadVehicleTypeForCargo(): 1
|
GetRoadVehicleTypeForCargo(): 1
|
||||||
Cargo 11
|
Cargo 11
|
||||||
IsValidCargo(): false
|
IsValidCargo(): false
|
||||||
|
GetName(): '(null : 0x00000000)'
|
||||||
GetCargoLabel(): '(null : 0x00000000)'
|
GetCargoLabel(): '(null : 0x00000000)'
|
||||||
IsFreight(): false
|
IsFreight(): false
|
||||||
HasCargoClass(): false
|
HasCargoClass(): false
|
||||||
@@ -1252,6 +1265,7 @@ ERROR: IsEnd() is invalid as Begin() is never called
|
|||||||
GetRoadVehicleTypeForCargo(): 1
|
GetRoadVehicleTypeForCargo(): 1
|
||||||
Cargo 12
|
Cargo 12
|
||||||
IsValidCargo(): false
|
IsValidCargo(): false
|
||||||
|
GetName(): '(null : 0x00000000)'
|
||||||
GetCargoLabel(): '(null : 0x00000000)'
|
GetCargoLabel(): '(null : 0x00000000)'
|
||||||
IsFreight(): false
|
IsFreight(): false
|
||||||
HasCargoClass(): false
|
HasCargoClass(): false
|
||||||
@@ -1263,6 +1277,7 @@ ERROR: IsEnd() is invalid as Begin() is never called
|
|||||||
GetRoadVehicleTypeForCargo(): 1
|
GetRoadVehicleTypeForCargo(): 1
|
||||||
Cargo 13
|
Cargo 13
|
||||||
IsValidCargo(): false
|
IsValidCargo(): false
|
||||||
|
GetName(): '(null : 0x00000000)'
|
||||||
GetCargoLabel(): '(null : 0x00000000)'
|
GetCargoLabel(): '(null : 0x00000000)'
|
||||||
IsFreight(): false
|
IsFreight(): false
|
||||||
HasCargoClass(): false
|
HasCargoClass(): false
|
||||||
@@ -1274,6 +1289,7 @@ ERROR: IsEnd() is invalid as Begin() is never called
|
|||||||
GetRoadVehicleTypeForCargo(): 1
|
GetRoadVehicleTypeForCargo(): 1
|
||||||
Cargo 14
|
Cargo 14
|
||||||
IsValidCargo(): false
|
IsValidCargo(): false
|
||||||
|
GetName(): '(null : 0x00000000)'
|
||||||
GetCargoLabel(): '(null : 0x00000000)'
|
GetCargoLabel(): '(null : 0x00000000)'
|
||||||
IsFreight(): false
|
IsFreight(): false
|
||||||
HasCargoClass(): false
|
HasCargoClass(): false
|
||||||
@@ -7314,7 +7330,7 @@ ERROR: IsEnd() is invalid as Begin() is never called
|
|||||||
IsBuoyTile(): false
|
IsBuoyTile(): false
|
||||||
IsLockTile(): false
|
IsLockTile(): false
|
||||||
IsCanalTile(): false
|
IsCanalTile(): false
|
||||||
GetBankBalance(): 1999979664
|
GetBankBalance(): 1999979304
|
||||||
BuildWaterDepot(): true
|
BuildWaterDepot(): true
|
||||||
BuildDock(): true
|
BuildDock(): true
|
||||||
BuildBuoy(): true
|
BuildBuoy(): true
|
||||||
@@ -7327,7 +7343,7 @@ ERROR: IsEnd() is invalid as Begin() is never called
|
|||||||
IsBuoyTile(): true
|
IsBuoyTile(): true
|
||||||
IsLockTile(): true
|
IsLockTile(): true
|
||||||
IsCanalTile(): true
|
IsCanalTile(): true
|
||||||
GetBankBalance(): 1999965040
|
GetBankBalance(): 1999964680
|
||||||
|
|
||||||
--AIWaypointList(BUOY)--
|
--AIWaypointList(BUOY)--
|
||||||
Count(): 1
|
Count(): 1
|
||||||
@@ -7346,7 +7362,7 @@ ERROR: IsEnd() is invalid as Begin() is never called
|
|||||||
IsBuoyTile(): false
|
IsBuoyTile(): false
|
||||||
IsLockTile(): false
|
IsLockTile(): false
|
||||||
IsCanalTile(): false
|
IsCanalTile(): false
|
||||||
GetBankBalance(): 1999959645
|
GetBankBalance(): 1999959285
|
||||||
BuildWaterDepot(): true
|
BuildWaterDepot(): true
|
||||||
BuildDock(): 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
|
* 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 "../../../stdafx.h"
|
||||||
|
|
||||||
#include <algorithm>
|
|
||||||
#include "sqpcheader.h"
|
#include "sqpcheader.h"
|
||||||
#include "sqvm.h"
|
#include "sqvm.h"
|
||||||
#include "sqstring.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
|
* This is necessary because the ScriptConfig constructor will instead call
|
||||||
* ScriptConfig::AddRandomDeviation(). */
|
* ScriptConfig::AddRandomDeviation(). */
|
||||||
int start_date = config->GetSetting("start_date");
|
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)
|
/* 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.
|
/* 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. */
|
* 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);
|
this->vscroll->SetCount((int)this->info_list->size() + 1);
|
||||||
|
|
||||||
/* selected goes from -1 .. length of ai list - 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
|
void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize) override
|
||||||
{
|
{
|
||||||
if (widget == WID_AIS_BACKGROUND) {
|
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->width = 1;
|
||||||
resize->height = this->line_height;
|
resize->height = this->line_height;
|
||||||
@@ -890,9 +890,9 @@ struct AIConfigWindow : public Window {
|
|||||||
case WID_AIC_INCREASE: {
|
case WID_AIC_INCREASE: {
|
||||||
int new_value;
|
int new_value;
|
||||||
if (widget == WID_AIC_DECREASE) {
|
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 {
|
} 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);
|
IConsoleSetSetting("difficulty.max_no_competitors", new_value);
|
||||||
break;
|
break;
|
||||||
@@ -1187,7 +1187,7 @@ struct AIDebugWindow : public Window {
|
|||||||
this->autoscroll = this->vscroll->GetPosition() >= log->used - this->vscroll->GetCapacity();
|
this->autoscroll = this->vscroll->GetPosition() >= log->used - this->vscroll->GetCapacity();
|
||||||
}
|
}
|
||||||
if (this->autoscroll) {
|
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()) {
|
if (scroll_pos != this->vscroll->GetPosition()) {
|
||||||
this->vscroll->SetPosition(scroll_pos);
|
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) {
|
if (v->breakdown_ctr == 1 && v->breakdown_type == BREAKDOWN_AIRCRAFT_SPEED) {
|
||||||
const uint broken_speed = v->breakdown_severity << 3;
|
const uint broken_speed = v->breakdown_severity << 3;
|
||||||
if (broken_speed < speed_limit) hard_limit = false;
|
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) {
|
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
|
* speeds to that aircraft do not get to taxi speed straight after
|
||||||
* touchdown. */
|
* touchdown. */
|
||||||
if (!hard_limit && v->cur_speed > speed_limit) {
|
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 */
|
/* updates statusbar only if speed have changed to save CPU time */
|
||||||
if (spd != v->cur_speed) {
|
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 */
|
/* 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 (min_level != nullptr) *min_level = base_altitude + AIRCRAFT_MIN_FLYING_ALTITUDE;
|
||||||
if (max_level != nullptr) *max_level = base_altitude + AIRCRAFT_MAX_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)
|
static bool AircraftController(Aircraft *v)
|
||||||
{
|
{
|
||||||
int count;
|
|
||||||
|
|
||||||
/* nullptr if station is invalid */
|
/* nullptr if station is invalid */
|
||||||
const Station *st = Station::GetIfValid(v->targetairport);
|
const Station *st = Station::GetIfValid(v->targetairport);
|
||||||
/* INVALID_TILE if there is no station */
|
/* INVALID_TILE if there is no station */
|
||||||
@@ -931,7 +929,7 @@ static bool AircraftController(Aircraft *v)
|
|||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
u->cur_speed = 32;
|
u->cur_speed = 32;
|
||||||
count = UpdateAircraftSpeed(v);
|
int count = UpdateAircraftSpeed(v);
|
||||||
if (count > 0) {
|
if (count > 0) {
|
||||||
v->tile = 0;
|
v->tile = 0;
|
||||||
|
|
||||||
@@ -943,7 +941,7 @@ static bool AircraftController(Aircraft *v)
|
|||||||
v->cur_speed = 0;
|
v->cur_speed = 0;
|
||||||
return true;
|
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;
|
return false;
|
||||||
@@ -989,12 +987,12 @@ static bool AircraftController(Aircraft *v)
|
|||||||
}
|
}
|
||||||
u->cur_speed += 4;
|
u->cur_speed += 4;
|
||||||
} else {
|
} else {
|
||||||
count = UpdateAircraftSpeed(v);
|
int count = UpdateAircraftSpeed(v);
|
||||||
if (count > 0) {
|
if (count > 0) {
|
||||||
if (v->z_pos > z) {
|
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 {
|
} 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 {
|
} else {
|
||||||
v->UpdatePosition();
|
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_LAND) { speed_limit = SPEED_LIMIT_APPROACH; hard_limit = false; }
|
||||||
if (amd.flag & AMED_BRAKE) { speed_limit = SPEED_LIMIT_TAXI; 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 (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--;
|
if (v->turn_counter != 0) v->turn_counter--;
|
||||||
|
|
||||||
do {
|
do {
|
||||||
|
|
||||||
GetNewVehiclePosResult gp;
|
GetNewVehiclePosResult gp;
|
||||||
|
|
||||||
if (dist < 4 || (amd.flag & AMED_LAND)) {
|
if (nudge_towards_target || (amd.flag & AMED_LAND)) {
|
||||||
/* move vehicle one pixel towards target */
|
/* move vehicle one pixel towards target */
|
||||||
gp.x = (v->x_pos != (x + amd.x)) ?
|
gp.x = (v->x_pos != (x + amd.x)) ?
|
||||||
v->x_pos + ((x + amd.x > v->x_pos) ? 1 : -1) :
|
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? */
|
/* We're not flying below our destination, right? */
|
||||||
assert(airport_z <= z);
|
assert(airport_z <= z);
|
||||||
int t = max(1U, dist - 4);
|
int t = std::max(1U, dist - 4);
|
||||||
int delta = z - airport_z;
|
int delta = z - airport_z;
|
||||||
|
|
||||||
/* Only start lowering when we're sufficiently close for a 1:1 glide */
|
/* 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) {
|
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 */
|
/* 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;
|
if (GB(Random(), 0, 22) > prob) return;
|
||||||
|
@@ -71,6 +71,7 @@ struct BuildAirToolbarWindow : Window {
|
|||||||
BuildAirToolbarWindow(WindowDesc *desc, WindowNumber window_number) : Window(desc)
|
BuildAirToolbarWindow(WindowDesc *desc, WindowNumber window_number) : Window(desc)
|
||||||
{
|
{
|
||||||
this->InitNested(window_number);
|
this->InitNested(window_number);
|
||||||
|
this->OnInvalidateData();
|
||||||
if (_settings_client.gui.link_terraform_toolbar) ShowTerraformToolbar(this);
|
if (_settings_client.gui.link_terraform_toolbar) ShowTerraformToolbar(this);
|
||||||
this->last_user_action = WIDGET_LIST_END;
|
this->last_user_action = WIDGET_LIST_END;
|
||||||
}
|
}
|
||||||
@@ -90,7 +91,18 @@ struct BuildAirToolbarWindow : Window {
|
|||||||
{
|
{
|
||||||
if (!gui_scope) return;
|
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
|
void OnClick(Point pt, int widget, int click_count) override
|
||||||
@@ -160,7 +172,7 @@ struct BuildAirToolbarWindow : Window {
|
|||||||
*/
|
*/
|
||||||
static EventState AirportToolbarGlobalHotkeys(int hotkey)
|
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();
|
Window *w = ShowBuildAirToolbar();
|
||||||
if (w == nullptr) return ES_NOT_HANDLED;
|
if (w == nullptr) return ES_NOT_HANDLED;
|
||||||
return w->OnHotkey(hotkey);
|
return w->OnHotkey(hotkey);
|
||||||
@@ -314,7 +326,7 @@ public:
|
|||||||
const AirportSpec *as = AirportSpec::Get(i);
|
const AirportSpec *as = AirportSpec::Get(i);
|
||||||
if (!as->enabled) continue;
|
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;
|
this->line_height = FONT_HEIGHT_NORMAL + WD_MATRIX_TOP + WD_MATRIX_BOTTOM;
|
||||||
|
@@ -21,6 +21,8 @@
|
|||||||
#include "vehiclelist.h"
|
#include "vehiclelist.h"
|
||||||
#include "road.h"
|
#include "road.h"
|
||||||
#include "ai/ai.hpp"
|
#include "ai/ai.hpp"
|
||||||
|
#include "news_func.h"
|
||||||
|
#include "strings_func.h"
|
||||||
|
|
||||||
#include "table/strings.h"
|
#include "table/strings.h"
|
||||||
|
|
||||||
@@ -116,7 +118,7 @@ void CheckCargoCapacity(Vehicle *v)
|
|||||||
assert(dest->cargo.TotalCount() == dest->cargo.ActionCount(VehicleCargoList::MTA_KEEP));
|
assert(dest->cargo.TotalCount() == dest->cargo.ActionCount(VehicleCargoList::MTA_KEEP));
|
||||||
if (dest->cargo.TotalCount() >= dest->cargo_cap || dest->cargo_type != src->cargo_type) continue;
|
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);
|
src->cargo.Shift(amount, &dest->cargo);
|
||||||
to_spread -= amount;
|
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;
|
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;
|
if (amount <= 0) continue;
|
||||||
|
|
||||||
src->cargo.Shift(amount, &dest->cargo);
|
src->cargo.Shift(amount, &dest->cargo);
|
||||||
@@ -192,6 +194,29 @@ static bool VerifyAutoreplaceRefitForOrders(const Vehicle *v, EngineID engine_ty
|
|||||||
return true;
|
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
|
* Function to find what type of cargo to refit to when autoreplacing
|
||||||
* @param *v Original vehicle that is being replaced.
|
* @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 */
|
/* Does it need to be refitted */
|
||||||
CargoID refit_cargo = GetNewCargoTypeForReplace(old_veh, e, part_of_chain);
|
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 */
|
/* Build the new vehicle */
|
||||||
cost = DoCommand(old_veh->tile, e | (CT_INVALID << 24), 0, DC_EXEC | DC_AUTOREPLACE, GetCmdBuildVeh(old_veh));
|
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_LEFT_MATRIX:
|
||||||
case WID_RV_RIGHT_MATRIX: {
|
case WID_RV_RIGHT_MATRIX: {
|
||||||
int side = (widget == WID_RV_LEFT_MATRIX) ? 0 : 1;
|
int side = (widget == WID_RV_LEFT_MATRIX) ? 0 : 1;
|
||||||
EngineID start = this->vscroll[side]->GetPosition(); // what is the offset for the start (scrolling)
|
EngineID start = static_cast<EngineID>(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 end = static_cast<EngineID>(std::min<size_t>(this->vscroll[side]->GetCapacity() + start, this->engines[side].size()));
|
||||||
|
|
||||||
/* Do the actual drawing */
|
/* Do the actual drawing */
|
||||||
DrawEngineList((VehicleType)this->window_number, r.left + WD_FRAMERECT_LEFT, r.right - WD_FRAMERECT_RIGHT, r.top + WD_FRAMERECT_TOP,
|
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);
|
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,
|
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);
|
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.
|
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 = dst_end - skip_left;
|
||||||
dst_end = dst + width;
|
dst_end = dst + width;
|
||||||
|
|
||||||
n = min<uint>(n - d, (uint)width);
|
n = std::min<uint>(n - d, (uint)width);
|
||||||
goto draw;
|
goto draw;
|
||||||
}
|
}
|
||||||
dst += n;
|
dst += n;
|
||||||
@@ -103,7 +103,7 @@ inline void Blitter_32bppAnim::Draw(const Blitter::BlitterParams *bp, ZoomLevel
|
|||||||
if (fast_path) {
|
if (fast_path) {
|
||||||
n = *src_n++;
|
n = *src_n++;
|
||||||
} else {
|
} 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) {
|
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 ||
|
if (unlikely(x < 8 || colour_cmp_result != 0xFFFF ||
|
||||||
_mm_movemask_epi8(_mm_cmpeq_epi16(_mm_srli_epi16(data, 8), brightness_cmp)) != 0xFFFF)) {
|
_mm_movemask_epi8(_mm_cmpeq_epi16(_mm_srli_epi16(data, 8), brightness_cmp)) != 0xFFFF)) {
|
||||||
/* slow path: < 8 pixels left or unexpected brightnesses */
|
/* 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);
|
int value = _mm_extract_epi16(data, 0);
|
||||||
uint8 colour = GB(value, 0, 8);
|
uint8 colour = GB(value, 0, 8);
|
||||||
if (colour >= PALETTE_ANIM_START) {
|
if (colour >= PALETTE_ANIM_START) {
|
||||||
|
@@ -199,9 +199,9 @@ Colour Blitter_32bppBase::ReallyAdjustBrightness(Colour colour, uint8 brightness
|
|||||||
/* Reduce overbright strength */
|
/* Reduce overbright strength */
|
||||||
ob /= 2;
|
ob /= 2;
|
||||||
return Colour(
|
return Colour(
|
||||||
r >= 255 ? 255 : min(r + ob * (255 - r) / 256, 255),
|
r >= 255 ? 255 : std::min(r + ob * (255 - r) / 256, 255),
|
||||||
g >= 255 ? 255 : min(g + ob * (255 - g) / 256, 255),
|
g >= 255 ? 255 : std::min(g + ob * (255 - g) / 256, 255),
|
||||||
b >= 255 ? 255 : min(b + ob * (255 - b) / 256, 255),
|
b >= 255 ? 255 : std::min(b + ob * (255 - b) / 256, 255),
|
||||||
colour.a);
|
colour.a);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -83,7 +83,7 @@ inline void Blitter_32bppOptimized::Draw(const Blitter::BlitterParams *bp, ZoomL
|
|||||||
dst = dst_end - bp->skip_left;
|
dst = dst_end - bp->skip_left;
|
||||||
dst_end = dst + bp->width;
|
dst_end = dst + bp->width;
|
||||||
|
|
||||||
n = min<uint>(n - d, (uint)bp->width);
|
n = std::min(n - d, (uint)bp->width);
|
||||||
goto draw;
|
goto draw;
|
||||||
}
|
}
|
||||||
dst += n;
|
dst += n;
|
||||||
@@ -98,7 +98,7 @@ inline void Blitter_32bppOptimized::Draw(const Blitter::BlitterParams *bp, ZoomL
|
|||||||
dst_end += bp->width;
|
dst_end += bp->width;
|
||||||
|
|
||||||
while (dst < dst_end) {
|
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) {
|
if (src_px->a == 0) {
|
||||||
dst += n;
|
dst += n;
|
||||||
@@ -278,7 +278,7 @@ Sprite *Blitter_32bppOptimized::Encode(const SpriteLoader::Sprite *sprite, Alloc
|
|||||||
zoom_max = ZOOM_LVL_NORMAL;
|
zoom_max = ZOOM_LVL_NORMAL;
|
||||||
} else {
|
} else {
|
||||||
zoom_min = _settings_client.gui.zoom_min;
|
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;
|
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;
|
if (src->m >= PALETTE_ANIM_START) flags &= ~SF_NO_ANIM;
|
||||||
|
|
||||||
/* Get brightest value */
|
/* 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 */
|
/* Black pixel (8bpp or old 32bpp image), so use default value */
|
||||||
if (rgb_max == 0) rgb_max = DEFAULT_BRIGHTNESS;
|
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;
|
dst[i].v = 0;
|
||||||
} else {
|
} else {
|
||||||
/* Get brightest value */
|
/* 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 */
|
/* Black pixel (8bpp or old 32bpp image), so use default value */
|
||||||
if (rgb_max == 0) rgb_max = DEFAULT_BRIGHTNESS;
|
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;
|
if (src->m >= PALETTE_ANIM_START) has_anim = true;
|
||||||
|
|
||||||
/* Get brightest value (or default brightness if it's a black pixel). */
|
/* 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;
|
dst_mv->v = (rgb_max == 0) ? Blitter_32bppBase::DEFAULT_BRIGHTNESS : rgb_max;
|
||||||
|
|
||||||
/* Pre-convert the mapping channel to a RGB value. */
|
/* 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;
|
dst += trans;
|
||||||
width -= trans;
|
width -= trans;
|
||||||
if (width <= 0 || pixels == 0) continue;
|
if (width <= 0 || pixels == 0) continue;
|
||||||
pixels = min<uint>(pixels, (uint)width);
|
pixels = std::min<uint>(pixels, width);
|
||||||
width -= pixels;
|
width -= pixels;
|
||||||
|
|
||||||
switch (mode) {
|
switch (mode) {
|
||||||
@@ -132,7 +132,7 @@ Sprite *Blitter_8bppOptimized::Encode(const SpriteLoader::Sprite *sprite, Alloca
|
|||||||
zoom_max = ZOOM_LVL_NORMAL;
|
zoom_max = ZOOM_LVL_NORMAL;
|
||||||
} else {
|
} else {
|
||||||
zoom_min = _settings_client.gui.zoom_min;
|
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;
|
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;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
int frac_diff = width * max(dx, dy);
|
int frac_diff = width * std::max(dx, dy);
|
||||||
if (width > 1) {
|
if (width > 1) {
|
||||||
/* compute frac_diff = width * sqrt(dx*dx + dy*dy)
|
/* compute frac_diff = width * sqrt(dx*dx + dy*dy)
|
||||||
* Start interval:
|
* Start interval:
|
||||||
|
@@ -200,7 +200,7 @@ public:
|
|||||||
}
|
}
|
||||||
sprite_dim.height++; // Sprite is rendered one pixel down in the matrix field.
|
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.
|
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.
|
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;
|
size->width = this->bridgetext_offset + text_dim.width + WD_MATRIX_RIGHT;
|
||||||
|
@@ -46,7 +46,7 @@
|
|||||||
*/
|
*/
|
||||||
uint GetEngineListHeight(VehicleType type)
|
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[] = {
|
static const NWidgetPart _nested_build_vehicle_widgets[] = {
|
||||||
@@ -1581,7 +1581,7 @@ struct BuildVehicleWindow : Window {
|
|||||||
case WID_BV_LIST:
|
case WID_BV_LIST:
|
||||||
resize->height = GetEngineListHeight(this->vehicle_type);
|
resize->height = GetEngineListHeight(this->vehicle_type);
|
||||||
size->height = 3 * resize->height;
|
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;
|
break;
|
||||||
|
|
||||||
case WID_BV_PANEL:
|
case WID_BV_PANEL:
|
||||||
@@ -1616,7 +1616,18 @@ struct BuildVehicleWindow : Window {
|
|||||||
{
|
{
|
||||||
switch (widget) {
|
switch (widget) {
|
||||||
case WID_BV_LIST:
|
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;
|
break;
|
||||||
|
|
||||||
case WID_BV_SORT_ASCENDING_DESCENDING:
|
case WID_BV_SORT_ASCENDING_DESCENDING:
|
||||||
@@ -1644,7 +1655,7 @@ struct BuildVehicleWindow : Window {
|
|||||||
NWidgetBase *nwi = this->GetWidget<NWidgetBase>(WID_BV_PANEL);
|
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,
|
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);
|
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.
|
if (needed_height != this->details_height) { // Details window are not high enough, enlarge them.
|
||||||
int resize = needed_height - this->details_height;
|
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 != MTA_TRANSFER && Tto != MTA_TRANSFER);
|
||||||
static_assert(Tfrom - Tto == 1 || Tto - Tfrom == 1);
|
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[Tfrom] -= max_move;
|
||||||
this->action_counts[Tto] += max_move;
|
this->action_counts[Tto] += max_move;
|
||||||
return max_move;
|
return max_move;
|
||||||
@@ -758,7 +758,7 @@ uint VehicleCargoList::Reassign(uint max_move, TileOrStationID)
|
|||||||
template<>
|
template<>
|
||||||
uint VehicleCargoList::Reassign<VehicleCargoList::MTA_DELIVER, VehicleCargoList::MTA_TRANSFER>(uint max_move, TileOrStationID next_station)
|
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;
|
uint sum = 0;
|
||||||
for (Iterator it(this->packets.begin()); sum < this->action_counts[MTA_TRANSFER] + max_move;) {
|
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)
|
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));
|
this->PopCargo(CargoReturn(this, dest, max_move, next));
|
||||||
return max_move;
|
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)
|
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));
|
this->PopCargo(CargoShift(this, dest, max_move));
|
||||||
return max_move;
|
return max_move;
|
||||||
}
|
}
|
||||||
@@ -821,12 +821,12 @@ uint VehicleCargoList::Unload(uint max_move, StationCargoList *dest, CargoPaymen
|
|||||||
{
|
{
|
||||||
uint moved = 0;
|
uint moved = 0;
|
||||||
if (this->action_counts[MTA_TRANSFER] > 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));
|
this->ShiftCargo(CargoTransfer(this, dest, move));
|
||||||
moved += move;
|
moved += move;
|
||||||
}
|
}
|
||||||
if (this->action_counts[MTA_TRANSFER] == 0 && this->action_counts[MTA_DELIVER] > 0 && moved < max_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));
|
this->ShiftCargo(CargoDelivery(this, move, payment));
|
||||||
moved += move;
|
moved += move;
|
||||||
}
|
}
|
||||||
@@ -841,7 +841,7 @@ uint VehicleCargoList::Unload(uint max_move, StationCargoList *dest, CargoPaymen
|
|||||||
*/
|
*/
|
||||||
uint VehicleCargoList::Truncate(uint max_move)
|
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();
|
if (max_move > this->ActionCount(MTA_KEEP)) this->KeepAll();
|
||||||
this->PopCargo(CargoRemoval<VehicleCargoList>(this, max_move));
|
this->PopCargo(CargoRemoval<VehicleCargoList>(this, max_move));
|
||||||
return 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)
|
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));
|
this->ShiftCargoWithFrontInsert(VehicleCargoReroute(this, dest, max_move, avoid, avoid2, ge));
|
||||||
return max_move;
|
return max_move;
|
||||||
}
|
}
|
||||||
@@ -965,7 +965,7 @@ uint StationCargoList::AvailableViaCount(StationID next) const
|
|||||||
*/
|
*/
|
||||||
uint StationCargoList::Truncate(uint max_move, StationCargoAmountMap *cargo_per_source)
|
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 prev_count = this->count;
|
||||||
uint moved = 0;
|
uint moved = 0;
|
||||||
uint loop = 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 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) {
|
if (move > 0) {
|
||||||
this->reserved_count -= move;
|
this->reserved_count -= move;
|
||||||
dest->Reassign<VehicleCargoList::MTA_LOAD, VehicleCargoList::MTA_KEEP>(move);
|
dest->Reassign<VehicleCargoList::MTA_LOAD, VehicleCargoList::MTA_KEEP>(move);
|
||||||
|
@@ -12,7 +12,6 @@
|
|||||||
#include "newgrf_cargo.h"
|
#include "newgrf_cargo.h"
|
||||||
#include "string_func.h"
|
#include "string_func.h"
|
||||||
#include "strings_func.h"
|
#include "strings_func.h"
|
||||||
#include <algorithm>
|
|
||||||
|
|
||||||
#include "table/sprites.h"
|
#include "table/sprites.h"
|
||||||
#include "table/strings.h"
|
#include "table/strings.h"
|
||||||
|
@@ -216,12 +216,14 @@ static const NWidgetPart _nested_cheat_widgets[] = {
|
|||||||
NWidget(WWT_STICKYBOX, COLOUR_GREY),
|
NWidget(WWT_STICKYBOX, COLOUR_GREY),
|
||||||
EndContainer(),
|
EndContainer(),
|
||||||
NWidget(WWT_PANEL, COLOUR_GREY, WID_C_PANEL), SetDataTip(0x0, STR_CHEATS_TOOLTIP), 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. */
|
/** GUI for the cheats. */
|
||||||
struct CheatWindow : Window {
|
struct CheatWindow : Window {
|
||||||
int clicked;
|
int clicked;
|
||||||
int header_height;
|
|
||||||
int clicked_widget;
|
int clicked_widget;
|
||||||
uint line_height;
|
uint line_height;
|
||||||
int box_width;
|
int box_width;
|
||||||
@@ -236,8 +238,7 @@ struct CheatWindow : Window {
|
|||||||
{
|
{
|
||||||
if (widget != WID_C_PANEL) return;
|
if (widget != WID_C_PANEL) return;
|
||||||
|
|
||||||
int y = r.top + WD_FRAMERECT_TOP + this->header_height;
|
int y = r.top + WD_FRAMERECT_TOP + WD_PAR_VSEP_NORMAL;
|
||||||
DrawStringMultiLine(r.left + WD_FRAMERECT_LEFT, r.right - WD_FRAMERECT_LEFT, r.top + WD_FRAMERECT_TOP, y, STR_CHEATS_WARNING, TC_FROMSTRING, SA_CENTER);
|
|
||||||
|
|
||||||
bool rtl = _current_text_dir == TD_RTL;
|
bool rtl = _current_text_dir == TD_RTL;
|
||||||
uint box_left = rtl ? r.right - this->box_width - 5 : r.left + 5;
|
uint box_left = rtl ? r.right - this->box_width - 5 : r.left + 5;
|
||||||
@@ -324,9 +325,9 @@ struct CheatWindow : Window {
|
|||||||
|
|
||||||
case SLE_BOOL:
|
case SLE_BOOL:
|
||||||
SetDParam(0, STR_CONFIG_SETTING_ON);
|
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);
|
SetDParam(0, STR_CONFIG_SETTING_OFF);
|
||||||
width = max(width, GetStringBoundingBox(ce->str).width);
|
width = std::max(width, GetStringBoundingBox(ce->str).width);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
@@ -334,37 +335,36 @@ struct CheatWindow : Window {
|
|||||||
/* Display date for change date cheat */
|
/* Display date for change date cheat */
|
||||||
case STR_CHEAT_CHANGE_DATE:
|
case STR_CHEAT_CHANGE_DATE:
|
||||||
SetDParam(0, ConvertYMDToDate(MAX_YEAR, 11, 31));
|
SetDParam(0, ConvertYMDToDate(MAX_YEAR, 11, 31));
|
||||||
width = max(width, GetStringBoundingBox(ce->str).width);
|
width = std::max(width, GetStringBoundingBox(ce->str).width);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
/* Draw coloured flag for change company cheat */
|
/* Draw coloured flag for change company cheat */
|
||||||
case STR_CHEAT_CHANGE_COMPANY:
|
case STR_CHEAT_CHANGE_COMPANY:
|
||||||
SetDParamMaxValue(0, MAX_COMPANIES);
|
SetDParamMaxValue(0, MAX_COMPANIES);
|
||||||
width = max(width, GetStringBoundingBox(ce->str).width + 10 + 10);
|
width = std::max(width, GetStringBoundingBox(ce->str).width + 10 + 10);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
SetDParam(0, INT64_MAX);
|
SetDParam(0, INT64_MAX);
|
||||||
width = max(width, GetStringBoundingBox(ce->str).width);
|
width = std::max(width, GetStringBoundingBox(ce->str).width);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
this->line_height = max(GetSpriteSize(SPR_BOX_CHECKED).height, GetSpriteSize(SPR_BOX_EMPTY).height);
|
this->line_height = std::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 = std::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<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 */;
|
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 = WD_FRAMERECT_TOP + WD_PAR_VSEP_NORMAL + WD_FRAMERECT_BOTTOM + this->line_height * lines;
|
||||||
size->height = this->header_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
|
void OnClick(Point pt, int widget, int click_count) override
|
||||||
{
|
{
|
||||||
const NWidgetBase *wid = this->GetWidget<NWidgetBase>(WID_C_PANEL);
|
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;
|
int x = pt.x - wid->pos_x;
|
||||||
bool rtl = _current_text_dir == TD_RTL;
|
bool rtl = _current_text_dir == TD_RTL;
|
||||||
if (rtl) x = wid->current_x - x;
|
if (rtl) x = wid->current_x - x;
|
||||||
|
@@ -218,7 +218,7 @@ static void TileLoopClearAlps(TileIndex tile)
|
|||||||
}
|
}
|
||||||
/* Update snow density. */
|
/* Update snow density. */
|
||||||
uint current_density = GetClearDensity(tile);
|
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) {
|
if (current_density < req_density) {
|
||||||
AddClearDensity(tile, 1);
|
AddClearDensity(tile, 1);
|
||||||
|
@@ -600,12 +600,12 @@ static void DumpSubCommandLog(char *&buffer, const char *last, const CommandLog
|
|||||||
|
|
||||||
char *DumpCommandLog(char *buffer, const char *last)
|
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);
|
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);
|
DumpSubCommandLog(buffer, last, _command_log, count);
|
||||||
|
|
||||||
if (_command_log_aux.count > 0) {
|
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);
|
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);
|
DumpSubCommandLog(buffer, last, _command_log_aux, aux_count);
|
||||||
}
|
}
|
||||||
|
@@ -278,11 +278,11 @@ void SubtractMoneyFromCompanyFract(CompanyID company, const CommandCost &cst)
|
|||||||
void UpdateLandscapingLimits()
|
void UpdateLandscapingLimits()
|
||||||
{
|
{
|
||||||
for (Company *c : Company::Iterate()) {
|
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->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 = min(c->clear_limit + _settings_game.construction.clear_per_64k_frames, (uint32)_settings_game.construction.clear_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 = min(c->tree_limit + _settings_game.construction.tree_per_64k_frames, (uint32)_settings_game.construction.tree_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 = min(c->purchase_land_limit + _settings_game.construction.purchase_land_per_64k_frames, (uint32)_settings_game.construction.purchase_land_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 = min(c->build_object_limit + _settings_game.construction.build_object_per_64k_frames, (uint32)_settings_game.construction.build_object_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);
|
ResetCompanyLivery(c);
|
||||||
_company_colours[c->index] = (Colours)c->colour;
|
_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;
|
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) {
|
if (_next_competitor_start == 0) {
|
||||||
/* AI::GetStartNextTime() can return 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) {
|
if (_game_mode != GM_MENU && AI::CanStartNew() && --_next_competitor_start == 0) {
|
||||||
|
@@ -116,11 +116,11 @@ struct ExpensesList {
|
|||||||
ExpensesType et = this->et[i];
|
ExpensesType et = this->et[i];
|
||||||
if (et == INVALID_EXPENSES) {
|
if (et == INVALID_EXPENSES) {
|
||||||
if (!invalid_expenses_measured) {
|
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;
|
invalid_expenses_measured = true;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
width = max(width, GetStringBoundingBox(STR_FINANCES_SECTION_CONSTRUCTION + et).width);
|
width = std::max(width, GetStringBoundingBox(STR_FINANCES_SECTION_CONSTRUCTION + et).width);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return width;
|
return width;
|
||||||
@@ -281,7 +281,7 @@ struct CompanyFinancesWindow : Window {
|
|||||||
CompanyFinancesWindow(WindowDesc *desc, CompanyID company) : Window(desc)
|
CompanyFinancesWindow(WindowDesc *desc, CompanyID company) : Window(desc)
|
||||||
{
|
{
|
||||||
const Company *c = Company::Get(company);
|
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->small = false;
|
||||||
this->CreateNestedTree();
|
this->CreateNestedTree();
|
||||||
this->SetupWidgets();
|
this->SetupWidgets();
|
||||||
@@ -328,7 +328,7 @@ struct CompanyFinancesWindow : Window {
|
|||||||
case WID_CF_LOAN_VALUE:
|
case WID_CF_LOAN_VALUE:
|
||||||
case WID_CF_TOTAL_VALUE:
|
case WID_CF_TOTAL_VALUE:
|
||||||
SetDParamMaxValue(0, this->max_money);
|
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;
|
break;
|
||||||
|
|
||||||
case WID_CF_MAXLOAN_GAP:
|
case WID_CF_MAXLOAN_GAP:
|
||||||
@@ -348,7 +348,7 @@ struct CompanyFinancesWindow : Window {
|
|||||||
case WID_CF_EXPS_PRICE2:
|
case WID_CF_EXPS_PRICE2:
|
||||||
case WID_CF_EXPS_PRICE3: {
|
case WID_CF_EXPS_PRICE3: {
|
||||||
const Company *c = Company::Get((CompanyID)this->window_number);
|
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;
|
int wid_offset = widget - WID_CF_EXPS_PRICE1;
|
||||||
if (wid_offset <= age) {
|
if (wid_offset <= age) {
|
||||||
DrawYearColumn(r, _cur_year - (age - wid_offset), c->yearly_expenses + (age - wid_offset));
|
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);
|
const Company *c = Company::Get((CompanyID)this->window_number);
|
||||||
if (abs(c->money) > this->max_money) {
|
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->SetupWidgets();
|
||||||
this->ReInit();
|
this->ReInit();
|
||||||
}
|
}
|
||||||
@@ -529,7 +529,7 @@ public:
|
|||||||
|
|
||||||
uint Height(uint width) const override
|
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
|
bool Selectable() const override
|
||||||
@@ -742,7 +742,7 @@ public:
|
|||||||
/* Position scrollbar to selected group */
|
/* Position scrollbar to selected group */
|
||||||
for (uint i = 0; i < this->rows; i++) {
|
for (uint i = 0; i < this->rows; i++) {
|
||||||
if (this->groups[i]->index == sel) {
|
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;
|
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;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case WID_SCL_MATRIX: {
|
case WID_SCL_MATRIX: {
|
||||||
/* 11 items in the default rail class */
|
/* 11 items in the default rail class */
|
||||||
this->square = GetSpriteSize(SPR_SQUARE);
|
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;
|
size->height = 11 * this->line_height;
|
||||||
resize->width = 1;
|
resize->width = 1;
|
||||||
@@ -792,9 +792,9 @@ public:
|
|||||||
this->square = GetSpriteSize(SPR_SQUARE);
|
this->square = GetSpriteSize(SPR_SQUARE);
|
||||||
int padding = this->square.width + NWidgetScrollbar::GetVerticalDimension().width + 10;
|
int padding = this->square.width + NWidgetScrollbar::GetVerticalDimension().width + 10;
|
||||||
for (const StringID *id = _colour_dropdown; id != endof(_colour_dropdown); id++) {
|
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;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -909,7 +909,7 @@ public:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} 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) {
|
for (uint i = this->vscroll->GetPosition(); i < max; ++i) {
|
||||||
const Group *g = this->groups[i];
|
const Group *g = this->groups[i];
|
||||||
SetDParam(0, g->index);
|
SetDParam(0, g->index);
|
||||||
@@ -1391,7 +1391,7 @@ public:
|
|||||||
number_dim.width += WD_FRAMERECT_LEFT + WD_FRAMERECT_RIGHT + arrows_width;
|
number_dim.width += WD_FRAMERECT_LEFT + WD_FRAMERECT_RIGHT + arrows_width;
|
||||||
number_dim.height += WD_FRAMERECT_TOP + WD_FRAMERECT_BOTTOM;
|
number_dim.height += WD_FRAMERECT_TOP + WD_FRAMERECT_BOTTOM;
|
||||||
/* Compute width of both buttons. */
|
/* 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;
|
number_dim.width = yesno_dim.width - arrows_width;
|
||||||
|
|
||||||
this->yesno_dim = yesno_dim;
|
this->yesno_dim = yesno_dim;
|
||||||
@@ -1403,8 +1403,8 @@ public:
|
|||||||
switch (widget) {
|
switch (widget) {
|
||||||
case WID_SCMF_FACE: {
|
case WID_SCMF_FACE: {
|
||||||
Dimension face_size = GetSpriteSize(SPR_GRADIENT);
|
Dimension face_size = GetSpriteSize(SPR_GRADIENT);
|
||||||
size->width = max(size->width, face_size.width);
|
size->width = std::max(size->width, face_size.width);
|
||||||
size->height = max(size->height, face_size.height);
|
size->height = std::max(size->height, face_size.height);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1896,22 +1896,22 @@ struct CompanyInfrastructureWindow : Window
|
|||||||
case WID_CI_RAIL_DESC: {
|
case WID_CI_RAIL_DESC: {
|
||||||
uint lines = 1; // Starts at 1 because a line is also required for the section title
|
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;
|
RailType rt;
|
||||||
FOR_ALL_SORTED_RAILTYPES(rt) {
|
FOR_ALL_SORTED_RAILTYPES(rt) {
|
||||||
if (HasBit(this->railtypes, rt)) {
|
if (HasBit(this->railtypes, rt)) {
|
||||||
lines++;
|
lines++;
|
||||||
SetDParam(0, GetRailTypeInfo(rt)->strings.name);
|
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) {
|
if (this->railtypes != RAILTYPES_NONE) {
|
||||||
lines++;
|
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;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1919,30 +1919,30 @@ struct CompanyInfrastructureWindow : Window
|
|||||||
case WID_CI_TRAM_DESC: {
|
case WID_CI_TRAM_DESC: {
|
||||||
uint lines = 1; // Starts at 1 because a line is also required for the section title
|
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;
|
RoadType rt;
|
||||||
FOR_ALL_SORTED_ROADTYPES(rt) {
|
FOR_ALL_SORTED_ROADTYPES(rt) {
|
||||||
if (HasBit(this->roadtypes, rt) && RoadTypeIsRoad(rt) == (widget == WID_CI_ROAD_DESC)) {
|
if (HasBit(this->roadtypes, rt) && RoadTypeIsRoad(rt) == (widget == WID_CI_ROAD_DESC)) {
|
||||||
lines++;
|
lines++;
|
||||||
SetDParam(0, GetRoadTypeInfo(rt)->strings.name);
|
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;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case WID_CI_WATER_DESC:
|
case WID_CI_WATER_DESC:
|
||||||
size->width = max(size->width, GetStringBoundingBox(STR_COMPANY_INFRASTRUCTURE_VIEW_WATER_SECT).width);
|
size->width = std::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_CANALS).width + WD_FRAMERECT_LEFT);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case WID_CI_STATION_DESC:
|
case WID_CI_STATION_DESC:
|
||||||
size->width = max(size->width, GetStringBoundingBox(STR_COMPANY_INFRASTRUCTURE_VIEW_STATION_SECT).width);
|
size->width = std::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 = std::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_AIRPORTS).width + WD_FRAMERECT_LEFT);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case WID_CI_RAIL_COUNT:
|
case WID_CI_RAIL_COUNT:
|
||||||
@@ -1956,24 +1956,24 @@ struct CompanyInfrastructureWindow : Window
|
|||||||
Money max_cost = 10000; // Some random number to reserve enough space.
|
Money max_cost = 10000; // Some random number to reserve enough space.
|
||||||
uint32 rail_total = c->infrastructure.GetRailTotal();
|
uint32 rail_total = c->infrastructure.GetRailTotal();
|
||||||
for (RailType rt = RAILTYPE_BEGIN; rt < RAILTYPE_END; rt++) {
|
for (RailType rt = RAILTYPE_BEGIN; rt < RAILTYPE_END; rt++) {
|
||||||
max_val = max(max_val, c->infrastructure.rail[rt]);
|
max_val = std::max(max_val, c->infrastructure.rail[rt]);
|
||||||
max_cost = max(max_cost, RailMaintenanceCost(rt, c->infrastructure.rail[rt], rail_total));
|
max_cost = std::max(max_cost, RailMaintenanceCost(rt, c->infrastructure.rail[rt], rail_total));
|
||||||
}
|
}
|
||||||
max_val = max(max_val, c->infrastructure.signal);
|
max_val = std::max(max_val, c->infrastructure.signal);
|
||||||
max_cost = max(max_cost, SignalMaintenanceCost(c->infrastructure.signal));
|
max_cost = std::max(max_cost, SignalMaintenanceCost(c->infrastructure.signal));
|
||||||
uint32 road_total = c->infrastructure.GetRoadTotal();
|
uint32 road_total = c->infrastructure.GetRoadTotal();
|
||||||
uint32 tram_total = c->infrastructure.GetTramTotal();
|
uint32 tram_total = c->infrastructure.GetTramTotal();
|
||||||
for (RoadType rt = ROADTYPE_BEGIN; rt < ROADTYPE_END; rt++) {
|
for (RoadType rt = ROADTYPE_BEGIN; rt < ROADTYPE_END; rt++) {
|
||||||
max_val = max(max_val, c->infrastructure.road[rt]);
|
max_val = std::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_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_val = std::max(max_val, c->infrastructure.water);
|
||||||
max_cost = max(max_cost, CanalMaintenanceCost(c->infrastructure.water));
|
max_cost = std::max(max_cost, CanalMaintenanceCost(c->infrastructure.water));
|
||||||
max_val = max(max_val, c->infrastructure.station);
|
max_val = std::max(max_val, c->infrastructure.station);
|
||||||
max_cost = max(max_cost, StationMaintenanceCost(c->infrastructure.station));
|
max_cost = std::max(max_cost, StationMaintenanceCost(c->infrastructure.station));
|
||||||
max_val = max(max_val, c->infrastructure.airport);
|
max_val = std::max(max_val, c->infrastructure.airport);
|
||||||
max_cost = max(max_cost, AirportMaintenanceCost(c->index));
|
max_cost = std::max(max_cost, AirportMaintenanceCost(c->index));
|
||||||
|
|
||||||
SetDParamMaxValue(0, max_val);
|
SetDParamMaxValue(0, max_val);
|
||||||
uint count_width = GetStringBoundingBox(STR_WHITE_COMMA).width + 20; // Reserve some wiggle room
|
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) {
|
if (_settings_game.economy.infrastructure_maintenance) {
|
||||||
SetDParamMaxValue(0, this->GetTotalMaintenanceCost() * 12); // Convert to per year
|
SetDParamMaxValue(0, this->GetTotalMaintenanceCost() * 12); // Convert to per year
|
||||||
this->total_width = GetStringBoundingBox(STR_COMPANY_INFRASTRUCTURE_VIEW_TOTAL).width + 20;
|
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
|
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. */
|
/* Set height of the total line. */
|
||||||
if (widget == WID_CI_TOTAL) {
|
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;
|
break;
|
||||||
}
|
}
|
||||||
@@ -2385,8 +2385,8 @@ struct CompanyWindow : Window
|
|||||||
switch (widget) {
|
switch (widget) {
|
||||||
case WID_C_FACE: {
|
case WID_C_FACE: {
|
||||||
Dimension face_size = GetSpriteSize(SPR_GRADIENT);
|
Dimension face_size = GetSpriteSize(SPR_GRADIENT);
|
||||||
size->width = max(size->width, face_size.width);
|
size->width = std::max(size->width, face_size.width);
|
||||||
size->height = max(size->height, face_size.height);
|
size->height = std::max(size->height, face_size.height);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2407,18 +2407,18 @@ struct CompanyWindow : Window
|
|||||||
case WID_C_DESC_VEHICLE_COUNTS:
|
case WID_C_DESC_VEHICLE_COUNTS:
|
||||||
SetDParamMaxValue(0, 5000); // Maximum number of vehicles
|
SetDParamMaxValue(0, 5000); // Maximum number of vehicles
|
||||||
for (uint i = 0; i < lengthof(_company_view_vehicle_count_strings); i++) {
|
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;
|
break;
|
||||||
|
|
||||||
case WID_C_DESC_INFRASTRUCTURE_COUNTS:
|
case WID_C_DESC_INFRASTRUCTURE_COUNTS:
|
||||||
SetDParamMaxValue(0, UINT_MAX);
|
SetDParamMaxValue(0, UINT_MAX);
|
||||||
size->width = max(size->width, GetStringBoundingBox(STR_COMPANY_VIEW_INFRASTRUCTURE_RAIL).width);
|
size->width = std::max(size->width, GetStringBoundingBox(STR_COMPANY_VIEW_INFRASTRUCTURE_RAIL).width);
|
||||||
size->width = max(size->width, GetStringBoundingBox(STR_COMPANY_VIEW_INFRASTRUCTURE_ROAD).width);
|
size->width = std::max(size->width, GetStringBoundingBox(STR_COMPANY_VIEW_INFRASTRUCTURE_ROAD).width);
|
||||||
size->width = max(size->width, GetStringBoundingBox(STR_COMPANY_VIEW_INFRASTRUCTURE_WATER).width);
|
size->width = std::max(size->width, GetStringBoundingBox(STR_COMPANY_VIEW_INFRASTRUCTURE_WATER).width);
|
||||||
size->width = max(size->width, GetStringBoundingBox(STR_COMPANY_VIEW_INFRASTRUCTURE_STATION).width);
|
size->width = std::max(size->width, GetStringBoundingBox(STR_COMPANY_VIEW_INFRASTRUCTURE_STATION).width);
|
||||||
size->width = max(size->width, GetStringBoundingBox(STR_COMPANY_VIEW_INFRASTRUCTURE_AIRPORT).width);
|
size->width = std::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_NONE).width);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case WID_C_DESC_OWNERS: {
|
case WID_C_DESC_OWNERS: {
|
||||||
@@ -2426,7 +2426,7 @@ struct CompanyWindow : Window
|
|||||||
SetDParamMaxValue(0, 75);
|
SetDParamMaxValue(0, 75);
|
||||||
SetDParam(1, c2->index);
|
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;
|
break;
|
||||||
}
|
}
|
||||||
@@ -2437,12 +2437,12 @@ struct CompanyWindow : Window
|
|||||||
case WID_C_VIEW_INFRASTRUCTURE:
|
case WID_C_VIEW_INFRASTRUCTURE:
|
||||||
case WID_C_COMPANY_PASSWORD:
|
case WID_C_COMPANY_PASSWORD:
|
||||||
case WID_C_COMPANY_JOIN:
|
case WID_C_COMPANY_JOIN:
|
||||||
size->width = max(size->width, GetStringBoundingBox(STR_COMPANY_VIEW_VIEW_HQ_BUTTON).width);
|
size->width = std::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 = std::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 = std::max(size->width, GetStringBoundingBox(STR_COMPANY_VIEW_RELOCATE_HQ).width);
|
||||||
size->width = max(size->width, GetStringBoundingBox(STR_COMPANY_VIEW_INFRASTRUCTURE_BUTTON).width);
|
size->width = std::max(size->width, GetStringBoundingBox(STR_COMPANY_VIEW_INFRASTRUCTURE_BUTTON).width);
|
||||||
size->width = max(size->width, GetStringBoundingBox(STR_COMPANY_VIEW_PASSWORD).width);
|
size->width = std::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_JOIN).width);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
||||||
|
@@ -1148,6 +1148,23 @@ DEF_CONSOLE_CMD(ConRestart)
|
|||||||
return true;
|
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'.
|
* Print a text buffer line by line to the console. Lines are separated by '\n'.
|
||||||
* @param buf The buffer to print.
|
* @param buf The buffer to print.
|
||||||
@@ -2596,8 +2613,8 @@ DEF_CONSOLE_CMD(ConViewportMarkDirty)
|
|||||||
Viewport *vp = FindWindowByClass(WC_MAIN_WINDOW)->viewport;
|
Viewport *vp = FindWindowByClass(WC_MAIN_WINDOW)->viewport;
|
||||||
uint l = strtoul(argv[1], nullptr, 0);
|
uint l = strtoul(argv[1], nullptr, 0);
|
||||||
uint t = strtoul(argv[2], 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 r = std::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 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 x = l; x < r; x++) {
|
||||||
for (uint y = t; y < b; y++) {
|
for (uint y = t; y < b; y++) {
|
||||||
vp->dirty_blocks[(x * vp->dirty_blocks_per_column) + y] = true;
|
vp->dirty_blocks[(x * vp->dirty_blocks_per_column) + y] = true;
|
||||||
@@ -2832,7 +2849,7 @@ DEF_CONSOLE_CMD(ConNewGRFProfile)
|
|||||||
if (started > 0) {
|
if (started > 0) {
|
||||||
IConsolePrintF(CC_DEBUG, "Started profiling for GRFID%s %s", (started > 1) ? "s" : "", grfids.c_str());
|
IConsolePrintF(CC_DEBUG, "Started profiling for GRFID%s %s", (started > 1) ? "s" : "", grfids.c_str());
|
||||||
if (argc >= 3) {
|
if (argc >= 3) {
|
||||||
int days = max(atoi(argv[2]), 1);
|
int days = std::max(atoi(argv[2]), 1);
|
||||||
_newgrf_profile_end_date = _date + days;
|
_newgrf_profile_end_date = _date + days;
|
||||||
|
|
||||||
char datestrbuf[32]{ 0 };
|
char datestrbuf[32]{ 0 };
|
||||||
@@ -3069,6 +3086,7 @@ void IConsoleStdLibRegister()
|
|||||||
IConsoleCmdRegister("list_aliases", ConListAliases);
|
IConsoleCmdRegister("list_aliases", ConListAliases);
|
||||||
IConsoleCmdRegister("newgame", ConNewGame);
|
IConsoleCmdRegister("newgame", ConNewGame);
|
||||||
IConsoleCmdRegister("restart", ConRestart);
|
IConsoleCmdRegister("restart", ConRestart);
|
||||||
|
IConsoleCmdRegister("reload", ConReload);
|
||||||
IConsoleCmdRegister("getseed", ConGetSeed);
|
IConsoleCmdRegister("getseed", ConGetSeed);
|
||||||
IConsoleCmdRegister("getdate", ConGetDate);
|
IConsoleCmdRegister("getdate", ConGetDate);
|
||||||
IConsoleCmdRegister("getsysdate", ConGetSysDate);
|
IConsoleCmdRegister("getsysdate", ConGetSysDate);
|
||||||
|
@@ -12,6 +12,7 @@
|
|||||||
#include "window_gui.h"
|
#include "window_gui.h"
|
||||||
#include "console_gui.h"
|
#include "console_gui.h"
|
||||||
#include "console_internal.h"
|
#include "console_internal.h"
|
||||||
|
#include "guitimer_func.h"
|
||||||
#include "window_func.h"
|
#include "window_func.h"
|
||||||
#include "string_func.h"
|
#include "string_func.h"
|
||||||
#include "strings_func.h"
|
#include "strings_func.h"
|
||||||
@@ -172,6 +173,7 @@ struct IConsoleWindow : Window
|
|||||||
static int scroll;
|
static int scroll;
|
||||||
int line_height; ///< Height of one line of text in the console.
|
int line_height; ///< Height of one line of text in the console.
|
||||||
int line_offset;
|
int line_offset;
|
||||||
|
GUITimer truncate_timer;
|
||||||
|
|
||||||
IConsoleWindow() : Window(&_console_window_desc)
|
IConsoleWindow() : Window(&_console_window_desc)
|
||||||
{
|
{
|
||||||
@@ -180,6 +182,7 @@ struct IConsoleWindow : Window
|
|||||||
this->line_offset = GetStringBoundingBox("] ").width + 5;
|
this->line_offset = GetStringBoundingBox("] ").width + 5;
|
||||||
|
|
||||||
this->InitNested(0);
|
this->InitNested(0);
|
||||||
|
this->truncate_timer.SetInterval(3000);
|
||||||
ResizeWindow(this, _screen.width, _screen.height / 3);
|
ResizeWindow(this, _screen.width, _screen.height / 3);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -195,7 +198,7 @@ struct IConsoleWindow : Window
|
|||||||
*/
|
*/
|
||||||
void Scroll(int amount)
|
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);
|
IConsoleWindow::scroll = Clamp<int>(IConsoleWindow::scroll + amount, 0, max_scroll);
|
||||||
this->SetDirty();
|
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() &&
|
if (IConsoleLine::Truncate() &&
|
||||||
(IConsoleWindow::scroll > IConsoleLine::size)) {
|
(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();
|
this->SetDirty();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -346,7 +351,7 @@ struct IConsoleWindow : Window
|
|||||||
|
|
||||||
Point GetCaretPosition() const override
|
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};
|
Point pt = {this->line_offset + delta + _iconsole_cmdline.caretxoffs, this->height - this->line_height};
|
||||||
|
|
||||||
return pt;
|
return pt;
|
||||||
@@ -354,7 +359,7 @@ struct IConsoleWindow : Window
|
|||||||
|
|
||||||
Rect GetTextBoundingRect(const char *from, const char *to) const override
|
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 p1 = GetCharPosInString(_iconsole_cmdline.buf, from, FS_NORMAL);
|
||||||
Point p2 = from != to ? GetCharPosInString(_iconsole_cmdline.buf, from) : p1;
|
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
|
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;
|
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 maxdim(const Dimension &d1, const Dimension &d2)
|
||||||
{
|
{
|
||||||
Dimension d;
|
Dimension d;
|
||||||
d.width = max(d1.width, d2.width);
|
d.width = std::max(d1.width, d2.width);
|
||||||
d.height = max(d1.height, d2.height);
|
d.height = std::max(d1.height, d2.height);
|
||||||
return d;
|
return d;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -12,7 +12,6 @@
|
|||||||
|
|
||||||
#include "../stdafx.h"
|
#include "../stdafx.h"
|
||||||
#include <vector>
|
#include <vector>
|
||||||
#include <algorithm>
|
|
||||||
#include <limits>
|
#include <limits>
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -261,7 +260,7 @@ class Kdtree {
|
|||||||
best = SelectNearestNodeDistance(best, this->FindNearestRecursive(xy, next, level + 1));
|
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,
|
/* 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. */
|
* if it is we also need to check the other side of the split. */
|
||||||
|
@@ -10,66 +10,6 @@
|
|||||||
#ifndef MATH_FUNC_HPP
|
#ifndef MATH_FUNC_HPP
|
||||||
#define 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.
|
* 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
|
* 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
|
* need to cast the UINT16_MAX to prevent MSVC from displaying its
|
||||||
* infinite loads of warnings. */
|
* 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 >= this->size);
|
||||||
assert(index < Tmax_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);
|
this->data = ReallocT(this->data, new_size);
|
||||||
MemSetT(this->data + this->size, 0, new_size - this->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);
|
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++;
|
this->items++;
|
||||||
|
|
||||||
Titem *item;
|
Titem *item;
|
||||||
@@ -200,7 +200,7 @@ DEFINE_POOL_METHOD(void)::FreeItem(size_t index)
|
|||||||
}
|
}
|
||||||
this->data[index] = nullptr;
|
this->data[index] = nullptr;
|
||||||
ClrBit(this->free_bitmap[index / 64], index % 64);
|
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--;
|
this->items--;
|
||||||
if (!this->cleaning) Titem::PostDestructor(index);
|
if (!this->cleaning) Titem::PostDestructor(index);
|
||||||
}
|
}
|
||||||
|
@@ -234,7 +234,7 @@ public:
|
|||||||
if (x * new_height > new_capacity) continue;
|
if (x * new_height > new_capacity) continue;
|
||||||
(*copy)(new_data + (x - 1) * new_height,
|
(*copy)(new_data + (x - 1) * new_height,
|
||||||
this->data + (x - 1) * this->height,
|
this->data + (x - 1) * this->height,
|
||||||
min(this->height, new_height));
|
std::min(this->height, new_height));
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
/* If matrix is shrinking copy from the front. */
|
/* If matrix is shrinking copy from the front. */
|
||||||
@@ -242,7 +242,7 @@ public:
|
|||||||
if ((x + 1) * new_height > new_capacity) break;
|
if ((x + 1) * new_height > new_capacity) break;
|
||||||
(*copy)(new_data + x * new_height,
|
(*copy)(new_data + x * new_height,
|
||||||
this->data + x * this->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) {
|
if (index < Tmax_size) {
|
||||||
this->data[index].valid = true;
|
this->data[index].valid = true;
|
||||||
this->first_free = index + 1;
|
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;
|
return index;
|
||||||
}
|
}
|
||||||
@@ -50,7 +50,7 @@ public:
|
|||||||
inline void Destroy(Tindex index)
|
inline void Destroy(Tindex index)
|
||||||
{
|
{
|
||||||
this->data[index].valid = false;
|
this->data[index].valid = false;
|
||||||
this->first_free = min(this->first_free, index);
|
this->first_free = std::min(this->first_free, index);
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
@@ -13,7 +13,6 @@
|
|||||||
#include "alloc_func.hpp"
|
#include "alloc_func.hpp"
|
||||||
#include "mem_func.hpp"
|
#include "mem_func.hpp"
|
||||||
#include <vector>
|
#include <vector>
|
||||||
#include <algorithm>
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Helper function to append an item to a vector if it is not already contained
|
* 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) {
|
for (NewsItem *news = _latest_news; news != nullptr; news = news->prev) {
|
||||||
total++;
|
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);
|
buffer += seprintf(buffer, last, "Recent news messages (%u of %u):\n", show, total);
|
||||||
|
|
||||||
int i = 0;
|
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;
|
DateFract _game_load_date_fract;
|
||||||
uint8 _game_load_tick_skip_counter;
|
uint8 _game_load_tick_skip_counter;
|
||||||
|
|
||||||
int32 _old_ending_year_slv_105; ///< Old ending year for savegames before SLV_105
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set the date.
|
* Set the date.
|
||||||
* @param date New date
|
* @param date New date
|
||||||
@@ -215,11 +213,13 @@ static void OnNewYear()
|
|||||||
|
|
||||||
if (_cur_date_ymd.year == _settings_client.gui.semaphore_build_before) ResetSignalVariant();
|
if (_cur_date_ymd.year == _settings_client.gui.semaphore_build_before) ResetSignalVariant();
|
||||||
|
|
||||||
/* check if we reached end of the game (end of ending year) */
|
/* 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) {
|
if (_cur_date_ymd.year == _settings_game.game_creation.ending_year + 1 && _settings_game.game_creation.ending_year != 0) {
|
||||||
ShowEndGameChart();
|
ShowEndGameChart();
|
||||||
|
}
|
||||||
|
|
||||||
/* check if we reached the maximum year, decrement dates by a year */
|
/* 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;
|
int days_this_year;
|
||||||
|
|
||||||
_cur_date_ymd.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) :
|
SetDateWindow(WindowDesc *desc, WindowNumber window_number, Window *parent, Date initial_date, Year min_year, Year max_year, SetDateCallback *callback) :
|
||||||
Window(desc),
|
Window(desc),
|
||||||
callback(callback),
|
callback(callback),
|
||||||
min_year(max(MIN_YEAR, min_year)),
|
min_year(std::max(MIN_YEAR, min_year)),
|
||||||
max_year(min(MAX_YEAR, max_year))
|
max_year(std::min(MAX_YEAR, max_year))
|
||||||
{
|
{
|
||||||
assert(this->min_year <= this->max_year);
|
assert(this->min_year <= this->max_year);
|
||||||
this->parent = parent;
|
this->parent = parent;
|
||||||
|
@@ -335,7 +335,7 @@ char *DumpDesyncMsgLog(char *buffer, const char *last)
|
|||||||
{
|
{
|
||||||
if (!desync_msg_log_count) return buffer;
|
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 log_index = (desync_msg_log_next + desync_msg_log.size() - count) % desync_msg_log.size();
|
||||||
unsigned int display_num = desync_msg_log_count - count;
|
unsigned int display_num = desync_msg_log_count - count;
|
||||||
|
|
||||||
|
@@ -491,7 +491,7 @@ public:
|
|||||||
this->EnableWidget(WID_DB_SHOW_DEPS);
|
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();
|
this->DrawWidgets();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -548,9 +548,9 @@ void DeparturesWindow<Twaypoint>::RecomputeDateWidth()
|
|||||||
cached_date_display_method = _settings_time.time_in_minutes;
|
cached_date_display_method = _settings_time.time_in_minutes;
|
||||||
cached_arr_dep_display_method = _settings_client.gui.departure_show_both;
|
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 = std::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 = std::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_CANCELLED)).width, cached_status_width);
|
||||||
|
|
||||||
uint interval = cached_date_display_method ? _settings_time.ticks_per_minute : DAY_TICKS;
|
uint interval = cached_date_display_method ? _settings_time.ticks_per_minute : DAY_TICKS;
|
||||||
uint count = cached_date_display_method ? 24*60 : 365;
|
uint count = cached_date_display_method ? 24*60 : 365;
|
||||||
@@ -558,8 +558,8 @@ void DeparturesWindow<Twaypoint>::RecomputeDateWidth()
|
|||||||
for (uint i = 0; i < count; ++i) {
|
for (uint i = 0; i < count; ++i) {
|
||||||
SetDParam(0, INT_MAX - (i*interval));
|
SetDParam(0, INT_MAX - (i*interval));
|
||||||
SetDParam(1, 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_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 = max((GetStringBoundingBox(STR_DEPARTURES_EXPECTED)).width, cached_status_width);
|
cached_status_width = std::max((GetStringBoundingBox(STR_DEPARTURES_EXPECTED)).width, cached_status_width);
|
||||||
}
|
}
|
||||||
|
|
||||||
SetDParam(0, 0);
|
SetDParam(0, 0);
|
||||||
@@ -623,7 +623,7 @@ void DeparturesWindow<Twaypoint>::DrawDeparturesListItems(const Rect &r) const
|
|||||||
int text_right = right - (rtl ? text_offset : 0);
|
int text_right = right - (rtl ? text_offset : 0);
|
||||||
|
|
||||||
int y = r.top + 1;
|
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) {
|
if (max_departures > _settings_client.gui.max_departures) {
|
||||||
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) {
|
switch (image_type) {
|
||||||
case EIT_IN_DEPOT:
|
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_left = Clamp(max_extend_left, min_extend, max_extend);
|
||||||
_base_block_sizes_depot[type].extend_right = Clamp(max_extend_right, min_extend, max_extend);
|
_base_block_sizes_depot[type].extend_right = Clamp(max_extend_right, min_extend, max_extend);
|
||||||
break;
|
break;
|
||||||
case EIT_PURCHASE:
|
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_left = Clamp(max_extend_left, min_extend, max_extend);
|
||||||
_base_block_sizes_purchase[type].extend_right = Clamp(max_extend_right, min_extend, max_extend);
|
_base_block_sizes_purchase[type].extend_right = Clamp(max_extend_right, min_extend, max_extend);
|
||||||
break;
|
break;
|
||||||
@@ -397,7 +397,7 @@ struct DepotWindow : Window {
|
|||||||
uint16 rows_in_display = wid->current_y / wid->resize_y;
|
uint16 rows_in_display = wid->current_y / wid->resize_y;
|
||||||
|
|
||||||
uint16 num = this->vscroll->GetPosition() * this->num_columns;
|
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;
|
int y;
|
||||||
for (y = r.top + 1; num < maxval; y += this->resize.step_height) { // Draw the rows
|
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++) {
|
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. */
|
/* Draw the train wagons without an engine in front. */
|
||||||
for (; num < maxval; num++, y += this->resize.step_height) {
|
for (; num < maxval; num++, y += this->resize.step_height) {
|
||||||
@@ -670,15 +670,15 @@ struct DepotWindow : Window {
|
|||||||
this->flag_height = UnScaleGUI(spr->height);
|
this->flag_height = UnScaleGUI(spr->height);
|
||||||
|
|
||||||
if (this->type == VEH_TRAIN || this->type == VEH_ROAD) {
|
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;
|
this->header_width = unumber.width + this->flag_width + WD_FRAMERECT_LEFT;
|
||||||
} else {
|
} else {
|
||||||
min_height = unumber.height + UnScaleGUI(spr->height) + WD_MATRIX_TOP + WD_PAR_VSEP_NORMAL + WD_MATRIX_BOTTOM;
|
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;
|
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) {
|
if (this->type == VEH_TRAIN) {
|
||||||
resize->width = 1;
|
resize->width = 1;
|
||||||
size->width = base_width + 2 * ScaleGUITrad(29); // about 2 parts
|
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()) {
|
for (const Train *v = Train::From(this->vehicle_list[num]); v != nullptr; v = v->Next()) {
|
||||||
width += v->GetDisplayImageWidth();
|
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 */
|
/* 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);
|
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);
|
int safe_y = Clamp(y - 1, 0, MapMaxY() * TILE_SIZE);
|
||||||
|
|
||||||
u->x_pos = x;
|
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);
|
safe_y = Clamp(u->y_pos, 0, MapMaxY() * TILE_SIZE);
|
||||||
u->z_pos = GetSlopePixelZ(safe_x, safe_y);
|
u->z_pos = GetSlopePixelZ(safe_x, safe_y);
|
||||||
u->direction = this->direction;
|
u->direction = this->direction;
|
||||||
|
@@ -72,7 +72,7 @@ static TileIndex GetOtherAqueductEnd(TileIndex tile_from, TileIndex *tile_to = n
|
|||||||
/* Direction the aqueduct is built to. */
|
/* Direction the aqueduct is built to. */
|
||||||
TileIndexDiff offset = TileOffsByDiagDir(ReverseDiagDir(dir));
|
TileIndexDiff offset = TileOffsByDiagDir(ReverseDiagDir(dir));
|
||||||
/* The maximum length of the aqueduct. */
|
/* 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;
|
TileIndex endtile = tile_from;
|
||||||
for (int length = 0; IsValidTile(endtile) && TileX(endtile) != 0 && TileY(endtile) != 0; length++) {
|
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_STATION, TRANSPORT_WATER);
|
||||||
DeleteWindowById(WC_BUILD_DEPOT, 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
|
void OnClick(Point pt, int widget, int click_count) override
|
||||||
@@ -145,17 +158,14 @@ struct BuildDocksToolbarWindow : Window {
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case WID_DT_DEPOT: // Build depot button
|
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);
|
if (HandlePlacePushButton(this, WID_DT_DEPOT, SPR_CURSOR_SHIP_DEPOT, HT_RECT)) ShowBuildDocksDepotPicker(this);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case WID_DT_STATION: // Build station button
|
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);
|
if (HandlePlacePushButton(this, WID_DT_STATION, SPR_CURSOR_DOCK, HT_SPECIAL)) ShowBuildDockStationPicker(this);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case WID_DT_BUOY: // Build buoy button
|
case WID_DT_BUOY: // Build buoy button
|
||||||
if (!CanBuildVehicleInfrastructure(VEH_SHIP)) return;
|
|
||||||
HandlePlacePushButton(this, WID_DT_BUOY, SPR_CURSOR_BUOY, HT_RECT);
|
HandlePlacePushButton(this, WID_DT_BUOY, SPR_CURSOR_BUOY, HT_RECT);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@@ -142,7 +142,7 @@ Money CalculateCompanyValue(const Company *c, bool including_loan)
|
|||||||
if (including_loan) value -= c->current_loan;
|
if (including_loan) value -= c->current_loan;
|
||||||
value += c->money;
|
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 */
|
/* 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) {
|
if (numec != 0) {
|
||||||
const CompanyEconomyEntry *cee = c->old_economy;
|
const CompanyEconomyEntry *cee = c->old_economy;
|
||||||
Money min_income = cee->income + cee->expenses;
|
Money min_income = cee->income + cee->expenses;
|
||||||
Money max_income = cee->income + cee->expenses;
|
Money max_income = cee->income + cee->expenses;
|
||||||
|
|
||||||
do {
|
do {
|
||||||
min_income = min(min_income, cee->income + cee->expenses);
|
min_income = std::min(min_income, cee->income + cee->expenses);
|
||||||
max_income = max(max_income, cee->income + cee->expenses);
|
max_income = std::max(max_income, cee->income + cee->expenses);
|
||||||
} while (++cee, --numec);
|
} while (++cee, --numec);
|
||||||
|
|
||||||
if (min_income > 0) {
|
if (min_income > 0) {
|
||||||
@@ -222,7 +222,7 @@ int UpdateCompanyRatingAndValue(Company *c, bool update)
|
|||||||
|
|
||||||
/* Generate score depending on amount of transported cargo */
|
/* 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) {
|
if (numec != 0) {
|
||||||
const CompanyEconomyEntry *cee = c->old_economy;
|
const CompanyEconomyEntry *cee = c->old_economy;
|
||||||
OverflowSafeInt64 total_delivered = 0;
|
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, old_owner)) {
|
||||||
if (HasBit(t->have_ratings, new_owner)) {
|
if (HasBit(t->have_ratings, new_owner)) {
|
||||||
/* use max of the two ratings. */
|
/* 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 {
|
} else {
|
||||||
SetBit(t->have_ratings, new_owner);
|
SetBit(t->have_ratings, new_owner);
|
||||||
t->ratings[new_owner] = t->ratings[old_owner];
|
t->ratings[new_owner] = t->ratings[old_owner];
|
||||||
@@ -961,12 +961,12 @@ void StartupEconomy()
|
|||||||
{
|
{
|
||||||
_economy.interest_rate = _settings_game.difficulty.initial_interest;
|
_economy.interest_rate = _settings_game.difficulty.initial_interest;
|
||||||
_economy.infl_amount = _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;
|
_economy.fluct = GB(Random(), 0, 8) + 168;
|
||||||
|
|
||||||
if (_settings_game.economy.inflation && _settings_game.economy.inflation_fixed_dates) {
|
if (_settings_game.economy.inflation && _settings_game.economy.inflation_fixed_dates) {
|
||||||
/* Apply inflation that happened before our game start year. */
|
/* 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++) {
|
for (int i = 0; i < months; i++) {
|
||||||
AddInflation(false);
|
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 */
|
/* Use callback to calculate cargo profit, if available */
|
||||||
if (HasBit(cs->callback_mask, CBM_CARGO_PROFIT_CALC)) {
|
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);
|
uint16 callback = GetCargoCallback(CBID_CARGO_PROFIT_CALC, 0, var18, cs);
|
||||||
if (callback != CALLBACK_FAILED) {
|
if (callback != CALLBACK_FAILED) {
|
||||||
int result = GB(callback, 0, 14);
|
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 days1 = cs->transit_days[0];
|
||||||
const int days2 = cs->transit_days[1];
|
const int days2 = cs->transit_days[1];
|
||||||
const int days_over_days1 = max( transit_days - days1, 0);
|
const int days_over_days1 = std::max( transit_days - days1, 0);
|
||||||
const int days_over_days2 = max(days_over_days1 - days2, 0);
|
const int days_over_days2 = std::max(days_over_days1 - days2, 0);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* The time factor is calculated based on the time it took
|
* 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
|
* - 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);
|
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 */
|
/* Insert the industry into _cargo_delivery_destinations, if not yet contained */
|
||||||
include(_cargo_delivery_destinations, ind);
|
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->incoming_cargo_waiting[cargo_index] += amount;
|
||||||
ind->last_cargo_accepted_at[cargo_index] = _date;
|
ind->last_cargo_accepted_at[cargo_index] = _date;
|
||||||
num_pieces -= amount;
|
num_pieces -= amount;
|
||||||
@@ -1200,7 +1200,7 @@ static void TriggerIndustryProduction(Industry *i)
|
|||||||
if (cargo_waiting == 0) continue;
|
if (cargo_waiting == 0) continue;
|
||||||
|
|
||||||
for (uint ci_out = 0; ci_out < lengthof(i->produced_cargo_waiting); ci_out++) {
|
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;
|
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);
|
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. */
|
/* 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. */
|
/* 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) {
|
if (HasBit(v->vehicle_flags, VF_CARGO_UNLOADING) && (GetUnloadType(v) & OUFB_NO_UNLOAD) == 0) {
|
||||||
uint cargo_count = v->cargo.UnloadCount();
|
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?
|
bool remaining = false; // Are there cargo entities in this vehicle that can still be unloaded here?
|
||||||
|
|
||||||
assert(payment != nullptr);
|
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. */
|
/* 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_speed = std::min(t, 255);
|
||||||
ge->last_age = min(_cur_year - front->build_year, 255);
|
ge->last_age = std::min(_cur_year - front->build_year, 255);
|
||||||
|
|
||||||
assert(v->cargo_cap >= v->cargo.StoredCount());
|
assert(v->cargo_cap >= v->cargo.StoredCount());
|
||||||
/* Capacity available for loading more cargo. */
|
/* Capacity available for loading more cargo. */
|
||||||
@@ -1991,7 +1991,7 @@ static void LoadUnloadVehicle(Vehicle *front)
|
|||||||
* has capacity for it, load it on the vehicle. */
|
* 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.ActionCount(VehicleCargoList::MTA_LOAD) > 0 || ge->cargo.AvailableCount() > 0) && MayLoadUnderExclusiveRights(st, v)) {
|
||||||
if (v->cargo.StoredCount() == 0) TriggerVehicle(v, VEHICLE_TRIGGER_NEW_CARGO);
|
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));
|
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) {
|
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
|
/* 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. */
|
* 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 &&
|
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())) {
|
may_leave_early())) {
|
||||||
SetBit(front->vehicle_flags, VF_STOP_LOADING);
|
SetBit(front->vehicle_flags, VF_STOP_LOADING);
|
||||||
if (may_leave_early()) {
|
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.
|
* 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);
|
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 */
|
/* Check for early retirement */
|
||||||
if (e->company_avail != 0 && !_settings_game.vehicle.never_expire_vehicles && e->info.base_life != 0xFF) {
|
if (e->company_avail != 0 && !_settings_game.vehicle.never_expire_vehicles && e->info.base_life != 0xFF) {
|
||||||
int retire_early = e->info.retire_early;
|
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) {
|
if (retire_early != 0 && age >= retire_early_max_age) {
|
||||||
/* Early retirement is enabled and we're past the date... */
|
/* Early retirement is enabled and we're past the date... */
|
||||||
RetireEngineIfPossible(e, retire_early_max_age);
|
RetireEngineIfPossible(e, retire_early_max_age);
|
||||||
@@ -645,7 +645,7 @@ void SetYearEngineAgingStops()
|
|||||||
YearMonthDay ymd;
|
YearMonthDay ymd;
|
||||||
ConvertDateToYMD(ei->base_intro + (ei->lifelength * DAYS_IN_LEAP_YEAR) / 2, &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()
|
void StartupEngines()
|
||||||
{
|
{
|
||||||
/* Aging of vehicles stops, so account for that when starting late */
|
/* 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()) {
|
for (Engine *e : Engine::Iterate()) {
|
||||||
StartupOneEngine(e, aging_date);
|
StartupOneEngine(e, aging_date);
|
||||||
@@ -755,6 +755,7 @@ static void EnableEngineForCompany(EngineID eid, CompanyID company)
|
|||||||
InvalidateWindowData(WC_MAIN_TOOLBAR, 0);
|
InvalidateWindowData(WC_MAIN_TOOLBAR, 0);
|
||||||
if (e->type == VEH_ROAD) InvalidateWindowData(WC_BUILD_TOOLBAR, TRANSPORT_ROAD);
|
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_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. */
|
/* Update the toolbar. */
|
||||||
if (e->type == VEH_ROAD) InvalidateWindowData(WC_BUILD_TOOLBAR, TRANSPORT_ROAD);
|
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_SHIP) InvalidateWindowData(WC_BUILD_TOOLBAR, TRANSPORT_WATER);
|
||||||
|
if (e->type == VEH_AIRCRAFT) InvalidateWindowData(WC_BUILD_TOOLBAR, TRANSPORT_AIR);
|
||||||
|
|
||||||
/* Close pending preview windows */
|
/* Close pending preview windows */
|
||||||
DeleteWindowById(WC_ENGINE_PREVIEW, index);
|
DeleteWindowById(WC_ENGINE_PREVIEW, index);
|
||||||
@@ -1216,7 +1218,7 @@ void CheckEngines()
|
|||||||
if ((e->flags & ENGINE_AVAILABLE) != 0 && e->company_avail != 0) return;
|
if ((e->flags & ENGINE_AVAILABLE) != 0 && e->company_avail != 0) return;
|
||||||
|
|
||||||
/* Okay, try to find the earliest date. */
|
/* 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) {
|
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_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;
|
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));
|
SetDParam(0, GetEngineCategoryName(engine));
|
||||||
size->height = GetStringHeight(STR_ENGINE_PREVIEW_MESSAGE, size->width) + WD_PAR_VSEP_WIDE + FONT_HEIGHT_NORMAL + this->vehicle_space;
|
size->height = GetStringHeight(STR_ENGINE_PREVIEW_MESSAGE, size->width) + WD_PAR_VSEP_WIDE + FONT_HEIGHT_NORMAL + this->vehicle_space;
|
||||||
SetDParam(0, engine);
|
SetDParam(0, engine);
|
||||||
|
@@ -13,6 +13,7 @@
|
|||||||
#include "strings_type.h"
|
#include "strings_type.h"
|
||||||
#include "company_type.h"
|
#include "company_type.h"
|
||||||
#include "core/geometry_type.hpp"
|
#include "core/geometry_type.hpp"
|
||||||
|
#include "guitimer_func.h"
|
||||||
|
|
||||||
struct GRFFile;
|
struct GRFFile;
|
||||||
|
|
||||||
@@ -27,7 +28,7 @@ enum WarningLevel {
|
|||||||
/** The data of the error message. */
|
/** The data of the error message. */
|
||||||
class ErrorMessageData {
|
class ErrorMessageData {
|
||||||
protected:
|
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.
|
uint64 decode_params[20]; ///< Parameters of the message strings.
|
||||||
const char *strings[20]; ///< Copies of raw strings that were used.
|
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.
|
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.
|
* @param data The data to copy.
|
||||||
*/
|
*/
|
||||||
ErrorMessageData::ErrorMessageData(const ErrorMessageData &data) :
|
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)
|
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));
|
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.
|
* @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) :
|
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_grffile(textref_stack_grffile),
|
||||||
textref_stack_size(textref_stack_size),
|
textref_stack_size(textref_stack_size),
|
||||||
summary_msg(summary_msg),
|
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);
|
if (textref_stack_size > 0) MemCpyT(this->textref_stack, textref_stack, textref_stack_size);
|
||||||
|
|
||||||
assert(summary_msg != INVALID_STRING_ID);
|
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));
|
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);
|
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_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_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);
|
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->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;
|
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;
|
break;
|
||||||
}
|
}
|
||||||
case WID_EM_FACE: {
|
case WID_EM_FACE: {
|
||||||
Dimension face_size = GetSpriteSize(SPR_GRADIENT);
|
Dimension face_size = GetSpriteSize(SPR_GRADIENT);
|
||||||
size->width = max(size->width, face_size.width);
|
size->width = std::max(size->width, face_size.width);
|
||||||
size->height = max(size->height, face_size.height);
|
size->height = std::max(size->height, face_size.height);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -317,16 +318,14 @@ public:
|
|||||||
void OnMouseLoop() override
|
void OnMouseLoop() override
|
||||||
{
|
{
|
||||||
/* Disallow closing the window too easily, if timeout is disabled */
|
/* 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->display_timer.CountElapsed(delta_ms) == 0) return;
|
||||||
if (this->duration != 0) {
|
|
||||||
this->duration--;
|
delete this;
|
||||||
if (this->duration == 0) delete this;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
~ErrmsgWindow()
|
~ErrmsgWindow()
|
||||||
@@ -341,7 +340,7 @@ public:
|
|||||||
*/
|
*/
|
||||||
bool IsCritical()
|
bool IsCritical()
|
||||||
{
|
{
|
||||||
return this->duration == 0;
|
return this->display_timer.HasElapsed();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@@ -24,7 +24,6 @@
|
|||||||
#include <pwd.h>
|
#include <pwd.h>
|
||||||
#endif
|
#endif
|
||||||
#include <sys/stat.h>
|
#include <sys/stat.h>
|
||||||
#include <algorithm>
|
|
||||||
#include <array>
|
#include <array>
|
||||||
#include <sstream>
|
#include <sstream>
|
||||||
|
|
||||||
@@ -125,7 +124,7 @@ byte FioReadByte()
|
|||||||
void FioSkipBytes(int n)
|
void FioSkipBytes(int n)
|
||||||
{
|
{
|
||||||
for (;;) {
|
for (;;) {
|
||||||
int m = min(_fio.buffer_end - _fio.buffer, n);
|
int m = std::min<int>(_fio.buffer_end - _fio.buffer, n);
|
||||||
_fio.buffer += m;
|
_fio.buffer += m;
|
||||||
n -= m;
|
n -= m;
|
||||||
if (n == 0) break;
|
if (n == 0) break;
|
||||||
@@ -898,7 +897,7 @@ bool ExtractTar(const std::string &tar_filename, Subdirectory subdir)
|
|||||||
char buffer[4096];
|
char buffer[4096];
|
||||||
size_t read;
|
size_t read;
|
||||||
for (; to_copy != 0; to_copy -= 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;
|
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
|
/* Font height is minimum height plus the difference between the default
|
||||||
* height for this font size and the small size. */
|
* height for this font size and the small size. */
|
||||||
int diff = scaled_height - ScaleFontTrad(_default_font_height[FS_SMALL]);
|
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 {
|
} else {
|
||||||
pixels = ScaleFontTrad(pixels);
|
pixels = ScaleFontTrad(pixels);
|
||||||
@@ -662,8 +662,8 @@ const Sprite *FreeTypeFontCache::InternalGetGlyph(GlyphID key, bool aa)
|
|||||||
aa = (slot->bitmap.pixel_mode == FT_PIXEL_MODE_GRAY);
|
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 */
|
/* 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 width = std::max(1U, (uint)slot->bitmap.width + (this->fs == FS_NORMAL));
|
||||||
uint height = max(1U, (uint)slot->bitmap.rows + (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. */
|
/* Limit glyph size to prevent overflows later on. */
|
||||||
if (width > 256 || height > 256) usererror("Font glyph is too large");
|
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
|
/* Font height is minimum height plus the difference between the default
|
||||||
* height for this font size and the small size. */
|
* height for this font size and the small size. */
|
||||||
int diff = scaled_height - ScaleFontTrad(_default_font_height[FS_SMALL]);
|
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);
|
SelectObject(dc, old);
|
||||||
DeleteObject(temp);
|
DeleteObject(temp);
|
||||||
@@ -859,7 +859,7 @@ void Win32FontCache::ClearFontCache()
|
|||||||
MAT2 mat = { {0, 1}, {0, 0}, {0, 0}, {0, 1} };
|
MAT2 mat = { {0, 1}, {0, 0}, {0, 0}, {0, 1} };
|
||||||
|
|
||||||
/* Make a guess for the needed memory size. */
|
/* 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);
|
byte *bmp = AllocaM(byte, size);
|
||||||
size = GetGlyphOutline(this->dc, key, GGO_GLYPH_INDEX | (aa ? GGO_GRAY8_BITMAP : GGO_BITMAP), &gm, size, bmp, &mat);
|
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. */
|
/* 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 width = std::max(1U, (uint)gm.gmBlackBoxX + (this->fs == FS_NORMAL));
|
||||||
uint height = max(1U, (uint)gm.gmBlackBoxY + (this->fs == FS_NORMAL));
|
uint height = std::max(1U, (uint)gm.gmBlackBoxY + (this->fs == FS_NORMAL));
|
||||||
|
|
||||||
/* Limit glyph size to prevent overflows later on. */
|
/* Limit glyph size to prevent overflows later on. */
|
||||||
if (width > 256 || height > 256) usererror("Font glyph is too large");
|
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,
|
* 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
|
* inclusively. To map this to 0 to 255, we shift left by two and then
|
||||||
* subtract one. */
|
* 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. */
|
/* Draw shadow for medium size. */
|
||||||
if (this->fs == FS_NORMAL && !aa) {
|
if (this->fs == FS_NORMAL && !aa) {
|
||||||
|
@@ -222,7 +222,7 @@ static const char *GetEnglishFontName(const ENUMLOGFONTEX *logfont)
|
|||||||
offset += buf[pos++];
|
offset += buf[pos++];
|
||||||
|
|
||||||
/* Don't buffer overflow */
|
/* 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];
|
for (uint j = 0; j < length; j++) font_name[j] = buf[stringOffset + offset + j];
|
||||||
font_name[length] = '\0';
|
font_name[length] = '\0';
|
||||||
|
|
||||||
|
@@ -76,7 +76,7 @@ namespace {
|
|||||||
this->prev_index = this->next_index;
|
this->prev_index = this->next_index;
|
||||||
this->next_index += 1;
|
this->next_index += 1;
|
||||||
if (this->next_index >= NUM_FRAMERATE_POINTS) this->next_index = 0;
|
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 */
|
/** 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->prev_index = this->next_index;
|
||||||
this->next_index += 1;
|
this->next_index += 1;
|
||||||
if (this->next_index >= NUM_FRAMERATE_POINTS) this->next_index = 0;
|
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_duration = 0;
|
||||||
this->acc_timestamp = start_time;
|
this->acc_timestamp = start_time;
|
||||||
@@ -115,7 +115,7 @@ namespace {
|
|||||||
/** Get average cycle processing time over a number of data points */
|
/** Get average cycle processing time over a number of data points */
|
||||||
double GetAverageDurationMilliseconds(int count)
|
double GetAverageDurationMilliseconds(int count)
|
||||||
{
|
{
|
||||||
count = min(count, this->num_valid);
|
count = std::min(count, this->num_valid);
|
||||||
|
|
||||||
int first_point = this->prev_index - count;
|
int first_point = this->prev_index - count;
|
||||||
if (first_point < 0) first_point += NUM_FRAMERATE_POINTS;
|
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_good = target * 0.95;
|
||||||
const double threshold_bad = target * 2 / 3;
|
const double threshold_bad = target * 2 / 3;
|
||||||
value = min(9999.99, value);
|
value = std::min(9999.99, value);
|
||||||
this->value = (uint32)(value * 100);
|
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;
|
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_good = target / 3;
|
||||||
const double threshold_bad = target;
|
const double threshold_bad = target;
|
||||||
value = min(9999.99, value);
|
value = std::min(9999.99, value);
|
||||||
this->value = (uint32)(value * 100);
|
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;
|
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_shortterm[PFE_MAX]; ///< cached short term average times
|
||||||
CachedDecimal times_longterm[PFE_MAX]; ///< cached long 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 constexpr int VSPACING = 3; ///< space between column heading and values
|
||||||
static const int MIN_ELEMENTS = 5; ///< smallest number of elements to display
|
static constexpr int MIN_ELEMENTS = 5; ///< smallest number of elements to display
|
||||||
|
|
||||||
FramerateWindow(WindowDesc *desc, WindowNumber number) : Window(desc)
|
FramerateWindow(WindowDesc *desc, WindowNumber number) : Window(desc)
|
||||||
{
|
{
|
||||||
@@ -435,7 +435,7 @@ struct FramerateWindow : Window {
|
|||||||
this->next_update.SetInterval(100);
|
this->next_update.SetInterval(100);
|
||||||
|
|
||||||
/* Window is always initialised to MIN_ELEMENTS height, resize to contain num_displayed */
|
/* 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
|
void OnRealtimeTick(uint delta_ms) override
|
||||||
@@ -486,7 +486,7 @@ struct FramerateWindow : Window {
|
|||||||
this->num_active = new_active;
|
this->num_active = new_active;
|
||||||
Scrollbar *sb = this->GetScrollbar(WID_FRW_SCROLLBAR);
|
Scrollbar *sb = this->GetScrollbar(WID_FRW_SCROLLBAR);
|
||||||
sb->SetCount(this->num_active);
|
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();
|
this->ReInit();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -555,7 +555,7 @@ struct FramerateWindow : Window {
|
|||||||
SetDParamStr(1, GetAIName(e - PFE_AI0));
|
SetDParamStr(1, GetAIName(e - PFE_AI0));
|
||||||
line_size = GetStringBoundingBox(STR_FRAMERATE_AI);
|
line_size = GetStringBoundingBox(STR_FRAMERATE_AI);
|
||||||
}
|
}
|
||||||
size->width = max(size->width, line_size.width);
|
size->width = std::max(size->width, line_size.width);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -567,7 +567,7 @@ struct FramerateWindow : Window {
|
|||||||
SetDParam(0, 999999);
|
SetDParam(0, 999999);
|
||||||
SetDParam(1, 2);
|
SetDParam(1, 2);
|
||||||
Dimension item_size = GetStringBoundingBox(STR_FRAMERATE_MS_GOOD);
|
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;
|
size->height += FONT_HEIGHT_NORMAL * MIN_ELEMENTS + VSPACING;
|
||||||
resize->width = 0;
|
resize->width = 0;
|
||||||
resize->height = FONT_HEIGHT_NORMAL;
|
resize->height = FONT_HEIGHT_NORMAL;
|
||||||
@@ -769,7 +769,7 @@ struct FrametimeGraphWindow : Window {
|
|||||||
Dimension size_s_label = GetStringBoundingBox(STR_FRAMERATE_GRAPH_SECONDS);
|
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 */
|
/* 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 */
|
/* Always 2:1 graph area */
|
||||||
graph_size.width = 2 * graph_size.height;
|
graph_size.width = 2 * graph_size.height;
|
||||||
*size = graph_size;
|
*size = graph_size;
|
||||||
@@ -980,7 +980,7 @@ struct FrametimeGraphWindow : Window {
|
|||||||
TextColour tc_peak = (TextColour)(TC_IS_PALETTE_COLOUR | c_peak);
|
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);
|
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);
|
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) {
|
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);
|
DrawString(x_zero, peak_point.x - 2, label_y, STR_FRAMERATE_GRAPH_MILLISECONDS, tc_peak, SA_RIGHT | SA_FORCE, false, FS_SMALL);
|
||||||
} else {
|
} else {
|
||||||
|
@@ -790,7 +790,7 @@ void GamelogInfo(LoggedAction *gamelog_action, uint gamelog_actions, uint32 *las
|
|||||||
|
|
||||||
case GLCT_REVISION:
|
case GLCT_REVISION:
|
||||||
*last_ottd_rev = lc->revision.newgrf;
|
*last_ottd_rev = lc->revision.newgrf;
|
||||||
*ever_modified = max(*ever_modified, lc->revision.modified);
|
*ever_modified = std::max(*ever_modified, lc->revision.modified);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case GLCT_GRFREM:
|
case GLCT_GRFREM:
|
||||||
|
@@ -549,7 +549,7 @@ struct GenerateLandscapeWindow : public Window {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
size->width += padding.width;
|
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
|
void DrawWidget(const Rect &r, int widget) const override
|
||||||
@@ -1270,7 +1270,7 @@ struct GenerateProgressWindow : public Window {
|
|||||||
|
|
||||||
case WID_GP_PROGRESS_TEXT:
|
case WID_GP_PROGRESS_TEXT:
|
||||||
for (uint i = 0; i < GWP_CLASS_COUNT; i++) {
|
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;
|
size->height = FONT_HEIGHT_NORMAL * 2 + WD_PAR_VSEP_NORMAL;
|
||||||
break;
|
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());
|
std::sort(intersections.begin(), intersections.end());
|
||||||
for (size_t i = 1; i < intersections.size(); i += 2) {
|
for (size_t i = 1; i < intersections.size(); i += 2) {
|
||||||
/* Check clipping. */
|
/* Check clipping. */
|
||||||
const int x1 = max(0, intersections[i - 1]);
|
const int x1 = std::max(0, intersections[i - 1]);
|
||||||
const int x2 = min(intersections[i], dpi->width);
|
const int x2 = std::min(intersections[i], dpi->width);
|
||||||
if (x2 < 0) continue;
|
if (x2 < 0) continue;
|
||||||
if (x1 >= dpi->width) 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. */
|
/* prevent integer overflows. */
|
||||||
int margin = 1;
|
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_y /= 2;
|
||||||
grade_x /= 2;
|
grade_x /= 2;
|
||||||
margin *= 2; // account for rounding errors
|
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)
|
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. */
|
/* 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. */
|
/* Funny glyphs may extent outside the usual bounds, so relax the clipping somewhat. */
|
||||||
int extra = max_height / 2;
|
int extra = max_height / 2;
|
||||||
@@ -936,8 +936,8 @@ Dimension GetSpriteSize(SpriteID sprid, Point *offset, ZoomLevel zoom)
|
|||||||
}
|
}
|
||||||
|
|
||||||
Dimension d;
|
Dimension d;
|
||||||
d.width = max<int>(0, UnScaleByZoom(sprite->x_offs + sprite->width, zoom));
|
d.width = std::max<int>(0, UnScaleByZoom(sprite->x_offs + sprite->width, zoom));
|
||||||
d.height = max<int>(0, UnScaleByZoom(sprite->y_offs + sprite->height, zoom));
|
d.height = std::max<int>(0, UnScaleByZoom(sprite->y_offs + sprite->height, zoom));
|
||||||
return d;
|
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);
|
bp.height = UnScaleByZoom(sprite->height, zoom);
|
||||||
} else {
|
} else {
|
||||||
/* Amount of pixels to clip from the source sprite */
|
/* Amount of pixels to clip from the source sprite */
|
||||||
int clip_left = max(0, -sprite->x_offs + sub->left * ZOOM_BASE );
|
int clip_left = std::max(0, -sprite->x_offs + sub->left * ZOOM_BASE );
|
||||||
int clip_top = max(0, -sprite->y_offs + sub->top * ZOOM_BASE );
|
int clip_top = std::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_right = std::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_bottom = std::max(0, sprite->height - (-sprite->y_offs + (sub->bottom + 1) * ZOOM_BASE));
|
||||||
|
|
||||||
if (clip_left + clip_right >= sprite->width) return;
|
if (clip_left + clip_right >= sprite->width) return;
|
||||||
if (clip_top + clip_bottom >= sprite->height) return;
|
if (clip_top + clip_bottom >= sprite->height) return;
|
||||||
@@ -1328,7 +1328,7 @@ byte GetDigitWidth(FontSize size)
|
|||||||
{
|
{
|
||||||
byte width = 0;
|
byte width = 0;
|
||||||
for (char c = '0'; c <= '9'; c++) {
|
for (char c = '0'; c <= '9'; c++) {
|
||||||
width = max(GetCharacterWidth(size, c), width);
|
width = std::max(GetCharacterWidth(size, c), width);
|
||||||
}
|
}
|
||||||
return 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;
|
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:
|
no_more_coalesc:
|
||||||
|
|
||||||
assert(_cur_dpi == &bk);
|
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_left = std::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_top = std::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_right = std::min<int>(_screen.width, std::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_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) {
|
if (draw_left < draw_right && draw_top < draw_bottom) {
|
||||||
DrawDirtyViewport(0, draw_left, draw_top, draw_right, draw_bottom);
|
DrawDirtyViewport(0, draw_left, draw_top, draw_right, draw_bottom);
|
||||||
}
|
}
|
||||||
@@ -2001,8 +2001,8 @@ void UpdateCursorSize()
|
|||||||
_cursor.total_offs = offs;
|
_cursor.total_offs = offs;
|
||||||
_cursor.total_size = size;
|
_cursor.total_size = size;
|
||||||
} else {
|
} else {
|
||||||
int right = max(_cursor.total_offs.x + _cursor.total_size.x, offs.x + size.x);
|
int right = std::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 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.x < _cursor.total_offs.x) _cursor.total_offs.x = offs.x;
|
||||||
if (offs.y < _cursor.total_offs.y) _cursor.total_offs.y = offs.y;
|
if (offs.y < _cursor.total_offs.y) _cursor.total_offs.y = offs.y;
|
||||||
_cursor.total_size.x = right - _cursor.total_offs.x;
|
_cursor.total_size.x = right - _cursor.total_offs.x;
|
||||||
|
@@ -431,7 +431,7 @@ int FallbackParagraphLayout::FallbackLine::GetLeading() const
|
|||||||
{
|
{
|
||||||
int leading = 0;
|
int leading = 0;
|
||||||
for (const auto &run : *this) {
|
for (const auto &run : *this) {
|
||||||
leading = max(leading, run.GetLeading());
|
leading = std::max(leading, run.GetLeading());
|
||||||
}
|
}
|
||||||
|
|
||||||
return leading;
|
return leading;
|
||||||
@@ -747,7 +747,7 @@ Dimension Layouter::GetBounds()
|
|||||||
{
|
{
|
||||||
Dimension d = { 0, 0 };
|
Dimension d = { 0, 0 };
|
||||||
for (const auto &l : *this) {
|
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();
|
d.height += l->GetLeading();
|
||||||
}
|
}
|
||||||
return d;
|
return d;
|
||||||
|
@@ -552,7 +552,7 @@ MD5File::ChecksumResult MD5File::CheckMD5(Subdirectory subdir, size_t max_size)
|
|||||||
|
|
||||||
if (f == nullptr) return CR_NO_FILE;
|
if (f == nullptr) return CR_NO_FILE;
|
||||||
|
|
||||||
size = min(size, max_size);
|
size = std::min(size, max_size);
|
||||||
|
|
||||||
Md5 checksum;
|
Md5 checksum;
|
||||||
uint8 buffer[1024];
|
uint8 buffer[1024];
|
||||||
|
@@ -291,7 +291,7 @@ struct GoalListWindow : public Window {
|
|||||||
}
|
}
|
||||||
|
|
||||||
NWidgetBase *wid = this->GetWidget<NWidgetBase>(WID_GOAL_LIST);
|
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. */
|
/* Draw goal list. */
|
||||||
this->DrawListColumn(GC_PROGRESS, wid, progress_col_width);
|
this->DrawListColumn(GC_PROGRESS, wid, progress_col_width);
|
||||||
|
@@ -110,7 +110,7 @@ struct GraphLegendWindow : Window {
|
|||||||
static NWidgetBase *MakeNWidgetCompanyLines(int *biggest_index)
|
static NWidgetBase *MakeNWidgetCompanyLines(int *biggest_index)
|
||||||
{
|
{
|
||||||
NWidgetVertical *vert = new NWidgetVertical();
|
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++) {
|
for (int widnum = WID_GL_FIRST_COMPANY; widnum <= WID_GL_LAST_COMPANY; widnum++) {
|
||||||
NWidgetBackground *panel = new NWidgetBackground(WWT_PANEL, COLOUR_GREY, widnum);
|
NWidgetBackground *panel = new NWidgetBackground(WWT_PANEL, COLOUR_GREY, widnum);
|
||||||
@@ -212,8 +212,8 @@ protected:
|
|||||||
OverflowSafeInt64 datapoint = this->cost[i][j];
|
OverflowSafeInt64 datapoint = this->cost[i][j];
|
||||||
|
|
||||||
if (datapoint != INVALID_DATAPOINT) {
|
if (datapoint != INVALID_DATAPOINT) {
|
||||||
current_interval.highest = max(current_interval.highest, datapoint);
|
current_interval.highest = std::max(current_interval.highest, datapoint);
|
||||||
current_interval.lowest = min(current_interval.lowest, 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. */
|
/* 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_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;
|
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 {
|
} else {
|
||||||
/* If both values are zero, show an empty graph. */
|
/* If both values are zero, show an empty graph. */
|
||||||
num_pos_grids = num_hori_lines / 2;
|
num_pos_grids = num_hori_lines / 2;
|
||||||
@@ -435,7 +435,7 @@ protected:
|
|||||||
* least significant bits are removed.
|
* least significant bits are removed.
|
||||||
*/
|
*/
|
||||||
int mult_range = FindLastBit(x_axis_offset) + FindLastBit(abs(datapoint));
|
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) */
|
/* Handle negative values differently (don't shift sign) */
|
||||||
if (datapoint < 0) {
|
if (datapoint < 0) {
|
||||||
@@ -496,7 +496,7 @@ public:
|
|||||||
SetDParam(0, month + STR_MONTH_ABBREV_JAN);
|
SetDParam(0, month + STR_MONTH_ABBREV_JAN);
|
||||||
SetDParam(1, month + STR_MONTH_ABBREV_JAN + 2);
|
SetDParam(1, month + STR_MONTH_ABBREV_JAN + 2);
|
||||||
SetDParam(2, year);
|
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;
|
month += 3;
|
||||||
if (month >= 12) {
|
if (month >= 12) {
|
||||||
@@ -514,9 +514,9 @@ public:
|
|||||||
SetDParam(1, INT64_MAX);
|
SetDParam(1, INT64_MAX);
|
||||||
uint y_label_width = GetStringBoundingBox(STR_GRAPH_Y_LABEL).width;
|
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->width = std::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 = std::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->height = std::max<uint>(size->height, size->width / 3);
|
||||||
}
|
}
|
||||||
|
|
||||||
void DrawWidget(const Rect &r, int widget) const override
|
void DrawWidget(const Rect &r, int widget) const override
|
||||||
@@ -568,7 +568,7 @@ public:
|
|||||||
|
|
||||||
byte nums = 0;
|
byte nums = 0;
|
||||||
for (const Company *c : Company::Iterate()) {
|
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;
|
int mo = (_cur_date_ymd.month / 3 - nums) * 3;
|
||||||
@@ -1115,7 +1115,7 @@ static const StringID _performance_titles[] = {
|
|||||||
|
|
||||||
static inline StringID GetPerformanceTitleFromValue(uint value)
|
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 {
|
class CompanyLeagueWindow : public Window {
|
||||||
@@ -1199,7 +1199,7 @@ public:
|
|||||||
|
|
||||||
this->ordinal_width = 0;
|
this->ordinal_width = 0;
|
||||||
for (uint i = 0; i < MAX_COMPANIES; i++) {
|
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
|
this->ordinal_width += 5; // Keep some extra spacing
|
||||||
|
|
||||||
@@ -1215,13 +1215,13 @@ public:
|
|||||||
|
|
||||||
Dimension d = GetSpriteSize(SPR_COMPANY_ICON);
|
Dimension d = GetSpriteSize(SPR_COMPANY_ICON);
|
||||||
this->icon_width = d.width + 2;
|
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()) {
|
for (const Company *c : Company::Iterate()) {
|
||||||
SetDParam(0, c->index);
|
SetDParam(0, c->index);
|
||||||
SetDParam(1, c->index);
|
SetDParam(1, c->index);
|
||||||
SetDParam(2, _performance_titles[widest_title]);
|
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
|
this->text_width = widest_width + 30; // Keep some extra spacing
|
||||||
@@ -1321,7 +1321,7 @@ struct PerformanceRatingDetailWindow : Window {
|
|||||||
|
|
||||||
uint score_info_width = 0;
|
uint score_info_width = 0;
|
||||||
for (uint i = SCORE_BEGIN; i < SCORE_END; i++) {
|
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);
|
SetDParamMaxValue(0, 1000);
|
||||||
score_info_width += GetStringBoundingBox(STR_BLACK_COMMA).width + WD_FRAMERECT_LEFT;
|
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. */
|
/* Get minimum max speed for this track. */
|
||||||
uint16 track_speed = u->GetMaxTrackSpeed();
|
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;
|
byte air_drag;
|
||||||
@@ -47,7 +47,7 @@ void GroundVehicle<T, Type>::PowerChanged()
|
|||||||
if (air_drag_value == 0) {
|
if (air_drag_value == 0) {
|
||||||
uint16 max_speed = v->GetDisplayMaxSpeed();
|
uint16 max_speed = v->GetDisplayMaxSpeed();
|
||||||
/* Simplification of the method used in TTDPatch. It uses <= 10 to change more steadily from 128 to 196. */
|
/* 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 {
|
} else {
|
||||||
/* According to the specs, a value of 0x01 in the air drag property means "no air drag". */
|
/* 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;
|
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);
|
ClrBit(this->vcache.cached_veh_flags, VCF_GV_ZERO_SLOPE_RESIST);
|
||||||
|
|
||||||
/* Store consist weight in cache. */
|
/* 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). */
|
/* Friction in bearings and other mechanical parts is 0.1% of the weight (result in N). */
|
||||||
this->gcache.cached_axle_resistance = 10 * weight;
|
this->gcache.cached_axle_resistance = 10 * weight;
|
||||||
|
|
||||||
@@ -201,8 +201,8 @@ GroundVehicleAcceleration GroundVehicle<T, Type>::GetAcceleration()
|
|||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
/* "Kickoff" acceleration. */
|
/* "Kickoff" acceleration. */
|
||||||
force = (mode == AS_ACCEL && !maglev) ? min(max_te, power) : power;
|
force = (mode == AS_ACCEL && !maglev) ? std::min<uint64>(max_te, power) : power;
|
||||||
force = max(force, (mass * 8) + resistance);
|
force = std::max(force, (mass * 8) + resistance);
|
||||||
braking_force = force;
|
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.
|
* @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);
|
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 /= (std::max(force, (int64)100) * this->gcache.cached_max_track_speed);
|
||||||
breakdown_factor = min((64 << 16) + (breakdown_factor * 128), 255 << 16);
|
breakdown_factor = std::min<uint64>((64 << 16) + (breakdown_factor * 128), 255 << 16);
|
||||||
if (Type == VEH_TRAIN && Train::From(this)->tcache.cached_num_engines > 1) {
|
if (Type == VEH_TRAIN && Train::From(this)->tcache.cached_num_engines > 1) {
|
||||||
/* For multiengine trains, breakdown chance is multiplied by 3 / (num_engines + 2) */
|
/* For multiengine trains, breakdown chance is multiplied by 3 / (num_engines + 2) */
|
||||||
breakdown_factor *= 3;
|
breakdown_factor *= 3;
|
||||||
breakdown_factor /= (Train::From(this)->tcache.cached_num_engines + 2);
|
breakdown_factor /= (Train::From(this)->tcache.cached_num_engines + 2);
|
||||||
}
|
}
|
||||||
/* breakdown_chance is at least 5 (5 / 128 = ~4% of the normal chance) */
|
/* 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;
|
int braking_accel;
|
||||||
@@ -250,9 +250,9 @@ GroundVehicleAcceleration GroundVehicle<T, Type>::GetAcceleration()
|
|||||||
|
|
||||||
/* Defensive driving: prevent ridiculously fast deceleration.
|
/* Defensive driving: prevent ridiculously fast deceleration.
|
||||||
* -130 corresponds to a braking distance of about 6.2 tiles from 160 km/h. */
|
* -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 {
|
} 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) {
|
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
|
* a hill will never speed up enough to (eventually) get back to the
|
||||||
* same (maximum) speed. */
|
* same (maximum) speed. */
|
||||||
int accel = ClampToI32((force - resistance) / (mass * 4));
|
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 (this->type == VEH_TRAIN) {
|
||||||
if(_settings_game.vehicle.train_acceleration_model == AM_ORIGINAL &&
|
if(_settings_game.vehicle.train_acceleration_model == AM_ORIGINAL &&
|
||||||
HasBit(Train::From(this)->flags, VRF_BREAKDOWN_POWER)) {
|
HasBit(Train::From(this)->flags, VRF_BREAKDOWN_POWER)) {
|
||||||
|
@@ -443,7 +443,7 @@ protected:
|
|||||||
this->subspeed = (byte)spd;
|
this->subspeed = (byte)spd;
|
||||||
|
|
||||||
if (!(Type == VEH_TRAIN && _settings_game.vehicle.train_braking_model == TBM_REALISTIC)) {
|
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;
|
int tempmax = max_speed;
|
||||||
@@ -460,7 +460,7 @@ protected:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if (this->breakdown_type == BREAKDOWN_LOW_SPEED) {
|
} 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 {
|
} else {
|
||||||
tempmax = this->cur_speed;
|
tempmax = this->cur_speed;
|
||||||
}
|
}
|
||||||
@@ -471,7 +471,7 @@ protected:
|
|||||||
extern void TrainBrakesOverheatedBreakdown(Vehicle *v);
|
extern void TrainBrakesOverheatedBreakdown(Vehicle *v);
|
||||||
TrainBrakesOverheatedBreakdown(this);
|
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
|
/* 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
|
* threshold for some reason. That makes acceleration fail and assertions
|
||||||
* happen in Clamp. So make it explicit that min_speed overrules the maximum
|
* happen in Clamp. So make it explicit that min_speed overrules the maximum
|
||||||
* speed by explicit ordering of min and max. */
|
* 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) {
|
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;
|
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);
|
int scaled_spd = this->GetAdvanceSpeed(this->cur_speed);
|
||||||
|
|
||||||
|
@@ -240,14 +240,14 @@ private:
|
|||||||
this->tiny_step_height = this->column_size[VGC_FOLD].height;
|
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] = 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->column_size[VGC_NAME].width = std::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->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->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->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].width = 0;
|
||||||
this->column_size[VGC_PROFIT].height = 0;
|
this->column_size[VGC_PROFIT].height = 0;
|
||||||
@@ -256,13 +256,13 @@ private:
|
|||||||
Dimension d = GetSpriteSize(profit_sprites[i]);
|
Dimension d = GetSpriteSize(profit_sprites[i]);
|
||||||
this->column_size[VGC_PROFIT] = maxdim(this->column_size[VGC_PROFIT], d);
|
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);
|
int num_vehicle = GetGroupNumVehicle(this->vli.company, ALL_GROUP, this->vli.vtype);
|
||||||
SetDParamMaxValue(0, num_vehicle, 3, FS_SMALL);
|
SetDParamMaxValue(0, num_vehicle, 3, FS_SMALL);
|
||||||
SetDParamMaxValue(1, num_vehicle, 3, FS_SMALL);
|
SetDParamMaxValue(1, num_vehicle, 3, FS_SMALL);
|
||||||
this->column_size[VGC_NUMBER] = GetStringBoundingBox(STR_GROUP_COUNT_WITH_SUBGROUP);
|
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;
|
this->tiny_step_height += WD_MATRIX_TOP;
|
||||||
|
|
||||||
@@ -466,9 +466,9 @@ public:
|
|||||||
|
|
||||||
/* ... minus the buttons at the bottom ... */
|
/* ... minus the buttons at the bottom ... */
|
||||||
uint max_icon_height = GetSpriteSize(this->GetWidget<NWidgetCore>(WID_GL_CREATE_GROUP)->widget_data).height;
|
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 = std::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 = std::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_REPLACE_PROTECTION)->widget_data).height);
|
||||||
|
|
||||||
/* ... minus the height of the group info ... */
|
/* ... minus the height of the group info ... */
|
||||||
max_icon_height += (FONT_HEIGHT_NORMAL * 3) + WD_FRAMERECT_TOP + WD_FRAMERECT_BOTTOM;
|
max_icon_height += (FONT_HEIGHT_NORMAL * 3) + WD_FRAMERECT_TOP + WD_FRAMERECT_BOTTOM;
|
||||||
@@ -675,7 +675,7 @@ public:
|
|||||||
|
|
||||||
case WID_GL_LIST_GROUP: {
|
case WID_GL_LIST_GROUP: {
|
||||||
int y1 = r.top + WD_FRAMERECT_TOP;
|
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) {
|
for (int i = this->group_sb->GetPosition(); i < max; ++i) {
|
||||||
const Group *g = this->groups[i];
|
const Group *g = this->groups[i];
|
||||||
|
|
||||||
@@ -699,7 +699,7 @@ public:
|
|||||||
if (this->vli.index != ALL_GROUP && this->grouping == GB_NONE) {
|
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) */
|
/* Mark vehicles which are in sub-groups (only if we are not using shared order coalescing) */
|
||||||
int y = r.top;
|
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) {
|
for (uint i = this->vscroll->GetPosition(); i < max; ++i) {
|
||||||
const Vehicle *v = this->vehgroups[i].GetSingleVehicle();
|
const Vehicle *v = this->vehgroups[i].GetSingleVehicle();
|
||||||
if (v->group_id != this->vli.index) {
|
if (v->group_id != this->vli.index) {
|
||||||
|
@@ -43,7 +43,7 @@ static const StringID _endgame_perf_titles[] = {
|
|||||||
|
|
||||||
StringID EndGameGetPerformanceTitleFromValue(uint value)
|
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];
|
return _endgame_perf_titles[value];
|
||||||
}
|
}
|
||||||
@@ -132,7 +132,7 @@ void SaveToHighScore()
|
|||||||
for (i = 0; i < SP_SAVED_HIGHSCORE_END; i++) {
|
for (i = 0; i < SP_SAVED_HIGHSCORE_END; i++) {
|
||||||
for (hs = _highscore_table[i]; hs != endof(_highscore_table[i]); hs++) {
|
for (hs = _highscore_table[i]; hs != endof(_highscore_table[i]); hs++) {
|
||||||
/* First character is a command character, so strlen will fail on that */
|
/* 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
|
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
|
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++) {
|
for (hs = _highscore_table[i]; hs != endof(_highscore_table[i]); hs++) {
|
||||||
byte length;
|
byte length;
|
||||||
if (fread(&length, sizeof(length), 1, fp) != 1 ||
|
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 ||
|
fread(&hs->score, sizeof(hs->score), 1, fp) != 1 ||
|
||||||
fseek(fp, 2, SEEK_CUR) == -1) { // XXX - placeholder for hs->title, not saved anymore; compatibility
|
fseek(fp, 2, SEEK_CUR) == -1) { // XXX - placeholder for hs->title, not saved anymore; compatibility
|
||||||
DEBUG(misc, 1, "Highscore corrupted");
|
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. */
|
/** Return the coordinate of the screen such that a window of 640x480 is centered at the screen. */
|
||||||
Point GetTopLeft(int x, int y)
|
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;
|
return pt;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -10,7 +10,6 @@
|
|||||||
#ifndef INDUSTRY_H
|
#ifndef INDUSTRY_H
|
||||||
#define INDUSTRY_H
|
#define INDUSTRY_H
|
||||||
|
|
||||||
#include <algorithm>
|
|
||||||
#include "newgrf_storage.h"
|
#include "newgrf_storage.h"
|
||||||
#include "subsidy_type.h"
|
#include "subsidy_type.h"
|
||||||
#include "industry_map.h"
|
#include "industry_map.h"
|
||||||
|
@@ -534,7 +534,7 @@ static bool TransportIndustryGoods(TileIndex tile)
|
|||||||
bool moved_cargo = false;
|
bool moved_cargo = false;
|
||||||
|
|
||||||
for (uint j = 0; j < lengthof(i->produced_cargo_waiting); j++) {
|
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) {
|
if (cw > indspec->minimal_cargo && i->produced_cargo[j] != CT_INVALID) {
|
||||||
i->produced_cargo_waiting[j] -= cw;
|
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_x = GB(r, 0, 8);
|
||||||
uint size_y = GB(r, 8, 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();
|
ta.ClampToMap();
|
||||||
|
|
||||||
if (ta.w == 0 || ta.h == 0) return;
|
if (ta.w == 0 || ta.h == 0) return;
|
||||||
@@ -1165,7 +1165,7 @@ static void ChopLumberMillTrees(Industry *i)
|
|||||||
|
|
||||||
TileIndex tile = i->location.tile;
|
TileIndex tile = i->location.tile;
|
||||||
if (CircularTileSearch(&tile, 40, SearchLumberMillTrees, nullptr)) { // 40x40 tiles to search.
|
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) {
|
if (amount != 0 && scale) {
|
||||||
amount = ScaleQuantity(amount, _settings_game.economy.industry_cargo_scale_factor);
|
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. */
|
/* Randomize inital production if non-original economy is used and there are no production related callbacks. */
|
||||||
if (!indspec->UsesOriginalEconomy()) {
|
if (!indspec->UsesOriginalEconomy()) {
|
||||||
for (size_t ci = 0; ci < lengthof(i->production_rate); ci++) {
|
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);
|
assert(lengthof(numof_industry_table) == ID_END);
|
||||||
uint difficulty = (_game_mode != GM_EDITOR) ? _settings_game.difficulty.industry_density : (uint)ID_VERY_LOW;
|
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,
|
/* 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. */
|
* 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)) {
|
if (GetCurrentTotalNumberOfIndustries() + max_behind >= (this->wanted_inds >> 16)) {
|
||||||
this->wanted_inds += ScaleByMapSize(NEWINDS_PER_MONTH);
|
this->wanted_inds += ScaleByMapSize(NEWINDS_PER_MONTH);
|
||||||
}
|
}
|
||||||
@@ -2425,7 +2425,7 @@ static void UpdateIndustryStatistics(Industry *i)
|
|||||||
byte pct = 0;
|
byte pct = 0;
|
||||||
if (i->this_month_production[j] != 0) {
|
if (i->this_month_production[j] != 0) {
|
||||||
i->last_prod_year = _cur_year;
|
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;
|
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 */
|
/* Rates are rounded up, so e.g. oilrig always produces some passengers */
|
||||||
for (size_t i = 0; i < lengthof(this->production_rate); i++) {
|
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);
|
const Industry *ind = PlaceIndustry(it, IACT_RANDOMCREATION, false);
|
||||||
if (ind == nullptr) {
|
if (ind == nullptr) {
|
||||||
this->builddata[it].wait_count = this->builddata[it].max_wait + 1; // Compensate for decrementing below.
|
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 {
|
} else {
|
||||||
AdvertiseIndustryOpening(ind);
|
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,
|
/* 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. */
|
* determined by mult value. If mult = 1 prod. increases, else (-1) it decreases. */
|
||||||
if (Chance16I(1, 22, r >> 16)) {
|
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" */
|
/* 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 */
|
/* Increase if needed */
|
||||||
while (mul-- != 0 && i->prod_level < PRODLEVEL_MAXIMUM) {
|
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;
|
recalculate_multipliers = true;
|
||||||
if (str == STR_NULL) str = indspec->production_up_text;
|
if (str == STR_NULL) str = indspec->production_up_text;
|
||||||
}
|
}
|
||||||
@@ -2878,7 +2878,7 @@ static void ChangeIndustryProduction(Industry *i, bool monthly)
|
|||||||
closeit = true;
|
closeit = true;
|
||||||
break;
|
break;
|
||||||
} else {
|
} 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;
|
recalculate_multipliers = true;
|
||||||
if (str == STR_NULL) str = indspec->production_down_text;
|
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.
|
uint perc = 3; // Between 3% and 9% chance of creating a new industry.
|
||||||
if ((_industry_builder.wanted_inds >> 16) > GetCurrentTotalNumberOfIndustries()) {
|
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++) {
|
for (uint16 j = 0; j < change_loop; j++) {
|
||||||
if (Chance16(perc, 100)) {
|
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);
|
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());
|
Dimension strdim = GetStringBoundingBox(cargostring.c_str());
|
||||||
if (strdim.width > max_minwidth) {
|
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;
|
strdim.width = max_minwidth;
|
||||||
}
|
}
|
||||||
d = maxdim(d, strdim);
|
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);
|
cargostring = this->MakeCargoListString(indsp->produced_cargo, cargo_suffix, lengthof(indsp->produced_cargo), STR_INDUSTRY_VIEW_PRODUCES_N_CARGO);
|
||||||
strdim = GetStringBoundingBox(cargostring.c_str());
|
strdim = GetStringBoundingBox(cargostring.c_str());
|
||||||
if (strdim.width > max_minwidth) {
|
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;
|
strdim.width = max_minwidth;
|
||||||
}
|
}
|
||||||
d = maxdim(d, strdim);
|
d = maxdim(d, strdim);
|
||||||
@@ -966,22 +966,22 @@ public:
|
|||||||
case EA_MULTIPLIER:
|
case EA_MULTIPLIER:
|
||||||
if (button == 1) {
|
if (button == 1) {
|
||||||
if (i->prod_level <= PRODLEVEL_MINIMUM) return;
|
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 {
|
} else {
|
||||||
if (i->prod_level >= PRODLEVEL_MAXIMUM) return;
|
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;
|
break;
|
||||||
|
|
||||||
case EA_RATE:
|
case EA_RATE:
|
||||||
if (button == 1) {
|
if (button == 1) {
|
||||||
if (i->production_rate[line - IL_RATE1] <= 0) return;
|
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 {
|
} else {
|
||||||
if (i->production_rate[line - IL_RATE1] >= 255) return;
|
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 */
|
/* 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;
|
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;
|
break;
|
||||||
|
|
||||||
@@ -1468,7 +1468,7 @@ protected:
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Display first 3 cargos */
|
/* 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];
|
CargoInfo ci = cargos[j];
|
||||||
SetDParam(p++, STR_INDUSTRY_DIRECTORY_ITEM_INFO);
|
SetDParam(p++, STR_INDUSTRY_DIRECTORY_ITEM_INFO);
|
||||||
SetDParam(p++, std::get<0>(ci));
|
SetDParam(p++, std::get<0>(ci));
|
||||||
@@ -2399,10 +2399,10 @@ struct IndustryCargoesWindow : public Window {
|
|||||||
const IndustrySpec *indsp = GetIndustrySpec(it);
|
const IndustrySpec *indsp = GetIndustrySpec(it);
|
||||||
if (!indsp->enabled) continue;
|
if (!indsp->enabled) continue;
|
||||||
this->ind_textsize = maxdim(this->ind_textsize, GetStringBoundingBox(indsp->name));
|
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 = std::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->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;
|
d.height = this->ind_textsize.height;
|
||||||
this->ind_textsize = maxdim(this->ind_textsize, GetStringBoundingBox(STR_INDUSTRY_CARGOES_SELECT_INDUSTRY));
|
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;
|
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. */
|
/* 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;
|
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::industry_width = d.width;
|
||||||
CargoesField::normal_height = d.height + CargoesField::VERT_INTER_INDUSTRY_SPACE;
|
CargoesField::normal_height = d.height + CargoesField::VERT_INTER_INDUSTRY_SPACE;
|
||||||
@@ -2437,11 +2437,11 @@ struct IndustryCargoesWindow : public Window {
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case WID_IC_IND_DROPDOWN:
|
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;
|
break;
|
||||||
|
|
||||||
case WID_IC_CARGO_DROPDOWN:
|
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;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -2646,7 +2646,7 @@ struct IndustryCargoesWindow : public Window {
|
|||||||
/* Make a field consisting of two cargo columns. */
|
/* 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_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_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++) {
|
for (int i = 0; i < num_indrows; i++) {
|
||||||
CargoesRow &row = this->fields.emplace_back();
|
CargoesRow &row = this->fields.emplace_back();
|
||||||
row.columns[0].MakeEmpty(CFT_EMPTY);
|
row.columns[0].MakeEmpty(CFT_EMPTY);
|
||||||
@@ -2722,7 +2722,7 @@ struct IndustryCargoesWindow : public Window {
|
|||||||
bool houses_accept = HousesCanAccept(&cid, 1);
|
bool houses_accept = HousesCanAccept(&cid, 1);
|
||||||
int num_supp = CountMatchingProducingIndustries(&cid, 1) + houses_supply + 1; // Ensure room for the cargo label.
|
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_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++) {
|
for (int i = 0; i < num_indrows; i++) {
|
||||||
CargoesRow &row = this->fields.emplace_back();
|
CargoesRow &row = this->fields.emplace_back();
|
||||||
row.columns[0].MakeEmpty(CFT_EMPTY);
|
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);
|
Company *c = Company::Get(v->owner);
|
||||||
if (!_settings_game.economy.sharing_payment_in_debt) {
|
if (!_settings_game.economy.sharing_payment_in_debt) {
|
||||||
/* Do not allow fee payment to drop (money - loan) below 0. */
|
/* 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;
|
if (cost <= 0) return;
|
||||||
}
|
}
|
||||||
v->profit_this_year -= cost;
|
v->profit_this_year -= cost;
|
||||||
|
@@ -232,7 +232,7 @@ void IniLoadFile::LoadFromDisk(const std::string &filename, Subdirectory subdir,
|
|||||||
uint a = comment_alloc;
|
uint a = comment_alloc;
|
||||||
/* add to comment */
|
/* add to comment */
|
||||||
if (ns > a) {
|
if (ns > a) {
|
||||||
a = max(a, 128U);
|
a = std::max(a, 128U);
|
||||||
do a *= 2; while (a < ns);
|
do a *= 2; while (a < ns);
|
||||||
comment = ReallocT(comment, comment_alloc = a);
|
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. */
|
* So give it a z-malus of 4 in the first iterations. */
|
||||||
int z = 0;
|
int z = 0;
|
||||||
if (clamp_to_map) {
|
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 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 + max(z, m) - m, min_coord, max_x), Clamp(pt.y + max(z, m) - m, 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;
|
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 {
|
} 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 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 + max(z, m) - m, pt.y + max(z, m) - m) / 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;
|
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 i = 0; i < SNOW_LINE_MONTHS; i++) {
|
||||||
for (uint j = 0; j < SNOW_LINE_DAYS; j++) {
|
for (uint j = 0; j < SNOW_LINE_DAYS; j++) {
|
||||||
_snow_line->highest_value = max(_snow_line->highest_value, table[i][j]);
|
_snow_line->highest_value = std::max(_snow_line->highest_value, table[i][j]);
|
||||||
_snow_line->lowest_value = min(_snow_line->lowest_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
|
# Cheat window
|
||||||
STR_CHEATS :{WHITE}Kullery
|
STR_CHEATS :{WHITE}Kullery
|
||||||
STR_CHEATS_TOOLTIP :{BLACK}Keuseblokkies wys aan as jy die kulkode voorheen gebruik het
|
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_MONEY :{LTBLUE}Vermeerder geld met {CURRENCY_LONG}
|
||||||
STR_CHEAT_CHANGE_COMPANY :{LTBLUE}Speel as maatskappy: {ORANGE}{COMMA}
|
STR_CHEAT_CHANGE_COMPANY :{LTBLUE}Speel as maatskappy: {ORANGE}{COMMA}
|
||||||
STR_CHEAT_EXTRA_DYNAMITE :{LTBLUE}Tower stootskraper (verwyder nywerhede, onbeweegbare voorwerpe): {ORANGE}{STRING}
|
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_CAPTION :{WHITE}Verbind roetebaken
|
||||||
STR_JOIN_WAYPOINT_CREATE_SPLITTED_WAYPOINT :{YELLOW}Bou 'n aparte roetebaken
|
STR_JOIN_WAYPOINT_CREATE_SPLITTED_WAYPOINT :{YELLOW}Bou 'n aparte roetebaken
|
||||||
|
|
||||||
|
# Generic toolbar
|
||||||
|
|
||||||
# Rail construction toolbar
|
# Rail construction toolbar
|
||||||
STR_RAIL_TOOLBAR_RAILROAD_CONSTRUCTION_CAPTION :Spoorwegkonstruksie
|
STR_RAIL_TOOLBAR_RAILROAD_CONSTRUCTION_CAPTION :Spoorwegkonstruksie
|
||||||
STR_RAIL_TOOLBAR_ELRAIL_CONSTRUCTION_CAPTION :Elektriese 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_IMPERIAL :{COMMA}{NBSP}ميل/س
|
||||||
STR_UNITS_VELOCITY_METRIC :{COMMA}{NBSP}كم/س
|
STR_UNITS_VELOCITY_METRIC :{COMMA}{NBSP}كم/س
|
||||||
STR_UNITS_VELOCITY_SI :{COMMA}{NBSP}م/ث
|
STR_UNITS_VELOCITY_SI :{COMMA}{NBSP}م/ث
|
||||||
|
STR_UNITS_VELOCITY_GAMEUNITS :{DECIMAL}{NBSP}مربعات/ اليوم
|
||||||
|
|
||||||
STR_UNITS_POWER_IMPERIAL :{COMMA}{NBSP}حصان
|
STR_UNITS_POWER_IMPERIAL :{COMMA}{NBSP}حصان
|
||||||
STR_UNITS_POWER_METRIC :{COMMA}{NBSP}حصان
|
STR_UNITS_POWER_METRIC :{COMMA}{NBSP}حصان
|
||||||
@@ -226,6 +227,7 @@ STR_TOOLTIP_FILTER_CRITERIA :{BLACK}حدد
|
|||||||
STR_BUTTON_SORT_BY :{BLACK} رتب بـ
|
STR_BUTTON_SORT_BY :{BLACK} رتب بـ
|
||||||
STR_BUTTON_LOCATION :{BLACK}الموقع
|
STR_BUTTON_LOCATION :{BLACK}الموقع
|
||||||
STR_BUTTON_RENAME :{BLACK}اعادة تسمية
|
STR_BUTTON_RENAME :{BLACK}اعادة تسمية
|
||||||
|
STR_BUTTON_CATCHMENT :{BLACK}مدى التغطية
|
||||||
|
|
||||||
STR_TOOLTIP_CLOSE_WINDOW :{BLACK}اغلاق الاطار
|
STR_TOOLTIP_CLOSE_WINDOW :{BLACK}اغلاق الاطار
|
||||||
STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS :{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_SKK :كرونا سلوفاكية (SKK)
|
||||||
STR_GAME_OPTIONS_CURRENCY_BRL :ريال برازيلي (BRL)
|
STR_GAME_OPTIONS_CURRENCY_BRL :ريال برازيلي (BRL)
|
||||||
STR_GAME_OPTIONS_CURRENCY_EEK :كرونا استونية (EEK)
|
STR_GAME_OPTIONS_CURRENCY_EEK :كرونا استونية (EEK)
|
||||||
|
STR_GAME_OPTIONS_CURRENCY_KRW :وون كوريا الجنوبية (KRW)
|
||||||
|
STR_GAME_OPTIONS_CURRENCY_ZAR :راند جنوب أفريقيا (ZAR)
|
||||||
STR_GAME_OPTIONS_CURRENCY_CUSTOM :مخصص ...
|
STR_GAME_OPTIONS_CURRENCY_CUSTOM :مخصص ...
|
||||||
############ end of currency region
|
############ end of currency region
|
||||||
|
|
||||||
@@ -1088,6 +1092,7 @@ STR_CONFIG_SETTING_AUTOSLOPE :السماح ب
|
|||||||
STR_CONFIG_SETTING_CATCHMENT :السماح بحدود اكثر واقعية للمحطات بحسب الحجم: {STRING}
|
STR_CONFIG_SETTING_CATCHMENT :السماح بحدود اكثر واقعية للمحطات بحسب الحجم: {STRING}
|
||||||
STR_CONFIG_SETTING_EXTRADYNAMITE :السماح بحذف اكثر من الطرق المملوكة للمدينة و الجسور و غيرها: {STRING}
|
STR_CONFIG_SETTING_EXTRADYNAMITE :السماح بحذف اكثر من الطرق المملوكة للمدينة و الجسور و غيرها: {STRING}
|
||||||
STR_CONFIG_SETTING_SMOKE_AMOUNT :كمية دخان/شرار القطارات:{STRING}
|
STR_CONFIG_SETTING_SMOKE_AMOUNT :كمية دخان/شرار القطارات:{STRING}
|
||||||
|
STR_CONFIG_SETTING_SMOKE_AMOUNT_HELPTEXT :حدد مقدار الدخان أو عدد الشرارت من المركبات
|
||||||
STR_CONFIG_SETTING_TRAIN_ACCELERATION_MODEL :موديل تسارع القطارات: {STRING}
|
STR_CONFIG_SETTING_TRAIN_ACCELERATION_MODEL :موديل تسارع القطارات: {STRING}
|
||||||
STR_CONFIG_SETTING_ROAD_VEHICLE_ACCELERATION_MODEL :نمط تسارع عربات الطريق: {STRING}
|
STR_CONFIG_SETTING_ROAD_VEHICLE_ACCELERATION_MODEL :نمط تسارع عربات الطريق: {STRING}
|
||||||
STR_CONFIG_SETTING_FORBID_90_DEG :منع القطارات والسفن من الدوران بزاوية تسعين درجة : {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_NORMAL :ككل المصانع الأخرى
|
||||||
STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_PROSPECTING :تنقيب
|
STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_PROSPECTING :تنقيب
|
||||||
STR_CONFIG_SETTING_MULTIPINDTOWN :السماح بوجود أكثر من مصنع من نفس النوع في المدينة الواحدة: {STRING}
|
STR_CONFIG_SETTING_MULTIPINDTOWN :السماح بوجود أكثر من مصنع من نفس النوع في المدينة الواحدة: {STRING}
|
||||||
|
STR_CONFIG_SETTING_SIGNALSIDE_DRIVING_SIDE :على جانب القيادة
|
||||||
STR_CONFIG_SETTING_SHOWFINANCES :أعرض نافذة المالية في آخر السنة: {STRING}
|
STR_CONFIG_SETTING_SHOWFINANCES :أعرض نافذة المالية في آخر السنة: {STRING}
|
||||||
STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT :الامر الجديد - بدون توقف - قياسيا: {STRING}
|
STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT :الامر الجديد - بدون توقف - قياسيا: {STRING}
|
||||||
STR_CONFIG_SETTING_STOP_LOCATION :اوامر القطار الجديدة تتوقف قياسيا في {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_PLANE_CRASHES_NORMAL :طبيعي
|
||||||
STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD :السماح للعربات بالعبور خلال المواقف المملوكة داخل المدن: {STRING}
|
STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD :السماح للعربات بالعبور خلال المواقف المملوكة داخل المدن: {STRING}
|
||||||
STR_CONFIG_SETTING_STOP_ON_COMPETITOR_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_DYNAMIC_ENGINES_EXISTING_VEHICLES :{WHITE}تغير هذا الخيار غير متاح عندما يكون هناك عربات
|
||||||
STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE :صيانة البنية التحتية: {STRING}
|
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_TRAINS :الحد الأعلى لعدد القطارات لكل شركة: {STRING}
|
||||||
STR_CONFIG_SETTING_MAX_ROAD_VEHICLES :الحد الأعلى لعدد العربات لكل شركة: {STRING}
|
STR_CONFIG_SETTING_MAX_ROAD_VEHICLES :الحد الأعلى لعدد العربات لكل شركة: {STRING}
|
||||||
STR_CONFIG_SETTING_MAX_AIRCRAFT :الحد الأعلى لعدد الطائرات لكل شركة: {STRING}
|
STR_CONFIG_SETTING_MAX_AIRCRAFT :الحد الأعلى لعدد الطائرات لكل شركة: {STRING}
|
||||||
|
STR_CONFIG_SETTING_MAX_AIRCRAFT_HELPTEXT :الحد الأقصى لعدد الطائرات التي يمكن أن تمتلكها الشركة
|
||||||
STR_CONFIG_SETTING_MAX_SHIPS :الحد الأعلى لعدد السفن لكل شركة: {STRING}
|
STR_CONFIG_SETTING_MAX_SHIPS :الحد الأعلى لعدد السفن لكل شركة: {STRING}
|
||||||
|
|
||||||
STR_CONFIG_SETTING_AI_BUILDS_TRAINS :حظر القطارات على الحاسوب: {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_AIRCRAFT :حظر الطائرات على الحاسوب: {STRING}
|
||||||
STR_CONFIG_SETTING_AI_BUILDS_SHIPS :حظر السفن على الحاسوب: {STRING}
|
STR_CONFIG_SETTING_AI_BUILDS_SHIPS :حظر السفن على الحاسوب: {STRING}
|
||||||
|
|
||||||
|
STR_CONFIG_SETTING_AI_PROFILE_EASY :سهل
|
||||||
|
|
||||||
STR_CONFIG_SETTING_AI_IN_MULTIPLAYER :السماح بالذكاء الصناعي في اللعب الجماعي : {STRING}
|
STR_CONFIG_SETTING_AI_IN_MULTIPLAYER :السماح بالذكاء الصناعي في اللعب الجماعي : {STRING}
|
||||||
STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES :#opcodes قبل تعليق الاسكربت: {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_COLOURED_NEWS_YEAR :الاخبار الملونة تظهر في: {STRING}
|
||||||
STR_CONFIG_SETTING_STARTING_YEAR :سنة البدايه: {STRING}
|
STR_CONFIG_SETTING_STARTING_YEAR :سنة البدايه: {STRING}
|
||||||
|
STR_CONFIG_SETTING_ENDING_YEAR_ZERO :لا تنتهي
|
||||||
STR_CONFIG_SETTING_ALLOW_SHARES :السماح بشراء حصص من الشركات الاخرى: {STRING}
|
STR_CONFIG_SETTING_ALLOW_SHARES :السماح بشراء حصص من الشركات الاخرى: {STRING}
|
||||||
STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE :اتاحة استخدام الأشارات بالأعلام قبل :{STRING}
|
STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE :اتاحة استخدام الأشارات بالأعلام قبل :{STRING}
|
||||||
STR_CONFIG_SETTING_ENABLE_SIGNAL_GUI :السماح باستخدام اشارات واجهة المستخدم الرسومية: {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_TOWN_GROWTH_VERY_FAST :سريع جدا
|
||||||
STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER :مضاعف المدن المبدئي: {STRING}
|
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 :م) متري)
|
STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_METRIC :م) متري)
|
||||||
|
|
||||||
@@ -1442,7 +1456,6 @@ STR_ABANDON_SCENARIO_QUERY :{YELLOW}هل ت
|
|||||||
# Cheat window
|
# Cheat window
|
||||||
STR_CHEATS :{WHITE}اسرار
|
STR_CHEATS :{WHITE}اسرار
|
||||||
STR_CHEATS_TOOLTIP :{BLACK}علامة صح اذا استخدمت هذا السرمن قبل
|
STR_CHEATS_TOOLTIP :{BLACK}علامة صح اذا استخدمت هذا السرمن قبل
|
||||||
STR_CHEATS_WARNING :{BLACK}تحذير! انت على وشك ان تغش منافسيك. إعلم انهم سيتذكرون عليك هذا العار للإبد
|
|
||||||
STR_CHEAT_MONEY :{LTBLUE}زيادة السيولة بـ {CURRENCY_LONG}
|
STR_CHEAT_MONEY :{LTBLUE}زيادة السيولة بـ {CURRENCY_LONG}
|
||||||
STR_CHEAT_CHANGE_COMPANY :{LTBLUE}العب كشركة{ORANGE}{COMMA}
|
STR_CHEAT_CHANGE_COMPANY :{LTBLUE}العب كشركة{ORANGE}{COMMA}
|
||||||
STR_CHEAT_EXTRA_DYNAMITE :{LTBLUE}الجرافة السحرية - لازالة المصانع و الاجسام غير القابلة للازالة.{ORANGE}{STRING}
|
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_SELECT_UPDATES_CAPTION_TOOLTIP :{BLACK} ضع علامة على التحديثات للمحتويات الموجودة و التي سيتم تحميلها
|
||||||
STR_CONTENT_UNSELECT_ALL_CAPTION :{BLACK} مسح الكل
|
STR_CONTENT_UNSELECT_ALL_CAPTION :{BLACK} مسح الكل
|
||||||
STR_CONTENT_UNSELECT_ALL_CAPTION_TOOLTIP :{BLACK} ضع علامة على المحتوى التي لن يتم تحميلها
|
STR_CONTENT_UNSELECT_ALL_CAPTION_TOOLTIP :{BLACK} ضع علامة على المحتوى التي لن يتم تحميلها
|
||||||
|
STR_CONTENT_SEARCH_EXTERNAL :{BLACK}بحث المواقع الخارجية
|
||||||
STR_CONTENT_FILTER_TITLE :{BLACK}مُرَشِح:
|
STR_CONTENT_FILTER_TITLE :{BLACK}مُرَشِح:
|
||||||
STR_CONTENT_DOWNLOAD_CAPTION :{BLACK} تحميل
|
STR_CONTENT_DOWNLOAD_CAPTION :{BLACK} تحميل
|
||||||
STR_CONTENT_DOWNLOAD_CAPTION_TOOLTIP :{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_CAPTION :{WHITE}اربط نقطة العبور
|
||||||
STR_JOIN_WAYPOINT_CREATE_SPLITTED_WAYPOINT :{YELLOW} ابني نقطة عبور مستقلة
|
STR_JOIN_WAYPOINT_CREATE_SPLITTED_WAYPOINT :{YELLOW} ابني نقطة عبور مستقلة
|
||||||
|
|
||||||
|
# Generic toolbar
|
||||||
|
|
||||||
# Rail construction toolbar
|
# Rail construction toolbar
|
||||||
STR_RAIL_TOOLBAR_RAILROAD_CONSTRUCTION_CAPTION :بناء السكك الحديدية
|
STR_RAIL_TOOLBAR_RAILROAD_CONSTRUCTION_CAPTION :بناء السكك الحديدية
|
||||||
STR_RAIL_TOOLBAR_ELRAIL_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_ACCEPTED :{BLACK}الشحنة المقبولة: {LTBLUE}
|
||||||
STR_LAND_AREA_INFORMATION_CARGO_EIGHTS :({COMMA} /8 {STRING})
|
STR_LAND_AREA_INFORMATION_CARGO_EIGHTS :({COMMA} /8 {STRING})
|
||||||
STR_LANG_AREA_INFORMATION_ROAD_TYPE :{BLACK}:نوع الطريق {LTBLUE}{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_RAIL_SPEED_LIMIT :{BLACK}حدود سرعة سكة الحديد: {LTBLUE}{VELOCITY}
|
||||||
STR_LANG_AREA_INFORMATION_ROAD_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} فريق النسخة المفتوحة
|
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}النسخة المفتوحة {COPYRIGHT}2002-{STRING} فريق النسخة المفتوحة
|
||||||
|
|
||||||
# Framerate display window
|
# Framerate display window
|
||||||
|
STR_FRAMERATE_FPS_GOOD :{LTBLUE}{DECIMAL} صورة في الثانية
|
||||||
############ Leave those lines in this order!!
|
############ Leave those lines in this order!!
|
||||||
|
STR_FRAMERATE_AI :{BLACK} AI {NUM} {STRING}
|
||||||
############ End of leave-in-this-order
|
############ End of leave-in-this-order
|
||||||
############ Leave those lines in this order!!
|
############ Leave those lines in this order!!
|
||||||
|
STR_FRAMETIME_CAPTION_GAMESCRIPT :كتابة اللعبة
|
||||||
############ End of leave-in-this-order
|
############ End of leave-in-this-order
|
||||||
|
|
||||||
|
|
||||||
@@ -2329,6 +2349,7 @@ STR_SAVELOAD_DETAIL_CAPTION :{BLACK}تفاص
|
|||||||
STR_SAVELOAD_DETAIL_NOT_AVAILABLE :{BLACK}لا توجد معلومات متاحة
|
STR_SAVELOAD_DETAIL_NOT_AVAILABLE :{BLACK}لا توجد معلومات متاحة
|
||||||
STR_SAVELOAD_DETAIL_COMPANY_INDEX :{SILVER}{COMMA}: {WHITE}{STRING}
|
STR_SAVELOAD_DETAIL_COMPANY_INDEX :{SILVER}{COMMA}: {WHITE}{STRING}
|
||||||
STR_SAVELOAD_DETAIL_GRFSTATUS :{SILVER}اضافات جديدة: {WHITE}{STRING}
|
STR_SAVELOAD_DETAIL_GRFSTATUS :{SILVER}اضافات جديدة: {WHITE}{STRING}
|
||||||
|
STR_SAVELOAD_OVERWRITE_TITLE :{WHITE}الكتابة على الملف
|
||||||
|
|
||||||
STR_SAVELOAD_OSKTITLE :{BLACK}ادخل اسم الحفظ للعبة
|
STR_SAVELOAD_OSKTITLE :{BLACK}ادخل اسم الحفظ للعبة
|
||||||
|
|
||||||
@@ -2639,6 +2660,7 @@ STR_GOAL_QUESTION_CAPTION_WARNING :تحذير
|
|||||||
STR_GOAL_QUESTION_CAPTION_ERROR :خطا
|
STR_GOAL_QUESTION_CAPTION_ERROR :خطا
|
||||||
|
|
||||||
############ Start of Goal Question button list
|
############ Start of Goal Question button list
|
||||||
|
STR_GOAL_QUESTION_BUTTON_RETRY :إعادة المحاولة
|
||||||
############ End of Goal Question button list
|
############ End of Goal Question button list
|
||||||
|
|
||||||
# Subsidies window
|
# Subsidies window
|
||||||
@@ -2651,6 +2673,7 @@ STR_SUBSIDIES_SUBSIDISED_FROM_TO :{ORANGE}{STRING
|
|||||||
STR_SUBSIDIES_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}اضغط على الخدمة لتوسيط الخريطة على المصنع/المدينة. اضغط + كنترول لفتح شاشة عرض جديدة للمدينة.
|
STR_SUBSIDIES_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}اضغط على الخدمة لتوسيط الخريطة على المصنع/المدينة. اضغط + كنترول لفتح شاشة عرض جديدة للمدينة.
|
||||||
|
|
||||||
# Story book window
|
# Story book window
|
||||||
|
STR_STORY_BOOK_CAPTION :{WHITE}{COMPANY}كتاب القصة
|
||||||
|
|
||||||
# Station list window
|
# Station list window
|
||||||
STR_STATION_LIST_TOOLTIP :{BLACK}اسم المحطة - اضغط على اسم المحطة لتوسيطها في الشاشة. اضغط + كنترول لفتح شاشة عرض جديدة بمنطقة المحطة.
|
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_BUTTON :{BLACK}معدل النقل
|
||||||
STR_STATION_VIEW_RATINGS_TOOLTIP :{BLACK}اظهار معدل النقل للمحطة
|
STR_STATION_VIEW_RATINGS_TOOLTIP :{BLACK}اظهار معدل النقل للمحطة
|
||||||
|
|
||||||
|
STR_STATION_VIEW_WAITING_AMOUNT :الكمية: في الانتظار
|
||||||
|
|
||||||
|
|
||||||
############ range for rating starts
|
############ range for rating starts
|
||||||
@@ -2787,7 +2811,9 @@ STR_BUY_COMPANY_MESSAGE :{WHITE}نحن
|
|||||||
STR_INDUSTRY_DIRECTORY_CAPTION :{WHITE}صناعات
|
STR_INDUSTRY_DIRECTORY_CAPTION :{WHITE}صناعات
|
||||||
STR_INDUSTRY_DIRECTORY_NONE :{ORANGE}-بدون-
|
STR_INDUSTRY_DIRECTORY_NONE :{ORANGE}-بدون-
|
||||||
STR_INDUSTRY_DIRECTORY_ITEM_NOPROD :{ORANGE}{INDUSTRY}
|
STR_INDUSTRY_DIRECTORY_ITEM_NOPROD :{ORANGE}{INDUSTRY}
|
||||||
|
STR_INDUSTRY_DIRECTORY_ITEM_PROD1 :{ORANGE}{INDUSTRY} {STRING}
|
||||||
STR_INDUSTRY_DIRECTORY_LIST_CAPTION :{BLACK}اسماء المصانع - اضغط على اسم المصنع لتوسيط الشاشة عليه. اضغط + كنترول لفتح شاشة عرض جديدة لمنطقة المصنع.
|
STR_INDUSTRY_DIRECTORY_LIST_CAPTION :{BLACK}اسماء المصانع - اضغط على اسم المصنع لتوسيط الشاشة عليه. اضغط + كنترول لفتح شاشة عرض جديدة لمنطقة المصنع.
|
||||||
|
STR_INDUSTRY_DIRECTORY_FILTER_NONE :بدون
|
||||||
|
|
||||||
# Industry view
|
# Industry view
|
||||||
STR_INDUSTRY_VIEW_CAPTION :{WHITE}{INDUSTRY}
|
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_PWAGPOWER_PWAGWEIGHT :{BLACK} العربات ذات الطاقة: {GOLD}+{POWER}{BLACK} الوزن: {GOLD}+{WEIGHT_SHORT}
|
||||||
STR_PURCHASE_INFO_REFITTABLE_TO :{BLACK}يمكن تعديلها الى: {GOLD}{STRING}
|
STR_PURCHASE_INFO_REFITTABLE_TO :{BLACK}يمكن تعديلها الى: {GOLD}{STRING}
|
||||||
STR_PURCHASE_INFO_ALL_TYPES :كل انواع الحمولة
|
STR_PURCHASE_INFO_ALL_TYPES :كل انواع الحمولة
|
||||||
|
STR_PURCHASE_INFO_NONE :بدون
|
||||||
STR_PURCHASE_INFO_ALL_BUT :الكل الا {CARGO_LIST}
|
STR_PURCHASE_INFO_ALL_BUT :الكل الا {CARGO_LIST}
|
||||||
STR_PURCHASE_INFO_MAX_TE :{BLACK}تأثير الجذب القصى: {GOLD}{FORCE}
|
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_RENAME_TOOLTIP :{BLACK}اعادة تسمية نوع الطائرة
|
||||||
|
|
||||||
|
|
||||||
|
STR_BUY_VEHICLE_AIRCRAFT_SHOW_TOGGLE_BUTTON :{BLACK}عرض
|
||||||
|
|
||||||
STR_BUY_VEHICLE_AIRCRAFT_HIDE_SHOW_TOGGLE_TOOLTIP :{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_CAPTION :{WHITE}{VEHICLE} (تغيير)
|
||||||
STR_REFIT_TITLE :{GOLD}اختر نوع الحمولة ...
|
STR_REFIT_TITLE :{GOLD}اختر نوع الحمولة ...
|
||||||
STR_REFIT_NEW_CAPACITY_COST_OF_REFIT :{BLACK}السعة الجديدة: {GOLD}{CARGO_LONG}{}{BLACK}تكلفة التغيير: {RED}{CURRENCY_LONG}
|
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_NEW_CAPACITY_COST_OF_AIRCRAFT_REFIT :{BLACK}السعة الجديدة: {GOLD}{CARGO_LONG}, {GOLD}{CARGO_LONG}{}{BLACK}تكلفة اعادة التهيئة: {RED}{CURRENCY_LONG}
|
||||||
STR_REFIT_SELECT_VEHICLES_TOOLTIP :{BLACK}اختر العربة لاعادة تهيئتها. اسحب بالفارة لاختيار عدة عربات. اضغط على مساحة خالية لاختيار كل العربات. اضغط + كنترول لاختيار العربة الحالية وما بعدها.
|
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 :{BLACK} الغاء
|
||||||
STR_AI_LIST_CANCEL_TOOLTIP :{BLACK} لا تغير الذكاء الصناعي
|
STR_AI_LIST_CANCEL_TOOLTIP :{BLACK} لا تغير الذكاء الصناعي
|
||||||
|
|
||||||
|
STR_SCREENSHOT_ZOOMIN_SCREENSHOT :{BLACK}التقط لقطة شاشة كاملة
|
||||||
|
|
||||||
# AI Parameters
|
# AI Parameters
|
||||||
STR_AI_SETTINGS_CLOSE :{BLACK} اغلاق
|
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_CAN_T_REMOVE_TRAMWAY_FROM :{WHITE}تعذر إزاله سكه الترام من هنا...
|
||||||
STR_ERROR_THERE_IS_NO_ROAD :{WHITE}... لا يوجد طريق
|
STR_ERROR_THERE_IS_NO_ROAD :{WHITE}... لا يوجد طريق
|
||||||
STR_ERROR_THERE_IS_NO_TRAMWAY :{WHITE}... لا يوجد سكه ترام هنا
|
STR_ERROR_THERE_IS_NO_TRAMWAY :{WHITE}... لا يوجد سكه ترام هنا
|
||||||
|
STR_ERROR_NO_SUITABLE_TRAMWAY :{WHITE}لا يوجد ترام مناسب
|
||||||
|
|
||||||
# Waterway construction errors
|
# Waterway construction errors
|
||||||
STR_ERROR_CAN_T_BUILD_CANALS :{WHITE}تعذر بناء القناه هنا...
|
STR_ERROR_CAN_T_BUILD_CANALS :{WHITE}تعذر بناء القناه هنا...
|
||||||
|
@@ -1682,7 +1682,6 @@ STR_ABANDON_SCENARIO_QUERY :{YELLOW}¿Segur
|
|||||||
# Cheat window
|
# Cheat window
|
||||||
STR_CHEATS :{WHITE}Trukoak
|
STR_CHEATS :{WHITE}Trukoak
|
||||||
STR_CHEATS_TOOLTIP :{BLACK}Kontrol laukiek erakutsiko dute trukoak erabili badituzu
|
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_MONEY :{LTBLUE}Dirua {CURRENCY_LONG}-etan areagotu
|
||||||
STR_CHEAT_CHANGE_COMPANY :{LTBLUE} {ORANGE}{COMMA} konpainiarekin jolastu
|
STR_CHEAT_CHANGE_COMPANY :{LTBLUE} {ORANGE}{COMMA} konpainiarekin jolastu
|
||||||
STR_CHEAT_EXTRA_DYNAMITE :{LTBLUE}Bulldozer magikoa (edozer ezabatzen du): {ORANGE}{STRING}
|
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_CAPTION :{WHITE}Bidepuntua lotu
|
||||||
STR_JOIN_WAYPOINT_CREATE_SPLITTED_WAYPOINT :{YELLOW}Ibilbide puntu bereizitua eraiki
|
STR_JOIN_WAYPOINT_CREATE_SPLITTED_WAYPOINT :{YELLOW}Ibilbide puntu bereizitua eraiki
|
||||||
|
|
||||||
|
# Generic toolbar
|
||||||
|
|
||||||
# Rail construction toolbar
|
# Rail construction toolbar
|
||||||
STR_RAIL_TOOLBAR_RAILROAD_CONSTRUCTION_CAPTION :Trenbidea eraiki
|
STR_RAIL_TOOLBAR_RAILROAD_CONSTRUCTION_CAPTION :Trenbidea eraiki
|
||||||
STR_RAIL_TOOLBAR_ELRAIL_CONSTRUCTION_CAPTION :Trenbide elektrikoa eraiki
|
STR_RAIL_TOOLBAR_ELRAIL_CONSTRUCTION_CAPTION :Trenbide elektrikoa eraiki
|
||||||
|
@@ -2116,7 +2116,6 @@ STR_ABANDON_SCENARIO_QUERY :{YELLOW}Вы ў
|
|||||||
# Cheat window
|
# Cheat window
|
||||||
STR_CHEATS :{WHITE}Махлярства (чыты)
|
STR_CHEATS :{WHITE}Махлярства (чыты)
|
||||||
STR_CHEATS_TOOLTIP :{BLACK}Птушкі паказваюць, ці выкарыстоўвалі Вы гэты чыт раней
|
STR_CHEATS_TOOLTIP :{BLACK}Птушкі паказваюць, ці выкарыстоўвалі Вы гэты чыт раней
|
||||||
STR_CHEATS_WARNING :{BLACK}Увага, Вы зьбіраецеся здрадзіць сваім спаборнікам! Гэтага вам ніколі не даруюць!
|
|
||||||
STR_CHEAT_MONEY :{LTBLUE}Дадаць {CURRENCY_LONG}
|
STR_CHEAT_MONEY :{LTBLUE}Дадаць {CURRENCY_LONG}
|
||||||
STR_CHEAT_CHANGE_COMPANY :{LTBLUE}Гульня за кампанію: {ORANGE}{COMMA}
|
STR_CHEAT_CHANGE_COMPANY :{LTBLUE}Гульня за кампанію: {ORANGE}{COMMA}
|
||||||
STR_CHEAT_EXTRA_DYNAMITE :{LTBLUE}Чароўны дынамiт (знос УСЯГО): {ORANGE}{STRING}
|
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_CAPTION :{WHITE}Аб'яднаць пункты шляху
|
||||||
STR_JOIN_WAYPOINT_CREATE_SPLITTED_WAYPOINT :{YELLOW}Пабудаваць асобны пункт шляху
|
STR_JOIN_WAYPOINT_CREATE_SPLITTED_WAYPOINT :{YELLOW}Пабудаваць асобны пункт шляху
|
||||||
|
|
||||||
|
# Generic toolbar
|
||||||
|
|
||||||
# Rail construction toolbar
|
# Rail construction toolbar
|
||||||
STR_RAIL_TOOLBAR_RAILROAD_CONSTRUCTION_CAPTION :Чыгунка
|
STR_RAIL_TOOLBAR_RAILROAD_CONSTRUCTION_CAPTION :Чыгунка
|
||||||
STR_RAIL_TOOLBAR_ELRAIL_CONSTRUCTION_CAPTION :Электрыфікаваная чыгунка
|
STR_RAIL_TOOLBAR_ELRAIL_CONSTRUCTION_CAPTION :Электрыфікаваная чыгунка
|
||||||
|
@@ -1816,7 +1816,6 @@ STR_ABANDON_SCENARIO_QUERY :{YELLOW}Você t
|
|||||||
# Cheat window
|
# Cheat window
|
||||||
STR_CHEATS :{WHITE}Trapaças
|
STR_CHEATS :{WHITE}Trapaças
|
||||||
STR_CHEATS_TOOLTIP :{BLACK}As caixas de verificação indicam se você usou esta trapaça antes
|
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_MONEY :{LTBLUE}Aumentar dinheiro em {CURRENCY_LONG}
|
||||||
STR_CHEAT_CHANGE_COMPANY :{LTBLUE}Jogando pela Co.: {ORANGE}{COMMA}
|
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}
|
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_CAPTION :{WHITE}Unir ponto de controle
|
||||||
STR_JOIN_WAYPOINT_CREATE_SPLITTED_WAYPOINT :{YELLOW}Construir um ponto de controle separado
|
STR_JOIN_WAYPOINT_CREATE_SPLITTED_WAYPOINT :{YELLOW}Construir um ponto de controle separado
|
||||||
|
|
||||||
|
# Generic toolbar
|
||||||
|
|
||||||
# Rail construction toolbar
|
# Rail construction toolbar
|
||||||
STR_RAIL_TOOLBAR_RAILROAD_CONSTRUCTION_CAPTION :Construir ferrovias
|
STR_RAIL_TOOLBAR_RAILROAD_CONSTRUCTION_CAPTION :Construir ferrovias
|
||||||
STR_RAIL_TOOLBAR_ELRAIL_CONSTRUCTION_CAPTION :Construir ferrovias (elétricas)
|
STR_RAIL_TOOLBAR_ELRAIL_CONSTRUCTION_CAPTION :Construir ferrovias (elétricas)
|
||||||
|
@@ -1728,7 +1728,6 @@ STR_ABANDON_SCENARIO_QUERY :{YELLOW}Иск
|
|||||||
# Cheat window
|
# Cheat window
|
||||||
STR_CHEATS :{WHITE}Кодове
|
STR_CHEATS :{WHITE}Кодове
|
||||||
STR_CHEATS_TOOLTIP :{BLACK}Кутийките показват дали този код е бил използван
|
STR_CHEATS_TOOLTIP :{BLACK}Кутийките показват дали този код е бил използван
|
||||||
STR_CHEATS_WARNING :{BLACK}Внимание! По този начин ще измамите своите съперници. Имайте в предвид, че това безчестие ще бъде запомнено вовеки веков.
|
|
||||||
STR_CHEAT_MONEY :{LTBLUE}Увеличаване на парите с {CURRENCY_LONG}
|
STR_CHEAT_MONEY :{LTBLUE}Увеличаване на парите с {CURRENCY_LONG}
|
||||||
STR_CHEAT_CHANGE_COMPANY :{LTBLUE}Играе като компания: {ORANGE}{COMMA}
|
STR_CHEAT_CHANGE_COMPANY :{LTBLUE}Играе като компания: {ORANGE}{COMMA}
|
||||||
STR_CHEAT_EXTRA_DYNAMITE :{LTBLUE}Магически булдозер (премахва промишленост, неподвижни обекти): {ORANGE}{STRING}
|
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_CAPTION :{WHITE}Съедини пътеводител
|
||||||
STR_JOIN_WAYPOINT_CREATE_SPLITTED_WAYPOINT :{YELLOW}Построи отделен пътеводител
|
STR_JOIN_WAYPOINT_CREATE_SPLITTED_WAYPOINT :{YELLOW}Построи отделен пътеводител
|
||||||
|
|
||||||
|
# Generic toolbar
|
||||||
|
|
||||||
# Rail construction toolbar
|
# Rail construction toolbar
|
||||||
STR_RAIL_TOOLBAR_RAILROAD_CONSTRUCTION_CAPTION :Конструкции за Двурелсов път
|
STR_RAIL_TOOLBAR_RAILROAD_CONSTRUCTION_CAPTION :Конструкции за Двурелсов път
|
||||||
STR_RAIL_TOOLBAR_ELRAIL_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_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 :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_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 :Barra de notícies: {STRING}
|
||||||
STR_CONFIG_SETTING_SOUND_TICKER_HELPTEXT :Reprodueix un so quan apareixen les notícies resumides a la barra inferior
|
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
|
# Cheat window
|
||||||
STR_CHEATS :{WHITE}Trampes
|
STR_CHEATS :{WHITE}Trampes
|
||||||
STR_CHEATS_TOOLTIP :{BLACK}Les caselles de selecció indiquen si heu fet servir aquesta trampa.
|
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_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_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}
|
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_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_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_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_SHUTDOWN :{WHITE}El servidor ha tancat la sessió
|
||||||
STR_NETWORK_MESSAGE_SERVER_REBOOT :{WHITE}El servidor està reiniciant...{}Espera un moment...
|
STR_NETWORK_MESSAGE_SERVER_REBOOT :{WHITE}El servidor està reiniciant...{}Espera un moment...
|
||||||
STR_NETWORK_MESSAGE_KICKED :*** S'ha expulsat {STRING}. Motiu: {STRING}
|
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_CAPTION :{WHITE}Uneix punt de pas
|
||||||
STR_JOIN_WAYPOINT_CREATE_SPLITTED_WAYPOINT :{YELLOW}Construeix un punt de pas separat
|
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
|
# Rail construction toolbar
|
||||||
STR_RAIL_TOOLBAR_RAILROAD_CONSTRUCTION_CAPTION :Construcció de ferrocarril
|
STR_RAIL_TOOLBAR_RAILROAD_CONSTRUCTION_CAPTION :Construcció de ferrocarril
|
||||||
STR_RAIL_TOOLBAR_ELRAIL_CONSTRUCTION_CAPTION :Construcció de ferrocarril elèctric
|
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_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_BUTTON :{BLACK}Detalls
|
||||||
STR_COMPANY_VIEW_INFRASTRUCTURE_TOOLTIP :{BLACK}Veure els detalls de la infraestructura de la companyia.
|
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_BUTTON :{BLACK}Modifica la cara
|
||||||
STR_COMPANY_VIEW_NEW_FACE_TOOLTIP :{BLACK}Modifica la cara del president de la companyia.
|
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_COMPANY_NAME_QUERY_CAPTION :Nom de la companyia
|
||||||
STR_COMPANY_VIEW_PRESIDENT_S_NAME_QUERY_CAPTION :Nom del president
|
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}?
|
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_STOP_ORDER :(Para)
|
||||||
|
|
||||||
STR_ORDER_GO_TO_STATION :{STRING} {STATION} {STRING}
|
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)
|
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_CURRENCY_REQUIRED :{WHITE}... {CURRENCY_LONG} necessaris
|
||||||
STR_ERROR_CAN_T_REPAY_LOAN :{WHITE}No es pot amortitzar préstec...
|
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_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_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_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...
|
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_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_NOTHING_TO_DO :{WHITE}No s'han aplicat normes d'autosubstitució/renovació
|
||||||
STR_ERROR_AUTOREPLACE_MONEY_LIMIT :(límit de diners)
|
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
|
# Rail construction errors
|
||||||
STR_ERROR_IMPOSSIBLE_TRACK_COMBINATION :{WHITE}Combinació de vies impossible
|
STR_ERROR_IMPOSSIBLE_TRACK_COMBINATION :{WHITE}Combinació de vies impossible
|
||||||
|
@@ -1911,7 +1911,6 @@ STR_ABANDON_SCENARIO_QUERY :{YELLOW}Doista
|
|||||||
# Cheat window
|
# Cheat window
|
||||||
STR_CHEATS :{WHITE}Varanje
|
STR_CHEATS :{WHITE}Varanje
|
||||||
STR_CHEATS_TOOLTIP :{BLACK}Kvačice ukazuju na to jesi li koristio ovo varanje prije
|
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_MONEY :{LTBLUE}Povećaj novce za iznos {CURRENCY_LONG}
|
||||||
STR_CHEAT_CHANGE_COMPANY :{LTBLUE}Igraj kao tvrtka: {ORANGE}{COMMA}
|
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}
|
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_CAPTION :{WHITE}Spoji čvorište
|
||||||
STR_JOIN_WAYPOINT_CREATE_SPLITTED_WAYPOINT :{YELLOW}Izgradi zasebno čvorište
|
STR_JOIN_WAYPOINT_CREATE_SPLITTED_WAYPOINT :{YELLOW}Izgradi zasebno čvorište
|
||||||
|
|
||||||
|
# Generic toolbar
|
||||||
|
|
||||||
# Rail construction toolbar
|
# Rail construction toolbar
|
||||||
STR_RAIL_TOOLBAR_RAILROAD_CONSTRUCTION_CAPTION :Izgradnja željeznice
|
STR_RAIL_TOOLBAR_RAILROAD_CONSTRUCTION_CAPTION :Izgradnja željeznice
|
||||||
STR_RAIL_TOOLBAR_ELRAIL_CONSTRUCTION_CAPTION :Izgradnja elektrificirane željeznice
|
STR_RAIL_TOOLBAR_ELRAIL_CONSTRUCTION_CAPTION :Izgradnja elektrificirane željeznice
|
||||||
|
@@ -2157,7 +2157,6 @@ STR_ABANDON_SCENARIO_QUERY :{YELLOW}Určite
|
|||||||
# Cheat window
|
# Cheat window
|
||||||
STR_CHEATS :{WHITE}Cheaty
|
STR_CHEATS :{WHITE}Cheaty
|
||||||
STR_CHEATS_TOOLTIP :{BLACK}Zaškrtávací políčka ukazují, jestli jsi tento cheat už použil
|
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_MONEY :{LTBLUE}Navýšit peníze o {CURRENCY_LONG}
|
||||||
STR_CHEAT_CHANGE_COMPANY :{LTBLUE}Hrát jako společnost: {ORANGE}{COMMA}
|
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}
|
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_CAPTION :{WHITE}Spojování směrování
|
||||||
STR_JOIN_WAYPOINT_CREATE_SPLITTED_WAYPOINT :{YELLOW}Postavit samostatné směrování
|
STR_JOIN_WAYPOINT_CREATE_SPLITTED_WAYPOINT :{YELLOW}Postavit samostatné směrování
|
||||||
|
|
||||||
|
# Generic toolbar
|
||||||
|
|
||||||
# Rail construction toolbar
|
# Rail construction toolbar
|
||||||
STR_RAIL_TOOLBAR_RAILROAD_CONSTRUCTION_CAPTION :Výstavba železnice
|
STR_RAIL_TOOLBAR_RAILROAD_CONSTRUCTION_CAPTION :Výstavba železnice
|
||||||
STR_RAIL_TOOLBAR_ELRAIL_CONSTRUCTION_CAPTION :Výstavba elektrifikované ž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
|
# Cheat window
|
||||||
STR_CHEATS :{WHITE}Snydefunktioner
|
STR_CHEATS :{WHITE}Snydefunktioner
|
||||||
STR_CHEATS_TOOLTIP :{BLACK}Checkbokse viser, om du har brugt denne snydefunktion før
|
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_MONEY :{LTBLUE}Forøg kassebeholdning med {CURRENCY_LONG}
|
||||||
STR_CHEAT_CHANGE_COMPANY :{LTBLUE}Spiller som firmaet: {ORANGE}{COMMA}
|
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}
|
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_CAPTION :{WHITE}Forbind waypoint
|
||||||
STR_JOIN_WAYPOINT_CREATE_SPLITTED_WAYPOINT :{YELLOW}Byg et separat waypoint
|
STR_JOIN_WAYPOINT_CREATE_SPLITTED_WAYPOINT :{YELLOW}Byg et separat waypoint
|
||||||
|
|
||||||
|
# Generic toolbar
|
||||||
|
|
||||||
# Rail construction toolbar
|
# Rail construction toolbar
|
||||||
STR_RAIL_TOOLBAR_RAILROAD_CONSTRUCTION_CAPTION :Jernbanekonstruktion
|
STR_RAIL_TOOLBAR_RAILROAD_CONSTRUCTION_CAPTION :Jernbanekonstruktion
|
||||||
STR_RAIL_TOOLBAR_ELRAIL_CONSTRUCTION_CAPTION :Elektrisk 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_IMPERIAL :{COMMA}{NBSP}mph
|
||||||
STR_UNITS_VELOCITY_METRIC :{COMMA}{NBSP}km/u
|
STR_UNITS_VELOCITY_METRIC :{COMMA}{NBSP}km/u
|
||||||
STR_UNITS_VELOCITY_SI :{COMMA}{NBSP}m/s
|
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_IMPERIAL :{COMMA}{NBSP}pk
|
||||||
STR_UNITS_POWER_METRIC :{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_RANGE :Bereik
|
||||||
STR_SORT_BY_POPULATION :Aantal inwoners
|
STR_SORT_BY_POPULATION :Aantal inwoners
|
||||||
STR_SORT_BY_RATING :Waardering
|
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
|
# Group by options for vehicle list
|
||||||
|
STR_GROUP_BY_NONE :Geen
|
||||||
|
STR_GROUP_BY_SHARED_ORDERS :Gedeelde orders
|
||||||
|
|
||||||
# Tooltips for the main toolbar
|
# Tooltips for the main toolbar
|
||||||
STR_TOOLBAR_TOOLTIP_PAUSE_GAME :{BLACK}Hiermee pauzeer je het spel
|
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_TOOLTIP_SHOW_LAST_NEWS :{BLACK}Laatste (nieuws-)bericht weergeven
|
||||||
STR_STATUSBAR_COMPANY_NAME :{SILVER}- - {COMPANY} - -
|
STR_STATUSBAR_COMPANY_NAME :{SILVER}- - {COMPANY} - -
|
||||||
STR_STATUSBAR_PAUSED :{YELLOW}* * GEPAUZEERD * *
|
STR_STATUSBAR_PAUSED :{YELLOW}* * GEPAUZEERD * *
|
||||||
|
STR_STATUSBAR_PAUSED_LINK_GRAPH :{ORANGE}* * GEPAUZEERD (wacht op bijwerken koppelinggrafiek) * *
|
||||||
STR_STATUSBAR_AUTOSAVE :{RED}AUTOMATISCH OPSLAAN
|
STR_STATUSBAR_AUTOSAVE :{RED}AUTOMATISCH OPSLAAN
|
||||||
STR_STATUSBAR_SAVING_GAME :{RED}* * SPEL WORDT OPGESLAGEN * *
|
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_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 :Uitgaven in bedrijfsfinanciënvenster groeperen: {STRING}
|
||||||
STR_CONFIG_SETTING_EXPENSES_LAYOUT_HELPTEXT :Definieer de lay-out voor het bedrijfsuitgavenvenster
|
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 :Nieuwsticker: {STRING}
|
||||||
STR_CONFIG_SETTING_SOUND_TICKER_HELPTEXT :Speel geluidseffecten af bij korte nieuwsberichten
|
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_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_VALUE :{NUM}
|
||||||
STR_CONFIG_SETTING_ENDING_YEAR_ZERO :Nooit
|
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 :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_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}
|
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 :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_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 :Positie van algemene knoppenbalk: {STRING}
|
||||||
STR_CONFIG_SETTING_TOOLBAR_POS_HELPTEXT :Horizontale positie van de algemene taakbalk aan de bovenkant van het scherm.
|
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_IMPERIAL :Imperiaal (mph)
|
||||||
STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_METRIC :Metrisch (km/h)
|
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_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 :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
|
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
|
# Quit window
|
||||||
STR_QUIT_CAPTION :{WHITE}Afsluiten
|
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_YES :{BLACK}Ja
|
||||||
STR_QUIT_NO :{BLACK}Nee
|
STR_QUIT_NO :{BLACK}Nee
|
||||||
|
|
||||||
@@ -1815,7 +1837,6 @@ STR_ABANDON_SCENARIO_QUERY :{YELLOW}Weet je
|
|||||||
# Cheat window
|
# Cheat window
|
||||||
STR_CHEATS :{WHITE}Valsspelen
|
STR_CHEATS :{WHITE}Valsspelen
|
||||||
STR_CHEATS_TOOLTIP :{BLACK}Keuzevakjes geven aan of je deze manier van valsspelen eerder hebt gebruikt
|
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_MONEY :{LTBLUE}Kapitaal vergroten met {CURRENCY_LONG}
|
||||||
STR_CHEAT_CHANGE_COMPANY :{LTBLUE}Spelen als bedrijf: {ORANGE}{COMMA}
|
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}
|
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 :{BLACK}Ververs server
|
||||||
STR_NETWORK_SERVER_LIST_REFRESH_TOOLTIP :{BLACK}Ververs de informatie over deze 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 :{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_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
|
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_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_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_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_UNPAUSED :Spel vervolgd ({STRING})
|
||||||
STR_NETWORK_SERVER_MESSAGE_GAME_REASON_NOT_ENOUGH_PLAYERS :aantal spelers
|
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_CONNECTING_CLIENTS :spelers maken verbinding
|
||||||
STR_NETWORK_SERVER_MESSAGE_GAME_REASON_MANUAL :Handmatig
|
STR_NETWORK_SERVER_MESSAGE_GAME_REASON_MANUAL :Handmatig
|
||||||
STR_NETWORK_SERVER_MESSAGE_GAME_REASON_GAME_SCRIPT :spelscript
|
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
|
############ End of leave-in-this-order
|
||||||
STR_NETWORK_MESSAGE_CLIENT_LEAVING :vertrekt
|
STR_NETWORK_MESSAGE_CLIENT_LEAVING :vertrekt
|
||||||
STR_NETWORK_MESSAGE_CLIENT_JOINED :*** {STRING} heeft zich bij het spel gevoegd
|
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_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_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_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_SHUTDOWN :{WHITE}De server heeft de sessie gesloten
|
||||||
STR_NETWORK_MESSAGE_SERVER_REBOOT :{WHITE}De server wordt opnieuw gestart...{}Wacht alstublieft...
|
STR_NETWORK_MESSAGE_SERVER_REBOOT :{WHITE}De server wordt opnieuw gestart...{}Wacht alstublieft...
|
||||||
STR_NETWORK_MESSAGE_KICKED :*** {STRING} is eruit geschopt. Reden: ({STRING})
|
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_CAPTION :{WHITE}Routepunt samenvoegen
|
||||||
STR_JOIN_WAYPOINT_CREATE_SPLITTED_WAYPOINT :{YELLOW}Los routepunt bouwen
|
STR_JOIN_WAYPOINT_CREATE_SPLITTED_WAYPOINT :{YELLOW}Los routepunt bouwen
|
||||||
|
|
||||||
|
# Generic toolbar
|
||||||
|
|
||||||
# Rail construction toolbar
|
# Rail construction toolbar
|
||||||
STR_RAIL_TOOLBAR_RAILROAD_CONSTRUCTION_CAPTION :Spoorwegen bouwen
|
STR_RAIL_TOOLBAR_RAILROAD_CONSTRUCTION_CAPTION :Spoorwegen bouwen
|
||||||
STR_RAIL_TOOLBAR_ELRAIL_CONSTRUCTION_CAPTION :Geëlektrificeerde 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_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_BUTTON :{BLACK}Willekeurige bomen
|
||||||
STR_TREES_RANDOM_TREES_TOOLTIP :{BLACK}Hiermee plant je bomen willekeurig over het landschap
|
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)
|
# Land generation window (SE)
|
||||||
STR_TERRAFORM_TOOLBAR_LAND_GENERATION_CAPTION :{WHITE}Landontwikkeling
|
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.
|
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
|
# Goal question window
|
||||||
STR_GOAL_QUESTION_CAPTION_QUESTION :Vraag
|
STR_GOAL_QUESTION_CAPTION_QUESTION :{BLACK}Vraag
|
||||||
STR_GOAL_QUESTION_CAPTION_INFORMATION :Informatie
|
STR_GOAL_QUESTION_CAPTION_INFORMATION :{BLACK}Informatie
|
||||||
STR_GOAL_QUESTION_CAPTION_WARNING :Waarschuwing
|
STR_GOAL_QUESTION_CAPTION_WARNING :{BLACK}Waarschuwing
|
||||||
STR_GOAL_QUESTION_CAPTION_ERROR :Fout
|
STR_GOAL_QUESTION_CAPTION_ERROR :{YELLOW}Fout
|
||||||
|
|
||||||
############ Start of Goal Question button list
|
############ Start of Goal Question button list
|
||||||
STR_GOAL_QUESTION_BUTTON_CANCEL :Annuleren
|
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_BUTTON :{BLACK}Details
|
||||||
STR_COMPANY_VIEW_INFRASTRUCTURE_TOOLTIP :{BLACK}Gedetailleerde aantallen infrastructuur bekijken
|
STR_COMPANY_VIEW_INFRASTRUCTURE_TOOLTIP :{BLACK}Gedetailleerde aantallen infrastructuur bekijken
|
||||||
STR_COMPANY_VIEW_GIVE_MONEY_BUTTON :{BLACK}Geld geven
|
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_BUTTON :{BLACK}Nieuw gezicht
|
||||||
STR_COMPANY_VIEW_NEW_FACE_TOOLTIP :{BLACK}Nieuw gezicht voor directeur kiezen
|
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_COMPANY_NAME_QUERY_CAPTION :Bedrijfsnaam
|
||||||
STR_COMPANY_VIEW_PRESIDENT_S_NAME_QUERY_CAPTION :Naam van directeur
|
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}?
|
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_READABLE :Bestand is niet leesbaar
|
||||||
STR_GAME_SAVELOAD_ERROR_FILE_NOT_WRITEABLE :Bestand is niet schrijfbaar
|
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_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_GAME_SAVELOAD_NOT_AVAILABLE :<niet beschikbaar>
|
||||||
STR_WARNING_LOADGAME_REMOVED_TRAMS :{WHITE}Spel was opgeslagen in een versie zonder tramondersteuning. Alle trams zijn verwijderd
|
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_CURRENCY_REQUIRED :{WHITE}... {CURRENCY_LONG} benodigd
|
||||||
STR_ERROR_CAN_T_REPAY_LOAN :{WHITE}Kan de lening niet afbetalen..
|
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_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_BUY_COMPANY :{WHITE}Kan het bedrijf niet kopen...
|
||||||
STR_ERROR_CAN_T_BUILD_COMPANY_HEADQUARTERS :{WHITE}Kan bedrijfshoofdkantoor niet bouwen...
|
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...
|
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
|
##id 0x6000
|
||||||
STR_SV_EMPTY :
|
STR_SV_EMPTY :
|
||||||
STR_SV_UNNAMED :Geen naam
|
STR_SV_UNNAMED :Geen naam
|
||||||
STR_SV_TRAIN_NAME :Trein {COMMA}
|
STR_SV_TRAIN_NAME :Trein #{COMMA}
|
||||||
STR_SV_ROAD_VEHICLE_NAME :Wegvoertuig {COMMA}
|
STR_SV_ROAD_VEHICLE_NAME :Wegvoertuig #{COMMA}
|
||||||
STR_SV_SHIP_NAME :Schip {COMMA}
|
STR_SV_SHIP_NAME :Schip #{COMMA}
|
||||||
STR_SV_AIRCRAFT_NAME :Vliegtuig {COMMA}
|
STR_SV_AIRCRAFT_NAME :Vliegtuig #{COMMA}
|
||||||
|
|
||||||
STR_SV_STNAME :{STRING}
|
STR_SV_STNAME :{STRING}
|
||||||
STR_SV_STNAME_NORTH :{STRING} Noord
|
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_BUOY_NAME_SERIAL :Boei {TOWN} {COMMA}
|
||||||
STR_FORMAT_COMPANY_NUM :(Bedrijf {COMMA})
|
STR_FORMAT_COMPANY_NUM :(Bedrijf {COMMA})
|
||||||
STR_FORMAT_GROUP_NAME :Groep {COMMA}
|
STR_FORMAT_GROUP_NAME :Groep {COMMA}
|
||||||
|
STR_FORMAT_GROUP_VEHICLE_NAME :{GROUP} #{COMMA}
|
||||||
STR_FORMAT_INDUSTRY_NAME :{1:STRING} {0:TOWN}
|
STR_FORMAT_INDUSTRY_NAME :{1:STRING} {0:TOWN}
|
||||||
STR_FORMAT_WAYPOINT_NAME :Routepunt {TOWN}
|
STR_FORMAT_WAYPOINT_NAME :Routepunt {TOWN}
|
||||||
STR_FORMAT_WAYPOINT_NAME_SERIAL :Routepunt {TOWN} {COMMA}
|
STR_FORMAT_WAYPOINT_NAME_SERIAL :Routepunt {TOWN} {COMMA}
|
||||||
|
@@ -2151,7 +2151,7 @@ STR_ABANDON_SCENARIO_QUERY :{YELLOW}Are you
|
|||||||
# Cheat window
|
# Cheat window
|
||||||
STR_CHEATS :{WHITE}Cheats
|
STR_CHEATS :{WHITE}Cheats
|
||||||
STR_CHEATS_TOOLTIP :{BLACK}Checkboxes indicate if you have used this cheat before
|
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_MONEY :{LTBLUE}Increase money by {CURRENCY_LONG}
|
||||||
STR_CHEAT_CHANGE_COMPANY :{LTBLUE}Playing as company: {ORANGE}{COMMA}
|
STR_CHEAT_CHANGE_COMPANY :{LTBLUE}Playing as company: {ORANGE}{COMMA}
|
||||||
STR_CHEAT_EXTRA_DYNAMITE :{LTBLUE}Magic bulldozer (remove industries, unmovable objects): {ORANGE}{STRING1}
|
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_CAPTION :{WHITE}Join waypoint
|
||||||
STR_JOIN_WAYPOINT_CREATE_SPLITTED_WAYPOINT :{YELLOW}Build a separate 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
|
# Rail construction toolbar
|
||||||
STR_RAIL_TOOLBAR_RAILROAD_CONSTRUCTION_CAPTION :Railway Construction
|
STR_RAIL_TOOLBAR_RAILROAD_CONSTRUCTION_CAPTION :Railway Construction
|
||||||
STR_RAIL_TOOLBAR_ELRAIL_CONSTRUCTION_CAPTION :Electrified 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_SELL_ORDER :(Sell vehicle)
|
||||||
|
|
||||||
STR_ORDER_GO_TO_STATION :{STRING} {STATION} {STRING1}
|
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)
|
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_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_NOTHING_TO_DO :{WHITE}No autoreplace/renew rules applied
|
||||||
STR_ERROR_AUTOREPLACE_MONEY_LIMIT :(money limit)
|
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
|
# Rail construction errors
|
||||||
STR_ERROR_IMPOSSIBLE_TRACK_COMBINATION :{WHITE}Impossible track combination
|
STR_ERROR_IMPOSSIBLE_TRACK_COMBINATION :{WHITE}Impossible track combination
|
||||||
|
@@ -1738,7 +1738,6 @@ STR_ABANDON_SCENARIO_QUERY :{YELLOW}Are you
|
|||||||
# Cheat window
|
# Cheat window
|
||||||
STR_CHEATS :{WHITE}Cheats
|
STR_CHEATS :{WHITE}Cheats
|
||||||
STR_CHEATS_TOOLTIP :{BLACK}Checkboxes indicate if you have used this cheat before
|
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_MONEY :{LTBLUE}Increase money by {CURRENCY_LONG}
|
||||||
STR_CHEAT_CHANGE_COMPANY :{LTBLUE}Playing as company: {ORANGE}{COMMA}
|
STR_CHEAT_CHANGE_COMPANY :{LTBLUE}Playing as company: {ORANGE}{COMMA}
|
||||||
STR_CHEAT_EXTRA_DYNAMITE :{LTBLUE}Magic bulldozer (remove industries, unmovable objects): {ORANGE}{STRING}
|
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_CAPTION :{WHITE}Join waypoint
|
||||||
STR_JOIN_WAYPOINT_CREATE_SPLITTED_WAYPOINT :{YELLOW}Build a separate waypoint
|
STR_JOIN_WAYPOINT_CREATE_SPLITTED_WAYPOINT :{YELLOW}Build a separate waypoint
|
||||||
|
|
||||||
|
# Generic toolbar
|
||||||
|
|
||||||
# Rail construction toolbar
|
# Rail construction toolbar
|
||||||
STR_RAIL_TOOLBAR_RAILROAD_CONSTRUCTION_CAPTION :Railway Construction
|
STR_RAIL_TOOLBAR_RAILROAD_CONSTRUCTION_CAPTION :Railway Construction
|
||||||
STR_RAIL_TOOLBAR_ELRAIL_CONSTRUCTION_CAPTION :Electrified Railway Construction
|
STR_RAIL_TOOLBAR_ELRAIL_CONSTRUCTION_CAPTION :Electrified Railway Construction
|
||||||
|
@@ -1813,7 +1813,6 @@ STR_ABANDON_SCENARIO_QUERY :{YELLOW}Are you
|
|||||||
# Cheat window
|
# Cheat window
|
||||||
STR_CHEATS :{WHITE}Cheats
|
STR_CHEATS :{WHITE}Cheats
|
||||||
STR_CHEATS_TOOLTIP :{BLACK}Checkboxes indicate if you have used this cheat before
|
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_MONEY :{LTBLUE}Increase money by {CURRENCY_LONG}
|
||||||
STR_CHEAT_CHANGE_COMPANY :{LTBLUE}Playing as company: {ORANGE}{COMMA}
|
STR_CHEAT_CHANGE_COMPANY :{LTBLUE}Playing as company: {ORANGE}{COMMA}
|
||||||
STR_CHEAT_EXTRA_DYNAMITE :{LTBLUE}Magic bulldozer (remove industries, unmovable objects): {ORANGE}{STRING}
|
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_CAPTION :{WHITE}Join waypoint
|
||||||
STR_JOIN_WAYPOINT_CREATE_SPLITTED_WAYPOINT :{YELLOW}Build a separate waypoint
|
STR_JOIN_WAYPOINT_CREATE_SPLITTED_WAYPOINT :{YELLOW}Build a separate waypoint
|
||||||
|
|
||||||
|
# Generic toolbar
|
||||||
|
|
||||||
# Rail construction toolbar
|
# Rail construction toolbar
|
||||||
STR_RAIL_TOOLBAR_RAILROAD_CONSTRUCTION_CAPTION :Railroad Construction
|
STR_RAIL_TOOLBAR_RAILROAD_CONSTRUCTION_CAPTION :Railroad Construction
|
||||||
STR_RAIL_TOOLBAR_ELRAIL_CONSTRUCTION_CAPTION :Electrified Railroad Construction
|
STR_RAIL_TOOLBAR_ELRAIL_CONSTRUCTION_CAPTION :Electrified Railroad Construction
|
||||||
|
@@ -1422,7 +1422,6 @@ STR_ABANDON_SCENARIO_QUERY :{YELLOW}Ĉu vi
|
|||||||
# Cheat window
|
# Cheat window
|
||||||
STR_CHEATS :{WHITE}Filudaĵoj
|
STR_CHEATS :{WHITE}Filudaĵoj
|
||||||
STR_CHEATS_TOOLTIP :{BLACK}La kvadratetoj indikas ĉu vi jam uzis la filudaĵon antaŭe.
|
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_MONEY :{LTBLUE}Altigu monkvanton per {CURRENCY_LONG}
|
||||||
STR_CHEAT_CHANGE_COMPANY :{LTBLUE}Ludanta kiel kompanio: {ORANGE}{COMMA}
|
STR_CHEAT_CHANGE_COMPANY :{LTBLUE}Ludanta kiel kompanio: {ORANGE}{COMMA}
|
||||||
STR_CHEAT_EXTRA_DYNAMITE :{LTBLUE}Magia forigilo (forviŝu industriojn, nemovebla objektoj): {ORANGE}{STRING}
|
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_CAPTION :{WHITE}Ligi vojpunkton
|
||||||
STR_JOIN_WAYPOINT_CREATE_SPLITTED_WAYPOINT :{YELLOW}Krei apartan vojpunkton
|
STR_JOIN_WAYPOINT_CREATE_SPLITTED_WAYPOINT :{YELLOW}Krei apartan vojpunkton
|
||||||
|
|
||||||
|
# Generic toolbar
|
||||||
|
|
||||||
# Rail construction toolbar
|
# Rail construction toolbar
|
||||||
STR_RAIL_TOOLBAR_RAILROAD_CONSTRUCTION_CAPTION :Konstruado de Fervojo
|
STR_RAIL_TOOLBAR_RAILROAD_CONSTRUCTION_CAPTION :Konstruado de Fervojo
|
||||||
STR_RAIL_TOOLBAR_ELRAIL_CONSTRUCTION_CAPTION :Konstruado de Elektrofervojo
|
STR_RAIL_TOOLBAR_ELRAIL_CONSTRUCTION_CAPTION :Konstruado de Elektrofervojo
|
||||||
|
@@ -1829,7 +1829,6 @@ STR_ABANDON_SCENARIO_QUERY :{YELLOW}Kas sa
|
|||||||
# Cheat window
|
# Cheat window
|
||||||
STR_CHEATS :{WHITE}Petmine
|
STR_CHEATS :{WHITE}Petmine
|
||||||
STR_CHEATS_TOOLTIP :{BLACK}Märgistatud kastid näitavad et, kas sa oled varem seda pettust kasutanud
|
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_MONEY :{LTBLUE}Suurenda raha hulka {CURRENCY_LONG} võrra
|
||||||
STR_CHEAT_CHANGE_COMPANY :{LTBLUE}Mängimine ettevõttena: {ORANGE}{COMMA}
|
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}
|
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_CAPTION :{WHITE}Liida teemärgis
|
||||||
STR_JOIN_WAYPOINT_CREATE_SPLITTED_WAYPOINT :{YELLOW}Ehita eraldi teemärgis
|
STR_JOIN_WAYPOINT_CREATE_SPLITTED_WAYPOINT :{YELLOW}Ehita eraldi teemärgis
|
||||||
|
|
||||||
|
# Generic toolbar
|
||||||
|
|
||||||
# Rail construction toolbar
|
# Rail construction toolbar
|
||||||
STR_RAIL_TOOLBAR_RAILROAD_CONSTRUCTION_CAPTION :Rööbasteede ehitamine
|
STR_RAIL_TOOLBAR_RAILROAD_CONSTRUCTION_CAPTION :Rööbasteede ehitamine
|
||||||
STR_RAIL_TOOLBAR_ELRAIL_CONSTRUCTION_CAPTION :Elektriraudtee ehitamine
|
STR_RAIL_TOOLBAR_ELRAIL_CONSTRUCTION_CAPTION :Elektriraudtee ehitamine
|
||||||
|
@@ -1588,7 +1588,6 @@ STR_ABANDON_SCENARIO_QUERY :{YELLOW}Er tú
|
|||||||
# Cheat window
|
# Cheat window
|
||||||
STR_CHEATS :{WHITE}Snýt
|
STR_CHEATS :{WHITE}Snýt
|
||||||
STR_CHEATS_TOOLTIP :{BLACK}Flugubeins kassanir vísa um tú hevur nýtt hetta snýti áður
|
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_MONEY :{LTBLUE}Hækka pening við {CURRENCY_LONG}
|
||||||
STR_CHEAT_CHANGE_COMPANY :{LTBLUE}Spælir sum fyritøka: {ORANGE}{COMMA}
|
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}
|
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_CAPTION :{WHITE}Bind waypoint saman
|
||||||
STR_JOIN_WAYPOINT_CREATE_SPLITTED_WAYPOINT :{YELLOW}Bygg eitt serstakt waypoint
|
STR_JOIN_WAYPOINT_CREATE_SPLITTED_WAYPOINT :{YELLOW}Bygg eitt serstakt waypoint
|
||||||
|
|
||||||
|
# Generic toolbar
|
||||||
|
|
||||||
# Rail construction toolbar
|
# Rail construction toolbar
|
||||||
STR_RAIL_TOOLBAR_RAILROAD_CONSTRUCTION_CAPTION :Jarnbreyta bygging
|
STR_RAIL_TOOLBAR_RAILROAD_CONSTRUCTION_CAPTION :Jarnbreyta bygging
|
||||||
STR_RAIL_TOOLBAR_ELRAIL_CONSTRUCTION_CAPTION :Ravmagns 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_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 :Ryhmitä kulut yhtiön rahoitusikkunassa: {STRING}
|
||||||
STR_CONFIG_SETTING_EXPENSES_LAYOUT_HELPTEXT :Määritä asettelu yhtiön rahoitusikkunalle
|
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 :Uutiset: {STRING}
|
||||||
STR_CONFIG_SETTING_SOUND_TICKER_HELPTEXT :Toista ääni tiivistetyille uutisviesteille
|
STR_CONFIG_SETTING_SOUND_TICKER_HELPTEXT :Toista ääni tiivistetyille uutisviesteille
|
||||||
@@ -1835,7 +1837,7 @@ STR_ABANDON_SCENARIO_QUERY :{YELLOW}Lopetet
|
|||||||
# Cheat window
|
# Cheat window
|
||||||
STR_CHEATS :{WHITE}Huijaukset
|
STR_CHEATS :{WHITE}Huijaukset
|
||||||
STR_CHEATS_TOOLTIP :{BLACK}Valintaruudut osoittavat, oletko käyttänyt huijausta aiemmin
|
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_MONEY :{LTBLUE}Anna lisää rahaa: {CURRENCY_LONG}
|
||||||
STR_CHEAT_CHANGE_COMPANY :{LTBLUE}Hallinnassa oleva yhtiö: {ORANGE}{COMMA}
|
STR_CHEAT_CHANGE_COMPANY :{LTBLUE}Hallinnassa oleva yhtiö: {ORANGE}{COMMA}
|
||||||
STR_CHEAT_EXTRA_DYNAMITE :{LTBLUE}Taikapuskutraktori (poista teollisuutta, liikuttamattomia kohteita): {ORANGE}{STRING}
|
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_CAPTION :{WHITE}Liitä reittipiste
|
||||||
STR_JOIN_WAYPOINT_CREATE_SPLITTED_WAYPOINT :{YELLOW}Rakenna erillinen 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
|
# Rail construction toolbar
|
||||||
STR_RAIL_TOOLBAR_RAILROAD_CONSTRUCTION_CAPTION :Rautatien rakentaminen
|
STR_RAIL_TOOLBAR_RAILROAD_CONSTRUCTION_CAPTION :Rautatien rakentaminen
|
||||||
STR_RAIL_TOOLBAR_ELRAIL_CONSTRUCTION_CAPTION :Sähköradan 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_STOP_ORDER :(Pysähdy)
|
||||||
|
|
||||||
STR_ORDER_GO_TO_STATION :{STRING} {STATION} {STRING}
|
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)
|
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_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_NOTHING_TO_DO :{WHITE}Ei käytössä olevia itsekorvaus- tai itseuudistussääntöjä
|
||||||
STR_ERROR_AUTOREPLACE_MONEY_LIMIT :(rahoitusraja)
|
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
|
# Rail construction errors
|
||||||
STR_ERROR_IMPOSSIBLE_TRACK_COMBINATION :{WHITE}Mahdoton ratayhdistelmä.
|
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_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 :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_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 :Bulletin{NBSP}: {STRING}
|
||||||
STR_CONFIG_SETTING_SOUND_TICKER_HELPTEXT :Jouer un son pour les bulletins
|
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
|
# Cheat window
|
||||||
STR_CHEATS :{WHITE}Triches
|
STR_CHEATS :{WHITE}Triches
|
||||||
STR_CHEATS_TOOLTIP :{BLACK}Les cases à cocher montrent si vous avez déjà utilisé cette triche auparavant
|
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_MONEY :{LTBLUE}Augmenter l'argent de {CURRENCY_LONG}
|
||||||
STR_CHEAT_CHANGE_COMPANY :{LTBLUE}Jouer en tant que compagnie{NBSP}: {ORANGE}{COMMA}
|
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}
|
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_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_CLIENT_LEFT :*** {STRING} a quitté la partie ({2:STRING})
|
||||||
STR_NETWORK_MESSAGE_NAME_CHANGE :*** {STRING} a changé son nom en {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_SHUTDOWN :{WHITE}Le serveur a fermé la session
|
||||||
STR_NETWORK_MESSAGE_SERVER_REBOOT :{WHITE}Le serveur redémarre...{}Veuillez patienter...
|
STR_NETWORK_MESSAGE_SERVER_REBOOT :{WHITE}Le serveur redémarre...{}Veuillez patienter...
|
||||||
STR_NETWORK_MESSAGE_KICKED :*** {STRING} a été exclu. Raison{NBSP}: ({STRING})
|
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_CAPTION :{WHITE}Joindre un point de contrôle
|
||||||
STR_JOIN_WAYPOINT_CREATE_SPLITTED_WAYPOINT :{YELLOW}Construire un point de contrôle séparé
|
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
|
# Rail construction toolbar
|
||||||
STR_RAIL_TOOLBAR_RAILROAD_CONSTRUCTION_CAPTION :Construction de voie ferrée
|
STR_RAIL_TOOLBAR_RAILROAD_CONSTRUCTION_CAPTION :Construction de voie ferrée
|
||||||
STR_RAIL_TOOLBAR_ELRAIL_CONSTRUCTION_CAPTION :Construction de voie ferrée électrifié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_BUTTON :{BLACK}Détails
|
||||||
STR_COMPANY_VIEW_INFRASTRUCTURE_TOOLTIP :{BLACK}Afficher le détail des calculs d'infrastructure
|
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_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_BUTTON :{BLACK}Nouveau visage
|
||||||
STR_COMPANY_VIEW_NEW_FACE_TOOLTIP :{BLACK}Choix d'un nouveau visage pour le P.D.G.
|
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_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_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}?
|
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_STOP_ORDER :(Arrêt)
|
||||||
|
|
||||||
STR_ORDER_GO_TO_STATION :{STRING} {STATION} {STRING}
|
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)
|
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_CURRENCY_REQUIRED :{WHITE}... {CURRENCY_LONG} nécessaires
|
||||||
STR_ERROR_CAN_T_REPAY_LOAN :{WHITE}Impossible de rembourser...
|
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_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_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_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...
|
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_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_NOTHING_TO_DO :{WHITE}Aucune règle de remplacement/renouvellement automatique appliquée
|
||||||
STR_ERROR_AUTOREPLACE_MONEY_LIMIT :(limite d'argent)
|
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
|
# Rail construction errors
|
||||||
STR_ERROR_IMPOSSIBLE_TRACK_COMBINATION :{WHITE}Combinaison de rails impossible
|
STR_ERROR_IMPOSSIBLE_TRACK_COMBINATION :{WHITE}Combinaison de rails impossible
|
||||||
|
@@ -1972,7 +1972,6 @@ STR_ABANDON_SCENARIO_QUERY :{YELLOW}A bheil
|
|||||||
# Cheat window
|
# Cheat window
|
||||||
STR_CHEATS :{WHITE}Cealgaireachd
|
STR_CHEATS :{WHITE}Cealgaireachd
|
||||||
STR_CHEATS_TOOLTIP :{BLACK}Is ciall dha bhogsaichean-cromaige gun deach a' chealgaireachd seo a chleachdadh roimhe
|
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_MONEY :{LTBLUE}Meudaich an t-airgead le {CURRENCY_LONG}
|
||||||
STR_CHEAT_CHANGE_COMPANY :{LTBLUE}A' cluich mar a' chompanaidh: {ORANGE}{COMMA}
|
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}
|
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_CAPTION :{WHITE}Co-aonaich a' phuing-thurais
|
||||||
STR_JOIN_WAYPOINT_CREATE_SPLITTED_WAYPOINT :{YELLOW}Tog puing-thurais fa leth
|
STR_JOIN_WAYPOINT_CREATE_SPLITTED_WAYPOINT :{YELLOW}Tog puing-thurais fa leth
|
||||||
|
|
||||||
|
# Generic toolbar
|
||||||
|
|
||||||
# Rail construction toolbar
|
# Rail construction toolbar
|
||||||
STR_RAIL_TOOLBAR_RAILROAD_CONSTRUCTION_CAPTION :Tog rathad-iarainn
|
STR_RAIL_TOOLBAR_RAILROAD_CONSTRUCTION_CAPTION :Tog rathad-iarainn
|
||||||
STR_RAIL_TOOLBAR_ELRAIL_CONSTRUCTION_CAPTION :Togail rathaid-iarainn dealain
|
STR_RAIL_TOOLBAR_ELRAIL_CONSTRUCTION_CAPTION :Togail rathaid-iarainn dealain
|
||||||
|
@@ -1808,7 +1808,6 @@ STR_ABANDON_SCENARIO_QUERY :{YELLOW}Estás
|
|||||||
# Cheat window
|
# Cheat window
|
||||||
STR_CHEATS :{WHITE}Trampulladas
|
STR_CHEATS :{WHITE}Trampulladas
|
||||||
STR_CHEATS_TOOLTIP :{BLACK}As caixas de confirmación indican se usaches esta trampa antes
|
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_MONEY :{LTBLUE}Incrementar os cartos en {CURRENCY_LONG}
|
||||||
STR_CHEAT_CHANGE_COMPANY :{LTBLUE}Xogando coma compañía: {ORANGE}{COMMA}
|
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}
|
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_CAPTION :{WHITE}Unir punto de ruta
|
||||||
STR_JOIN_WAYPOINT_CREATE_SPLITTED_WAYPOINT :{YELLOW}Constrúe un un punto de ruta separado
|
STR_JOIN_WAYPOINT_CREATE_SPLITTED_WAYPOINT :{YELLOW}Constrúe un un punto de ruta separado
|
||||||
|
|
||||||
|
# Generic toolbar
|
||||||
|
|
||||||
# Rail construction toolbar
|
# Rail construction toolbar
|
||||||
STR_RAIL_TOOLBAR_RAILROAD_CONSTRUCTION_CAPTION :Construción de Ferrocarrís
|
STR_RAIL_TOOLBAR_RAILROAD_CONSTRUCTION_CAPTION :Construción de Ferrocarrís
|
||||||
STR_RAIL_TOOLBAR_ELRAIL_CONSTRUCTION_CAPTION :Construción de Vías Electrificadas
|
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
|
# Group by options for vehicle list
|
||||||
STR_GROUP_BY_NONE :Keine
|
STR_GROUP_BY_NONE :Keine
|
||||||
|
STR_GROUP_BY_SHARED_ORDERS :Gemeinsame Aufträge
|
||||||
|
|
||||||
# Tooltips for the main toolbar
|
# Tooltips for the main toolbar
|
||||||
STR_TOOLBAR_TOOLTIP_PAUSE_GAME :{BLACK}Spiel anhalten
|
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_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 :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_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 :Aktiviere das Bauen von Flüssen: {STRING}
|
||||||
STR_CONFIG_SETTING_ENABLE_BUILD_RIVER_HELPTEXT :Aktiviere das Bauen von Flüssen außerhalb des Szenarioeditors
|
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
|
# Cheat window
|
||||||
STR_CHEATS :{WHITE}Cheats
|
STR_CHEATS :{WHITE}Cheats
|
||||||
STR_CHEATS_TOOLTIP :{BLACK}Die Kontrollkästchen zeigen an, ob dieser Cheat schonmal verwendet worden ist
|
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_MONEY :{LTBLUE}Kontostand um {CURRENCY_LONG} erhöhen
|
||||||
STR_CHEAT_CHANGE_COMPANY :{LTBLUE}Spiele die Firma: {ORANGE}{COMMA}
|
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}
|
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_CONNECTING_CLIENTS :Teilnehmer meldet sich an
|
||||||
STR_NETWORK_SERVER_MESSAGE_GAME_REASON_MANUAL :manuell
|
STR_NETWORK_SERVER_MESSAGE_GAME_REASON_MANUAL :manuell
|
||||||
STR_NETWORK_SERVER_MESSAGE_GAME_REASON_GAME_SCRIPT :Skript
|
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
|
############ End of leave-in-this-order
|
||||||
STR_NETWORK_MESSAGE_CLIENT_LEAVING :geht
|
STR_NETWORK_MESSAGE_CLIENT_LEAVING :geht
|
||||||
STR_NETWORK_MESSAGE_CLIENT_JOINED :*** {STRING} ist dem Spiel beigetreten
|
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_CAPTION :{WHITE}Verbinde mit Wegpunkt
|
||||||
STR_JOIN_WAYPOINT_CREATE_SPLITTED_WAYPOINT :{YELLOW}Errichte einen getrennten 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
|
# Rail construction toolbar
|
||||||
STR_RAIL_TOOLBAR_RAILROAD_CONSTRUCTION_CAPTION :Eisenbahnbau
|
STR_RAIL_TOOLBAR_RAILROAD_CONSTRUCTION_CAPTION :Eisenbahnbau
|
||||||
STR_RAIL_TOOLBAR_ELRAIL_CONSTRUCTION_CAPTION :Bau elektrifizierter Strecken
|
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_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_BUTTON :{BLACK}Details
|
||||||
STR_COMPANY_VIEW_INFRASTRUCTURE_TOOLTIP :{BLACK}Detaillierte Informationen zur Infrastruktur dieser Firma anzeigen
|
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_BUTTON :{BLACK}Verschenke Geld
|
||||||
STR_COMPANY_VIEW_GIVE_MONEY_TOOLTIP :{BLACK}Überweise Geld an eine andere Firma
|
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_BUTTON :{BLACK}Neues Gesicht
|
||||||
STR_COMPANY_VIEW_NEW_FACE_TOOLTIP :{BLACK}Neues Gesicht für Manager aussuchen
|
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_COMPANY_NAME_QUERY_CAPTION :Firmenname
|
||||||
STR_COMPANY_VIEW_PRESIDENT_S_NAME_QUERY_CAPTION :Name des Managers
|
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?
|
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_CURRENCY_REQUIRED :{WHITE}... erfordert {CURRENCY_LONG}
|
||||||
STR_ERROR_CAN_T_REPAY_LOAN :{WHITE}Kredit kann nicht getilgt werden...
|
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_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_BUY_COMPANY :{WHITE}Firmenkauf nicht möglich...
|
||||||
STR_ERROR_CAN_T_BUILD_COMPANY_HEADQUARTERS :{WHITE}Firmensitz kann nicht gebaut werden ...
|
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...
|
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_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_NOTHING_TO_DO :{WHITE}Es treffen keine Ersetzungs-/Erneuerungsregeln zu
|
||||||
STR_ERROR_AUTOREPLACE_MONEY_LIMIT :(Geld fehlt)
|
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
|
# Rail construction errors
|
||||||
STR_ERROR_IMPOSSIBLE_TRACK_COMBINATION :{WHITE}Unmögliche Gleisverbindung
|
STR_ERROR_IMPOSSIBLE_TRACK_COMBINATION :{WHITE}Unmögliche Gleisverbindung
|
||||||
|
@@ -1901,7 +1901,6 @@ STR_ABANDON_SCENARIO_QUERY :{YELLOW}Είσ
|
|||||||
# Cheat window
|
# Cheat window
|
||||||
STR_CHEATS :{WHITE}Απατεωνιές
|
STR_CHEATS :{WHITE}Απατεωνιές
|
||||||
STR_CHEATS_TOOLTIP :{BLACK}Τα κουτάκια δείχνουν αν έχετε ξαναχρησιμοποιήσει αυτή την απατεωνιά
|
STR_CHEATS_TOOLTIP :{BLACK}Τα κουτάκια δείχνουν αν έχετε ξαναχρησιμοποιήσει αυτή την απατεωνιά
|
||||||
STR_CHEATS_WARNING :{BLACK}Προσοχή! Είστε έτοιμοι να προδώσετε τους φίλους ανταγωνιστές σας. Θυμηθείτε ότι αυτή η ντροπή θα μείνει για πάντα.
|
|
||||||
STR_CHEAT_MONEY :{LTBLUE}Αύξηση χρημάτων κατά {CURRENCY_LONG}
|
STR_CHEAT_MONEY :{LTBLUE}Αύξηση χρημάτων κατά {CURRENCY_LONG}
|
||||||
STR_CHEAT_CHANGE_COMPANY :{LTBLUE}Παίζετε με την εταιρία: {ORANGE}{COMMA}
|
STR_CHEAT_CHANGE_COMPANY :{LTBLUE}Παίζετε με την εταιρία: {ORANGE}{COMMA}
|
||||||
STR_CHEAT_EXTRA_DYNAMITE :{LTBLUE}Μαγική μπουλντόζα (αφαιρεί βιομηχανίες, αμετακίνητα αντικείμενα): {ORANGE}{STRING}
|
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_CAPTION :{WHITE}Συνένωση σημείου καθοδήγησης
|
||||||
STR_JOIN_WAYPOINT_CREATE_SPLITTED_WAYPOINT :{YELLOW}Κτίσιμο ενός ξεχωριστού σημείου καθοδήγησης
|
STR_JOIN_WAYPOINT_CREATE_SPLITTED_WAYPOINT :{YELLOW}Κτίσιμο ενός ξεχωριστού σημείου καθοδήγησης
|
||||||
|
|
||||||
|
# Generic toolbar
|
||||||
|
|
||||||
# Rail construction toolbar
|
# Rail construction toolbar
|
||||||
STR_RAIL_TOOLBAR_RAILROAD_CONSTRUCTION_CAPTION :Κατασκευή Σιδηρόδρομου
|
STR_RAIL_TOOLBAR_RAILROAD_CONSTRUCTION_CAPTION :Κατασκευή Σιδηρόδρομου
|
||||||
STR_RAIL_TOOLBAR_ELRAIL_CONSTRUCTION_CAPTION :Κατασκευή Ηλεκτροδοτημένου Σιδηρόδρομου
|
STR_RAIL_TOOLBAR_ELRAIL_CONSTRUCTION_CAPTION :Κατασκευή Ηλεκτροδοτημένου Σιδηρόδρομου
|
||||||
|
@@ -1787,7 +1787,6 @@ STR_ABANDON_SCENARIO_QUERY :{YELLOW}האם
|
|||||||
# Cheat window
|
# Cheat window
|
||||||
STR_CHEATS :{WHITE}(cheats) טריקים
|
STR_CHEATS :{WHITE}(cheats) טריקים
|
||||||
STR_CHEATS_TOOLTIP :{BLACK}תיבות הסימון מציינות האם השתמשת בטריק הנתון בעבר
|
STR_CHEATS_TOOLTIP :{BLACK}תיבות הסימון מציינות האם השתמשת בטריק הנתון בעבר
|
||||||
STR_CHEATS_WARNING :{BLACK}אזהרה! את/ה עומ/ת לבגוד בחבריך למשחק. קח/י בחשבון שחרפה כזו תיזכר לנצח.
|
|
||||||
STR_CHEAT_MONEY :{LTBLUE}{CURRENCY_LONG}- הגדל את כמות הכסף במאזנך ל
|
STR_CHEAT_MONEY :{LTBLUE}{CURRENCY_LONG}- הגדל את כמות הכסף במאזנך ל
|
||||||
STR_CHEAT_CHANGE_COMPANY :{ORANGE}{COMMA}{LTBLUE} :שחק כבעלי החברה
|
STR_CHEAT_CHANGE_COMPANY :{ORANGE}{COMMA}{LTBLUE} :שחק כבעלי החברה
|
||||||
STR_CHEAT_EXTRA_DYNAMITE :{LTBLUE}טרקטור אימתני (הסרת מפעלים, רכיבים שאי אפשר להזיז): {ORANGE}{STRING}
|
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_CAPTION :{WHITE}חבר נקודות ציון
|
||||||
STR_JOIN_WAYPOINT_CREATE_SPLITTED_WAYPOINT :{YELLOW}בנה נקודת ציון נפרדת
|
STR_JOIN_WAYPOINT_CREATE_SPLITTED_WAYPOINT :{YELLOW}בנה נקודת ציון נפרדת
|
||||||
|
|
||||||
|
# Generic toolbar
|
||||||
|
|
||||||
# Rail construction toolbar
|
# Rail construction toolbar
|
||||||
STR_RAIL_TOOLBAR_RAILROAD_CONSTRUCTION_CAPTION :בניית מסילות
|
STR_RAIL_TOOLBAR_RAILROAD_CONSTRUCTION_CAPTION :בניית מסילות
|
||||||
STR_RAIL_TOOLBAR_ELRAIL_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