52 changes: 38 additions & 14 deletions data/languages/japanese.txt
Expand Up @@ -43,15 +43,9 @@ Address
All
== 全部

Are you sure that you want to delete the demo?
== デモを削除してもよろしいですか?

Are you sure that you want to quit?
== 終了してもよろしいですか?

Are you sure that you want to remove the player from your friends list?
== このプレイヤーを友達リストから削除してもよろしいですか?

Automatically record demos
== 自動的にデモを保存する

Expand Down Expand Up @@ -458,9 +452,6 @@ Try again
Type
== タイプ

Unable to delete the demo
== デモを削除できません。

Unable to rename the demo
== デモの名前を変更できません。

Expand Down Expand Up @@ -688,9 +679,6 @@ Checking for existing player with your name
Country / Region
== 国・地域

Destination file already exist
== 保存先のファイルはすでに存在します

Speed
== 速度

Expand Down Expand Up @@ -1286,7 +1274,10 @@ Getting game info
Requesting to join the game
==

Are you sure that you want to disconnect and switch to a different server?
Cancel
==

File '%s' already exists, do you want to overwrite it?
==

Join Tutorial Server
Expand Down Expand Up @@ -1322,6 +1313,15 @@ CHN
Refreshing...
==

Are you sure that you want to disconnect and switch to a different server?
==

Are you sure that you want to remove the player '%s' from your friends list?
==

Are you sure that you want to remove the clan '%s' from your friends list?
==

Play the current demo
==

Expand All @@ -1331,6 +1331,12 @@ Pause the current demo
Stop the current demo
==

Go back one tick
==

Go forward one tick
==

Slow down the demo
==

Expand All @@ -1346,18 +1352,30 @@ Mark the end of a cut
Export cut as a separate demo
==

Go back one marker
==

Go forward one marker
==

Toggle keyboard shortcuts
==

Loading demo files
==

Menu opened. Press Esc key again to close menu.
Are you sure that you want to delete the demo '%s'?
==

Unable to delete the demo '%s'
==

Loading ghost files
==

Menu opened. Press Esc key again to close menu.
==

Settings file
==

Expand Down Expand Up @@ -1432,6 +1450,12 @@ UI mouse sens.
Controller
==

Reset controls
==

Are you sure that you want to reset the controls to their defaults?
==

Windowed fullscreen
==

Expand Down
51 changes: 38 additions & 13 deletions data/languages/korean.txt
Expand Up @@ -12,6 +12,7 @@
# 2022-07-05 CHaBek
# 2022-08-17 CHaBek
# 2022-09-18 CHaBek
# 2022-10-20 CHaBek
##### /authors #####

##### translated strings #####
Expand Down Expand Up @@ -52,15 +53,9 @@ Address
All
== 모두

Are you sure that you want to delete the demo?
== 데모를 삭제하시겠습니까?

Are you sure that you want to quit?
== 종료하시겠습니까?

Are you sure that you want to remove the player from your friends list?
== 이 플레이어를 친구 목록에서 삭제하시겠습니까?

Automatically record demos
== 자동으로 데모 녹화

Expand Down Expand Up @@ -455,9 +450,6 @@ Try again
Type
== 종류

Unable to delete the demo
== 데모를 삭제할 수 없음

Unable to rename the demo
== 데모의 이름을 변경할 수 없음

Expand Down Expand Up @@ -703,9 +695,6 @@ Are you sure that you want to disconnect and switch to a different server?
Country / Region
== 국가 / 지역

Destination file already exist
== 대상 파일이 이미 존재함

Speed
== 속도

Expand Down Expand Up @@ -1613,7 +1602,43 @@ Freeze Laser Inner Color
== 동결 레이저 광선 색상

Menu opened. Press Esc key again to close menu.
==
== 메뉴가 열려 있습니다. Esc 키를 눌러 닫을 수 있습니다.

Set all to Rifle
== 소총 색상으로 통일

Cancel
==

File '%s' already exists, do you want to overwrite it?
==

Are you sure that you want to remove the player '%s' from your friends list?
==

Are you sure that you want to remove the clan '%s' from your friends list?
==

Go back one tick
==

Go forward one tick
==

Go back one marker
==

Go forward one marker
==

Are you sure that you want to delete the demo '%s'?
==

Unable to delete the demo '%s'
==

Reset controls
==

Are you sure that you want to reset the controls to their defaults?
==
80 changes: 52 additions & 28 deletions data/languages/kyrgyz.txt
Expand Up @@ -39,15 +39,9 @@ All
Alpha
== Тунук.

Are you sure that you want to delete the demo?
== Сиз чын эле демонун өчүрүлүшүн каалайсызбы?

Are you sure that you want to quit?
== Сиз чын эле оюндан чыгууну каалайсызбы?

Are you sure that you want to remove the player from your friends list?
== Сиз чын эле бул оюнчуну достор тизмеңизден өчүргүңүз келеби?

Automatically record demos
== Демону автоматтуу түрдө жаздыруу

Expand Down Expand Up @@ -544,9 +538,6 @@ Type:
UI Color
== Интерфейс түсү

Unable to delete the demo
== Демону өчүрүү мүмкүн эмес

Unable to rename the demo
== Демо атын өзгөртүү мүмкүн эмес

Expand Down Expand Up @@ -700,21 +691,6 @@ Reconnect in %d sec
Render demo
==

Replace video
==

File already exists, do you want to overwrite it?
==

Are you sure that you want to disconnect?
==

Disconnect Dummy
==

Are you sure that you want to disconnect your dummy?
==

Welcome to DDNet
==

Expand All @@ -739,13 +715,16 @@ Your nickname '%s' is already used (%d points). Do you still want to use it?
Checking for existing player with your name
==

Are you sure that you want to disconnect and switch to a different server?
Country / Region
==

Country / Region
Cancel
==

File '%s' already exists, do you want to overwrite it?
==

Destination file already exist
Replace video
==

Speed
Expand Down Expand Up @@ -817,6 +796,9 @@ Exclude
Refreshing...
==

Are you sure that you want to disconnect and switch to a different server?
==

Filter connecting players
==

Expand All @@ -835,12 +817,21 @@ Types
Leak IP
==

Are you sure that you want to remove the player '%s' from your friends list?
==

Are you sure that you want to remove the clan '%s' from your friends list?
==

Select a name
==

Please use a different name
==

File already exists, do you want to overwrite it?
==

Remove chat
==

Expand All @@ -853,6 +844,12 @@ Pause the current demo
Stop the current demo
==

Go back one tick
==

Go forward one tick
==

Slow down the demo
==

Expand All @@ -868,6 +865,12 @@ Mark the end of a cut
Export cut as a separate demo
==

Go back one marker
==

Go forward one marker
==

Toggle keyboard shortcuts
==

Expand Down Expand Up @@ -901,10 +904,16 @@ Fetch Info
Demos directory
==

Are you sure that you want to delete the demo '%s'?
==

Render
==

Menu opened. Press Esc key again to close menu.
Unable to delete the demo '%s'
==

Are you sure that you want to disconnect?
==

Connect Dummy
Expand All @@ -913,6 +922,12 @@ Connect Dummy
Connecting dummy
==

Disconnect Dummy
==

Are you sure that you want to disconnect your dummy?
==

Kill
==

Expand All @@ -937,6 +952,9 @@ Activate
Save
==

Menu opened. Press Esc key again to close menu.
==

Smooth Dynamic Camera
==

Expand Down Expand Up @@ -1107,6 +1125,12 @@ UI mouse sens.
Controller
==

Reset controls
==

Are you sure that you want to reset the controls to their defaults?
==

Dummy
==

Expand Down
52 changes: 38 additions & 14 deletions data/languages/norwegian.txt
Expand Up @@ -45,15 +45,9 @@ Address
All
== Alle

Are you sure that you want to delete the demo?
== Er du sikker på at du vil slette denne demoen?

Are you sure that you want to quit?
== Er du sikker på at du vil avslutte?

Are you sure that you want to remove the player from your friends list?
== Er du sikker på at du vil fjerne denne spilleren fra vennelisten?

Automatically record demos
== Spill inn demoer automatisk

Expand Down Expand Up @@ -463,9 +457,6 @@ Try again
Type
== Type

Unable to delete the demo
== Kunne ikke slette demoen

Unable to rename the demo
== Kunne ikke endre navn på demoen

Expand Down Expand Up @@ -666,9 +657,6 @@ It's recommended that you check the settings to adjust them to your liking befor
Please enter your nickname below.
== Skriv inn ditt ønskede kallenavn under.

Destination file already exist
== Destinasjonsfilen eksisterer allerede

Video name:
== Navn på video:

Expand Down Expand Up @@ -1249,7 +1237,10 @@ Getting game info
Requesting to join the game
==

Are you sure that you want to disconnect and switch to a different server?
Cancel
==

File '%s' already exists, do you want to overwrite it?
==

