getting this ball rolling again after lots of server work

This commit is contained in:
Eric 2024-03-01 16:20:36 -08:00
parent 37588433bc
commit 15bf8f4c12
No known key found for this signature in database
GPG Key ID: 89C93F0F8D6D5A98
11 changed files with 117 additions and 116 deletions

84
.efrocachemap generated
View File

@ -421,39 +421,39 @@
"build/assets/ba_data/audio/zoeOw.ogg": "74befe45a8417e95b6a2233c51992a26", "build/assets/ba_data/audio/zoeOw.ogg": "74befe45a8417e95b6a2233c51992a26",
"build/assets/ba_data/audio/zoePickup01.ogg": "48ab8cddfcde36a750856f3f81dd20c8", "build/assets/ba_data/audio/zoePickup01.ogg": "48ab8cddfcde36a750856f3f81dd20c8",
"build/assets/ba_data/audio/zoeScream01.ogg": "2b468aedfa8741090247f04eb9e6df55", "build/assets/ba_data/audio/zoeScream01.ogg": "2b468aedfa8741090247f04eb9e6df55",
"build/assets/ba_data/data/langdata.json": "831b83240126d0a851104f4148712ed1", "build/assets/ba_data/data/langdata.json": "5273cf3bfe2d25d70395690bf3c21825",
"build/assets/ba_data/data/languages/arabic.json": "0db32e21b6d5337ccca478381744aa88", "build/assets/ba_data/data/languages/arabic.json": "0db32e21b6d5337ccca478381744aa88",
"build/assets/ba_data/data/languages/belarussian.json": "a112dfca3e188387516788bd8229c5b0", "build/assets/ba_data/data/languages/belarussian.json": "09954e550d13d3d9cb5a635a1d32a151",
"build/assets/ba_data/data/languages/chinese.json": "1360ffde06828b63ce4fe956c3c3cd1d", "build/assets/ba_data/data/languages/chinese.json": "1360ffde06828b63ce4fe956c3c3cd1d",
"build/assets/ba_data/data/languages/chinesetraditional.json": "319565f8a15667488f48dbce59278e39", "build/assets/ba_data/data/languages/chinesetraditional.json": "319565f8a15667488f48dbce59278e39",
"build/assets/ba_data/data/languages/croatian.json": "766532c67af5bd0144c2d63cab0516fa", "build/assets/ba_data/data/languages/croatian.json": "e671b9d0c012be1a30f9c15eb1b81860",
"build/assets/ba_data/data/languages/czech.json": "7171420af6d662e3a47b64576850a384", "build/assets/ba_data/data/languages/czech.json": "7171420af6d662e3a47b64576850a384",
"build/assets/ba_data/data/languages/danish.json": "3fd69080783d5c9dcc0af737f02b6f1e", "build/assets/ba_data/data/languages/danish.json": "8e57db30c5250df2abff14a822f83ea7",
"build/assets/ba_data/data/languages/dutch.json": "b0900d572c9141897d53d6574c471343", "build/assets/ba_data/data/languages/dutch.json": "b0900d572c9141897d53d6574c471343",
"build/assets/ba_data/data/languages/english.json": "1c4037fea1066d39d6eced419f314f35", "build/assets/ba_data/data/languages/english.json": "28a1c17925aba4f4f908732e5e5cb266",
"build/assets/ba_data/data/languages/esperanto.json": "0e397cfa5f3fb8cef5f4a64f21cda880", "build/assets/ba_data/data/languages/esperanto.json": "0e397cfa5f3fb8cef5f4a64f21cda880",
"build/assets/ba_data/data/languages/filipino.json": "43e838754fe013b8bac75f75aef78cb3", "build/assets/ba_data/data/languages/filipino.json": "fe3f1efcb47efaa23524300d21728933",
"build/assets/ba_data/data/languages/french.json": "cc8ac601f5443dd539893728db983f5c", "build/assets/ba_data/data/languages/french.json": "cc8ac601f5443dd539893728db983f5c",
"build/assets/ba_data/data/languages/german.json": "450fa41ae264f29a5d1af22143d0d0ad", "build/assets/ba_data/data/languages/german.json": "450fa41ae264f29a5d1af22143d0d0ad",
"build/assets/ba_data/data/languages/gibberish.json": "b461539243e8efe3137137b886256ba7", "build/assets/ba_data/data/languages/gibberish.json": "ab9571486f703b8d57eab61dbf1d54d8",
"build/assets/ba_data/data/languages/greek.json": "287c0ec437b38772284ef9d3e4fb2fc3", "build/assets/ba_data/data/languages/greek.json": "287c0ec437b38772284ef9d3e4fb2fc3",
"build/assets/ba_data/data/languages/hindi.json": "5b6c8e988ffa84a7e26d120b6cd8e1a4", "build/assets/ba_data/data/languages/hindi.json": "90f54663e15d85a163f1848a8e9d8d07",
"build/assets/ba_data/data/languages/hungarian.json": "796a290a8c44a1e7635208c2ff5fdc6e", "build/assets/ba_data/data/languages/hungarian.json": "796a290a8c44a1e7635208c2ff5fdc6e",
"build/assets/ba_data/data/languages/indonesian.json": "9103845242b572aa8ba48e24f81ddb68", "build/assets/ba_data/data/languages/indonesian.json": "9103845242b572aa8ba48e24f81ddb68",
"build/assets/ba_data/data/languages/italian.json": "f550810b6866ea9bcf1985b7228f8cff", "build/assets/ba_data/data/languages/italian.json": "f550810b6866ea9bcf1985b7228f8cff",
"build/assets/ba_data/data/languages/korean.json": "4e3524327a0174250aff5e1ef4c0c597", "build/assets/ba_data/data/languages/korean.json": "4e3524327a0174250aff5e1ef4c0c597",
"build/assets/ba_data/data/languages/malay.json": "832562ce997fc70704b9234c95fb2e38", "build/assets/ba_data/data/languages/malay.json": "832562ce997fc70704b9234c95fb2e38",
"build/assets/ba_data/data/languages/persian.json": "9728d631cf7d9ad3b209ae1244bb59c0", "build/assets/ba_data/data/languages/persian.json": "1a4c74ad9089cd746ad6fda4186c2220",
"build/assets/ba_data/data/languages/polish.json": "3a90b2d9e2c59305580c96f8098fc839", "build/assets/ba_data/data/languages/polish.json": "9d22c6643c097c4cb268d0d6b6319cd4",
"build/assets/ba_data/data/languages/portuguese.json": "b52164747c6308fc9d054eb6c0ff3c54", "build/assets/ba_data/data/languages/portuguese.json": "b52164747c6308fc9d054eb6c0ff3c54",
"build/assets/ba_data/data/languages/romanian.json": "aeebdd54f65939c2facc6ac50c117826", "build/assets/ba_data/data/languages/romanian.json": "b3e46efd6f869dbd78014570e037c290",
"build/assets/ba_data/data/languages/russian.json": "30d5f3d2415088e1fb6558fcd6ccfa98", "build/assets/ba_data/data/languages/russian.json": "30d5f3d2415088e1fb6558fcd6ccfa98",
"build/assets/ba_data/data/languages/serbian.json": "d7452dd72ac0e51680cb39b5ebaa1c69", "build/assets/ba_data/data/languages/serbian.json": "d7452dd72ac0e51680cb39b5ebaa1c69",
"build/assets/ba_data/data/languages/slovak.json": "27962d53dc3f7dd4e877cd40faafeeef", "build/assets/ba_data/data/languages/slovak.json": "c00fb27cf982ffad5a4370ad3b16bd21",
"build/assets/ba_data/data/languages/spanish.json": "e3e9ac8f96f52302a480c7e955aed71f", "build/assets/ba_data/data/languages/spanish.json": "e3e9ac8f96f52302a480c7e955aed71f",
"build/assets/ba_data/data/languages/swedish.json": "5142a96597d17d8344be96a603da64ac", "build/assets/ba_data/data/languages/swedish.json": "5142a96597d17d8344be96a603da64ac",
"build/assets/ba_data/data/languages/tamil.json": "b4de1a2851afe4869c82e9acd94cd89c", "build/assets/ba_data/data/languages/tamil.json": "b9fcc523639f55e05c7f4e7914f3321a",
"build/assets/ba_data/data/languages/thai.json": "9c425b420f0488a7f883da98947657ad", "build/assets/ba_data/data/languages/thai.json": "1d665629361f302693dead39de8fa945",
"build/assets/ba_data/data/languages/turkish.json": "2be25c89ca754341f27750e0d595f31e", "build/assets/ba_data/data/languages/turkish.json": "2be25c89ca754341f27750e0d595f31e",
"build/assets/ba_data/data/languages/ukrainian.json": "b54a38e93deebafa5706ba2d1f626892", "build/assets/ba_data/data/languages/ukrainian.json": "b54a38e93deebafa5706ba2d1f626892",
"build/assets/ba_data/data/languages/venetian.json": "f896fc3df13a42f1bef8813ca80b1a09", "build/assets/ba_data/data/languages/venetian.json": "f896fc3df13a42f1bef8813ca80b1a09",
@ -4060,26 +4060,26 @@
"build/assets/windows/Win32/ucrtbased.dll": "2def5335207d41b21b9823f6805997f1", "build/assets/windows/Win32/ucrtbased.dll": "2def5335207d41b21b9823f6805997f1",
"build/assets/windows/Win32/vc_redist.x86.exe": "b08a55e2e77623fe657bea24f223a3ae", "build/assets/windows/Win32/vc_redist.x86.exe": "b08a55e2e77623fe657bea24f223a3ae",
"build/assets/windows/Win32/vcruntime140d.dll": "865b2af4d1e26a1a8073c89acb06e599", "build/assets/windows/Win32/vcruntime140d.dll": "865b2af4d1e26a1a8073c89acb06e599",
"build/prefab/full/linux_arm64_gui/debug/ballisticakit": "d5a8312cd9cf65f32ca2a7c4a2063c03", "build/prefab/full/linux_arm64_gui/debug/ballisticakit": "1cf452ed4653e93921de7a2b6bb19669",
"build/prefab/full/linux_arm64_gui/release/ballisticakit": "aecb00e9044fa677583e1036fa7875d8", "build/prefab/full/linux_arm64_gui/release/ballisticakit": "2635ca7a0e0d9ca9291b0611a6e3a4a9",
"build/prefab/full/linux_arm64_server/debug/dist/ballisticakit_headless": "eca7f9ab892edfa7423a9d4a6f89e571", "build/prefab/full/linux_arm64_server/debug/dist/ballisticakit_headless": "ae3efe5eaf140d58ad2404119f41f832",
"build/prefab/full/linux_arm64_server/release/dist/ballisticakit_headless": "99647f48362f84112d23a9bc89eaa983", "build/prefab/full/linux_arm64_server/release/dist/ballisticakit_headless": "1f942a62356c44611567f92b8eeac697",
"build/prefab/full/linux_x86_64_gui/debug/ballisticakit": "31e21a64d77fc0834832b633a26d986b", "build/prefab/full/linux_x86_64_gui/debug/ballisticakit": "dbc6bf037fe98ab85df435f0f5dcd64b",
"build/prefab/full/linux_x86_64_gui/release/ballisticakit": "7c12b4078c3af6e627a4051b1c1d8370", "build/prefab/full/linux_x86_64_gui/release/ballisticakit": "70a6974c4b620e124f05b40dcd6813db",
"build/prefab/full/linux_x86_64_server/debug/dist/ballisticakit_headless": "f7a66c48321efa4462e8eae6b72db2b2", "build/prefab/full/linux_x86_64_server/debug/dist/ballisticakit_headless": "5d01f7bc6644d3a67ca463af36bd5535",
"build/prefab/full/linux_x86_64_server/release/dist/ballisticakit_headless": "08cdbeb2ca4fa8c996f3369680c4e5cd", "build/prefab/full/linux_x86_64_server/release/dist/ballisticakit_headless": "52471d786b3ee3fc810129b33d18f6a9",
"build/prefab/full/mac_arm64_gui/debug/ballisticakit": "f92679bab5a0d057427962869e19f057", "build/prefab/full/mac_arm64_gui/debug/ballisticakit": "efd3526235cbaf84c126ece8260d39d2",
"build/prefab/full/mac_arm64_gui/release/ballisticakit": "d5bcd695f84dab1ab32655989d399c9e", "build/prefab/full/mac_arm64_gui/release/ballisticakit": "a1c07fde2b8ab53fb9cf11d7f86a39d8",
"build/prefab/full/mac_arm64_server/debug/dist/ballisticakit_headless": "c766f437ece15dae0ee971e4c2e10a2d", "build/prefab/full/mac_arm64_server/debug/dist/ballisticakit_headless": "2361961394bf06d914077f41969e7013",
"build/prefab/full/mac_arm64_server/release/dist/ballisticakit_headless": "cbecc4c11b9aa4621abfdc996fecfd74", "build/prefab/full/mac_arm64_server/release/dist/ballisticakit_headless": "ec9d52d27119a55d8a86e40b04785cfc",
"build/prefab/full/mac_x86_64_gui/debug/ballisticakit": "7af782c9d9bcf1396a15dea6f2493d70", "build/prefab/full/mac_x86_64_gui/debug/ballisticakit": "0a10c3f196f48cd338b66240755d25ed",
"build/prefab/full/mac_x86_64_gui/release/ballisticakit": "2c04f3f68db3e73e4aad4c656d956c00", "build/prefab/full/mac_x86_64_gui/release/ballisticakit": "6af21795e58dfe4790686ae21886bfcd",
"build/prefab/full/mac_x86_64_server/debug/dist/ballisticakit_headless": "132c83ee8811828739601ac3d0599fe9", "build/prefab/full/mac_x86_64_server/debug/dist/ballisticakit_headless": "ddb898d18b9f1a59e4fa9d57a6f7a7d8",
"build/prefab/full/mac_x86_64_server/release/dist/ballisticakit_headless": "8de942a2e1ff96c147a9500a56ca4f64", "build/prefab/full/mac_x86_64_server/release/dist/ballisticakit_headless": "10852d507a445bcadb19dd1468aff190",
"build/prefab/full/windows_x86_gui/debug/BallisticaKit.exe": "6bf51ccbd01937bf1b28cfffe029d857", "build/prefab/full/windows_x86_gui/debug/BallisticaKit.exe": "ad4c7c93ab7a7c31cf30719a05fcb412",
"build/prefab/full/windows_x86_gui/release/BallisticaKit.exe": "c5f0d834a47852f1c240e17a6c933e0a", "build/prefab/full/windows_x86_gui/release/BallisticaKit.exe": "ac24b39b493dc7ed6243e7d297b03992",
"build/prefab/full/windows_x86_server/debug/dist/BallisticaKitHeadless.exe": "4f74b71dabd207bee732dc91c9a28dc4", "build/prefab/full/windows_x86_server/debug/dist/BallisticaKitHeadless.exe": "12be5e9f91892836b5a0e1ef6280a71a",
"build/prefab/full/windows_x86_server/release/dist/BallisticaKitHeadless.exe": "f48ab8e4c4d05f4b2231bebf33c965f1", "build/prefab/full/windows_x86_server/release/dist/BallisticaKitHeadless.exe": "ebf1b09620266808688f72bf99785657",
"build/prefab/lib/linux_arm64_gui/debug/libballisticaplus.a": "ee36a39fd0f524989cb68930c89c8868", "build/prefab/lib/linux_arm64_gui/debug/libballisticaplus.a": "ee36a39fd0f524989cb68930c89c8868",
"build/prefab/lib/linux_arm64_gui/release/libballisticaplus.a": "dbed9145e5db116d92aa47cb9e98da39", "build/prefab/lib/linux_arm64_gui/release/libballisticaplus.a": "dbed9145e5db116d92aa47cb9e98da39",
"build/prefab/lib/linux_arm64_server/debug/libballisticaplus.a": "ee36a39fd0f524989cb68930c89c8868", "build/prefab/lib/linux_arm64_server/debug/libballisticaplus.a": "ee36a39fd0f524989cb68930c89c8868",
@ -4096,14 +4096,14 @@
"build/prefab/lib/mac_x86_64_gui/release/libballisticaplus.a": "0896e849885cef50bcf33ce863efa7d2", "build/prefab/lib/mac_x86_64_gui/release/libballisticaplus.a": "0896e849885cef50bcf33ce863efa7d2",
"build/prefab/lib/mac_x86_64_server/debug/libballisticaplus.a": "e53c808357cc0a2f0da7b870be147083", "build/prefab/lib/mac_x86_64_server/debug/libballisticaplus.a": "e53c808357cc0a2f0da7b870be147083",
"build/prefab/lib/mac_x86_64_server/release/libballisticaplus.a": "0896e849885cef50bcf33ce863efa7d2", "build/prefab/lib/mac_x86_64_server/release/libballisticaplus.a": "0896e849885cef50bcf33ce863efa7d2",
"build/prefab/lib/windows/Debug_Win32/BallisticaKitGenericPlus.lib": "e34cc55fd284e31d9ed1151c5a51bf34", "build/prefab/lib/windows/Debug_Win32/BallisticaKitGenericPlus.lib": "f53601899c23c90c2b7e65836c805d8e",
"build/prefab/lib/windows/Debug_Win32/BallisticaKitGenericPlus.pdb": "36cb65be158a0103d81c82d8a51dc8b6", "build/prefab/lib/windows/Debug_Win32/BallisticaKitGenericPlus.pdb": "f31b348a7612e5fa3a968f3cc81cefcd",
"build/prefab/lib/windows/Debug_Win32/BallisticaKitHeadlessPlus.lib": "21f8a61745c2fec88749299f5aeeeaf9", "build/prefab/lib/windows/Debug_Win32/BallisticaKitHeadlessPlus.lib": "b8339779a2571b169f9d63c11aa7dfa3",
"build/prefab/lib/windows/Debug_Win32/BallisticaKitHeadlessPlus.pdb": "d61272f101f87b140b84895e482b07f4", "build/prefab/lib/windows/Debug_Win32/BallisticaKitHeadlessPlus.pdb": "511bc23565e830778d5ff183a201579d",
"build/prefab/lib/windows/Release_Win32/BallisticaKitGenericPlus.lib": "36c30bcd93d38569b9515ed17896d8de", "build/prefab/lib/windows/Release_Win32/BallisticaKitGenericPlus.lib": "b02faf2aa2df1de233a0549295e6b0ed",
"build/prefab/lib/windows/Release_Win32/BallisticaKitGenericPlus.pdb": "841c7cd3cc96c91ecd11335a91c0c465", "build/prefab/lib/windows/Release_Win32/BallisticaKitGenericPlus.pdb": "2e07aaa6d445caf3b33d79dc40bd2475",
"build/prefab/lib/windows/Release_Win32/BallisticaKitHeadlessPlus.lib": "305aab4423bf510f6bf95fe0c996128f", "build/prefab/lib/windows/Release_Win32/BallisticaKitHeadlessPlus.lib": "00f50fb4a3a9bbecd1b1188b78abae4b",
"build/prefab/lib/windows/Release_Win32/BallisticaKitHeadlessPlus.pdb": "f1066b8591d7859df76c8e976ceee2d5", "build/prefab/lib/windows/Release_Win32/BallisticaKitHeadlessPlus.pdb": "88fb67cb3f3752f0b0db1d583f90490d",
"src/assets/ba_data/python/babase/_mgen/__init__.py": "f885fed7f2ed98ff2ba271f9dbe3391c", "src/assets/ba_data/python/babase/_mgen/__init__.py": "f885fed7f2ed98ff2ba271f9dbe3391c",
"src/assets/ba_data/python/babase/_mgen/enums.py": "b611c090513a21e2fe90e56582724e9d", "src/assets/ba_data/python/babase/_mgen/enums.py": "b611c090513a21e2fe90e56582724e9d",
"src/ballistica/base/mgen/pyembed/binding_base.inc": "72bfed2cce8ff19741989dec28302f3f", "src/ballistica/base/mgen/pyembed/binding_base.inc": "72bfed2cce8ff19741989dec28302f3f",

