tidying up recent PRs

This commit is contained in:
Eric 2023-01-18 15:23:10 -08:00
parent 126eac2910
commit 135d318228
No known key found for this signature in database
GPG Key ID: 89C93F0F8D6D5A98
11 changed files with 97 additions and 81 deletions

View File

@ -420,10 +420,10 @@
"assets/build/ba_data/audio/zoeOw.ogg": "https://files.ballistica.net/cache/ba1/60/ad/38269b7f1c7dc20cb9a506cd0681",
"assets/build/ba_data/audio/zoePickup01.ogg": "https://files.ballistica.net/cache/ba1/72/85/d6fc4d16b7081d91fba2850b5b10",
"assets/build/ba_data/audio/zoeScream01.ogg": "https://files.ballistica.net/cache/ba1/e9/ae/1d674d0c086eaa0bd1c3b1db0505",
"assets/build/ba_data/data/langdata.json": "https://files.ballistica.net/cache/ba1/9b/ec/d11f3e0238ff648bce3657fe5d50",
"assets/build/ba_data/data/langdata.json": "https://files.ballistica.net/cache/ba1/95/9e/acc4a6b7b5cd457e4756ee399eb5",
"assets/build/ba_data/data/languages/arabic.json": "https://files.ballistica.net/cache/ba1/92/43/36b34307575f6d6219bdf4898e18",
"assets/build/ba_data/data/languages/belarussian.json": "https://files.ballistica.net/cache/ba1/61/03/89070ca765e06da3a419a579f503",
"assets/build/ba_data/data/languages/chinese.json": "https://files.ballistica.net/cache/ba1/96/96/1390940b8457b477113194acbb41",
"assets/build/ba_data/data/languages/chinese.json": "https://files.ballistica.net/cache/ba1/f5/32/293ca14171b8e7e7d38f377e87fb",
"assets/build/ba_data/data/languages/chinesetraditional.json": "https://files.ballistica.net/cache/ba1/f7/b0/191439142c6d6da4a056edc98b38",
"assets/build/ba_data/data/languages/croatian.json": "https://files.ballistica.net/cache/ba1/c9/73/01a1343af814131b1ee96af0b687",
"assets/build/ba_data/data/languages/czech.json": "https://files.ballistica.net/cache/ba1/4e/8c/72ddb584856a15dfb11df95f9283",
@ -443,17 +443,17 @@
"assets/build/ba_data/data/languages/korean.json": "https://files.ballistica.net/cache/ba1/32/97/4c61425d7c200a5c4c9ae3a94a0e",
"assets/build/ba_data/data/languages/malay.json": "https://files.ballistica.net/cache/ba1/b4/02/f686ce008312e74d5953a511c8b2",
"assets/build/ba_data/data/languages/persian.json": "https://files.ballistica.net/cache/ba1/70/07/7864c07c7177dd751780ccc85b34",
"assets/build/ba_data/data/languages/polish.json": "https://files.ballistica.net/cache/ba1/38/31/fd930431c7612d0ab0e73e6bc74f",
"assets/build/ba_data/data/languages/portuguese.json": "https://files.ballistica.net/cache/ba1/cb/96/86bb139f20e126593f7fdba9e9e1",
"assets/build/ba_data/data/languages/polish.json": "https://files.ballistica.net/cache/ba1/83/71/27beb2a7a9d7036e142d48278888",
"assets/build/ba_data/data/languages/portuguese.json": "https://files.ballistica.net/cache/ba1/e3/e5/9bc33069464b08ba7ad6712de4be",
"assets/build/ba_data/data/languages/romanian.json": "https://files.ballistica.net/cache/ba1/d7/06/9d70642d0a4d1e3b1c2149d7a17c",
"assets/build/ba_data/data/languages/russian.json": "https://files.ballistica.net/cache/ba1/6c/62/06869ed55a656b6e51b4d22e6fa8",
"assets/build/ba_data/data/languages/serbian.json": "https://files.ballistica.net/cache/ba1/4e/91/6f2a9a3ce733908e91377a6ddb9a",
"assets/build/ba_data/data/languages/slovak.json": "https://files.ballistica.net/cache/ba1/20/a9/163d189884edf802636bf291e432",
"assets/build/ba_data/data/languages/spanish.json": "https://files.ballistica.net/cache/ba1/0b/21/a4d09ca1fea8bbf347ed7091c8a2",
"assets/build/ba_data/data/languages/spanish.json": "https://files.ballistica.net/cache/ba1/03/a9/0dad2892ceb7fded276235c4576a",
"assets/build/ba_data/data/languages/swedish.json": "https://files.ballistica.net/cache/ba1/3b/9f/d40c1423d260784970fd7364ca30",
"assets/build/ba_data/data/languages/tamil.json": "https://files.ballistica.net/cache/ba1/3d/83/e1bb0a664d1c14c41b1a083acf0d",
"assets/build/ba_data/data/languages/thai.json": "https://files.ballistica.net/cache/ba1/d6/16/523c643358880b03b233ed88e557",
"assets/build/ba_data/data/languages/turkish.json": "https://files.ballistica.net/cache/ba1/63/c8/6cfbfd6702c80aa9df490e4629d7",
"assets/build/ba_data/data/languages/turkish.json": "https://files.ballistica.net/cache/ba1/4b/28/b62e4c928ee4ddb4120303cc5f62",
"assets/build/ba_data/data/languages/ukrainian.json": "https://files.ballistica.net/cache/ba1/3e/b6/052f1faed0264bf7135feb5c4cc3",
"assets/build/ba_data/data/languages/venetian.json": "https://files.ballistica.net/cache/ba1/a6/ed/416638d46950c9ab4f6155b9c334",
"assets/build/ba_data/data/languages/vietnamese.json": "https://files.ballistica.net/cache/ba1/1f/ae/abe3f105b3c4b51f6b7942773305",
@ -4008,26 +4008,26 @@
"assets/src/ba_data/python/ba/_generated/__init__.py": "https://files.ballistica.net/cache/ba1/ee/e8/cad05aa531c7faf7ff7b96db7f6e",
"assets/src/ba_data/python/ba/_generated/enums.py": "https://files.ballistica.net/cache/ba1/1c/77/ac670a5118abdf8a7687af0e159b",
"ballisticacore-windows/Generic/BallisticaCore.ico": "https://files.ballistica.net/cache/ba1/89/c0/e32c7d2a35dc9aef57cc73b0911a",
"build/prefab/full/linux_arm64_gui/debug/ballisticacore": "https://files.ballistica.net/cache/ba1/70/b7/3a20b7191d324711434f30fd9b02",
"build/prefab/full/linux_arm64_gui/release/ballisticacore": "https://files.ballistica.net/cache/ba1/06/97/a3e4cc8402d604a2fc162bf5e6d6",
"build/prefab/full/linux_arm64_server/debug/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/fb/2f/42d0109886a121a7afc5d39fefa2",
"build/prefab/full/linux_arm64_server/release/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/7b/89/5dfaee14cdb96d023556e6bfb400",
"build/prefab/full/linux_x86_64_gui/debug/ballisticacore": "https://files.ballistica.net/cache/ba1/04/fa/752e4447eba1ad78bda278d0f5b0",
"build/prefab/full/linux_x86_64_gui/release/ballisticacore": "https://files.ballistica.net/cache/ba1/5e/eb/a505aa3a5a64aaa121648cde5ef2",
"build/prefab/full/linux_x86_64_server/debug/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/01/b6/f4d23b0f064245f44baa111f7275",
"build/prefab/full/linux_x86_64_server/release/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/9a/f5/a82d1fc4b5feaee3262c65afba92",
"build/prefab/full/mac_arm64_gui/debug/ballisticacore": "https://files.ballistica.net/cache/ba1/a8/cd/0fe7195e99c956a4ec2021fa1706",
"build/prefab/full/mac_arm64_gui/release/ballisticacore": "https://files.ballistica.net/cache/ba1/02/81/5d11c0e3406184a7f34155efef9a",
"build/prefab/full/mac_arm64_server/debug/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/b1/cb/c74fc5c22e94d7ddbe103d267d95",
"build/prefab/full/mac_arm64_server/release/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/6c/16/b3321c2d7f201c0292e78b765415",
"build/prefab/full/mac_x86_64_gui/debug/ballisticacore": "https://files.ballistica.net/cache/ba1/51/7f/d82ef0ecf2ff3c385d9a6384c1b5",
"build/prefab/full/mac_x86_64_gui/release/ballisticacore": "https://files.ballistica.net/cache/ba1/ef/2d/2f1ed47bd3b0fc402ebf55f0749b",
"build/prefab/full/mac_x86_64_server/debug/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/ef/7e/c0c486eccf17619be6a8fc3b0a18",
"build/prefab/full/mac_x86_64_server/release/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/e6/e4/93021ae27bb96d34f8d6e6a6b7e3",
"build/prefab/full/windows_x86_gui/debug/BallisticaCore.exe": "https://files.ballistica.net/cache/ba1/54/e1/fdb3d600adc946d8d0995b68ddea",
"build/prefab/full/windows_x86_gui/release/BallisticaCore.exe": "https://files.ballistica.net/cache/ba1/4c/0e/5d3cf72812c890870ef95365f47e",
"build/prefab/full/windows_x86_server/debug/dist/BallisticaCoreHeadless.exe": "https://files.ballistica.net/cache/ba1/d0/82/8feea3b851f2039445032af42386",
"build/prefab/full/windows_x86_server/release/dist/BallisticaCoreHeadless.exe": "https://files.ballistica.net/cache/ba1/1e/49/c5f7b924a1952633b9b3c80bec8a",
"build/prefab/full/linux_arm64_gui/debug/ballisticacore": "https://files.ballistica.net/cache/ba1/8c/ba/e3fed2ce4cee676e9e9f33071661",
"build/prefab/full/linux_arm64_gui/release/ballisticacore": "https://files.ballistica.net/cache/ba1/53/2d/036a8e5802ba3b302803831dd5c2",
"build/prefab/full/linux_arm64_server/debug/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/a5/35/bb43a9c30ced38c754ac16857b64",
"build/prefab/full/linux_arm64_server/release/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/5b/c9/1a742859dec04635826c66171892",
"build/prefab/full/linux_x86_64_gui/debug/ballisticacore": "https://files.ballistica.net/cache/ba1/56/8b/1d95aba7586a0ad21b9507cac404",
"build/prefab/full/linux_x86_64_gui/release/ballisticacore": "https://files.ballistica.net/cache/ba1/a2/cf/6eee63abf3c21d7a73ac5cf85a63",
"build/prefab/full/linux_x86_64_server/debug/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/bc/6b/39c82a58c924b6d8a2e2e5ce5e06",
"build/prefab/full/linux_x86_64_server/release/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/d1/79/cbe53392837c8bcef76bb8e61c49",
"build/prefab/full/mac_arm64_gui/debug/ballisticacore": "https://files.ballistica.net/cache/ba1/9a/fd/61e4a477d5c444f25dcf1caad24b",
"build/prefab/full/mac_arm64_gui/release/ballisticacore": "https://files.ballistica.net/cache/ba1/d6/93/a7d6d7e042c27d5a0e6482fc078e",
"build/prefab/full/mac_arm64_server/debug/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/65/03/fe128d70d565a3d3d41b31ed843d",
"build/prefab/full/mac_arm64_server/release/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/a4/61/8fa37aad1a0690fbff373c4028ae",
"build/prefab/full/mac_x86_64_gui/debug/ballisticacore": "https://files.ballistica.net/cache/ba1/4e/90/e8a2fdf75bb4450e7ba7e2a4339b",
"build/prefab/full/mac_x86_64_gui/release/ballisticacore": "https://files.ballistica.net/cache/ba1/07/d5/28b51d35fde79940ae364b5734c5",
"build/prefab/full/mac_x86_64_server/debug/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/0d/88/f5012674b1418dc9453fdcd32433",
"build/prefab/full/mac_x86_64_server/release/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/ca/2a/43bb057c80d37fa6ce833bfab9c9",
"build/prefab/full/windows_x86_gui/debug/BallisticaCore.exe": "https://files.ballistica.net/cache/ba1/0c/35/1431c88890c0a4150ed15aa39f08",
"build/prefab/full/windows_x86_gui/release/BallisticaCore.exe": "https://files.ballistica.net/cache/ba1/6c/26/b290f9ae9979a5036b7f29d8d67c",
"build/prefab/full/windows_x86_server/debug/dist/BallisticaCoreHeadless.exe": "https://files.ballistica.net/cache/ba1/db/e1/1e7210e97930a6c5e606cbc8ef33",
"build/prefab/full/windows_x86_server/release/dist/BallisticaCoreHeadless.exe": "https://files.ballistica.net/cache/ba1/36/c6/8eadaeb0f5b7d96e020f9d09c190",
"build/prefab/lib/linux_arm64_gui/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/cb/3b/83e6150eebf4fa7b5e8a7b863219",
"build/prefab/lib/linux_arm64_gui/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/44/70/2878a73f2d55849cd6a75e401575",
"build/prefab/lib/linux_arm64_server/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/24/49/4baca475df5c7f87e6ed17d46696",
@ -4044,14 +4044,14 @@
"build/prefab/lib/mac_x86_64_gui/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/b2/ee/b908410d85c763d5bca09a3bc893",
"build/prefab/lib/mac_x86_64_server/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/fd/24/8c51e5752064d4b487dff42a7ffa",
"build/prefab/lib/mac_x86_64_server/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/93/c6/40e9e47dd33c88646510212ff321",
"build/prefab/lib/windows/Debug_Win32/BallisticaCoreGenericInternal.lib": "https://files.ballistica.net/cache/ba1/ef/a2/14e74872b374012688990c193535",
"build/prefab/lib/windows/Debug_Win32/BallisticaCoreGenericInternal.pdb": "https://files.ballistica.net/cache/ba1/ef/f3/e7b36179c280d0a4c66e08992119",
"build/prefab/lib/windows/Debug_Win32/BallisticaCoreHeadlessInternal.lib": "https://files.ballistica.net/cache/ba1/20/a2/0bdab30629cb762ef6cf3dd044c1",
"build/prefab/lib/windows/Debug_Win32/BallisticaCoreHeadlessInternal.pdb": "https://files.ballistica.net/cache/ba1/bc/67/2c0feb94abe56912519b420f2f8e",
"build/prefab/lib/windows/Release_Win32/BallisticaCoreGenericInternal.lib": "https://files.ballistica.net/cache/ba1/8c/e8/7944feddd9ed00e1b27a81319681",
"build/prefab/lib/windows/Release_Win32/BallisticaCoreGenericInternal.pdb": "https://files.ballistica.net/cache/ba1/b7/97/90305c2ed5347c4e88faf4b61066",
"build/prefab/lib/windows/Release_Win32/BallisticaCoreHeadlessInternal.lib": "https://files.ballistica.net/cache/ba1/66/46/f6247f24e169407f0f4dd38f938f",
"build/prefab/lib/windows/Release_Win32/BallisticaCoreHeadlessInternal.pdb": "https://files.ballistica.net/cache/ba1/fa/b2/e1531030804f539d1ad173c0ce4a",
"build/prefab/lib/windows/Debug_Win32/BallisticaCoreGenericInternal.lib": "https://files.ballistica.net/cache/ba1/55/f8/b524f3c1e9b46be1174943e6d002",
"build/prefab/lib/windows/Debug_Win32/BallisticaCoreGenericInternal.pdb": "https://files.ballistica.net/cache/ba1/66/dd/c62b06140a9f57679f49e73bd7ad",
"build/prefab/lib/windows/Debug_Win32/BallisticaCoreHeadlessInternal.lib": "https://files.ballistica.net/cache/ba1/84/19/12a6ea442e0a512f1a70aeaf8088",
"build/prefab/lib/windows/Debug_Win32/BallisticaCoreHeadlessInternal.pdb": "https://files.ballistica.net/cache/ba1/3d/7e/269c583db498f613266e0b248fb0",
"build/prefab/lib/windows/Release_Win32/BallisticaCoreGenericInternal.lib": "https://files.ballistica.net/cache/ba1/2d/ba/a09314ca4a238b58c79f481b4bf1",
"build/prefab/lib/windows/Release_Win32/BallisticaCoreGenericInternal.pdb": "https://files.ballistica.net/cache/ba1/2b/5f/4ff300c943e2d218e66ea98fc159",
"build/prefab/lib/windows/Release_Win32/BallisticaCoreHeadlessInternal.lib": "https://files.ballistica.net/cache/ba1/32/0a/f5586c9a6bf15ea5ed63d6775347",
"build/prefab/lib/windows/Release_Win32/BallisticaCoreHeadlessInternal.pdb": "https://files.ballistica.net/cache/ba1/49/88/abf208e619fd9d61e521e367ac32",
"src/ballistica/generated/python_embedded/binding.inc": "https://files.ballistica.net/cache/ba1/23/ce/68396b1b7ec6d2f8425902148140",
"src/ballistica/generated/python_embedded/bootstrap.inc": "https://files.ballistica.net/cache/ba1/2d/4f/f4fe67827f36cd59cd5193333a02",
"src/ballistica/generated/python_embedded/bootstrap_monolithic.inc": "https://files.ballistica.net/cache/ba1/ef/c1/aa5f1aa10af89f5c0b1e616355fd"