Join Tutorial Server
Expand Down Expand Up @@ -1288,9 +1279,18 @@ Getting server list from master server
Refreshing...
==

Are you sure that you want to disconnect and switch to a different server?
==

Leak IP
==

Are you sure that you want to remove the player '%s' from your friends list?
==

Are you sure that you want to remove the clan '%s' from your friends list?
==

Play the current demo
==

Expand All @@ -1300,6 +1300,12 @@ Pause the current demo
Stop the current demo
==

Go back one tick
==

Go forward one tick
==

Slow down the demo
==

Expand All @@ -1315,18 +1321,30 @@ Mark the end of a cut
Export cut as a separate demo
==

Go back one marker
==

Go forward one marker
==

Toggle keyboard shortcuts
==

Loading demo files
==

Menu opened. Press Esc key again to close menu.
Are you sure that you want to delete the demo '%s'?
==

Unable to delete the demo '%s'
==

Loading ghost files
==

Menu opened. Press Esc key again to close menu.
==

Settings file
==

Expand Down Expand Up @@ -1404,6 +1422,12 @@ UI mouse sens.
Controller
==

Reset controls
==

Are you sure that you want to reset the controls to their defaults?
==

Dummy
==

Expand Down
54 changes: 40 additions & 14 deletions data/languages/persian.txt
Expand Up @@ -27,12 +27,8 @@ Address
== ﺱﺭﺩﺁ
All
== ﻪﻤﻫ
Are you sure that you want to delete the demo?
== ؟ﺪﯿﻨﻛ ﻑﺬﺣ ﺍﺭ ﻮﻣﺩ ﻞﯾﺎﻓ ﺪﯿﻫﺍﻮﺧ ﯽﻣ ﺎﯾﺁ
Are you sure that you want to quit?
== ؟ﺪﯾﻮﺷ ﺝﺭﺎﺧ ﺪﯿﻫﺍﻮﺧ ﯽﻣ ﻪﻛ ﺪﯿﺘﺴﻫ ﻦﺌﻤﻄﻣ ﺎﯾﺁ
Are you sure that you want to remove the player from your friends list?
== ؟ﺪﯿﻨﻛ ﻑﺬﺣ ﺩﻮﺧ ﻥﺎﺘﺳﻭﺩ ﺖﺴﯿﻟ ﺯﺍ ﺍﺭ ﻦﻜﯾﺯﺎﺑ ﺪﯿﻫﺍﻮﺧ ﯽﻣ ﺎﯾﺁ
Automatically record demos
== ﺭﺎﻛﺩﻮﺧ ﺕﺭﻮﺻ ﻪﺑ ﻮﻣﺩ ﻂﺒﺿ
Automatically take game over screenshot
Expand Down Expand Up @@ -329,18 +325,12 @@ Yes
Country / Region
== ﻪﻘﻄﻨﻣ / ﺭﻮﺸﮐ

Unable to delete the demo
== ﺩﺭﺍﺪﻧ ﺩﻮﺟﻭ ﻮﻣﺩ ﻑﺬﺣ ﻥﺎﮑﻣﺍ

Unable to rename the demo
== ﺩﺭﺍﺪﻧ ﺩﻮﺟﻭ ﻮﻣﺩ ﻡﺎﻧ ﺮﯿﯿﻐﺗ ﻥﺎﮑﻣﺍ

New name:
== ﺪﯾﺪﺟ ﻢﺳﺍ

Destination file already exist
== ﺖﺳﺍ ﺩﻮﺟﻮﻣ ﻞﺒﻗ ﺯﺍ ﺪﺼﻘﻣ ﻞﯾﺎﻓ

Show chat
== ﺖﭼ ﻥﺩﺍﺩ ﻥﺎﺸﻧ

Expand Down Expand Up @@ -846,6 +836,9 @@ Personal best:
Uploading map data to GPU
==

The audio device couldn't be initialised.
==

Trying to determine UDP connectivity...
==

Expand All @@ -864,9 +857,6 @@ Getting game info
Requesting to join the game
==

The audio device couldn't be initialised.
==

Use k key to kill (restart), q to pause and watch other players. See settings for other key binds.
==

Expand All @@ -876,6 +866,12 @@ It's recommended that you check the settings to adjust them to your liking befor
Please enter your nickname below.
==

Cancel
==

File '%s' already exists, do you want to overwrite it?
==

Join Tutorial Server
==

Expand Down Expand Up @@ -915,6 +911,12 @@ CHN
Leak IP
==

Are you sure that you want to remove the player '%s' from your friends list?
==

Are you sure that you want to remove the clan '%s' from your friends list?
==

Play the current demo
==

Expand All @@ -924,6 +926,12 @@ Pause the current demo
Stop the current demo
==

Go back one tick
==

Go forward one tick
==

Slow down the demo
==

Expand All @@ -939,6 +947,12 @@ Mark the end of a cut
Export cut as a separate demo
==

Go back one marker
==

Go forward one marker
==

Toggle keyboard shortcuts
==

Expand All @@ -960,15 +974,21 @@ Netversion:
Fetch Info
==

Are you sure that you want to delete the demo '%s'?
==

Render
==

Menu opened. Press Esc key again to close menu.
Unable to delete the demo '%s'
==

Loading ghost files
==

Menu opened. Press Esc key again to close menu.
==

Settings file
==

Expand Down Expand Up @@ -1088,6 +1108,12 @@ UI mouse sens.
Controller
==

Reset controls
==

Are you sure that you want to reset the controls to their defaults?
==

Dummy
==

Expand Down
50 changes: 37 additions & 13 deletions data/languages/polish.txt
Expand Up @@ -47,15 +47,9 @@ Address
All
== Wszyscy

Are you sure that you want to delete the demo?
== Czy na pewno chcesz usunąć to demo?

Are you sure that you want to quit?
== Czy na pewno chcesz opuścić grę?

Are you sure that you want to remove the player from your friends list?
== Czy na pewno chcesz usunąć tego gracza z listy znajomych?

Automatically record demos
== Automatycznie nagrywaj dema

Expand Down Expand Up @@ -465,9 +459,6 @@ Try again
Type
== Typ

Unable to delete the demo
== Nie można usunąć dema

Unable to rename the demo
== Nie można zmienić nazwy dema

Expand Down Expand Up @@ -785,9 +776,6 @@ Enable replays
Automatically create statboard csv
== Automatycznie stwórz plik csv z tabelą wyników

Destination file already exist
== Plik docelowy już istnieje

Reload
== Przeładuj

Expand Down Expand Up @@ -1395,9 +1383,21 @@ Getting game info
Requesting to join the game
==

Cancel
==

File '%s' already exists, do you want to overwrite it?
==

Loading menu images
==

Are you sure that you want to remove the player '%s' from your friends list?
==

Are you sure that you want to remove the clan '%s' from your friends list?
==

Play the current demo
==

Expand All @@ -1407,6 +1407,12 @@ Pause the current demo
Stop the current demo
==

Go back one tick
==

Go forward one tick
==

Slow down the demo
==

Expand All @@ -1422,18 +1428,30 @@ Mark the end of a cut
Export cut as a separate demo
==

Go back one marker
==

Go forward one marker
==

Toggle keyboard shortcuts
==

Loading demo files
==

Menu opened. Press Esc key again to close menu.
Are you sure that you want to delete the demo '%s'?
==

Unable to delete the demo '%s'
==

Loading ghost files
==

Menu opened. Press Esc key again to close menu.
==

Loading skin files
==

Expand Down Expand Up @@ -1496,6 +1514,12 @@ UI mouse sens.
Controller
==

Reset controls
==

Are you sure that you want to reset the controls to their defaults?
==

Appearance
==

Expand Down
56 changes: 40 additions & 16 deletions data/languages/portuguese.txt
Expand Up @@ -47,15 +47,9 @@ Address
All
== Todos

Are you sure that you want to delete the demo?
== Tens a certeza que queres apagar a demo?

Are you sure that you want to quit?
== Queres mesmo sair?

Are you sure that you want to remove the player from your friends list?
== Queres mesmo apagar o jogador da tua lista de amigos?

Automatically record demos
== Gravar demos automaticamente

Expand Down Expand Up @@ -483,9 +477,6 @@ Try again
Type
== Tipo

Unable to delete the demo
== Impossível eliminar a demo

Unable to rename the demo
== Impossivel renomear a demo

Expand Down Expand Up @@ -852,9 +843,6 @@ Are you sure that you want to disconnect and switch to a different server?
Country / Region
== País / Região

Destination file already exist
== Ficheiro de destino já existe

Speed
== Velocidade

Expand Down Expand Up @@ -1052,15 +1040,21 @@ Requesting to join the game
Render demo
==

Replace video
==

DDraceNetwork is a cooperative online game where the goal is for you and your group of tees to reach the finish line of the map. As a newcomer you should start on Novice servers, which host the easiest maps. Consider the ping to choose a server close to you.
==