View File

@ -1,4 +1,4 @@
### 1.7.33 (build 21766, api 8, 2024-02-01) ### 1.7.33 (build 21767, api 8, 2024-03-01)
- Stress test input-devices are now a bit smarter; they won't press any buttons - Stress test input-devices are now a bit smarter; they won't press any buttons
while UIs are up (this could cause lots of chaos if it happened). while UIs are up (this could cause lots of chaos if it happened).
- Added a 'Show Demos When Idle' option in advanced settings. If enabled, the - Added a 'Show Demos When Idle' option in advanced settings. If enabled, the

View File

@ -52,7 +52,7 @@ if TYPE_CHECKING:
# Build number and version of the ballistica binary we expect to be # Build number and version of the ballistica binary we expect to be
# using. # using.
TARGET_BALLISTICA_BUILD = 21766 TARGET_BALLISTICA_BUILD = 21767
TARGET_BALLISTICA_VERSION = '1.7.33' TARGET_BALLISTICA_VERSION = '1.7.33'

View File

@ -256,9 +256,7 @@ class Map(Actor):
return ( return (
None None
if val is None if val is None
else babase.vec3validate(val) else babase.vec3validate(val) if __debug__ else val
if __debug__
else val
) )
def get_def_points(self, name: str) -> list[Sequence[float]]: def get_def_points(self, name: str) -> list[Sequence[float]]:
@ -334,8 +332,7 @@ class Map(Actor):
closest_player_dist = 9999.0 closest_player_dist = 9999.0
for ppt in player_pts: for ppt in player_pts:
dist = (ppt - testpt).length() dist = (ppt - testpt).length()
if dist < closest_player_dist: closest_player_dist = min(dist, closest_player_dist)
closest_player_dist = dist
if closest_player_dist > farthestpt_dist: if closest_player_dist > farthestpt_dist:
farthestpt_dist = closest_player_dist farthestpt_dist = closest_player_dist
farthestpt = testpt farthestpt = testpt

