lang testing works again

This commit is contained in:
Eric 2024-07-31 16:08:35 -07:00
parent 57e59fb859
commit 121a8c5ae6
No known key found for this signature in database
GPG Key ID: 89C93F0F8D6D5A98
11 changed files with 363 additions and 150 deletions

158
.efrocachemap generated
View File

@ -421,43 +421,43 @@
"build/assets/ba_data/audio/zoeOw.ogg": "74befe45a8417e95b6a2233c51992a26",
"build/assets/ba_data/audio/zoePickup01.ogg": "48ab8cddfcde36a750856f3f81dd20c8",
"build/assets/ba_data/audio/zoeScream01.ogg": "2b468aedfa8741090247f04eb9e6df55",
"build/assets/ba_data/data/langdata.json": "a49e8187178effbd077426d31f7d92ff",
"build/assets/ba_data/data/langdata.json": "99ad02cbe90ab3e46168ddf277633c68",
"build/assets/ba_data/data/languages/arabic.json": "dcb913b3d89fe665adbf35e697d2e5d0",
"build/assets/ba_data/data/languages/belarussian.json": "3d5523d0004293aa2df02f3f6f3b84f8",
"build/assets/ba_data/data/languages/chinese.json": "2c0105deead2412543323564bbbca749",
"build/assets/ba_data/data/languages/chinese.json": "d4a89bf007a0624c6852c512d1d38cdc",
"build/assets/ba_data/data/languages/chinesetraditional.json": "319565f8a15667488f48dbce59278e39",
"build/assets/ba_data/data/languages/croatian.json": "e671b9d0c012be1a30f9c15eb1b81860",
"build/assets/ba_data/data/languages/czech.json": "74219f9b06ff098387b40f85a5b0124e",
"build/assets/ba_data/data/languages/croatian.json": "b23619cb396ac16640c47458f884b16a",
"build/assets/ba_data/data/languages/czech.json": "61bcfce75c0d53d2f2af709cee42187a",
"build/assets/ba_data/data/languages/danish.json": "8e57db30c5250df2abff14a822f83ea7",
"build/assets/ba_data/data/languages/dutch.json": "b0900d572c9141897d53d6574c471343",
"build/assets/ba_data/data/languages/english.json": "b88cb9e8035e238ccf327d62bde1d190",
"build/assets/ba_data/data/languages/english.json": "eae3a17af2efc2388f96c1e05c024455",
"build/assets/ba_data/data/languages/esperanto.json": "0e397cfa5f3fb8cef5f4a64f21cda880",
"build/assets/ba_data/data/languages/filipino.json": "f8d101b436fcf8f92f20a9983fb9fdee",
"build/assets/ba_data/data/languages/filipino.json": "fabaedeefc28cf02ec365ef37046ec0b",
"build/assets/ba_data/data/languages/french.json": "b7d11199756f0eb4f1a745ceee652b2a",
"build/assets/ba_data/data/languages/german.json": "198b9860c5b9df7b8e3e30b03d8755cb",
"build/assets/ba_data/data/languages/gibberish.json": "becbb2e96a0d85661c1af9ebbf6bb2fb",
"build/assets/ba_data/data/languages/gibberish.json": "085f438ccdb7553bbb7cf5d68e9cd300",
"build/assets/ba_data/data/languages/greek.json": "ad3c0d38f34d809824892d6f22808dbf",
"build/assets/ba_data/data/languages/hindi.json": "e56f0ffb57321660aa415e97c2dacfc2",
"build/assets/ba_data/data/languages/hungarian.json": "6b08fea24b72cc805ed0dc59e11c4cd6",
"build/assets/ba_data/data/languages/hindi.json": "54cd56bade6922b40989a8ac5e0c17f6",
"build/assets/ba_data/data/languages/hungarian.json": "0cf994bf9fedf004c9a1011bee179a07",
"build/assets/ba_data/data/languages/indonesian.json": "ed9038bf4b9216f93eb73e753e162706",
"build/assets/ba_data/data/languages/italian.json": "017f2b20584838d9f5ad88822a4caf62",
"build/assets/ba_data/data/languages/korean.json": "4e3524327a0174250aff5e1ef4c0c597",
"build/assets/ba_data/data/languages/malay.json": "f6ce0426d03a62612e3e436ed5d1be1f",
"build/assets/ba_data/data/languages/persian.json": "8e3a88cbb729570ffc8e0b06b3337a8f",
"build/assets/ba_data/data/languages/polish.json": "6585f57b1a389b8331b06f610bd8cc6f",
"build/assets/ba_data/data/languages/portuguese.json": "615a59bd03f84659158d9f2608a4ab21",
"build/assets/ba_data/data/languages/persian.json": "87f9dfc085f0ff715b17a8082fc79483",
"build/assets/ba_data/data/languages/polish.json": "3ce5635118b34ea89d6e0f83c8c7e9df",
"build/assets/ba_data/data/languages/portuguese.json": "0accd9462f0acbc5f869f33a2a7a24cd",
"build/assets/ba_data/data/languages/romanian.json": "ef68520f749cf3641d4e4225a6166349",
"build/assets/ba_data/data/languages/russian.json": "64f0b7347af86f8c4bec8ba8e781378d",
"build/assets/ba_data/data/languages/russian.json": "e7b90ce1eee8247e164ed7d1470f76bd",
"build/assets/ba_data/data/languages/serbian.json": "d7452dd72ac0e51680cb39b5ebaa1c69",
"build/assets/ba_data/data/languages/slovak.json": "3c08c748c96c71bd9e1d7291fb8817b6",
"build/assets/ba_data/data/languages/spanish.json": "63f80b2c37a1d8092304db1a10ecf789",
"build/assets/ba_data/data/languages/swedish.json": "5142a96597d17d8344be96a603da64ac",
"build/assets/ba_data/data/languages/tamil.json": "b9fcc523639f55e05c7f4e7914f3321a",
"build/assets/ba_data/data/languages/thai.json": "1d665629361f302693dead39de8fa945",
"build/assets/ba_data/data/languages/turkish.json": "babd1ea2ac160cc9253e836c41674fff",
"build/assets/ba_data/data/languages/ukrainian.json": "3f9ee9567a068b760bbf25433177db89",
"build/assets/ba_data/data/languages/turkish.json": "60691e93b58e1612901e8558b967697b",
"build/assets/ba_data/data/languages/ukrainian.json": "6207f0e4048f9391526321d879a5d61e",
"build/assets/ba_data/data/languages/venetian.json": "9bb01eea11d1627c0ceb876d26d86d0c",
"build/assets/ba_data/data/languages/vietnamese.json": "0b3bcd0be6d0a138316ad1a1d2553962",
"build/assets/ba_data/data/languages/vietnamese.json": "4bc1ba96ef291fed6d6409ad8cf7357f",
"build/assets/ba_data/data/maps/big_g.json": "1dd301d490643088a435ce75df971054",
"build/assets/ba_data/data/maps/bridgit.json": "6aea74805f4880cc11237c5734a24422",
"build/assets/ba_data/data/maps/courtyard.json": "4b836554c8949bcd2ae382f5e3c1a9cc",
@ -945,11 +945,45 @@
"build/assets/ba_data/meshes/zoeTorso.bob": "26a1007e98902178d8c62fd7069d5da5",
"build/assets/ba_data/meshes/zoeUpperArm.bob": "a8a881010ac1ee9ec5ca872d5c5e853a",
"build/assets/ba_data/meshes/zoeUpperLeg.bob": "95b2502f74c70f934927f67cd505c3ad",
"build/assets/ba_data/python-site-packages/certifi/__init__.py": "c935c5aee4052f1c76954ace35723dfe",
"build/assets/ba_data/python-site-packages/certifi/__init__.py": "8133ab2f7828219b186d4cecb2d5443b",
"build/assets/ba_data/python-site-packages/certifi/__main__.py": "ef02e73f8581609df189a9f61aca365b",
"build/assets/ba_data/python-site-packages/certifi/cacert.pem": "47f35c87a8abc6ace093db7c215f1eab",
"build/assets/ba_data/python-site-packages/certifi/cacert.pem": "072b2f0da8254144432a91d068fa6fb1",
"build/assets/ba_data/python-site-packages/certifi/core.py": "c1b8c102093ea26587619677c7ec6016",
"build/assets/ba_data/python-site-packages/typing_extensions.py": "1f6b4db70adb7ca05dff2b74f6cde8aa",
"build/assets/ba_data/python-site-packages/urllib3/__init__.py": "06cffcf88c8024218069f628c9938c50",
"build/assets/ba_data/python-site-packages/urllib3/_base_connection.py": "4404e529dbd3db128d9a2e60c6ed9243",
"build/assets/ba_data/python-site-packages/urllib3/_collections.py": "14963d7d43c0e51e777851c0e2868928",
"build/assets/ba_data/python-site-packages/urllib3/_request_methods.py": "87d6a7a77db1324e81d02f919c134f1a",
"build/assets/ba_data/python-site-packages/urllib3/_version.py": "46e3fbaaf7d02c2e55fcecc98deb5af8",
"build/assets/ba_data/python-site-packages/urllib3/connection.py": "3b49efceb61dfab0587286686e0e5ada",
"build/assets/ba_data/python-site-packages/urllib3/connectionpool.py": "e891fe6cdff0c03a3b670e225c0c4d88",
"build/assets/ba_data/python-site-packages/urllib3/contrib/__init__.py": "340c83beff7dcff8f5c7b87cd43cedaf",
"build/assets/ba_data/python-site-packages/urllib3/contrib/emscripten/__init__.py": "33531b60d1ff8b9073567240f2a1745f",
"build/assets/ba_data/python-site-packages/urllib3/contrib/emscripten/connection.py": "e9474e964b3feb3a523ccfab2b4b8f70",
"build/assets/ba_data/python-site-packages/urllib3/contrib/emscripten/fetch.py": "be8618e1c9a004108bf9f82f706503d7",
"build/assets/ba_data/python-site-packages/urllib3/contrib/emscripten/request.py": "da01c66ef924f2a2875d46adb87d7507",
"build/assets/ba_data/python-site-packages/urllib3/contrib/emscripten/response.py": "11208e765d5e9a1d481ded597e58c7d3",
"build/assets/ba_data/python-site-packages/urllib3/contrib/pyopenssl.py": "7a14ef1c58c55511581043ed25aebba3",
"build/assets/ba_data/python-site-packages/urllib3/contrib/socks.py": "bd5fed33c678f750ad9d1c754a26faf0",
"build/assets/ba_data/python-site-packages/urllib3/exceptions.py": "c346a13d762dcdff2f9cccc1d06c92d6",
"build/assets/ba_data/python-site-packages/urllib3/fields.py": "e24ef9e64962ca25322c0216cc4bc923",
"build/assets/ba_data/python-site-packages/urllib3/filepost.py": "d0a96fd7614fcaa368b26d8a769ff848",
"build/assets/ba_data/python-site-packages/urllib3/http2.py": "c307bd4c486d10070770c320145eb33c",
"build/assets/ba_data/python-site-packages/urllib3/poolmanager.py": "6dd72a45419efb9a2ab4e58c527d84d5",
"build/assets/ba_data/python-site-packages/urllib3/response.py": "f9f74417b5c2b4e5812b473435e3f455",
"build/assets/ba_data/python-site-packages/urllib3/util/__init__.py": "3ef2c56aa3ccfc25f466dc767f191b2c",
"build/assets/ba_data/python-site-packages/urllib3/util/connection.py": "888aa8c2f0a4a76749e6c3fd0df597e2",
"build/assets/ba_data/python-site-packages/urllib3/util/proxy.py": "2de685261596886eb8e2655e1af9ce7b",
"build/assets/ba_data/python-site-packages/urllib3/util/request.py": "a1fb665c16fa443eef15db73c5e29917",
"build/assets/ba_data/python-site-packages/urllib3/util/response.py": "e6a942417aa97215e358ae97b53bafe6",
"build/assets/ba_data/python-site-packages/urllib3/util/retry.py": "4eeffe54c7d400c4af731f02ef3fb074",
"build/assets/ba_data/python-site-packages/urllib3/util/ssl_.py": "c1b929bdfba831479f4b2d1538954536",
"build/assets/ba_data/python-site-packages/urllib3/util/ssl_match_hostname.py": "cbb28520c901282629d47375af2dd717",
"build/assets/ba_data/python-site-packages/urllib3/util/ssltransport.py": "0a51cd95ce75673b6c1117cb22da18b1",
"build/assets/ba_data/python-site-packages/urllib3/util/timeout.py": "e3bc037067fd6aaed823955be6f1792d",
"build/assets/ba_data/python-site-packages/urllib3/util/url.py": "6a37bafe6598aecba9e034be2085f583",
"build/assets/ba_data/python-site-packages/urllib3/util/util.py": "95e6d2fa1b0f310a991612421f1a29a1",
"build/assets/ba_data/python-site-packages/urllib3/util/wait.py": "0fe73d2b5515a9c1ff2d43a83d5a419a",
"build/assets/ba_data/textures/achievementBoxer.dds": "5b5c461e67f3a92105b56fe264a7dd28",
"build/assets/ba_data/textures/achievementBoxer.ktx": "1055e009423ea1d0bc3b172f9d7328bb",
"build/assets/ba_data/textures/achievementBoxer.pvr": "48f212189a6d83d29be410613b4f0005",
@ -4062,50 +4096,50 @@
"build/assets/windows/Win32/ucrtbased.dll": "2def5335207d41b21b9823f6805997f1",
"build/assets/windows/Win32/vc_redist.x86.exe": "b08a55e2e77623fe657bea24f223a3ae",
"build/assets/windows/Win32/vcruntime140d.dll": "865b2af4d1e26a1a8073c89acb06e599",
"build/prefab/full/linux_arm64_gui/debug/ballisticakit": "221f834ebd057ef663585d6ceef6806d",
"build/prefab/full/linux_arm64_gui/release/ballisticakit": "a2d8de14f13d4c3685fcaa317a7b27dc",
"build/prefab/full/linux_arm64_server/debug/dist/ballisticakit_headless": "39882077657944b36cf5491d43689329",
"build/prefab/full/linux_arm64_server/release/dist/ballisticakit_headless": "7b0fd21a0cba86a1edfc41fa7f5b0336",
"build/prefab/full/linux_x86_64_gui/debug/ballisticakit": "e652b60f054852cf0dd7efcafea4998d",
"build/prefab/full/linux_x86_64_gui/release/ballisticakit": "5deab4167830ac91daac9146c3768e04",
"build/prefab/full/linux_x86_64_server/debug/dist/ballisticakit_headless": "53171f039acbcb69a64983bc78cc3af9",
"build/prefab/full/linux_x86_64_server/release/dist/ballisticakit_headless": "bc906b8824309daab45cfdd64f4f75cc",
"build/prefab/full/mac_arm64_gui/debug/ballisticakit": "c9d66aa3f870b4820ccb00ad87edd30e",
"build/prefab/full/mac_arm64_gui/release/ballisticakit": "d99eeb561df547c8228110d66a90fbee",
"build/prefab/full/mac_arm64_server/debug/dist/ballisticakit_headless": "663c7ebd76302a57eeef8574f2244a70",
"build/prefab/full/mac_arm64_server/release/dist/ballisticakit_headless": "e73ac0a48a7921d5407cbabaa005a03a",
"build/prefab/full/mac_x86_64_gui/debug/ballisticakit": "bf05c75c4991e13b9246d7638b6a276a",
"build/prefab/full/mac_x86_64_gui/release/ballisticakit": "0edc9540a699d9b7af0916e0d8b286b3",
"build/prefab/full/mac_x86_64_server/debug/dist/ballisticakit_headless": "15e24928603d9b31bfdabdcb1129535c",
"build/prefab/full/mac_x86_64_server/release/dist/ballisticakit_headless": "a15e467a1d7a9a080952ee02194a85f9",
"build/prefab/full/windows_x86_gui/debug/BallisticaKit.exe": "f09896f99981cd6af58257e4bfbffa73",
"build/prefab/full/windows_x86_gui/release/BallisticaKit.exe": "deb4cdf43592b785f417d9e3992803ad",
"build/prefab/full/windows_x86_server/debug/dist/BallisticaKitHeadless.exe": "a46ba814582aef26306eb0811cd22d3f",
"build/prefab/full/windows_x86_server/release/dist/BallisticaKitHeadless.exe": "2352638cf37627c0cf9d11f8686194b7",
"build/prefab/lib/linux_arm64_gui/debug/libballisticaplus.a": "ffe8631c0ccc03751b4346fcf52d70ca",
"build/prefab/lib/linux_arm64_gui/release/libballisticaplus.a": "4241e93e1ea18414ee900046d1a62517",
"build/prefab/lib/linux_arm64_server/debug/libballisticaplus.a": "ffe8631c0ccc03751b4346fcf52d70ca",
"build/prefab/lib/linux_arm64_server/release/libballisticaplus.a": "4241e93e1ea18414ee900046d1a62517",
"build/prefab/lib/linux_x86_64_gui/debug/libballisticaplus.a": "cd90771128eda8880ac3f9d8d9fc530b",
"build/prefab/lib/linux_x86_64_gui/release/libballisticaplus.a": "093ec692aa3c6039ccc322d74f2d4448",
"build/prefab/lib/linux_x86_64_server/debug/libballisticaplus.a": "cd90771128eda8880ac3f9d8d9fc530b",
"build/prefab/lib/linux_x86_64_server/release/libballisticaplus.a": "093ec692aa3c6039ccc322d74f2d4448",
"build/prefab/lib/mac_arm64_gui/debug/libballisticaplus.a": "40f3006295c57114c2b5c467f463dd79",
"build/prefab/lib/mac_arm64_gui/release/libballisticaplus.a": "9049a93c01002bea0e6a580a106939c3",
"build/prefab/lib/mac_arm64_server/debug/libballisticaplus.a": "40f3006295c57114c2b5c467f463dd79",
"build/prefab/lib/mac_arm64_server/release/libballisticaplus.a": "9049a93c01002bea0e6a580a106939c3",
"build/prefab/lib/mac_x86_64_gui/debug/libballisticaplus.a": "07ee17e424c0ea754fd4ec9844063460",
"build/prefab/lib/mac_x86_64_gui/release/libballisticaplus.a": "0f34f852bf368c787f41533230767b3a",
"build/prefab/lib/mac_x86_64_server/debug/libballisticaplus.a": "1dcd03f0cfc75a53c3e682a3a46c96a0",
"build/prefab/lib/mac_x86_64_server/release/libballisticaplus.a": "0f34f852bf368c787f41533230767b3a",
"build/prefab/lib/windows/Debug_Win32/BallisticaKitGenericPlus.lib": "67f48c2af7ec20dc98e6423d3ff24d67",
"build/prefab/lib/windows/Debug_Win32/BallisticaKitGenericPlus.pdb": "0b0319aa1bbf146e14fe8103abb23bd3",
"build/prefab/lib/windows/Debug_Win32/BallisticaKitHeadlessPlus.lib": "9102b512eaf6bcf21d1dbcb9c597dbe4",
"build/prefab/lib/windows/Debug_Win32/BallisticaKitHeadlessPlus.pdb": "5dbc7599675f5cae378fcc24b8908e20",
"build/prefab/lib/windows/Release_Win32/BallisticaKitGenericPlus.lib": "eab27e872b8c3950b6bf9044fa3a42a2",
"build/prefab/lib/windows/Release_Win32/BallisticaKitGenericPlus.pdb": "d9b13c6efc258a4dabf158df63673b22",
"build/prefab/lib/windows/Release_Win32/BallisticaKitHeadlessPlus.lib": "27050ecb092d111cf013a561cfbb8c05",
"build/prefab/lib/windows/Release_Win32/BallisticaKitHeadlessPlus.pdb": "a4d3c5812734e5780859e21c7398844a",
"build/prefab/full/linux_arm64_gui/debug/ballisticakit": "f3045ecce09d6b02aa1143a63379f376",
"build/prefab/full/linux_arm64_gui/release/ballisticakit": "b2b23e2c86a0d8855047d39e4ce100f2",
"build/prefab/full/linux_arm64_server/debug/dist/ballisticakit_headless": "b0f07ceab1293255ba793bfcd8d9ce68",
"build/prefab/full/linux_arm64_server/release/dist/ballisticakit_headless": "bf6c4be5753337a3a0ed32eac9081a41",
"build/prefab/full/linux_x86_64_gui/debug/ballisticakit": "a2b3ed524a6355287303b5775ff11334",
"build/prefab/full/linux_x86_64_gui/release/ballisticakit": "4b90056bfa99a1816a56f9b53de33832",
"build/prefab/full/linux_x86_64_server/debug/dist/ballisticakit_headless": "ca006356e178979499ce55f53c273218",
"build/prefab/full/linux_x86_64_server/release/dist/ballisticakit_headless": "dcf0f076fd0ea67540f43b4bd41e3060",
"build/prefab/full/mac_arm64_gui/debug/ballisticakit": "b9cf3cacf64f9539c97ccdd08c6d9211",
"build/prefab/full/mac_arm64_gui/release/ballisticakit": "698c12289c1906613169297872b1e552",
"build/prefab/full/mac_arm64_server/debug/dist/ballisticakit_headless": "6ff0e52c7467d0f62bbee293fbb0ac65",
"build/prefab/full/mac_arm64_server/release/dist/ballisticakit_headless": "c1bf97907381bd2e82d3c0290dfcbda1",
"build/prefab/full/mac_x86_64_gui/debug/ballisticakit": "e0874cef443a76f7fc7b33ab7801838a",
"build/prefab/full/mac_x86_64_gui/release/ballisticakit": "c4542ae04345c472aeef9fa411cad2c1",
"build/prefab/full/mac_x86_64_server/debug/dist/ballisticakit_headless": "d6bf17052772c041dda3a7d0048f5804",
"build/prefab/full/mac_x86_64_server/release/dist/ballisticakit_headless": "e0018525599f2e5b0ce9d3091799b6da",
"build/prefab/full/windows_x86_gui/debug/BallisticaKit.exe": "175db7f5d22fe1d8f1c80fef4f7679e9",
"build/prefab/full/windows_x86_gui/release/BallisticaKit.exe": "d1817c7e638914e0362d598527fd0a04",
"build/prefab/full/windows_x86_server/debug/dist/BallisticaKitHeadless.exe": "2779fdf6b5968e55a2c056427dbce007",
"build/prefab/full/windows_x86_server/release/dist/BallisticaKitHeadless.exe": "952860758eb4ccc9422b911a69ad9f7b",
"build/prefab/lib/linux_arm64_gui/debug/libballisticaplus.a": "273ffd46a618fe347a570e6bd01d54a4",
"build/prefab/lib/linux_arm64_gui/release/libballisticaplus.a": "fa659b5d6119acba6570c92ce4d35ae2",
"build/prefab/lib/linux_arm64_server/debug/libballisticaplus.a": "273ffd46a618fe347a570e6bd01d54a4",
"build/prefab/lib/linux_arm64_server/release/libballisticaplus.a": "fa659b5d6119acba6570c92ce4d35ae2",
"build/prefab/lib/linux_x86_64_gui/debug/libballisticaplus.a": "712db7e1fcd065a3a22faddc0def8670",
"build/prefab/lib/linux_x86_64_gui/release/libballisticaplus.a": "4a4c19120f810ff5b4c7afbf11c23cf6",
"build/prefab/lib/linux_x86_64_server/debug/libballisticaplus.a": "712db7e1fcd065a3a22faddc0def8670",
"build/prefab/lib/linux_x86_64_server/release/libballisticaplus.a": "4a4c19120f810ff5b4c7afbf11c23cf6",
"build/prefab/lib/mac_arm64_gui/debug/libballisticaplus.a": "bbee8acd115ca24fc14146a9fc47c676",
"build/prefab/lib/mac_arm64_gui/release/libballisticaplus.a": "8b68b56dda9a9f421823e653b752445a",
"build/prefab/lib/mac_arm64_server/debug/libballisticaplus.a": "bbee8acd115ca24fc14146a9fc47c676",
"build/prefab/lib/mac_arm64_server/release/libballisticaplus.a": "8b68b56dda9a9f421823e653b752445a",
"build/prefab/lib/mac_x86_64_gui/debug/libballisticaplus.a": "3108eb4d3a41bde33702e22fb893b218",
"build/prefab/lib/mac_x86_64_gui/release/libballisticaplus.a": "3e5c5fd0a09f55ba7b05ce1e2ec7171e",
"build/prefab/lib/mac_x86_64_server/debug/libballisticaplus.a": "1659535e95e3047fda529543e265ac97",
"build/prefab/lib/mac_x86_64_server/release/libballisticaplus.a": "3e5c5fd0a09f55ba7b05ce1e2ec7171e",
"build/prefab/lib/windows/Debug_Win32/BallisticaKitGenericPlus.lib": "7d60528bda9b3e6abc046462da6e3e96",
"build/prefab/lib/windows/Debug_Win32/BallisticaKitGenericPlus.pdb": "bbbb1509630e43ed6d9f15a003369427",
"build/prefab/lib/windows/Debug_Win32/BallisticaKitHeadlessPlus.lib": "4f0d8de7fcc754e2443a1b52b476e5f7",
"build/prefab/lib/windows/Debug_Win32/BallisticaKitHeadlessPlus.pdb": "448b0ef8b5b27a87f5993e9f75e93efa",
"build/prefab/lib/windows/Release_Win32/BallisticaKitGenericPlus.lib": "130605828f3d97c90e195cccce392d4d",
"build/prefab/lib/windows/Release_Win32/BallisticaKitGenericPlus.pdb": "d548df51f78261788404040a1a2921b9",
"build/prefab/lib/windows/Release_Win32/BallisticaKitHeadlessPlus.lib": "96fc6408bd113f219a2289c1f2829a8a",
"build/prefab/lib/windows/Release_Win32/BallisticaKitHeadlessPlus.pdb": "c57f7d3676b8c4abe9ee887dbbb0cc21",
"src/assets/ba_data/python/babase/_mgen/__init__.py": "f885fed7f2ed98ff2ba271f9dbe3391c",
"src/assets/ba_data/python/babase/_mgen/enums.py": "cb299985623bbcc86015cb103a424ae6",
"src/ballistica/base/mgen/pyembed/binding_base.inc": "efa61468cf098f77cc6a234461d8b86d",