Use k key to kill (restart), q to pause and watch other players. See settings for other key binds.
==

Cancel
==

File '%s' already exists, do you want to overwrite it?
==

Replace video
==

Join Tutorial Server
==

Expand Down Expand Up @@ -1109,6 +1103,12 @@ Unfinished map
Leak IP
==

Are you sure that you want to remove the player '%s' from your friends list?
==

Are you sure that you want to remove the clan '%s' from your friends list?
==

Play the current demo
==

Expand All @@ -1118,6 +1118,12 @@ Pause the current demo
Stop the current demo
==

Go back one tick
==

Go forward one tick
==

Slow down the demo
==

Expand All @@ -1133,6 +1139,12 @@ Mark the end of a cut
Export cut as a separate demo
==

Go back one marker
==

Go forward one marker
==

Toggle keyboard shortcuts
==

Expand Down Expand Up @@ -1160,10 +1172,13 @@ Fetch Info
Demos directory
==

Are you sure that you want to delete the demo '%s'?
==

Render
==

Menu opened. Press Esc key again to close menu.
Unable to delete the demo '%s'
==

Kill
Expand All @@ -1175,6 +1190,9 @@ Pause
Loading ghost files
==

Menu opened. Press Esc key again to close menu.
==

Smooth Dynamic Camera
==

Expand Down Expand Up @@ -1312,6 +1330,12 @@ UI mouse sens.
Controller
==

Reset controls
==

Are you sure that you want to reset the controls to their defaults?
==

Windowed fullscreen
==

Expand Down
80 changes: 52 additions & 28 deletions data/languages/romanian.txt
Expand Up @@ -49,15 +49,9 @@ Address
All
== Toți

Are you sure that you want to delete the demo?
== Sigur vrei să ștergi demo-ul?

Are you sure that you want to quit?
== Sigur vrei să ieși?

Are you sure that you want to remove the player from your friends list?
== Sigur vrei să ștergi jucătorul din lista ta de prieteni?

Automatically record demos
== Înregistrează automat demo-uri

Expand Down Expand Up @@ -473,9 +467,6 @@ Try again
Type
== Tip

Unable to delete the demo
== Nu pot șterge demo-ul

Unable to rename the demo
== Nu pot redenumi demo-ul

Expand Down Expand Up @@ -715,21 +706,6 @@ Reconnect in %d sec
Render demo
==

Replace video
==

File already exists, do you want to overwrite it?
==

Are you sure that you want to disconnect?
==

Disconnect Dummy
==

Are you sure that you want to disconnect your dummy?
==

Welcome to DDNet
==

Expand All @@ -754,13 +730,16 @@ Your nickname '%s' is already used (%d points). Do you still want to use it?
Checking for existing player with your name
==

Are you sure that you want to disconnect and switch to a different server?
Country / Region
==

Country / Region
Cancel
==

File '%s' already exists, do you want to overwrite it?
==

Destination file already exist
Replace video
==

Speed
Expand Down Expand Up @@ -832,6 +811,9 @@ Exclude
Refreshing...
==

Are you sure that you want to disconnect and switch to a different server?
==

Filter connecting players
==

Expand All @@ -850,12 +832,21 @@ Types
Leak IP
==

Are you sure that you want to remove the player '%s' from your friends list?
==

Are you sure that you want to remove the clan '%s' from your friends list?
==

Select a name
==

Please use a different name
==

File already exists, do you want to overwrite it?
==

Remove chat
==

Expand All @@ -868,6 +859,12 @@ Pause the current demo
Stop the current demo
==

Go back one tick
==

Go forward one tick
==

Slow down the demo
==

Expand All @@ -883,6 +880,12 @@ Mark the end of a cut
Export cut as a separate demo
==

Go back one marker
==

Go forward one marker
==

Toggle keyboard shortcuts
==

Expand Down Expand Up @@ -916,10 +919,16 @@ Fetch Info
Demos directory
==

Are you sure that you want to delete the demo '%s'?
==

Render
==

Menu opened. Press Esc key again to close menu.
Unable to delete the demo '%s'
==

Are you sure that you want to disconnect?
==

Connect Dummy
Expand All @@ -928,6 +937,12 @@ Connect Dummy
Connecting dummy
==

Disconnect Dummy
==

Are you sure that you want to disconnect your dummy?
==

Kill
==

Expand All @@ -952,6 +967,9 @@ Activate
Save
==

Menu opened. Press Esc key again to close menu.
==

Smooth Dynamic Camera
==

Expand Down Expand Up @@ -1122,6 +1140,12 @@ UI mouse sens.
Controller
==

Reset controls
==

Are you sure that you want to reset the controls to their defaults?
==

Dummy
==

Expand Down
53 changes: 39 additions & 14 deletions data/languages/russian.txt
Expand Up @@ -13,6 +13,7 @@
# gerdoe 2020-09-17 22:49:22
# Vy0x2 2021-06-08 15:48:25
# Anime.pdf 2021-06-13 13:08:50
# banan 2022-06-12 11:36:50
##### /authors #####

##### translated strings #####
Expand Down Expand Up @@ -53,15 +54,9 @@ Address
All
== Все

Are you sure that you want to delete the demo?
== Вы уверены, что хотите удалить демо?

Are you sure that you want to quit?
== Вы действительно желаете выйти?

Are you sure that you want to remove the player from your friends list?
== Вы уверены, что хотите удалить игрока из друзей?

Automatically record demos
== Записывать демо

Expand Down Expand Up @@ -483,9 +478,6 @@ Try again
Type
== Тип

Unable to delete the demo
== Невозможно удалить демо

Unable to rename the demo
== Невозможно переименовать демо

Expand Down Expand Up @@ -798,9 +790,6 @@ It's recommended that you check the settings to adjust them to your liking befor
Please enter your nickname below.
== Пожалуйста, ниже укажите ваш псевдоним.

Destination file already exist
== Конечный файл уже существует

Video name:
== Название видео:

Expand Down Expand Up @@ -1612,7 +1601,43 @@ Freeze Laser Inner Color
== Цвет фриз лазера

Menu opened. Press Esc key again to close menu.
==
== Меню открыто. Нажмите Esc для закрытия меню

Set all to Rifle
==
== Цвет всех как у лазера

Cancel
== Отмена

File '%s' already exists, do you want to overwrite it?
== файл '%s' уже существует, вы уверены что хотите его перезаписать?

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' из списка ваших друзей?

Go back one tick
== Отмотать назад на один тик

Go forward one tick
== Отмотать вперед на один тик

Go back one marker
== Отмотать назад на один маркер

Go forward one marker
== Отмотать вперед на один маркер

Are you sure that you want to delete the demo '%s'?
== Вы уверены что хотите удалить демо '%s'?

Unable to delete the demo '%s'
== Невозможно удалить демо '%s'

Reset controls
== Сброс настроек

Are you sure that you want to reset the controls to their defaults?
== Вы уверены что хотите сбросить настройки на их стандартные значения?
48 changes: 36 additions & 12 deletions data/languages/serbian.txt
Expand Up @@ -47,15 +47,9 @@ Address
All
== Svi

Are you sure that you want to delete the demo?
== Da li ste sigurni da želite da izbrišete video snimak?

Are you sure that you want to quit?
== Da li ste sigurni da želite da izađete?

Are you sure that you want to remove the player from your friends list?
== Da li si siguran da hoćeš izbrisati igrača iz liste prijatelja?

Automatically record demos
== Automatski snimi video

Expand Down Expand Up @@ -464,9 +458,6 @@ Try again
Type
== Tip

Unable to delete the demo
== Snimak nije moguće obrisati

Unable to rename the demo
== Snimak nije moguće preimenovati

Expand Down Expand Up @@ -697,9 +688,6 @@ Please enter your nickname below.
Country / Region
== Zemlja / region

Destination file already exist
== Datoteka odredišta već postoji

Speed
== Brzina

Expand Down Expand Up @@ -1550,9 +1538,21 @@ Loading sound files
Initializing components
==

Cancel
==

File '%s' already exists, do you want to overwrite it?
==

transmits your player name to info.ddnet.org
==

Are you sure that you want to remove the player '%s' from your friends list?
==

Are you sure that you want to remove the clan '%s' from your friends list?
==

Play the current demo
==

Expand All @@ -1562,6 +1562,12 @@ Pause the current demo
Stop the current demo
==

Go back one tick
==

Go forward one tick
==

Slow down the demo
==

Expand All @@ -1577,12 +1583,30 @@ Mark the end of a cut
Export cut as a separate demo
==

Go back one marker
==

Go forward one marker
==

Toggle keyboard shortcuts
==

Are you sure that you want to delete the demo '%s'?
==

Unable to delete the demo '%s'
==

Menu opened. Press Esc key again to close menu.
==

Reset controls
==