View File

@ -52,9 +52,7 @@ class PlaylistCustomizeBrowserWindow(bui.Window):
self._height = ( self._height = (
380.0 380.0
if uiscale is bui.UIScale.SMALL if uiscale is bui.UIScale.SMALL
else 420.0 else 420.0 if uiscale is bui.UIScale.MEDIUM else 500.0
if uiscale is bui.UIScale.MEDIUM
else 500.0
) )
top_extra = 20.0 if uiscale is bui.UIScale.SMALL else 0.0 top_extra = 20.0 if uiscale is bui.UIScale.SMALL else 0.0
@ -66,13 +64,11 @@ class PlaylistCustomizeBrowserWindow(bui.Window):
scale=( scale=(
2.05 2.05
if uiscale is bui.UIScale.SMALL if uiscale is bui.UIScale.SMALL
else 1.5 else 1.5 if uiscale is bui.UIScale.MEDIUM else 1.0
if uiscale is bui.UIScale.MEDIUM ),
else 1.0 stack_offset=(
(0, -10) if uiscale is bui.UIScale.SMALL else (0, 0)
), ),
stack_offset=(0, -10)
if uiscale is bui.UIScale.SMALL
else (0, 0),
) )
) )
@ -118,9 +114,7 @@ class PlaylistCustomizeBrowserWindow(bui.Window):
scl = ( scl = (
1.1 1.1
if uiscale is bui.UIScale.SMALL if uiscale is bui.UIScale.SMALL
else 1.27 else 1.27 if uiscale is bui.UIScale.MEDIUM else 1.57
if uiscale is bui.UIScale.MEDIUM
else 1.57
) )
scl *= 0.63 scl *= 0.63
v -= 65.0 * scl v -= 65.0 * scl
@ -285,9 +279,11 @@ class PlaylistCustomizeBrowserWindow(bui.Window):
bui.widget( bui.widget(
edit=scrollwidget, edit=scrollwidget,
left_widget=new_button, left_widget=new_button,
right_widget=bui.get_special_widget('party_button') right_widget=(
if bui.app.ui_v1.use_toolbars bui.get_special_widget('party_button')
else None, if bui.app.ui_v1.use_toolbars
else None
),
) )
# make sure config exists # make sure config exists
@ -329,9 +325,9 @@ class PlaylistCustomizeBrowserWindow(bui.Window):
if self._selected_playlist_name is not None: if self._selected_playlist_name is not None:
cfg = bui.app.config cfg = bui.app.config
cfg[ cfg[self._pvars.config_name + ' Playlist Selection'] = (
self._pvars.config_name + ' Playlist Selection' self._selected_playlist_name
] = self._selected_playlist_name )
cfg.commit() cfg.commit()
bui.containerwidget( bui.containerwidget(
@ -408,9 +404,11 @@ class PlaylistCustomizeBrowserWindow(bui.Window):
text=self._get_playlist_display_name(pname), text=self._get_playlist_display_name(pname),
h_align='left', h_align='left',
v_align='center', v_align='center',
color=(0.6, 0.6, 0.7, 1.0) color=(
if pname == '__default__' (0.6, 0.6, 0.7, 1.0)
else (0.85, 0.85, 0.85, 1), if pname == '__default__'
else (0.85, 0.85, 0.85, 1)
),
always_highlight=True, always_highlight=True,
on_select_call=bui.Call(self._select, pname, index), on_select_call=bui.Call(self._select, pname, index),
on_activate_call=bui.Call(self._edit_button.activate), on_activate_call=bui.Call(self._edit_button.activate),
@ -458,12 +456,12 @@ class PlaylistCustomizeBrowserWindow(bui.Window):
# if we want and also lets us pass it to the game (since we reset # if we want and also lets us pass it to the game (since we reset
# the whole python environment that's not actually easy). # the whole python environment that's not actually easy).
cfg = bui.app.config cfg = bui.app.config
cfg[ cfg[self._pvars.config_name + ' Playlist Selection'] = (
self._pvars.config_name + ' Playlist Selection' self._selected_playlist_name
] = self._selected_playlist_name )
cfg[ cfg[self._pvars.config_name + ' Playlist Randomize'] = (
self._pvars.config_name + ' Playlist Randomize' self._do_randomize_val
] = self._do_randomize_val )
cfg.commit() cfg.commit()
def _new_playlist(self) -> None: def _new_playlist(self) -> None:
@ -536,12 +534,10 @@ class PlaylistCustomizeBrowserWindow(bui.Window):
# (we don't use len()-1 here because the default list adds one) # (we don't use len()-1 here because the default list adds one)
assert self._selected_playlist_index is not None assert self._selected_playlist_index is not None
if self._selected_playlist_index > len( self._selected_playlist_index = min(
bui.app.config[self._pvars.config_name + ' Playlists'] self._selected_playlist_index,
): len(bui.app.config[self._pvars.config_name + ' Playlists']),
self._selected_playlist_index = len( )
bui.app.config[self._pvars.config_name + ' Playlists']
)
self._refresh() self._refresh()
def _import_playlist(self) -> None: def _import_playlist(self) -> None:

View File

@ -43,9 +43,7 @@ class SoundtrackBrowserWindow(bui.Window):
self._height = ( self._height = (
340 340
if uiscale is bui.UIScale.SMALL if uiscale is bui.UIScale.SMALL
else 370 else 370 if uiscale is bui.UIScale.MEDIUM else 440
if uiscale is bui.UIScale.MEDIUM
else 440
) )
spacing = 40.0 spacing = 40.0
v = self._height - 40.0 v = self._height - 40.0
@ -60,13 +58,11 @@ class SoundtrackBrowserWindow(bui.Window):
scale=( scale=(
2.3 2.3
if uiscale is bui.UIScale.SMALL if uiscale is bui.UIScale.SMALL
else 1.6 else 1.6 if uiscale is bui.UIScale.MEDIUM else 1.0
if uiscale is bui.UIScale.MEDIUM ),
else 1.0 stack_offset=(
(0, -18) if uiscale is bui.UIScale.SMALL else (0, 0)
), ),
stack_offset=(0, -18)
if uiscale is bui.UIScale.SMALL
else (0, 0),
) )
) )
@ -110,9 +106,7 @@ class SoundtrackBrowserWindow(bui.Window):
scl = ( scl = (
1.0 1.0
if uiscale is bui.UIScale.SMALL if uiscale is bui.UIScale.SMALL
else 1.13 else 1.13 if uiscale is bui.UIScale.MEDIUM else 1.4
if uiscale is bui.UIScale.MEDIUM
else 1.4
) )
v -= 60.0 * scl v -= 60.0 * scl
self._new_button = btn = bui.buttonwidget( self._new_button = btn = bui.buttonwidget(
@ -245,9 +239,11 @@ class SoundtrackBrowserWindow(bui.Window):
bui.widget( bui.widget(
edit=self._scrollwidget, edit=self._scrollwidget,
left_widget=self._new_button, left_widget=self._new_button,
right_widget=bui.get_special_widget('party_button') right_widget=(
if bui.app.ui_v1.use_toolbars bui.get_special_widget('party_button')
else self._scrollwidget, if bui.app.ui_v1.use_toolbars
else self._scrollwidget
),
) )
self._col = bui.columnwidget(parent=scrollwidget, border=2, margin=0) self._col = bui.columnwidget(parent=scrollwidget, border=2, margin=0)
@ -286,8 +282,9 @@ class SoundtrackBrowserWindow(bui.Window):
bui.getsound('shieldDown').play() bui.getsound('shieldDown').play()
assert self._selected_soundtrack_index is not None assert self._selected_soundtrack_index is not None
assert self._soundtracks is not None assert self._soundtracks is not None
if self._selected_soundtrack_index >= len(self._soundtracks): self._selected_soundtrack_index = min(
self._selected_soundtrack_index = len(self._soundtracks) self._selected_soundtrack_index, len(self._soundtracks)
)
self._refresh() self._refresh()
def _delete_soundtrack(self) -> None: def _delete_soundtrack(self) -> None:

View File

@ -39,7 +39,7 @@ auto main(int argc, char** argv) -> int {
namespace ballistica { namespace ballistica {
// These are set automatically via script; don't modify them here. // These are set automatically via script; don't modify them here.
const int kEngineBuildNumber = 21766; const int kEngineBuildNumber = 21767;
const char* kEngineVersion = "1.7.33"; const char* kEngineVersion = "1.7.33";
const int kEngineApiVersion = 8; const int kEngineApiVersion = 8;

View File

@ -32,6 +32,7 @@ class HostConfig:
user: str = 'ubuntu' user: str = 'ubuntu'
port: int = 22 port: int = 22
mosh_port: int | None = None mosh_port: int | None = None
mosh_port_2: int | None = None
mosh_server_path: str | None = None mosh_server_path: str | None = None
mosh_shell: str = 'sh' mosh_shell: str = 'sh'
workspaces_root: str = '/home/${USER}/cloudshell_workspaces' workspaces_root: str = '/home/${USER}/cloudshell_workspaces'

View File

@ -236,7 +236,7 @@ class DirtyBit:
auto_dirty_seconds: float | None = None, auto_dirty_seconds: float | None = None,
min_update_interval: float | None = None, min_update_interval: float | None = None,
): ):
curtime = time.time() curtime = time.monotonic()
self._retry_interval = retry_interval self._retry_interval = retry_interval
self._auto_dirty_seconds = auto_dirty_seconds self._auto_dirty_seconds = auto_dirty_seconds
self._min_update_interval = min_update_interval self._min_update_interval = min_update_interval
@ -268,11 +268,13 @@ class DirtyBit:
# If we're freshly clean, set our next auto-dirty time (if we have # If we're freshly clean, set our next auto-dirty time (if we have
# one). # one).
if self._dirty and not value and self._auto_dirty_seconds is not None: if self._dirty and not value and self._auto_dirty_seconds is not None:
self._next_auto_dirty_time = time.time() + self._auto_dirty_seconds self._next_auto_dirty_time = (
time.monotonic() + self._auto_dirty_seconds
)
# If we're freshly dirty, schedule an immediate update. # If we're freshly dirty, schedule an immediate update.
if not self._dirty and value: if not self._dirty and value:
self._next_update_time = time.time() self._next_update_time = time.monotonic()
# If they want to enforce a minimum update interval, # If they want to enforce a minimum update interval,
# push out the next update time if it hasn't been long enough. # push out the next update time if it hasn't been long enough.
@ -295,7 +297,7 @@ class DirtyBit:
Takes into account the amount of time passed since the target Takes into account the amount of time passed since the target
was marked dirty or since should_update last returned True. was marked dirty or since should_update last returned True.
""" """
curtime = time.time() curtime = time.monotonic()
# Auto-dirty ourself if we're into that. # Auto-dirty ourself if we're into that.
if ( if (
@ -871,3 +873,11 @@ def ago_str(
timedelta_str(now - timeval, maxparts=maxparts, decimals=decimals) timedelta_str(now - timeval, maxparts=maxparts, decimals=decimals)
+ ' ago' + ' ago'
) )
def split_list(input_list: list[T], max_length: int) -> list[list[T]]:
"""Split a single list into smaller lists."""
return [
input_list[i : i + max_length]
for i in range(0, len(input_list), max_length)
]

View File

@ -103,14 +103,14 @@ def format_project_cpp_files(projroot: Path, full: bool) -> None:
dirtyfiles = cache.get_dirty_files() dirtyfiles = cache.get_dirty_files()
def format_file(filename: str) -> dict[str, Any]: def format_file(filename: str) -> dict[str, Any]:
start_time = time.time() start_time = time.monotonic()
# Note: seems os.system does not unlock the gil; # Note: seems os.system does not unlock the gil;
# make sure to use subprocess. # make sure to use subprocess.
result = subprocess.call(['clang-format', '-i', filename]) result = subprocess.call(['clang-format', '-i', filename])
if result != 0: if result != 0:
raise RuntimeError(f'Formatting failed for {filename}') raise RuntimeError(f'Formatting failed for {filename}')
duration = time.time() - start_time duration = time.monotonic() - start_time
print(f'Formatted {filename} in {duration:.2f} seconds.') print(f'Formatted {filename} in {duration:.2f} seconds.')
sys.stdout.flush() sys.stdout.flush()
return {'f': filename, 't': duration} return {'f': filename, 't': duration}
@ -514,7 +514,7 @@ def _run_pylint(
from pylint import lint from pylint import lint
from efro.terminal import Clr from efro.terminal import Clr
start_time = time.time() start_time = time.monotonic()
args = ['--rcfile', str(pylintrc), '--output-format=colorized'] args = ['--rcfile', str(pylintrc), '--output-format=colorized']
args += dirtyfiles args += dirtyfiles
@ -540,7 +540,7 @@ def _run_pylint(
if run.linter.msg_status != 0: if run.linter.msg_status != 0:
raise CleanError('Pylint failed.') raise CleanError('Pylint failed.')
duration = time.time() - start_time duration = time.monotonic() - start_time
print( print(
f'{Clr.GRN}Pylint passed for {name}' f'{Clr.GRN}Pylint passed for {name}'
f' in {duration:.1f} seconds.{Clr.RST}' f' in {duration:.1f} seconds.{Clr.RST}'
@ -796,12 +796,12 @@ def mypy(projroot: Path, full: bool) -> None:
filenames = get_script_filenames(projroot) filenames = get_script_filenames(projroot)
desc = '(full)' if full else '(incremental)' desc = '(full)' if full else '(incremental)'
print(f'{Clr.BLU}Running Mypy {desc}...{Clr.RST}', flush=True) print(f'{Clr.BLU}Running Mypy {desc}...{Clr.RST}', flush=True)
starttime = time.time() starttime = time.monotonic()
try: try:
mypy_files(projroot, filenames, full) mypy_files(projroot, filenames, full)
except Exception as exc: except Exception as exc:
raise CleanError('Mypy failed.') from exc raise CleanError('Mypy failed.') from exc
duration = time.time() - starttime duration = time.monotonic() - starttime
print( print(
f'{Clr.GRN}Mypy passed in {duration:.1f} seconds.{Clr.RST}', flush=True f'{Clr.GRN}Mypy passed in {duration:.1f} seconds.{Clr.RST}', flush=True
) )
@ -819,7 +819,7 @@ def dmypy(projroot: Path) -> None:
return return
print('Running Mypy (daemon)...', flush=True) print('Running Mypy (daemon)...', flush=True)
starttime = time.time() starttime = time.monotonic()
try: try:
args = [ args = [
'dmypy', 'dmypy',
@ -834,7 +834,7 @@ def dmypy(projroot: Path) -> None:
subprocess.run(args, check=True) subprocess.run(args, check=True)
except Exception as exc: except Exception as exc:
raise CleanError('Mypy daemon: fail.') from exc raise CleanError('Mypy daemon: fail.') from exc
duration = time.time() - starttime duration = time.monotonic() - starttime
print( print(
f'{Clr.GRN}Mypy daemon passed in {duration:.1f} seconds.{Clr.RST}', f'{Clr.GRN}Mypy daemon passed in {duration:.1f} seconds.{Clr.RST}',
flush=True, flush=True,
@ -893,7 +893,7 @@ def _run_idea_inspections(
from efro.terminal import Clr from efro.terminal import Clr
start_time = time.time() start_time = time.monotonic()
print( print(
f'{Clr.BLU}{displayname} checking' f'{Clr.BLU}{displayname} checking'
f' {len(scripts)} file(s)...{Clr.RST}', f' {len(scripts)} file(s)...{Clr.RST}',
@ -944,7 +944,7 @@ def _run_idea_inspections(
f'{Clr.SRED}{displayname} inspection' f'{Clr.SRED}{displayname} inspection'
f' found {total_errors} error(s).{Clr.RST}' f' found {total_errors} error(s).{Clr.RST}'
) )
duration = time.time() - start_time duration = time.monotonic() - start_time
print( print(
f'{Clr.GRN}{displayname} passed for {len(scripts)} files' f'{Clr.GRN}{displayname} passed for {len(scripts)} files'
f' in {duration:.1f} seconds.{Clr.RST}', f' in {duration:.1f} seconds.{Clr.RST}',

View File

@ -37,8 +37,8 @@ VERSION_MIN_TVOS = '9.0'
# why-is-lldb-generating-exc-bad-instruction-with-user-compiled-library-on-macos # why-is-lldb-generating-exc-bad-instruction-with-user-compiled-library-on-macos
# #
# For now will try to ride out this 3.0 LTS version as long as possible. # For now will try to ride out this 3.0 LTS version as long as possible.
OPENSSL_VER_APPLE = '3.0.12' OPENSSL_VER_APPLE = '3.0.13'
OPENSSL_VER_ANDROID = '3.0.12' OPENSSL_VER_ANDROID = '3.0.13'
LIBFFI_VER_APPLE = '3.4.4' LIBFFI_VER_APPLE = '3.4.4'
BZIP2_VER_APPLE = '1.0.8' BZIP2_VER_APPLE = '1.0.8'