Merge branch 'master' into Translation
2
.github/workflows/build.yml
vendored
|
@ -10,6 +10,8 @@ on:
|
|||
jobs:
|
||||
build-cmake:
|
||||
runs-on: ${{ matrix.os }}
|
||||
env:
|
||||
CARGO_HTTP_MULTIPLEXING: false
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
|
|
9
.github/workflows/clang-sanitizer.yml
vendored
|
@ -11,6 +11,8 @@ on:
|
|||
jobs:
|
||||
check-clang-san:
|
||||
runs-on: ubuntu-latest
|
||||
env:
|
||||
CARGO_HTTP_MULTIPLEXING: false
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
with:
|
||||
|
@ -24,14 +26,17 @@ jobs:
|
|||
uses: Swatinem/rust-cache@v2
|
||||
- name: Build with ASan and UBSan
|
||||
run: |
|
||||
mkdir clang-sanitizer
|
||||
cd clang-sanitizer
|
||||
export CC=clang
|
||||
export CXX=clang++
|
||||
export CXXFLAGS="-fsanitize=address,undefined -fsanitize-recover=address,undefined -fno-omit-frame-pointer"
|
||||
export CFLAGS="-fsanitize=address,undefined -fsanitize-recover=address,undefined -fno-omit-frame-pointer"
|
||||
cmake -DCMAKE_BUILD_TYPE=Debug -DHEADLESS_CLIENT=ON -Werror=dev -DDOWNLOAD_GTEST=ON -DDEV=ON -DCMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG=. .
|
||||
cmake -DCMAKE_BUILD_TYPE=Debug -DHEADLESS_CLIENT=ON -Werror=dev -DDOWNLOAD_GTEST=ON -DDEV=ON -DCMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG=. ..
|
||||
make -j"$(nproc)"
|
||||
- name: Run server and headless client with ASan and UBSan
|
||||
run: |
|
||||
cd clang-sanitizer
|
||||
export UBSAN_OPTIONS=suppressions=./ubsan.supp:log_path=./SAN:print_stacktrace=1:halt_on_errors=0
|
||||
export ASAN_OPTIONS=log_path=./SAN:print_stacktrace=1:check_initialization_order=1:detect_leaks=1:halt_on_errors=0
|
||||
export LSAN_OPTIONS=suppressions=./lsan.supp
|
||||
|
@ -44,6 +49,7 @@ jobs:
|
|||
fi
|
||||
- name: Run unit tests with ASan and UBSan
|
||||
run: |
|
||||
cd clang-sanitizer
|
||||
cmake --build . --config Debug --target run_cxx_tests
|
||||
# Rust tests work locally, but still not in CI, even with the same directory
|
||||
if test -n "$(find . -maxdepth 1 -name 'SAN.*' -print -quit)"
|
||||
|
@ -53,6 +59,7 @@ jobs:
|
|||
fi
|
||||
- name: Run integration tests with ASan and UBSan
|
||||
run: |
|
||||
cd clang-sanitizer
|
||||
make run_integration_tests
|
||||
if test -n "$(find . -maxdepth 1 -name 'SAN.*' -print -quit)"
|
||||
then
|
||||
|
|
2
.github/workflows/clang-tidy.yml
vendored
|
@ -11,6 +11,8 @@ on:
|
|||
jobs:
|
||||
check-clang-tidy:
|
||||
runs-on: ubuntu-latest
|
||||
env:
|
||||
CARGO_HTTP_MULTIPLEXING: false
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
with:
|
||||
|
|
2
.github/workflows/codeql-analysis.yml
vendored
|
@ -18,6 +18,8 @@ jobs:
|
|||
analyze:
|
||||
name: Analyze
|
||||
runs-on: ubuntu-latest
|
||||
env:
|
||||
CARGO_HTTP_MULTIPLEXING: false
|
||||
|
||||
strategy:
|
||||
fail-fast: false
|
||||
|
|
4
.github/workflows/rust.yml
vendored
|
@ -10,6 +10,8 @@ on:
|
|||
jobs:
|
||||
rustdoc:
|
||||
runs-on: ubuntu-latest
|
||||
env:
|
||||
CARGO_HTTP_MULTIPLEXING: false
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- name: Cache Rust dependencies
|
||||
|
@ -28,6 +30,8 @@ jobs:
|
|||
|
||||
cargo-deny:
|
||||
runs-on: ubuntu-latest
|
||||
env:
|
||||
CARGO_HTTP_MULTIPLEXING: false
|
||||
strategy:
|
||||
matrix:
|
||||
checks:
|
||||
|
|
183
CMakeLists.txt
|
@ -1,7 +1,4 @@
|
|||
cmake_minimum_required(VERSION 2.8.12...3.19.1)
|
||||
if(CMAKE_VERSION VERSION_LESS 3.12)
|
||||
cmake_policy(VERSION ${CMAKE_VERSION})
|
||||
endif()
|
||||
cmake_minimum_required(VERSION 3.12...3.27.4)
|
||||
|
||||
set(CMAKE_OSX_DEPLOYMENT_TARGET 10.15 CACHE INTERNAL "Minimum macOS deployment version")
|
||||
if(CMAKE_OSX_DEPLOYMENT_TARGET VERSION_LESS 10.15)
|
||||
|
@ -26,16 +23,6 @@ else()
|
|||
endif()
|
||||
|
||||
# Extra support for CMake pre-3.0
|
||||
if(NOT POLICY CMP0048)
|
||||
set(PROJECT_VERSION_MAJOR ${VERSION_MAJOR})
|
||||
set(PROJECT_VERSION_MINOR ${VERSION_MINOR})
|
||||
set(PROJECT_VERSION_PATCH ${VERSION_PATCH})
|
||||
if(VERSION_PATCH STREQUAL "0")
|
||||
set(PROJECT_VERSION ${VERSION_MAJOR}.${VERSION_MINOR})
|
||||
else()
|
||||
set(PROJECT_VERSION ${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH})
|
||||
endif()
|
||||
endif()
|
||||
if(VERSION_PATCH STREQUAL "0")
|
||||
project(DDNet VERSION ${VERSION_MAJOR}.${VERSION_MINOR})
|
||||
else()
|
||||
|
@ -165,26 +152,19 @@ endif()
|
|||
set(DBG $<OR:$<CONFIG:Debug>,$<CONFIG:RelWithDebInfo>>)
|
||||
|
||||
if(IPO)
|
||||
if(CMAKE_VERSION VERSION_GREATER 3.9)
|
||||
include(CheckIPOSupported)
|
||||
check_ipo_supported(RESULT ipo_supported OUTPUT ipo_output)
|
||||
if(ipo_supported)
|
||||
message(STATUS "IPO is enabled")
|
||||
set(ENABLE_IPO TRUE)
|
||||
else()
|
||||
message(WARNING "IPO is not supported: ${ipo_output}")
|
||||
endif()
|
||||
include(CheckIPOSupported)
|
||||
check_ipo_supported(RESULT ipo_supported OUTPUT ipo_output)
|
||||
if(ipo_supported)
|
||||
message(STATUS "IPO is enabled")
|
||||
set(ENABLE_IPO TRUE)
|
||||
else()
|
||||
message(WARNING "IPO enablement requires CMake 3.9+")
|
||||
message(WARNING "IPO is not supported: ${ipo_output}")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(CMAKE_VERSION VERSION_LESS 3.0)
|
||||
configure_file(src/game/version.h vd.h)
|
||||
else()
|
||||
set_property(DIRECTORY APPEND PROPERTY CMAKE_CONFIGURE_DEPENDS
|
||||
src/game/version.h
|
||||
)
|
||||
if(NOT "${CMAKE_CURRENT_BINARY_DIR}" STREQUAL "${CMAKE_CURRENT_SOURCE_DIR}")
|
||||
# Remove version.h generated by previous build code
|
||||
file(REMOVE ${CMAKE_CURRENT_BINARY_DIR}/src/game/version.h)
|
||||
endif()
|
||||
|
||||
set(SERVER_EXECUTABLE DDNet-Server CACHE STRING "Name of the built server executable")
|
||||
|
@ -290,7 +270,7 @@ if(NOT MSVC AND NOT HAIKU)
|
|||
endif()
|
||||
endif()
|
||||
|
||||
if(CMAKE_VERSION VERSION_LESS 3.1 OR TARGET_OS STREQUAL "mac")
|
||||
if(TARGET_OS STREQUAL "mac")
|
||||
add_cxx_compiler_flag_if_supported(OUR_FLAGS_OWN -std=gnu++17)
|
||||
endif()
|
||||
|
||||
|
@ -330,12 +310,6 @@ if(NOT MSVC AND NOT HAIKU)
|
|||
endif()
|
||||
|
||||
add_cxx_compiler_flag_if_supported(OUR_FLAGS_OWN -Wall)
|
||||
if(CMAKE_VERSION VERSION_GREATER 3.3 OR CMAKE_VERSION VERSION_EQUAL 3.3)
|
||||
add_cxx_compiler_flag_if_supported(OUR_FLAGS_OWN
|
||||
$<$<COMPILE_LANGUAGE:C>:-Wdeclaration-after-statement>
|
||||
-Wdeclaration-after-statement
|
||||
)
|
||||
endif()
|
||||
add_cxx_compiler_flag_if_supported(OUR_FLAGS_OWN -Wextra)
|
||||
add_cxx_compiler_flag_if_supported(OUR_FLAGS_OWN -Wno-psabi) # parameter passing for argument of type ‘__gnu_cxx::__normal_iterator<CCommandProcessorFragment_Vulkan::SMemoryBlock<1>*, std::vector<CCommandProcessorFragment_Vulkan::SMemoryBlock<1>, std::allocator<CCommandProcessorFragment_Vulkan::SMemoryBlock<1> > > >’ changed in GCC 7.1
|
||||
add_cxx_compiler_flag_if_supported(OUR_FLAGS_OWN -Wno-unused-parameter)
|
||||
|
@ -387,28 +361,25 @@ function(set_glob VAR GLOBBING EXTS DIRECTORY) # ...
|
|||
if(NOT FILES STREQUAL GLOB_RESULT)
|
||||
message(AUTHOR_WARNING "${VAR} does not contain every file from directory ${DIRECTORY}")
|
||||
set(LIST_BUT_NOT_GLOB)
|
||||
if(POLICY CMP0057)
|
||||
cmake_policy(SET CMP0057 NEW)
|
||||
foreach(file ${FILES})
|
||||
if(NOT file IN_LIST GLOB_RESULT)
|
||||
list(APPEND LIST_BUT_NOT_GLOB ${file})
|
||||
endif()
|
||||
endforeach()
|
||||
if(LIST_BUT_NOT_GLOB)
|
||||
message(AUTHOR_WARNING "Entries only present in ${VAR}: ${LIST_BUT_NOT_GLOB}")
|
||||
foreach(file ${FILES})
|
||||
if(NOT file IN_LIST GLOB_RESULT)
|
||||
list(APPEND LIST_BUT_NOT_GLOB ${file})
|
||||
endif()
|
||||
set(GLOB_BUT_NOT_LIST)
|
||||
foreach(file ${GLOB_RESULT})
|
||||
if(NOT file IN_LIST FILES)
|
||||
list(APPEND GLOB_BUT_NOT_LIST ${file})
|
||||
endif()
|
||||
endforeach()
|
||||
if(GLOB_BUT_NOT_LIST)
|
||||
message(AUTHOR_WARNING "Entries only present in ${DIRECTORY}: ${GLOB_BUT_NOT_LIST}")
|
||||
endif()
|
||||
if(NOT LIST_BUT_NOT_GLOB AND NOT GLOB_BUT_NOT_LIST)
|
||||
message(AUTHOR_WARNING "${VAR} is not alphabetically sorted")
|
||||
endforeach()
|
||||
if(LIST_BUT_NOT_GLOB)
|
||||
message(AUTHOR_WARNING "Entries only present in ${VAR}: ${LIST_BUT_NOT_GLOB}")
|
||||
endif()
|
||||
set(GLOB_BUT_NOT_LIST)
|
||||
foreach(file ${GLOB_RESULT})
|
||||
if(NOT file IN_LIST FILES)
|
||||
list(APPEND GLOB_BUT_NOT_LIST ${file})
|
||||
endif()
|
||||
endforeach()
|
||||
if(GLOB_BUT_NOT_LIST)
|
||||
message(AUTHOR_WARNING "Entries only present in ${DIRECTORY}: ${GLOB_BUT_NOT_LIST}")
|
||||
endif()
|
||||
if(NOT LIST_BUT_NOT_GLOB AND NOT GLOB_BUT_NOT_LIST)
|
||||
message(AUTHOR_WARNING "${VAR} is not alphabetically sorted")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
|
@ -424,19 +395,11 @@ set(CHECKSUM_SRC)
|
|||
|
||||
function(set_own_rpath TARGET)
|
||||
if(NOT TARGET_OS STREQUAL "windows" AND NOT TARGET_OS STREQUAL "mac")
|
||||
if(CMAKE_VERSION VERSION_GREATER 3.8 OR CMAKE_VERSION VERSION_EQUAL 3.8)
|
||||
set_property(TARGET ${TARGET} PROPERTY BUILD_RPATH "$ORIGIN")
|
||||
endif()
|
||||
set_property(TARGET ${TARGET} PROPERTY BUILD_RPATH "$ORIGIN")
|
||||
set_property(TARGET ${TARGET} PROPERTY INSTALL_RPATH "$ORIGIN/../lib/ddnet")
|
||||
endif()
|
||||
endfunction()
|
||||
|
||||
if(NOT TARGET_OS STREQUAL "windows" AND NOT TARGET_OS STREQUAL "mac" AND CMAKE_VERSION VERSION_LESS 3.8)
|
||||
if((CLIENT AND (STEAM OR DISCORD_DYNAMIC)) OR ANTIBOT)
|
||||
message(STATUS "Can't set BUILD_RPATH in CMake before 3.8, pass -Wl,-rpath,'$ORIGIN' manually if you wish to emulate this. Or just install a newer version of CMake...")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
########################################################################
|
||||
# INITIALIZE TARGET LISTS
|
||||
########################################################################
|
||||
|
@ -834,9 +797,6 @@ if(NOT(GTEST_FOUND) AND DOWNLOAD_GTEST)
|
|||
|
||||
set(GTEST_LIBRARIES gtest gmock)
|
||||
set(GTEST_INCLUDE_DIRS)
|
||||
if(CMAKE_VERSION VERSION_LESS 2.8.11)
|
||||
set(GTEST_INCLUDE_DIRS "${gtest_SOURCE_DIR}/include" "${gmock_SOURCE_DIR}/include")
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
|
@ -1222,8 +1182,11 @@ set(EXPECTED_DATA
|
|||
countryflags/EG.png
|
||||
countryflags/EH.png
|
||||
countryflags/ER.png
|
||||
countryflags/ES-CT.png
|
||||
countryflags/ES-GA.png
|
||||
countryflags/ES.png
|
||||
countryflags/ET.png
|
||||
countryflags/EU.png
|
||||
countryflags/FI.png
|
||||
countryflags/FJ.png
|
||||
countryflags/FK.png
|
||||
|
@ -1231,6 +1194,10 @@ set(EXPECTED_DATA
|
|||
countryflags/FO.png
|
||||
countryflags/FR.png
|
||||
countryflags/GA.png
|
||||
countryflags/GB-ENG.png
|
||||
countryflags/GB-NIR.png
|
||||
countryflags/GB-SCT.png
|
||||
countryflags/GB-WLS.png
|
||||
countryflags/GB.png
|
||||
countryflags/GD.png
|
||||
countryflags/GE.png
|
||||
|
@ -1396,13 +1363,6 @@ set(EXPECTED_DATA
|
|||
countryflags/VU.png
|
||||
countryflags/WF.png
|
||||
countryflags/WS.png
|
||||
countryflags/XCA.png
|
||||
countryflags/XEN.png
|
||||
countryflags/XEU.png
|
||||
countryflags/XGL.png
|
||||
countryflags/XNI.png
|
||||
countryflags/XSC.png
|
||||
countryflags/XWA.png
|
||||
countryflags/YE.png
|
||||
countryflags/ZA.png
|
||||
countryflags/ZM.png
|
||||
|
@ -1411,14 +1371,25 @@ set(EXPECTED_DATA
|
|||
countryflags/index.txt
|
||||
debug_font.png
|
||||
editor/audio_source.png
|
||||
editor/automap/basic_freeze.rules
|
||||
editor/automap/ddmax_freeze.rules
|
||||
editor/automap/ddnet_tiles.rules
|
||||
editor/automap/ddnet_walls.rules
|
||||
editor/automap/desert_main.rules
|
||||
editor/automap/fadeout.rules
|
||||
editor/automap/generic_clear.rules
|
||||
editor/automap/generic_unhookable.rules
|
||||
editor/automap/generic_unhookable_0.7.rules
|
||||
editor/automap/grass_main.rules
|
||||
editor/automap/grass_main_0.7.rules
|
||||
editor/automap/jungle_main.rules
|
||||
editor/automap/jungle_midground.rules
|
||||
editor/automap/round_tiles.rules
|
||||
editor/automap/water.rules
|
||||
editor/automap/winter_main.rules
|
||||
editor/background.png
|
||||
editor/basic_freeze.rules
|
||||
editor/checker.png
|
||||
editor/cursor.png
|
||||
editor/ddmax_freeze.rules
|
||||
editor/ddnet_tiles.rules
|
||||
editor/ddnet_walls.rules
|
||||
editor/desert_main.rules
|
||||
editor/entities/DDNet.png
|
||||
editor/entities/FNG.png
|
||||
editor/entities/Race.png
|
||||
|
@ -1431,23 +1402,12 @@ set(EXPECTED_DATA
|
|||
editor/entities_clear/fng.png
|
||||
editor/entities_clear/race.png
|
||||
editor/entities_clear/vanilla.png
|
||||
editor/fadeout.rules
|
||||
editor/front.png
|
||||
editor/generic_clear.rules
|
||||
editor/generic_unhookable.rules
|
||||
editor/generic_unhookable_0.7.rules
|
||||
editor/grass_main.rules
|
||||
editor/grass_main_0.7.rules
|
||||
editor/jungle_main.rules
|
||||
editor/jungle_midground.rules
|
||||
editor/round_tiles.rules
|
||||
editor/speed_arrow.png
|
||||
editor/speedup.png
|
||||
editor/switch.png
|
||||
editor/tele.png
|
||||
editor/tune.png
|
||||
editor/water.rules
|
||||
editor/winter_main.rules
|
||||
emoticons.png
|
||||
extras.png
|
||||
fonts/DejaVuSans.ttf
|
||||
|
@ -2019,6 +1979,7 @@ set_src(ENGINE_GFX GLOB src/engine/gfx
|
|||
image_manipulation.h
|
||||
)
|
||||
set_src(GAME_SHARED GLOB src/game
|
||||
alloc.h
|
||||
collision.cpp
|
||||
collision.h
|
||||
ddracechat.h
|
||||
|
@ -2303,7 +2264,7 @@ if(CLIENT)
|
|||
ui_scrollregion.cpp
|
||||
ui_scrollregion.h
|
||||
)
|
||||
set_src(GAME_EDITOR GLOB src/game/editor
|
||||
set_src(GAME_EDITOR GLOB_RECURSE src/game/editor
|
||||
auto_map.cpp
|
||||
auto_map.h
|
||||
component.cpp
|
||||
|
@ -2311,20 +2272,32 @@ if(CLIENT)
|
|||
editor.cpp
|
||||
editor.h
|
||||
explanations.cpp
|
||||
io.cpp
|
||||
layer_game.cpp
|
||||
layer_quads.cpp
|
||||
layer_sounds.cpp
|
||||
layer_tiles.cpp
|
||||
map_grid.cpp
|
||||
map_grid.h
|
||||
map_view.cpp
|
||||
map_view.h
|
||||
mapitems/image.cpp
|
||||
mapitems/image.h
|
||||
mapitems/layer_front.cpp
|
||||
mapitems/layer_game.cpp
|
||||
mapitems/layer_group.cpp
|
||||
mapitems/layer_quads.cpp
|
||||
mapitems/layer_sounds.cpp
|
||||
mapitems/layer_speedup.cpp
|
||||
mapitems/layer_switch.cpp
|
||||
mapitems/layer_tele.cpp
|
||||
mapitems/layer_tiles.cpp
|
||||
mapitems/layer_tune.cpp
|
||||
mapitems/map.cpp
|
||||
mapitems/map_io.cpp
|
||||
mapitems/sound.cpp
|
||||
mapitems/sound.h
|
||||
popups.cpp
|
||||
proof_mode.cpp
|
||||
proof_mode.h
|
||||
smooth_value.cpp
|
||||
smooth_value.h
|
||||
tileart.cpp
|
||||
)
|
||||
set(GAME_GENERATED_CLIENT
|
||||
src/game/generated/checksum.cpp
|
||||
|
@ -2508,7 +2481,6 @@ if(SERVER)
|
|||
upnp.h
|
||||
)
|
||||
set_src(GAME_SERVER GLOB_RECURSE src/game/server
|
||||
alloc.h
|
||||
ddracechat.cpp
|
||||
ddracecommands.cpp
|
||||
entities/character.cpp
|
||||
|
@ -3078,8 +3050,6 @@ endif()
|
|||
|
||||
if(DEV)
|
||||
# Don't generate CPack targets.
|
||||
elseif(CMAKE_VERSION VERSION_LESS 3.6 OR CMAKE_VERSION VERSION_EQUAL 3.6)
|
||||
message(WARNING "Cannot create CPack targets, CMake version too old. Use CMake 3.6 or newer.")
|
||||
else()
|
||||
set(EXTRA_ARGS DESTINATION ${CPACK_PACKAGE_FILE_NAME} COMPONENT portable EXCLUDE_FROM_ALL)
|
||||
install(TARGETS ${CPACK_TARGETS} ${EXTRA_ARGS})
|
||||
|
@ -3309,11 +3279,9 @@ foreach(target ${TARGETS_LINK})
|
|||
endforeach()
|
||||
|
||||
foreach(target ${TARGETS_OWN})
|
||||
if((CMAKE_VERSION VERSION_GREATER 3.1 OR CMAKE_VERSION VERSION_EQUAL 3.1))
|
||||
set_property(TARGET ${target} PROPERTY CXX_STANDARD 17)
|
||||
set_property(TARGET ${target} PROPERTY CXX_STANDARD_REQUIRED ON)
|
||||
set_property(TARGET ${target} PROPERTY CXX_EXTENSIONS OFF)
|
||||
endif()
|
||||
set_property(TARGET ${target} PROPERTY CXX_STANDARD 17)
|
||||
set_property(TARGET ${target} PROPERTY CXX_STANDARD_REQUIRED ON)
|
||||
set_property(TARGET ${target} PROPERTY CXX_EXTENSIONS OFF)
|
||||
|
||||
if(MSVC)
|
||||
target_compile_options(${target} PRIVATE /wd4244) # Possible loss of data (float -> int, int -> float, etc.).
|
||||
|
@ -3377,9 +3345,6 @@ foreach(target ${TARGETS_OWN})
|
|||
target_compile_definitions(${target} PRIVATE CONF_DISCORD_DYNAMIC)
|
||||
endif()
|
||||
endif()
|
||||
if(VERSION)
|
||||
target_compile_definitions(${target} PRIVATE GAME_RELEASE_VERSION="${VERSION}")
|
||||
endif()
|
||||
if(CMAKE_SYSTEM_NAME STREQUAL "Emscripten")
|
||||
target_compile_definitions(${target} PRIVATE CONF_WEBASM)
|
||||
endif()
|
||||
|
|
Before Width: | Height: | Size: 740 B After Width: | Height: | Size: 740 B |
Before Width: | Height: | Size: 4 KiB After Width: | Height: | Size: 4 KiB |
Before Width: | Height: | Size: 1.6 KiB After Width: | Height: | Size: 1.6 KiB |
Before Width: | Height: | Size: 814 B After Width: | Height: | Size: 814 B |
Before Width: | Height: | Size: 2 KiB After Width: | Height: | Size: 2 KiB |
Before Width: | Height: | Size: 2 KiB After Width: | Height: | Size: 2 KiB |
Before Width: | Height: | Size: 4.5 KiB After Width: | Height: | Size: 4.5 KiB |
Before Width: | Height: | Size: 1 KiB After Width: | Height: | Size: 6.3 KiB |
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 1.9 KiB |
Before Width: | Height: | Size: 2.8 KiB After Width: | Height: | Size: 1.4 KiB |
Before Width: | Height: | Size: 2.2 KiB After Width: | Height: | Size: 2.1 KiB |
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 1.8 KiB |
Before Width: | Height: | Size: 1.6 KiB After Width: | Height: | Size: 4.8 KiB |
|
@ -6,30 +6,30 @@
|
|||
default
|
||||
== -1
|
||||
|
||||
XEN
|
||||
##### ISO 3166-2 subdivisions #####
|
||||
|
||||
GB-ENG
|
||||
== 901
|
||||
|
||||
XNI
|
||||
GB-NIR
|
||||
== 902
|
||||
|
||||
XSC
|
||||
GB-SCT
|
||||
== 903
|
||||
|
||||
XWA
|
||||
GB-WLS
|
||||
== 904
|
||||
|
||||
XEU
|
||||
== 905
|
||||
|
||||
XCA
|
||||
ES-CT
|
||||
== 906
|
||||
|
||||
XGL
|
||||
ES-GA
|
||||
== 907
|
||||
|
||||
#south sudan, non official code#
|
||||
SS
|
||||
== 737
|
||||
##### ISO 3166/MA exceptional reservations #####
|
||||
|
||||
EU
|
||||
== 905
|
||||
|
||||
##### ISO 3166-1 based #####
|
||||
|
||||
|
@ -648,6 +648,9 @@ SB
|
|||
SO
|
||||
== 706
|
||||
|
||||
SS
|
||||
== 737
|
||||
|
||||
ZA
|
||||
== 710
|
||||
|
||||
|
|
|
@ -140,9 +140,6 @@ Favorites
|
|||
Feet
|
||||
== ﺔﻣﺰﺟ
|
||||
|
||||
Filter
|
||||
== ﺔﻴﻔﺼﺗ
|
||||
|
||||
Fire
|
||||
== ﺭﺎﻧ
|
||||
|
||||
|
@ -155,9 +152,6 @@ Force vote
|
|||
Free-View
|
||||
== ﺮﺤﻟﺍ ﺮﻈﻨﻤﻟﺍ
|
||||
|
||||
Friends
|
||||
== ﺀﺎﻗﺪﺻﻻﺍ
|
||||
|
||||
Fullscreen
|
||||
== ﻞﻣﺎﻜﻟﺍ ﺔﺷﺎﺸﻟﺍ ﻊﺿﻭ
|
||||
|
||||
|
@ -354,12 +348,6 @@ Screenshot
|
|||
Server address:
|
||||
== ﺮﻓﺮﻴﺴﻟﺍ ﻥﺍﻮﻨﻋ:
|
||||
|
||||
Server details
|
||||
== ﺮﻓﺮﻴﺴﻟﺍ ﻞﻴﺻﺎﻔﺗ
|
||||
|
||||
Server filter
|
||||
== ﺮﻓﺮﻴﺴﻟﺍ ﺔﻴﻔﺼﺗ
|
||||
|
||||
Server info
|
||||
== ﺮﻓﺮﻴﺴﻟﺍ ﺕﺎﻣﻮﻠﻌﻣ
|
||||
|
||||
|
@ -528,9 +516,6 @@ Netversion:
|
|||
Map:
|
||||
== ﺏﺎﻤﻟﺍ:
|
||||
|
||||
Info
|
||||
== ﺕﺎﻣﻮﻠﻌﻣ
|
||||
|
||||
Hue
|
||||
== ﻥﻮﻟ
|
||||
|
||||
|
@ -1355,12 +1340,35 @@ Pause the current demo
|
|||
Stop the current demo
|
||||
==
|
||||
|
||||
Go back the specified duration
|
||||
==
|
||||
|
||||
[Demo player duration]
|
||||
%d min.
|
||||
==
|
||||
|
||||
[Demo player duration]
|
||||
%d sec.
|
||||
==
|
||||
|
||||
Change the skip duration
|
||||
==
|
||||
|
||||
Go forward the specified duration
|
||||
==
|
||||
|
||||
Go back one tick
|
||||
==
|
||||
|
||||
Go forward one tick
|
||||
==
|
||||
|
||||
Go back one marker
|
||||
==
|
||||
|
||||
Go forward one marker
|
||||
==
|
||||
|
||||
Slow down the demo
|
||||
==
|
||||
|
||||
|
@ -1376,12 +1384,6 @@ Mark the end of a cut (right click to reset)
|
|||
Export cut as a separate demo
|
||||
==
|
||||
|
||||
Go back one marker
|
||||
==
|
||||
|
||||
Go forward one marker
|
||||
==
|
||||
|
||||
Close the demo player
|
||||
==
|
||||
|
||||
|
@ -1397,6 +1399,9 @@ Cut interval
|
|||
Cut length
|
||||
==
|
||||
|
||||
Render cut to video
|
||||
==
|
||||
|
||||
Loading demo files
|
||||
==
|
||||
|
||||
|
@ -1448,10 +1453,10 @@ Open the directory that contains the configuration and user files
|
|||
Open the directory to add custom themes
|
||||
==
|
||||
|
||||
Loading skin files
|
||||
Toggle to edit your dummy settings
|
||||
==
|
||||
|
||||
Toggle to edit your dummy settings
|
||||
Loading skin files
|
||||
==
|
||||
|
||||
Download community skins
|
||||
|
|
|
@ -147,9 +147,6 @@ Favorites
|
|||
Feet
|
||||
== Ногі
|
||||
|
||||
Filter
|
||||
== Фільтр
|
||||
|
||||
Fire
|
||||
== Стрэл
|
||||
|
||||
|
@ -162,9 +159,6 @@ Force vote
|
|||
Free-View
|
||||
== Вольны агляд
|
||||
|
||||
Friends
|
||||
== Сябры
|
||||
|
||||
Fullscreen
|
||||
== Поўнаэкранны рэжым
|
||||
|
||||
|
@ -358,12 +352,6 @@ Screenshot
|
|||
Server address:
|
||||
== Адрас сервера:
|
||||
|
||||
Server details
|
||||
== Дэталі сервера
|
||||
|
||||
Server filter
|
||||
== Фільтр сервераў
|
||||
|
||||
Server info
|
||||
== Інфармацыя
|
||||
|
||||
|
@ -532,9 +520,6 @@ Netversion:
|
|||
Map:
|
||||
== Карта:
|
||||
|
||||
Info
|
||||
== Інфа
|
||||
|
||||
Hue
|
||||
== Адценне
|
||||
|
||||
|
@ -1727,6 +1712,26 @@ Unable to rename the folder
|
|||
(paused)
|
||||
==
|
||||
|
||||
Go back the specified duration
|
||||
==
|
||||
|
||||
[Demo player duration]
|
||||
%d min.
|
||||
==
|
||||
|
||||
[Demo player duration]
|
||||
%d sec.
|
||||
==
|
||||
|
||||
Change the skip duration
|
||||
==
|
||||
|
||||
Go forward the specified duration
|
||||
==
|
||||
|
||||
Render cut to video
|
||||
==
|
||||
|
||||
All combined
|
||||
==
|
||||
|
||||
|
|
|
@ -148,9 +148,6 @@ Favorites
|
|||
Feet
|
||||
== Stopala
|
||||
|
||||
Filter
|
||||
== Filter
|
||||
|
||||
Fire
|
||||
== Pucanje
|
||||
|
||||
|
@ -163,9 +160,6 @@ Force vote
|
|||
Free-View
|
||||
== Slobodan pogled
|
||||
|
||||
Friends
|
||||
== Prijatelji
|
||||
|
||||
Fullscreen
|
||||
== Čitav ekran
|
||||
|
||||
|
@ -359,12 +353,6 @@ Screenshot
|
|||
Server address:
|
||||
== Adresa servera:
|
||||
|
||||
Server details
|
||||
== Podaci o serveru
|
||||
|
||||
Server filter
|
||||
== Filter servera
|
||||
|
||||
Server info
|
||||
== O Serveru
|
||||
|
||||
|
@ -535,9 +523,6 @@ Netversion:
|
|||
Map:
|
||||
== Mapa:
|
||||
|
||||
Info
|
||||
== Info
|
||||
|
||||
Hue
|
||||
== Nijans.
|
||||
|
||||
|
@ -1247,12 +1232,35 @@ Pause the current demo
|
|||
Stop the current demo
|
||||
==
|
||||
|
||||
Go back the specified duration
|
||||
==
|
||||
|
||||
[Demo player duration]
|
||||
%d min.
|
||||
==
|
||||
|
||||
[Demo player duration]
|
||||
%d sec.
|
||||
==
|
||||
|
||||
Change the skip duration
|
||||
==
|
||||
|
||||
Go forward the specified duration
|
||||
==
|
||||
|
||||
Go back one tick
|
||||
==
|
||||
|
||||
Go forward one tick
|
||||
==
|
||||
|
||||
Go back one marker
|
||||
==
|
||||
|
||||
Go forward one marker
|
||||
==
|
||||
|
||||
Slow down the demo
|
||||
==
|
||||
|
||||
|
@ -1268,12 +1276,6 @@ Mark the end of a cut (right click to reset)
|
|||
Export cut as a separate demo
|
||||
==
|
||||
|
||||
Go back one marker
|
||||
==
|
||||
|
||||
Go forward one marker
|
||||
==
|
||||
|
||||
Close the demo player
|
||||
==
|
||||
|
||||
|
@ -1289,6 +1291,9 @@ Cut interval
|
|||
Cut length
|
||||
==
|
||||
|
||||
Render cut to video
|
||||
==
|
||||
|
||||
Loading demo files
|
||||
==
|
||||
|
||||
|
@ -1361,10 +1366,10 @@ Open the directory to add custom themes
|
|||
Max CSVs
|
||||
==
|
||||
|
||||
Loading skin files
|
||||
Toggle to edit your dummy settings
|
||||
==
|
||||
|
||||
Toggle to edit your dummy settings
|
||||
Loading skin files
|
||||
==
|
||||
|
||||
Download skins
|
||||
|
|
|
@ -170,9 +170,6 @@ Favorites
|
|||
Feet
|
||||
== Pés
|
||||
|
||||
Filter
|
||||
== Filtro
|
||||
|
||||
Fire
|
||||
== Atirar
|
||||
|
||||
|
@ -185,9 +182,6 @@ Force vote
|
|||
Free-View
|
||||
== Visualização livre
|
||||
|
||||
Friends
|
||||
== Amigos
|
||||
|
||||
Fullscreen
|
||||
== Tela cheia
|
||||
|
||||
|
@ -384,12 +378,6 @@ Screenshot
|
|||
Server address:
|
||||
== Endereço:
|
||||
|
||||
Server details
|
||||
== Detalhes do servidor
|
||||
|
||||
Server filter
|
||||
== Filtro de servidores
|
||||
|
||||
Server info
|
||||
== Servidor
|
||||
|
||||
|
@ -576,9 +564,6 @@ Show ghost
|
|||
Clan plates size
|
||||
== Tamanho da placa do clã
|
||||
|
||||
Info
|
||||
== Info
|
||||
|
||||
No updates available
|
||||
== Nenhuma atualização disponível
|
||||
|
||||
|
@ -1767,3 +1752,23 @@ Unable to delete the folder '%s'. Make sure it's empty first.
|
|||
|
||||
Moved ingame
|
||||
== Movido no jogo
|
||||
|
||||
Go back the specified duration
|
||||
==
|
||||
|
||||
[Demo player duration]
|
||||
%d min.
|
||||
==
|
||||
|
||||
[Demo player duration]
|
||||
%d sec.
|
||||
==
|
||||
|
||||
Change the skip duration
|
||||
==
|
||||
|
||||
Go forward the specified duration
|
||||
==
|
||||
|
||||
Render cut to video
|
||||
==
|
||||
|
|
|
@ -145,9 +145,6 @@ Favorites
|
|||
Feet
|
||||
== Крака
|
||||
|
||||
Filter
|
||||
== Филтър
|
||||
|
||||
Fire
|
||||
== Стрелба
|
||||
|
||||
|
@ -160,9 +157,6 @@ Force vote
|
|||
Free-View
|
||||
== Свободен Изглед
|
||||
|
||||
Friends
|
||||
== Приятели
|
||||
|
||||
Fullscreen
|
||||
== Цял Екран
|
||||
|
||||
|
@ -356,12 +350,6 @@ Screenshot
|
|||
Server address:
|
||||
== Адрес на сървъра:
|
||||
|
||||
Server details
|
||||
== Детайли за Сървъра
|
||||
|
||||
Server filter
|
||||
== Филтър на сървъра
|
||||
|
||||
Server info
|
||||
== Инфо
|
||||
|
||||
|
@ -529,9 +517,6 @@ Netversion:
|
|||
Map:
|
||||
== Карта:
|
||||
|
||||
Info
|
||||
== Инфо
|
||||
|
||||
Hue
|
||||
== Оттенък
|
||||
|
||||
|
@ -908,12 +893,35 @@ Pause the current demo
|
|||
Stop the current demo
|
||||
==
|
||||
|
||||
Go back the specified duration
|
||||
==
|
||||
|
||||
[Demo player duration]
|
||||
%d min.
|
||||
==
|
||||
|
||||
[Demo player duration]
|
||||
%d sec.
|
||||
==
|
||||
|
||||
Change the skip duration
|
||||
==
|
||||
|
||||
Go forward the specified duration
|
||||
==
|
||||
|
||||
Go back one tick
|
||||
==
|
||||
|
||||
Go forward one tick
|
||||
==
|
||||
|
||||
Go back one marker
|
||||
==
|
||||
|
||||
Go forward one marker
|
||||
==
|
||||
|
||||
Slow down the demo
|
||||
==
|
||||
|
||||
|
@ -929,12 +937,6 @@ Mark the end of a cut (right click to reset)
|
|||
Export cut as a separate demo
|
||||
==
|
||||
|
||||
Go back one marker
|
||||
==
|
||||
|
||||
Go forward one marker
|
||||
==
|
||||
|
||||
Close the demo player
|
||||
==
|
||||
|
||||
|
@ -953,6 +955,9 @@ Cut length
|
|||
Remove chat
|
||||
==
|
||||
|
||||
Render cut to video
|
||||
==
|
||||
|
||||
Please use a different name
|
||||
==
|
||||
|
||||
|
@ -1103,10 +1108,10 @@ Max CSVs
|
|||
Dummy settings
|
||||
==
|
||||
|
||||
Loading skin files
|
||||
Toggle to edit your dummy settings
|
||||
==
|
||||
|
||||
Toggle to edit your dummy settings
|
||||
Loading skin files
|
||||
==
|
||||
|
||||
Download skins
|
||||
|
@ -1160,10 +1165,16 @@ Show all
|
|||
Toggle dyncam
|
||||
==
|
||||
|
||||
Toggle dummy
|
||||
Toggle ghost
|
||||
==
|
||||
|
||||
Toggle ghost
|
||||
Converse
|
||||
==
|
||||
|
||||
Chat command
|
||||
==
|
||||
|
||||
Toggle dummy
|
||||
==
|
||||
|
||||
Dummy copy
|
||||
|
@ -1172,9 +1183,6 @@ Dummy copy
|
|||
Hammerfly dummy
|
||||
==
|
||||
|
||||
Converse
|
||||
==
|
||||
|
||||
Spectate previous
|
||||
==
|
||||
|
||||
|
@ -1190,9 +1198,6 @@ Show entities
|
|||
Show HUD
|
||||
==
|
||||
|
||||
Chat command
|
||||
==
|
||||
|
||||
Enable controller
|
||||
==
|
||||
|
||||
|
|
|
@ -140,9 +140,6 @@ Favorites
|
|||
Feet
|
||||
== Peus
|
||||
|
||||
Filter
|
||||
== Filtre
|
||||
|
||||
Fire
|
||||
== Disparar
|
||||
|
||||
|
@ -155,9 +152,6 @@ Force vote
|
|||
Free-View
|
||||
== Vista lliure
|
||||
|
||||
Friends
|
||||
== Amics
|
||||
|
||||
Fullscreen
|
||||
== Pantalla completa
|
||||
|
||||
|
@ -354,12 +348,6 @@ Screenshot
|
|||
Server address:
|
||||
== IP del servidor:
|
||||
|
||||
Server details
|
||||
== Detalls del servidor
|
||||
|
||||
Server filter
|
||||
== Filtre del servidor
|
||||
|
||||
Server info
|
||||
== Servidor
|
||||
|
||||
|
@ -540,9 +528,6 @@ Netversion:
|
|||
Map:
|
||||
== Mapa:
|
||||
|
||||
Info
|
||||
== Informació
|
||||
|
||||
Hue
|
||||
== Tonalitat
|
||||
|
||||
|
@ -1427,12 +1412,35 @@ Pause the current demo
|
|||
Stop the current demo
|
||||
==
|
||||
|
||||
Go back the specified duration
|
||||
==
|
||||
|
||||
[Demo player duration]
|
||||
%d min.
|
||||
==
|
||||
|
||||
[Demo player duration]
|
||||
%d sec.
|
||||
==
|
||||
|
||||
Change the skip duration
|
||||
==
|
||||
|
||||
Go forward the specified duration
|
||||
==
|
||||
|
||||
Go back one tick
|
||||
==
|
||||
|
||||
Go forward one tick
|
||||
==
|
||||
|
||||
Go back one marker
|
||||
==
|
||||
|
||||
Go forward one marker
|
||||
==
|
||||
|
||||
Slow down the demo
|
||||
==
|
||||
|
||||
|
@ -1448,12 +1456,6 @@ Mark the end of a cut (right click to reset)
|
|||
Export cut as a separate demo
|
||||
==
|
||||
|
||||
Go back one marker
|
||||
==
|
||||
|
||||
Go forward one marker
|
||||
==
|
||||
|
||||
Close the demo player
|
||||
==
|
||||
|
||||
|
@ -1469,6 +1471,9 @@ Cut interval
|
|||
Cut length
|
||||
==
|
||||
|
||||
Render cut to video
|
||||
==
|
||||
|
||||
Loading demo files
|
||||
==
|
||||
|
||||
|
@ -1514,10 +1519,10 @@ Open the directory that contains the configuration and user files
|
|||
Open the directory to add custom themes
|
||||
==
|
||||
|
||||
Loading skin files
|
||||
Toggle to edit your dummy settings
|
||||
==
|
||||
|
||||
Toggle to edit your dummy settings
|
||||
Loading skin files
|
||||
==
|
||||
|
||||
Download community skins
|
||||
|
|
|
@ -145,9 +145,6 @@ Favorites
|
|||
Feet
|
||||
== Урасем
|
||||
|
||||
Filter
|
||||
== Фильтр
|
||||
|
||||
Fire
|
||||
== Пĕрӳ
|
||||
|
||||
|
@ -160,9 +157,6 @@ Force vote
|
|||
Free-View
|
||||
== Ирĕклĕ обзор
|
||||
|
||||
Friends
|
||||
== Юлташсем
|
||||
|
||||
Fullscreen
|
||||
== Тулли экран
|
||||
|
||||
|
@ -356,12 +350,6 @@ Screenshot
|
|||
Server address:
|
||||
== Сервер адресĕ
|
||||
|
||||
Server details
|
||||
== Сервер тĕплĕсем
|
||||
|
||||
Server filter
|
||||
== Серверсен фильтр
|
||||
|
||||
Server info
|
||||
== Пĕлтерӳ
|
||||
|
||||
|
@ -535,9 +523,6 @@ Miscellaneous
|
|||
Netversion:
|
||||
== Версия:
|
||||
|
||||
Info
|
||||
== Пĕлтерӳ
|
||||
|
||||
UI Color
|
||||
== Интерфейс тĕсĕ
|
||||
|
||||
|
@ -911,12 +896,35 @@ Pause the current demo
|
|||
Stop the current demo
|
||||
==
|
||||
|
||||
Go back the specified duration
|
||||
==
|
||||
|
||||
[Demo player duration]
|
||||
%d min.
|
||||
==
|
||||
|
||||
[Demo player duration]
|
||||
%d sec.
|
||||
==
|
||||
|
||||
Change the skip duration
|
||||
==
|
||||
|
||||
Go forward the specified duration
|
||||
==
|
||||
|
||||
Go back one tick
|
||||
==
|
||||
|
||||
Go forward one tick
|
||||
==
|
||||
|
||||
Go back one marker
|
||||
==
|
||||
|
||||
Go forward one marker
|
||||
==
|
||||
|
||||
Slow down the demo
|
||||
==
|
||||
|
||||
|
@ -932,12 +940,6 @@ Mark the end of a cut (right click to reset)
|
|||
Export cut as a separate demo
|
||||
==
|
||||
|
||||
Go back one marker
|
||||
==
|
||||
|
||||
Go forward one marker
|
||||
==
|
||||
|
||||
Close the demo player
|
||||
==
|
||||
|
||||
|
@ -956,6 +958,9 @@ Cut length
|
|||
Remove chat
|
||||
==
|
||||
|
||||
Render cut to video
|
||||
==
|
||||
|
||||
Please use a different name
|
||||
==
|
||||
|
||||
|
@ -1106,10 +1111,10 @@ Max CSVs
|
|||
Dummy settings
|
||||
==
|
||||
|
||||
Loading skin files
|
||||
Toggle to edit your dummy settings
|
||||
==
|
||||
|
||||
Toggle to edit your dummy settings
|
||||
Loading skin files
|
||||
==
|
||||
|
||||
Download skins
|
||||
|
@ -1163,10 +1168,16 @@ Show all
|
|||
Toggle dyncam
|
||||
==
|
||||
|
||||
Toggle dummy
|
||||
Toggle ghost
|
||||
==
|
||||
|
||||
Toggle ghost
|
||||
Converse
|
||||
==
|
||||
|
||||
Chat command
|
||||
==
|
||||
|
||||
Toggle dummy
|
||||
==
|
||||
|
||||
Dummy copy
|
||||
|
@ -1175,9 +1186,6 @@ Dummy copy
|
|||
Hammerfly dummy
|
||||
==
|
||||
|
||||
Converse
|
||||
==
|
||||
|
||||
Statboard
|
||||
==
|
||||
|
||||
|
@ -1190,9 +1198,6 @@ Show entities
|
|||
Show HUD
|
||||
==
|
||||
|
||||
Chat command
|
||||
==
|
||||
|
||||
Enable controller
|
||||
==
|
||||
|
||||
|
|
|
@ -148,9 +148,6 @@ Favorites
|
|||
Feet
|
||||
== Nohy
|
||||
|
||||
Filter
|
||||
== Filtr
|
||||
|
||||
Fire
|
||||
== Střelba
|
||||
|
||||
|
@ -163,9 +160,6 @@ Force vote
|
|||
Free-View
|
||||
== Volný pohled
|
||||
|
||||
Friends
|
||||
== Přátelé
|
||||
|
||||
Fullscreen
|
||||
== Celá obrazovka
|
||||
|
||||
|
@ -355,12 +349,6 @@ Screenshot
|
|||
Server address:
|
||||
== Adresa serveru:
|
||||
|
||||
Server details
|
||||
== Detaily serveru
|
||||
|
||||
Server filter
|
||||
== Filtr serverů
|
||||
|
||||
Server info
|
||||
== Informace
|
||||
|
||||
|
@ -531,9 +519,6 @@ Netversion:
|
|||
Map:
|
||||
== Mapa:
|
||||
|
||||
Info
|
||||
== Info
|
||||
|
||||
Hue
|
||||
== Tón
|
||||
|
||||
|
@ -1365,12 +1350,35 @@ Pause the current demo
|
|||
Stop the current demo
|
||||
==
|
||||
|
||||
Go back the specified duration
|
||||
==
|
||||
|
||||
[Demo player duration]
|
||||
%d min.
|
||||
==
|
||||
|
||||
[Demo player duration]
|
||||
%d sec.
|
||||
==
|
||||
|
||||
Change the skip duration
|
||||
==
|
||||
|
||||
Go forward the specified duration
|
||||
==
|
||||
|
||||
Go back one tick
|
||||
==
|
||||
|
||||
Go forward one tick
|
||||
==
|
||||
|
||||
Go back one marker
|
||||
==
|
||||
|
||||
Go forward one marker
|
||||
==
|
||||
|
||||
Slow down the demo
|
||||
==
|
||||
|
||||
|
@ -1386,12 +1394,6 @@ Mark the end of a cut (right click to reset)
|
|||
Export cut as a separate demo
|
||||
==
|
||||
|
||||
Go back one marker
|
||||
==
|
||||
|
||||
Go forward one marker
|
||||
==
|
||||
|
||||
Close the demo player
|
||||
==
|
||||
|
||||
|
@ -1407,6 +1409,9 @@ Cut interval
|
|||
Cut length
|
||||
==
|
||||
|
||||
Render cut to video
|
||||
==
|
||||
|
||||
Loading demo files
|
||||
==
|
||||
|
||||
|
@ -1458,10 +1463,10 @@ Open the directory that contains the configuration and user files
|
|||
Open the directory to add custom themes
|
||||
==
|
||||
|
||||
Loading skin files
|
||||
Toggle to edit your dummy settings
|
||||
==
|
||||
|
||||
Toggle to edit your dummy settings
|
||||
Loading skin files
|
||||
==
|
||||
|
||||
Download community skins
|
||||
|
|
|
@ -146,9 +146,6 @@ Favorites
|
|||
Feet
|
||||
== Fødder
|
||||
|
||||
Filter
|
||||
== Filter
|
||||
|
||||
Fire
|
||||
== Skyd
|
||||
|
||||
|
@ -161,9 +158,6 @@ Force vote
|
|||
Free-View
|
||||
== Free-View
|
||||
|
||||
Friends
|
||||
== Venner
|
||||
|
||||
Fullscreen
|
||||
== Fuldskærm
|
||||
|
||||
|
@ -357,12 +351,6 @@ Screenshot
|
|||
Server address:
|
||||
== Serveradresse
|
||||
|
||||
Server details
|
||||
== Serverdetaljer
|
||||
|
||||
Server filter
|
||||
== Serverfilter
|
||||
|
||||
Server info
|
||||
== Serverinfo
|
||||
|
||||
|
@ -533,9 +521,6 @@ Netversion:
|
|||
Map:
|
||||
== Bane
|
||||
|
||||
Info
|
||||
== Info
|
||||
|
||||
Hue
|
||||
== Farve
|
||||
|
||||
|
@ -1363,12 +1348,35 @@ Pause the current demo
|
|||
Stop the current demo
|
||||
==
|
||||
|
||||
Go back the specified duration
|
||||
==
|
||||
|
||||
[Demo player duration]
|
||||
%d min.
|
||||
==
|
||||
|
||||
[Demo player duration]
|
||||
%d sec.
|
||||
==
|
||||
|
||||
Change the skip duration
|
||||
==
|
||||
|
||||
Go forward the specified duration
|
||||
==
|
||||
|
||||
Go back one tick
|
||||
==
|
||||
|
||||
Go forward one tick
|
||||
==
|
||||
|
||||
Go back one marker
|
||||
==
|
||||
|
||||
Go forward one marker
|
||||
==
|
||||
|
||||
Slow down the demo
|
||||
==
|
||||
|
||||
|
@ -1384,12 +1392,6 @@ Mark the end of a cut (right click to reset)
|
|||
Export cut as a separate demo
|
||||
==
|
||||
|
||||
Go back one marker
|
||||
==
|
||||
|
||||
Go forward one marker
|
||||
==
|
||||
|
||||
Close the demo player
|
||||
==
|
||||
|
||||
|
@ -1405,6 +1407,9 @@ Cut interval
|
|||
Cut length
|
||||
==
|
||||
|
||||
Render cut to video
|
||||
==
|
||||
|
||||
Loading demo files
|
||||
==
|
||||
|
||||
|
@ -1456,10 +1461,10 @@ Open the directory that contains the configuration and user files
|
|||
Open the directory to add custom themes
|
||||
==
|
||||
|
||||
Loading skin files
|
||||
Toggle to edit your dummy settings
|
||||
==
|
||||
|
||||
Toggle to edit your dummy settings
|
||||
Loading skin files
|
||||
==
|
||||
|
||||
Download community skins
|
||||
|
|
|
@ -158,9 +158,6 @@ Favorites
|
|||
Feet
|
||||
== Voeten
|
||||
|
||||
Filter
|
||||
== Filter
|
||||
|
||||
Fire
|
||||
== Schieten
|
||||
|
||||
|
@ -173,9 +170,6 @@ Force vote
|
|||
Free-View
|
||||
== Vrij bewegen
|
||||
|
||||
Friends
|
||||
== Vrienden
|
||||
|
||||
Fullscreen
|
||||
== Volledig scherm
|
||||
|
||||
|
@ -369,12 +363,6 @@ Screenshot
|
|||
Server address:
|
||||
== Serveradres:
|
||||
|
||||
Server details
|
||||
== Serverdetails
|
||||
|
||||
Server filter
|
||||
== Serverfilter
|
||||
|
||||
Server info
|
||||
== Serverinfo
|
||||
|
||||
|
@ -545,9 +533,6 @@ Netversion:
|
|||
Map:
|
||||
== Kaart:
|
||||
|
||||
Info
|
||||
== Info
|
||||
|
||||
Hue
|
||||
== Tint
|
||||
|
||||
|
@ -1473,12 +1458,35 @@ Pause the current demo
|
|||
Stop the current demo
|
||||
==
|
||||
|
||||
Go back the specified duration
|
||||
==
|
||||
|
||||
[Demo player duration]
|
||||
%d min.
|
||||
==
|
||||
|
||||
[Demo player duration]
|
||||
%d sec.
|
||||
==
|
||||
|
||||
Change the skip duration
|
||||
==
|
||||
|
||||
Go forward the specified duration
|
||||
==
|
||||
|
||||
Go back one tick
|
||||
==
|
||||
|
||||
Go forward one tick
|
||||
==
|
||||
|
||||
Go back one marker
|
||||
==
|
||||
|
||||
Go forward one marker
|
||||
==
|
||||
|
||||
Slow down the demo
|
||||
==
|
||||
|
||||
|
@ -1494,12 +1502,6 @@ Mark the end of a cut (right click to reset)
|
|||
Export cut as a separate demo
|
||||
==
|
||||
|
||||
Go back one marker
|
||||
==
|
||||
|
||||
Go forward one marker
|
||||
==
|
||||
|
||||
Close the demo player
|
||||
==
|
||||
|
||||
|
@ -1515,6 +1517,9 @@ Cut interval
|
|||
Cut length
|
||||
==
|
||||
|
||||
Render cut to video
|
||||
==
|
||||
|
||||
Loading demo files
|
||||
==
|
||||
|
||||
|
|
|
@ -273,9 +273,6 @@ Countries
|
|||
Favorite
|
||||
== Favorati
|
||||
|
||||
Friends
|
||||
== Amikoj
|
||||
|
||||
Name
|
||||
== Nomo
|
||||
|
||||
|
@ -285,9 +282,6 @@ Clan
|
|||
Add Friend
|
||||
== Aldoni amikon
|
||||
|
||||
Filter
|
||||
== Filtri
|
||||
|
||||
Please use a different name
|
||||
== Bonvolu uzi malsaman nomon
|
||||
|
||||
|
@ -767,9 +761,6 @@ The server is running a non-standard tuning on a pure game type.
|
|||
Loading menu images
|
||||
==
|
||||
|
||||
Server filter
|
||||
==
|
||||
|
||||
Has people playing
|
||||
==
|
||||
|
||||
|
@ -797,9 +788,6 @@ Types
|
|||
Reset filter
|
||||
==
|
||||
|
||||
Server details
|
||||
==
|
||||
|
||||
Copy info
|
||||
==
|
||||
|
||||
|
@ -843,9 +831,6 @@ Remove friend
|
|||
Add Clan
|
||||
==
|
||||
|
||||
Info
|
||||
==
|
||||
|
||||
Play the current demo
|
||||
==
|
||||
|
||||
|
@ -855,12 +840,35 @@ Pause the current demo
|
|||
Stop the current demo
|
||||
==
|
||||
|
||||
Go back the specified duration
|
||||
==
|
||||
|
||||
[Demo player duration]
|
||||
%d min.
|
||||
==
|
||||
|
||||
[Demo player duration]
|
||||
%d sec.
|
||||
==
|
||||
|
||||
Change the skip duration
|
||||
==
|
||||
|
||||
Go forward the specified duration
|
||||
==
|
||||
|
||||
Go back one tick
|
||||
==
|
||||
|
||||
Go forward one tick
|
||||
==
|
||||
|
||||
Go back one marker
|
||||
==
|
||||
|
||||
Go forward one marker
|
||||
==
|
||||
|
||||
Slow down the demo
|
||||
==
|
||||
|
||||
|
@ -876,12 +884,6 @@ Mark the end of a cut (right click to reset)
|
|||
Export cut as a separate demo
|
||||
==
|
||||
|
||||
Go back one marker
|
||||
==
|
||||
|
||||
Go forward one marker
|
||||
==
|
||||
|
||||
Close the demo player
|
||||
==
|
||||
|
||||
|
@ -900,6 +902,9 @@ Cut interval
|
|||
Cut length
|
||||
==
|
||||
|
||||
Render cut to video
|
||||
==
|
||||
|
||||
File already exists, do you want to overwrite it?
|
||||
==
|
||||
|
||||
|
@ -1086,15 +1091,15 @@ Automatically create statboard csv
|
|||
Max CSVs
|
||||
==
|
||||
|
||||
Toggle to edit your dummy settings
|
||||
==
|
||||
|
||||
Loading skin files
|
||||
==
|
||||
|
||||
Your skin
|
||||
==
|
||||
|
||||
Toggle to edit your dummy settings
|
||||
==
|
||||
|
||||
Download skins
|
||||
==
|
||||
|
||||
|
@ -1143,18 +1148,9 @@ Default zoom
|
|||
Toggle dyncam
|
||||
==
|
||||
|
||||
Toggle dummy
|
||||
==
|
||||
|
||||
Toggle ghost
|
||||
==
|
||||
|
||||
Dummy copy
|
||||
==
|
||||
|
||||
Hammerfly dummy
|
||||
==
|
||||
|
||||
Shotgun
|
||||
==
|
||||
|
||||
|
@ -1173,6 +1169,18 @@ Team chat
|
|||
Converse
|
||||
==
|
||||
|
||||
Chat command
|
||||
==
|
||||
|
||||
Toggle dummy
|
||||
==
|
||||
|
||||
Dummy copy
|
||||
==
|
||||
|
||||
Hammerfly dummy
|
||||
==
|
||||
|
||||
Emoticon
|
||||
==
|
||||
|
||||
|
@ -1209,9 +1217,6 @@ Show entities
|
|||
Show HUD
|
||||
==
|
||||
|
||||
Chat command
|
||||
==
|
||||
|
||||
Enable controller
|
||||
==
|
||||
|
||||
|
|
|
@ -147,9 +147,6 @@ Favorites
|
|||
Feet
|
||||
== Jalat
|
||||
|
||||
Filter
|
||||
== Suotimet
|
||||
|
||||
Fire
|
||||
== Ammu
|
||||
|
||||
|
@ -162,9 +159,6 @@ Force vote
|
|||
Free-View
|
||||
== Vapaa näkymä
|
||||
|
||||
Friends
|
||||
== Ystävät
|
||||
|
||||
Fullscreen
|
||||
== Koko näyttö
|
||||
|
||||
|
@ -358,12 +352,6 @@ Screenshot
|
|||
Server address:
|
||||
== Palvelimen osoite:
|
||||
|
||||
Server details
|
||||
== Palvelimen yksityiskohdat
|
||||
|
||||
Server filter
|
||||
== Palvelinsuotimet
|
||||
|
||||
Server info
|
||||
== Palvelintiedot
|
||||
|
||||
|
@ -532,9 +520,6 @@ Netversion:
|
|||
Map:
|
||||
== Kenttä:
|
||||
|
||||
Info
|
||||
== Info
|
||||
|
||||
Hue
|
||||
== Värisävy
|
||||
|
||||
|
@ -1320,12 +1305,35 @@ Pause the current demo
|
|||
Stop the current demo
|
||||
==
|
||||
|
||||
Go back the specified duration
|
||||
==
|
||||
|
||||
[Demo player duration]
|
||||
%d min.
|
||||
==
|
||||
|
||||
[Demo player duration]
|
||||
%d sec.
|
||||
==
|
||||
|
||||
Change the skip duration
|
||||
==
|
||||
|
||||
Go forward the specified duration
|
||||
==
|
||||
|
||||
Go back one tick
|
||||
==
|
||||
|
||||
Go forward one tick
|
||||
==
|
||||
|
||||
Go back one marker
|
||||
==
|
||||
|
||||
Go forward one marker
|
||||
==
|
||||
|
||||
Slow down the demo
|
||||
==
|
||||
|
||||
|
@ -1341,12 +1349,6 @@ Mark the end of a cut (right click to reset)
|
|||
Export cut as a separate demo
|
||||
==
|
||||
|
||||
Go back one marker
|
||||
==
|
||||
|
||||
Go forward one marker
|
||||
==
|
||||
|
||||
Close the demo player
|
||||
==
|
||||
|
||||
|
@ -1362,6 +1364,9 @@ Cut interval
|
|||
Cut length
|
||||
==
|
||||
|
||||
Render cut to video
|
||||
==
|
||||
|
||||
Loading demo files
|
||||
==
|
||||
|
||||
|
@ -1422,10 +1427,10 @@ Automatically create statboard csv
|
|||
Max CSVs
|
||||
==
|
||||
|
||||
Loading skin files
|
||||
Toggle to edit your dummy settings
|
||||
==
|
||||
|
||||
Toggle to edit your dummy settings
|
||||
Loading skin files
|
||||
==
|
||||
|
||||
Download community skins
|
||||
|
@ -1443,15 +1448,15 @@ Create a random skin
|
|||
Open the directory to add custom skins
|
||||
==
|
||||
|
||||
Converse
|
||||
==
|
||||
|
||||
Dummy copy
|
||||
==
|
||||
|
||||
Hammerfly dummy
|
||||
==
|
||||
|
||||
Converse
|
||||
==
|
||||
|
||||
Statboard
|
||||
==
|
||||
|
||||
|
|
|
@ -169,9 +169,6 @@ Favorites
|
|||
Feet
|
||||
== Pieds
|
||||
|
||||
Filter
|
||||
== Filtre
|
||||
|
||||
Fire
|
||||
== Tirer
|
||||
|
||||
|
@ -184,9 +181,6 @@ Force vote
|
|||
Free-View
|
||||
== Vue libre
|
||||
|
||||
Friends
|
||||
== Amis
|
||||
|
||||
Fullscreen
|
||||
== Plein écran
|
||||
|
||||
|
@ -380,12 +374,6 @@ Screenshot
|
|||
Server address:
|
||||
== Adresse du serveur :
|
||||
|
||||
Server details
|
||||
== Détails du serveur
|
||||
|
||||
Server filter
|
||||
== Filtres du serveur
|
||||
|
||||
Server info
|
||||
== Info. serveur
|
||||
|
||||
|
@ -556,9 +544,6 @@ Netversion:
|
|||
Map:
|
||||
== Carte :
|
||||
|
||||
Info
|
||||
== Info.
|
||||
|
||||
Hue
|
||||
== Teinte
|
||||
|
||||
|
@ -1727,6 +1712,23 @@ Unable to rename the folder
|
|||
No server selected
|
||||
==
|
||||
|
||||
Go back the specified duration
|
||||
==
|
||||
|
||||
[Demo player duration]
|
||||
%d min.
|
||||
==
|
||||
|
||||
[Demo player duration]
|
||||
%d sec.
|
||||
==
|
||||
|
||||
Change the skip duration
|
||||
==
|
||||
|
||||
Go forward the specified duration
|
||||
==
|
||||
|
||||
Mark the beginning of a cut (right click to reset)
|
||||
==
|
||||
|
||||
|
@ -1745,6 +1747,9 @@ Cut interval
|
|||
Cut length
|
||||
==
|
||||
|
||||
Render cut to video
|
||||
==
|
||||
|
||||
All combined
|
||||
==
|
||||
|
||||
|
|
|
@ -145,9 +145,6 @@ Favorites
|
|||
Feet
|
||||
== Pés
|
||||
|
||||
Filter
|
||||
== Filtro
|
||||
|
||||
Fire
|
||||
== Disparar
|
||||
|
||||
|
@ -160,9 +157,6 @@ Force vote
|
|||
Free-View
|
||||
== Vista libre
|
||||
|
||||
Friends
|
||||
== Amigos
|
||||
|
||||
Fullscreen
|
||||
== Pantalla completa
|
||||
|
||||
|
@ -359,12 +353,6 @@ Screenshot
|
|||
Server address:
|
||||
== IP do servidor:
|
||||
|
||||
Server details
|
||||
== Detalles do servidor
|
||||
|
||||
Server filter
|
||||
== Filtro do servidor
|
||||
|
||||
Server info
|
||||
== Servidor
|
||||
|
||||
|
@ -536,9 +524,6 @@ Netversion:
|
|||
Map:
|
||||
== Mapa:
|
||||
|
||||
Info
|
||||
== Información
|
||||
|
||||
Hue
|
||||
== Matiz
|
||||
|
||||
|
@ -1698,6 +1683,23 @@ Unable to rename the folder
|
|||
No server selected
|
||||
==
|
||||
|
||||
Go back the specified duration
|
||||
==
|
||||
|
||||
[Demo player duration]
|
||||
%d min.
|
||||
==
|
||||
|
||||
[Demo player duration]
|
||||
%d sec.
|
||||
==
|
||||
|
||||
Change the skip duration
|
||||
==
|
||||
|
||||
Go forward the specified duration
|
||||
==
|
||||
|
||||
Mark the beginning of a cut (right click to reset)
|
||||
==
|
||||
|
||||
|
@ -1716,6 +1718,9 @@ Cut interval
|
|||
Cut length
|
||||
==
|
||||
|
||||
Render cut to video
|
||||
==
|
||||
|
||||
All combined
|
||||
==
|
||||
|
||||
|
|
|
@ -163,9 +163,6 @@ Favorites
|
|||
Feet
|
||||
== Füße
|
||||
|
||||
Filter
|
||||
== Filter
|
||||
|
||||
Fire
|
||||
== Feuern
|
||||
|
||||
|
@ -178,9 +175,6 @@ Force vote
|
|||
Free-View
|
||||
== Freie Ansicht
|
||||
|
||||
Friends
|
||||
== Freunde
|
||||
|
||||
Fullscreen
|
||||
== Vollbild
|
||||
|
||||
|
@ -377,12 +371,6 @@ Screenshot
|
|||
Server address:
|
||||
== Serveradresse:
|
||||
|
||||
Server details
|
||||
== Serverdetails
|
||||
|
||||
Server filter
|
||||
== Filter
|
||||
|
||||
Server info
|
||||
== Serverinfo
|
||||
|
||||
|
@ -566,9 +554,6 @@ Netversion:
|
|||
Map:
|
||||
== Karte:
|
||||
|
||||
Info
|
||||
== Info
|
||||
|
||||
Hue
|
||||
== Farb.
|
||||
|
||||
|
@ -1760,3 +1745,23 @@ Unable to delete the folder '%s'. Make sure it's empty first.
|
|||
|
||||
Moved ingame
|
||||
== Im Spiel bewegt
|
||||
|
||||
Go back the specified duration
|
||||
== Gesetzte Dauer zurück
|
||||
|
||||
[Demo player duration]
|
||||
%d min.
|
||||
== %d Min.
|
||||
|
||||
[Demo player duration]
|
||||
%d sec.
|
||||
== %d Sek.
|
||||
|
||||
Change the skip duration
|
||||
== Überspring-Dauer ändern
|
||||
|
||||
Go forward the specified duration
|
||||
== Gesetzte Dauer vorwärts
|
||||
|
||||
Render cut to video
|
||||
== Schnitt zu Video rendern
|
||||
|
|
|
@ -145,9 +145,6 @@ Favorites
|
|||
Feet
|
||||
== Πόδια
|
||||
|
||||
Filter
|
||||
== Φίλτρο
|
||||
|
||||
Fire
|
||||
== Πυρ
|
||||
|
||||
|
@ -160,9 +157,6 @@ Force vote
|
|||
Free-View
|
||||
== Ελεύθερη Όψη
|
||||
|
||||
Friends
|
||||
== Φίλοι
|
||||
|
||||
Fullscreen
|
||||
== Πλήρης οθόνη
|
||||
|
||||
|
@ -359,12 +353,6 @@ Screenshot
|
|||
Server address:
|
||||
== Διεύθ/ση διακομιστή:
|
||||
|
||||
Server details
|
||||
== Λεπτομέριες διακομιστή
|
||||
|
||||
Server filter
|
||||
== Φίλτρο διακομιστών
|
||||
|
||||
Server info
|
||||
== Πληροφορίες
|
||||
|
||||
|
@ -538,9 +526,6 @@ Netversion:
|
|||
Map:
|
||||
== Χάρτης:
|
||||
|
||||
Info
|
||||
== Πληροφορίες
|
||||
|
||||
Hue
|
||||
== Απόχρωση
|
||||
|
||||
|
@ -914,12 +899,35 @@ Pause the current demo
|
|||
Stop the current demo
|
||||
==
|
||||
|
||||
Go back the specified duration
|
||||
==
|
||||
|
||||
[Demo player duration]
|
||||
%d min.
|
||||
==
|
||||
|
||||
[Demo player duration]
|
||||
%d sec.
|
||||
==
|
||||
|
||||
Change the skip duration
|
||||
==
|
||||
|
||||
Go forward the specified duration
|
||||
==
|
||||
|
||||
Go back one tick
|
||||
==
|
||||
|
||||
Go forward one tick
|
||||
==
|
||||
|
||||
Go back one marker
|
||||
==
|
||||
|
||||
Go forward one marker
|
||||
==
|
||||
|
||||
Slow down the demo
|
||||
==
|
||||
|
||||
|
@ -935,12 +943,6 @@ Mark the end of a cut (right click to reset)
|
|||
Export cut as a separate demo
|
||||
==
|
||||
|
||||
Go back one marker
|
||||
==
|
||||
|
||||
Go forward one marker
|
||||
==
|
||||
|
||||
Close the demo player
|
||||
==
|
||||
|
||||
|
@ -959,6 +961,9 @@ Cut length
|
|||
Remove chat
|
||||
==
|
||||
|
||||
Render cut to video
|
||||
==
|
||||
|
||||
Please use a different name
|
||||
==
|
||||
|
||||
|
@ -1109,10 +1114,10 @@ Max CSVs
|
|||
Dummy settings
|
||||
==
|
||||
|
||||
Loading skin files
|
||||
Toggle to edit your dummy settings
|
||||
==
|
||||
|
||||
Toggle to edit your dummy settings
|
||||
Loading skin files
|
||||
==
|
||||
|
||||
Download skins
|
||||
|
@ -1166,10 +1171,16 @@ Show all
|
|||
Toggle dyncam
|
||||
==
|
||||
|
||||
Toggle dummy
|
||||
Toggle ghost
|
||||
==
|
||||
|
||||
Toggle ghost
|
||||
Converse
|
||||
==
|
||||
|
||||
Chat command
|
||||
==
|
||||
|
||||
Toggle dummy
|
||||
==
|
||||
|
||||
Dummy copy
|
||||
|
@ -1178,9 +1189,6 @@ Dummy copy
|
|||
Hammerfly dummy
|
||||
==
|
||||
|
||||
Converse
|
||||
==
|
||||
|
||||
Statboard
|
||||
==
|
||||
|
||||
|
@ -1193,9 +1201,6 @@ Show entities
|
|||
Show HUD
|
||||
==
|
||||
|
||||
Chat command
|
||||
==
|
||||
|
||||
Enable controller
|
||||
==
|
||||
|
||||
|
|
|
@ -144,9 +144,6 @@ Favorites
|
|||
Feet
|
||||
== Láb
|
||||
|
||||
Filter
|
||||
== Szűrő
|
||||
|
||||
Fire
|
||||
== Tűz
|
||||
|
||||
|
@ -159,9 +156,6 @@ Force vote
|
|||
Free-View
|
||||
== Szabad nézet
|
||||
|
||||
Friends
|
||||
== Barátok
|
||||
|
||||
Fullscreen
|
||||
== Teljesképernyő
|
||||
|
||||
|
@ -349,12 +343,6 @@ Screenshot
|
|||
Server address:
|
||||
== Szerver címe:
|
||||
|
||||
Server details
|
||||
== Szerver részletei
|
||||
|
||||
Server filter
|
||||
== Szerver szűrő
|
||||
|
||||
Server info
|
||||
== Szerver infó
|
||||
|
||||
|
@ -511,9 +499,6 @@ Netversion:
|
|||
Map:
|
||||
== Pálya:
|
||||
|
||||
Info
|
||||
== Infó
|
||||
|
||||
Miscellaneous
|
||||
== Egyéb
|
||||
|
||||
|
@ -1703,6 +1688,23 @@ None
|
|||
Add Clan
|
||||
==
|
||||
|
||||
Go back the specified duration
|
||||
==
|
||||
|
||||
[Demo player duration]
|
||||
%d min.
|
||||
==
|
||||
|
||||
[Demo player duration]
|
||||
%d sec.
|
||||
==
|
||||
|
||||
Change the skip duration
|
||||
==
|
||||
|
||||
Go forward the specified duration
|
||||
==
|
||||
|
||||
Mark the beginning of a cut (right click to reset)
|
||||
==
|
||||
|
||||
|
@ -1721,6 +1723,9 @@ Cut interval
|
|||
Cut length
|
||||
==
|
||||
|
||||
Render cut to video
|
||||
==
|
||||
|
||||
All combined
|
||||
==
|
||||
|
||||
|
|
|
@ -152,9 +152,6 @@ Favorites
|
|||
Feet
|
||||
== Piedi
|
||||
|
||||
Filter
|
||||
== Filtro
|
||||
|
||||
Fire
|
||||
== Fuoco
|
||||
|
||||
|
@ -167,9 +164,6 @@ Force vote
|
|||
Free-View
|
||||
== Visione libera
|
||||
|
||||
Friends
|
||||
== Amici
|
||||
|
||||
Fullscreen
|
||||
== Schermo intero
|
||||
|
||||
|
@ -363,12 +357,6 @@ Screenshot
|
|||
Server address:
|
||||
== Indirizzo server:
|
||||
|
||||
Server details
|
||||
== Dettagli server
|
||||
|
||||
Server filter
|
||||
== Filtro server
|
||||
|
||||
Server info
|
||||
== Info server
|
||||
|
||||
|
@ -536,9 +524,6 @@ Netversion:
|
|||
Map:
|
||||
== Mappa:
|
||||
|
||||
Info
|
||||
== Info
|
||||
|
||||
Hue
|
||||
== Tinta
|
||||
|
||||
|
@ -1167,51 +1152,6 @@ Grabs
|
|||
9+ new mentions
|
||||
== +9 nuove menzioni
|
||||
|
||||
[Graphics error]
|
||||
Failed during initialization. Try to change gfx_backend to OpenGL or Vulkan in settings_ddnet.cfg in the config directory and try again.
|
||||
==
|
||||
|
||||
[Graphics error]
|
||||
Out of VRAM. Try removing custom assets (skins, entities, etc.), especially those with high resolution.
|
||||
==
|
||||
|
||||
[Graphics error]
|
||||
An error during command recording occurred. Try to update your GPU drivers.
|
||||
==
|
||||
|
||||
[Graphics error]
|
||||
A render command failed. Try to update your GPU drivers.
|
||||
==
|
||||
|
||||
[Graphics error]
|
||||
Submitting the render commands failed. Try to update your GPU drivers.
|
||||
==
|
||||
|
||||
[Graphics error]
|
||||
Failed to swap framebuffers. Try to update your GPU drivers.
|
||||
==
|
||||
|
||||
[Graphics error]
|
||||
Unknown error. Try to change gfx_backend to OpenGL or Vulkan in settings_ddnet.cfg in the config directory and try again.
|
||||
==
|
||||
|
||||
[Graphics error]
|
||||
Could not initialize the given graphics backend, reverting to the default backend now.
|
||||
==
|
||||
|
||||
[Graphics error]
|
||||
Could not initialize the given graphics backend, this is probably because you didn't install the driver of the integrated graphics card.
|
||||
==
|
||||
|
||||
Could not save downloaded map. Try manually deleting this file: %s
|
||||
==
|
||||
|
||||
The width of texture %s is not divisible by %d, or the height is not divisible by %d, which might cause visual bugs.
|
||||
==
|
||||
|
||||
The format of texture %s is not RGBA which will cause visual bugs.
|
||||
==
|
||||
|
||||
Preparing demo playback
|
||||
== Preparando la riproduzione della demo
|
||||
|
||||
|
@ -1221,9 +1161,6 @@ Connected
|
|||
Loading map file from storage
|
||||
== Caricando il file mappa dalla memoria
|
||||
|
||||
Why are you slowmo replaying to read this?
|
||||
==
|
||||
|
||||
Initializing components
|
||||
== Inizializzando i componenti
|
||||
|
||||
|
@ -1302,55 +1239,18 @@ Join Tutorial Server
|
|||
Skip Tutorial
|
||||
== Salta Tutorial
|
||||
|
||||
Loading menu images
|
||||
==
|
||||
|
||||
AFR
|
||||
==
|
||||
|
||||
ASI
|
||||
==
|
||||
|
||||
AUS
|
||||
==
|
||||
|
||||
EUR
|
||||
==
|
||||
|
||||
NA
|
||||
==
|
||||
|
||||
SA
|
||||
==
|
||||
|
||||
CHN
|
||||
==
|
||||
|
||||
Getting server list from master server
|
||||
== Ottenere l'elenco dei server dal server principale
|
||||
|
||||
Are you sure that you want to disconnect and switch to a different server?
|
||||
== Sei sicuro di voler disconnetterti e passare a un altro server?
|
||||
|
||||
Copy info
|
||||
==
|
||||
|
||||
Leak IP
|
||||
==
|
||||
|
||||
No server selected
|
||||
== Nessun server selezionato
|
||||
|
||||
Online players (%d)
|
||||
==
|
||||
|
||||
Online clanmates (%d)
|
||||
== Compagni di clan online
|
||||
|
||||
[friends (server browser)]
|
||||
Offline (%d)
|
||||
==
|
||||
|
||||
Click to select server. Double click to join your friend.
|
||||
== Fare click per selezionare il server. Fai doppio click per unirti al tuo amico.
|
||||
|
||||
|
@ -1372,123 +1272,9 @@ Are you sure that you want to remove the clan '%s' from your friends list?
|
|||
Add Clan
|
||||
== Aggiungi Clan
|
||||
|
||||
Play the current demo
|
||||
==
|
||||
|
||||
Pause the current demo
|
||||
==
|
||||
|
||||
Stop the current demo
|
||||
==
|
||||
|
||||
Go back one tick
|
||||
==
|
||||
|
||||
Go forward one tick
|
||||
==
|
||||
|
||||
Slow down the demo
|
||||
==
|
||||
|
||||
Speed up the demo
|
||||
==
|
||||
|
||||
Mark the beginning of a cut (right click to reset)
|
||||
==
|
||||
|
||||
Mark the end of a cut (right click to reset)
|
||||
==
|
||||
|
||||
Export cut as a separate demo
|
||||
==
|
||||
|
||||
Go back one marker
|
||||
==
|
||||
|
||||
Go forward one marker
|
||||
==
|
||||
|
||||
Close the demo player
|
||||
==
|
||||
|
||||
Toggle keyboard shortcuts
|
||||
==
|
||||
|
||||
Export demo cut
|
||||
==
|
||||
|
||||
Cut interval
|
||||
==
|
||||
|
||||
Cut length
|
||||
==
|
||||
|
||||
Loading demo files
|
||||
==
|
||||
|
||||
All combined
|
||||
==
|
||||
|
||||
Folder Link
|
||||
==
|
||||
|
||||
Markers:
|
||||
==
|
||||
|
||||
%.2f MiB
|
||||
==
|
||||
|
||||
%.2f KiB
|
||||
==
|
||||
|
||||
Open the directory that contains the demo files
|
||||
==
|
||||
|
||||
Are you sure that you want to delete the folder '%s'?
|
||||
==
|
||||
|
||||
Are you sure that you want to delete the demo '%s'?
|
||||
==
|
||||
|
||||
Delete folder
|
||||
== Cancella cartella
|
||||
|
||||
Unable to delete the demo '%s'
|
||||
==
|
||||
|
||||
Unable to delete the folder '%s'. Make sure it's empty first.
|
||||
==
|
||||
|
||||
Loading ghost files
|
||||
==
|
||||
|
||||
Menu opened. Press Esc key again to close menu.
|
||||
==
|
||||
|
||||
Save power by lowering refresh rate (higher input latency)
|
||||
==
|
||||
|
||||
Settings file
|
||||
==
|
||||
|
||||
Open the settings file
|
||||
==
|
||||
|
||||
Config directory
|
||||
==
|
||||
|
||||
Open the directory that contains the configuration and user files
|
||||
==
|
||||
|
||||
Open the directory to add custom themes
|
||||
==
|
||||
|
||||
Loading skin files
|
||||
==
|
||||
|
||||
Toggle to edit your dummy settings
|
||||
==
|
||||
|
||||
Download community skins
|
||||
== Scarica skin comunitá
|
||||
|
||||
|
@ -1501,18 +1287,9 @@ Create a random skin
|
|||
Open the directory to add custom skins
|
||||
== Apri la cartella per aggiungere una skin custom
|
||||
|
||||
Converse
|
||||
==
|
||||
|
||||
Chat command
|
||||
==
|
||||
|
||||
Enable controller
|
||||
== Abilitá controller
|
||||
|
||||
Controller
|
||||
==
|
||||
|
||||
Ingame controller mode
|
||||
== Modalitá controller in gioco
|
||||
|
||||
|
@ -1520,19 +1297,6 @@ Ingame controller mode
|
|||
Relative
|
||||
== Relativo
|
||||
|
||||
[Ingame controller mode]
|
||||
Absolute
|
||||
==
|
||||
|
||||
Ingame controller sens.
|
||||
==
|
||||
|
||||
UI controller sens.
|
||||
==
|
||||
|
||||
Controller jitter tolerance
|
||||
==
|
||||
|
||||
No controller found. Plug in a controller.
|
||||
== Nessun controller trovato. Collega un controller.
|
||||
|
||||
|
@ -1542,12 +1306,6 @@ Axis
|
|||
Status
|
||||
== Stato
|
||||
|
||||
Aim bind
|
||||
==
|
||||
|
||||
Mouse
|
||||
==
|
||||
|
||||
Ingame mouse sens.
|
||||
== Sens. mouse in gioco
|
||||
|
||||
|
@ -1563,9 +1321,6 @@ Are you sure that you want to reset the controls to their defaults?
|
|||
Cancel
|
||||
== Cancella
|
||||
|
||||
Dummy
|
||||
==
|
||||
|
||||
Windowed
|
||||
== Finestra
|
||||
|
||||
|
@ -1578,42 +1333,15 @@ Windowed fullscreen
|
|||
Desktop fullscreen
|
||||
== Desktop schermo intero
|
||||
|
||||
Allows maps to render with more detail
|
||||
==
|
||||
|
||||
Renderer
|
||||
==
|
||||
|
||||
default
|
||||
==
|
||||
|
||||
custom
|
||||
==
|
||||
|
||||
Graphics card
|
||||
== Scheda grafica
|
||||
|
||||
auto
|
||||
==
|
||||
|
||||
Appearance
|
||||
==
|
||||
|
||||
Name Plate
|
||||
==
|
||||
|
||||
Hook Collisions
|
||||
== Collisione Hook
|
||||
|
||||
Kill Messages
|
||||
==
|
||||
|
||||
Show health, shields and ammo
|
||||
== Mostra vita, scudi e munizioni
|
||||
|
||||
DDRace HUD
|
||||
==
|
||||
|
||||
Show client IDs in scoreboard
|
||||
== Mostra gli ID clienti nella scoreboard
|
||||
|
||||
|
@ -1671,51 +1399,12 @@ Nothing hookable
|
|||
Something hookable
|
||||
== Qualcosa hookabile
|
||||
|
||||
A Tee
|
||||
==
|
||||
|
||||
Normal Color
|
||||
==
|
||||
|
||||
Highlight Color
|
||||
==
|
||||
|
||||
Weapons
|
||||
== Armi
|
||||
|
||||
Rifle Laser Outline Color
|
||||
==
|
||||
|
||||
Rifle Laser Inner Color
|
||||
==
|
||||
|
||||
Shotgun Laser Outline Color
|
||||
==
|
||||
|
||||
Shotgun Laser Inner Color
|
||||
==
|
||||
|
||||
Door Laser Outline Color
|
||||
==
|
||||
|
||||
Door Laser Inner Color
|
||||
==
|
||||
|
||||
Freeze Laser Outline Color
|
||||
==
|
||||
|
||||
Freeze Laser Inner Color
|
||||
==
|
||||
|
||||
Set all to Rifle
|
||||
==
|
||||
|
||||
When you cross the start line, show a ghost tee replicating the movements of your best time
|
||||
== Quando attraversi la linea di partenza, mostra una maglietta fantasma che riproduce i movimenti del tuo miglior tempo
|
||||
|
||||
Overlay entities
|
||||
==
|
||||
|
||||
Opacity
|
||||
== Opacitá
|
||||
|
||||
|
@ -1746,15 +1435,343 @@ Chat command (e.g. showall 1)
|
|||
Unregister protocol and file extensions
|
||||
== Protocollo ed estensioni file non registrati
|
||||
|
||||
Extras
|
||||
==
|
||||
|
||||
Loading assets
|
||||
== Caricando assets
|
||||
|
||||
Open the directory to add custom assets
|
||||
== Apri la cartella per aggiungere assets custom
|
||||
|
||||
Can't find a Tutorial server
|
||||
== Impossibile trovare un Server Tutorial
|
||||
|
||||
Loading race demo files
|
||||
== Caricando i file della demo della gara
|
||||
|
||||
Loading sound files
|
||||
== Caricando file musica
|
||||
|
||||
Moved ingame
|
||||
== Spostato in gioco
|
||||
|
||||
[Graphics error]
|
||||
Failed during initialization. Try to change gfx_backend to OpenGL or Vulkan in settings_ddnet.cfg in the config directory and try again.
|
||||
==
|
||||
|
||||
[Graphics error]
|
||||
Out of VRAM. Try removing custom assets (skins, entities, etc.), especially those with high resolution.
|
||||
==
|
||||
|
||||
[Graphics error]
|
||||
An error during command recording occurred. Try to update your GPU drivers.
|
||||
==
|
||||
|
||||
[Graphics error]
|
||||
A render command failed. Try to update your GPU drivers.
|
||||
==
|
||||
|
||||
[Graphics error]
|
||||
Submitting the render commands failed. Try to update your GPU drivers.
|
||||
==
|
||||
|
||||
[Graphics error]
|
||||
Failed to swap framebuffers. Try to update your GPU drivers.
|
||||
==
|
||||
|
||||
[Graphics error]
|
||||
Unknown error. Try to change gfx_backend to OpenGL or Vulkan in settings_ddnet.cfg in the config directory and try again.
|
||||
==
|
||||
|
||||
[Graphics error]
|
||||
Could not initialize the given graphics backend, reverting to the default backend now.
|
||||
==
|
||||
|
||||
[Graphics error]
|
||||
Could not initialize the given graphics backend, this is probably because you didn't install the driver of the integrated graphics card.
|
||||
==
|
||||
|
||||
Could not save downloaded map. Try manually deleting this file: %s
|
||||
==
|
||||
|
||||
The width of texture %s is not divisible by %d, or the height is not divisible by %d, which might cause visual bugs.
|
||||
==
|
||||
|
||||
The format of texture %s is not RGBA which will cause visual bugs.
|
||||
==
|
||||
|
||||
Why are you slowmo replaying to read this?
|
||||
==
|
||||
|
||||
Loading menu images
|
||||
==
|
||||
|
||||
AFR
|
||||
==
|
||||
|
||||
ASI
|
||||
==
|
||||
|
||||
AUS
|
||||
==
|
||||
|
||||
EUR
|
||||
==
|
||||
|
||||
NA
|
||||
==
|
||||
|
||||
SA
|
||||
==
|
||||
|
||||
CHN
|
||||
==
|
||||
|
||||
Copy info
|
||||
==
|
||||
|
||||
Leak IP
|
||||
==
|
||||
|
||||
Online players (%d)
|
||||
==
|
||||
|
||||
[friends (server browser)]
|
||||
Offline (%d)
|
||||
==
|
||||
|
||||
Play the current demo
|
||||
==
|
||||
|
||||
Pause the current demo
|
||||
==
|
||||
|
||||
Stop the current demo
|
||||
==
|
||||
|
||||
Go back the specified duration
|
||||
==
|
||||
|
||||
[Demo player duration]
|
||||
%d min.
|
||||
==
|
||||
|
||||
[Demo player duration]
|
||||
%d sec.
|
||||
==
|
||||
|
||||
Change the skip duration
|
||||
==
|
||||
|
||||
Go forward the specified duration
|
||||
==
|
||||
|
||||
Go back one tick
|
||||
==
|
||||
|
||||
Go forward one tick
|
||||
==
|
||||
|
||||
Go back one marker
|
||||
==
|
||||
|
||||
Go forward one marker
|
||||
==
|
||||
|
||||
Slow down the demo
|
||||
==
|
||||
|
||||
Speed up the demo
|
||||
==
|
||||
|
||||
Mark the beginning of a cut (right click to reset)
|
||||
==
|
||||
|
||||
Mark the end of a cut (right click to reset)
|
||||
==
|
||||
|
||||
Export cut as a separate demo
|
||||
==
|
||||
|
||||
Close the demo player
|
||||
==
|
||||
|
||||
Toggle keyboard shortcuts
|
||||
==
|
||||
|
||||
Export demo cut
|
||||
==
|
||||
|
||||
Cut interval
|
||||
==
|
||||
|
||||
Cut length
|
||||
==
|
||||
|
||||
Render cut to video
|
||||
==
|
||||
|
||||
Loading demo files
|
||||
==
|
||||
|
||||
All combined
|
||||
==
|
||||
|
||||
Folder Link
|
||||
==
|
||||
|
||||
Markers:
|
||||
==
|
||||
|
||||
%.2f MiB
|
||||
==
|
||||
|
||||
%.2f KiB
|
||||
==
|
||||
|
||||
Open the directory that contains the demo files
|
||||
==
|
||||
|
||||
Are you sure that you want to delete the folder '%s'?
|
||||
==
|
||||
|
||||
Are you sure that you want to delete the demo '%s'?
|
||||
==
|
||||
|
||||
Unable to delete the demo '%s'
|
||||
==
|
||||
|
||||
Unable to delete the folder '%s'. Make sure it's empty first.
|
||||
==
|
||||
|
||||
Loading ghost files
|
||||
==
|
||||
|
||||
Menu opened. Press Esc key again to close menu.
|
||||
==
|
||||
|
||||
Save power by lowering refresh rate (higher input latency)
|
||||
==
|
||||
|
||||
Settings file
|
||||
==
|
||||
|
||||
Open the settings file
|
||||
==
|
||||
|
||||
Config directory
|
||||
==
|
||||
|
||||
Open the directory that contains the configuration and user files
|
||||
==
|
||||
|
||||
Open the directory to add custom themes
|
||||
==
|
||||
|
||||
Toggle to edit your dummy settings
|
||||
==
|
||||
|
||||
Loading skin files
|
||||
==
|
||||
|
||||
Converse
|
||||
==
|
||||
|
||||
Chat command
|
||||
==
|
||||
|
||||
Controller
|
||||
==
|
||||
|
||||
[Ingame controller mode]
|
||||
Absolute
|
||||
==
|
||||
|
||||
Ingame controller sens.
|
||||
==
|
||||
|
||||
UI controller sens.
|
||||
==
|
||||
|
||||
Controller jitter tolerance
|
||||
==
|
||||
|
||||
Aim bind
|
||||
==
|
||||
|
||||
Mouse
|
||||
==
|
||||
|
||||
Dummy
|
||||
==
|
||||
|
||||
Allows maps to render with more detail
|
||||
==
|
||||
|
||||
Renderer
|
||||
==
|
||||
|
||||
default
|
||||
==
|
||||
|
||||
custom
|
||||
==
|
||||
|
||||
auto
|
||||
==
|
||||
|
||||
Appearance
|
||||
==
|
||||
|
||||
Name Plate
|
||||
==
|
||||
|
||||
Kill Messages
|
||||
==
|
||||
|
||||
DDRace HUD
|
||||
==
|
||||
|
||||
A Tee
|
||||
==
|
||||
|
||||
Normal Color
|
||||
==
|
||||
|
||||
Highlight Color
|
||||
==
|
||||
|
||||
Rifle Laser Outline Color
|
||||
==
|
||||
|
||||
Rifle Laser Inner Color
|
||||
==
|
||||
|
||||
Shotgun Laser Outline Color
|
||||
==
|
||||
|
||||
Shotgun Laser Inner Color
|
||||
==
|
||||
|
||||
Door Laser Outline Color
|
||||
==
|
||||
|
||||
Door Laser Inner Color
|
||||
==
|
||||
|
||||
Freeze Laser Outline Color
|
||||
==
|
||||
|
||||
Freeze Laser Inner Color
|
||||
==
|
||||
|
||||
Set all to Rifle
|
||||
==
|
||||
|
||||
Overlay entities
|
||||
==
|
||||
|
||||
Extras
|
||||
==
|
||||
|
||||
Discord
|
||||
==
|
||||
|
||||
|
@ -1764,20 +1781,8 @@ https://ddnet.org/discord
|
|||
Tutorial
|
||||
==
|
||||
|
||||
Can't find a Tutorial server
|
||||
== Impossibile trovare un Server Tutorial
|
||||
|
||||
Loading race demo files
|
||||
== Caricando i file della demo della gara
|
||||
|
||||
Super
|
||||
==
|
||||
|
||||
Loading sound files
|
||||
== Caricando file musica
|
||||
|
||||
FPM
|
||||
==
|
||||
|
||||
Moved ingame
|
||||
== Spostato in gioco
|
||||
|
|
|
@ -145,9 +145,6 @@ Favorites
|
|||
Feet
|
||||
== 足
|
||||
|
||||
Filter
|
||||
== フィルタ
|
||||
|
||||
Fire
|
||||
== 射撃
|
||||
|
||||
|
@ -160,9 +157,6 @@ Force vote
|
|||
Free-View
|
||||
== 自由視点
|
||||
|
||||
Friends
|
||||
== 友達
|
||||
|
||||
Game
|
||||
== ゲーム
|
||||
|
||||
|
@ -353,12 +347,6 @@ Screenshot
|
|||
Server address:
|
||||
== IP アドレス:
|
||||
|
||||
Server details
|
||||
== サーバー情報
|
||||
|
||||
Server filter
|
||||
== サーバーフィルタ
|
||||
|
||||
Server info
|
||||
== サーバー情報
|
||||
|
||||
|
@ -532,9 +520,6 @@ Miscellaneous
|
|||
Netversion:
|
||||
== 通信バージョン:
|
||||
|
||||
Info
|
||||
== 情報
|
||||
|
||||
UI Color
|
||||
== UI カラー
|
||||
|
||||
|
@ -1395,12 +1380,35 @@ Pause the current demo
|
|||
Stop the current demo
|
||||
==
|
||||
|
||||
Go back the specified duration
|
||||
==
|
||||
|
||||
[Demo player duration]
|
||||
%d min.
|
||||
==
|
||||
|
||||
[Demo player duration]
|
||||
%d sec.
|
||||
==
|
||||
|
||||
Change the skip duration
|
||||
==
|
||||
|
||||
Go forward the specified duration
|
||||
==
|
||||
|
||||
Go back one tick
|
||||
==
|
||||
|
||||
Go forward one tick
|
||||
==
|
||||
|
||||
Go back one marker
|
||||
==
|
||||
|
||||
Go forward one marker
|
||||
==
|
||||
|
||||
Slow down the demo
|
||||
==
|
||||
|
||||
|
@ -1416,12 +1424,6 @@ Mark the end of a cut (right click to reset)
|
|||
Export cut as a separate demo
|
||||
==
|
||||
|
||||
Go back one marker
|
||||
==
|
||||
|
||||
Go forward one marker
|
||||
==
|
||||
|
||||
Close the demo player
|
||||
==
|
||||
|
||||
|
@ -1437,6 +1439,9 @@ Cut interval
|
|||
Cut length
|
||||
==
|
||||
|
||||
Render cut to video
|
||||
==
|
||||
|
||||
Loading demo files
|
||||
==
|
||||
|
||||
|
@ -1488,10 +1493,10 @@ Open the directory that contains the configuration and user files
|
|||
Open the directory to add custom themes
|
||||
==
|
||||
|
||||
Loading skin files
|
||||
Toggle to edit your dummy settings
|
||||
==
|
||||
|
||||
Toggle to edit your dummy settings
|
||||
Loading skin files
|
||||
==
|
||||
|
||||
Download community skins
|
||||
|
|
|
@ -154,9 +154,6 @@ Favorites
|
|||
Feet
|
||||
== 발
|
||||
|
||||
Filter
|
||||
== 필터
|
||||
|
||||
Fire
|
||||
== 발사
|
||||
|
||||
|
@ -169,9 +166,6 @@ Force vote
|
|||
Free-View
|
||||
== 자유 시점
|
||||
|
||||
Friends
|
||||
== 친구
|
||||
|
||||
Fullscreen
|
||||
== 전체화면
|
||||
|
||||
|
@ -359,12 +353,6 @@ Screenshot
|
|||
Server address:
|
||||
== 서버 주소:
|
||||
|
||||
Server details
|
||||
== 서버 세부정보
|
||||
|
||||
Server filter
|
||||
== 서버 필터
|
||||
|
||||
Server info
|
||||
== 서버 정보
|
||||
|
||||
|
@ -550,9 +538,6 @@ Miscellaneous
|
|||
Netversion:
|
||||
== 통신 버전:
|
||||
|
||||
Info
|
||||
== 정보
|
||||
|
||||
UI Color
|
||||
== UI 색상
|
||||
|
||||
|
@ -1715,6 +1700,23 @@ None
|
|||
Add Clan
|
||||
==
|
||||
|
||||
Go back the specified duration
|
||||
==
|
||||
|
||||
[Demo player duration]
|
||||
%d min.
|
||||
==
|
||||
|
||||
[Demo player duration]
|
||||
%d sec.
|
||||
==
|
||||
|
||||
Change the skip duration
|
||||
==
|
||||
|
||||
Go forward the specified duration
|
||||
==
|
||||
|
||||
Mark the beginning of a cut (right click to reset)
|
||||
==
|
||||
|
||||
|
@ -1733,6 +1735,9 @@ Cut interval
|
|||
Cut length
|
||||
==
|
||||
|
||||
Render cut to video
|
||||
==
|
||||
|
||||
All combined
|
||||
==
|
||||
|
||||
|
|
|
@ -150,9 +150,6 @@ Favorites
|
|||
Feet
|
||||
== Бут
|
||||
|
||||
Filter
|
||||
== Фильтр
|
||||
|
||||
Fire
|
||||
== Атуу
|
||||
|
||||
|
@ -165,9 +162,6 @@ Force vote
|
|||
Free-View
|
||||
== Эркин сереп
|
||||
|
||||
Friends
|
||||
== Достор
|
||||
|
||||
Fullscreen
|
||||
== Толук экран
|
||||
|
||||
|
@ -210,9 +204,6 @@ Hook
|
|||
Hue
|
||||
== Түсү
|
||||
|
||||
Info
|
||||
== Маалымат
|
||||
|
||||
Internet
|
||||
== Интернет
|
||||
|
||||
|
@ -424,12 +415,6 @@ Screenshot
|
|||
Server address:
|
||||
== Сервер дареги:
|
||||
|
||||
Server details
|
||||
== Сервер деталдары
|
||||
|
||||
Server filter
|
||||
== Сервер фильтри
|
||||
|
||||
Server info
|
||||
== Маалымат
|
||||
|
||||
|
@ -905,12 +890,35 @@ Pause the current demo
|
|||
Stop the current demo
|
||||
==
|
||||
|
||||
Go back the specified duration
|
||||
==
|
||||
|
||||
[Demo player duration]
|
||||
%d min.
|
||||
==
|
||||
|
||||
[Demo player duration]
|
||||
%d sec.
|
||||
==
|
||||
|
||||
Change the skip duration
|
||||
==
|
||||
|
||||
Go forward the specified duration
|
||||
==
|
||||
|
||||
Go back one tick
|
||||
==
|
||||
|
||||
Go forward one tick
|
||||
==
|
||||
|
||||
Go back one marker
|
||||
==
|
||||
|
||||
Go forward one marker
|
||||
==
|
||||
|
||||
Slow down the demo
|
||||
==
|
||||
|
||||
|
@ -926,12 +934,6 @@ Mark the end of a cut (right click to reset)
|
|||
Export cut as a separate demo
|
||||
==
|
||||
|
||||
Go back one marker
|
||||
==
|
||||
|
||||
Go forward one marker
|
||||
==
|
||||
|
||||
Close the demo player
|
||||
==
|
||||
|
||||
|
@ -950,6 +952,9 @@ Cut length
|
|||
Remove chat
|
||||
==
|
||||
|
||||
Render cut to video
|
||||
==
|
||||
|
||||
Please use a different name
|
||||
==
|
||||
|
||||
|
@ -1100,10 +1105,10 @@ Max CSVs
|
|||
Dummy settings
|
||||
==
|
||||
|
||||
Loading skin files
|
||||
Toggle to edit your dummy settings
|
||||
==
|
||||
|
||||
Toggle to edit your dummy settings
|
||||
Loading skin files
|
||||
==
|
||||
|
||||
Download skins
|
||||
|
@ -1157,10 +1162,16 @@ Show all
|
|||
Toggle dyncam
|
||||
==
|
||||
|
||||
Toggle dummy
|
||||
Toggle ghost
|
||||
==
|
||||
|
||||
Toggle ghost
|
||||
Converse
|
||||
==
|
||||
|
||||
Chat command
|
||||
==
|
||||
|
||||
Toggle dummy
|
||||
==
|
||||
|
||||
Dummy copy
|
||||
|
@ -1169,9 +1180,6 @@ Dummy copy
|
|||
Hammerfly dummy
|
||||
==
|
||||
|
||||
Converse
|
||||
==
|
||||
|
||||
Statboard
|
||||
==
|
||||
|
||||
|
@ -1184,9 +1192,6 @@ Show entities
|
|||
Show HUD
|
||||
==
|
||||
|
||||
Chat command
|
||||
==
|
||||
|
||||
Enable controller
|
||||
==
|
||||
|
||||
|
|
|
@ -147,9 +147,6 @@ Favorites
|
|||
Feet
|
||||
== Føtter
|
||||
|
||||
Filter
|
||||
== Filter
|
||||
|
||||
Fire
|
||||
== Skyt
|
||||
|
||||
|
@ -162,9 +159,6 @@ Force vote
|
|||
Free-View
|
||||
== Fri-visning
|
||||
|
||||
Friends
|
||||
== Venner
|
||||
|
||||
Fullscreen
|
||||
== Fullskjerm
|
||||
|
||||
|
@ -358,12 +352,6 @@ Screenshot
|
|||
Server address:
|
||||
== Serveradresse:
|
||||
|
||||
Server details
|
||||
== Serverdetaljer
|
||||
|
||||
Server filter
|
||||
== Serverfilter
|
||||
|
||||
Server info
|
||||
== Serverinfo
|
||||
|
||||
|
@ -534,9 +522,6 @@ Netversion:
|
|||
Map:
|
||||
== Bane:
|
||||
|
||||
Info
|
||||
== Info
|
||||
|
||||
Hue
|
||||
== Farge
|
||||
|
||||
|
@ -1364,12 +1349,35 @@ Pause the current demo
|
|||
Stop the current demo
|
||||
==
|
||||
|
||||
Go back the specified duration
|
||||
==
|
||||
|
||||
[Demo player duration]
|
||||
%d min.
|
||||
==
|
||||
|
||||
[Demo player duration]
|
||||
%d sec.
|
||||
==
|
||||
|
||||
Change the skip duration
|
||||
==
|
||||
|
||||
Go forward the specified duration
|
||||
==
|
||||
|
||||
Go back one tick
|
||||
==
|
||||
|
||||
Go forward one tick
|
||||
==
|
||||
|
||||
Go back one marker
|
||||
==
|
||||
|
||||
Go forward one marker
|
||||
==
|
||||
|
||||
Slow down the demo
|
||||
==
|
||||
|
||||
|
@ -1385,12 +1393,6 @@ Mark the end of a cut (right click to reset)
|
|||
Export cut as a separate demo
|
||||
==
|
||||
|
||||
Go back one marker
|
||||
==
|
||||
|
||||
Go forward one marker
|
||||
==
|
||||
|
||||
Close the demo player
|
||||
==
|
||||
|
||||
|
@ -1406,6 +1408,9 @@ Cut interval
|
|||
Cut length
|
||||
==
|
||||
|
||||
Render cut to video
|
||||
==
|
||||
|
||||
Loading demo files
|
||||
==
|
||||
|
||||
|
@ -1457,10 +1462,10 @@ Open the directory that contains the configuration and user files
|
|||
Open the directory to add custom themes
|
||||
==
|
||||
|
||||
Loading skin files
|
||||
Toggle to edit your dummy settings
|
||||
==
|
||||
|
||||
Toggle to edit your dummy settings
|
||||
Loading skin files
|
||||
==
|
||||
|
||||
Download community skins
|
||||
|
|
|
@ -145,9 +145,6 @@ Favorites
|
|||
Feet
|
||||
== ﺎﭘ
|
||||
|
||||
Filter
|
||||
== ﺮﺘﻠﯿﻓ
|
||||
|
||||
Fire
|
||||
== ﻚﯿﻠﺷ
|
||||
|
||||
|
@ -160,9 +157,6 @@ Force vote
|
|||
Free-View
|
||||
== ﺩﺍﺯﺁ-ﺪﯾﺩ
|
||||
|
||||
Friends
|
||||
== ﻥﺎﺘﺳﻭﺩ
|
||||
|
||||
Fullscreen
|
||||
== ﻞﻣﺎﻛ ى ﻪﺤﻔﺻ
|
||||
|
||||
|
@ -472,9 +466,6 @@ Server address:
|
|||
Refresh
|
||||
== ﯼﺯﺎﺳ ﻩﺯﺎﺗ
|
||||
|
||||
Server filter
|
||||
== ﺭﻭﺮﺳ ﺮﺘﻠﯿﻓ
|
||||
|
||||
Server not full
|
||||
== ﺪﺷﺎﺒﻧ ﺮﭘ ﺭﻭﺮﺳ
|
||||
|
||||
|
@ -505,18 +496,12 @@ Types
|
|||
Reset filter
|
||||
== ﺮﺘﻠﯿﻓ ﻥﺩﺮﮐ ﺖﺴﯾﺭ
|
||||
|
||||
Server details
|
||||
== ﺭﻭﺮﺳ ﺕﺎﻋﻼﻃﺍ
|
||||
|
||||
Scoreboard
|
||||
== ﺕﺍﺯﺎﯿﺘﻣﺍ ﯼﻮﻠﺑﺎﺗ
|
||||
|
||||
Remove
|
||||
== ﻥﺩﺮﮐ کﺎﭘ
|
||||
|
||||
Info
|
||||
== ﺕﺎﻋﻼﻃﺍ
|
||||
|
||||
Please use a different name
|
||||
== ﻦﮐ ﻩﺩﺎﻔﺘﺳﺍ ﺕﻭﺎﻔﺘﻣ ﻡﺎﻧ ﮏﯾ ﺯﺍ ﺎﻔﻄﻟ
|
||||
|
||||
|
@ -1685,6 +1670,23 @@ None
|
|||
Add Clan
|
||||
==
|
||||
|
||||
Go back the specified duration
|
||||
==
|
||||
|
||||
[Demo player duration]
|
||||
%d min.
|
||||
==
|
||||
|
||||
[Demo player duration]
|
||||
%d sec.
|
||||
==
|
||||
|
||||
Change the skip duration
|
||||
==
|
||||
|
||||
Go forward the specified duration
|
||||
==
|
||||
|
||||
Mark the beginning of a cut (right click to reset)
|
||||
==
|
||||
|
||||
|
@ -1703,6 +1705,9 @@ Cut interval
|
|||
Cut length
|
||||
==
|
||||
|
||||
Render cut to video
|
||||
==
|
||||
|
||||
All combined
|
||||
==
|
||||
|
||||
|
|
|
@ -149,9 +149,6 @@ Favorites
|
|||
Feet
|
||||
== Stopy
|
||||
|
||||
Filter
|
||||
== Filtr
|
||||
|
||||
Fire
|
||||
== Strzał
|
||||
|
||||
|
@ -164,9 +161,6 @@ Force vote
|
|||
Free-View
|
||||
== Wolna kamera
|
||||
|
||||
Friends
|
||||
== Znajomi
|
||||
|
||||
Fullscreen
|
||||
== Pełny ekran
|
||||
|
||||
|
@ -360,12 +354,6 @@ Screenshot
|
|||
Server address:
|
||||
== Adres serwera:
|
||||
|
||||
Server details
|
||||
== Szczegóły serwera
|
||||
|
||||
Server filter
|
||||
== Filtr serwerów
|
||||
|
||||
Server info
|
||||
== Info serwera
|
||||
|
||||
|
@ -551,9 +539,6 @@ Netversion:
|
|||
Map:
|
||||
== Mapa:
|
||||
|
||||
Info
|
||||
== Info
|
||||
|
||||
Hue
|
||||
== Kolor
|
||||
|
||||
|
@ -1465,12 +1450,35 @@ Pause the current demo
|
|||
Stop the current demo
|
||||
==
|
||||
|
||||
Go back the specified duration
|
||||
==
|
||||
|
||||
[Demo player duration]
|
||||
%d min.
|
||||
==
|
||||
|
||||
[Demo player duration]
|
||||
%d sec.
|
||||
==
|
||||
|
||||
Change the skip duration
|
||||
==
|
||||
|
||||
Go forward the specified duration
|
||||
==
|
||||
|
||||
Go back one tick
|
||||
==
|
||||
|
||||
Go forward one tick
|
||||
==
|
||||
|
||||
Go back one marker
|
||||
==
|
||||
|
||||
Go forward one marker
|
||||
==
|
||||
|
||||
Slow down the demo
|
||||
==
|
||||
|
||||
|
@ -1486,12 +1494,6 @@ Mark the end of a cut (right click to reset)
|
|||
Export cut as a separate demo
|
||||
==
|
||||
|
||||
Go back one marker
|
||||
==
|
||||
|
||||
Go forward one marker
|
||||
==
|
||||
|
||||
Close the demo player
|
||||
==
|
||||
|
||||
|
@ -1507,6 +1509,9 @@ Cut interval
|
|||
Cut length
|
||||
==
|
||||
|
||||
Render cut to video
|
||||
==
|
||||
|
||||
Loading demo files
|
||||
==
|
||||
|
||||
|
|
|
@ -152,9 +152,6 @@ Favorites
|
|||
Feet
|
||||
== Pés
|
||||
|
||||
Filter
|
||||
== Filtro
|
||||
|
||||
Fire
|
||||
== Disparar
|
||||
|
||||
|
@ -167,9 +164,6 @@ Force vote
|
|||
Free-View
|
||||
== Vista Livre
|
||||
|
||||
Friends
|
||||
== Amigos
|
||||
|
||||
Fullscreen
|
||||
== Ecrã inteiro
|
||||
|
||||
|
@ -375,12 +369,6 @@ Screenshot
|
|||
Server address:
|
||||
== Endereço do servidor:
|
||||
|
||||
Server details
|
||||
== Detalhes do servidor
|
||||
|
||||
Server filter
|
||||
== Filtro de servidores
|
||||
|
||||
Server info
|
||||
== Info de servidor
|
||||
|
||||
|
@ -549,9 +537,6 @@ Map:
|
|||
FSAA samples
|
||||
== Amostras FSAA
|
||||
|
||||
Info
|
||||
== Info
|
||||
|
||||
Miscellaneous
|
||||
== Diversos
|
||||
|
||||
|
@ -1183,12 +1168,35 @@ Pause the current demo
|
|||
Stop the current demo
|
||||
==
|
||||
|
||||
Go back the specified duration
|
||||
==
|
||||
|
||||
[Demo player duration]
|
||||
%d min.
|
||||
==
|
||||
|
||||
[Demo player duration]
|
||||
%d sec.
|
||||
==
|
||||
|
||||
Change the skip duration
|
||||
==
|
||||
|
||||
Go forward the specified duration
|
||||
==
|
||||
|
||||
Go back one tick
|
||||
==
|
||||
|
||||
Go forward one tick
|
||||
==
|
||||
|
||||
Go back one marker
|
||||
==
|
||||
|
||||
Go forward one marker
|
||||
==
|
||||
|
||||
Slow down the demo
|
||||
==
|
||||
|
||||
|
@ -1204,12 +1212,6 @@ Mark the end of a cut (right click to reset)
|
|||
Export cut as a separate demo
|
||||
==
|
||||
|
||||
Go back one marker
|
||||
==
|
||||
|
||||
Go forward one marker
|
||||
==
|
||||
|
||||
Close the demo player
|
||||
==
|
||||
|
||||
|
@ -1225,6 +1227,9 @@ Cut interval
|
|||
Cut length
|
||||
==
|
||||
|
||||
Render cut to video
|
||||
==
|
||||
|
||||
Loading demo files
|
||||
==
|
||||
|
||||
|
@ -1309,10 +1314,10 @@ Open the directory that contains the configuration and user files
|
|||
Open the directory to add custom themes
|
||||
==
|
||||
|
||||
Loading skin files
|
||||
Toggle to edit your dummy settings
|
||||
==
|
||||
|
||||
Toggle to edit your dummy settings
|
||||
Loading skin files
|
||||
==
|
||||
|
||||
Download skins
|
||||
|
@ -1357,10 +1362,16 @@ Show all
|
|||
Toggle dyncam
|
||||
==
|
||||
|
||||
Toggle dummy
|
||||
Toggle ghost
|
||||
==
|
||||
|
||||
Toggle ghost
|
||||
Converse
|
||||
==
|
||||
|
||||
Chat command
|
||||
==
|
||||
|
||||
Toggle dummy
|
||||
==
|
||||
|
||||
Dummy copy
|
||||
|
@ -1369,9 +1380,6 @@ Dummy copy
|
|||
Hammerfly dummy
|
||||
==
|
||||
|
||||
Converse
|
||||
==
|
||||
|
||||
Statboard
|
||||
==
|
||||
|
||||
|
@ -1384,9 +1392,6 @@ Show entities
|
|||
Show HUD
|
||||
==
|
||||
|
||||
Chat command
|
||||
==
|
||||
|
||||
Enable controller
|
||||
==
|
||||
|
||||
|
|
|
@ -151,9 +151,6 @@ Favorites
|
|||
Feet
|
||||
== Picioare
|
||||
|
||||
Filter
|
||||
== Filtre
|
||||
|
||||
Fire
|
||||
== Foc
|
||||
|
||||
|
@ -166,9 +163,6 @@ Force vote
|
|||
Free-View
|
||||
== Vizualizare liberă
|
||||
|
||||
Friends
|
||||
== Prieteni
|
||||
|
||||
Fullscreen
|
||||
== Ecrat complet
|
||||
|
||||
|
@ -365,12 +359,6 @@ Screenshot
|
|||
Server address:
|
||||
== Adresă server:
|
||||
|
||||
Server details
|
||||
== Detalii server
|
||||
|
||||
Server filter
|
||||
== Filtru servere:
|
||||
|
||||
Server info
|
||||
== Info. server
|
||||
|
||||
|
@ -544,9 +532,6 @@ Netversion:
|
|||
Map:
|
||||
== Harta:
|
||||
|
||||
Info
|
||||
== Informații
|
||||
|
||||
Hue
|
||||
== Tentă
|
||||
|
||||
|
@ -920,12 +905,35 @@ Pause the current demo
|
|||
Stop the current demo
|
||||
==
|
||||
|
||||
Go back the specified duration
|
||||
==
|
||||
|
||||
[Demo player duration]
|
||||
%d min.
|
||||
==
|
||||
|
||||
[Demo player duration]
|
||||
%d sec.
|
||||
==
|
||||
|
||||
Change the skip duration
|
||||
==
|
||||
|
||||
Go forward the specified duration
|
||||
==
|
||||
|
||||
Go back one tick
|
||||
==
|
||||
|
||||
Go forward one tick
|
||||
==
|
||||
|
||||
Go back one marker
|
||||
==
|
||||
|
||||
Go forward one marker
|
||||
==
|
||||
|
||||
Slow down the demo
|
||||
==
|
||||
|
||||
|
@ -941,12 +949,6 @@ Mark the end of a cut (right click to reset)
|
|||
Export cut as a separate demo
|
||||
==
|
||||
|
||||
Go back one marker
|
||||
==
|
||||
|
||||
Go forward one marker
|
||||
==
|
||||
|
||||
Close the demo player
|
||||
==
|
||||
|
||||
|
@ -965,6 +967,9 @@ Cut length
|
|||
Remove chat
|
||||
==
|
||||
|
||||
Render cut to video
|
||||
==
|
||||
|
||||
Please use a different name
|
||||
==
|
||||
|
||||
|
@ -1115,10 +1120,10 @@ Max CSVs
|
|||
Dummy settings
|
||||
==
|
||||
|
||||
Loading skin files
|
||||
Toggle to edit your dummy settings
|
||||
==
|
||||
|
||||
Toggle to edit your dummy settings
|
||||
Loading skin files
|
||||
==
|
||||
|
||||
Download skins
|
||||
|
@ -1172,10 +1177,16 @@ Show all
|
|||
Toggle dyncam
|
||||
==
|
||||
|
||||
Toggle dummy
|
||||
Toggle ghost
|
||||
==
|
||||
|
||||
Toggle ghost
|
||||
Converse
|
||||
==
|
||||
|
||||
Chat command
|
||||
==
|
||||
|
||||
Toggle dummy
|
||||
==
|
||||
|
||||
Dummy copy
|
||||
|
@ -1184,9 +1195,6 @@ Dummy copy
|
|||
Hammerfly dummy
|
||||
==
|
||||
|
||||
Converse
|
||||
==
|
||||
|
||||
Statboard
|
||||
==
|
||||
|
||||
|
@ -1199,9 +1207,6 @@ Show entities
|
|||
Show HUD
|
||||
==
|
||||
|
||||
Chat command
|
||||
==
|
||||
|
||||
Enable controller
|
||||
==
|
||||
|
||||
|
|
|
@ -159,9 +159,6 @@ Favorites
|
|||
Feet
|
||||
== Ноги
|
||||
|
||||
Filter
|
||||
== Фильтр
|
||||
|
||||
Fire
|
||||
== Стрелять
|
||||
|
||||
|
@ -174,9 +171,6 @@ Force vote
|
|||
Free-View
|
||||
== Свободный обзор
|
||||
|
||||
Friends
|
||||
== Друзья
|
||||
|
||||
Fullscreen
|
||||
== Полноэкранный(настр.)
|
||||
|
||||
|
@ -370,12 +364,6 @@ Screenshot
|
|||
Server address:
|
||||
== Адрес сервера:
|
||||
|
||||
Server details
|
||||
== Сведения сервера
|
||||
|
||||
Server filter
|
||||
== Фильтр серверов
|
||||
|
||||
Server info
|
||||
== Информация
|
||||
|
||||
|
@ -607,9 +595,6 @@ Netversion:
|
|||
Map:
|
||||
== Карта:
|
||||
|
||||
Info
|
||||
== Инфо
|
||||
|
||||
Hue
|
||||
== Оттен.
|
||||
|
||||
|
@ -1756,3 +1741,23 @@ Unable to delete the folder '%s'. Make sure it's empty first.
|
|||
|
||||
Moved ingame
|
||||
== Перемещены в игре
|
||||
|
||||
Go back the specified duration
|
||||
==
|
||||
|
||||
[Demo player duration]
|
||||
%d min.
|
||||
==
|
||||
|
||||
[Demo player duration]
|
||||
%d sec.
|
||||
==
|
||||
|
||||
Change the skip duration
|
||||
==
|
||||
|
||||
Go forward the specified duration
|
||||
==
|
||||
|
||||
Render cut to video
|
||||
==
|
||||
|
|
|
@ -149,9 +149,6 @@ Favorites
|
|||
Feet
|
||||
== Stopala
|
||||
|
||||
Filter
|
||||
== Filter
|
||||
|
||||
Fire
|
||||
== Pucaj
|
||||
|
||||
|
@ -164,9 +161,6 @@ Force vote
|
|||
Free-View
|
||||
== Slobodan pregled
|
||||
|
||||
Friends
|
||||
== Prijatelji
|
||||
|
||||
Fullscreen
|
||||
== Preko celog ekrana
|
||||
|
||||
|
@ -356,12 +350,6 @@ Screenshot
|
|||
Server address:
|
||||
== Adresa servera:
|
||||
|
||||
Server details
|
||||
== Detalji o serveru
|
||||
|
||||
Server filter
|
||||
== Filter servera
|
||||
|
||||
Server info
|
||||
== O serveru
|
||||
|
||||
|
@ -562,9 +550,6 @@ Netversion:
|
|||
Map:
|
||||
== Mapa
|
||||
|
||||
Info
|
||||
== Info
|
||||
|
||||
Hue
|
||||
== Nijansa
|
||||
|
||||
|
@ -1507,178 +1492,169 @@ A render command failed. Try to update your GPU drivers.
|
|||
Submitting the render commands failed. Try to update your GPU drivers.
|
||||
== Неуспешно слање рендерних команди. Покушајте ажурирати драјвере за вашу графичку картицу.
|
||||
|
||||
[Graphics error]
|
||||
Failed to swap framebuffers. Try to update your GPU drivers.
|
||||
==
|
||||
|
||||
[Graphics error]
|
||||
Unknown error. Try to change gfx_backend to OpenGL or Vulkan in settings_ddnet.cfg in the config directory and try again.
|
||||
== Неуспешно замена бафера фреймова. Покушајте ажурирати драјвере за вашу графичку картицу.
|
||||
|
||||
[Graphics error]
|
||||
Could not initialize the given graphics backend, reverting to the default backend now.
|
||||
==
|
||||
== Није било могуће иницијализовати дати графички позадину, сада се враћамо на подразумевану позадину.
|
||||
|
||||
[Graphics error]
|
||||
Could not initialize the given graphics backend, this is probably because you didn't install the driver of the integrated graphics card.
|
||||
==
|
||||
== Није било могуће иницијализовати дати графички позадину, највероватније зато што нисте инсталирали драјвер за интегрисану графичку картицу.
|
||||
|
||||
Could not save downloaded map. Try manually deleting this file: %s
|
||||
==
|
||||
== Није могуће сачувати преузету мапу. Покушајте ручно обрисати овај фајл: %s.
|
||||
|
||||
Initializing components
|
||||
== Иницијализација компоненти
|
||||
|
||||
Quitting. Please wait…
|
||||
== Излазим. Молим вас да почекате…
|
||||
== Излазим. Молим вас да почекате...
|
||||
|
||||
Restarting. Please wait…
|
||||
== Поновно покрећем се. Молим вас да почекате…
|
||||
== Поновно покрећем се. Молим вас да почекате...
|
||||
|
||||
Multi-View
|
||||
==
|
||||
== Мулти-поглед
|
||||
|
||||
Rename folder
|
||||
==
|
||||
== Преименујте фасциклу
|
||||
|
||||
A demo with this name already exists
|
||||
==
|
||||
== Демо са овим именом већ постоји.
|
||||
|
||||
A folder with this name already exists
|
||||
==
|
||||
== Фасцикла са овим именом већ постоји.
|
||||
|
||||
Unable to rename the folder
|
||||
==
|
||||
== Није могуће преименовати фасциклу.
|
||||
|
||||
File '%s' already exists, do you want to overwrite it?
|
||||
==
|
||||
== Датотека '%s' већ постоји, желите ли да је препишете?
|
||||
|
||||
(paused)
|
||||
==
|
||||
== (паузирано)
|
||||
|
||||
transmits your player name to info.ddnet.org
|
||||
==
|
||||
== преноси ваше играчко име на info.ddnet.org
|
||||
|
||||
Copy info
|
||||
==
|
||||
== Копирај информације
|
||||
|
||||
No server selected
|
||||
==
|
||||
== Није изабран сервер
|
||||
|
||||
Online players (%d)
|
||||
==
|
||||
== Играчи на мрежи (%d)
|
||||
|
||||
Online clanmates (%d)
|
||||
==
|
||||
== Чланови клана на мрежи (%d)
|
||||
|
||||
[friends (server browser)]
|
||||
Offline (%d)
|
||||
==
|
||||
== Изван мреже (%d)
|
||||
|
||||
Click to select server. Double click to join your friend.
|
||||
==
|
||||
== Кликните да бисте изабрали сервер. Дупли клик за придруживање пријатељу.
|
||||
|
||||
Click to remove this player from your friends list.
|
||||
==
|
||||
== Кликните да бисте уклонили овог играча са листе пријатеља.
|
||||
|
||||
Click to remove this clan from your friends list.
|
||||
==
|
||||
== Кликните да бисте уклонили овај клан са листе пријатеља.
|
||||
|
||||
None
|
||||
==
|
||||
== Ништа
|
||||
|
||||
Are you sure that you want to remove the player '%s' from your friends list?
|
||||
==
|
||||
== Да ли сте сигурни да желите да уклоните играча '%s' са листе пријатеља?
|
||||
|
||||
Are you sure that you want to remove the clan '%s' from your friends list?
|
||||
==
|
||||
== Да ли сте сигурни да желите да уклоните клан '%s' са листе пријатеља?
|
||||
|
||||
Add Clan
|
||||
==
|
||||
== Додај клан
|
||||
|
||||
Play the current demo
|
||||
==
|
||||
== Пусти тренутни демо запис
|
||||
|
||||
Pause the current demo
|
||||
==
|
||||
== Паузирај тренутни демо запис
|
||||
|
||||
Stop the current demo
|
||||
==
|
||||
== Заустави тренутни демо запис
|
||||
|
||||
Go back one tick
|
||||
==
|
||||
== Иди назад један корак
|
||||
|
||||
Go forward one tick
|
||||
==
|
||||
== Иди напред један корак
|
||||
|
||||
Slow down the demo
|
||||
==
|
||||
== Успори демо запис
|
||||
|
||||
Speed up the demo
|
||||
==
|
||||
== Убрзај демо запис
|
||||
|
||||
Mark the beginning of a cut (right click to reset)
|
||||
==
|
||||
== Обележи почетак сечења (десни клик за ресетовање)
|
||||
|
||||
Mark the end of a cut (right click to reset)
|
||||
==
|
||||
== Обележи крај сечења (десни клик за ресетовање)
|
||||
|
||||
Export cut as a separate demo
|
||||
==
|
||||
== Извоз сечења као засебног демо записа
|
||||
|
||||
Go back one marker
|
||||
==
|
||||
== Иди назад један маркер
|
||||
|
||||
Go forward one marker
|
||||
==
|
||||
== Иди напред један маркер
|
||||
|
||||
Close the demo player
|
||||
==
|
||||
== Затвори репродуктор демо записа
|
||||
|
||||
Toggle keyboard shortcuts
|
||||
==
|
||||
== Пребациванје тастатурних пречица
|
||||
|
||||
Export demo cut
|
||||
==
|
||||
== Извоз демо сечења
|
||||
|
||||
Cut interval
|
||||
==
|
||||
== Интервал сечења
|
||||
|
||||
Cut length
|
||||
==
|
||||
== Дужина сечења
|
||||
|
||||
All combined
|
||||
==
|
||||
== Све комбиновано
|
||||
|
||||
Folder Link
|
||||
==
|
||||
== Веза до фасцикле
|
||||
|
||||
Open the directory that contains the demo files
|
||||
==
|
||||
== Отвори директоријум који садржи демо фајлове
|
||||
|
||||
Are you sure that you want to delete the folder '%s'?
|
||||
==
|
||||
== Да ли сте сигурни да желите да обришете фасциклу '%s'?
|
||||
|
||||
Are you sure that you want to delete the demo '%s'?
|
||||
==
|
||||
== Да ли сте сигурни да желите да обришете демо запис '%s'?
|
||||
|
||||
Delete folder
|
||||
==
|
||||
== Обриши фасциклу
|
||||
|
||||
Unable to delete the demo '%s'
|
||||
==
|
||||
== Није могуће обрисати демо запис '%s'
|
||||
|
||||
Unable to delete the folder '%s'. Make sure it's empty first.
|
||||
==
|
||||
== Није могуће обрисати фасциклу '%s'. Проверите прво да ли је празна.
|
||||
|
||||
Menu opened. Press Esc key again to close menu.
|
||||
==
|
||||
== Мени је отворен. Поново притисните тастер Esc да бисте затворили мени.
|
||||
|
||||
Save power by lowering refresh rate (higher input latency)
|
||||
==
|
||||
== Уштедите струју смањивањем стопе освежавања (већа улазна латенција)
|
||||
|
||||
Open the settings file
|
||||
==
|
||||
== Отворите датотеку са подешавањима
|
||||
|
||||
Open the directory that contains the configuration and user files
|
||||
== Отворите директоријум који садржи конфигурационе и корисничке датотеке.
|
||||
|
@ -1747,4 +1723,32 @@ Open the directory to add custom assets
|
|||
== Отворите директоријум за додавање прилагођених ресурса
|
||||
|
||||
Moved ingame
|
||||
== Померено у игри
|
||||
|
||||
[Graphics error]
|
||||
Failed to swap framebuffers. Try to update your GPU drivers.
|
||||
==
|
||||
|
||||
[Graphics error]
|
||||
Unknown error. Try to change gfx_backend to OpenGL or Vulkan in settings_ddnet.cfg in the config directory and try again.
|
||||
==
|
||||
|
||||
Go back the specified duration
|
||||
==
|
||||
|
||||
[Demo player duration]
|
||||
%d min.
|
||||
==
|
||||
|
||||
[Demo player duration]
|
||||
%d sec.
|
||||
==
|
||||
|
||||
Change the skip duration
|
||||
==
|
||||
|
||||
Go forward the specified duration
|
||||
==
|
||||
|
||||
Render cut to video
|
||||
==
|
||||
|
|
|
@ -145,9 +145,6 @@ Favorites
|
|||
Feet
|
||||
== Стопала
|
||||
|
||||
Filter
|
||||
== Филтер
|
||||
|
||||
Fire
|
||||
== Пуцај
|
||||
|
||||
|
@ -160,9 +157,6 @@ Force vote
|
|||
Free-View
|
||||
== Слободан преглед
|
||||
|
||||
Friends
|
||||
== Пријатељи
|
||||
|
||||
Fullscreen
|
||||
== Преко целог екрана
|
||||
|
||||
|
@ -352,12 +346,6 @@ Screenshot
|
|||
Server address:
|
||||
== Адреса сервера:
|
||||
|
||||
Server details
|
||||
== Детаљи о серверу
|
||||
|
||||
Server filter
|
||||
== Филтер сервера
|
||||
|
||||
Server info
|
||||
== О серверу
|
||||
|
||||
|
@ -558,9 +546,6 @@ Netversion:
|
|||
Map:
|
||||
== Мапа
|
||||
|
||||
Info
|
||||
== Инфо
|
||||
|
||||
Hue
|
||||
== Нијанса
|
||||
|
||||
|
@ -1601,12 +1586,35 @@ Pause the current demo
|
|||
Stop the current demo
|
||||
==
|
||||
|
||||
Go back the specified duration
|
||||
==
|
||||
|
||||
[Demo player duration]
|
||||
%d min.
|
||||
==
|
||||
|
||||
[Demo player duration]
|
||||
%d sec.
|
||||
==
|
||||
|
||||
Change the skip duration
|
||||
==
|
||||
|
||||
Go forward the specified duration
|
||||
==
|
||||
|
||||
Go back one tick
|
||||
==
|
||||
|
||||
Go forward one tick
|
||||
==
|
||||
|
||||
Go back one marker
|
||||
==
|
||||
|
||||
Go forward one marker
|
||||
==
|
||||
|
||||
Slow down the demo
|
||||
==
|
||||
|
||||
|
@ -1622,12 +1630,6 @@ Mark the end of a cut (right click to reset)
|
|||
Export cut as a separate demo
|
||||
==
|
||||
|
||||
Go back one marker
|
||||
==
|
||||
|
||||
Go forward one marker
|
||||
==
|
||||
|
||||
Close the demo player
|
||||
==
|
||||
|
||||
|
@ -1643,6 +1645,9 @@ Cut interval
|
|||
Cut length
|
||||
==
|
||||
|
||||
Render cut to video
|
||||
==
|
||||
|
||||
All combined
|
||||
==
|
||||
|
||||
|
|
|
@ -177,9 +177,6 @@ Favorites
|
|||
Feet
|
||||
== 脚
|
||||
|
||||
Filter
|
||||
== 筛选
|
||||
|
||||
Fire
|
||||
== 开火
|
||||
|
||||
|
@ -192,9 +189,6 @@ Force vote
|
|||
Free-View
|
||||
== 自由视角
|
||||
|
||||
Friends
|
||||
== 好友
|
||||
|
||||
Fullscreen
|
||||
== 独占全屏
|
||||
|
||||
|
@ -415,12 +409,6 @@ Screenshot
|
|||
Server address:
|
||||
== 服务器地址:
|
||||
|
||||
Server details
|
||||
== 服务器详情
|
||||
|
||||
Server filter
|
||||
== 服务器筛选
|
||||
|
||||
Server info
|
||||
== 服务器信息
|
||||
|
||||
|
@ -616,9 +604,6 @@ Netversion:
|
|||
Map:
|
||||
== 地图:
|
||||
|
||||
Info
|
||||
== 信息
|
||||
|
||||
Hue
|
||||
== 色调
|
||||
|
||||
|
@ -1780,3 +1765,23 @@ Unable to delete the folder '%s'. Make sure it's empty first.
|
|||
|
||||
Moved ingame
|
||||
== 游戏内移动
|
||||
|
||||
Go back the specified duration
|
||||
==
|
||||
|
||||
[Demo player duration]
|
||||
%d min.
|
||||
==
|
||||
|
||||
[Demo player duration]
|
||||
%d sec.
|
||||
==
|
||||
|
||||
Change the skip duration
|
||||
==
|
||||
|
||||
Go forward the specified duration
|
||||
==
|
||||
|
||||
Render cut to video
|
||||
==
|
||||
|
|
|
@ -145,9 +145,6 @@ Favorites
|
|||
Feet
|
||||
== Nohy
|
||||
|
||||
Filter
|
||||
== Filter
|
||||
|
||||
Fire
|
||||
== Streľba
|
||||
|
||||
|
@ -160,9 +157,6 @@ Force vote
|
|||
Free-View
|
||||
== Voľná Kamera
|
||||
|
||||
Friends
|
||||
== Priatelia
|
||||
|
||||
Fullscreen
|
||||
== Celá obrazovka
|
||||
|
||||
|
@ -356,12 +350,6 @@ Screenshot
|
|||
Server address:
|
||||
== Adresa servera:
|
||||
|
||||
Server details
|
||||
== Detaily servera
|
||||
|
||||
Server filter
|
||||
== Filter serverov
|
||||
|
||||
Server info
|
||||
== Informácie
|
||||
|
||||
|
@ -532,9 +520,6 @@ Netversion:
|
|||
Map:
|
||||
== Mapa:
|
||||
|
||||
Info
|
||||
== Info
|
||||
|
||||
Hue
|
||||
== Hue
|
||||
|
||||
|
@ -911,12 +896,35 @@ Pause the current demo
|
|||
Stop the current demo
|
||||
==
|
||||
|
||||
Go back the specified duration
|
||||
==
|
||||
|
||||
[Demo player duration]
|
||||
%d min.
|
||||
==
|
||||
|
||||
[Demo player duration]
|
||||
%d sec.
|
||||
==
|
||||
|
||||
Change the skip duration
|
||||
==
|
||||
|
||||
Go forward the specified duration
|
||||
==
|
||||
|
||||
Go back one tick
|
||||
==
|
||||
|
||||
Go forward one tick
|
||||
==
|
||||
|
||||
Go back one marker
|
||||
==
|
||||
|
||||
Go forward one marker
|
||||
==
|
||||
|
||||
Slow down the demo
|
||||
==
|
||||
|
||||
|
@ -932,12 +940,6 @@ Mark the end of a cut (right click to reset)
|
|||
Export cut as a separate demo
|
||||
==
|
||||
|
||||
Go back one marker
|
||||
==
|
||||
|
||||
Go forward one marker
|
||||
==
|
||||
|
||||
Close the demo player
|
||||
==
|
||||
|
||||
|
@ -956,6 +958,9 @@ Cut length
|
|||
Remove chat
|
||||
==
|
||||
|
||||
Render cut to video
|
||||
==
|
||||
|
||||
Please use a different name
|
||||
==
|
||||
|
||||
|
@ -1106,10 +1111,10 @@ Max CSVs
|
|||
Dummy settings
|
||||
==
|
||||
|
||||
Loading skin files
|
||||
Toggle to edit your dummy settings
|
||||
==
|
||||
|
||||
Toggle to edit your dummy settings
|
||||
Loading skin files
|
||||
==
|
||||
|
||||
Download skins
|
||||
|
@ -1163,10 +1168,16 @@ Show all
|
|||
Toggle dyncam
|
||||
==
|
||||
|
||||
Toggle dummy
|
||||
Toggle ghost
|
||||
==
|
||||
|
||||
Toggle ghost
|
||||
Converse
|
||||
==
|
||||
|
||||
Chat command
|
||||
==
|
||||
|
||||
Toggle dummy
|
||||
==
|
||||
|
||||
Dummy copy
|
||||
|
@ -1175,9 +1186,6 @@ Dummy copy
|
|||
Hammerfly dummy
|
||||
==
|
||||
|
||||
Converse
|
||||
==
|
||||
|
||||
Statboard
|
||||
==
|
||||
|
||||
|
@ -1190,9 +1198,6 @@ Show entities
|
|||
Show HUD
|
||||
==
|
||||
|
||||
Chat command
|
||||
==
|
||||
|
||||
Enable controller
|
||||
==
|
||||
|
||||
|
|
|
@ -164,9 +164,6 @@ Favorites
|
|||
Feet
|
||||
== Pies
|
||||
|
||||
Filter
|
||||
== Filtro
|
||||
|
||||
Fire
|
||||
== Disparar
|
||||
|
||||
|
@ -179,9 +176,6 @@ Force vote
|
|||
Free-View
|
||||
== Vista libre
|
||||
|
||||
Friends
|
||||
== Amigos
|
||||
|
||||
Fullscreen
|
||||
== Pantalla completa
|
||||
|
||||
|
@ -378,12 +372,6 @@ Screenshot
|
|||
Server address:
|
||||
== IP del servidor:
|
||||
|
||||
Server details
|
||||
== Detalles del servidor
|
||||
|
||||
Server filter
|
||||
== Filtro del servidor
|
||||
|
||||
Server info
|
||||
== Servidor
|
||||
|
||||
|
@ -557,9 +545,6 @@ Netversion:
|
|||
Map:
|
||||
== Mapa:
|
||||
|
||||
Info
|
||||
== Información
|
||||
|
||||
Hue
|
||||
== Matiz
|
||||
|
||||
|
@ -1763,3 +1748,23 @@ Unable to delete the folder '%s'. Make sure it's empty first.
|
|||
|
||||
Moved ingame
|
||||
== Movido dentro del juego
|
||||
|
||||
Go back the specified duration
|
||||
==
|
||||
|
||||
[Demo player duration]
|
||||
%d min.
|
||||
==
|
||||
|
||||
[Demo player duration]
|
||||
%d sec.
|
||||
==
|
||||
|
||||
Change the skip duration
|
||||
==
|
||||
|
||||
Go forward the specified duration
|
||||
==
|
||||
|
||||
Render cut to video
|
||||
==
|
||||
|
|
|
@ -7,6 +7,7 @@
|
|||
# 3edcxzaq1 2020-06-25 00:00:00
|
||||
# cur.ie 2020-09-28 00:00:00
|
||||
# simpygirl 2022-02-20 00:00:00
|
||||
# furo 2023-08-29 00:00:00
|
||||
##### /authors #####
|
||||
|
||||
##### translated strings #####
|
||||
|
@ -149,9 +150,6 @@ Favorites
|
|||
Feet
|
||||
== Fötter
|
||||
|
||||
Filter
|
||||
== Filter
|
||||
|
||||
Fire
|
||||
== Skjuta
|
||||
|
||||
|
@ -164,9 +162,6 @@ Force vote
|
|||
Free-View
|
||||
== Friläge
|
||||
|
||||
Friends
|
||||
== Kompisar
|
||||
|
||||
Fullscreen
|
||||
== Fullskärm
|
||||
|
||||
|
@ -207,7 +202,7 @@ Hook
|
|||
== Hook
|
||||
|
||||
Invalid Demo
|
||||
== Ogiltigt deo
|
||||
== Ogiltig demo
|
||||
|
||||
Join blue
|
||||
== Spela i blått
|
||||
|
@ -343,7 +338,7 @@ Rename demo
|
|||
== Byt namn på demo
|
||||
|
||||
Reset filter
|
||||
== Återställ filter
|
||||
== Nollställ filter
|
||||
|
||||
Score
|
||||
== Poäng
|
||||
|
@ -360,12 +355,6 @@ Screenshot
|
|||
Server address:
|
||||
== Serveradress
|
||||
|
||||
Server details
|
||||
== Serverdetaljer
|
||||
|
||||
Server filter
|
||||
== Serverfilter
|
||||
|
||||
Server info
|
||||
== Serverinfo
|
||||
|
||||
|
@ -415,7 +404,7 @@ Strict gametype filter
|
|||
== Strikt speltypsfilter
|
||||
|
||||
Sudden Death
|
||||
== Plötslig död
|
||||
== Sudden Death
|
||||
|
||||
Switch weapon on pickup
|
||||
== Byt vapen vid anskaffning
|
||||
|
@ -433,7 +422,7 @@ The server is running a non-standard tuning on a pure game type.
|
|||
== Denna server kör inte standardinställningar på en reserverad speltyp.
|
||||
|
||||
There's an unsaved map in the editor, you might want to save it before you quit the game.
|
||||
== Det finns en osparad bana i redigeraden, du kanske vill spara den innan du avslutar.
|
||||
== Det finns en osparad bana i redigeraren, du kanske vill spara den innan du avslutar.
|
||||
|
||||
Time limit
|
||||
== Tidsbegränsning
|
||||
|
@ -534,9 +523,6 @@ Netversion:
|
|||
Map:
|
||||
== Bana
|
||||
|
||||
Info
|
||||
== Info
|
||||
|
||||
Hue
|
||||
== Nyans
|
||||
|
||||
|
@ -550,7 +536,7 @@ Size:
|
|||
== Storlek:
|
||||
|
||||
Reset to defaults
|
||||
== Återställ till standard
|
||||
== Nollställ till standard
|
||||
|
||||
Quit anyway?
|
||||
== Avsluta i alla fall?
|
||||
|
@ -607,7 +593,7 @@ Show kill messages
|
|||
== Visa döds meddelanden
|
||||
|
||||
Reset
|
||||
== Återställ
|
||||
== Nollställ
|
||||
|
||||
DDNet
|
||||
== DDNet
|
||||
|
@ -643,7 +629,7 @@ Reconnect in %d sec
|
|||
== Återkopplar om %d sekunder
|
||||
|
||||
Successfully saved the replay!
|
||||
== Lyckades med att spara repris
|
||||
== Lyckades med att spara repris!
|
||||
|
||||
Save ghost
|
||||
== Spara spöken
|
||||
|
@ -676,13 +662,13 @@ Show votes window after voting
|
|||
== Visa röstnings fönster efter röstning
|
||||
|
||||
DDNet Client needs to be restarted to complete update!
|
||||
== DDNet Klienten behöves startas om för att genomföra updateringen!
|
||||
== DDNet Klienten behövs startas om för att genomföra uppdateringen!
|
||||
|
||||
Kill
|
||||
== Dö
|
||||
|
||||
Personal best:
|
||||
== Personligs bästa:
|
||||
== Personligt bästa:
|
||||
|
||||
Show DDNet map finishes in server browser
|
||||
== Visa DDNet bana avklarningar i server bläddraren
|
||||
|
@ -706,7 +692,7 @@ Render
|
|||
== Rendera
|
||||
|
||||
Are you sure that you want to disconnect?
|
||||
== Är du säker att du vill koppla ifrån?
|
||||
== Är du säker på att du vill koppla ifrån?
|
||||
|
||||
Grabs
|
||||
== Grabs
|
||||
|
@ -808,7 +794,7 @@ Date
|
|||
== Datum
|
||||
|
||||
Show other players' hook collision lines
|
||||
== Visa andra spelares hook kollision linor
|
||||
== Visa andra spelares hook kollisions linjer
|
||||
|
||||
Fetch Info
|
||||
== Hämta Info
|
||||
|
@ -874,7 +860,7 @@ Show only chat messages from friends
|
|||
== Visa bara chatt meddelanden från vänner
|
||||
|
||||
DDNet Client updated!
|
||||
== DDNet Klienten updaterades!
|
||||
== DDNet Klienten uppdaterades!
|
||||
|
||||
Converse
|
||||
== Konversera
|
||||
|
@ -916,7 +902,7 @@ Best
|
|||
== Bäst
|
||||
|
||||
Updating...
|
||||
== Updaterar...
|
||||
== Uppdaterar...
|
||||
|
||||
Clan plates size
|
||||
== Klanskylt storlek
|
||||
|
@ -925,7 +911,7 @@ Size
|
|||
== Storlek
|
||||
|
||||
Save the best demo of each race
|
||||
== Spara the bästa demon av varje race
|
||||
== Spara den bästa demot av varje race
|
||||
|
||||
Frags
|
||||
== Frags
|
||||
|
@ -997,7 +983,7 @@ Show names in chat in team colors
|
|||
== Visa namn in chatten med lagets färger
|
||||
|
||||
Update now
|
||||
== Updatera nu
|
||||
== Uppdatera nu
|
||||
|
||||
Toggle ghost
|
||||
== Växla spöke
|
||||
|
@ -1009,7 +995,7 @@ Team message
|
|||
== Lag meddelande
|
||||
|
||||
File already exists, do you want to overwrite it?
|
||||
== Filen finns redan, vill du skriv över den?
|
||||
== Filen finns redan, vill du skriva över den?
|
||||
|
||||
Hook collisions
|
||||
== Hook kollisioner
|
||||
|
@ -1069,7 +1055,7 @@ Server executable not found, can't run server
|
|||
== Server exekveringsfil hittades ej, kan ej starta servern
|
||||
|
||||
Editor
|
||||
== Editor
|
||||
== Redigeraren
|
||||
|
||||
[Start menu]
|
||||
Play
|
||||
|
@ -1091,7 +1077,7 @@ Saving ddnet-settings.cfg failed
|
|||
== Det gick inte att spara ddnet-settings.cfg
|
||||
|
||||
The width of texture %s is not divisible by %d, or the height is not divisible by %d, which might cause visual bugs.
|
||||
== Bredden på texturen %s är inte delbar med %d, eller höjden är inte delbar med %d, vilket kan orsaka visuella buggar.
|
||||
== Bredden på texturen %s är inte delbar med %d, eller är höjden inte delbar med %d, vilket kan orsaka visuella buggar.
|
||||
|
||||
Debug mode enabled. Press Ctrl+Shift+D to disable debug mode.
|
||||
== Felsökningsläge är aktiverad, Klicka Ctrl+Shift+D för att stänga av felsökningsläge.
|
||||
|
@ -1106,7 +1092,7 @@ Checking for existing player with your name
|
|||
== Söker efter en befintlig spelare med ditt namn
|
||||
|
||||
Are you sure that you want to disconnect and switch to a different server?
|
||||
== Är du säker att du vill koppla ifrån och byta server?
|
||||
== Är du säker på att du vill koppla ifrån och byta server?
|
||||
|
||||
Theme
|
||||
== Tema
|
||||
|
@ -1223,7 +1209,7 @@ Entities
|
|||
== Entities
|
||||
|
||||
Emoticons
|
||||
== Emoticons
|
||||
== Känsloikoner
|
||||
|
||||
Particles
|
||||
== Partiklar
|
||||
|
@ -1239,510 +1225,530 @@ https://ddnet.org/discord
|
|||
|
||||
[Graphics error]
|
||||
Failed during initialization. Try to change gfx_backend to OpenGL or Vulkan in settings_ddnet.cfg in the config directory and try again.
|
||||
==
|
||||
== Misslyckades under uppstart. Testa att ändra gfx_backend till OpenGL eller Vulkan i settings_ddnet.cfg i konfig nappen och försök igen.
|
||||
|
||||
[Graphics error]
|
||||
Out of VRAM. Try removing custom assets (skins, entities, etc.), especially those with high resolution.
|
||||
==
|
||||
== Slut på VRAM. Testa att ta bort assets (skins, entities, etc.), speciellt dem i hög upplösning.
|
||||
|
||||
[Graphics error]
|
||||
An error during command recording occurred. Try to update your GPU drivers.
|
||||
==
|
||||
== Ett fel uppstod under "command recording". Testa att uppdatera ditt grafikkorts drivrutiner.
|
||||
|
||||
[Graphics error]
|
||||
A render command failed. Try to update your GPU drivers.
|
||||
==
|
||||
== Ett "render command" misslyckades. Testa att uppdatera ditt grafikkorts drivrutiner.
|
||||
|
||||
[Graphics error]
|
||||
Submitting the render commands failed. Try to update your GPU drivers.
|
||||
==
|
||||
== Inskickning av "render commands" misslyckades. Testa att uppdatera ditt grafikkorts drivrutiner.
|
||||
|
||||
[Graphics error]
|
||||
Failed to swap framebuffers. Try to update your GPU drivers.
|
||||
==
|
||||
== Misslyckades att "swap framebuffers". Testa att uppdatera ditt grafikkorts drivrutiner.
|
||||
|
||||
[Graphics error]
|
||||
Unknown error. Try to change gfx_backend to OpenGL or Vulkan in settings_ddnet.cfg in the config directory and try again.
|
||||
==
|
||||
== Okänt fel. Testa att ändra gfx_backend till OpenGL eller Vulkan i settings_ddnet.cfg i konfig nappen och försök igen.
|
||||
|
||||
[Graphics error]
|
||||
Could not initialize the given graphics backend, reverting to the default backend now.
|
||||
==
|
||||
== Kunde inte starta den angivna grafikbackend, återgår till standard backend nu.
|
||||
|
||||
[Graphics error]
|
||||
Could not initialize the given graphics backend, this is probably because you didn't install the driver of the integrated graphics card.
|
||||
==
|
||||
== Kunde inte starta den angivna grafikbackend, detta beror någ på att du inte har installerad drivrutinerna för ditt integrerade grafikkort.
|
||||
|
||||
Could not save downloaded map. Try manually deleting this file: %s
|
||||
==
|
||||
== Kunde inte spara nedladdade bana. Testa att manuellt ta bort denna fil: %s
|
||||
|
||||
The format of texture %s is not RGBA which will cause visual bugs.
|
||||
==
|
||||
== Formatet av texturn %s är inte RGBA, vilket kommer att orsaka visuella buggar.
|
||||
|
||||
Preparing demo playback
|
||||
==
|
||||
== Förbreder för demo uppspelning
|
||||
|
||||
Connected
|
||||
==
|
||||
== Ansluten
|
||||
|
||||
Loading map file from storage
|
||||
==
|
||||
== Laddar bana fil från lagring
|
||||
|
||||
Why are you slowmo replaying to read this?
|
||||
==
|
||||
== Varför försöker du att läsa detta?
|
||||
|
||||
Initializing components
|
||||
==
|
||||
== Initierar komponenter
|
||||
|
||||
Initializing assets
|
||||
==
|
||||
== Initierar assets
|
||||
|
||||
Initializing map logic
|
||||
==
|
||||
== Initierar bana logik
|
||||
|
||||
Sending initial client info
|
||||
==
|
||||
== Skickar första klient info
|
||||
|
||||
Quitting. Please wait…
|
||||
==
|
||||
== Lämnar. Vänligen vänta…
|
||||
|
||||
Restarting. Please wait…
|
||||
==
|
||||
== Startar om. Vänligen vänta…
|
||||
|
||||
Position:
|
||||
==
|
||||
== Position
|
||||
|
||||
Speed:
|
||||
==
|
||||
== Hastighet:
|
||||
|
||||
Angle:
|
||||
==
|
||||
== Vinkel:
|
||||
|
||||
Multi-View
|
||||
==
|
||||
== Multi-Vy
|
||||
|
||||
Team %d
|
||||
==
|
||||
== Lag %d
|
||||
|
||||
Uploading map data to GPU
|
||||
==
|
||||
== Laddar upp bana data till grafikkortet
|
||||
|
||||
Trying to determine UDP connectivity...
|
||||
==
|
||||
== Försöker att bestämma UDP anslutning...
|
||||
|
||||
UDP seems to be filtered.
|
||||
==
|
||||
== UDP verkar vara filtrerad.
|
||||
|
||||
UDP and TCP IP addresses seem to be different. Try disabling VPN, proxy or network accelerators.
|
||||
==
|
||||
== UDP och TCP IP adresser verkar vara olika. Testa att stänga av VPN, proxy eller nätverksacceleratorer.
|
||||
|
||||
No answer from server yet.
|
||||
==
|
||||
== Inget svar från servern än.
|
||||
|
||||
Getting game info
|
||||
==
|
||||
== Hämtar spel info
|
||||
|
||||
Requesting to join the game
|
||||
==
|
||||
== Begär att få ansluta till spelet.
|
||||
|
||||
Rename folder
|
||||
==
|
||||
== Döp om mapp.
|
||||
|
||||
A demo with this name already exists
|
||||
==
|
||||
== Ett demo med detta namn finns redan
|
||||
|
||||
A folder with this name already exists
|
||||
==
|
||||
== En mapp finns redan med detta namn
|
||||
|
||||
Unable to rename the folder
|
||||
==
|
||||
== Misslyckades att döpa om mappen
|
||||
|
||||
File '%s' already exists, do you want to overwrite it?
|
||||
==
|
||||
== Fil '%s' finns redan, vill du skriva över den?
|
||||
|
||||
(paused)
|
||||
==
|
||||
== (pausad)
|
||||
|
||||
Join Tutorial Server
|
||||
==
|
||||
== Anslut till Tutorial
|
||||
|
||||
Skip Tutorial
|
||||
==
|
||||
== Skippa Tutorial
|
||||
|
||||
Loading menu images
|
||||
==
|
||||
== Laddar meny bilder
|
||||
|
||||
Copy info
|
||||
==
|
||||
== Kopiera info
|
||||
|
||||
No server selected
|
||||
==
|
||||
== Ingen server vald
|
||||
|
||||
Online players (%d)
|
||||
==
|
||||
== Online spelare (%d)
|
||||
|
||||
Online clanmates (%d)
|
||||
==
|
||||
== Online klanmedlemmar (%d)
|
||||
|
||||
[friends (server browser)]
|
||||
Offline (%d)
|
||||
==
|
||||
== Offline (%d)
|
||||
|
||||
Click to select server. Double click to join your friend.
|
||||
==
|
||||
== Klicka för att välja server. Dubbel klicka för att ansluta till din kamrat.
|
||||
|
||||
Click to remove this player from your friends list.
|
||||
==
|
||||
== Klicka för att ta bort denna spelare från din kompis lista.
|
||||
|
||||
Click to remove this clan from your friends list.
|
||||
==
|
||||
== Klicka för att ta bort denna klan från din kompis lista.
|
||||
|
||||
None
|
||||
==
|
||||
== Ingen
|
||||
|
||||
Are you sure that you want to remove the player '%s' from your friends list?
|
||||
==
|
||||
== Är du säker på att du vill ta bort spelare '%s' från din kompis lista?
|
||||
|
||||
Are you sure that you want to remove the clan '%s' from your friends list?
|
||||
==
|
||||
== Är du säker på att du vill ta bort klanen '%s' från din kompis lista?
|
||||
|
||||
Add Clan
|
||||
==
|
||||
== Lägg till klan
|
||||
|
||||
Play the current demo
|
||||
==
|
||||
== Spela demo
|
||||
|
||||
Pause the current demo
|
||||
==
|
||||
== Pausa demo
|
||||
|
||||
Stop the current demo
|
||||
==
|
||||
== Stoppa demo
|
||||
|
||||
Go back one tick
|
||||
==
|
||||
== Gå tillbaka en tick
|
||||
|
||||
Go forward one tick
|
||||
==
|
||||
== Gå framåt en tick
|
||||
|
||||
Slow down the demo
|
||||
==
|
||||
== Sakta ner demot
|
||||
|
||||
Speed up the demo
|
||||
==
|
||||
== Snabba up demot
|
||||
|
||||
Mark the beginning of a cut (right click to reset)
|
||||
==
|
||||
== Markera start av snittet (höger klicka för att nollställa)
|
||||
|
||||
Mark the end of a cut (right click to reset)
|
||||
==
|
||||
== Markera slutet av snittet (höger klicka för att nollställa)
|
||||
|
||||
Export cut as a separate demo
|
||||
==
|
||||
== Exportera snitt till en seperat demo fil
|
||||
|
||||
Go back one marker
|
||||
==
|
||||
== Gå tillbaka en markör
|
||||
|
||||
Go forward one marker
|
||||
==
|
||||
== Gå framåt en markör
|
||||
|
||||
Close the demo player
|
||||
==
|
||||
== Stäng demo spelaren
|
||||
|
||||
Toggle keyboard shortcuts
|
||||
==
|
||||
== Växla kortkommandon
|
||||
|
||||
Export demo cut
|
||||
==
|
||||
== Exportera demo snitt
|
||||
|
||||
Cut interval
|
||||
==
|
||||
== Snitt interval
|
||||
|
||||
Cut length
|
||||
==
|
||||
== Snitt längd
|
||||
|
||||
Loading demo files
|
||||
==
|
||||
== Laddar demo filer
|
||||
|
||||
All combined
|
||||
==
|
||||
== Alla kombinerade
|
||||
|
||||
Folder Link
|
||||
==
|
||||
== Mapp länk
|
||||
|
||||
Open the directory that contains the demo files
|
||||
==
|
||||
== Öppna mappen som innehåller demo filerna
|
||||
|
||||
Are you sure that you want to delete the folder '%s'?
|
||||
==
|
||||
== Är du säker på att du vill ta bort mappen '%s'?
|
||||
|
||||
Are you sure that you want to delete the demo '%s'?
|
||||
==
|
||||
== Är du säker på att du vill ta bort demot '%s'?
|
||||
|
||||
Delete folder
|
||||
==
|
||||
== Ta bort mapp
|
||||
|
||||
Unable to delete the demo '%s'
|
||||
==
|
||||
== Misslyckades att ta bort demot '%s'
|
||||
|
||||
Unable to delete the folder '%s'. Make sure it's empty first.
|
||||
==
|
||||
== Misslyckades att ta bort mappen '%s'. Den måste vara tom först.
|
||||
|
||||
Loading ghost files
|
||||
==
|
||||
== Laddar spök filer
|
||||
|
||||
Menu opened. Press Esc key again to close menu.
|
||||
==
|
||||
== Meny öppnad. Klicka Esc igen för att stänga menyn.
|
||||
|
||||
Save power by lowering refresh rate (higher input latency)
|
||||
==
|
||||
== Spara batteri genom att sänka uppdateringsfrekvensen (högre inmatnings latens)
|
||||
|
||||
Open the settings file
|
||||
==
|
||||
== Öppna inställningsfil
|
||||
|
||||
Open the directory that contains the configuration and user files
|
||||
==
|
||||
== Öppna mappen som innehåller konfigurationen och användarfiler
|
||||
|
||||
Open the directory to add custom themes
|
||||
==
|
||||
== Öppna mappen för att lägga till egna teman
|
||||
|
||||
Loading skin files
|
||||
==
|
||||
== Laddar skin filer
|
||||
|
||||
Toggle to edit your dummy settings
|
||||
==
|
||||
== Växla till att ändra dina dummy inställningar
|
||||
|
||||
Download community skins
|
||||
==
|
||||
== Ladda ner community skins
|
||||
|
||||
Choose default eyes when joining a server
|
||||
==
|
||||
== Välj standard ögon när du ansluter till en server
|
||||
|
||||
Create a random skin
|
||||
==
|
||||
== Skapa ett slumpad skin
|
||||
|
||||
Open the directory to add custom skins
|
||||
==
|
||||
== Öppna mappen för att lägga till egna skins
|
||||
|
||||
Enable controller
|
||||
==
|
||||
== Aktivera kontroller
|
||||
|
||||
Controller
|
||||
==
|
||||
== Kontroller
|
||||
|
||||
Ingame controller mode
|
||||
==
|
||||
== Kontroller läge under spel
|
||||
|
||||
[Ingame controller mode]
|
||||
Relative
|
||||
==
|
||||
== Relativ
|
||||
|
||||
[Ingame controller mode]
|
||||
Absolute
|
||||
==
|
||||
== Absolut
|
||||
|
||||
Ingame controller sens.
|
||||
==
|
||||
== Kontroller känslighet i spelet.
|
||||
|
||||
UI controller sens.
|
||||
==
|
||||
== Kontroller känslighet i menyer.
|
||||
|
||||
Controller jitter tolerance
|
||||
==
|
||||
== Kontroller skaka tolerans
|
||||
|
||||
No controller found. Plug in a controller.
|
||||
==
|
||||
== Ingen kontroller hittad. Anslut en kontroller.
|
||||
|
||||
Axis
|
||||
==
|
||||
== Axel
|
||||
|
||||
Status
|
||||
==
|
||||
== Status
|
||||
|
||||
Aim bind
|
||||
==
|
||||
== Aim bind
|
||||
|
||||
Mouse
|
||||
==
|
||||
== Mus
|
||||
|
||||
Ingame mouse sens.
|
||||
==
|
||||
== Mus känslighet i spelet.
|
||||
|
||||
UI mouse sens.
|
||||
==
|
||||
== Mus känslighet i menyer.
|
||||
|
||||
Reset controls
|
||||
==
|
||||
== Nollställ kontrollerna
|
||||
|
||||
Are you sure that you want to reset the controls to their defaults?
|
||||
==
|
||||
== Är du säker på att du vill nollställa kontrollerna till standard?
|
||||
|
||||
Cancel
|
||||
==
|
||||
== Avbryt
|
||||
|
||||
Allows maps to render with more detail
|
||||
==
|
||||
== Tillåt banor att visa mer detaljer
|
||||
|
||||
Renderer
|
||||
==
|
||||
== Renderer
|
||||
|
||||
default
|
||||
==
|
||||
== standard
|
||||
|
||||
custom
|
||||
==
|
||||
== egna
|
||||
|
||||
Graphics card
|
||||
==
|
||||
== Grafikkort
|
||||
|
||||
auto
|
||||
==
|
||||
== auto
|
||||
|
||||
Appearance
|
||||
==
|
||||
== Utseende
|
||||
|
||||
Name Plate
|
||||
==
|
||||
== Namnskylt
|
||||
|
||||
Hook Collisions
|
||||
==
|
||||
== Hook kollisioner
|
||||
|
||||
Show health, shields and ammo
|
||||
==
|
||||
== Visa hälsa, sköldar och ammunition
|
||||
|
||||
DDRace HUD
|
||||
==
|
||||
== DDRace HUD
|
||||
|
||||
Show client IDs in scoreboard
|
||||
==
|
||||
== Visa klient ID i poänglista
|
||||
|
||||
Show DDRace HUD
|
||||
==
|
||||
== Visa DDRace HUD
|
||||
|
||||
Show jumps indicator
|
||||
==
|
||||
== Visa hopp indikator
|
||||
|
||||
Show dummy actions
|
||||
==
|
||||
== Visa dummy actions
|
||||
|
||||
Show player position
|
||||
==
|
||||
== Visa spelarens position
|
||||
|
||||
Show player speed
|
||||
==
|
||||
== Visa spelarens hastighet
|
||||
|
||||
Show player target angle
|
||||
==
|
||||
== Visa spelarens vinkel
|
||||
|
||||
Show freeze bars
|
||||
==
|
||||
== Visa freeze bars
|
||||
|
||||
Opacity of freeze bars inside freeze
|
||||
==
|
||||
== Opacitet av freeze bars i freeze
|
||||
|
||||
Show hook strength indicator
|
||||
==
|
||||
== Visa hook styrka indikator
|
||||
|
||||
Hook collision line
|
||||
==
|
||||
== Hook kollisions linje
|
||||
|
||||
Hook collision line width
|
||||
==
|
||||
== Hook kollisions linje bredd
|
||||
|
||||
Hook collision line opacity
|
||||
==
|
||||
== Hook kollisions linje opacitet
|
||||
|
||||
Colors of the hook collision line, in case of a possible collision with:
|
||||
==
|
||||
== Färger av hook kollisions linje, ifall det finns en kollision med:
|
||||
|
||||
Your movements are not taken into account when calculating the line colors
|
||||
==
|
||||
== Dina rörelser tas inte med i beräkningen av linjefärgerna
|
||||
|
||||
Nothing hookable
|
||||
==
|
||||
== Inget hookable
|
||||
|
||||
Something hookable
|
||||
==
|
||||
== Något hookable
|
||||
|
||||
A Tee
|
||||
==
|
||||
== En Tee
|
||||
|
||||
Normal Color
|
||||
==
|
||||
== Normal Färg
|
||||
|
||||
Highlight Color
|
||||
==
|
||||
== Betonad Färg
|
||||
|
||||
Weapons
|
||||
==
|
||||
== Vapen
|
||||
|
||||
Rifle Laser Outline Color
|
||||
==
|
||||
== Gevär Laser Kontur Färg
|
||||
|
||||
Rifle Laser Inner Color
|
||||
==
|
||||
== Gevär Laser Inre Färg
|
||||
|
||||
Shotgun Laser Outline Color
|
||||
==
|
||||
== Hagelgevär Laser Kontur Färg
|
||||
|
||||
Shotgun Laser Inner Color
|
||||
==
|
||||
== Hagelgevär Inre Färg
|
||||
|
||||
Door Laser Outline Color
|
||||
==
|
||||
== Dörr Laser Kontur Färg
|
||||
|
||||
Door Laser Inner Color
|
||||
==
|
||||
== Dörr Laser Inre Färg
|
||||
|
||||
Freeze Laser Outline Color
|
||||
==
|
||||
== Freeze Laser Kontur Färg
|
||||
|
||||
Freeze Laser Inner Color
|
||||
==
|
||||
== Freeze Laser Inre Färg
|
||||
|
||||
Set all to Rifle
|
||||
==
|
||||
== Sätt alla till Gevär
|
||||
|
||||
When you cross the start line, show a ghost tee replicating the movements of your best time
|
||||
==
|
||||
== När du passera start linjen, visa en spök tee som visar rörelsen av din bästa tid
|
||||
|
||||
Opacity
|
||||
==
|
||||
== Opacitet
|
||||
|
||||
Adjust the opacity of entities belonging to other teams, such as tees and nameplates
|
||||
==
|
||||
== Justera opaciteten av entities som tillhör ett annat lag, som t.ex. tees och namnskyltar
|
||||
|
||||
Quads are used for background decoration
|
||||
==
|
||||
== Quads används till bakgrunds decorationer
|
||||
|
||||
Tries to predict other entities to give a feel of low latency
|
||||
==
|
||||
== Försöker att predicera andra entities för att ge känslan av låg latens.
|
||||
|
||||
Unregister protocol and file extensions
|
||||
==
|
||||
== Avregistera protokoll och filtillägg
|
||||
|
||||
Extras
|
||||
==
|
||||
== Extras
|
||||
|
||||
Loading assets
|
||||
==
|
||||
== Laddar assets
|
||||
|
||||
Open the directory to add custom assets
|
||||
==
|
||||
== Öppna mappen för att lägga till egna assets
|
||||
|
||||
Tutorial
|
||||
==
|
||||
== Tutorial
|
||||
|
||||
Can't find a Tutorial server
|
||||
==
|
||||
== Kunde inte hitta en Tutorial server
|
||||
|
||||
Loading race demo files
|
||||
==
|
||||
== Laddar race demo filer
|
||||
|
||||
Super
|
||||
==
|
||||
== Super
|
||||
|
||||
Loading sound files
|
||||
==
|
||||
== Laddar ljud filer
|
||||
|
||||
Moved ingame
|
||||
==
|
||||
== Förflyttades i spelet
|
||||
|
||||
Render cut to video
|
||||
== Rendera snitt till video
|
||||
|
||||
Go back the specified duration
|
||||
== Gå tillbaka den angivna tiden
|
||||
|
||||
[Demo player duration]
|
||||
%d min.
|
||||
== %d min.
|
||||
|
||||
[Demo player duration]
|
||||
%d sec.
|
||||
== %d sek.
|
||||
|
||||
Change the skip duration
|
||||
== Ändra tiden för framspolning
|
||||
|
||||
Go forward the specified duration
|
||||
== Gå framåt den angivna tiden
|
||||
|
|
|
@ -166,9 +166,6 @@ Favorites
|
|||
Feet
|
||||
== 腳
|
||||
|
||||
Filter
|
||||
== 過濾器
|
||||
|
||||
Fire
|
||||
== 開火
|
||||
|
||||
|
@ -181,9 +178,6 @@ Force vote
|
|||
Free-View
|
||||
== 自由視角
|
||||
|
||||
Friends
|
||||
== 好友
|
||||
|
||||
Fullscreen
|
||||
== 獨占全螢幕
|
||||
|
||||
|
@ -404,12 +398,6 @@ Screenshot
|
|||
Server address:
|
||||
== 伺服器地址:
|
||||
|
||||
Server details
|
||||
== 伺服器詳細資訊
|
||||
|
||||
Server filter
|
||||
== 伺服器過濾器
|
||||
|
||||
Server info
|
||||
== 伺服器資訊
|
||||
|
||||
|
@ -605,9 +593,6 @@ Netversion:
|
|||
Map:
|
||||
== 地圖:
|
||||
|
||||
Info
|
||||
== 資訊
|
||||
|
||||
Hue
|
||||
== 色調
|
||||
|
||||
|
@ -1769,3 +1754,23 @@ Unable to delete the folder '%s'. Make sure it's empty first.
|
|||
|
||||
Moved ingame
|
||||
== 遊戲內移動
|
||||
|
||||
Go back the specified duration
|
||||
==
|
||||
|
||||
[Demo player duration]
|
||||
%d min.
|
||||
==
|
||||
|
||||
[Demo player duration]
|
||||
%d sec.
|
||||
==
|
||||
|
||||
Change the skip duration
|
||||
==
|
||||
|
||||
Go forward the specified duration
|
||||
==
|
||||
|
||||
Render cut to video
|
||||
==
|
||||
|
|
|
@ -8,7 +8,8 @@
|
|||
# Learath2 2012-01-01 22:54:29
|
||||
# ardadem 2020-08-20 00:00:00
|
||||
# ardadem 2020-08-22 00:00:00
|
||||
# h-kaan 2023-08-23 15:57:36
|
||||
# h-kaan 2023-08-23 15:57:36
|
||||
# h-kaan 2023-08-30 01:52:04
|
||||
##### /authors #####
|
||||
|
||||
##### translated strings #####
|
||||
|
@ -151,9 +152,6 @@ Favorites
|
|||
Feet
|
||||
== Ayak
|
||||
|
||||
Filter
|
||||
== Filtre
|
||||
|
||||
Fire
|
||||
== Ateş
|
||||
|
||||
|
@ -166,9 +164,6 @@ Force vote
|
|||
Free-View
|
||||
== Serbest Bakış
|
||||
|
||||
Friends
|
||||
== Arkadaşlar
|
||||
|
||||
Fullscreen
|
||||
== Tam ekran
|
||||
|
||||
|
@ -359,12 +354,6 @@ Screenshot
|
|||
Server address:
|
||||
== Sunucu adresi:
|
||||
|
||||
Server details
|
||||
== Sunucucu detayları
|
||||
|
||||
Server filter
|
||||
== Filtreler
|
||||
|
||||
Server info
|
||||
== Hakkında
|
||||
|
||||
|
@ -533,9 +522,6 @@ Netversion:
|
|||
Map:
|
||||
== Harita:
|
||||
|
||||
Info
|
||||
== Bilgi
|
||||
|
||||
Hue
|
||||
== Renk
|
||||
|
||||
|
@ -1130,13 +1116,13 @@ Debug mode enabled. Press Ctrl+Shift+D to disable debug mode.
|
|||
== Hata ayıklama modu etkinleştirildi. Devre dışı bırakmak için Ctrl+Shift+D tuşlarına basın.
|
||||
|
||||
Position:
|
||||
== Pozisyon
|
||||
== Pozisyon:
|
||||
|
||||
Speed:
|
||||
== Hız
|
||||
== Hız:
|
||||
|
||||
Angle:
|
||||
== Açı
|
||||
== Açı:
|
||||
|
||||
Multi-View
|
||||
== Çoklu İzle
|
||||
|
@ -1154,7 +1140,7 @@ UDP seems to be filtered.
|
|||
== UDP filtrelenmiş görünüyor.
|
||||
|
||||
UDP and TCP IP addresses seem to be different. Try disabling VPN, proxy or network accelerators.
|
||||
== UPD ve TCP IP adresleri farklı görünüyor. Proxy, VPN veya ağ hızlandırıcılarını devre dışı bırakmayı deneyin.
|
||||
== UDP ve TCP IP adresleri farklı görünüyor. Proxy, VPN veya ağ hızlandırıcılarını devre dışı bırakmayı deneyin.
|
||||
|
||||
No answer from server yet.
|
||||
== Henüz sunucudan cevap alınamadı.
|
||||
|
@ -1172,7 +1158,7 @@ Existing Player
|
|||
== Var olan oyuncu
|
||||
|
||||
Your nickname '%s' is already used (%d points). Do you still want to use it?
|
||||
== Takma adınız '%s' başkası tarafından kullanılıyor (%d points). Yine de kullanmak istiyor musunuz?
|
||||
== Takma adınız '%s' başkası tarafından kullanılıyor (%d puan). Yine de kullanmak istiyor musunuz?
|
||||
|
||||
Checking for existing player with your name
|
||||
== Adınıza sahip diğer oyuncular aranıyor
|
||||
|
@ -1238,7 +1224,7 @@ Getting server list from master server
|
|||
== %2$d sunucunun %1$d tanesi
|
||||
|
||||
%d players
|
||||
== %d oyuncular
|
||||
== %d oyuncu
|
||||
|
||||
%d player
|
||||
== %d oyuncu
|
||||
|
@ -1308,13 +1294,13 @@ Speed up the demo
|
|||
== Demoyu hızlandır
|
||||
|
||||
Mark the beginning of a cut (right click to reset)
|
||||
== Bir kesimin başlangıcını işaretleyin (sıfırlamak için sağ tıkla)
|
||||
== Bir kesitin başlangıcını işaretleyin (sıfırlamak için sağ tıkla)
|
||||
|
||||
Mark the end of a cut (right click to reset)
|
||||
== Bir kesimin bitişini işaretleyin (sıfırlamak için sağ tıkla)
|
||||
== Bir kesitin bitişini işaretleyin (sıfırlamak için sağ tıkla)
|
||||
|
||||
Export cut as a separate demo
|
||||
== Kesimi ayrı bir demo olarak dışarı aktar
|
||||
== Kesiti ayrı bir demo olarak dışarı aktar
|
||||
|
||||
Go back one marker
|
||||
== Bir işaret geri git
|
||||
|
@ -1329,13 +1315,13 @@ Toggle keyboard shortcuts
|
|||
== Klavye kısayollarını kullan
|
||||
|
||||
Export demo cut
|
||||
== Kesimi dışarı aktar
|
||||
== Kesiti dışarı aktar
|
||||
|
||||
Cut interval
|
||||
== Kesim aralığı
|
||||
== Kesit aralığı
|
||||
|
||||
Cut length
|
||||
== Kesim uzunluğu
|
||||
== Kesit uzunluğu
|
||||
|
||||
Loading demo files
|
||||
== Demo dosyaları yükleniyor
|
||||
|
@ -1472,10 +1458,10 @@ Mouse
|
|||
== Fare
|
||||
|
||||
Ingame mouse sens.
|
||||
== Oyun içi fare hassasiyeti
|
||||
== Oyun hassasiyeti
|
||||
|
||||
UI mouse sens.
|
||||
== Arayüz fare hassasiyeti
|
||||
== Arayüz hassasiyeti
|
||||
|
||||
Reset controls
|
||||
== Kontrolleri sıfırla
|
||||
|
@ -1556,7 +1542,7 @@ Show DDRace HUD
|
|||
== DDRace HUD göster
|
||||
|
||||
Show jumps indicator
|
||||
== Zıplama göstergesini göster
|
||||
== Kaç zıplama kaldığını göster
|
||||
|
||||
Show dummy actions
|
||||
== Dummy aksiyonlarını göster
|
||||
|
@ -1750,3 +1736,23 @@ Loading sound files
|
|||
|
||||
Moved ingame
|
||||
== Hareket edildi
|
||||
|
||||
Go back the specified duration
|
||||
==
|
||||
|
||||
[Demo player duration]
|
||||
%d min.
|
||||
==
|
||||
|
||||
[Demo player duration]
|
||||
%d sec.
|
||||
==
|
||||
|
||||
Change the skip duration
|
||||
==
|
||||
|
||||
Go forward the specified duration
|
||||
==
|
||||
|
||||
Render cut to video
|
||||
==
|
||||
|
|
|
@ -1749,3 +1749,20 @@ Go forward the specified duration
|
|||
|
||||
Render cut to video
|
||||
== Відтворити вирізку відео
|
||||
|
||||
[Demo player duration]
|
||||
%d min.
|
||||
==
|
||||
|
||||
[Demo player duration]
|
||||
%d sec.
|
||||
==
|
||||
|
||||
Change the skip duration
|
||||
==
|
||||
|
||||
Go forward the specified duration
|
||||
==
|
||||
|
||||
Render cut to video
|
||||
==
|
||||
|
|
Before Width: | Height: | Size: 3.7 KiB After Width: | Height: | Size: 4.4 KiB |
|
@ -26,7 +26,7 @@ GameInfoFlags = [
|
|||
]
|
||||
GameInfoFlags2 = [
|
||||
"ALLOW_X_SKINS", "GAMETYPE_CITY", "GAMETYPE_FDDRACE", "ENTITIES_FDDRACE", "HUD_HEALTH_ARMOR", "HUD_AMMO",
|
||||
"HUD_DDRACE", "NO_WEAK_HOOK"
|
||||
"HUD_DDRACE", "NO_WEAK_HOOK", "NO_SKIN_CHANGE_FOR_FROZEN"
|
||||
]
|
||||
ExPlayerFlags = ["AFK", "PAUSED", "SPEC"]
|
||||
LegacyProjectileFlags = [f"CLIENTID_BIT{i}" for i in range(8)] + [
|
||||
|
@ -71,7 +71,7 @@ enum
|
|||
|
||||
enum
|
||||
{
|
||||
GAMEINFO_CURVERSION=8,
|
||||
GAMEINFO_CURVERSION=9,
|
||||
};
|
||||
'''
|
||||
|
||||
|
@ -549,4 +549,8 @@ Messages = [
|
|||
NetIntRange("m_Team", 0, 'MAX_CLIENTS-1'),
|
||||
NetIntRange("m_First", -1, 'MAX_CLIENTS-1'),
|
||||
]),
|
||||
|
||||
NetMessageEx("Sv_YourVote", "yourvote@netmsg.ddnet.org", [
|
||||
NetIntRange("m_Voted", -1, 1),
|
||||
]),
|
||||
]
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
# The second argument is the message to send.
|
||||
if ($args.length -lt 2) {
|
||||
Write-Output "Usage: ./send_named_pipe.ps1 <pipename> <message> [message] ... [message]"
|
||||
return
|
||||
exit -1
|
||||
}
|
||||
|
||||
$Wrapper = [pscustomobject]@{
|
||||
|
@ -18,16 +18,24 @@ $Wrapper = [pscustomobject]@{
|
|||
Reader = $null
|
||||
Writer = $null
|
||||
}
|
||||
$Wrapper.Pipe.Connect(5000)
|
||||
if (!$?) {
|
||||
return
|
||||
try {
|
||||
$Wrapper.Pipe.Connect(5000)
|
||||
$Wrapper.Reader = New-Object System.IO.StreamReader($Wrapper.Pipe)
|
||||
$Wrapper.Writer = New-Object System.IO.StreamWriter($Wrapper.Pipe)
|
||||
$Wrapper.Writer.AutoFlush = $true
|
||||
for ($i = 1; $i -lt $args.length; $i++) {
|
||||
$Wrapper.Writer.WriteLine($args[$i])
|
||||
}
|
||||
# Wait for pipe contents to be read.
|
||||
$Wrapper.Pipe.WaitForPipeDrain()
|
||||
# Dispose the pipe, which also calls Flush and Close.
|
||||
$Wrapper.Pipe.Dispose()
|
||||
# Explicity set error level 0 for success, as otherwise the current error level is kept.
|
||||
exit 0
|
||||
} catch [TimeoutException] {
|
||||
Write-Output "Timeout connecting to pipe"
|
||||
exit 1
|
||||
} catch [System.IO.IOException] {
|
||||
Write-Output "Broken pipe"
|
||||
exit 2
|
||||
}
|
||||
$Wrapper.Reader = New-Object System.IO.StreamReader($Wrapper.Pipe)
|
||||
$Wrapper.Writer = New-Object System.IO.StreamWriter($Wrapper.Pipe)
|
||||
$Wrapper.Writer.AutoFlush = $true
|
||||
for ($i = 1; $i -lt $args.length; $i++) {
|
||||
$Wrapper.Writer.WriteLine($args[$i])
|
||||
}
|
||||
# We need to wait because the lines will not be written if we close the pipe immediately
|
||||
Start-Sleep -Seconds 1.5
|
||||
$Wrapper.Pipe.Close()
|
||||
|
|
|
@ -103,7 +103,7 @@ public:
|
|||
*/
|
||||
virtual void GlobalFinish() {}
|
||||
/**
|
||||
* Notifies thte logger of a changed `m_Filter`.
|
||||
* Notifies the logger of a changed `m_Filter`.
|
||||
*/
|
||||
virtual void OnFilterChange() {}
|
||||
};
|
||||
|
|
|
@ -11,7 +11,7 @@ use std::str;
|
|||
///
|
||||
/// Callbacks in C are usually represented by a function pointer and some
|
||||
/// "userdata" pointer that is also passed to the function pointer. This allows
|
||||
/// to hand data to the callback. This type represents such a userdata poiner.
|
||||
/// to hand data to the callback. This type represents such a userdata pointer.
|
||||
///
|
||||
/// It is `unsafe` to convert the `UserPtr` back to its original pointer using
|
||||
/// [`UserPtr::cast`] because its lifetime and type information was lost.
|
||||
|
|
|
@ -2209,16 +2209,12 @@ int net_would_block()
|
|||
#endif
|
||||
}
|
||||
|
||||
int net_init()
|
||||
void net_init()
|
||||
{
|
||||
#if defined(CONF_FAMILY_WINDOWS)
|
||||
WSADATA wsaData;
|
||||
int err = WSAStartup(MAKEWORD(1, 1), &wsaData);
|
||||
dbg_assert(err == 0, "network initialization failed.");
|
||||
return err == 0 ? 0 : 1;
|
||||
WSADATA wsa_data;
|
||||
dbg_assert(WSAStartup(MAKEWORD(1, 1), &wsa_data) == 0, "network initialization failed.");
|
||||
#endif
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
#if defined(CONF_FAMILY_UNIX)
|
||||
|
|
|
@ -879,11 +879,9 @@ typedef struct sockaddr_un UNIXSOCKETADDR;
|
|||
*
|
||||
* @ingroup Network-General
|
||||
*
|
||||
* @return 0 on success.
|
||||
*
|
||||
* @remark You must call this function before using any other network functions.
|
||||
*/
|
||||
int net_init();
|
||||
void net_init();
|
||||
|
||||
/*
|
||||
Function: net_host_lookup
|
||||
|
|
|
@ -167,7 +167,7 @@ public:
|
|||
#if defined(CONF_VIDEORECORDER)
|
||||
virtual const char *DemoPlayer_Render(const char *pFilename, int StorageType, const char *pVideoName, int SpeedIndex, bool StartPaused = false) = 0;
|
||||
#endif
|
||||
virtual void DemoRecorder_Start(const char *pFilename, bool WithTimestamp, int Recorder) = 0;
|
||||
virtual void DemoRecorder_Start(const char *pFilename, bool WithTimestamp, int Recorder, bool Verbose = false) = 0;
|
||||
virtual void DemoRecorder_HandleAutoStart() = 0;
|
||||
virtual void DemoRecorder_Stop(int Recorder, bool RemoveFile = false) = 0;
|
||||
virtual class IDemoRecorder *DemoRecorder(int Recorder) = 0;
|
||||
|
|
|
@ -1,24 +1,17 @@
|
|||
#include "backend_base.h"
|
||||
#include <engine/gfx/image_manipulation.h>
|
||||
|
||||
size_t CCommandProcessorFragment_GLBase::TexFormatToImageColorChannelCount(int TexFormat)
|
||||
{
|
||||
if(TexFormat == CCommandBuffer::TEXFORMAT_RGBA)
|
||||
return 4;
|
||||
return 4;
|
||||
}
|
||||
|
||||
void *CCommandProcessorFragment_GLBase::Resize(const unsigned char *pData, int Width, int Height, int NewWidth, int NewHeight, int BPP)
|
||||
{
|
||||
return ResizeImage((const uint8_t *)pData, Width, Height, NewWidth, NewHeight, BPP);
|
||||
}
|
||||
|
||||
bool CCommandProcessorFragment_GLBase::Texture2DTo3D(void *pImageBuffer, int ImageWidth, int ImageHeight, int ImageColorChannelCount, int SplitCountWidth, int SplitCountHeight, void *pTarget3DImageData, int &Target3DImageWidth, int &Target3DImageHeight)
|
||||
bool CCommandProcessorFragment_GLBase::Texture2DTo3D(void *pImageBuffer, int ImageWidth, int ImageHeight, size_t PixelSize, int SplitCountWidth, int SplitCountHeight, void *pTarget3DImageData, int &Target3DImageWidth, int &Target3DImageHeight)
|
||||
{
|
||||
Target3DImageWidth = ImageWidth / SplitCountWidth;
|
||||
Target3DImageHeight = ImageHeight / SplitCountHeight;
|
||||
|
||||
size_t FullImageWidth = (size_t)ImageWidth * ImageColorChannelCount;
|
||||
const size_t FullImageWidth = (size_t)ImageWidth * PixelSize;
|
||||
|
||||
for(int Y = 0; Y < SplitCountHeight; ++Y)
|
||||
{
|
||||
|
@ -28,7 +21,7 @@ bool CCommandProcessorFragment_GLBase::Texture2DTo3D(void *pImageBuffer, int Ima
|
|||
{
|
||||
int DepthIndex = X + Y * SplitCountWidth;
|
||||
|
||||
size_t TargetImageFullWidth = (size_t)Target3DImageWidth * ImageColorChannelCount;
|
||||
size_t TargetImageFullWidth = (size_t)Target3DImageWidth * PixelSize;
|
||||
size_t TargetImageFullSize = (size_t)TargetImageFullWidth * Target3DImageHeight;
|
||||
ptrdiff_t ImageOffset = (ptrdiff_t)(((size_t)Y * FullImageWidth * (size_t)Target3DImageHeight) + ((size_t)Y3D * FullImageWidth) + ((size_t)X * TargetImageFullWidth));
|
||||
ptrdiff_t TargetImageOffset = (ptrdiff_t)(TargetImageFullSize * (size_t)DepthIndex + ((size_t)Y3D * TargetImageFullWidth));
|
||||
|
|
|
@ -84,12 +84,11 @@ protected:
|
|||
SGFXErrorContainer m_Error;
|
||||
SGFXWarningContainer m_Warning;
|
||||
|
||||
static size_t TexFormatToImageColorChannelCount(int TexFormat);
|
||||
static void *Resize(const unsigned char *pData, int Width, int Height, int NewWidth, int NewHeight, int BPP);
|
||||
|
||||
static bool Texture2DTo3D(void *pImageBuffer, int ImageWidth, int ImageHeight, int ImageColorChannelCount, int SplitCountWidth, int SplitCountHeight, void *pTarget3DImageData, int &Target3DImageWidth, int &Target3DImageHeight);
|
||||
static bool Texture2DTo3D(void *pImageBuffer, int ImageWidth, int ImageHeight, size_t PixelSize, int SplitCountWidth, int SplitCountHeight, void *pTarget3DImageData, int &Target3DImageWidth, int &Target3DImageHeight);
|
||||
|
||||
virtual bool GetPresentedImageData(uint32_t &Width, uint32_t &Height, uint32_t &Format, std::vector<uint8_t> &vDstData) = 0;
|
||||
virtual bool GetPresentedImageData(uint32_t &Width, uint32_t &Height, CImageInfo::EImageFormat &Format, std::vector<uint8_t> &vDstData) = 0;
|
||||
|
||||
public:
|
||||
virtual ~CCommandProcessorFragment_GLBase() = default;
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
|
||||
class CCommandProcessorFragment_Null : public CCommandProcessorFragment_GLBase
|
||||
{
|
||||
bool GetPresentedImageData(uint32_t &Width, uint32_t &Height, uint32_t &Format, std::vector<uint8_t> &vDstData) override { return false; };
|
||||
bool GetPresentedImageData(uint32_t &Width, uint32_t &Height, CImageInfo::EImageFormat &Format, std::vector<uint8_t> &vDstData) override { return false; };
|
||||
ERunCommandReturnTypes RunCommand(const CCommandBuffer::SCommand *pBaseCommand) override;
|
||||
bool Cmd_Init(const SCommand_Init *pCommand);
|
||||
virtual void Cmd_Texture_Create(const CCommandBuffer::SCommand_Texture_Create *pCommand);
|
||||
|
|
|
@ -42,11 +42,6 @@ void CCommandProcessorFragment_OpenGL::Cmd_Update_Viewport(const CCommandBuffer:
|
|||
glViewport(pCommand->m_X, pCommand->m_Y, pCommand->m_Width, pCommand->m_Height);
|
||||
}
|
||||
|
||||
void CCommandProcessorFragment_OpenGL::Cmd_Finish(const CCommandBuffer::SCommand_Finish *pCommand)
|
||||
{
|
||||
glFinish();
|
||||
}
|
||||
|
||||
int CCommandProcessorFragment_OpenGL::TexFormatToOpenGLFormat(int TexFormat)
|
||||
{
|
||||
if(TexFormat == CCommandBuffer::TEXFORMAT_RGBA)
|
||||
|
@ -54,7 +49,7 @@ int CCommandProcessorFragment_OpenGL::TexFormatToOpenGLFormat(int TexFormat)
|
|||
return GL_RGBA;
|
||||
}
|
||||
|
||||
size_t CCommandProcessorFragment_OpenGL::GLFormatToImageColorChannelCount(int GLFormat)
|
||||
size_t CCommandProcessorFragment_OpenGL::GLFormatToPixelSize(int GLFormat)
|
||||
{
|
||||
switch(GLFormat)
|
||||
{
|
||||
|
@ -283,7 +278,7 @@ GfxOpenGLMessageCallback(GLenum Source,
|
|||
}
|
||||
#endif
|
||||
|
||||
bool CCommandProcessorFragment_OpenGL::GetPresentedImageData(uint32_t &Width, uint32_t &Height, uint32_t &Format, std::vector<uint8_t> &vDstData)
|
||||
bool CCommandProcessorFragment_OpenGL::GetPresentedImageData(uint32_t &Width, uint32_t &Height, CImageInfo::EImageFormat &Format, std::vector<uint8_t> &vDstData)
|
||||
{
|
||||
if(m_CanvasWidth == 0 || m_CanvasHeight == 0)
|
||||
{
|
||||
|
@ -319,7 +314,7 @@ bool CCommandProcessorFragment_OpenGL::InitOpenGL(const SCommand_Init *pCommand)
|
|||
m_IsOpenGLES = pCommand->m_RequestedBackend == BACKEND_TYPE_OPENGL_ES;
|
||||
|
||||
TGLBackendReadPresentedImageData &ReadPresentedImgDataFunc = *pCommand->m_pReadPresentedImageDataFunc;
|
||||
ReadPresentedImgDataFunc = [this](uint32_t &Width, uint32_t &Height, uint32_t &Format, std::vector<uint8_t> &vDstData) { return GetPresentedImageData(Width, Height, Format, vDstData); };
|
||||
ReadPresentedImgDataFunc = [this](uint32_t &Width, uint32_t &Height, CImageInfo::EImageFormat &Format, std::vector<uint8_t> &vDstData) { return GetPresentedImageData(Width, Height, Format, vDstData); };
|
||||
|
||||
const char *pVendorString = (const char *)glGetString(GL_VENDOR);
|
||||
dbg_msg("opengl", "Vendor string: %s", pVendorString);
|
||||
|
@ -649,7 +644,7 @@ void CCommandProcessorFragment_OpenGL::TextureUpdate(int Slot, int X, int Y, int
|
|||
int ResizedW = (int)(Width * ResizeW);
|
||||
int ResizedH = (int)(Height * ResizeH);
|
||||
|
||||
void *pTmpData = Resize(static_cast<const unsigned char *>(pTexData), Width, Height, ResizedW, ResizedH, GLFormatToImageColorChannelCount(GLFormat));
|
||||
void *pTmpData = Resize(static_cast<const unsigned char *>(pTexData), Width, Height, ResizedW, ResizedH, GLFormatToPixelSize(GLFormat));
|
||||
free(pTexData);
|
||||
pTexData = pTmpData;
|
||||
|
||||
|
@ -671,7 +666,7 @@ void CCommandProcessorFragment_OpenGL::TextureUpdate(int Slot, int X, int Y, int
|
|||
Y /= 2;
|
||||
}
|
||||
|
||||
void *pTmpData = Resize(static_cast<const unsigned char *>(pTexData), OldWidth, OldHeight, Width, Height, GLFormatToImageColorChannelCount(GLFormat));
|
||||
void *pTmpData = Resize(static_cast<const unsigned char *>(pTexData), OldWidth, OldHeight, Width, Height, GLFormatToPixelSize(GLFormat));
|
||||
free(pTexData);
|
||||
pTexData = pTmpData;
|
||||
}
|
||||
|
@ -723,7 +718,7 @@ void CCommandProcessorFragment_OpenGL::Cmd_Texture_Destroy(const CCommandBuffer:
|
|||
DestroyTexture(pCommand->m_Slot);
|
||||
}
|
||||
|
||||
void CCommandProcessorFragment_OpenGL::TextureCreate(int Slot, int Width, int Height, int PixelSize, int GLFormat, int GLStoreFormat, int Flags, void *pTexData)
|
||||
void CCommandProcessorFragment_OpenGL::TextureCreate(int Slot, int Width, int Height, int GLFormat, int GLStoreFormat, int Flags, void *pTexData)
|
||||
{
|
||||
#ifndef BACKEND_GL_MODERN_API
|
||||
|
||||
|
@ -746,7 +741,7 @@ void CCommandProcessorFragment_OpenGL::TextureCreate(int Slot, int Width, int He
|
|||
int PowerOfTwoHeight = HighestBit(Height);
|
||||
if(Width != PowerOfTwoWidth || Height != PowerOfTwoHeight)
|
||||
{
|
||||
void *pTmpData = Resize(static_cast<const unsigned char *>(pTexData), Width, Height, PowerOfTwoWidth, PowerOfTwoHeight, GLFormatToImageColorChannelCount(GLFormat));
|
||||
void *pTmpData = Resize(static_cast<const unsigned char *>(pTexData), Width, Height, PowerOfTwoWidth, PowerOfTwoHeight, GLFormatToPixelSize(GLFormat));
|
||||
free(pTexData);
|
||||
pTexData = pTmpData;
|
||||
|
||||
|
@ -778,7 +773,7 @@ void CCommandProcessorFragment_OpenGL::TextureCreate(int Slot, int Width, int He
|
|||
|
||||
if(NeedsResize)
|
||||
{
|
||||
void *pTmpData = Resize(static_cast<const unsigned char *>(pTexData), OldWidth, OldHeight, Width, Height, GLFormatToImageColorChannelCount(GLFormat));
|
||||
void *pTmpData = Resize(static_cast<const unsigned char *>(pTexData), OldWidth, OldHeight, Width, Height, GLFormatToPixelSize(GLFormat));
|
||||
free(pTexData);
|
||||
pTexData = pTmpData;
|
||||
}
|
||||
|
@ -787,8 +782,7 @@ void CCommandProcessorFragment_OpenGL::TextureCreate(int Slot, int Width, int He
|
|||
m_vTextures[Slot].m_Height = Height;
|
||||
m_vTextures[Slot].m_RescaleCount = RescaleCount;
|
||||
|
||||
int Oglformat = GLFormat;
|
||||
int StoreOglformat = GLStoreFormat;
|
||||
const size_t PixelSize = GLFormatToPixelSize(GLFormat);
|
||||
|
||||
if((Flags & CCommandBuffer::TEXFLAG_NO_2D_TEXTURE) == 0)
|
||||
{
|
||||
|
@ -802,7 +796,7 @@ void CCommandProcessorFragment_OpenGL::TextureCreate(int Slot, int Width, int He
|
|||
{
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
|
||||
glTexImage2D(GL_TEXTURE_2D, 0, StoreOglformat, Width, Height, 0, Oglformat, GL_UNSIGNED_BYTE, pTexData);
|
||||
glTexImage2D(GL_TEXTURE_2D, 0, GLStoreFormat, Width, Height, 0, GLFormat, GL_UNSIGNED_BYTE, pTexData);
|
||||
}
|
||||
}
|
||||
else
|
||||
|
@ -818,7 +812,7 @@ void CCommandProcessorFragment_OpenGL::TextureCreate(int Slot, int Width, int He
|
|||
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_LOD_BIAS, ((GLfloat)m_OpenGLTextureLodBIAS / 1000.0f));
|
||||
#endif
|
||||
|
||||
glTexImage2D(GL_TEXTURE_2D, 0, StoreOglformat, Width, Height, 0, Oglformat, GL_UNSIGNED_BYTE, pTexData);
|
||||
glTexImage2D(GL_TEXTURE_2D, 0, GLStoreFormat, Width, Height, 0, GLFormat, GL_UNSIGNED_BYTE, pTexData);
|
||||
}
|
||||
|
||||
int Flag2DArrayTexture = (CCommandBuffer::TEXFLAG_TO_2D_ARRAY_TEXTURE | CCommandBuffer::TEXFLAG_TO_2D_ARRAY_TEXTURE_SINGLE_LAYER);
|
||||
|
@ -886,14 +880,12 @@ void CCommandProcessorFragment_OpenGL::TextureCreate(int Slot, int Width, int He
|
|||
glBindSampler(0, 0);
|
||||
}
|
||||
|
||||
int ImageColorChannels = GLFormatToImageColorChannelCount(GLFormat);
|
||||
|
||||
uint8_t *p3DImageData = NULL;
|
||||
|
||||
bool IsSingleLayer = (Flags & (CCommandBuffer::TEXFLAG_TO_2D_ARRAY_TEXTURE_SINGLE_LAYER | CCommandBuffer::TEXFLAG_TO_3D_TEXTURE_SINGLE_LAYER)) != 0;
|
||||
|
||||
if(!IsSingleLayer)
|
||||
p3DImageData = (uint8_t *)malloc((size_t)ImageColorChannels * Width * Height);
|
||||
p3DImageData = (uint8_t *)malloc((size_t)Width * Height * PixelSize);
|
||||
int Image3DWidth, Image3DHeight;
|
||||
|
||||
int ConvertWidth = Width;
|
||||
|
@ -906,7 +898,7 @@ void CCommandProcessorFragment_OpenGL::TextureCreate(int Slot, int Width, int He
|
|||
dbg_msg("gfx", "3D/2D array texture was resized");
|
||||
int NewWidth = maximum<int>(HighestBit(ConvertWidth), 16);
|
||||
int NewHeight = maximum<int>(HighestBit(ConvertHeight), 16);
|
||||
uint8_t *pNewTexData = (uint8_t *)Resize((const uint8_t *)pTexData, ConvertWidth, ConvertHeight, NewWidth, NewHeight, GLFormatToImageColorChannelCount(GLFormat));
|
||||
uint8_t *pNewTexData = (uint8_t *)Resize((const uint8_t *)pTexData, ConvertWidth, ConvertHeight, NewWidth, NewHeight, GLFormatToPixelSize(GLFormat));
|
||||
|
||||
ConvertWidth = NewWidth;
|
||||
ConvertHeight = NewHeight;
|
||||
|
@ -916,15 +908,15 @@ void CCommandProcessorFragment_OpenGL::TextureCreate(int Slot, int Width, int He
|
|||
}
|
||||
}
|
||||
|
||||
if(IsSingleLayer || (Texture2DTo3D(pTexData, ConvertWidth, ConvertHeight, ImageColorChannels, 16, 16, p3DImageData, Image3DWidth, Image3DHeight)))
|
||||
if(IsSingleLayer || (Texture2DTo3D(pTexData, ConvertWidth, ConvertHeight, PixelSize, 16, 16, p3DImageData, Image3DWidth, Image3DHeight)))
|
||||
{
|
||||
if(IsSingleLayer)
|
||||
{
|
||||
glTexImage3D(Target, 0, StoreOglformat, ConvertWidth, ConvertHeight, 1, 0, Oglformat, GL_UNSIGNED_BYTE, pTexData);
|
||||
glTexImage3D(Target, 0, GLStoreFormat, ConvertWidth, ConvertHeight, 1, 0, GLFormat, GL_UNSIGNED_BYTE, pTexData);
|
||||
}
|
||||
else
|
||||
{
|
||||
glTexImage3D(Target, 0, StoreOglformat, Image3DWidth, Image3DHeight, 256, 0, Oglformat, GL_UNSIGNED_BYTE, p3DImageData);
|
||||
glTexImage3D(Target, 0, GLStoreFormat, Image3DWidth, Image3DHeight, 256, 0, GLFormat, GL_UNSIGNED_BYTE, p3DImageData);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -937,12 +929,12 @@ void CCommandProcessorFragment_OpenGL::TextureCreate(int Slot, int Width, int He
|
|||
m_vTextures[Slot].m_LastWrapMode = CCommandBuffer::WRAP_REPEAT;
|
||||
|
||||
// calculate memory usage
|
||||
m_vTextures[Slot].m_MemSize = Width * Height * PixelSize;
|
||||
m_vTextures[Slot].m_MemSize = (size_t)Width * Height * PixelSize;
|
||||
while(Width > 2 && Height > 2)
|
||||
{
|
||||
Width >>= 1;
|
||||
Height >>= 1;
|
||||
m_vTextures[Slot].m_MemSize += Width * Height * PixelSize;
|
||||
m_vTextures[Slot].m_MemSize += (size_t)Width * Height * PixelSize;
|
||||
}
|
||||
m_pTextureMemoryUsage->store(m_pTextureMemoryUsage->load(std::memory_order_relaxed) + m_vTextures[Slot].m_MemSize, std::memory_order_relaxed);
|
||||
|
||||
|
@ -952,7 +944,7 @@ void CCommandProcessorFragment_OpenGL::TextureCreate(int Slot, int Width, int He
|
|||
|
||||
void CCommandProcessorFragment_OpenGL::Cmd_Texture_Create(const CCommandBuffer::SCommand_Texture_Create *pCommand)
|
||||
{
|
||||
TextureCreate(pCommand->m_Slot, pCommand->m_Width, pCommand->m_Height, pCommand->m_PixelSize, TexFormatToOpenGLFormat(pCommand->m_Format), TexFormatToOpenGLFormat(pCommand->m_StoreFormat), pCommand->m_Flags, pCommand->m_pData);
|
||||
TextureCreate(pCommand->m_Slot, pCommand->m_Width, pCommand->m_Height, TexFormatToOpenGLFormat(pCommand->m_Format), TexFormatToOpenGLFormat(pCommand->m_StoreFormat), pCommand->m_Flags, pCommand->m_pData);
|
||||
}
|
||||
|
||||
void CCommandProcessorFragment_OpenGL::Cmd_TextTexture_Update(const CCommandBuffer::SCommand_TextTexture_Update *pCommand)
|
||||
|
@ -968,16 +960,24 @@ void CCommandProcessorFragment_OpenGL::Cmd_TextTextures_Destroy(const CCommandBu
|
|||
|
||||
void CCommandProcessorFragment_OpenGL::Cmd_TextTextures_Create(const CCommandBuffer::SCommand_TextTextures_Create *pCommand)
|
||||
{
|
||||
void *pTextData = pCommand->m_pTextData;
|
||||
void *pTextOutlineData = pCommand->m_pTextOutlineData;
|
||||
TextureCreate(pCommand->m_Slot, pCommand->m_Width, pCommand->m_Height, 1, GL_ALPHA, GL_ALPHA, CCommandBuffer::TEXFLAG_NOMIPMAPS, pTextData);
|
||||
TextureCreate(pCommand->m_SlotOutline, pCommand->m_Width, pCommand->m_Height, 1, GL_ALPHA, GL_ALPHA, CCommandBuffer::TEXFLAG_NOMIPMAPS, pTextOutlineData);
|
||||
TextureCreate(pCommand->m_Slot, pCommand->m_Width, pCommand->m_Height, GL_ALPHA, GL_ALPHA, CCommandBuffer::TEXFLAG_NOMIPMAPS, pCommand->m_pTextData);
|
||||
TextureCreate(pCommand->m_SlotOutline, pCommand->m_Width, pCommand->m_Height, GL_ALPHA, GL_ALPHA, CCommandBuffer::TEXFLAG_NOMIPMAPS, pCommand->m_pTextOutlineData);
|
||||
}
|
||||
|
||||
void CCommandProcessorFragment_OpenGL::Cmd_Clear(const CCommandBuffer::SCommand_Clear *pCommand)
|
||||
{
|
||||
// if clip is still active, force disable it for clearing, enable it again afterwards
|
||||
bool ClipWasEnabled = m_LastClipEnable;
|
||||
if(ClipWasEnabled)
|
||||
{
|
||||
glDisable(GL_SCISSOR_TEST);
|
||||
}
|
||||
glClearColor(pCommand->m_Color.r, pCommand->m_Color.g, pCommand->m_Color.b, 0.0f);
|
||||
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
|
||||
if(ClipWasEnabled)
|
||||
{
|
||||
glEnable(GL_SCISSOR_TEST);
|
||||
}
|
||||
}
|
||||
|
||||
void CCommandProcessorFragment_OpenGL::Cmd_Render(const CCommandBuffer::SCommand_Render *pCommand)
|
||||
|
@ -1102,9 +1102,6 @@ ERunCommandReturnTypes CCommandProcessorFragment_OpenGL::RunCommand(const CComma
|
|||
case CCommandBuffer::CMD_UPDATE_VIEWPORT:
|
||||
Cmd_Update_Viewport(static_cast<const CCommandBuffer::SCommand_Update_Viewport *>(pBaseCommand));
|
||||
break;
|
||||
case CCommandBuffer::CMD_FINISH:
|
||||
Cmd_Finish(static_cast<const CCommandBuffer::SCommand_Finish *>(pBaseCommand));
|
||||
break;
|
||||
|
||||
case CCommandBuffer::CMD_CREATE_BUFFER_OBJECT: Cmd_CreateBufferObject(static_cast<const CCommandBuffer::SCommand_CreateBufferObject *>(pBaseCommand)); break;
|
||||
case CCommandBuffer::CMD_UPDATE_BUFFER_OBJECT: Cmd_UpdateBufferObject(static_cast<const CCommandBuffer::SCommand_UpdateBufferObject *>(pBaseCommand)); break;
|
||||
|
|
|
@ -80,13 +80,13 @@ protected:
|
|||
virtual bool IsNewApi() { return false; }
|
||||
void DestroyTexture(int Slot);
|
||||
|
||||
bool GetPresentedImageData(uint32_t &Width, uint32_t &Height, uint32_t &Format, std::vector<uint8_t> &vDstData) override;
|
||||
bool GetPresentedImageData(uint32_t &Width, uint32_t &Height, CImageInfo::EImageFormat &Format, std::vector<uint8_t> &vDstData) override;
|
||||
|
||||
static int TexFormatToOpenGLFormat(int TexFormat);
|
||||
static size_t GLFormatToImageColorChannelCount(int GLFormat);
|
||||
static size_t GLFormatToPixelSize(int GLFormat);
|
||||
|
||||
void TextureUpdate(int Slot, int X, int Y, int Width, int Height, int GLFormat, void *pTexData);
|
||||
void TextureCreate(int Slot, int Width, int Height, int PixelSize, int GLFormat, int GLStoreFormat, int Flags, void *pTexData);
|
||||
void TextureCreate(int Slot, int Width, int Height, int GLFormat, int GLStoreFormat, int Flags, void *pTexData);
|
||||
|
||||
virtual bool Cmd_Init(const SCommand_Init *pCommand);
|
||||
virtual void Cmd_Shutdown(const SCommand_Shutdown *pCommand) {}
|
||||
|
@ -102,7 +102,6 @@ protected:
|
|||
virtual void Cmd_Screenshot(const CCommandBuffer::SCommand_TrySwapAndScreenshot *pCommand);
|
||||
|
||||
virtual void Cmd_Update_Viewport(const CCommandBuffer::SCommand_Update_Viewport *pCommand);
|
||||
virtual void Cmd_Finish(const CCommandBuffer::SCommand_Finish *pCommand);
|
||||
|
||||
virtual void Cmd_CreateBufferObject(const CCommandBuffer::SCommand_CreateBufferObject *pCommand) { dbg_assert(false, "Call of unsupported Cmd_CreateBufferObject"); }
|
||||
virtual void Cmd_RecreateBufferObject(const CCommandBuffer::SCommand_RecreateBufferObject *pCommand) { dbg_assert(false, "Call of unsupported Cmd_RecreateBufferObject"); }
|
||||
|
|
|
@ -555,7 +555,7 @@ void CCommandProcessorFragment_OpenGL3_3::TextureUpdate(int Slot, int X, int Y,
|
|||
Y /= 2;
|
||||
}
|
||||
|
||||
void *pTmpData = Resize(static_cast<const unsigned char *>(pTexData), Width, Height, Width, Height, GLFormatToImageColorChannelCount(GLFormat));
|
||||
void *pTmpData = Resize(static_cast<const unsigned char *>(pTexData), Width, Height, Width, Height, GLFormatToPixelSize(GLFormat));
|
||||
free(pTexData);
|
||||
pTexData = pTmpData;
|
||||
}
|
||||
|
@ -577,7 +577,7 @@ void CCommandProcessorFragment_OpenGL3_3::Cmd_Texture_Destroy(const CCommandBuff
|
|||
DestroyTexture(pCommand->m_Slot);
|
||||
}
|
||||
|
||||
void CCommandProcessorFragment_OpenGL3_3::TextureCreate(int Slot, int Width, int Height, int PixelSize, int GLFormat, int GLStoreFormat, int Flags, void *pTexData)
|
||||
void CCommandProcessorFragment_OpenGL3_3::TextureCreate(int Slot, int Width, int Height, int GLFormat, int GLStoreFormat, int Flags, void *pTexData)
|
||||
{
|
||||
if(Slot >= (int)m_vTextures.size())
|
||||
m_vTextures.resize(m_vTextures.size() * 2);
|
||||
|
@ -595,7 +595,7 @@ void CCommandProcessorFragment_OpenGL3_3::TextureCreate(int Slot, int Width, int
|
|||
++RescaleCount;
|
||||
} while(Width > m_MaxTexSize || Height > m_MaxTexSize);
|
||||
|
||||
void *pTmpData = Resize(static_cast<const unsigned char *>(pTexData), Width, Height, Width, Height, GLFormatToImageColorChannelCount(GLFormat));
|
||||
void *pTmpData = Resize(static_cast<const unsigned char *>(pTexData), Width, Height, Width, Height, GLFormatToPixelSize(GLFormat));
|
||||
free(pTexData);
|
||||
pTexData = pTmpData;
|
||||
}
|
||||
|
@ -604,10 +604,9 @@ void CCommandProcessorFragment_OpenGL3_3::TextureCreate(int Slot, int Width, int
|
|||
m_vTextures[Slot].m_Height = Height;
|
||||
m_vTextures[Slot].m_RescaleCount = RescaleCount;
|
||||
|
||||
int Oglformat = GLFormat;
|
||||
int StoreOglformat = GLStoreFormat;
|
||||
if(StoreOglformat == GL_RED)
|
||||
StoreOglformat = GL_R8;
|
||||
if(GLStoreFormat == GL_RED)
|
||||
GLStoreFormat = GL_R8;
|
||||
const size_t PixelSize = GLFormatToPixelSize(GLFormat);
|
||||
|
||||
int SamplerSlot = 0;
|
||||
|
||||
|
@ -628,7 +627,7 @@ void CCommandProcessorFragment_OpenGL3_3::TextureCreate(int Slot, int Width, int
|
|||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
|
||||
glSamplerParameteri(m_vTextures[Slot].m_Sampler, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
|
||||
glSamplerParameteri(m_vTextures[Slot].m_Sampler, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
|
||||
glTexImage2D(GL_TEXTURE_2D, 0, StoreOglformat, Width, Height, 0, Oglformat, GL_UNSIGNED_BYTE, pTexData);
|
||||
glTexImage2D(GL_TEXTURE_2D, 0, GLStoreFormat, Width, Height, 0, GLFormat, GL_UNSIGNED_BYTE, pTexData);
|
||||
}
|
||||
}
|
||||
else
|
||||
|
@ -649,7 +648,7 @@ void CCommandProcessorFragment_OpenGL3_3::TextureCreate(int Slot, int Width, int
|
|||
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAX_LEVEL, 5.f);
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAX_LOD, 5);
|
||||
}
|
||||
glTexImage2D(GL_TEXTURE_2D, 0, StoreOglformat, Width, Height, 0, Oglformat, GL_UNSIGNED_BYTE, pTexData);
|
||||
glTexImage2D(GL_TEXTURE_2D, 0, GLStoreFormat, Width, Height, 0, GLFormat, GL_UNSIGNED_BYTE, pTexData);
|
||||
glGenerateMipmap(GL_TEXTURE_2D);
|
||||
}
|
||||
|
||||
|
@ -671,14 +670,12 @@ void CCommandProcessorFragment_OpenGL3_3::TextureCreate(int Slot, int Width, int
|
|||
glSamplerParameterf(m_vTextures[Slot].m_Sampler2DArray, GL_TEXTURE_LOD_BIAS, ((GLfloat)m_OpenGLTextureLodBIAS / 1000.0f));
|
||||
#endif
|
||||
|
||||
int ImageColorChannels = GLFormatToImageColorChannelCount(GLFormat);
|
||||
|
||||
uint8_t *p3DImageData = NULL;
|
||||
|
||||
bool IsSingleLayer = (Flags & CCommandBuffer::TEXFLAG_TO_2D_ARRAY_TEXTURE_SINGLE_LAYER) != 0;
|
||||
|
||||
if(!IsSingleLayer)
|
||||
p3DImageData = (uint8_t *)malloc((size_t)ImageColorChannels * Width * Height);
|
||||
p3DImageData = (uint8_t *)malloc((size_t)Width * Height * PixelSize);
|
||||
int Image3DWidth, Image3DHeight;
|
||||
|
||||
int ConvertWidth = Width;
|
||||
|
@ -691,7 +688,7 @@ void CCommandProcessorFragment_OpenGL3_3::TextureCreate(int Slot, int Width, int
|
|||
dbg_msg("gfx", "3D/2D array texture was resized");
|
||||
int NewWidth = maximum<int>(HighestBit(ConvertWidth), 16);
|
||||
int NewHeight = maximum<int>(HighestBit(ConvertHeight), 16);
|
||||
uint8_t *pNewTexData = (uint8_t *)Resize((const uint8_t *)pTexData, ConvertWidth, ConvertHeight, NewWidth, NewHeight, GLFormatToImageColorChannelCount(GLFormat));
|
||||
uint8_t *pNewTexData = (uint8_t *)Resize((const uint8_t *)pTexData, ConvertWidth, ConvertHeight, NewWidth, NewHeight, GLFormatToPixelSize(GLFormat));
|
||||
|
||||
ConvertWidth = NewWidth;
|
||||
ConvertHeight = NewHeight;
|
||||
|
@ -701,15 +698,15 @@ void CCommandProcessorFragment_OpenGL3_3::TextureCreate(int Slot, int Width, int
|
|||
}
|
||||
}
|
||||
|
||||
if(IsSingleLayer || (Texture2DTo3D(pTexData, ConvertWidth, ConvertHeight, ImageColorChannels, 16, 16, p3DImageData, Image3DWidth, Image3DHeight)))
|
||||
if(IsSingleLayer || (Texture2DTo3D(pTexData, ConvertWidth, ConvertHeight, PixelSize, 16, 16, p3DImageData, Image3DWidth, Image3DHeight)))
|
||||
{
|
||||
if(IsSingleLayer)
|
||||
{
|
||||
glTexImage3D(GL_TEXTURE_2D_ARRAY, 0, StoreOglformat, ConvertWidth, ConvertHeight, 1, 0, Oglformat, GL_UNSIGNED_BYTE, pTexData);
|
||||
glTexImage3D(GL_TEXTURE_2D_ARRAY, 0, GLStoreFormat, ConvertWidth, ConvertHeight, 1, 0, GLFormat, GL_UNSIGNED_BYTE, pTexData);
|
||||
}
|
||||
else
|
||||
{
|
||||
glTexImage3D(GL_TEXTURE_2D_ARRAY, 0, StoreOglformat, Image3DWidth, Image3DHeight, 256, 0, Oglformat, GL_UNSIGNED_BYTE, p3DImageData);
|
||||
glTexImage3D(GL_TEXTURE_2D_ARRAY, 0, GLStoreFormat, Image3DWidth, Image3DHeight, 256, 0, GLFormat, GL_UNSIGNED_BYTE, p3DImageData);
|
||||
}
|
||||
glGenerateMipmap(GL_TEXTURE_2D_ARRAY);
|
||||
}
|
||||
|
@ -723,12 +720,12 @@ void CCommandProcessorFragment_OpenGL3_3::TextureCreate(int Slot, int Width, int
|
|||
m_vTextures[Slot].m_LastWrapMode = CCommandBuffer::WRAP_REPEAT;
|
||||
|
||||
// calculate memory usage
|
||||
m_vTextures[Slot].m_MemSize = Width * Height * PixelSize;
|
||||
m_vTextures[Slot].m_MemSize = (size_t)Width * Height * PixelSize;
|
||||
while(Width > 2 && Height > 2)
|
||||
{
|
||||
Width >>= 1;
|
||||
Height >>= 1;
|
||||
m_vTextures[Slot].m_MemSize += Width * Height * PixelSize;
|
||||
m_vTextures[Slot].m_MemSize += (size_t)Width * Height * PixelSize;
|
||||
}
|
||||
m_pTextureMemoryUsage->store(m_pTextureMemoryUsage->load(std::memory_order_relaxed) + m_vTextures[Slot].m_MemSize, std::memory_order_relaxed);
|
||||
|
||||
|
@ -737,7 +734,7 @@ void CCommandProcessorFragment_OpenGL3_3::TextureCreate(int Slot, int Width, int
|
|||
|
||||
void CCommandProcessorFragment_OpenGL3_3::Cmd_Texture_Create(const CCommandBuffer::SCommand_Texture_Create *pCommand)
|
||||
{
|
||||
TextureCreate(pCommand->m_Slot, pCommand->m_Width, pCommand->m_Height, pCommand->m_PixelSize, TexFormatToOpenGLFormat(pCommand->m_Format), TexFormatToOpenGLFormat(pCommand->m_StoreFormat), pCommand->m_Flags, pCommand->m_pData);
|
||||
TextureCreate(pCommand->m_Slot, pCommand->m_Width, pCommand->m_Height, TexFormatToOpenGLFormat(pCommand->m_Format), TexFormatToOpenGLFormat(pCommand->m_StoreFormat), pCommand->m_Flags, pCommand->m_pData);
|
||||
}
|
||||
|
||||
void CCommandProcessorFragment_OpenGL3_3::Cmd_TextTexture_Update(const CCommandBuffer::SCommand_TextTexture_Update *pCommand)
|
||||
|
@ -753,20 +750,28 @@ void CCommandProcessorFragment_OpenGL3_3::Cmd_TextTextures_Destroy(const CComman
|
|||
|
||||
void CCommandProcessorFragment_OpenGL3_3::Cmd_TextTextures_Create(const CCommandBuffer::SCommand_TextTextures_Create *pCommand)
|
||||
{
|
||||
void *pTextData = pCommand->m_pTextData;
|
||||
void *pTextOutlineData = pCommand->m_pTextOutlineData;
|
||||
TextureCreate(pCommand->m_Slot, pCommand->m_Width, pCommand->m_Height, 1, GL_RED, GL_RED, CCommandBuffer::TEXFLAG_NOMIPMAPS, pTextData);
|
||||
TextureCreate(pCommand->m_SlotOutline, pCommand->m_Width, pCommand->m_Height, 1, GL_RED, GL_RED, CCommandBuffer::TEXFLAG_NOMIPMAPS, pTextOutlineData);
|
||||
TextureCreate(pCommand->m_Slot, pCommand->m_Width, pCommand->m_Height, GL_RED, GL_RED, CCommandBuffer::TEXFLAG_NOMIPMAPS, pCommand->m_pTextData);
|
||||
TextureCreate(pCommand->m_SlotOutline, pCommand->m_Width, pCommand->m_Height, GL_RED, GL_RED, CCommandBuffer::TEXFLAG_NOMIPMAPS, pCommand->m_pTextOutlineData);
|
||||
}
|
||||
|
||||
void CCommandProcessorFragment_OpenGL3_3::Cmd_Clear(const CCommandBuffer::SCommand_Clear *pCommand)
|
||||
{
|
||||
// if clip is still active, force disable it for clearing, enable it again afterwards
|
||||
bool ClipWasEnabled = m_LastClipEnable;
|
||||
if(ClipWasEnabled)
|
||||
{
|
||||
glDisable(GL_SCISSOR_TEST);
|
||||
}
|
||||
if(pCommand->m_Color.r != m_ClearColor.r || pCommand->m_Color.g != m_ClearColor.g || pCommand->m_Color.b != m_ClearColor.b)
|
||||
{
|
||||
glClearColor(pCommand->m_Color.r, pCommand->m_Color.g, pCommand->m_Color.b, 0.0f);
|
||||
m_ClearColor = pCommand->m_Color;
|
||||
}
|
||||
glClear(GL_COLOR_BUFFER_BIT);
|
||||
if(ClipWasEnabled)
|
||||
{
|
||||
glEnable(GL_SCISSOR_TEST);
|
||||
}
|
||||
}
|
||||
|
||||
void CCommandProcessorFragment_OpenGL3_3::UploadStreamBufferData(unsigned int PrimitiveType, const void *pVertices, size_t VertSize, unsigned int PrimitiveCount, bool AsTex3D)
|
||||
|
|
|
@ -83,7 +83,7 @@ protected:
|
|||
void RenderText(const CCommandBuffer::SState &State, int DrawNum, int TextTextureIndex, int TextOutlineTextureIndex, int TextureSize, const ColorRGBA &TextColor, const ColorRGBA &TextOutlineColor);
|
||||
|
||||
void TextureUpdate(int Slot, int X, int Y, int Width, int Height, int GLFormat, void *pTexData);
|
||||
void TextureCreate(int Slot, int Width, int Height, int PixelSize, int GLFormat, int GLStoreFormat, int Flags, void *pTexData);
|
||||
void TextureCreate(int Slot, int Width, int Height, int GLFormat, int GLStoreFormat, int Flags, void *pTexData);
|
||||
|
||||
bool Cmd_Init(const SCommand_Init *pCommand) override;
|
||||
void Cmd_Shutdown(const SCommand_Shutdown *pCommand) override;
|
||||
|
|
|
@ -1102,7 +1102,7 @@ protected:
|
|||
bool m_CanAssert = false;
|
||||
|
||||
/**
|
||||
* After an error occured, the rendering stop as soon as possible
|
||||
* After an error occurred, the rendering stop as soon as possible
|
||||
* Always stop the current code execution after a call to this function (e.g. return false)
|
||||
*/
|
||||
void SetError(EGFXErrorType ErrType, const char *pErr, const char *pErrStrExtra = nullptr)
|
||||
|
@ -1282,7 +1282,6 @@ protected:
|
|||
m_aCommandCallbacks[CommandBufferCMDOff(CCommandBuffer::CMD_RENDER_QUAD_CONTAINER_SPRITE_MULTIPLE)] = {true, [this](SRenderCommandExecuteBuffer &ExecBuffer, const CCommandBuffer::SCommand *pBaseCommand) { Cmd_RenderQuadContainerAsSpriteMultiple_FillExecuteBuffer(ExecBuffer, static_cast<const CCommandBuffer::SCommand_RenderQuadContainerAsSpriteMultiple *>(pBaseCommand)); }, [this](const CCommandBuffer::SCommand *pBaseCommand, SRenderCommandExecuteBuffer &ExecBuffer) { return Cmd_RenderQuadContainerAsSpriteMultiple(static_cast<const CCommandBuffer::SCommand_RenderQuadContainerAsSpriteMultiple *>(pBaseCommand), ExecBuffer); }};
|
||||
|
||||
m_aCommandCallbacks[CommandBufferCMDOff(CCommandBuffer::CMD_SWAP)] = {false, [](SRenderCommandExecuteBuffer &ExecBuffer, const CCommandBuffer::SCommand *pBaseCommand) {}, [this](const CCommandBuffer::SCommand *pBaseCommand, SRenderCommandExecuteBuffer &ExecBuffer) { return Cmd_Swap(static_cast<const CCommandBuffer::SCommand_Swap *>(pBaseCommand)); }};
|
||||
m_aCommandCallbacks[CommandBufferCMDOff(CCommandBuffer::CMD_FINISH)] = {false, [](SRenderCommandExecuteBuffer &ExecBuffer, const CCommandBuffer::SCommand *pBaseCommand) {}, [this](const CCommandBuffer::SCommand *pBaseCommand, SRenderCommandExecuteBuffer &ExecBuffer) { return Cmd_Finish(static_cast<const CCommandBuffer::SCommand_Finish *>(pBaseCommand)); }};
|
||||
|
||||
m_aCommandCallbacks[CommandBufferCMDOff(CCommandBuffer::CMD_VSYNC)] = {false, [](SRenderCommandExecuteBuffer &ExecBuffer, const CCommandBuffer::SCommand *pBaseCommand) {}, [this](const CCommandBuffer::SCommand *pBaseCommand, SRenderCommandExecuteBuffer &ExecBuffer) { return Cmd_VSync(static_cast<const CCommandBuffer::SCommand_VSync *>(pBaseCommand)); }};
|
||||
m_aCommandCallbacks[CommandBufferCMDOff(CCommandBuffer::CMD_MULTISAMPLING)] = {false, [](SRenderCommandExecuteBuffer &ExecBuffer, const CCommandBuffer::SCommand *pBaseCommand) {}, [this](const CCommandBuffer::SCommand *pBaseCommand, SRenderCommandExecuteBuffer &ExecBuffer) { return Cmd_MultiSampling(static_cast<const CCommandBuffer::SCommand_MultiSampling *>(pBaseCommand)); }};
|
||||
|
@ -1386,7 +1385,7 @@ protected:
|
|||
}
|
||||
}
|
||||
|
||||
[[nodiscard]] bool GetPresentedImageDataImpl(uint32_t &Width, uint32_t &Height, uint32_t &Format, std::vector<uint8_t> &vDstData, bool FlipImgData, bool ResetAlpha)
|
||||
[[nodiscard]] bool GetPresentedImageDataImpl(uint32_t &Width, uint32_t &Height, CImageInfo::EImageFormat &Format, std::vector<uint8_t> &vDstData, bool FlipImgData, bool ResetAlpha)
|
||||
{
|
||||
bool IsB8G8R8A8 = m_VKSurfFormat.format == VK_FORMAT_B8G8R8A8_UNORM;
|
||||
bool UsesRGBALikeFormat = m_VKSurfFormat.format == VK_FORMAT_R8G8B8A8_UNORM || IsB8G8R8A8;
|
||||
|
@ -1397,7 +1396,7 @@ protected:
|
|||
Height = Viewport.height;
|
||||
Format = CImageInfo::FORMAT_RGBA;
|
||||
|
||||
size_t ImageTotalSize = (size_t)Width * Height * 4;
|
||||
const size_t ImageTotalSize = (size_t)Width * Height * CImageInfo::PixelSize(Format);
|
||||
|
||||
uint8_t *pResImageData;
|
||||
if(!PreparePresentedImageDataImage(pResImageData, Width, Height))
|
||||
|
@ -1553,7 +1552,7 @@ protected:
|
|||
}
|
||||
}
|
||||
|
||||
[[nodiscard]] bool GetPresentedImageData(uint32_t &Width, uint32_t &Height, uint32_t &Format, std::vector<uint8_t> &vDstData) override
|
||||
[[nodiscard]] bool GetPresentedImageData(uint32_t &Width, uint32_t &Height, CImageInfo::EImageFormat &Format, std::vector<uint8_t> &vDstData) override
|
||||
{
|
||||
return GetPresentedImageDataImpl(Width, Height, Format, vDstData, false, false);
|
||||
}
|
||||
|
@ -2510,7 +2509,7 @@ protected:
|
|||
* TEXTURES
|
||||
************************/
|
||||
|
||||
size_t VulkanFormatToImageColorChannelCount(VkFormat Format)
|
||||
size_t VulkanFormatToPixelSize(VkFormat Format)
|
||||
{
|
||||
if(Format == VK_FORMAT_R8G8B8_UNORM)
|
||||
return 3;
|
||||
|
@ -2521,9 +2520,9 @@ protected:
|
|||
return 4;
|
||||
}
|
||||
|
||||
[[nodiscard]] bool UpdateTexture(size_t TextureSlot, VkFormat Format, void *&pData, int64_t XOff, int64_t YOff, size_t Width, size_t Height, size_t ColorChannelCount)
|
||||
[[nodiscard]] bool UpdateTexture(size_t TextureSlot, VkFormat Format, void *&pData, int64_t XOff, int64_t YOff, size_t Width, size_t Height)
|
||||
{
|
||||
size_t ImageSize = Width * Height * ColorChannelCount;
|
||||
const size_t ImageSize = Width * Height * VulkanFormatToPixelSize(Format);
|
||||
SMemoryBlock<s_StagingBufferImageCacheID> StagingBuffer;
|
||||
if(!GetStagingBufferImage(StagingBuffer, pData, ImageSize))
|
||||
return false;
|
||||
|
@ -2541,7 +2540,7 @@ protected:
|
|||
YOff /= 2;
|
||||
}
|
||||
|
||||
void *pTmpData = Resize((const uint8_t *)pData, Width, Height, Width, Height, VulkanFormatToImageColorChannelCount(Format));
|
||||
void *pTmpData = Resize((const uint8_t *)pData, Width, Height, Width, Height, VulkanFormatToPixelSize(Format));
|
||||
free(pData);
|
||||
pData = pTmpData;
|
||||
}
|
||||
|
@ -2571,14 +2570,13 @@ protected:
|
|||
int Slot,
|
||||
int Width,
|
||||
int Height,
|
||||
int PixelSize,
|
||||
VkFormat Format,
|
||||
VkFormat StoreFormat,
|
||||
int Flags,
|
||||
void *&pData)
|
||||
{
|
||||
size_t ImageIndex = (size_t)Slot;
|
||||
int ImageColorChannels = VulkanFormatToImageColorChannelCount(Format);
|
||||
const size_t PixelSize = VulkanFormatToPixelSize(Format);
|
||||
|
||||
while(ImageIndex >= m_vTextures.size())
|
||||
{
|
||||
|
@ -2596,7 +2594,7 @@ protected:
|
|||
++RescaleCount;
|
||||
} while((size_t)Width > m_MaxTextureSize || (size_t)Height > m_MaxTextureSize);
|
||||
|
||||
void *pTmpData = Resize((const uint8_t *)(pData), Width, Height, Width, Height, ImageColorChannels);
|
||||
void *pTmpData = Resize((const uint8_t *)(pData), Width, Height, Width, Height, PixelSize);
|
||||
free(pData);
|
||||
pData = pTmpData;
|
||||
}
|
||||
|
@ -2654,7 +2652,7 @@ protected:
|
|||
dbg_msg("vulkan", "3D/2D array texture was resized");
|
||||
int NewWidth = maximum<int>(HighestBit(ConvertWidth), 16);
|
||||
int NewHeight = maximum<int>(HighestBit(ConvertHeight), 16);
|
||||
uint8_t *pNewTexData = (uint8_t *)Resize((const uint8_t *)pData, ConvertWidth, ConvertHeight, NewWidth, NewHeight, ImageColorChannels);
|
||||
uint8_t *pNewTexData = (uint8_t *)Resize((const uint8_t *)pData, ConvertWidth, ConvertHeight, NewWidth, NewHeight, PixelSize);
|
||||
|
||||
ConvertWidth = NewWidth;
|
||||
ConvertHeight = NewHeight;
|
||||
|
@ -2668,8 +2666,8 @@ protected:
|
|||
bool Needs3DTexDel = false;
|
||||
if(!Is2DTextureSingleLayer)
|
||||
{
|
||||
p3DTexData = malloc((size_t)ImageColorChannels * ConvertWidth * ConvertHeight);
|
||||
if(!Texture2DTo3D(pData, ConvertWidth, ConvertHeight, ImageColorChannels, 16, 16, p3DTexData, Image3DWidth, Image3DHeight))
|
||||
p3DTexData = malloc((size_t)PixelSize * ConvertWidth * ConvertHeight);
|
||||
if(!Texture2DTo3D(pData, ConvertWidth, ConvertHeight, PixelSize, 16, 16, p3DTexData, Image3DWidth, Image3DHeight))
|
||||
{
|
||||
free(p3DTexData);
|
||||
p3DTexData = nullptr;
|
||||
|
@ -6467,7 +6465,7 @@ public:
|
|||
Buffer.m_pRawCommand = pBaseCommand;
|
||||
Buffer.m_ThreadIndex = 0;
|
||||
|
||||
if(m_CurCommandInPipe + 1 == m_CommandsInPipe && Buffer.m_Command != CCommandBuffer::CMD_FINISH)
|
||||
if(m_CurCommandInPipe + 1 == m_CommandsInPipe)
|
||||
{
|
||||
m_LastCommandsInPipeThreadIndex = std::numeric_limits<decltype(m_LastCommandsInPipeThreadIndex)>::max();
|
||||
}
|
||||
|
@ -6493,7 +6491,7 @@ public:
|
|||
Ret = CallbackObj.m_CMDIsHandled;
|
||||
if(!CallbackObj.m_CommandCB(pBaseCommand, Buffer))
|
||||
{
|
||||
// an error occured, stop this command and ignore all further commands
|
||||
// an error occurred, stop this command and ignore all further commands
|
||||
return ERunCommandReturnTypes::RUN_COMMAND_COMMAND_ERROR;
|
||||
}
|
||||
}
|
||||
|
@ -6582,7 +6580,7 @@ public:
|
|||
m_MultiSamplingCount = (g_Config.m_GfxFsaaSamples & 0xFFFFFFFE); // ignore the uneven bit, only even multi sampling works
|
||||
|
||||
TGLBackendReadPresentedImageData &ReadPresentedImgDataFunc = *pCommand->m_pReadPresentedImageDataFunc;
|
||||
ReadPresentedImgDataFunc = [this](uint32_t &Width, uint32_t &Height, uint32_t &Format, std::vector<uint8_t> &vDstData) { return GetPresentedImageData(Width, Height, Format, vDstData); };
|
||||
ReadPresentedImgDataFunc = [this](uint32_t &Width, uint32_t &Height, CImageInfo::EImageFormat &Format, std::vector<uint8_t> &vDstData) { return GetPresentedImageData(Width, Height, Format, vDstData); };
|
||||
|
||||
m_pWindow = pCommand->m_pWindow;
|
||||
|
||||
|
@ -6657,7 +6655,7 @@ public:
|
|||
|
||||
void *pData = pCommand->m_pData;
|
||||
|
||||
if(!UpdateTexture(IndexTex, VK_FORMAT_B8G8R8A8_UNORM, pData, pCommand->m_X, pCommand->m_Y, pCommand->m_Width, pCommand->m_Height, TexFormatToImageColorChannelCount(pCommand->m_Format)))
|
||||
if(!UpdateTexture(IndexTex, VK_FORMAT_B8G8R8A8_UNORM, pData, pCommand->m_X, pCommand->m_Y, pCommand->m_Width, pCommand->m_Height))
|
||||
return false;
|
||||
|
||||
free(pData);
|
||||
|
@ -6682,13 +6680,12 @@ public:
|
|||
int Slot = pCommand->m_Slot;
|
||||
int Width = pCommand->m_Width;
|
||||
int Height = pCommand->m_Height;
|
||||
int PixelSize = pCommand->m_PixelSize;
|
||||
int Format = pCommand->m_Format;
|
||||
int StoreFormat = pCommand->m_StoreFormat;
|
||||
int Flags = pCommand->m_Flags;
|
||||
void *pData = pCommand->m_pData;
|
||||
|
||||
if(!CreateTextureCMD(Slot, Width, Height, PixelSize, TextureFormatToVulkanFormat(Format), TextureFormatToVulkanFormat(StoreFormat), Flags, pData))
|
||||
if(!CreateTextureCMD(Slot, Width, Height, TextureFormatToVulkanFormat(Format), TextureFormatToVulkanFormat(StoreFormat), Flags, pData))
|
||||
return false;
|
||||
|
||||
free(pData);
|
||||
|
@ -6706,9 +6703,9 @@ public:
|
|||
void *pTmpData = pCommand->m_pTextData;
|
||||
void *pTmpData2 = pCommand->m_pTextOutlineData;
|
||||
|
||||
if(!CreateTextureCMD(Slot, Width, Height, 1, VK_FORMAT_R8_UNORM, VK_FORMAT_R8_UNORM, CCommandBuffer::TEXFLAG_NOMIPMAPS, pTmpData))
|
||||
if(!CreateTextureCMD(Slot, Width, Height, VK_FORMAT_R8_UNORM, VK_FORMAT_R8_UNORM, CCommandBuffer::TEXFLAG_NOMIPMAPS, pTmpData))
|
||||
return false;
|
||||
if(!CreateTextureCMD(SlotOutline, Width, Height, 1, VK_FORMAT_R8_UNORM, VK_FORMAT_R8_UNORM, CCommandBuffer::TEXFLAG_NOMIPMAPS, pTmpData2))
|
||||
if(!CreateTextureCMD(SlotOutline, Width, Height, VK_FORMAT_R8_UNORM, VK_FORMAT_R8_UNORM, CCommandBuffer::TEXFLAG_NOMIPMAPS, pTmpData2))
|
||||
return false;
|
||||
|
||||
if(!CreateNewTextDescriptorSets(Slot, SlotOutline))
|
||||
|
@ -6741,7 +6738,7 @@ public:
|
|||
|
||||
void *pData = pCommand->m_pData;
|
||||
|
||||
if(!UpdateTexture(IndexTex, VK_FORMAT_R8_UNORM, pData, pCommand->m_X, pCommand->m_Y, pCommand->m_Width, pCommand->m_Height, 1))
|
||||
if(!UpdateTexture(IndexTex, VK_FORMAT_R8_UNORM, pData, pCommand->m_X, pCommand->m_Y, pCommand->m_Width, pCommand->m_Height))
|
||||
return false;
|
||||
|
||||
free(pData);
|
||||
|
@ -6815,7 +6812,7 @@ public:
|
|||
|
||||
uint32_t Width;
|
||||
uint32_t Height;
|
||||
uint32_t Format;
|
||||
CImageInfo::EImageFormat Format;
|
||||
if(GetPresentedImageDataImpl(Width, Height, Format, m_vScreenshotHelper, false, true))
|
||||
{
|
||||
size_t ImgSize = (size_t)Width * (size_t)Height * (size_t)4;
|
||||
|
@ -6828,7 +6825,7 @@ public:
|
|||
}
|
||||
pCommand->m_pImage->m_Width = (int)Width;
|
||||
pCommand->m_pImage->m_Height = (int)Height;
|
||||
pCommand->m_pImage->m_Format = (int)Format;
|
||||
pCommand->m_pImage->m_Format = Format;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
@ -6921,12 +6918,6 @@ public:
|
|||
return true;
|
||||
}
|
||||
|
||||
[[nodiscard]] bool Cmd_Finish(const CCommandBuffer::SCommand_Finish *pCommand)
|
||||
{
|
||||
// just ignore it with vulkan
|
||||
return true;
|
||||
}
|
||||
|
||||
[[nodiscard]] bool Cmd_Swap(const CCommandBuffer::SCommand_Swap *pCommand)
|
||||
{
|
||||
return NextFrame();
|
||||
|
@ -7659,7 +7650,7 @@ public:
|
|||
{
|
||||
if(!m_aCommandCallbacks[CommandBufferCMDOff(NextCmd.m_Command)].m_CommandCB(NextCmd.m_pRawCommand, NextCmd))
|
||||
{
|
||||
// an error occured, the thread will not continue execution
|
||||
// an error occurred, the thread will not continue execution
|
||||
HasErrorFromCmd = true;
|
||||
break;
|
||||
}
|
||||
|
|
|
@ -505,7 +505,7 @@ void CClient::RconAuth(const char *pName, const char *pPassword)
|
|||
|
||||
CMsgPacker Msg(NETMSG_RCON_AUTH, true);
|
||||
Msg.AddString(pName, 32);
|
||||
Msg.AddString(pPassword, 32);
|
||||
Msg.AddString(pPassword, 128);
|
||||
Msg.AddInt(1);
|
||||
SendMsgActive(&Msg, MSGFLAG_VITAL);
|
||||
}
|
||||
|
@ -974,7 +974,7 @@ void CClient::ServerInfoRequest()
|
|||
|
||||
void CClient::LoadDebugFont()
|
||||
{
|
||||
m_DebugFont = Graphics()->LoadTexture("debug_font.png", IStorage::TYPE_ALL, CImageInfo::FORMAT_AUTO, 0);
|
||||
m_DebugFont = Graphics()->LoadTexture("debug_font.png", IStorage::TYPE_ALL);
|
||||
}
|
||||
|
||||
// ---
|
||||
|
@ -3120,7 +3120,7 @@ void CClient::Run()
|
|||
// handle pending map edits
|
||||
if(m_aCmdEditMap[0])
|
||||
{
|
||||
int Result = m_pEditor->Load(m_aCmdEditMap, IStorage::TYPE_ALL_OR_ABSOLUTE);
|
||||
int Result = m_pEditor->HandleMapDrop(m_aCmdEditMap, IStorage::TYPE_ALL_OR_ABSOLUTE);
|
||||
if(Result)
|
||||
g_Config.m_ClEditor = true;
|
||||
else
|
||||
|
@ -3376,12 +3376,6 @@ void CClient::Run()
|
|||
else
|
||||
LastTime = Now;
|
||||
|
||||
if(g_Config.m_DbgHitch)
|
||||
{
|
||||
std::this_thread::sleep_for(g_Config.m_DbgHitch * 1ms);
|
||||
g_Config.m_DbgHitch = 0;
|
||||
}
|
||||
|
||||
// update local and global time
|
||||
m_LocalTime = (time_get() - m_LocalStartTime) / (float)time_freq();
|
||||
m_GlobalTime = (time_get() - m_GlobalStartTime) / (float)time_freq();
|
||||
|
@ -3957,10 +3951,13 @@ void CClient::Con_DemoSpeed(IConsole::IResult *pResult, void *pUserData)
|
|||
pSelf->m_DemoPlayer.SetSpeed(pResult->GetFloat(0));
|
||||
}
|
||||
|
||||
void CClient::DemoRecorder_Start(const char *pFilename, bool WithTimestamp, int Recorder)
|
||||
void CClient::DemoRecorder_Start(const char *pFilename, bool WithTimestamp, int Recorder, bool Verbose)
|
||||
{
|
||||
if(State() != IClient::STATE_ONLINE)
|
||||
m_pConsole->Print(IConsole::OUTPUT_LEVEL_STANDARD, "demorec/record", "client is not online");
|
||||
{
|
||||
if(Verbose)
|
||||
m_pConsole->Print(IConsole::OUTPUT_LEVEL_STANDARD, "demorec/record", "client is not online");
|
||||
}
|
||||
else
|
||||
{
|
||||
char aFilename[IO_MAX_PATH_LENGTH];
|
||||
|
@ -4038,9 +4035,9 @@ void CClient::Con_Record(IConsole::IResult *pResult, void *pUserData)
|
|||
{
|
||||
CClient *pSelf = (CClient *)pUserData;
|
||||
if(pResult->NumArguments())
|
||||
pSelf->DemoRecorder_Start(pResult->GetString(0), false, RECORDER_MANUAL);
|
||||
pSelf->DemoRecorder_Start(pResult->GetString(0), false, RECORDER_MANUAL, true);
|
||||
else
|
||||
pSelf->DemoRecorder_Start(pSelf->m_aCurrentMap, true, RECORDER_MANUAL);
|
||||
pSelf->DemoRecorder_Start(pSelf->m_aCurrentMap, true, RECORDER_MANUAL, true);
|
||||
}
|
||||
|
||||
void CClient::Con_StopRecord(IConsole::IResult *pResult, void *pUserData)
|
||||
|
@ -4629,7 +4626,7 @@ int main(int argc, const char **argv)
|
|||
pClient->GetGPUInfoString(aGPUInfo);
|
||||
char aMessage[768];
|
||||
str_format(aMessage, sizeof(aMessage),
|
||||
"An assertion error occured. Please write down or take a screenshot of the following information and report this error.\n"
|
||||
"An assertion error occurred. Please write down or take a screenshot of the following information and report this error.\n"
|
||||
"Please also share the assert log which you should find in the 'dumps' folder in your config directory.\n\n"
|
||||
"%s\n\n"
|
||||
"Platform: %s\n"
|
||||
|
|
|
@ -164,9 +164,9 @@ class CClient : public IClient, public CDemoPlayer::IListener
|
|||
int m_aCurrentRecvTick[NUM_DUMMIES];
|
||||
int m_aRconAuthed[NUM_DUMMIES];
|
||||
char m_aRconUsername[32];
|
||||
char m_aRconPassword[32];
|
||||
char m_aRconPassword[128];
|
||||
int m_UseTempRconCommands;
|
||||
char m_aPassword[32];
|
||||
char m_aPassword[128];
|
||||
bool m_SendPassword;
|
||||
bool m_ButtonRender = false;
|
||||
|
||||
|
@ -482,7 +482,7 @@ public:
|
|||
void RegisterCommands();
|
||||
|
||||
const char *DemoPlayer_Play(const char *pFilename, int StorageType) override;
|
||||
void DemoRecorder_Start(const char *pFilename, bool WithTimestamp, int Recorder) override;
|
||||
void DemoRecorder_Start(const char *pFilename, bool WithTimestamp, int Recorder, bool Verbose = false) override;
|
||||
void DemoRecorder_HandleAutoStart() override;
|
||||
void DemoRecorder_StartReplayRecorder();
|
||||
void DemoRecorder_Stop(int Recorder, bool RemoveFile = false) override;
|
||||
|
|
|
@ -305,27 +305,17 @@ int CGraphics_Threaded::UnloadTexture(CTextureHandle *pIndex)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int ImageFormatToPixelSize(int Format)
|
||||
{
|
||||
switch(Format)
|
||||
{
|
||||
case CImageInfo::FORMAT_RGB: return 3;
|
||||
case CImageInfo::FORMAT_SINGLE_COMPONENT: return 1;
|
||||
default: return 4;
|
||||
}
|
||||
}
|
||||
|
||||
static bool ConvertToRGBA(uint8_t *pDest, const uint8_t *pSrc, size_t SrcWidth, size_t SrcHeight, int SrcFormat)
|
||||
static bool ConvertToRGBA(uint8_t *pDest, const uint8_t *pSrc, size_t SrcWidth, size_t SrcHeight, CImageInfo::EImageFormat SrcFormat)
|
||||
{
|
||||
if(SrcFormat == CImageInfo::FORMAT_RGBA)
|
||||
{
|
||||
mem_copy(pDest, pSrc, SrcWidth * SrcHeight * 4);
|
||||
mem_copy(pDest, pSrc, SrcWidth * SrcHeight * CImageInfo::PixelSize(CImageInfo::FORMAT_RGBA));
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
size_t SrcChannelCount = ImageFormatToPixelSize(SrcFormat);
|
||||
size_t DstChannelCount = 4;
|
||||
const size_t SrcChannelCount = CImageInfo::PixelSize(SrcFormat);
|
||||
const size_t DstChannelCount = CImageInfo::PixelSize(CImageInfo::FORMAT_RGBA);
|
||||
for(size_t Y = 0; Y < SrcHeight; ++Y)
|
||||
{
|
||||
for(size_t X = 0; X < SrcWidth; ++X)
|
||||
|
@ -333,12 +323,12 @@ static bool ConvertToRGBA(uint8_t *pDest, const uint8_t *pSrc, size_t SrcWidth,
|
|||
size_t ImgOffsetSrc = (Y * SrcWidth * SrcChannelCount) + (X * SrcChannelCount);
|
||||
size_t ImgOffsetDest = (Y * SrcWidth * DstChannelCount) + (X * DstChannelCount);
|
||||
size_t CopySize = SrcChannelCount;
|
||||
if(SrcChannelCount == 3)
|
||||
if(SrcFormat == CImageInfo::FORMAT_RGB)
|
||||
{
|
||||
mem_copy(&pDest[ImgOffsetDest], &pSrc[ImgOffsetSrc], CopySize);
|
||||
pDest[ImgOffsetDest + 3] = 255;
|
||||
}
|
||||
else if(SrcChannelCount == 1)
|
||||
else if(SrcFormat == CImageInfo::FORMAT_SINGLE_COMPONENT)
|
||||
{
|
||||
pDest[ImgOffsetDest + 0] = 255;
|
||||
pDest[ImgOffsetDest + 1] = 255;
|
||||
|
@ -351,7 +341,7 @@ static bool ConvertToRGBA(uint8_t *pDest, const uint8_t *pSrc, size_t SrcWidth,
|
|||
}
|
||||
}
|
||||
|
||||
int CGraphics_Threaded::LoadTextureRawSub(CTextureHandle TextureID, int x, int y, size_t Width, size_t Height, int Format, const void *pData)
|
||||
int CGraphics_Threaded::LoadTextureRawSub(CTextureHandle TextureID, int x, int y, size_t Width, size_t Height, CImageInfo::EImageFormat Format, const void *pData)
|
||||
{
|
||||
dbg_assert(TextureID.IsValid(), "Invalid texture handle used with LoadTextureRawSub.");
|
||||
|
||||
|
@ -364,7 +354,7 @@ int CGraphics_Threaded::LoadTextureRawSub(CTextureHandle TextureID, int x, int y
|
|||
Cmd.m_Format = CCommandBuffer::TEXFORMAT_RGBA;
|
||||
|
||||
// calculate memory usage
|
||||
const size_t MemSize = Width * Height * 4;
|
||||
const size_t MemSize = Width * Height * CImageInfo::PixelSize(CImageInfo::FORMAT_RGBA);
|
||||
|
||||
// copy texture data
|
||||
void *pTmpData = malloc(MemSize);
|
||||
|
@ -377,7 +367,7 @@ int CGraphics_Threaded::LoadTextureRawSub(CTextureHandle TextureID, int x, int y
|
|||
|
||||
IGraphics::CTextureHandle CGraphics_Threaded::LoadSpriteTextureImpl(CImageInfo &FromImageInfo, int x, int y, size_t w, size_t h)
|
||||
{
|
||||
const size_t PixelSize = ImageFormatToPixelSize(FromImageInfo.m_Format);
|
||||
const size_t PixelSize = FromImageInfo.PixelSize();
|
||||
m_vSpriteHelper.resize(w * h * PixelSize);
|
||||
CopyTextureFromTextureBufferSub(m_vSpriteHelper.data(), w, h, (uint8_t *)FromImageInfo.m_pData, FromImageInfo.m_Width, FromImageInfo.m_Height, PixelSize, x, y, w, h);
|
||||
return LoadTextureRaw(w, h, FromImageInfo.m_Format, m_vSpriteHelper.data(), FromImageInfo.m_Format, 0);
|
||||
|
@ -410,13 +400,13 @@ bool CGraphics_Threaded::IsImageSubFullyTransparent(CImageInfo &FromImageInfo, i
|
|||
if(FromImageInfo.m_Format == CImageInfo::FORMAT_SINGLE_COMPONENT || FromImageInfo.m_Format == CImageInfo::FORMAT_RGBA)
|
||||
{
|
||||
uint8_t *pImgData = (uint8_t *)FromImageInfo.m_pData;
|
||||
int bpp = ImageFormatToPixelSize(FromImageInfo.m_Format);
|
||||
const size_t PixelSize = FromImageInfo.PixelSize();
|
||||
for(int iy = 0; iy < h; ++iy)
|
||||
{
|
||||
for(int ix = 0; ix < w; ++ix)
|
||||
{
|
||||
int RealOffset = (x + ix) * bpp + (y + iy) * bpp * FromImageInfo.m_Width;
|
||||
if(pImgData[RealOffset + (bpp - 1)] > 0)
|
||||
const size_t RealOffset = (x + ix) * PixelSize + (y + iy) * PixelSize * FromImageInfo.m_Width;
|
||||
if(pImgData[RealOffset + (PixelSize - 1)] > 0)
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
@ -438,7 +428,7 @@ bool CGraphics_Threaded::IsSpriteTextureFullyTransparent(CImageInfo &FromImageIn
|
|||
return IsImageSubFullyTransparent(FromImageInfo, x, y, w, h);
|
||||
}
|
||||
|
||||
IGraphics::CTextureHandle CGraphics_Threaded::LoadTextureRaw(size_t Width, size_t Height, int Format, const void *pData, int StoreFormat, int Flags, const char *pTexName)
|
||||
IGraphics::CTextureHandle CGraphics_Threaded::LoadTextureRaw(size_t Width, size_t Height, CImageInfo::EImageFormat Format, const void *pData, int Flags, const char *pTexName)
|
||||
{
|
||||
// don't waste memory on texture if we are stress testing
|
||||
#ifdef CONF_DEBUG
|
||||
|
@ -472,7 +462,6 @@ IGraphics::CTextureHandle CGraphics_Threaded::LoadTextureRaw(size_t Width, size_
|
|||
Cmd.m_Slot = TextureHandle.Id();
|
||||
Cmd.m_Width = Width;
|
||||
Cmd.m_Height = Height;
|
||||
Cmd.m_PixelSize = 4;
|
||||
Cmd.m_Format = CCommandBuffer::TEXFORMAT_RGBA;
|
||||
Cmd.m_StoreFormat = CCommandBuffer::TEXFORMAT_RGBA;
|
||||
|
||||
|
@ -492,7 +481,7 @@ IGraphics::CTextureHandle CGraphics_Threaded::LoadTextureRaw(size_t Width, size_
|
|||
Cmd.m_Flags |= CCommandBuffer::TEXFLAG_NO_2D_TEXTURE;
|
||||
|
||||
// copy texture data
|
||||
const size_t MemSize = Width * Height * Cmd.m_PixelSize;
|
||||
const size_t MemSize = Width * Height * CImageInfo::PixelSize(CImageInfo::FORMAT_RGBA);
|
||||
void *pTmpData = malloc(MemSize);
|
||||
if(!ConvertToRGBA((uint8_t *)pTmpData, (const uint8_t *)pData, Width, Height, Format))
|
||||
{
|
||||
|
@ -505,17 +494,14 @@ IGraphics::CTextureHandle CGraphics_Threaded::LoadTextureRaw(size_t Width, size_
|
|||
}
|
||||
|
||||
// simple uncompressed RGBA loaders
|
||||
IGraphics::CTextureHandle CGraphics_Threaded::LoadTexture(const char *pFilename, int StorageType, int StoreFormat, int Flags)
|
||||
IGraphics::CTextureHandle CGraphics_Threaded::LoadTexture(const char *pFilename, int StorageType, int Flags)
|
||||
{
|
||||
dbg_assert(pFilename[0] != '\0', "Cannot load texture from file with empty filename"); // would cause Valgrind to crash otherwise
|
||||
|
||||
CImageInfo Img;
|
||||
if(LoadPNG(&Img, pFilename, StorageType))
|
||||
{
|
||||
if(StoreFormat == CImageInfo::FORMAT_AUTO)
|
||||
StoreFormat = Img.m_Format;
|
||||
|
||||
IGraphics::CTextureHandle ID = LoadTextureRaw(Img.m_Width, Img.m_Height, Img.m_Format, Img.m_pData, StoreFormat, Flags, pFilename);
|
||||
IGraphics::CTextureHandle ID = LoadTextureRaw(Img.m_Width, Img.m_Height, Img.m_Format, Img.m_pData, Flags, pFilename);
|
||||
free(Img.m_pData);
|
||||
if(ID.Id() != m_InvalidTexture.Id() && g_Config.m_Debug)
|
||||
dbg_msg("graphics/texture", "loaded %s", pFilename);
|
||||
|
@ -696,15 +682,7 @@ bool CGraphics_Threaded::CheckImageDivisibility(const char *pFileName, CImageInf
|
|||
NewWidth = (NewHeight / DivY) * DivX;
|
||||
}
|
||||
|
||||
int ColorChannelCount = 4;
|
||||
if(Img.m_Format == CImageInfo::FORMAT_SINGLE_COMPONENT)
|
||||
ColorChannelCount = 1;
|
||||
else if(Img.m_Format == CImageInfo::FORMAT_RGB)
|
||||
ColorChannelCount = 3;
|
||||
else if(Img.m_Format == CImageInfo::FORMAT_RGBA)
|
||||
ColorChannelCount = 4;
|
||||
|
||||
uint8_t *pNewImg = ResizeImage((uint8_t *)Img.m_pData, Img.m_Width, Img.m_Height, NewWidth, NewHeight, ColorChannelCount);
|
||||
uint8_t *pNewImg = ResizeImage((uint8_t *)Img.m_pData, Img.m_Width, Img.m_Height, NewWidth, NewHeight, Img.PixelSize());
|
||||
free(Img.m_pData);
|
||||
Img.m_pData = pNewImg;
|
||||
Img.m_Width = NewWidth;
|
||||
|
@ -734,23 +712,23 @@ bool CGraphics_Threaded::IsImageFormatRGBA(const char *pFileName, CImageInfo &Im
|
|||
return true;
|
||||
}
|
||||
|
||||
void CGraphics_Threaded::CopyTextureBufferSub(uint8_t *pDestBuffer, uint8_t *pSourceBuffer, size_t FullWidth, size_t FullHeight, size_t ColorChannelCount, size_t SubOffsetX, size_t SubOffsetY, size_t SubCopyWidth, size_t SubCopyHeight)
|
||||
void CGraphics_Threaded::CopyTextureBufferSub(uint8_t *pDestBuffer, uint8_t *pSourceBuffer, size_t FullWidth, size_t FullHeight, size_t PixelSize, size_t SubOffsetX, size_t SubOffsetY, size_t SubCopyWidth, size_t SubCopyHeight)
|
||||
{
|
||||
for(size_t Y = 0; Y < SubCopyHeight; ++Y)
|
||||
{
|
||||
const size_t ImgOffset = ((SubOffsetY + Y) * FullWidth * ColorChannelCount) + (SubOffsetX * ColorChannelCount);
|
||||
const size_t CopySize = SubCopyWidth * ColorChannelCount;
|
||||
const size_t ImgOffset = ((SubOffsetY + Y) * FullWidth * PixelSize) + (SubOffsetX * PixelSize);
|
||||
const size_t CopySize = SubCopyWidth * PixelSize;
|
||||
mem_copy(&pDestBuffer[ImgOffset], &pSourceBuffer[ImgOffset], CopySize);
|
||||
}
|
||||
}
|
||||
|
||||
void CGraphics_Threaded::CopyTextureFromTextureBufferSub(uint8_t *pDestBuffer, size_t DestWidth, size_t DestHeight, uint8_t *pSourceBuffer, size_t SrcWidth, size_t SrcHeight, size_t ColorChannelCount, size_t SrcSubOffsetX, size_t SrcSubOffsetY, size_t SrcSubCopyWidth, size_t SrcSubCopyHeight)
|
||||
void CGraphics_Threaded::CopyTextureFromTextureBufferSub(uint8_t *pDestBuffer, size_t DestWidth, size_t DestHeight, uint8_t *pSourceBuffer, size_t SrcWidth, size_t SrcHeight, size_t PixelSize, size_t SrcSubOffsetX, size_t SrcSubOffsetY, size_t SrcSubCopyWidth, size_t SrcSubCopyHeight)
|
||||
{
|
||||
for(size_t Y = 0; Y < SrcSubCopyHeight; ++Y)
|
||||
{
|
||||
const size_t SrcImgOffset = ((SrcSubOffsetY + Y) * SrcWidth * ColorChannelCount) + (SrcSubOffsetX * ColorChannelCount);
|
||||
const size_t DstImgOffset = (Y * DestWidth * ColorChannelCount);
|
||||
const size_t CopySize = SrcSubCopyWidth * ColorChannelCount;
|
||||
const size_t SrcImgOffset = ((SrcSubOffsetY + Y) * SrcWidth * PixelSize) + (SrcSubOffsetX * PixelSize);
|
||||
const size_t DstImgOffset = (Y * DestWidth * PixelSize);
|
||||
const size_t CopySize = SrcSubCopyWidth * PixelSize;
|
||||
mem_copy(&pDestBuffer[DstImgOffset], &pSourceBuffer[SrcImgOffset], CopySize);
|
||||
}
|
||||
}
|
||||
|
@ -2671,7 +2649,7 @@ int CGraphics_Threaded::Init()
|
|||
}
|
||||
const int TextureLoadFlags = HasTextureArrays() ? IGraphics::TEXLOAD_TO_2D_ARRAY_TEXTURE : IGraphics::TEXLOAD_TO_3D_TEXTURE;
|
||||
m_InvalidTexture.Invalidate();
|
||||
m_InvalidTexture = LoadTextureRaw(InvalidTextureDimension, InvalidTextureDimension, CImageInfo::FORMAT_RGBA, aNullTextureData, CImageInfo::FORMAT_RGBA, TextureLoadFlags);
|
||||
m_InvalidTexture = LoadTextureRaw(InvalidTextureDimension, InvalidTextureDimension, CImageInfo::FORMAT_RGBA, aNullTextureData, TextureLoadFlags);
|
||||
}
|
||||
|
||||
ColorRGBA GPUInfoPrintColor{0.6f, 0.5f, 1.0f, 1.0f};
|
||||
|
@ -2939,12 +2917,6 @@ void CGraphics_Threaded::Swap()
|
|||
AddCmd(Cmd);
|
||||
}
|
||||
|
||||
if(g_Config.m_GfxFinish)
|
||||
{
|
||||
CCommandBuffer::SCommand_Finish Cmd;
|
||||
AddCmd(Cmd);
|
||||
}
|
||||
|
||||
// kick the command buffer
|
||||
KickCommandBuffer();
|
||||
// TODO: Remove when https://github.com/libsdl-org/SDL/issues/5203 is fixed
|
||||
|
|
|
@ -126,7 +126,6 @@ public:
|
|||
|
||||
// swap
|
||||
CMD_SWAP,
|
||||
CMD_FINISH,
|
||||
|
||||
// misc
|
||||
CMD_MULTISAMPLING,
|
||||
|
@ -495,12 +494,6 @@ public:
|
|||
SCommand(CMD_SWAP) {}
|
||||
};
|
||||
|
||||
struct SCommand_Finish : public SCommand
|
||||
{
|
||||
SCommand_Finish() :
|
||||
SCommand(CMD_FINISH) {}
|
||||
};
|
||||
|
||||
struct SCommand_VSync : public SCommand
|
||||
{
|
||||
SCommand_VSync() :
|
||||
|
@ -542,7 +535,6 @@ public:
|
|||
|
||||
size_t m_Width;
|
||||
size_t m_Height;
|
||||
int m_PixelSize;
|
||||
int m_Format;
|
||||
int m_StoreFormat;
|
||||
int m_Flags;
|
||||
|
@ -974,8 +966,8 @@ public:
|
|||
IGraphics::CTextureHandle FindFreeTextureIndex();
|
||||
void FreeTextureIndex(CTextureHandle *pIndex);
|
||||
int UnloadTexture(IGraphics::CTextureHandle *pIndex) override;
|
||||
IGraphics::CTextureHandle LoadTextureRaw(size_t Width, size_t Height, int Format, const void *pData, int StoreFormat, int Flags, const char *pTexName = NULL) override;
|
||||
int LoadTextureRawSub(IGraphics::CTextureHandle TextureID, int x, int y, size_t Width, size_t Height, int Format, const void *pData) override;
|
||||
IGraphics::CTextureHandle LoadTextureRaw(size_t Width, size_t Height, CImageInfo::EImageFormat Format, const void *pData, int Flags, const char *pTexName = nullptr) override;
|
||||
int LoadTextureRawSub(IGraphics::CTextureHandle TextureID, int x, int y, size_t Width, size_t Height, CImageInfo::EImageFormat Format, const void *pData) override;
|
||||
IGraphics::CTextureHandle InvalidTexture() const override;
|
||||
|
||||
bool LoadTextTextures(size_t Width, size_t Height, CTextureHandle &TextTexture, CTextureHandle &TextOutlineTexture, void *pTextData, void *pTextOutlineData) override;
|
||||
|
@ -990,15 +982,15 @@ public:
|
|||
bool IsSpriteTextureFullyTransparent(CImageInfo &FromImageInfo, struct client_data7::CDataSprite *pSprite) override;
|
||||
|
||||
// simple uncompressed RGBA loaders
|
||||
IGraphics::CTextureHandle LoadTexture(const char *pFilename, int StorageType, int StoreFormat, int Flags) override;
|
||||
IGraphics::CTextureHandle LoadTexture(const char *pFilename, int StorageType, int Flags = 0) override;
|
||||
int LoadPNG(CImageInfo *pImg, const char *pFilename, int StorageType) override;
|
||||
void FreePNG(CImageInfo *pImg) override;
|
||||
|
||||
bool CheckImageDivisibility(const char *pFileName, CImageInfo &Img, int DivX, int DivY, bool AllowResize) override;
|
||||
bool IsImageFormatRGBA(const char *pFileName, CImageInfo &Img) override;
|
||||
|
||||
void CopyTextureBufferSub(uint8_t *pDestBuffer, uint8_t *pSourceBuffer, size_t FullWidth, size_t FullHeight, size_t ColorChannelCount, size_t SubOffsetX, size_t SubOffsetY, size_t SubCopyWidth, size_t SubCopyHeight) override;
|
||||
void CopyTextureFromTextureBufferSub(uint8_t *pDestBuffer, size_t DestWidth, size_t DestHeight, uint8_t *pSourceBuffer, size_t SrcWidth, size_t SrcHeight, size_t ColorChannelCount, size_t SrcSubOffsetX, size_t SrcSubOffsetY, size_t SrcSubCopyWidth, size_t SrcSubCopyHeight) override;
|
||||
void CopyTextureBufferSub(uint8_t *pDestBuffer, uint8_t *pSourceBuffer, size_t FullWidth, size_t FullHeight, size_t PixelSize, size_t SubOffsetX, size_t SubOffsetY, size_t SubCopyWidth, size_t SubCopyHeight) override;
|
||||
void CopyTextureFromTextureBufferSub(uint8_t *pDestBuffer, size_t DestWidth, size_t DestHeight, uint8_t *pSourceBuffer, size_t SrcWidth, size_t SrcHeight, size_t PixelSize, size_t SrcSubOffsetX, size_t SrcSubOffsetY, size_t SrcSubCopyWidth, size_t SrcSubCopyHeight) override;
|
||||
|
||||
bool ScreenshotDirect();
|
||||
|
||||
|
|
|
@ -113,7 +113,7 @@ class CAtlas
|
|||
/**
|
||||
* Sections with a smaller width or height will not be created
|
||||
* when cutting larger sections, to prevent collecting many
|
||||
* small, mostly unuseable sections.
|
||||
* small, mostly unusable sections.
|
||||
*/
|
||||
static constexpr size_t MIN_SECTION_DIMENSION = 6;
|
||||
|
||||
|
@ -227,7 +227,7 @@ public:
|
|||
}
|
||||
|
||||
// We don't iterate sections in the map with increasing width and height at the same time,
|
||||
// because it's slower and doesn't noticable increase the atlas utilization.
|
||||
// because it's slower and doesn't noticeable increase the atlas utilization.
|
||||
}
|
||||
|
||||
// Check vector for larger section
|
||||
|
@ -261,7 +261,7 @@ public:
|
|||
}
|
||||
} while(SectionIndex > 0);
|
||||
if(SmallestLossIndex == m_vSections.size())
|
||||
return false; // No useable section found in vector
|
||||
return false; // No usable section found in vector
|
||||
|
||||
// Use the section with the smallest loss
|
||||
const SSection Section = m_vSections[SmallestLossIndex];
|
||||
|
@ -729,7 +729,7 @@ public:
|
|||
return vec2(0.0f, 0.0f);
|
||||
}
|
||||
|
||||
void UploadEntityLayerText(void *pTexBuff, size_t ImageColorChannelCount, int TexWidth, int TexHeight, int TexSubWidth, int TexSubHeight, const char *pText, int Length, float x, float y, int FontSize)
|
||||
void UploadEntityLayerText(void *pTexBuff, size_t PixelSize, size_t TexWidth, size_t TexHeight, int TexSubWidth, int TexSubHeight, const char *pText, int Length, float x, float y, int FontSize)
|
||||
{
|
||||
if(FontSize < 1)
|
||||
return;
|
||||
|
@ -777,11 +777,11 @@ public:
|
|||
{
|
||||
const int ImgOffX = clamp(x + OffX + WidthLastChars, x, (x + TexSubWidth) - 1);
|
||||
const int ImgOffY = clamp(y + OffY, y, (y + TexSubHeight) - 1);
|
||||
const size_t ImageOffset = ImgOffY * (TexWidth * ImageColorChannelCount) + ImgOffX * ImageColorChannelCount;
|
||||
const size_t ImageOffset = ImgOffY * (TexWidth * PixelSize) + ImgOffX * PixelSize;
|
||||
const size_t GlyphOffset = OffY * pBitmap->width + OffX;
|
||||
for(size_t i = 0; i < ImageColorChannelCount; ++i)
|
||||
for(size_t i = 0; i < PixelSize; ++i)
|
||||
{
|
||||
if(i != ImageColorChannelCount - 1)
|
||||
if(i != PixelSize - 1)
|
||||
{
|
||||
*(pImageBuff + ImageOffset + i) = 255;
|
||||
}
|
||||
|
@ -1574,7 +1574,11 @@ public:
|
|||
float LastCharX = DrawX;
|
||||
float LastCharWidth = 0;
|
||||
|
||||
// Returns true if line was started
|
||||
const auto &&StartNewLine = [&]() {
|
||||
if(pCursor->m_MaxLines > 0 && LineCount >= pCursor->m_MaxLines)
|
||||
return false;
|
||||
|
||||
DrawX = pCursor->m_StartX;
|
||||
DrawY += pCursor->m_AlignedFontSize;
|
||||
if((RenderFlags & TEXT_RENDER_FLAG_NO_PIXEL_ALIGMENT) == 0)
|
||||
|
@ -1587,6 +1591,7 @@ public:
|
|||
LastCharX = DrawX;
|
||||
LastCharWidth = 0;
|
||||
++LineCount;
|
||||
return true;
|
||||
};
|
||||
|
||||
if(pCursor->m_CalculateSelectionMode != TEXT_CURSOR_SELECTION_MODE_NONE || pCursor->m_CursorMode != TEXT_CURSOR_CURSOR_MODE_NONE)
|
||||
|
@ -1606,7 +1611,7 @@ public:
|
|||
bool GotNewLine = false;
|
||||
bool GotNewLineLast = false;
|
||||
|
||||
while(pCurrent < pEnd && (pCursor->m_MaxLines < 1 || LineCount <= pCursor->m_MaxLines) && pCurrent != pEllipsis)
|
||||
while(pCurrent < pEnd && pCurrent != pEllipsis)
|
||||
{
|
||||
bool NewLine = false;
|
||||
const char *pBatchEnd = pEnd;
|
||||
|
@ -1667,8 +1672,7 @@ public:
|
|||
if((pCursor->m_Flags & TEXTFLAG_DISALLOW_NEWLINE) == 0)
|
||||
{
|
||||
pLastGlyph = nullptr;
|
||||
StartNewLine();
|
||||
if(pCursor->m_MaxLines > 0 && LineCount > pCursor->m_MaxLines)
|
||||
if(!StartNewLine())
|
||||
break;
|
||||
continue;
|
||||
}
|
||||
|
@ -1859,7 +1863,8 @@ public:
|
|||
|
||||
if(NewLine)
|
||||
{
|
||||
StartNewLine();
|
||||
if(!StartNewLine())
|
||||
break;
|
||||
GotNewLine = true;
|
||||
GotNewLineLast = true;
|
||||
}
|
||||
|
@ -2139,9 +2144,9 @@ public:
|
|||
return TextContainer.m_BoundingBox;
|
||||
}
|
||||
|
||||
void UploadEntityLayerText(void *pTexBuff, size_t ImageColorChannelCount, int TexWidth, int TexHeight, int TexSubWidth, int TexSubHeight, const char *pText, int Length, float x, float y, int FontSize) override
|
||||
void UploadEntityLayerText(void *pTexBuff, size_t PixelSize, size_t TexWidth, size_t TexHeight, int TexSubWidth, int TexSubHeight, const char *pText, int Length, float x, float y, int FontSize) override
|
||||
{
|
||||
m_pGlyphMap->UploadEntityLayerText(pTexBuff, ImageColorChannelCount, TexWidth, TexHeight, TexSubWidth, TexSubHeight, pText, Length, x, y, FontSize);
|
||||
m_pGlyphMap->UploadEntityLayerText(pTexBuff, PixelSize, TexWidth, TexHeight, TexSubWidth, TexSubHeight, pText, Length, x, y, FontSize);
|
||||
}
|
||||
|
||||
int AdjustFontSize(const char *pText, int TextLength, int MaxSize, int MaxWidth) const override
|
||||
|
|
|
@ -8,6 +8,8 @@
|
|||
#include <engine/shared/json.h>
|
||||
#include <engine/storage.h>
|
||||
|
||||
#include <game/version.h>
|
||||
|
||||
#include <cstdlib> // system
|
||||
|
||||
using std::map;
|
||||
|
|
|
@ -585,7 +585,7 @@ void CVideo::ReadRGBFromGL(size_t ThreadIndex)
|
|||
{
|
||||
uint32_t Width;
|
||||
uint32_t Height;
|
||||
uint32_t Format;
|
||||
CImageInfo::EImageFormat Format;
|
||||
m_pGraphics->GetReadPresentedImageDataFuncUnsafe()(Width, Height, Format, m_vPixelHelper[ThreadIndex]);
|
||||
}
|
||||
|
||||
|
|
|
@ -512,7 +512,7 @@ mod ffi {
|
|||
/// Used as a last parameter in [`IConsole::Print`].
|
||||
///
|
||||
/// It is treated as "no color" in the console code, meaning that the default
|
||||
/// color of the output medium isn't overriden.
|
||||
/// color of the output medium isn't overridden.
|
||||
#[allow(non_upper_case_globals)]
|
||||
pub const gs_ConsoleDefaultColor: ColorRGBA = ColorRGBA {
|
||||
r: 1.0,
|
||||
|
|
|
@ -15,6 +15,7 @@ public:
|
|||
virtual void OnActivate() = 0;
|
||||
virtual void OnWindowResize() = 0;
|
||||
virtual bool HasUnsavedData() const = 0;
|
||||
virtual bool HandleMapDrop(const char *pFilename, int StorageType) = 0;
|
||||
virtual bool Load(const char *pFilename, int StorageType) = 0;
|
||||
virtual bool Save(const char *pFilename) = 0;
|
||||
virtual void UpdateMentions() = 0;
|
||||
|
|
|
@ -17,14 +17,14 @@ struct SLibPNGWarningItem
|
|||
{
|
||||
SLibPNGWarningItem *pUserStruct = (SLibPNGWarningItem *)png_get_error_ptr(png_ptr);
|
||||
pUserStruct->m_pByteLoader->m_Err = -1;
|
||||
dbg_msg("libpng", "error for file \"%s\": %s", pUserStruct->m_pFileName, error_msg);
|
||||
dbg_msg("png", "error for file \"%s\": %s", pUserStruct->m_pFileName, error_msg);
|
||||
std::longjmp(pUserStruct->m_Buf, 1);
|
||||
}
|
||||
|
||||
static void LibPNGWarning(png_structp png_ptr, png_const_charp warning_msg)
|
||||
{
|
||||
SLibPNGWarningItem *pUserStruct = (SLibPNGWarningItem *)png_get_error_ptr(png_ptr);
|
||||
dbg_msg("libpng", "warning for file \"%s\": %s", pUserStruct->m_pFileName, warning_msg);
|
||||
dbg_msg("png", "warning for file \"%s\": %s", pUserStruct->m_pFileName, warning_msg);
|
||||
}
|
||||
|
||||
static bool FileMatchesImageType(SImageByteBuffer &ByteLoader)
|
||||
|
@ -80,7 +80,7 @@ static void LibPNGDeleteReadStruct(png_structp pPNGStruct, png_infop pPNGInfo)
|
|||
{
|
||||
if(pPNGInfo != nullptr)
|
||||
png_destroy_info_struct(pPNGStruct, &pPNGInfo);
|
||||
png_destroy_read_struct(&pPNGStruct, NULL, NULL);
|
||||
png_destroy_read_struct(&pPNGStruct, nullptr, nullptr);
|
||||
}
|
||||
|
||||
static int PngliteIncompatibility(png_structp pPNGStruct, png_infop pPNGInfo)
|
||||
|
@ -131,23 +131,19 @@ static int PngliteIncompatibility(png_structp pPNGStruct, png_infop pPNGInfo)
|
|||
|
||||
bool LoadPNG(SImageByteBuffer &ByteLoader, const char *pFileName, int &PngliteIncompatible, int &Width, int &Height, uint8_t *&pImageBuff, EImageFormat &ImageFormat)
|
||||
{
|
||||
png_infop pPNGInfo = nullptr;
|
||||
int ColorType;
|
||||
png_byte BitDepth;
|
||||
int ColorChannelCount;
|
||||
int BytesInRow;
|
||||
Height = 0;
|
||||
png_bytepp pRowPointers = nullptr;
|
||||
SLibPNGWarningItem UserErrorStruct = {&ByteLoader, pFileName, {}};
|
||||
|
||||
png_structp pPNGStruct = png_create_read_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL);
|
||||
png_structp pPNGStruct = png_create_read_struct(PNG_LIBPNG_VER_STRING, nullptr, nullptr, nullptr);
|
||||
|
||||
if(pPNGStruct == NULL)
|
||||
if(pPNGStruct == nullptr)
|
||||
{
|
||||
dbg_msg("png", "libpng internal failure: png_create_read_struct failed.");
|
||||
return false;
|
||||
}
|
||||
|
||||
png_infop pPNGInfo = nullptr;
|
||||
png_bytepp pRowPointers = nullptr;
|
||||
Height = 0; // ensure this is not undefined for the error handler
|
||||
if(setjmp(UserErrorStruct.m_Buf))
|
||||
{
|
||||
if(pRowPointers != nullptr)
|
||||
|
@ -165,9 +161,9 @@ bool LoadPNG(SImageByteBuffer &ByteLoader, const char *pFileName, int &PngliteIn
|
|||
|
||||
pPNGInfo = png_create_info_struct(pPNGStruct);
|
||||
|
||||
if(pPNGInfo == NULL)
|
||||
if(pPNGInfo == nullptr)
|
||||
{
|
||||
png_destroy_read_struct(&pPNGStruct, NULL, NULL);
|
||||
png_destroy_read_struct(&pPNGStruct, nullptr, nullptr);
|
||||
dbg_msg("png", "libpng internal failure: png_create_info_struct failed.");
|
||||
return false;
|
||||
}
|
||||
|
@ -175,6 +171,7 @@ bool LoadPNG(SImageByteBuffer &ByteLoader, const char *pFileName, int &PngliteIn
|
|||
if(!FileMatchesImageType(ByteLoader))
|
||||
{
|
||||
LibPNGDeleteReadStruct(pPNGStruct, pPNGInfo);
|
||||
dbg_msg("png", "file does not match image type.");
|
||||
return false;
|
||||
}
|
||||
|
||||
|
@ -189,13 +186,14 @@ bool LoadPNG(SImageByteBuffer &ByteLoader, const char *pFileName, int &PngliteIn
|
|||
if(ByteLoader.m_Err != 0)
|
||||
{
|
||||
LibPNGDeleteReadStruct(pPNGStruct, pPNGInfo);
|
||||
dbg_msg("png", "byte loader error.");
|
||||
return false;
|
||||
}
|
||||
|
||||
Width = png_get_image_width(pPNGStruct, pPNGInfo);
|
||||
Height = png_get_image_height(pPNGStruct, pPNGInfo);
|
||||
ColorType = png_get_color_type(pPNGStruct, pPNGInfo);
|
||||
BitDepth = png_get_bit_depth(pPNGStruct, pPNGInfo);
|
||||
const int ColorType = png_get_color_type(pPNGStruct, pPNGInfo);
|
||||
const png_byte BitDepth = png_get_bit_depth(pPNGStruct, pPNGInfo);
|
||||
PngliteIncompatible = PngliteIncompatibility(pPNGStruct, pPNGInfo);
|
||||
|
||||
if(BitDepth == 16)
|
||||
|
@ -227,8 +225,8 @@ bool LoadPNG(SImageByteBuffer &ByteLoader, const char *pFileName, int &PngliteIn
|
|||
|
||||
png_read_update_info(pPNGStruct, pPNGInfo);
|
||||
|
||||
ColorChannelCount = LibPNGGetColorChannelCount(ColorType);
|
||||
BytesInRow = png_get_rowbytes(pPNGStruct, pPNGInfo);
|
||||
const int ColorChannelCount = LibPNGGetColorChannelCount(ColorType);
|
||||
const int BytesInRow = png_get_rowbytes(pPNGStruct, pPNGInfo);
|
||||
|
||||
if(BytesInRow == Width * ColorChannelCount)
|
||||
{
|
||||
|
@ -255,6 +253,7 @@ bool LoadPNG(SImageByteBuffer &ByteLoader, const char *pFileName, int &PngliteIn
|
|||
if(ByteLoader.m_Err != 0)
|
||||
{
|
||||
LibPNGDeleteReadStruct(pPNGStruct, pPNGInfo);
|
||||
dbg_msg("png", "byte loader error.");
|
||||
return false;
|
||||
}
|
||||
|
||||
|
@ -263,11 +262,12 @@ bool LoadPNG(SImageByteBuffer &ByteLoader, const char *pFileName, int &PngliteIn
|
|||
else
|
||||
{
|
||||
LibPNGDeleteReadStruct(pPNGStruct, pPNGInfo);
|
||||
dbg_msg("png", "bytes in row incorrect.");
|
||||
return false;
|
||||
}
|
||||
|
||||
png_destroy_info_struct(pPNGStruct, &pPNGInfo);
|
||||
png_destroy_read_struct(&pPNGStruct, NULL, NULL);
|
||||
png_destroy_read_struct(&pPNGStruct, nullptr, nullptr);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
@ -304,9 +304,9 @@ static int ImageLoaderHelperFormatToColorChannel(EImageFormat Format)
|
|||
|
||||
bool SavePNG(EImageFormat ImageFormat, const uint8_t *pRawBuffer, SImageByteBuffer &WrittenBytes, int Width, int Height)
|
||||
{
|
||||
png_structp pPNGStruct = png_create_write_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL);
|
||||
png_structp pPNGStruct = png_create_write_struct(PNG_LIBPNG_VER_STRING, nullptr, nullptr, nullptr);
|
||||
|
||||
if(pPNGStruct == NULL)
|
||||
if(pPNGStruct == nullptr)
|
||||
{
|
||||
dbg_msg("png", "libpng internal failure: png_create_write_struct failed.");
|
||||
return false;
|
||||
|
@ -314,9 +314,9 @@ bool SavePNG(EImageFormat ImageFormat, const uint8_t *pRawBuffer, SImageByteBuff
|
|||
|
||||
png_infop pPNGInfo = png_create_info_struct(pPNGStruct);
|
||||
|
||||
if(pPNGInfo == NULL)
|
||||
if(pPNGInfo == nullptr)
|
||||
{
|
||||
png_destroy_read_struct(&pPNGStruct, NULL, NULL);
|
||||
png_destroy_read_struct(&pPNGStruct, nullptr, nullptr);
|
||||
dbg_msg("png", "libpng internal failure: png_create_info_struct failed.");
|
||||
return false;
|
||||
}
|
||||
|
@ -361,7 +361,7 @@ bool SavePNG(EImageFormat ImageFormat, const uint8_t *pRawBuffer, SImageByteBuff
|
|||
delete[](pRowPointers);
|
||||
|
||||
png_destroy_info_struct(pPNGStruct, &pPNGInfo);
|
||||
png_destroy_write_struct(&pPNGStruct, NULL);
|
||||
png_destroy_write_struct(&pPNGStruct, nullptr);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
|
|
@ -66,29 +66,54 @@ struct SGraphicTileTexureCoords
|
|||
class CImageInfo
|
||||
{
|
||||
public:
|
||||
enum
|
||||
enum EImageFormat
|
||||
{
|
||||
FORMAT_AUTO = -1,
|
||||
FORMAT_ERROR = -1,
|
||||
FORMAT_RGB = 0,
|
||||
FORMAT_RGBA = 1,
|
||||
FORMAT_SINGLE_COMPONENT = 2,
|
||||
};
|
||||
|
||||
/* Variable: width
|
||||
Contains the width of the image */
|
||||
int m_Width;
|
||||
/**
|
||||
* Contains the width of the image
|
||||
*/
|
||||
int m_Width = 0;
|
||||
|
||||
/* Variable: height
|
||||
Contains the height of the image */
|
||||
int m_Height;
|
||||
/**
|
||||
* Contains the height of the image
|
||||
*/
|
||||
int m_Height = 0;
|
||||
|
||||
/* Variable: format
|
||||
Contains the format of the image. See <Image Formats> for more information. */
|
||||
int m_Format;
|
||||
/**
|
||||
* Contains the format of the image.
|
||||
*
|
||||
* @see EImageFormat
|
||||
*/
|
||||
EImageFormat m_Format = FORMAT_ERROR;
|
||||
|
||||
/* Variable: data
|
||||
Pointer to the image data. */
|
||||
void *m_pData;
|
||||
/**
|
||||
* Pointer to the image data.
|
||||
*/
|
||||
void *m_pData = nullptr;
|
||||
|
||||
static size_t PixelSize(EImageFormat Format)
|
||||
{
|
||||
dbg_assert(Format != FORMAT_ERROR, "Format invalid");
|
||||
static const size_t s_aSizes[] = {3, 4, 1};
|
||||
return s_aSizes[(int)Format];
|
||||
}
|
||||
|
||||
size_t PixelSize() const
|
||||
{
|
||||
return PixelSize(m_Format);
|
||||
}
|
||||
|
||||
static EImageFormat ImageFormatFromInt(int Format)
|
||||
{
|
||||
if(Format < (int)FORMAT_RGB || Format > (int)FORMAT_SINGLE_COMPONENT)
|
||||
return FORMAT_ERROR;
|
||||
return (EImageFormat)Format;
|
||||
}
|
||||
};
|
||||
|
||||
/*
|
||||
|
@ -207,7 +232,7 @@ namespace client_data7 {
|
|||
struct CDataSprite; // NOLINT(bugprone-forward-declaration-namespace)
|
||||
}
|
||||
|
||||
typedef std::function<bool(uint32_t &Width, uint32_t &Height, uint32_t &Format, std::vector<uint8_t> &vDstData)> TGLBackendReadPresentedImageData;
|
||||
typedef std::function<bool(uint32_t &Width, uint32_t &Height, CImageInfo::EImageFormat &Format, std::vector<uint8_t> &vDstData)> TGLBackendReadPresentedImageData;
|
||||
|
||||
class IGraphics : public IInterface
|
||||
{
|
||||
|
@ -307,15 +332,15 @@ public:
|
|||
virtual bool IsImageFormatRGBA(const char *pFileName, CImageInfo &Img) = 0;
|
||||
|
||||
// destination and source buffer require to have the same width and height
|
||||
virtual void CopyTextureBufferSub(uint8_t *pDestBuffer, uint8_t *pSourceBuffer, size_t FullWidth, size_t FullHeight, size_t ColorChannelCount, size_t SubOffsetX, size_t SubOffsetY, size_t SubCopyWidth, size_t SubCopyHeight) = 0;
|
||||
virtual void CopyTextureBufferSub(uint8_t *pDestBuffer, uint8_t *pSourceBuffer, size_t FullWidth, size_t FullHeight, size_t PixelSize, size_t SubOffsetX, size_t SubOffsetY, size_t SubCopyWidth, size_t SubCopyHeight) = 0;
|
||||
|
||||
// destination width must be equal to the subwidth of the source
|
||||
virtual void CopyTextureFromTextureBufferSub(uint8_t *pDestBuffer, size_t DestWidth, size_t DestHeight, uint8_t *pSourceBuffer, size_t SrcWidth, size_t SrcHeight, size_t ColorChannelCount, size_t SrcSubOffsetX, size_t SrcSubOffsetY, size_t SrcSubCopyWidth, size_t SrcSubCopyHeight) = 0;
|
||||
virtual void CopyTextureFromTextureBufferSub(uint8_t *pDestBuffer, size_t DestWidth, size_t DestHeight, uint8_t *pSourceBuffer, size_t SrcWidth, size_t SrcHeight, size_t PixelSize, size_t SrcSubOffsetX, size_t SrcSubOffsetY, size_t SrcSubCopyWidth, size_t SrcSubCopyHeight) = 0;
|
||||
|
||||
virtual int UnloadTexture(CTextureHandle *pIndex) = 0;
|
||||
virtual CTextureHandle LoadTextureRaw(size_t Width, size_t Height, int Format, const void *pData, int StoreFormat, int Flags, const char *pTexName = nullptr) = 0;
|
||||
virtual int LoadTextureRawSub(CTextureHandle TextureID, int x, int y, size_t Width, size_t Height, int Format, const void *pData) = 0;
|
||||
virtual CTextureHandle LoadTexture(const char *pFilename, int StorageType, int StoreFormat, int Flags) = 0;
|
||||
virtual CTextureHandle LoadTextureRaw(size_t Width, size_t Height, CImageInfo::EImageFormat Format, const void *pData, int Flags, const char *pTexName = nullptr) = 0;
|
||||
virtual int LoadTextureRawSub(CTextureHandle TextureID, int x, int y, size_t Width, size_t Height, CImageInfo::EImageFormat Format, const void *pData) = 0;
|
||||
virtual CTextureHandle LoadTexture(const char *pFilename, int StorageType, int Flags = 0) = 0;
|
||||
virtual CTextureHandle InvalidTexture() const = 0;
|
||||
virtual void TextureSet(CTextureHandle Texture) = 0;
|
||||
void TextureClear() { TextureSet(CTextureHandle()); }
|
||||
|
|
|
@ -277,10 +277,14 @@ class IGameServer : public IInterface
|
|||
MACRO_INTERFACE("gameserver", 0)
|
||||
protected:
|
||||
public:
|
||||
virtual void OnInit() = 0;
|
||||
// `pPersistentData` may be null if this is the first time `IGameServer`
|
||||
// is instantiated.
|
||||
virtual void OnInit(const void *pPersistentData) = 0;
|
||||
virtual void OnConsoleInit() = 0;
|
||||
virtual void OnMapChange(char *pNewMapName, int MapNameSize) = 0;
|
||||
virtual void OnShutdown() = 0;
|
||||
// `pPersistentData` may be null if this is the last time `IGameServer`
|
||||
// is destroyed.
|
||||
virtual void OnShutdown(void *pPersistentData) = 0;
|
||||
|
||||
virtual void OnTick() = 0;
|
||||
virtual void OnPreSnap() = 0;
|
||||
|
@ -315,6 +319,7 @@ public:
|
|||
virtual bool IsClientReady(int ClientID) const = 0;
|
||||
virtual bool IsClientPlayer(int ClientID) const = 0;
|
||||
|
||||
virtual int PersistentDataSize() const = 0;
|
||||
virtual int PersistentClientDataSize() const = 0;
|
||||
|
||||
virtual CUuid GameUuid() const = 0;
|
||||
|
|