View File

@ -1,5 +1,16 @@
### 1.7.37 (build 21945, api 8, 2024-07-27)
### 1.7.37 (build 21947, api 8, 2024-07-31)
- Finally got things updated so language testing works again, and made it a bit
spiffier while at it. You now simply point the game at your test language and
it will update dynamically as you make edits; no need to download any files.
Example: if you are editing PirateSpeak, you should see an id such as
'PirateSpeak_2248' in the website url. You can then go to the game and run
`import babase; babase.app.lang.testlanguage('PirateSpeak_2248')` and you
should instantly see some lovely pirate-speak. Also, any changes you make on
the website should show up in the game within a few seconds. Enjoy!
- Added `urllib3` to our bundled third party Python modules. The engine will be
doing more heavy downloading with Asset Packages coming online so its time to
upgrade to a more modern web client library than Python's basic built in
urllib stuff.
### 1.7.36 (build 21944, api 8, 2024-07-26)
- Wired up Tokens, BombSquad's new purchasable currency. The first thing these
can be used for is storage packs on ballistica.net, but this will expand to

View File

@ -2,7 +2,7 @@ cpplint==1.6.1
dmgbuild==1.6.1
filelock==3.15.4
furo==2024.7.18
mypy==1.11.0
mypy==1.11.1
pbxproj==4.2.0
pdoc==14.6.0
pur==7.3.2
@ -19,3 +19,4 @@ types-certifi==2021.10.8.3
types-filelock==3.2.7
types-requests==2.32.0.20240712
typing_extensions==4.12.2
urllib3==2.2.2