Are you sure that you want to reset the controls to their defaults?
==

Weapons
==

Expand Down
48 changes: 36 additions & 12 deletions data/languages/serbian_cyrillic.txt
Expand Up @@ -43,15 +43,9 @@ Address
All
== Сви

Are you sure that you want to delete the demo?
== Да ли сте сигурни да желите да избришете видео снимак?

Are you sure that you want to quit?
== Да ли сте сигурни да желите да изађете?

Are you sure that you want to remove the player from your friends list?
== Да ли си сигуран да хоћеш избрисати играча из листе пријатеља?

Automatically record demos
== Аутоматски сними видео

Expand Down Expand Up @@ -460,9 +454,6 @@ Try again
Type
== Тип

Unable to delete the demo
== Снимак није могуће обрисати

Unable to rename the demo
== Снимак није могуће преименовати

Expand Down Expand Up @@ -693,9 +684,6 @@ Please enter your nickname below.
Country / Region
== Земља / регион

Destination file already exist
== Датотека одредишта већ постоји

Speed
== Брзина

Expand Down Expand Up @@ -1549,6 +1537,18 @@ Loading sound files
Initializing components
==

Cancel
==

File '%s' already exists, do you want to overwrite it?
==

Are you sure that you want to remove the player '%s' from your friends list?
==

Are you sure that you want to remove the clan '%s' from your friends list?
==

Play the current demo
==

Expand All @@ -1558,6 +1558,12 @@ Pause the current demo
Stop the current demo
==

Go back one tick
==

Go forward one tick
==

Slow down the demo
==

Expand All @@ -1573,12 +1579,30 @@ Mark the end of a cut
Export cut as a separate demo
==

Go back one marker
==

Go forward one marker
==

Toggle keyboard shortcuts
==

Are you sure that you want to delete the demo '%s'?
==

Unable to delete the demo '%s'
==

Menu opened. Press Esc key again to close menu.
==

Reset controls
==

Are you sure that you want to reset the controls to their defaults?
==

Weapons
==

Expand Down
54 changes: 40 additions & 14 deletions data/languages/simplified_chinese.txt
Expand Up @@ -28,6 +28,8 @@
# 2022-07-04 cheeser0613
# 2022-08-08 cheeser0613
# 2022-09-17 cheeser0613
# 2022-10-24 cheeser0613
# 2022-12-11 cheeser0613
##### /authors #####

##### translated strings #####
Expand Down Expand Up @@ -68,15 +70,9 @@ Address
All
== 全体

Are you sure that you want to delete the demo?
== 你确定要删除这个回放吗?

Are you sure that you want to quit?
== 你确定要退出吗?

Are you sure that you want to remove the player from your friends list?
== 你确定要把这个玩家从好友列表中删除吗?

Automatically record demos
== 自动录制回放

Expand Down Expand Up @@ -528,9 +524,6 @@ Try again
Type
== 模式

Unable to delete the demo
== 无法删除这个回放

Unable to rename the demo
== 无法重命名这个回放

Expand Down Expand Up @@ -1068,9 +1061,6 @@ Personal best:
Render demo
== 渲染回放

Destination file already exist
== 目标文件已经存在

Replace video
== 替换视频

Expand Down Expand Up @@ -1633,7 +1623,43 @@ Freeze Laser Inner Color
== 冻结激光实心颜色

Menu opened. Press Esc key again to close menu.
==
== 菜单已打开,再次点击 Esc 以关闭

Set all to Rifle
==
== 统一为激光枪颜色

Cancel
== 取消

File '%s' already exists, do you want to overwrite it?
== 文件名 "%s" 已经存在,是否要覆盖该文件?

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" 从你的好友列表中删除?

Go back one tick
== 上一个 tick

Go forward one tick
== 下一个 tick

Go back one marker
== 返回上一个标记

Go forward one marker
== 跳至下一个标记

Are you sure that you want to delete the demo '%s'?
== 你确定要删除回放文件 "%s" ?

Unable to delete the demo '%s'
== 无法删除回放文件 "%s"

Reset controls
== 恢复默认设置

Are you sure that you want to reset the controls to their defaults?
== 你确定要将当前的控制恢复至默认设置?
80 changes: 52 additions & 28 deletions data/languages/slovak.txt
Expand Up @@ -43,15 +43,9 @@ Address
All
== Všetkým

Are you sure that you want to delete the demo?
== Určite chcete vymazať tento záznam?

Are you sure that you want to quit?
== Ukončiť hru?

Are you sure that you want to remove the player from your friends list?
== Ste si istí, že chcete tohto hráča odstrániť zo zoznamu priateľov?

Automatically record demos
== Automaticky nahrávať záznamy

Expand Down Expand Up @@ -461,9 +455,6 @@ Try again
Type
== Typ

Unable to delete the demo
== Nemôžem vymazať záznam

Unable to rename the demo
== Nahrávka sa nedá premenovať

Expand Down Expand Up @@ -706,21 +697,6 @@ Reconnect in %d sec
Render demo
==

Replace video
==

File already exists, do you want to overwrite it?
==

Are you sure that you want to disconnect?
==

Disconnect Dummy
==

Are you sure that you want to disconnect your dummy?
==

Welcome to DDNet
==

Expand All @@ -745,13 +721,16 @@ Your nickname '%s' is already used (%d points). Do you still want to use it?
Checking for existing player with your name
==

Are you sure that you want to disconnect and switch to a different server?
Country / Region
==

Country / Region
Cancel
==

File '%s' already exists, do you want to overwrite it?
==

Destination file already exist
Replace video
==

Speed
Expand Down Expand Up @@ -823,6 +802,9 @@ Exclude
Refreshing...
==

Are you sure that you want to disconnect and switch to a different server?
==

Filter connecting players
==

Expand All @@ -841,12 +823,21 @@ Types
Leak IP
==

Are you sure that you want to remove the player '%s' from your friends list?
==

Are you sure that you want to remove the clan '%s' from your friends list?
==

Select a name
==

Please use a different name
==

File already exists, do you want to overwrite it?
==

Remove chat
==

Expand All @@ -859,6 +850,12 @@ Pause the current demo
Stop the current demo
==

Go back one tick
==

Go forward one tick
==

Slow down the demo
==

Expand All @@ -874,6 +871,12 @@ Mark the end of a cut
Export cut as a separate demo
==

Go back one marker
==

Go forward one marker
==

Toggle keyboard shortcuts
==

Expand Down Expand Up @@ -907,10 +910,16 @@ Fetch Info
Demos directory
==

Are you sure that you want to delete the demo '%s'?
==

Render
==

Menu opened. Press Esc key again to close menu.
Unable to delete the demo '%s'
==

Are you sure that you want to disconnect?
==

Connect Dummy
Expand All @@ -919,6 +928,12 @@ Connect Dummy
Connecting dummy
==

Disconnect Dummy
==

Are you sure that you want to disconnect your dummy?
==

Kill
==

Expand All @@ -943,6 +958,9 @@ Activate
Save
==

Menu opened. Press Esc key again to close menu.
==

Smooth Dynamic Camera
==

Expand Down Expand Up @@ -1113,6 +1131,12 @@ UI mouse sens.
Controller
==

Reset controls
==

Are you sure that you want to reset the controls to their defaults?
==

Dummy
==

Expand Down
48 changes: 36 additions & 12 deletions data/languages/spanish.txt
Expand Up @@ -58,15 +58,9 @@ Address
All
== Todos

Are you sure that you want to delete the demo?
== ¿Estás seguro de que quieres eliminar la demo?

Are you sure that you want to quit?
== ¿Estás seguro de que quieres salir?

Are you sure that you want to remove the player from your friends list?
== ¿Estás seguro de que quieres eliminar a este jugador de la lista de amigos?

Automatically record demos
== Grabar demos automáticamente

Expand Down Expand Up @@ -482,9 +476,6 @@ Try again
Type
== Tipo

Unable to delete the demo
== No se pudo eliminar la demo

Unable to rename the demo
== No se pudo renombrar la demo

Expand Down Expand Up @@ -682,9 +673,6 @@ It's recommended that you check the settings to adjust them to your liking befor
Please enter your nickname below.
== Por favor, introduzca su apodo a continuación.

Destination file already exist
== El archivo de destino ya existe

Video name:
== Nombre del video:

Expand Down Expand Up @@ -1623,3 +1611,39 @@ Loading race demo files

Loading sound files
== Cargando archivos de sonido

Cancel
==

File '%s' already exists, do you want to overwrite it?
==

Are you sure that you want to remove the player '%s' from your friends list?
==

Are you sure that you want to remove the clan '%s' from your friends list?
==

Go back one tick
==

Go forward one tick
==

Go back one marker
==

Go forward one marker
==

Are you sure that you want to delete the demo '%s'?
==

Unable to delete the demo '%s'
==

Reset controls
==