View File

@ -1,8 +1,10 @@
### 1.7.19 (build 20993, api 7, 2023-01-17)
### 1.7.19 (build 20995, api 7, 2023-01-18)
- Fixes an issue where repeated curses could use incorrect countdown times (Thanks EraOSBeta!).
- Last manual party connect port is now saved. Previously, it always assumed the port to be 43210 (Thanks ritiek!).
- Added a plugin-settings window under the plugins UI for enabling/disabling, and setting whether plugins are auto-enabled (Thanks vishal332008!).
- Missing maps are now cleanly filtered out of playlists instead of causing errors/hangs (Thanks imayushsaini!).
- Added in-game-ping option under advanced settings (Thanks imayushsaini!).
- `BA_DEVICE_NAME` environment variable can now be used to change the name the local device shows up as. Handy if running multiple servers so you can tell them apart in cloud-console/etc. (Thanks imayushsaini!).
### 1.7.18 (build 20989, api 7, 2023-01-16)
- Reworked some low level asynchronous messaging functionality in efro.message and efro.rpc. Previously these were a little *too* asynchronous which could lead to messages being received in a different order than they were sent, which is not desirable.

View File

@ -47,7 +47,7 @@ def bootstrap() -> None:
# Give a soft warning if we're being used with a different binary
# version than we expect.
expected_build = 20993
expected_build = 20995
running_build: int = env['build_number']
if running_build != expected_build:
print(

View File

@ -192,9 +192,8 @@ def filter_playlist(
'Import failed while scanning playlist \'%s\': %s', name, exc
)
except Exception:
from ba import _error
logging.exception('Error in filter_playlist.')
_error.print_exception()
return goodlist

View File

@ -134,7 +134,7 @@ class AdvancedSettingsWindow(ba.Window):
parent=self._root_widget,
position=(0, self._height - 52),
size=(self._width, 25),
text=ba.Lstr(resource=self._r + '.titleText'),
text=ba.Lstr(resource=f'{self._r}.titleText'),
color=app.ui.title_color,
h_align='center',
v_align='top',
@ -203,10 +203,10 @@ class AdvancedSettingsWindow(ba.Window):
text=''
if ba.app.lang.language == 'Test'
else ba.Lstr(
resource=self._r + '.translationNoUpdateNeededText'
resource=f'{self._r}.translationNoUpdateNeededText'
)
if up_to_date
else ba.Lstr(resource=self._r + '.translationUpdateNeededText'),
else ba.Lstr(resource=f'{self._r}.translationUpdateNeededText'),
color=(0.2, 1.0, 0.2, 0.8)
if up_to_date
else (1.0, 0.2, 0.2, 0.8),
@ -214,10 +214,10 @@ class AdvancedSettingsWindow(ba.Window):
else:
ba.textwidget(
edit=self._lang_status_text,
text=ba.Lstr(resource=self._r + '.translationFetchErrorText')
text=ba.Lstr(resource=f'{self._r}.translationFetchErrorText')
if self._complete_langs_error
else ba.Lstr(
resource=self._r + '.translationFetchingStatusText'
resource=f'{self._r}.translationFetchingStatusText'
),
color=(1.0, 0.5, 0.2)
if self._complete_langs_error
@ -267,7 +267,7 @@ class AdvancedSettingsWindow(ba.Window):
)
ba.textwidget(
edit=self._title_text, text=ba.Lstr(resource=self._r + '.titleText')
edit=self._title_text, text=ba.Lstr(resource=f'{self._r}.titleText')
)
this_button_width = 410
@ -277,7 +277,7 @@ class AdvancedSettingsWindow(ba.Window):
position=(self._sub_width / 2 - this_button_width / 2, v - 14),
size=(this_button_width, 60),
autoselect=True,
label=ba.Lstr(resource=self._r + '.enterPromoCodeText'),
label=ba.Lstr(resource=f'{self._r}.enterPromoCodeText'),
text_scale=1.0,
on_activate_call=self._on_promo_code_press,
)
@ -293,7 +293,7 @@ class AdvancedSettingsWindow(ba.Window):
parent=self._subcontainer,
position=(200, v + 10),
size=(0, 0),
text=ba.Lstr(resource=self._r + '.languageText'),
text=ba.Lstr(resource=f'{self._r}.languageText'),
maxwidth=150,
scale=0.95,
color=ba.app.ui.title_color,
@ -371,7 +371,7 @@ class AdvancedSettingsWindow(ba.Window):
position=(self._sub_width * 0.5, v + 10),
size=(0, 0),
text=ba.Lstr(
resource=self._r + '.helpTranslateText',
resource=f'{self._r}.helpTranslateText',
subs=[('${APP_NAME}', ba.Lstr(resource='titleText'))],
),
maxwidth=self._sub_width * 0.9,
@ -389,7 +389,7 @@ class AdvancedSettingsWindow(ba.Window):
position=(self._sub_width / 2 - this_button_width / 2, v - 24),
size=(this_button_width, 60),
label=ba.Lstr(
resource=self._r + '.translationEditorButtonText',
resource=f'{self._r}.translationEditorButtonText',
subs=[('${APP_NAME}', ba.Lstr(resource='titleText'))],
),
autoselect=True,
@ -422,7 +422,7 @@ class AdvancedSettingsWindow(ba.Window):
maxwidth=430,
textcolor=(0.8, 0.8, 0.8),
value=lang_inform,
text=ba.Lstr(resource=self._r + '.translationInformMe'),
text=ba.Lstr(resource=f'{self._r}.translationInformMe'),
on_value_change_call=ba.WeakCall(self._on_lang_inform_value_change),
)
@ -439,7 +439,7 @@ class AdvancedSettingsWindow(ba.Window):
position=(50, v),
size=(self._sub_width - 100, 30),
configkey='Kick Idle Players',
displayname=ba.Lstr(resource=self._r + '.kickIdlePlayersText'),
displayname=ba.Lstr(resource=f'{self._r}.kickIdlePlayersText'),
scale=1.0,
maxwidth=430,
)
@ -450,7 +450,7 @@ class AdvancedSettingsWindow(ba.Window):
position=(50, v),
size=(self._sub_width - 100, 30),
configkey='Show Ping',
displayname=ba.Lstr(value='Show InGame Ping'),
displayname=ba.Lstr(resource=f'{self._r}.showInGamePingText'),
scale=1.0,
maxwidth=430,
)
@ -461,7 +461,7 @@ class AdvancedSettingsWindow(ba.Window):
position=(50, v),
size=(self._sub_width - 100, 30),
configkey='Disable Camera Shake',
displayname=ba.Lstr(resource=self._r + '.disableCameraShakeText'),
displayname=ba.Lstr(resource=f'{self._r}.disableCameraShakeText'),
scale=1.0,
maxwidth=430,
)
@ -475,7 +475,7 @@ class AdvancedSettingsWindow(ba.Window):
size=(self._sub_width - 100, 30),
configkey='Disable Camera Gyro',
displayname=ba.Lstr(
resource=self._r + '.disableCameraGyroscopeMotionText'
resource=f'{self._r}.disableCameraGyroscopeMotionText'
),
scale=1.0,
maxwidth=430,
@ -491,7 +491,7 @@ class AdvancedSettingsWindow(ba.Window):
configkey='Always Use Internal Keyboard',
autoselect=True,
displayname=ba.Lstr(
resource=self._r + '.alwaysUseInternalKeyboardText'
resource=f'{self._r}.alwaysUseInternalKeyboardText'
),
scale=1.0,
maxwidth=430,
@ -501,8 +501,9 @@ class AdvancedSettingsWindow(ba.Window):
position=(90, v - 10),
size=(0, 0),
text=ba.Lstr(
resource=self._r
+ '.alwaysUseInternalKeyboardDescriptionText'
resource=(
f'{self._r}.alwaysUseInternalKeyboardDescriptionText'
)
),
maxwidth=400,
flatness=1.0,
@ -523,7 +524,7 @@ class AdvancedSettingsWindow(ba.Window):
position=(self._sub_width / 2 - this_button_width / 2, v - 10),
size=(this_button_width, 60),
autoselect=True,
label=ba.Lstr(resource=self._r + '.moddingGuideText'),
label=ba.Lstr(resource=f'{self._r}.moddingGuideText'),
text_scale=1.0,
on_activate_call=ba.Call(
ba.open_url, 'https://ballistica.net/wiki/modding-guide'
@ -556,7 +557,7 @@ class AdvancedSettingsWindow(ba.Window):
position=(self._sub_width / 2 - this_button_width / 2, v - 10),
size=(this_button_width, 60),
autoselect=True,
label=ba.Lstr(resource=self._r + '.showUserModsText'),
label=ba.Lstr(resource=f'{self._r}.showUserModsText'),
text_scale=1.0,
on_activate_call=show_user_scripts,
)
@ -583,7 +584,7 @@ class AdvancedSettingsWindow(ba.Window):
position=(self._sub_width / 2 - this_button_width / 2, v - 14),
size=(this_button_width, 60),
autoselect=True,
label=ba.Lstr(resource=self._r + '.vrTestingText'),
label=ba.Lstr(resource=f'{self._r}.vrTestingText'),
text_scale=1.0,
on_activate_call=self._on_vr_test_press,
)
@ -598,7 +599,7 @@ class AdvancedSettingsWindow(ba.Window):
position=(self._sub_width / 2 - this_button_width / 2, v - 14),
size=(this_button_width, 60),
autoselect=True,
label=ba.Lstr(resource=self._r + '.netTestingText'),
label=ba.Lstr(resource=f'{self._r}.netTestingText'),
text_scale=1.0,
on_activate_call=self._on_net_test_press,
)
@ -611,7 +612,7 @@ class AdvancedSettingsWindow(ba.Window):
position=(self._sub_width / 2 - this_button_width / 2, v - 14),
size=(this_button_width, 60),
autoselect=True,
label=ba.Lstr(resource=self._r + '.benchmarksText'),
label=ba.Lstr(resource=f'{self._r}.benchmarksText'),
text_scale=1.0,
on_activate_call=self._on_benchmark_press,
)
@ -633,7 +634,7 @@ class AdvancedSettingsWindow(ba.Window):
def _show_restart_needed(self, value: Any) -> None:
del value # Unused.
ba.screenmessage(
ba.Lstr(resource=self._r + '.mustRestartText'), color=(1, 1, 0)
ba.Lstr(resource=f'{self._r}.mustRestartText'), color=(1, 1, 0)
)
def _on_lang_inform_value_change(self, val: bool) -> None:

View File

@ -32,7 +32,7 @@
namespace ballistica {
// These are set automatically via script; don't modify them here.
const int kAppBuildNumber = 20993;
const int kAppBuildNumber = 20995;
const char* kAppVersion = "1.7.19";
// Our standalone globals.

View File

@ -24,8 +24,8 @@ const int kPacketPruneTime = 10000;
// How long to go between pruning our packets.
const int kPacketPruneInterval = 1000;
// How long to go between updating current ping.
const int kPingUpdateInterval = 2000;
// How long to go between updating our ping measurement.
const int kPingMeasureInterval = 2000;
Connection::Connection() {
// NOLINTNEXTLINE(cppcoreguidelines-prefer-member-initializer)
@ -80,17 +80,16 @@ void Connection::HandleResends(millisecs_t real_time,
// (prevents some un-necessary re-sending)
uint8_t extra_bits = data[offset + 2];
// Get a rough ping by looking at the previous packet and measuring its
// round-trip time if it has not yet been ack'ed.
// Ack packets and take the opportunity to measure ping.
auto test_num = static_cast<uint16_t>(their_next_in - 1u);
auto j = out_messages_.find(test_num);
if (j != out_messages_.end()) {
ReliableMessageOut& msg(j->second);
if (!msg.acked) {
// Dont update too fast.
if (real_time - last_ping_update_time_ > kPingUpdateInterval) {
// Periodically use this opportunity to measure ping.
if (real_time - last_ping_measure_time_ > kPingMeasureInterval) {
current_ping_ = static_cast<float>(real_time - msg.first_send_time);
last_ping_update_time_ = real_time;
last_ping_measure_time_ = real_time;
}
}
msg.acked = true;
@ -388,15 +387,6 @@ void Connection::Update() {
SendGamePacket(data);
}
if (can_communicate()
&& real_time - last_ping_update_time_ > kPingUpdateInterval + 1000) {
// Send a reliable message if ping not updated in a while.
std::vector<uint8_t> data(1);
data[0] = BA_PACKET_SIMPLE_PING;
SendReliableMessage(data);
}
// Occasionally prune our in and out messages.
if (real_time - last_prune_time_ > kPacketPruneInterval) {
last_prune_time_ = real_time;
@ -451,6 +441,9 @@ void Connection::HandleMessagePacket(const std::vector<uint8_t>& buffer) {
}
break;
}
case BA_MESSAGE_NULL:
// An empty message that can get thrown around for ping purposes.
break;
default: {
// Let's silently ignore these since we may be adding various
// messages mid-protocol in a backwards-compatible way.

View File

@ -132,7 +132,7 @@ class Connection : public Object {
bool errored_{};
millisecs_t last_prune_time_{};
millisecs_t last_ack_send_time_{};
millisecs_t last_ping_update_time_{};
millisecs_t last_ping_measure_time_{};
// These are explicitly 16 bit values.
uint16_t next_out_message_num_ = kFirstConnectionStateNum;
uint16_t next_out_unreliable_message_num_{};

View File

@ -18,6 +18,9 @@
namespace ballistica {
// How long to go between sending out null packets for pings.
const int kPingSendInterval = 2000;
ConnectionToHost::ConnectionToHost() = default;
auto ConnectionToHost::GetAsUDP() -> ConnectionToHostUDP* { return nullptr; }
@ -47,7 +50,23 @@ ConnectionToHost::~ConnectionToHost() {
}
}
void ConnectionToHost::Update() { Connection::Update(); }
void ConnectionToHost::Update() {
millisecs_t real_time = GetRealTime();
// Send out null messages occasionally for ping measurement purposes.
// Note that we currently only do this from the client since we might not
// be sending things otherwise. The server on the other hand should be
// sending lots of messages to clients so no need to add to the load there.
if (can_communicate()
&& real_time - last_ping_send_time_ > kPingSendInterval) {
std::vector<uint8_t> data(1);
data[0] = BA_MESSAGE_NULL;
SendReliableMessage(data);
last_ping_send_time_ = real_time;
}
Connection::Update();
}
// Seems we get a false alarm here.
#pragma clang diagnostic push

View File

@ -38,6 +38,7 @@ class ConnectionToHost : public Connection {
bool got_host_info_ = false;
// can remove once back-compat protocol is > 29
bool ignore_old_attach_remote_player_packets_ = false;
millisecs_t last_ping_send_time_{};
// the client-session that we're driving
Object::WeakRef<ClientSession> client_session_;
};

View File

@ -74,6 +74,7 @@ namespace ballistica {
#define BA_MESSAGE_SESSION_RESET 0
#define BA_MESSAGE_SESSION_COMMANDS 1
#define BA_MESSAGE_SESSION_DYNAMICS_CORRECTION 2
#define BA_MESSAGE_NULL 3
#define BA_MESSAGE_REQUEST_REMOTE_PLAYER 4
#define BA_MESSAGE_ATTACH_REMOTE_PLAYER 5 // OBSOLETE (use the _2 version)
#define BA_MESSAGE_DETACH_REMOTE_PLAYER 6