View File

@ -953,6 +953,74 @@
"ba_data/python-site-packages/certifi/cacert.pem",
"ba_data/python-site-packages/certifi/core.py",
"ba_data/python-site-packages/typing_extensions.py",
"ba_data/python-site-packages/urllib3/__init__.py",
"ba_data/python-site-packages/urllib3/__pycache__/__init__.cpython-312.opt-1.pyc",
"ba_data/python-site-packages/urllib3/__pycache__/_base_connection.cpython-312.opt-1.pyc",
"ba_data/python-site-packages/urllib3/__pycache__/_collections.cpython-312.opt-1.pyc",
"ba_data/python-site-packages/urllib3/__pycache__/_request_methods.cpython-312.opt-1.pyc",
"ba_data/python-site-packages/urllib3/__pycache__/_version.cpython-312.opt-1.pyc",
"ba_data/python-site-packages/urllib3/__pycache__/connection.cpython-312.opt-1.pyc",
"ba_data/python-site-packages/urllib3/__pycache__/connectionpool.cpython-312.opt-1.pyc",
"ba_data/python-site-packages/urllib3/__pycache__/exceptions.cpython-312.opt-1.pyc",
"ba_data/python-site-packages/urllib3/__pycache__/fields.cpython-312.opt-1.pyc",
"ba_data/python-site-packages/urllib3/__pycache__/filepost.cpython-312.opt-1.pyc",
"ba_data/python-site-packages/urllib3/__pycache__/http2.cpython-312.opt-1.pyc",
"ba_data/python-site-packages/urllib3/__pycache__/poolmanager.cpython-312.opt-1.pyc",
"ba_data/python-site-packages/urllib3/__pycache__/response.cpython-312.opt-1.pyc",
"ba_data/python-site-packages/urllib3/_base_connection.py",
"ba_data/python-site-packages/urllib3/_collections.py",
"ba_data/python-site-packages/urllib3/_request_methods.py",
"ba_data/python-site-packages/urllib3/_version.py",
"ba_data/python-site-packages/urllib3/connection.py",
"ba_data/python-site-packages/urllib3/connectionpool.py",
"ba_data/python-site-packages/urllib3/contrib/__init__.py",
"ba_data/python-site-packages/urllib3/contrib/__pycache__/__init__.cpython-312.opt-1.pyc",
"ba_data/python-site-packages/urllib3/contrib/__pycache__/pyopenssl.cpython-312.opt-1.pyc",
"ba_data/python-site-packages/urllib3/contrib/__pycache__/socks.cpython-312.opt-1.pyc",
"ba_data/python-site-packages/urllib3/contrib/emscripten/__init__.py",
"ba_data/python-site-packages/urllib3/contrib/emscripten/__pycache__/__init__.cpython-312.opt-1.pyc",
"ba_data/python-site-packages/urllib3/contrib/emscripten/__pycache__/connection.cpython-312.opt-1.pyc",
"ba_data/python-site-packages/urllib3/contrib/emscripten/__pycache__/fetch.cpython-312.opt-1.pyc",
"ba_data/python-site-packages/urllib3/contrib/emscripten/__pycache__/request.cpython-312.opt-1.pyc",
"ba_data/python-site-packages/urllib3/contrib/emscripten/__pycache__/response.cpython-312.opt-1.pyc",
"ba_data/python-site-packages/urllib3/contrib/emscripten/connection.py",
"ba_data/python-site-packages/urllib3/contrib/emscripten/fetch.py",
"ba_data/python-site-packages/urllib3/contrib/emscripten/request.py",
"ba_data/python-site-packages/urllib3/contrib/emscripten/response.py",
"ba_data/python-site-packages/urllib3/contrib/pyopenssl.py",
"ba_data/python-site-packages/urllib3/contrib/socks.py",
"ba_data/python-site-packages/urllib3/exceptions.py",
"ba_data/python-site-packages/urllib3/fields.py",
"ba_data/python-site-packages/urllib3/filepost.py",
"ba_data/python-site-packages/urllib3/http2.py",
"ba_data/python-site-packages/urllib3/poolmanager.py",
"ba_data/python-site-packages/urllib3/response.py",
"ba_data/python-site-packages/urllib3/util/__init__.py",
"ba_data/python-site-packages/urllib3/util/__pycache__/__init__.cpython-312.opt-1.pyc",
"ba_data/python-site-packages/urllib3/util/__pycache__/connection.cpython-312.opt-1.pyc",
"ba_data/python-site-packages/urllib3/util/__pycache__/proxy.cpython-312.opt-1.pyc",
"ba_data/python-site-packages/urllib3/util/__pycache__/request.cpython-312.opt-1.pyc",
"ba_data/python-site-packages/urllib3/util/__pycache__/response.cpython-312.opt-1.pyc",
"ba_data/python-site-packages/urllib3/util/__pycache__/retry.cpython-312.opt-1.pyc",
"ba_data/python-site-packages/urllib3/util/__pycache__/ssl_.cpython-312.opt-1.pyc",
"ba_data/python-site-packages/urllib3/util/__pycache__/ssl_match_hostname.cpython-312.opt-1.pyc",
"ba_data/python-site-packages/urllib3/util/__pycache__/ssltransport.cpython-312.opt-1.pyc",
"ba_data/python-site-packages/urllib3/util/__pycache__/timeout.cpython-312.opt-1.pyc",
"ba_data/python-site-packages/urllib3/util/__pycache__/url.cpython-312.opt-1.pyc",
"ba_data/python-site-packages/urllib3/util/__pycache__/util.cpython-312.opt-1.pyc",
"ba_data/python-site-packages/urllib3/util/__pycache__/wait.cpython-312.opt-1.pyc",
"ba_data/python-site-packages/urllib3/util/connection.py",
"ba_data/python-site-packages/urllib3/util/proxy.py",
"ba_data/python-site-packages/urllib3/util/request.py",
"ba_data/python-site-packages/urllib3/util/response.py",
"ba_data/python-site-packages/urllib3/util/retry.py",
"ba_data/python-site-packages/urllib3/util/ssl_.py",
"ba_data/python-site-packages/urllib3/util/ssl_match_hostname.py",
"ba_data/python-site-packages/urllib3/util/ssltransport.py",
"ba_data/python-site-packages/urllib3/util/timeout.py",
"ba_data/python-site-packages/urllib3/util/url.py",
"ba_data/python-site-packages/urllib3/util/util.py",
"ba_data/python-site-packages/urllib3/util/wait.py",
"ba_data/textures/achievementBoxer.dds",
"ba_data/textures/achievementBoxer.ktx",
"ba_data/textures/achievementBoxer.pvr",