Are you sure that you want to reset the controls to their defaults?
==
50 changes: 37 additions & 13 deletions data/languages/swedish.txt
Expand Up @@ -47,15 +47,9 @@ Address
All
== Alla

Are you sure that you want to delete the demo?
== Är du säker på att du vill ta bort detta demo?

Are you sure that you want to quit?
== Är du säker på att du vill avsluta?

Are you sure that you want to remove the player from your friends list?
== Är du säker på att du vill ta bort denna spelaren från din kompislista?

Automatically record demos
== Spela in demon automatiskt

Expand Down Expand Up @@ -465,9 +459,6 @@ Try again
Type
== Typ

Unable to delete the demo
== Kunde inte ta bort demot

Unable to rename the demo
== Kunde inte byta namn på demot

Expand Down Expand Up @@ -981,9 +972,6 @@ Skin prefix
Please use a different name
== Använd ett annat namn

Destination file already exist
== Destinations fil finns redan

Game paused
== Spel pausad

Expand Down Expand Up @@ -1336,6 +1324,12 @@ Getting game info
Requesting to join the game
==

Cancel
==

File '%s' already exists, do you want to overwrite it?
==

Join Tutorial Server
==

Expand All @@ -1345,6 +1339,12 @@ Skip Tutorial
Loading menu images
==

Are you sure that you want to remove the player '%s' from your friends list?
==

Are you sure that you want to remove the clan '%s' from your friends list?
==

Play the current demo
==

Expand All @@ -1354,6 +1354,12 @@ Pause the current demo
Stop the current demo
==

Go back one tick
==

Go forward one tick
==

Slow down the demo
==

Expand All @@ -1369,18 +1375,30 @@ Mark the end of a cut
Export cut as a separate demo
==

Go back one marker
==

Go forward one marker
==

Toggle keyboard shortcuts
==

Loading demo files
==

Menu opened. Press Esc key again to close menu.
Are you sure that you want to delete the demo '%s'?
==

Unable to delete the demo '%s'
==

Loading ghost files
==

Menu opened. Press Esc key again to close menu.
==

Loading skin files
==

Expand Down Expand Up @@ -1449,6 +1467,12 @@ UI mouse sens.
Controller
==

Reset controls
==

Are you sure that you want to reset the controls to their defaults?
==

Allows maps to render with more detail
==

Expand Down
62 changes: 44 additions & 18 deletions data/languages/traditional_chinese.txt
Expand Up @@ -17,6 +17,8 @@
# 2022-06-27 cheeser0613
# 2022-08-08 cheeser0613
# 2022-09-17 cheeser0613
# 2022-10-24 cheeser0613
# 2022-12-11 cheeser0613
##### /authors #####

##### translated strings #####
Expand Down Expand Up @@ -57,15 +59,9 @@ Address
All
== 全部

Are you sure that you want to delete the demo?
== 你確定要刪除這個回放嗎?

Are you sure that you want to quit?
== 你確定要退出嗎?

Are you sure that you want to remove the player from your friends list?
== 你確定要把這個玩家從好友列表中刪除嗎?

Automatically record demos
== 自動錄製回放

Expand Down Expand Up @@ -503,7 +499,7 @@ The server is running a non-standard tuning on a pure game type.
== 此伺服器執行著經過調整的非標準遊戲模式。

There's an unsaved map in the editor, you might want to save it before you quit the game.
== 編輯器中的地圖尚未儲存,建議您在退出遊戲之前返回編輯器進行儲存
== 編輯器中的地圖尚未儲存,建議你在退出遊戲之前返回編輯器進行儲存

Time limit
== 規定時限
Expand All @@ -517,9 +513,6 @@ Try again
Type
== 模式

Unable to delete the demo
== 無法刪除這個回放

Unable to rename the demo
== 無法重新命名這個回放

Expand Down Expand Up @@ -914,7 +907,7 @@ Show DDNet map finishes in server browser
== 在伺服器瀏覽器中顯示已完成的 DDNet 地圖

transmits your player name to info.ddnet.org
== 將會發送您的玩家名稱到 info.ddnet.org
== 將會發送你的玩家名稱到 info.ddnet.org

Reload
== 重新整理
Expand Down Expand Up @@ -1057,9 +1050,6 @@ Personal best:
Render demo
== 渲染回放

Destination file already exist
== 目標檔案已經存在

Replace video
== 替換影片

Expand Down Expand Up @@ -1137,7 +1127,7 @@ Existing Player
== 玩家已存在

Your nickname '%s' is already used (%d points). Do you still want to use it?
== 你使用的暱稱"%s"在DDNet中有%d分的記錄,這可能代表這個暱稱已經被其他人使用過。確認要使用這個名字嗎?
== 你使用的暱稱 "%s" 在DDNet中有%d分的記錄,這可能代表這個暱稱已經被其他人使用過。確認要使用這個名字嗎?

Checking for existing player with your name
== 正在查詢該暱稱的DDNet記錄
Expand Down Expand Up @@ -1269,7 +1259,7 @@ https://ddnet.org/discord
== https://ddnet.org/discord

Are you sure that you want to disconnect and switch to a different server?
== 您確定要中斷此伺服器并嘗試加入其他伺服器嗎
== 你確定要中斷此伺服器并嘗試加入其他伺服器嗎

Refreshing...
== 正在重整...
Expand Down Expand Up @@ -1622,7 +1612,43 @@ Freeze Laser Inner Color
== 凍結鐳射實心顔色

Menu opened. Press Esc key again to close menu.
==
== 菜單已打開,再次點擊 Esc 以關閉

Set all to Rifle
==
== 統一為鐳射槍顔色

Cancel
== 取消

File '%s' already exists, do you want to overwrite it?
== 檔案名 "%s" 已經存在,是否要取代該檔案?

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" 從你的好友列表中移除?

Go back one tick
== 上一個 tick

Go forward one tick
== 下一個 tick

Go back one marker
== 返回上一個標記

Go forward one marker
== 跳至下一個標記

Are you sure that you want to delete the demo '%s'?
== 你確定要刪除回放檔案 "%s" ?

Unable to delete the demo '%s'
== 無法刪除回放檔案 "%s"

Reset controls
== 恢復預設設定

Are you sure that you want to reset the controls to their defaults?
== 你確定要將當前的控制恢復至預設設定
54 changes: 39 additions & 15 deletions data/languages/turkish.txt
Expand Up @@ -48,15 +48,9 @@ Address
All
== Hepsi

Are you sure that you want to delete the demo?
== Demo dosyasını silmek istediğinize emin misiniz?

Are you sure that you want to quit?
== Çıkmak istediğinize emin misiniz?

Are you sure that you want to remove the player from your friends list?
== Bu oyuncuyu arkadaş listenizden kaldırmak istediğinize emin misiniz?

Automatically record demos
== Demoları otomatik olarak kaydet

Expand Down Expand Up @@ -463,9 +457,6 @@ Try again
Type
== Tür

Unable to delete the demo
== Demo silinemiyor

Unable to rename the demo
== Demonun ismi değiştirilemiyor

Expand Down Expand Up @@ -669,9 +660,6 @@ It's recommended that you check the settings to adjust them to your liking befor
Please enter your nickname below.
== Lütfen takma adı girin.

Destination file already exist
== Dosya hali hazırda mevcut

Video name:
== Video ismi:

Expand Down Expand Up @@ -1158,10 +1146,13 @@ Your nickname '%s' is already used (%d points). Do you still want to use it?
Checking for existing player with your name
==

Are you sure that you want to disconnect and switch to a different server?
Country / Region
==

Country / Region
Cancel
==

File '%s' already exists, do you want to overwrite it?
==

Speed
Expand Down Expand Up @@ -1218,9 +1209,18 @@ Getting server list from master server
Refreshing...
==

Are you sure that you want to disconnect and switch to a different server?
==

Leak IP
==

Are you sure that you want to remove the player '%s' from your friends list?
==

Are you sure that you want to remove the clan '%s' from your friends list?
==

Play the current demo
==

Expand All @@ -1230,6 +1230,12 @@ Pause the current demo
Stop the current demo
==

Go back one tick
==

Go forward one tick
==

Slow down the demo
==

Expand All @@ -1245,6 +1251,12 @@ Mark the end of a cut
Export cut as a separate demo
==

Go back one marker
==

Go forward one marker
==

Toggle keyboard shortcuts
==

Expand All @@ -1254,12 +1266,18 @@ Loading demo files
Demos directory
==

Menu opened. Press Esc key again to close menu.
Are you sure that you want to delete the demo '%s'?
==

Unable to delete the demo '%s'
==

Loading ghost files
==

Menu opened. Press Esc key again to close menu.
==

Smooth Dynamic Camera
==

Expand Down Expand Up @@ -1355,6 +1373,12 @@ UI mouse sens.
Controller
==

Reset controls
==

Are you sure that you want to reset the controls to their defaults?
==

Dummy
==

Expand Down
50 changes: 37 additions & 13 deletions data/languages/ukrainian.txt
Expand Up @@ -19,9 +19,6 @@ Address
All
== Всі

Are you sure that you want to delete the demo?
== Ви впевнені, що хочете видалити демо?

Are you sure that you want to quit?
== Ви дійсно бажаєте вийти?

Expand Down Expand Up @@ -481,9 +478,6 @@ File already exists, do you want to overwrite it?
Remove friend
== Видалити друга

Are you sure that you want to remove the player from your friends list?
== Ви впевнені, що хочете видалити гравця зі свого списку друзів?

Sound error
== Звукова помилка

Expand Down Expand Up @@ -529,18 +523,12 @@ Quit anyway?
%i seconds left
== Залишилось %i секунд

Unable to delete the demo
== Неможливо видалити демо

Unable to rename the demo
== Неможливо перейменувати демо

New name:
== Нове ім’я

Destination file already exist
== Файл призначення вже існує

Show ingame HUD
== Показувати HUD

Expand Down Expand Up @@ -1319,6 +1307,12 @@ Getting game info
Requesting to join the game
==

Cancel
==

File '%s' already exists, do you want to overwrite it?
==

Join Tutorial Server
==

Expand All @@ -1328,6 +1322,12 @@ Skip Tutorial
Loading menu images
==

Are you sure that you want to remove the player '%s' from your friends list?
==

Are you sure that you want to remove the clan '%s' from your friends list?
==

Play the current demo
==

Expand All @@ -1337,6 +1337,12 @@ Pause the current demo
Stop the current demo
==

Go back one tick
==

Go forward one tick
==

Slow down the demo
==

Expand All @@ -1352,18 +1358,30 @@ Mark the end of a cut
Export cut as a separate demo
==

Go back one marker
==

Go forward one marker
==

Toggle keyboard shortcuts
==

Loading demo files
==

Menu opened. Press Esc key again to close menu.
Are you sure that you want to delete the demo '%s'?
==

Unable to delete the demo '%s'
==

Loading ghost files
==

Menu opened. Press Esc key again to close menu.
==

Settings file
==

Expand Down Expand Up @@ -1438,6 +1456,12 @@ UI mouse sens.
Controller
==

Reset controls
==

Are you sure that you want to reset the controls to their defaults?
==

Windowed fullscreen
==

Expand Down
2 changes: 1 addition & 1 deletion data/shader/text.frag
Expand Up @@ -17,7 +17,7 @@ void main()
float OutlineBlend = (1.0 - textColor.a);

// since the outline is always black, or even if it has decent colors, it can be just added to the actual color
// without loosing any or too much color
// without losing any or too much color

// lerp isn't commutative, so add the color the fragment looses by lerping
// this reduces the chance of false color calculation if the text is transparent
Expand Down
2 changes: 1 addition & 1 deletion data/shader/vulkan/text.frag
Expand Up @@ -23,7 +23,7 @@ void main()
float OutlineBlend = (1.0 - textColor.a);

// since the outline is always black, or even if it has decent colors, it can be just added to the actual color
// without loosing any or too much color
// without losing any or too much color