View File

@ -2706,6 +2706,40 @@ SCRIPT_TARGETS_PY_PRIVATE_COMMON = \
$(BUILD_DIR)/ba_data/python-site-packages/certifi/__main__.py \
$(BUILD_DIR)/ba_data/python-site-packages/certifi/core.py \
$(BUILD_DIR)/ba_data/python-site-packages/typing_extensions.py \
$(BUILD_DIR)/ba_data/python-site-packages/urllib3/__init__.py \
$(BUILD_DIR)/ba_data/python-site-packages/urllib3/_base_connection.py \
$(BUILD_DIR)/ba_data/python-site-packages/urllib3/_collections.py \
$(BUILD_DIR)/ba_data/python-site-packages/urllib3/_request_methods.py \
$(BUILD_DIR)/ba_data/python-site-packages/urllib3/_version.py \
$(BUILD_DIR)/ba_data/python-site-packages/urllib3/connection.py \
$(BUILD_DIR)/ba_data/python-site-packages/urllib3/connectionpool.py \
$(BUILD_DIR)/ba_data/python-site-packages/urllib3/contrib/__init__.py \
$(BUILD_DIR)/ba_data/python-site-packages/urllib3/contrib/emscripten/__init__.py \
$(BUILD_DIR)/ba_data/python-site-packages/urllib3/contrib/emscripten/connection.py \
$(BUILD_DIR)/ba_data/python-site-packages/urllib3/contrib/emscripten/fetch.py \
$(BUILD_DIR)/ba_data/python-site-packages/urllib3/contrib/emscripten/request.py \
$(BUILD_DIR)/ba_data/python-site-packages/urllib3/contrib/emscripten/response.py \
$(BUILD_DIR)/ba_data/python-site-packages/urllib3/contrib/pyopenssl.py \
$(BUILD_DIR)/ba_data/python-site-packages/urllib3/contrib/socks.py \
$(BUILD_DIR)/ba_data/python-site-packages/urllib3/exceptions.py \
$(BUILD_DIR)/ba_data/python-site-packages/urllib3/fields.py \
$(BUILD_DIR)/ba_data/python-site-packages/urllib3/filepost.py \
$(BUILD_DIR)/ba_data/python-site-packages/urllib3/http2.py \
$(BUILD_DIR)/ba_data/python-site-packages/urllib3/poolmanager.py \
$(BUILD_DIR)/ba_data/python-site-packages/urllib3/response.py \
$(BUILD_DIR)/ba_data/python-site-packages/urllib3/util/__init__.py \
$(BUILD_DIR)/ba_data/python-site-packages/urllib3/util/connection.py \
$(BUILD_DIR)/ba_data/python-site-packages/urllib3/util/proxy.py \
$(BUILD_DIR)/ba_data/python-site-packages/urllib3/util/request.py \
$(BUILD_DIR)/ba_data/python-site-packages/urllib3/util/response.py \
$(BUILD_DIR)/ba_data/python-site-packages/urllib3/util/retry.py \
$(BUILD_DIR)/ba_data/python-site-packages/urllib3/util/ssl_.py \
$(BUILD_DIR)/ba_data/python-site-packages/urllib3/util/ssl_match_hostname.py \
$(BUILD_DIR)/ba_data/python-site-packages/urllib3/util/ssltransport.py \
$(BUILD_DIR)/ba_data/python-site-packages/urllib3/util/timeout.py \
$(BUILD_DIR)/ba_data/python-site-packages/urllib3/util/url.py \
$(BUILD_DIR)/ba_data/python-site-packages/urllib3/util/util.py \
$(BUILD_DIR)/ba_data/python-site-packages/urllib3/util/wait.py \
$(BUILD_DIR)/sphinx/static/conf.py
SCRIPT_TARGETS_PYC_PRIVATE_COMMON = \
@ -2713,6 +2747,40 @@ SCRIPT_TARGETS_PYC_PRIVATE_COMMON = \
$(BUILD_DIR)/ba_data/python-site-packages/certifi/__pycache__/__main__.cpython-312.opt-1.pyc \
$(BUILD_DIR)/ba_data/python-site-packages/certifi/__pycache__/core.cpython-312.opt-1.pyc \
$(BUILD_DIR)/ba_data/python-site-packages/__pycache__/typing_extensions.cpython-312.opt-1.pyc \
$(BUILD_DIR)/ba_data/python-site-packages/urllib3/__pycache__/__init__.cpython-312.opt-1.pyc \
$(BUILD_DIR)/ba_data/python-site-packages/urllib3/__pycache__/_base_connection.cpython-312.opt-1.pyc \
$(BUILD_DIR)/ba_data/python-site-packages/urllib3/__pycache__/_collections.cpython-312.opt-1.pyc \
$(BUILD_DIR)/ba_data/python-site-packages/urllib3/__pycache__/_request_methods.cpython-312.opt-1.pyc \
$(BUILD_DIR)/ba_data/python-site-packages/urllib3/__pycache__/_version.cpython-312.opt-1.pyc \
$(BUILD_DIR)/ba_data/python-site-packages/urllib3/__pycache__/connection.cpython-312.opt-1.pyc \
$(BUILD_DIR)/ba_data/python-site-packages/urllib3/__pycache__/connectionpool.cpython-312.opt-1.pyc \
$(BUILD_DIR)/ba_data/python-site-packages/urllib3/contrib/__pycache__/__init__.cpython-312.opt-1.pyc \
$(BUILD_DIR)/ba_data/python-site-packages/urllib3/contrib/emscripten/__pycache__/__init__.cpython-312.opt-1.pyc \
$(BUILD_DIR)/ba_data/python-site-packages/urllib3/contrib/emscripten/__pycache__/connection.cpython-312.opt-1.pyc \
$(BUILD_DIR)/ba_data/python-site-packages/urllib3/contrib/emscripten/__pycache__/fetch.cpython-312.opt-1.pyc \
$(BUILD_DIR)/ba_data/python-site-packages/urllib3/contrib/emscripten/__pycache__/request.cpython-312.opt-1.pyc \
$(BUILD_DIR)/ba_data/python-site-packages/urllib3/contrib/emscripten/__pycache__/response.cpython-312.opt-1.pyc \
$(BUILD_DIR)/ba_data/python-site-packages/urllib3/contrib/__pycache__/pyopenssl.cpython-312.opt-1.pyc \
$(BUILD_DIR)/ba_data/python-site-packages/urllib3/contrib/__pycache__/socks.cpython-312.opt-1.pyc \
$(BUILD_DIR)/ba_data/python-site-packages/urllib3/__pycache__/exceptions.cpython-312.opt-1.pyc \
$(BUILD_DIR)/ba_data/python-site-packages/urllib3/__pycache__/fields.cpython-312.opt-1.pyc \
$(BUILD_DIR)/ba_data/python-site-packages/urllib3/__pycache__/filepost.cpython-312.opt-1.pyc \
$(BUILD_DIR)/ba_data/python-site-packages/urllib3/__pycache__/http2.cpython-312.opt-1.pyc \
$(BUILD_DIR)/ba_data/python-site-packages/urllib3/__pycache__/poolmanager.cpython-312.opt-1.pyc \
$(BUILD_DIR)/ba_data/python-site-packages/urllib3/__pycache__/response.cpython-312.opt-1.pyc \
$(BUILD_DIR)/ba_data/python-site-packages/urllib3/util/__pycache__/__init__.cpython-312.opt-1.pyc \
$(BUILD_DIR)/ba_data/python-site-packages/urllib3/util/__pycache__/connection.cpython-312.opt-1.pyc \
$(BUILD_DIR)/ba_data/python-site-packages/urllib3/util/__pycache__/proxy.cpython-312.opt-1.pyc \
$(BUILD_DIR)/ba_data/python-site-packages/urllib3/util/__pycache__/request.cpython-312.opt-1.pyc \
$(BUILD_DIR)/ba_data/python-site-packages/urllib3/util/__pycache__/response.cpython-312.opt-1.pyc \
$(BUILD_DIR)/ba_data/python-site-packages/urllib3/util/__pycache__/retry.cpython-312.opt-1.pyc \
$(BUILD_DIR)/ba_data/python-site-packages/urllib3/util/__pycache__/ssl_.cpython-312.opt-1.pyc \
$(BUILD_DIR)/ba_data/python-site-packages/urllib3/util/__pycache__/ssl_match_hostname.cpython-312.opt-1.pyc \
$(BUILD_DIR)/ba_data/python-site-packages/urllib3/util/__pycache__/ssltransport.cpython-312.opt-1.pyc \
$(BUILD_DIR)/ba_data/python-site-packages/urllib3/util/__pycache__/timeout.cpython-312.opt-1.pyc \
$(BUILD_DIR)/ba_data/python-site-packages/urllib3/util/__pycache__/url.cpython-312.opt-1.pyc \
$(BUILD_DIR)/ba_data/python-site-packages/urllib3/util/__pycache__/util.cpython-312.opt-1.pyc \
$(BUILD_DIR)/ba_data/python-site-packages/urllib3/util/__pycache__/wait.cpython-312.opt-1.pyc \
$(BUILD_DIR)/sphinx/static/__pycache__/conf.cpython-312.opt-1.pyc
# Rule to copy src asset scripts to dst.

View File

@ -6,6 +6,7 @@ from __future__ import annotations
import os
import json
import logging
from functools import partial
from typing import TYPE_CHECKING, overload, override
import _babase
@ -32,6 +33,7 @@ class LanguageSubsystem(AppSubsystem):
self._language: str | None = None
self._language_target: AttrDict | None = None
self._language_merged: AttrDict | None = None
self._test_timer: babase.AppTimer | None = None
@property
def locale(self) -> str:
@ -93,9 +95,44 @@ class LanguageSubsystem(AppSubsystem):
name for name in names if self._can_display_language(name)
)
def testlanguage(self, langid: str) -> None:
"""Set the app to test an in-progress language.
Pass a language id from the translation editor website as 'langid';
something like 'Gibberish_3263'. Once set to testing, the engine
will repeatedly download and apply that same test language, so
changes can be made to it and observed live.
"""
print(
f'Language test mode enabled.'
f' Will fetch and apply \'{langid}\' every 5 seconds,'
f' so you can see your changes live.'
)
self._test_timer = _babase.AppTimer(
5.0, partial(self._update_test_language, langid), repeat=True
)
self._update_test_language(langid)
def _on_test_lang_response(
self, langid: str, response: None | dict[str, Any]
) -> None:
if response is None:
return
self.setlanguage(response)
print(f'Fetched and applied {langid}.')
def _update_test_language(self, langid: str) -> None:
if _babase.app.classic is None:
raise RuntimeError('This requires classic.')
_babase.app.classic.master_server_v1_get(
'bsLangGet',
{'lang': langid, 'format': 'json'},
partial(self._on_test_lang_response, langid),
)
def setlanguage(
self,
language: str | None,
language: str | dict | None,
print_change: bool = True,
store_to_config: bool = True,
) -> None:
@ -110,18 +147,6 @@ class LanguageSubsystem(AppSubsystem):
cfg = _babase.app.config
cur_language = cfg.get('Lang', None)
# Store this in the config if its changing.
if language != cur_language and store_to_config:
if language is None:
if 'Lang' in cfg:
del cfg['Lang'] # Clear it out for default.
else:
cfg['Lang'] = language
cfg.commit()
switched = True
else:
switched = False
with open(
os.path.join(
_babase.app.env.data_directory,
@ -134,32 +159,55 @@ class LanguageSubsystem(AppSubsystem):
) as infile:
lenglishvalues = json.loads(infile.read())
# None implies default.
if language is None:
language = self.default_language
try:
if language == 'English':
lmodvalues = None
else:
lmodfile = os.path.join(
_babase.app.env.data_directory,
'ba_data',
'data',
'languages',
language.lower() + '.json',
)
with open(lmodfile, encoding='utf-8') as infile:
lmodvalues = json.loads(infile.read())
except Exception:
logging.exception("Error importing language '%s'.", language)
_babase.screenmessage(
f"Error setting language to '{language}'; see log for details.",
color=(1, 0, 0),
)
# Special case - passing a complete dict for testing.
if isinstance(language, dict):
self._language = 'Custom'
lmodvalues = language
switched = False
lmodvalues = None
print_change = False
store_to_config = False
else:
# Ok, we're setting a real language.
self._language = language
# Store this in the config if its changing.
if language != cur_language and store_to_config:
if language is None:
if 'Lang' in cfg:
del cfg['Lang'] # Clear it out for default.
else:
cfg['Lang'] = language
cfg.commit()
switched = True
else:
switched = False
# None implies default.
if language is None:
language = self.default_language
try:
if language == 'English':
lmodvalues = None
else:
lmodfile = os.path.join(
_babase.app.env.data_directory,
'ba_data',
'data',
'languages',
language.lower() + '.json',
)
with open(lmodfile, encoding='utf-8') as infile:
lmodvalues = json.loads(infile.read())
except Exception:
logging.exception("Error importing language '%s'.", language)
_babase.screenmessage(
f"Error setting language to '{language}';"
f' see log for details.',
color=(1, 0, 0),
)
switched = False
lmodvalues = None
self._language = language
# Create an attrdict of *just* our target language.
self._language_target = AttrDict()
@ -207,6 +255,7 @@ class LanguageSubsystem(AppSubsystem):
random_names = [n for n in random_names if n != '']
_babase.set_internal_language_keys(internal_vals, random_names)
if switched and print_change:
assert isinstance(language, str)
_babase.screenmessage(
Lstr(
resource='languageSetText',

View File

@ -4,11 +4,13 @@
from __future__ import annotations
import ssl
import socket
import threading
import ipaddress
from typing import TYPE_CHECKING
if TYPE_CHECKING:
import socket
pass
# Timeout for standard functions talking to the master-server/etc.
DEFAULT_REQUEST_TIMEOUT_SECONDS = 60
@ -18,6 +20,10 @@ class NetworkSubsystem:
"""Network related app subsystem."""
def __init__(self) -> None:
# Our shared SSL context. Creating these can be expensive so we
# create it here once and recycle for our various connections.
self.sslcontext = ssl.create_default_context()
# Anyone accessing/modifying zone_pings should hold this lock,
# as it is updated by a background thread.
self.zone_pings_lock = threading.Lock()
@ -27,8 +33,6 @@ class NetworkSubsystem:
# that a nearby server has been pinged.
self.zone_pings: dict[str, float] = {}
self._sslcontext: ssl.SSLContext | None = None
# For debugging.
self.v1_test_log: str = ''
self.v1_ctest_results: dict[int, str] = {}
@ -36,42 +40,12 @@ class NetworkSubsystem:
self.transport_state = 'uninited'
self.server_time_offset_hours: float | None = None
@property
def sslcontext(self) -> ssl.SSLContext:
"""Create/return our shared SSLContext.
This can be reused for all standard urllib requests/etc.
"""
# Note: I've run into older Android devices taking upwards of 1 second
# to put together a default SSLContext, so recycling one can definitely
# be a worthwhile optimization. This was suggested to me in this
# thread by one of Python's SSL maintainers:
# https://github.com/python/cpython/issues/94637
if self._sslcontext is None:
self._sslcontext = ssl.create_default_context()
return self._sslcontext
def get_ip_address_type(addr: str) -> socket.AddressFamily:
"""Return socket.AF_INET6 or socket.AF_INET4 for the provided address."""
import socket
socket_type = None
# First try it as an ipv4 address.
try:
socket.inet_pton(socket.AF_INET, addr)
socket_type = socket.AF_INET
except OSError:
pass
# Hmm apparently not ipv4; try ipv6.
if socket_type is None:
try:
socket.inet_pton(socket.AF_INET6, addr)
socket_type = socket.AF_INET6
except OSError:
pass
if socket_type is None:
raise ValueError(f'addr seems to be neither v4 or v6: {addr}')
return socket_type
version = ipaddress.ip_address(addr).version
if version == 4:
return socket.AF_INET
assert version == 6
return socket.AF_INET6

View File

@ -96,13 +96,9 @@ class MasterServerV1CallThread(threading.Thread):
self._data = babase.utf8_all(self._data)
babase.set_thread_name('BA_ServerCallThread')
if self._request_type == 'get':
url = (
plus.get_master_server_address()
+ '/'
+ self._request
+ '?'
+ urllib.parse.urlencode(self._data)
)
msaddr = plus.get_master_server_address()
dataenc = urllib.parse.urlencode(self._data)
url = f'{msaddr}/{self._request}?{dataenc}'
assert url is not None
response = urllib.request.urlopen(
urllib.request.Request(
@ -114,7 +110,7 @@ class MasterServerV1CallThread(threading.Thread):
timeout=babase.DEFAULT_REQUEST_TIMEOUT_SECONDS,
)
elif self._request_type == 'post':
url = plus.get_master_server_address() + '/' + self._request
url = f'{plus.get_master_server_address()}/{self._request}'
assert url is not None
response = urllib.request.urlopen(
urllib.request.Request(

View File

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

View File

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

View File

@ -40,3 +40,15 @@ class LoginType(Enum):
return 'Google Play Games'
case cls.GAME_CENTER:
return 'Game Center'
@property
def displaynameshort(self) -> str:
"""Human readable name for this value."""
cls = type(self)
match self:
case cls.EMAIL:
return 'Email'
case cls.GPGS:
return 'GPGS'
case cls.GAME_CENTER:
return 'Game Center'