// lerp isn't commutative, so add the color the fragment looses by lerping
// this reduces the chance of false color calculation if the text is transparent
Expand Down
2 changes: 1 addition & 1 deletion datasrc/content.py
Expand Up @@ -582,7 +582,7 @@ def FileList(fmt, num):
weapon.offsetx.Set(32)
weapon.offsety.Set(4)
# the number after the plus sign is the sprite scale, which is calculated for all sprites ( w / sqrt(w² * h²) ) of the additionally added x offset, which is added now,
# since the muzzle image is 32 pixels bigger, devided by 2, because a sprite's position is always at the center of the sprite image itself
# since the muzzle image is 32 pixels bigger, divided by 2, because a sprite's position is always at the center of the sprite image itself
# => the offset added, bcs the sprite is bigger now, but should not be shifted to the left
# => 96 / sqrt(64×64+96×96) (the original sprite scale)
# => 64 × original sprite scale (the actual size of the sprite ingame see weapon.visual_size above)
Expand Down
2 changes: 1 addition & 1 deletion datasrc/network.py
Expand Up @@ -26,7 +26,7 @@
]
GameInfoFlags2 = [
"ALLOW_X_SKINS", "GAMETYPE_CITY", "GAMETYPE_FDDRACE", "ENTITIES_FDDRACE", "HUD_HEALTH_ARMOR", "HUD_AMMO",
"HUD_DDRACE", "NO_WEAK_HOOK_AND_BOUNCE"
"HUD_DDRACE", "NO_WEAK_HOOK"
]
ExPlayerFlags = ["AFK", "PAUSED", "SPEC"]
ProjectileFlags = [f"CLIENTID_BIT{i}" for i in range(8)] + [
Expand Down
6 changes: 6 additions & 0 deletions deny.toml
@@ -0,0 +1,6 @@
[licenses]
allow = [
"Apache-2.0",
"MIT",
"Zlib"
]
2 changes: 1 addition & 1 deletion other/emscripten/minimal.html
Expand Up @@ -17,7 +17,7 @@
</style>
</head>
<body>
<canvas class="game" id="canvas" widht="100%" height="100%" oncontextmenu="event.preventDefault()"></canvas>
<canvas class="game" id="canvas" width="100%" height="100%" oncontextmenu="event.preventDefault()"></canvas>
<p id="output"></p>
<script>
var Module = {
Expand Down
1 change: 1 addition & 0 deletions other/vim/ftdetect/ddnet-cfg.vim
@@ -0,0 +1 @@
autocmd BufRead,BufNewFile settings_ddnet.cfg set filetype=ddnet-cfg
25 changes: 25 additions & 0 deletions other/vim/syntax/ddnet-cfg.vim
@@ -0,0 +1,25 @@
" Vim syntax file
" Language: ddnet config files (https://github.com/ddnet/ddnet)

if exists("b:current_syntax")
finish
endif

syntax match settingName "^\w*"

syntax match value "\s\w*"
syntax match escapeQuote "\\\""
syntax match number "\s[0-9]\+"
syntax match ip "\s\d\+\.\d\+\.\d\+\.\d\+\(:\d\+\)\="

syntax region string start='"' end='"' contains=escapeQuote

hi def link settingName Identifier

hi def link value Constant
hi def link ip Constant
hi def link string String
hi def link number Number
hi def link escapeQuote SpecialChar

let b:current_syntax = "ddnet-cfg"
14 changes: 14 additions & 0 deletions other/vscode/README.md
@@ -0,0 +1,14 @@
Requirements:
- clang
- clangd
- clang-format-10, needs to be in PATH (linux: https://aur.archlinux.org/packages/clang-format-static-bin)
- clang-tidy
- lldb
- cmake
- rustup (for the rust extension)
Optional:
- mold (linker), needs to be in PATH
- ninja

Inside vscode press `Ctrl+Shift+P` and type `Scan for kits`, press enter.
Now press press `Ctrl+Shift+P` and type `Select a kit`, choose one with `[DDNet]` as prefix for best defaults.
20 changes: 20 additions & 0 deletions other/vscode/ddnet-cmake-tools-kits.json
@@ -0,0 +1,20 @@
[
{
"name": "[DDNet] (recommended) Clang + mold + ninja for fastest compiling (and dev modus)",
"compilers": {
"C": "clang",
"CXX": "clang++"
},
"preferredGenerator": {
"name": "Ninja"
},
"cmakeSettings": {
"DEV": "ON",
"CMAKE_CXX_LINK_FLAGS_INIT": "-fuse-ld=mold"
}
},
{
"name": "[DDNet] Crosscompile for Windows using MinGW",
"toolchainFile": "${workspaceFolder}/cmake/toolchains/mingw64.toolchain"
}
]
259 changes: 259 additions & 0 deletions other/vscode/ddnet.code-workspace
@@ -0,0 +1,259 @@
{
"folders": [
{
"path": "../.."
}
],
"settings": {
"files.associations": {
"*.tcc": "cpp",
"array": "cpp",
"atomic": "cpp",
"cctype": "cpp",
"chrono": "cpp",
"clocale": "cpp",
"cmath": "cpp",
"condition_variable": "cpp",
"cstdarg": "cpp",
"cstddef": "cpp",
"cstdint": "cpp",
"cstdio": "cpp",
"cstdlib": "cpp",
"cstring": "cpp",
"ctime": "cpp",
"cwchar": "cpp",
"cwctype": "cpp",
"deque": "cpp",
"list": "cpp",
"unordered_map": "cpp",
"vector": "cpp",
"exception": "cpp",
"algorithm": "cpp",
"functional": "cpp",
"iterator": "cpp",
"map": "cpp",
"memory": "cpp",
"memory_resource": "cpp",
"numeric": "cpp",
"optional": "cpp",
"random": "cpp",
"ratio": "cpp",
"string": "cpp",
"string_view": "cpp",
"system_error": "cpp",
"tuple": "cpp",
"type_traits": "cpp",
"utility": "cpp",
"fstream": "cpp",
"initializer_list": "cpp",
"iosfwd": "cpp",
"istream": "cpp",
"limits": "cpp",
"mutex": "cpp",
"new": "cpp",
"ostream": "cpp",
"sstream": "cpp",
"stdexcept": "cpp",
"streambuf": "cpp",
"thread": "cpp",
"cinttypes": "cpp",
"typeinfo": "cpp",
"valarray": "cpp",
"bit": "cpp",
"compare": "cpp",
"concepts": "cpp",
"ranges": "cpp",
"stop_token": "cpp",
"hash_map": "cpp",
"hash_set": "cpp",
"forward_list": "cpp",
"set": "cpp",
"iomanip": "cpp",
"iostream": "cpp",
"any": "cpp",
"unordered_set": "cpp",
"variant": "cpp"
},
// clang-format-10 has to be in your PATH
// for linux simply grep a static built clang-format-10 from here:
// https://aur.archlinux.org/packages/clang-format-static-bin
"clang-format.executable": "clang-format-10",
"lldb.launch.expressions": "native",
"editor.defaultFormatter": "xaver.clang-format",
"[rust]": {
"editor.defaultFormatter": "rust-lang.rust-analyzer",
},
"editor.formatOnSave": true,
"cmake.additionalKits": [
"${workspaceFolder}/other/vscode/ddnet-cmake-tools-kits.json"
],
"cmake.defaultVariants": {
"buildType": {
"default": "debug",
"description": "build types",
"choices": {
"debug": {
"short": "Debug",
"long": "Disable optimizations",
"buildType": "Debug",
"settings": {
"CMAKE_CXX_FLAGS": "",
"CMAKE_C_FLAGS": "",
}
},
"release": {
"short": "Release",
"long": "Enable optimizations",
"buildType": "Release",
"settings": {
"CMAKE_CXX_FLAGS": "",
"CMAKE_C_FLAGS": "",
}
},
"minsize": {
"short": "MinSizeRel",
"long": "Enable optimizations, optimized for size",
"buildType": "MinSizeRel",
"settings": {
"CMAKE_CXX_FLAGS": "",
"CMAKE_C_FLAGS": "",
}
},
"reldeb": {
"short": "RelWithDebInfo",
"long": "Enable optimizations, provide debug symbols",
"buildType": "RelWithDebInfo",
"settings": {
"CMAKE_CXX_FLAGS": "",
"CMAKE_C_FLAGS": "",
}
},
"debAndASAN": {
"short": "Debug + ASAN (only for clang)",
"long": "Disable optimizations, enable ASAN & UBSAN",
"buildType": "Debug",
"settings": {
"CMAKE_CXX_FLAGS": "-fsanitize=address,undefined -fsanitize-recover=address,undefined -fno-omit-frame-pointer",
"CMAKE_C_FLAGS": "-fsanitize=address,undefined -fsanitize-recover=address,undefined -fno-omit-frame-pointer",
}
},
"relAndASAN": {
"short": "RelWithDebInfo + ASAN (only for clang)",
"long": "Enable optimizations, enable ASAN & UBSAN",
"buildType": "RelWithDebInfo",
"settings": {
"CMAKE_CXX_FLAGS": "-fsanitize=address,undefined -fsanitize-recover=address,undefined -fno-omit-frame-pointer",
"CMAKE_C_FLAGS": "-fsanitize=address,undefined -fsanitize-recover=address,undefined -fno-omit-frame-pointer",
}
},
"debAndTSAN": {
"short": "Debug + TSAN (only for clang)",
"long": "Disable optimizations, enable TSAN & UBSAN",
"buildType": "Debug",
"settings": {
"CMAKE_CXX_FLAGS": "-fsanitize=thread,undefined -fsanitize-recover=thread,undefined -fno-omit-frame-pointer",
"CMAKE_C_FLAGS": "-fsanitize=thread,undefined -fsanitize-recover=thread,undefined -fno-omit-frame-pointer",
}
},
"relAndTSAN": {
"short": "RelWithDebInfo + TSAN (only for clang)",
"long": "Enable optimizations, enable TSAN & UBSAN",
"buildType": "RelWithDebInfo",
"settings": {
"CMAKE_CXX_FLAGS": "-fsanitize=thread,undefined -fsanitize-recover=thread,undefined -fno-omit-frame-pointer",
"CMAKE_C_FLAGS": "-fsanitize=thread,undefined -fsanitize-recover=thread,undefined -fno-omit-frame-pointer",
}
}
}
}
},
},
"extensions": {
"recommendations": [
"xaver.clang-format",
"llvm-vs-code-extensions.vscode-clangd",
"twxs.cmake",
"ms-vscode.cmake-tools",
"vadimcn.vscode-lldb",
"rust-lang.rust-analyzer"
]
},
"tasks": {
"version": "2.0.0",
"tasks": [
{
"type": "cmake",
"label": "CMake: build client",
"command": "build",
"targets": [
"DDNet"
],
"group": {
"kind": "build",
"isDefault": true
},
"problemMatcher": [],
"detail": "Build client targets"
},
{
"type": "cmake",
"label": "CMake: build server",
"command": "build",
"targets": [
"DDNet-Server"
],
"group": {
"kind": "build",
"isDefault": true
},
"problemMatcher": [],
"detail": "Build server targets"
}
]
},
"launch": {
"version": "0.2.0",
"configurations": [
{
"type": "lldb",
"request": "launch",
"name": "Launch client",
"program": "${workspaceFolder}/build/DDNet",
"preLaunchTask": "CMake: build client",
// use dbg configs like this
// "args": [ "dbg_gfx 0" ],
// enable this to start the debugger with TSAN
// "environment": [ { "name":"TSAN_OPTIONS","value":"ignore_noninstrumented_modules=1" }],
"cwd": "${workspaceFolder}/build",
},
{
"type": "lldb",
"request": "launch",
"name": "Launch server",
"program": "${workspaceFolder}/build/DDNet-Server",
"preLaunchTask": "CMake: build server",
"cwd": "${workspaceFolder}/build"
},
// useful for cross debugging the windows (wine) client
// for these you need the microsoft cpp extension
// start the wine executable like this:
// winedbg --gdb --no-start --port 55555 DDNet.exe
{
"type": "cppdbg",
"request": "launch",
"name": "Attach to wine gdbserver",
"program": "${workspaceFolder}/build_win/DDNet.exe",
"miDebuggerServerAddress": "localhost:55555",
"cwd": "${workspaceFolder}/build_win/",
"MIMode": "gdb",
"setupCommands": [
{
"description": "Auto styling for \"gdb\"",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
]
}
]
}
}
2 changes: 1 addition & 1 deletion scripts/android/README.md
@@ -1,7 +1,7 @@
Requirements for building:
==========================
- Android NDK (tested with NDK 23), must be in the same location in which Android studio would unpack it (~/Android/Sdk/ndk/)
atleast version 23
at least version 23
- Android SDK build tools
version 30.0.3
- ddnet-libs with Android libs
Expand Down
6 changes: 3 additions & 3 deletions scripts/check_header_guards.py
Expand Up @@ -6,9 +6,9 @@

PATH = "src/"
EXCEPTIONS = [
"src/base/unicode/confusables.h",
"src/base/unicode/confusables.h",
"src/base/unicode/confusables_data.h",
"src/base/unicode/tolower.h",
"src/base/unicode/tolower.h",
"src/base/unicode/tolower_data.h",
"src/tools/config_common.h"
]
Expand Down Expand Up @@ -40,7 +40,7 @@ def check_dir(directory):
for file in file_list:
path = directory + file
if os.path.isdir(path):
if file not in ("external", "generated"):
if file not in ("external", "generated", "rust-bridge"):
errors += check_dir(path + "/")
elif file.endswith(".h") and file != "keynames.h":
errors += check_file(path)
Expand Down
2 changes: 1 addition & 1 deletion scripts/compile_libs/make_lib_opusfile.sh
Expand Up @@ -22,7 +22,7 @@ function make_opusfile() {
(
cd "$1" || exit 1
if [[ "$_EXISTS_PROJECT" == 0 ]]; then
#not nice but doesnt matter
#not nice but doesn't matter
cp -R ../../ogg/include .
cp -R ../../opus/include .
cp -R ../../ogg/"$2"/include/ogg/* include/ogg/
Expand Down
3 changes: 2 additions & 1 deletion scripts/fix_style.py
Expand Up @@ -20,7 +20,8 @@ def recursive_file_list(path):
def filter_ignored(filenames):
return [filename for filename in filenames
if filename not in IGNORE_FILES
and not filename.startswith("src/game/generated/")]
and not filename.startswith("src/game/generated/")
and not filename.startswith("src/rust-bridge")]

def filter_cpp(filenames):
return [filename for filename in filenames
Expand Down
4 changes: 2 additions & 2 deletions scripts/languages/readme.txt
Expand Up @@ -7,9 +7,9 @@ about how to use the scripts.
You can start by analyzing the current languages using analyze.py
$ ./analyze.py

analyze.py outputs serveral columns. The column 'total' is the number of
analyze.py outputs several columns. The column 'total' is the number of
translations in the file. 'empty' is the number of untranslated phrases in the
file. The 2nd and 3rd columns are calculated by looking into the source. The scirpt
file. The 2nd and 3rd columns are calculated by looking into the source. The script
searches through the source for all phrases. 'missing' is the number of phrases in
the source but not in the file. 'unused' is the number of phrases in the file but
not in the source.
Expand Down
2 changes: 1 addition & 1 deletion scripts/move_sqlite.py
Expand Up @@ -84,7 +84,7 @@ def main():
print("You can use the following commands to import the entries to MySQL (using https://github.com/techouse/sqlite3-to-mysql/):")
print()
print(f"sqlite3mysql --sqlite-file {os.path.abspath(args.to)} --ignore-duplicate-keys --mysql-insert-method IGNORE --sqlite-tables record_race record_teamrace record_saves --mysql-password 'PW2' --mysql-host 'host' --mysql-database teeworlds --mysql-user teeworlds")
print(f"When the ranks are transfered successfully to mysql, {os.path.abspath(args.to)} can be removed")
print(f"When the ranks are transferred successfully to mysql, {os.path.abspath(args.to)} can be removed")
print()
print("Log of the transfer:")
print()
Expand Down
2 changes: 1 addition & 1 deletion src/android/android_main.cpp
Expand Up @@ -100,7 +100,7 @@ void InitAndroid()
sha256_from_str(&ShaAllFile, vLines[0].c_str());

// TODO: check files individually
if(!GotSHA || sha256_comp(ShaAllFile, ShaAll) != 0)
if(!GotSHA || ShaAllFile != ShaAll)
{
// then the files
for(size_t i = 1; i < vLines.size(); ++i)
Expand Down
15 changes: 15 additions & 0 deletions src/base/Cargo.toml
@@ -0,0 +1,15 @@
[package]
name = "ddnet-base"
version = "0.0.1"
edition = "2018"
publish = false
license = "Zlib"

[lib]
path = "lib.rs"

[dependencies]
cxx = "1.0"

[dev-dependencies]
ddnet-test = { path = "../rust-bridge/test", features = ["link-test-libraries"] }
77 changes: 77 additions & 0 deletions src/base/color.rs
@@ -0,0 +1,77 @@
/// Color, in RGBA format. Corresponds to the C++ type `ColorRGBA`.
///
/// The color is represented by red, green, blue and alpha values between `0.0`
/// and `1.0`.
///
/// See also <https://en.wikipedia.org/wiki/RGBA_color_model>.
///
/// # Examples
///
/// ```
/// use ddnet_base::ColorRGBA;
///
/// let white = ColorRGBA { r: 1.0, g: 1.0, b: 1.0, a: 1.0 };
/// let black = ColorRGBA { r: 0.0, g: 0.0, b: 0.0, a: 1.0 };
/// let red = ColorRGBA { r: 1.0, g: 0.0, b: 0.0, a: 1.0 };
/// let transparent = ColorRGBA { r: 0.0, g: 0.0, b: 0.0, a: 0.0 };
///
/// // #ffa500
/// let ddnet_logo_color = ColorRGBA { r: 1.0, g: 0.6470588235294118, b: 0.0, a: 1.0 };
/// ```
#[derive(Clone, Copy, Debug, PartialEq)]
#[repr(C)]
pub struct ColorRGBA {
/// Red
pub r: f32,
/// Green
pub g: f32,
/// Blue
pub b: f32,
/// Alpha (i.e. opacity. `0.0` means fully transparent, `1.0`
/// nontransparent).
pub a: f32,
}

unsafe impl cxx::ExternType for ColorRGBA {
type Id = cxx::type_id!("ColorRGBA");
type Kind = cxx::kind::Trivial;
}

/// Color, in HSLA format. Corresponds to the C++ type `ColorHSLA`.
///
/// The color is represented by hue, saturation, lightness and alpha values
/// between `0.0` and `1.0`.
///
/// See also <https://en.wikipedia.org/wiki/HSL_and_HSV>.
///
/// # Examples
///
/// ```
/// use ddnet_base::ColorHSLA;
///
/// let white = ColorHSLA { h: 0.0, s: 0.0, l: 1.0, a: 1.0 };
/// let black = ColorHSLA { h: 0.0, s: 0.0, l: 0.0, a: 1.0 };
/// let red = ColorHSLA { h: 0.0, s: 1.0, l: 0.5, a: 1.0 };
/// let transparent = ColorHSLA { h: 0.0, s: 0.0, l: 0.0, a: 0.0 };
///
/// // #ffa500
/// let ddnet_logo_color = ColorHSLA { h: 0.10784314, s: 1.0, l: 0.5, a: 1.0 };
/// ```
#[derive(Clone, Copy, Debug, PartialEq)]
#[repr(C)]
pub struct ColorHSLA {
/// Hue
pub h: f32,
/// Saturation
pub s: f32,
/// Lightness
pub l: f32,
/// Alpha (i.e. opacity. `0.0` means fully transparent, `1.0`
/// nontransparent).
pub a: f32,
}

unsafe impl cxx::ExternType for ColorHSLA {
type Id = cxx::type_id!("ColorHSLA");
type Kind = cxx::kind::Trivial;
}
19 changes: 19 additions & 0 deletions src/base/lib.rs
@@ -0,0 +1,19 @@
//! DDNet's base library, Rust part.
//!
//! DDNet's code base is separated into three major parts, `base`, `engine` and
//! `game`.
//!
//! The base library consists of operating system abstractions, and
//! game-independent data structures such as color handling and math vectors.
//! Additionally, it contains some types to support the C++-Rust-translation.

#![warn(missing_docs)]

#[cfg(test)]
extern crate ddnet_test;

mod color;
mod rust;

pub use color::*;
pub use rust::*;
25 changes: 8 additions & 17 deletions src/base/log.cpp
Expand Up @@ -339,21 +339,9 @@ class CWindowsConsoleLogger : public ILogger
void Log(const CLogMessage *pMessage) override
{
int WLen = MultiByteToWideChar(CP_UTF8, 0, pMessage->m_aLine, pMessage->m_LineLength, NULL, 0);
if(!WLen)
{
WCHAR aError[] = L"Failed to obtain length of log message\r\n";
WriteConsoleW(m_pConsole, aError, std::size(aError) - 1, NULL, NULL);
return;
}
dbg_assert(WLen > 0, "MultiByteToWideChar failure");
WCHAR *pWide = (WCHAR *)malloc((WLen + 2) * sizeof(*pWide));
WLen = MultiByteToWideChar(CP_UTF8, 0, pMessage->m_aLine, pMessage->m_LineLength, pWide, WLen);
if(!WLen)
{
WCHAR aError[] = L"Failed to convert log message encoding\r\n";
WriteConsoleW(m_pConsole, aError, std::size(aError) - 1, NULL, NULL);
free(pWide);
return;
}
dbg_assert(MultiByteToWideChar(CP_UTF8, 0, pMessage->m_aLine, pMessage->m_LineLength, pWide, WLen) == WLen, "MultiByteToWideChar failure");
pWide[WLen++] = '\r';
pWide[WLen++] = '\n';

Expand Down Expand Up @@ -435,9 +423,12 @@ class CLoggerWindowsDebugger : public ILogger
public:
void Log(const CLogMessage *pMessage) override
{
WCHAR aWBuffer[4096];
MultiByteToWideChar(CP_UTF8, 0, pMessage->m_aLine, -1, aWBuffer, sizeof(aWBuffer) / sizeof(WCHAR));
OutputDebugStringW(aWBuffer);
int WLen = MultiByteToWideChar(CP_UTF8, 0, pMessage->m_aLine, -1, NULL, 0);
dbg_assert(WLen > 0, "MultiByteToWideChar failure");
WCHAR *pWide = (WCHAR *)malloc(WLen * sizeof(*pWide));
dbg_assert(MultiByteToWideChar(CP_UTF8, 0, pMessage->m_aLine, -1, pWide, WLen) == WLen, "MultiByteToWideChar failure");
OutputDebugStringW(pWide);
free(pWide);
}
};
std::unique_ptr<ILogger> log_logger_windows_debugger()
Expand Down
5 changes: 5 additions & 0 deletions src/base/rust.h
@@ -0,0 +1,5 @@
#ifndef BASE_RUST_H
#define BASE_RUST_H
typedef const char *StrRef;
typedef void *UserPtr;
#endif // BASE_RUST_H