mirror of
https://github.com/RYDE-WORK/ballistica.git
synced 2026-01-19 21:37:57 +08:00
common lib, lang, and lint tweaks
This commit is contained in:
parent
326f6677a0
commit
5382fe1c5f
102
.efrocachemap
102
.efrocachemap
@ -420,31 +420,31 @@
|
||||
"assets/build/ba_data/audio/zoeOw.ogg": "https://files.ballistica.net/cache/ba1/41/a0/d7edfdeada25eb8310de177ab7f5",
|
||||
"assets/build/ba_data/audio/zoePickup01.ogg": "https://files.ballistica.net/cache/ba1/15/ba/7db3f4534699517b8bff3ffae4b6",
|
||||
"assets/build/ba_data/audio/zoeScream01.ogg": "https://files.ballistica.net/cache/ba1/6d/de/d973377a4f5f975470f958119b0b",
|
||||
"assets/build/ba_data/data/langdata.json": "https://files.ballistica.net/cache/ba1/37/de/401548e7d95a407e0e99ef9391f3",
|
||||
"assets/build/ba_data/data/languages/arabic.json": "https://files.ballistica.net/cache/ba1/8c/fd/162ab3530e31d8cdcbf83de0f49d",
|
||||
"assets/build/ba_data/data/languages/belarussian.json": "https://files.ballistica.net/cache/ba1/ab/fd/cb157afc98dbe055ba63cf4c2f6f",
|
||||
"assets/build/ba_data/data/languages/chinese.json": "https://files.ballistica.net/cache/ba1/28/96/397e5c164a595c2b6c2d3eb2d4f1",
|
||||
"assets/build/ba_data/data/languages/chinesetraditional.json": "https://files.ballistica.net/cache/ba1/05/2d/42e361ce039cd8ca26af0e594b46",
|
||||
"assets/build/ba_data/data/langdata.json": "https://files.ballistica.net/cache/ba1/c7/34/1a9fa903adfbde472a0a7e97cc4b",
|
||||
"assets/build/ba_data/data/languages/arabic.json": "https://files.ballistica.net/cache/ba1/68/6d/7a251c216dda7550ca871871e2d1",
|
||||
"assets/build/ba_data/data/languages/belarussian.json": "https://files.ballistica.net/cache/ba1/55/8c/8d0a0585e434b94865ae4befc090",
|
||||
"assets/build/ba_data/data/languages/chinese.json": "https://files.ballistica.net/cache/ba1/29/0a/2a796246ae05dbf316a3551b8970",
|
||||
"assets/build/ba_data/data/languages/chinesetraditional.json": "https://files.ballistica.net/cache/ba1/ff/7c/3bcab4ae1f39977434acb0d6f795",
|
||||
"assets/build/ba_data/data/languages/croatian.json": "https://files.ballistica.net/cache/ba1/66/bf/6e98398016da261296b8c306560e",
|
||||
"assets/build/ba_data/data/languages/czech.json": "https://files.ballistica.net/cache/ba1/17/33/503a32d478e70661d09bcb7d2a82",
|
||||
"assets/build/ba_data/data/languages/czech.json": "https://files.ballistica.net/cache/ba1/f1/be/7b998f990a40c8d94003fa954853",
|
||||
"assets/build/ba_data/data/languages/danish.json": "https://files.ballistica.net/cache/ba1/3f/46/e4da3c1d2b0ebf916df55c608b28",
|
||||
"assets/build/ba_data/data/languages/dutch.json": "https://files.ballistica.net/cache/ba1/d1/07/37b7adc3dbec7328d26c5325f212",
|
||||
"assets/build/ba_data/data/languages/english.json": "https://files.ballistica.net/cache/ba1/00/a6/3563b95117cad093c9e56a27ba24",
|
||||
"assets/build/ba_data/data/languages/esperanto.json": "https://files.ballistica.net/cache/ba1/6e/fd/685a4e1da031474d47a1d9eb2731",
|
||||
"assets/build/ba_data/data/languages/french.json": "https://files.ballistica.net/cache/ba1/7f/ac/fd0257aba3ed874f69c30fd333ff",
|
||||
"assets/build/ba_data/data/languages/german.json": "https://files.ballistica.net/cache/ba1/a0/65/0802d58fd002738faa5fca0ac200",
|
||||
"assets/build/ba_data/data/languages/esperanto.json": "https://files.ballistica.net/cache/ba1/4c/c7/0184b8178869d1a3827a1bfcd5bb",
|
||||
"assets/build/ba_data/data/languages/french.json": "https://files.ballistica.net/cache/ba1/94/66/31892eb13c227d10562b1af3e0ac",
|
||||
"assets/build/ba_data/data/languages/german.json": "https://files.ballistica.net/cache/ba1/86/69/bba214c3bf4f9cdd4732ea331ac7",
|
||||
"assets/build/ba_data/data/languages/gibberish.json": "https://files.ballistica.net/cache/ba1/19/a6/47fd52b8890573fd0e54b9f7b7fd",
|
||||
"assets/build/ba_data/data/languages/greek.json": "https://files.ballistica.net/cache/ba1/87/ae/4b9de749699bfebb12c83ad8c1ac",
|
||||
"assets/build/ba_data/data/languages/hindi.json": "https://files.ballistica.net/cache/ba1/d9/57/0106b2a51dda269473f043e050d3",
|
||||
"assets/build/ba_data/data/languages/greek.json": "https://files.ballistica.net/cache/ba1/01/ea/cd9dac4a24a5c92495c37cd98371",
|
||||
"assets/build/ba_data/data/languages/hindi.json": "https://files.ballistica.net/cache/ba1/40/d7/84b6bc5eaef05145af3bef5e5e1c",
|
||||
"assets/build/ba_data/data/languages/hungarian.json": "https://files.ballistica.net/cache/ba1/2d/e5/3737c6c3979cf381321c5472bea5",
|
||||
"assets/build/ba_data/data/languages/indonesian.json": "https://files.ballistica.net/cache/ba1/69/80/7fb8313fee506801754937a92bd2",
|
||||
"assets/build/ba_data/data/languages/italian.json": "https://files.ballistica.net/cache/ba1/dd/97/42d117db366ad4584eb8c58d191e",
|
||||
"assets/build/ba_data/data/languages/italian.json": "https://files.ballistica.net/cache/ba1/6a/89/696e26d4372ccde4a9b30e04ff62",
|
||||
"assets/build/ba_data/data/languages/korean.json": "https://files.ballistica.net/cache/ba1/7f/57/fd4b9a63be0207ba2ad49e19253c",
|
||||
"assets/build/ba_data/data/languages/persian.json": "https://files.ballistica.net/cache/ba1/2d/d5/661c050696d5a2e70e678054b9e7",
|
||||
"assets/build/ba_data/data/languages/persian.json": "https://files.ballistica.net/cache/ba1/99/04/90b3005df45d258406caa4d439f8",
|
||||
"assets/build/ba_data/data/languages/polish.json": "https://files.ballistica.net/cache/ba1/04/fa/b24dd48bfbf3c2d67ee5ad1269c3",
|
||||
"assets/build/ba_data/data/languages/portuguese.json": "https://files.ballistica.net/cache/ba1/fe/6d/751277bc6b704d4f2a54cf1a9cfa",
|
||||
"assets/build/ba_data/data/languages/portuguese.json": "https://files.ballistica.net/cache/ba1/7c/34/8fefa40f6b2d59d1b3755e5aa715",
|
||||
"assets/build/ba_data/data/languages/romanian.json": "https://files.ballistica.net/cache/ba1/82/12/57bf144e12be229a9b70da9c45cb",
|
||||
"assets/build/ba_data/data/languages/russian.json": "https://files.ballistica.net/cache/ba1/6e/5c/ed5c985d25c0ebbd7e47a89cb6c3",
|
||||
"assets/build/ba_data/data/languages/russian.json": "https://files.ballistica.net/cache/ba1/22/ae/7398a74f9d86248169a675a7f2bd",
|
||||
"assets/build/ba_data/data/languages/serbian.json": "https://files.ballistica.net/cache/ba1/38/d6/376433fa66f1798c64035efc1371",
|
||||
"assets/build/ba_data/data/languages/slovak.json": "https://files.ballistica.net/cache/ba1/9f/a6/a2c9d7f3f90a2320aa45ccfd65cd",
|
||||
"assets/build/ba_data/data/languages/spanish.json": "https://files.ballistica.net/cache/ba1/66/9e/df12c6325c503f8eaef4a83259c4",
|
||||
@ -453,8 +453,8 @@
|
||||
"assets/build/ba_data/data/languages/thai.json": "https://files.ballistica.net/cache/ba1/dd/de/c197fa9aff42e4422bc66b95ad88",
|
||||
"assets/build/ba_data/data/languages/turkish.json": "https://files.ballistica.net/cache/ba1/65/e4/b9308f15437972209b4d3fce7abd",
|
||||
"assets/build/ba_data/data/languages/ukrainian.json": "https://files.ballistica.net/cache/ba1/8f/42/56f3ebcc6005f382449c1c2422fd",
|
||||
"assets/build/ba_data/data/languages/venetian.json": "https://files.ballistica.net/cache/ba1/4f/cc/285443e3e8e65a318df338bbc7f7",
|
||||
"assets/build/ba_data/data/languages/vietnamese.json": "https://files.ballistica.net/cache/ba1/e4/8b/93243a2723b04ff70580afc9ebb7",
|
||||
"assets/build/ba_data/data/languages/venetian.json": "https://files.ballistica.net/cache/ba1/ff/a7/d74151ee6fa1d228cafb52e52f04",
|
||||
"assets/build/ba_data/data/languages/vietnamese.json": "https://files.ballistica.net/cache/ba1/0b/24/3cc2b5a6ebe4bca1e01b40f8ed09",
|
||||
"assets/build/ba_data/data/maps/big_g.json": "https://files.ballistica.net/cache/ba1/47/0a/a617cc85d927b576c4e6fc1091ed",
|
||||
"assets/build/ba_data/data/maps/bridgit.json": "https://files.ballistica.net/cache/ba1/03/4b/57ee9b42854b26f23f81bd8c58ef",
|
||||
"assets/build/ba_data/data/maps/courtyard.json": "https://files.ballistica.net/cache/ba1/03/38/344dd05bfef7bbdf464035ec5aa2",
|
||||
@ -3966,26 +3966,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/72/82/86956fae909ac2fe2a1abd84a361",
|
||||
"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/5a/bd/c4f53db2e9c242c3ec20ea993d0c",
|
||||
"build/prefab/full/linux_arm64_gui/debug/ballisticacore": "https://files.ballistica.net/cache/ba1/5a/43/31f1e7a1f06ff634e853b2fe478b",
|
||||
"build/prefab/full/linux_arm64_gui/release/ballisticacore": "https://files.ballistica.net/cache/ba1/74/1d/fc9e33e565475daaac80da5252f0",
|
||||
"build/prefab/full/linux_arm64_server/debug/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/d5/ec/fc764a22eecbe3d9718a7f74f445",
|
||||
"build/prefab/full/linux_arm64_server/release/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/13/58/58ef70e856ea2b396a337ad6a6ec",
|
||||
"build/prefab/full/linux_x86_64_gui/debug/ballisticacore": "https://files.ballistica.net/cache/ba1/6d/4a/9ba90e9fd61755076d5fbcb58ae3",
|
||||
"build/prefab/full/linux_arm64_server/debug/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/a1/2b/84b86a21eaa2622439ddf96a879e",
|
||||
"build/prefab/full/linux_arm64_server/release/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/fb/ba/c6f4160413f84da9fc199eba8906",
|
||||
"build/prefab/full/linux_x86_64_gui/debug/ballisticacore": "https://files.ballistica.net/cache/ba1/2d/6e/32e40af876d49a80c3cda22395ee",
|
||||
"build/prefab/full/linux_x86_64_gui/release/ballisticacore": "https://files.ballistica.net/cache/ba1/9c/7b/ac1a200be0f37078af0991faca3b",
|
||||
"build/prefab/full/linux_x86_64_server/debug/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/55/d2/4567b7d25fe0a029d32768bd46af",
|
||||
"build/prefab/full/linux_x86_64_server/release/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/8b/e0/ecbdbf83e5a7616badddfe77f18f",
|
||||
"build/prefab/full/mac_arm64_gui/debug/ballisticacore": "https://files.ballistica.net/cache/ba1/d6/63/7efe2c4dbeaf51d8a82db50a57fe",
|
||||
"build/prefab/full/mac_arm64_gui/release/ballisticacore": "https://files.ballistica.net/cache/ba1/ef/2a/69c1beeac35c146d64114c08e91e",
|
||||
"build/prefab/full/mac_arm64_server/debug/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/09/cb/4817cd1ac9cc3f531880ac94ca50",
|
||||
"build/prefab/full/mac_arm64_server/release/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/5e/5f/06e653fe68ae2c2e0854049bc82d",
|
||||
"build/prefab/full/mac_x86_64_gui/debug/ballisticacore": "https://files.ballistica.net/cache/ba1/98/91/df35b46c01a9b41c711119804803",
|
||||
"build/prefab/full/mac_x86_64_gui/release/ballisticacore": "https://files.ballistica.net/cache/ba1/9b/32/302e9723c2a9639c2535f9c5a4ea",
|
||||
"build/prefab/full/mac_x86_64_server/debug/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/dc/80/0586887648abd48e1ad560f29b38",
|
||||
"build/prefab/full/mac_x86_64_server/release/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/c0/91/0146b1d2b7d37164e70587320f75",
|
||||
"build/prefab/full/windows_x86_gui/debug/BallisticaCore.exe": "https://files.ballistica.net/cache/ba1/c8/28/adc7da698869a06ed823e5db852b",
|
||||
"build/prefab/full/windows_x86_gui/release/BallisticaCore.exe": "https://files.ballistica.net/cache/ba1/2c/2b/95ea5843e16a38e454140d9645bb",
|
||||
"build/prefab/full/windows_x86_server/debug/dist/BallisticaCoreHeadless.exe": "https://files.ballistica.net/cache/ba1/fa/55/d98fc407a25d56e3248c7fd0d582",
|
||||
"build/prefab/full/windows_x86_server/release/dist/BallisticaCoreHeadless.exe": "https://files.ballistica.net/cache/ba1/79/87/02fd242badf5b6a3e108624522db",
|
||||
"build/prefab/full/linux_x86_64_server/debug/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/03/c5/dcd0c09e5b0020923459abc08d76",
|
||||
"build/prefab/full/linux_x86_64_server/release/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/52/61/4ee73c405443f6807611f0ab4d65",
|
||||
"build/prefab/full/mac_arm64_gui/debug/ballisticacore": "https://files.ballistica.net/cache/ba1/bd/25/4532f4fec61de6c5d3c0dc3e37dd",
|
||||
"build/prefab/full/mac_arm64_gui/release/ballisticacore": "https://files.ballistica.net/cache/ba1/af/4d/3d6f711c2b06ac774609bdb563b0",
|
||||
"build/prefab/full/mac_arm64_server/debug/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/8b/7a/35d194e46cf4329d2da83de82f21",
|
||||
"build/prefab/full/mac_arm64_server/release/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/44/4f/c7f841bc873cf278c25dd983c97c",
|
||||
"build/prefab/full/mac_x86_64_gui/debug/ballisticacore": "https://files.ballistica.net/cache/ba1/67/d7/97716594f45bdbee32f45d6416bd",
|
||||
"build/prefab/full/mac_x86_64_gui/release/ballisticacore": "https://files.ballistica.net/cache/ba1/63/5f/3e20ac2d36d2c1746fe5a1b57759",
|
||||
"build/prefab/full/mac_x86_64_server/debug/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/5c/60/946f24032d0a9981663bc26bf1e4",
|
||||
"build/prefab/full/mac_x86_64_server/release/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/4c/17/6afb195ab8ec46b8ed76b940d2ed",
|
||||
"build/prefab/full/windows_x86_gui/debug/BallisticaCore.exe": "https://files.ballistica.net/cache/ba1/4f/59/4e0f38c6ca7b876e121c4e911dc7",
|
||||
"build/prefab/full/windows_x86_gui/release/BallisticaCore.exe": "https://files.ballistica.net/cache/ba1/2d/66/c1d56619c94d1203b4a7a73959a0",
|
||||
"build/prefab/full/windows_x86_server/debug/dist/BallisticaCoreHeadless.exe": "https://files.ballistica.net/cache/ba1/71/98/e4589dd1fd33c8483281a72d5ef5",
|
||||
"build/prefab/full/windows_x86_server/release/dist/BallisticaCoreHeadless.exe": "https://files.ballistica.net/cache/ba1/ac/46/d501ee43d3204887092560d25de0",
|
||||
"build/prefab/lib/linux_arm64_gui/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/5f/7c/427e8a1af1c95bf40211adb1a10e",
|
||||
"build/prefab/lib/linux_arm64_gui/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/5e/fe/0366d7ace626419f14c2bd80e266",
|
||||
"build/prefab/lib/linux_arm64_server/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/9b/2c/7be9dce2d9aff8cf04508d07dff0",
|
||||
@ -3994,22 +3994,22 @@
|
||||
"build/prefab/lib/linux_x86_64_gui/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/d7/2c/9fa96710e25f6242c42ff3efd309",
|
||||
"build/prefab/lib/linux_x86_64_server/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/89/45/43b51cddf1b4655d31018158b344",
|
||||
"build/prefab/lib/linux_x86_64_server/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/8c/6d/c3f165109101ae65f3ecbc556492",
|
||||
"build/prefab/lib/mac_arm64_gui/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/44/f1/1cfd8a4bc54d87f86bbfdd9fa439",
|
||||
"build/prefab/lib/mac_arm64_gui/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/d9/c2/15a504dbea88fe4eda1c57f67c76",
|
||||
"build/prefab/lib/mac_arm64_server/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/3f/1e/3e78487f4d70a2c5974ec0198fb1",
|
||||
"build/prefab/lib/mac_arm64_server/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/18/4a/48fd42b279a165b41c43c7973f5b",
|
||||
"build/prefab/lib/mac_x86_64_gui/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/ae/61/8f2ab7f636f09ff8cabf7e5d8d37",
|
||||
"build/prefab/lib/mac_x86_64_gui/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/66/bb/3f0591d11d845c285ceb0e322121",
|
||||
"build/prefab/lib/mac_x86_64_server/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/81/a4/21f0084dde2fc524b4683b5efed0",
|
||||
"build/prefab/lib/mac_x86_64_server/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/9f/03/dbe0091c812e01eb84b66de55b36",
|
||||
"build/prefab/lib/windows/Debug_Win32/BallisticaCoreGenericInternal.lib": "https://files.ballistica.net/cache/ba1/d9/52/cdf3f127aba14e60602cc69c9276",
|
||||
"build/prefab/lib/windows/Debug_Win32/BallisticaCoreGenericInternal.pdb": "https://files.ballistica.net/cache/ba1/04/c9/aacaa7d3bd8a8bc2241134ed0260",
|
||||
"build/prefab/lib/windows/Debug_Win32/BallisticaCoreHeadlessInternal.lib": "https://files.ballistica.net/cache/ba1/fe/ea/eb5e2898022397cb0e4767ac7750",
|
||||
"build/prefab/lib/windows/Debug_Win32/BallisticaCoreHeadlessInternal.pdb": "https://files.ballistica.net/cache/ba1/3c/e1/79d74d48c4ba188fca80a1911bed",
|
||||
"build/prefab/lib/windows/Release_Win32/BallisticaCoreGenericInternal.lib": "https://files.ballistica.net/cache/ba1/89/85/396c695524487fc4617051a1068f",
|
||||
"build/prefab/lib/windows/Release_Win32/BallisticaCoreGenericInternal.pdb": "https://files.ballistica.net/cache/ba1/62/ff/49923c4896cde6c1ade47f98c79c",
|
||||
"build/prefab/lib/windows/Release_Win32/BallisticaCoreHeadlessInternal.lib": "https://files.ballistica.net/cache/ba1/db/0b/8f5e7a6bbdedde91e4b02d4b9e4e",
|
||||
"build/prefab/lib/windows/Release_Win32/BallisticaCoreHeadlessInternal.pdb": "https://files.ballistica.net/cache/ba1/bb/0b/6133175db0936836a527b1ebddb1",
|
||||
"build/prefab/lib/mac_arm64_gui/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/1a/12/fd3382e3ae5c5810b00a988540ec",
|
||||
"build/prefab/lib/mac_arm64_gui/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/b7/5d/bd55990fe03531e438000d5f0aab",
|
||||
"build/prefab/lib/mac_arm64_server/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/6b/9b/0a5965e1714cdda72a9a0417ff04",
|
||||
"build/prefab/lib/mac_arm64_server/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/ed/f6/c40b675afed682fc96684228dd37",
|
||||
"build/prefab/lib/mac_x86_64_gui/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/9f/1e/41254c471d95083243bd146e35ae",
|
||||
"build/prefab/lib/mac_x86_64_gui/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/cf/68/90f68e1e6d2fd75c340dfc85f982",
|
||||
"build/prefab/lib/mac_x86_64_server/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/6d/c6/e4f93048d8dbcfb7f451aeacd2c9",
|
||||
"build/prefab/lib/mac_x86_64_server/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/08/bf/9e91d76ff229a92ed10cedbf8cb1",
|
||||
"build/prefab/lib/windows/Debug_Win32/BallisticaCoreGenericInternal.lib": "https://files.ballistica.net/cache/ba1/66/5f/b8abc6d993bb5296fc63853b21ce",
|
||||
"build/prefab/lib/windows/Debug_Win32/BallisticaCoreGenericInternal.pdb": "https://files.ballistica.net/cache/ba1/2a/5b/dd04558a02272cb7e407bca63da7",
|
||||
"build/prefab/lib/windows/Debug_Win32/BallisticaCoreHeadlessInternal.lib": "https://files.ballistica.net/cache/ba1/37/1e/a81e165c91ddf8d8c6fe8e3f57f1",
|
||||
"build/prefab/lib/windows/Debug_Win32/BallisticaCoreHeadlessInternal.pdb": "https://files.ballistica.net/cache/ba1/17/1b/c80441a942276010b6996b45df29",
|
||||
"build/prefab/lib/windows/Release_Win32/BallisticaCoreGenericInternal.lib": "https://files.ballistica.net/cache/ba1/61/c8/3e2b5ed912cc252886b56445d1ad",
|
||||
"build/prefab/lib/windows/Release_Win32/BallisticaCoreGenericInternal.pdb": "https://files.ballistica.net/cache/ba1/67/c7/05b1673224fe473d83a03ec62a18",
|
||||
"build/prefab/lib/windows/Release_Win32/BallisticaCoreHeadlessInternal.lib": "https://files.ballistica.net/cache/ba1/39/2e/30137404ba9e1504fc856a95594c",
|
||||
"build/prefab/lib/windows/Release_Win32/BallisticaCoreHeadlessInternal.pdb": "https://files.ballistica.net/cache/ba1/13/0b/d55b28a1c60c55d34739185cc8ba",
|
||||
"src/ballistica/generated/python_embedded/binding.inc": "https://files.ballistica.net/cache/ba1/f2/6c/5a0a4695dcc2a11e7941b8777e80",
|
||||
"src/ballistica/generated/python_embedded/bootstrap.inc": "https://files.ballistica.net/cache/ba1/65/ac/d5c4162a71028c1bfa73ebc1f881"
|
||||
}
|
||||
16
.github/PULL_REQUEST_TEMPLATE.md
vendored
16
.github/PULL_REQUEST_TEMPLATE.md
vendored
@ -20,18 +20,18 @@ https://github.com/efroemling/ballistica/wiki/Contributing
|
||||
|
||||
## Type of Changes
|
||||
<!-- Leave the corresponding lines for the applicable type of change: -->
|
||||
| | Type |
|
||||
| ------------- | ------------- |
|
||||
| ✓ | :bug: Bug fix |
|
||||
| ✓ | :sparkles: New feature |
|
||||
| ✓ | :hammer: Refactoring |
|
||||
| ✓ | :scroll: Docs |
|
||||
| | Type |
|
||||
|-----|------------------------|
|
||||
| ✓ | :bug: Bug fix |
|
||||
| ✓ | :sparkles: New feature |
|
||||
| ✓ | :hammer: Refactoring |
|
||||
| ✓ | :scroll: Docs |
|
||||
|
||||
## Related Issue
|
||||
|
||||
<!--
|
||||
<!--
|
||||
If this PR fixes a particular issue, use the following to automatically close that issue
|
||||
once this PR gets merged:
|
||||
|
||||
Closes #XXX
|
||||
Closes #XXX
|
||||
-->
|
||||
|
||||
3
.idea/dictionaries/ericf.xml
generated
3
.idea/dictionaries/ericf.xml
generated
@ -699,6 +699,7 @@
|
||||
<w>epicfail</w>
|
||||
<w>ericf</w>
|
||||
<w>ericfroemling</w>
|
||||
<w>ericsson's</w>
|
||||
<w>errcount</w>
|
||||
<w>errname</w>
|
||||
<w>errno</w>
|
||||
@ -1521,6 +1522,7 @@
|
||||
<w>nntplib</w>
|
||||
<w>noassets</w>
|
||||
<w>nodeactor</w>
|
||||
<w>nodename</w>
|
||||
<w>nodepos</w>
|
||||
<w>nodpi</w>
|
||||
<w>nofiles</w>
|
||||
@ -2019,6 +2021,7 @@
|
||||
<w>scrollw</w>
|
||||
<w>scrollwidget</w>
|
||||
<w>scsb</w>
|
||||
<w>scutil</w>
|
||||
<w>scyn</w>
|
||||
<w>sdata</w>
|
||||
<w>sdkcheck</w>
|
||||
|
||||
@ -128,7 +128,7 @@ $1: $$(subst /__pycache__,,$$(subst .cpython-39.opt-1.pyc,.py,$1))
|
||||
$$(TOOLS_DIR)/pcommand compile_python_files $$^ && chmod 444 $$@
|
||||
endef
|
||||
|
||||
#__AUTOGENERATED_PUBLIC_BEGIN__
|
||||
# __AUTOGENERATED_PUBLIC_BEGIN__
|
||||
|
||||
SCRIPT_TARGETS_PY_PUBLIC = \
|
||||
build/ba_data/python/ba/__init__.py \
|
||||
@ -687,9 +687,9 @@ $(SCRIPT_TARGETS_PY_PUBLIC_TOOLS) : build/ba_data/python/%.py : ../tools/%.py
|
||||
# Instead we generate individual targets in a loop.
|
||||
$(foreach element,$(SCRIPT_TARGETS_PYC_PUBLIC_TOOLS),\
|
||||
$(eval $(call make-opt-pyc-target,$(element))))
|
||||
#__AUTOGENERATED_PUBLIC_END__
|
||||
# __AUTOGENERATED_PUBLIC_END__
|
||||
|
||||
#__AUTOGENERATED_PRIVATE_BEGIN__
|
||||
# __AUTOGENERATED_PRIVATE_BEGIN__
|
||||
|
||||
SCRIPT_TARGETS_PY_PRIVATE_APPLE = \
|
||||
build/pylib-apple/__future__.py \
|
||||
@ -7052,7 +7052,7 @@ EXTRAS_TARGETS_WIN_X64 = \
|
||||
$(EXTRAS_TARGETS_WIN_X64) : ../.efrocachemap
|
||||
@cd .. && tools/pcommand efrocache_get assets/$@
|
||||
|
||||
#__AUTOGENERATED_PRIVATE_END__
|
||||
# __AUTOGENERATED_PRIVATE_END__
|
||||
|
||||
ASSET_TARGETS_COMMON += $(MODEL_TARGETS)
|
||||
|
||||
|
||||
@ -1 +1 @@
|
||||
20652393608393799870252825907573389372
|
||||
128243803030405974762870876563323013389
|
||||
@ -148,7 +148,7 @@ class DependencyEntry:
|
||||
instance = self.cls.__new__(self.cls)
|
||||
# pylint: disable=protected-access
|
||||
instance._dep_entry = weakref.ref(self)
|
||||
instance.__init__()
|
||||
instance.__init__() # type: ignore
|
||||
|
||||
assert self.depset
|
||||
depset = self.depset()
|
||||
|
||||
@ -549,7 +549,8 @@ class ServerManagerApp:
|
||||
while not self._done:
|
||||
self._run_server_cycle()
|
||||
|
||||
def _handle_term_signal(self, sig: int, frame: FrameType) -> None:
|
||||
def _handle_term_signal(self, sig: int,
|
||||
frame: Optional[FrameType]) -> None:
|
||||
"""Handle signals (will always run in the main thread)."""
|
||||
del sig, frame # Unused.
|
||||
sys.exit(1 if self._should_report_subprocess_error else 0)
|
||||
|
||||
@ -4,4 +4,4 @@
|
||||
|
||||
# Uncomment any of these values to override defaults.
|
||||
|
||||
#__CONFIG_TEMPLATE_VALUES__
|
||||
# __CONFIG_TEMPLATE_VALUES__
|
||||
|
||||
@ -330,6 +330,7 @@
|
||||
<w>envval</w>
|
||||
<w>ericf</w>
|
||||
<w>ericsson</w>
|
||||
<w>ericsson's</w>
|
||||
<w>errname</w>
|
||||
<w>erroring</w>
|
||||
<w>etcdec</w>
|
||||
@ -553,6 +554,7 @@
|
||||
<w>jdict</w>
|
||||
<w>jmessage</w>
|
||||
<w>jnames</w>
|
||||
<w>json's</w>
|
||||
<w>keepalives</w>
|
||||
<w>keyanntype</w>
|
||||
<w>keycode</w>
|
||||
@ -713,6 +715,7 @@
|
||||
<w>nlpos</w>
|
||||
<w>nmemb</w>
|
||||
<w>noassets</w>
|
||||
<w>nodename</w>
|
||||
<w>nodetype</w>
|
||||
<w>nofilename</w>
|
||||
<w>noglobs</w>
|
||||
@ -946,6 +949,7 @@
|
||||
<w>scenetime</w>
|
||||
<w>screenmessage</w>
|
||||
<w>scrollwidget</w>
|
||||
<w>scutil</w>
|
||||
<w>sdkcheck</w>
|
||||
<w>sdl's</w>
|
||||
<w>sdlk</w>
|
||||
|
||||
@ -5,9 +5,10 @@
|
||||
<inspection_tool class="CannotResolve" enabled="false" level="ERROR" enabled_by_default="false" />
|
||||
<inspection_tool class="ClangTidy" enabled="true" level="WARNING" enabled_by_default="true">
|
||||
<scope name="External" level="WARNING" enabled="false">
|
||||
<option name="clangTidyChecks" value="-*,bugprone-argument-comment,bugprone-assert-side-effect,bugprone-bad-signal-to-kill-thread,bugprone-branch-clone,bugprone-copy-constructor-init,bugprone-dangling-handle,bugprone-dynamic-static-initializers,bugprone-fold-init-type,bugprone-forward-declaration-namespace,bugprone-forwarding-reference-overload,bugprone-inaccurate-erase,bugprone-incorrect-roundings,bugprone-integer-division,bugprone-lambda-function-name,bugprone-macro-parentheses,bugprone-macro-repeated-side-effects,bugprone-misplaced-operator-in-strlen-in-alloc,bugprone-misplaced-pointer-arithmetic-in-alloc,bugprone-misplaced-widening-cast,bugprone-move-forwarding-reference,bugprone-multiple-statement-macro,bugprone-no-escape,bugprone-not-null-terminated-result,bugprone-parent-virtual-call,bugprone-posix-return,bugprone-sizeof-container,bugprone-sizeof-expression,bugprone-spuriously-wake-up-functions,bugprone-string-constructor,bugprone-string-integer-assignment,bugprone-string-literal-with-embedded-nul,bugprone-suspicious-enum-usage,bugprone-suspicious-include,bugprone-suspicious-memset-usage,bugprone-suspicious-missing-comma,bugprone-suspicious-semicolon,bugprone-suspicious-string-compare,bugprone-swapped-arguments,bugprone-terminating-continue,bugprone-throw-keyword-missing,bugprone-too-small-loop-variable,bugprone-undefined-memory-manipulation,bugprone-undelegated-constructor,bugprone-unhandled-self-assignment,bugprone-unused-raii,bugprone-unused-return-value,bugprone-use-after-move,bugprone-virtual-near-miss,cert-dcl21-cpp,cert-dcl58-cpp,cert-err34-c,cert-err52-cpp,cert-err58-cpp,cert-err60-cpp,cert-flp30-c,cert-msc50-cpp,cert-msc51-cpp,cppcoreguidelines-interfaces-global-init,cppcoreguidelines-narrowing-conversions,cppcoreguidelines-pro-type-member-init,cppcoreguidelines-slicing,google-default-arguments,google-explicit-constructor,google-runtime-operator,hicpp-exception-baseclass,hicpp-multiway-paths-covered,misc-misplaced-const,misc-new-delete-overloads,misc-no-recursion,misc-non-copyable-objects,misc-throw-by-value-catch-by-reference,misc-unconventional-assign-operator,misc-uniqueptr-reset-release,modernize-avoid-bind,modernize-concat-nested-namespaces,modernize-deprecated-headers,modernize-deprecated-ios-base-aliases,modernize-loop-convert,modernize-make-shared,modernize-make-unique,modernize-pass-by-value,modernize-raw-string-literal,modernize-redundant-void-arg,modernize-replace-auto-ptr,modernize-replace-disallow-copy-and-assign-macro,modernize-replace-random-shuffle,modernize-return-braced-init-list,modernize-shrink-to-fit,modernize-unary-static-assert,modernize-use-auto,modernize-use-bool-literals,modernize-use-emplace,modernize-use-equals-default,modernize-use-equals-delete,modernize-use-noexcept,modernize-use-nullptr,modernize-use-override,modernize-use-transparent-functors,modernize-use-uncaught-exceptions,mpi-buffer-deref,mpi-type-mismatch,openmp-use-default-none,performance-faster-string-find,performance-for-range-copy,performance-implicit-conversion-in-loop,performance-inefficient-algorithm,performance-inefficient-string-concatenation,performance-inefficient-vector-operation,performance-move-const-arg,performance-move-constructor-init,performance-no-automatic-move,performance-noexcept-move-constructor,performance-trivially-destructible,performance-type-promotion-in-math-fn,performance-unnecessary-copy-initialization,performance-unnecessary-value-param,portability-simd-intrinsics,readability-avoid-const-params-in-decls,readability-const-return-type,readability-container-size-empty,readability-delete-null-pointer,readability-deleted-default,readability-inconsistent-declaration-parameter-name,readability-misleading-indentation,readability-misplaced-array-index,readability-non-const-parameter,readability-redundant-control-flow,readability-redundant-declaration,readability-redundant-function-ptr-dereference,readability-redundant-smartptr-get,readability-redundant-string-cstr,readability-redundant-string-init,readability-simplify-subscript-expr,readability-static-accessed-through-instance,readability-static-definition-in-anonymous-namespace,readability-string-compare,readability-uniqueptr-delete-release,readability-use-anyofallof,-misc-no-recursion" />
|
||||
<option name="clangTidyChecks" value="-*,bugprone-argument-comment,bugprone-assert-side-effect,bugprone-bad-signal-to-kill-thread,bugprone-branch-clone,bugprone-copy-constructor-init,bugprone-dangling-handle,bugprone-dynamic-static-initializers,bugprone-fold-init-type,bugprone-forward-declaration-namespace,bugprone-forwarding-reference-overload,bugprone-inaccurate-erase,bugprone-incorrect-roundings,bugprone-integer-division,bugprone-macro-parentheses,bugprone-macro-repeated-side-effects,bugprone-misplaced-operator-in-strlen-in-alloc,bugprone-misplaced-pointer-arithmetic-in-alloc,bugprone-misplaced-widening-cast,bugprone-move-forwarding-reference,bugprone-multiple-statement-macro,bugprone-no-escape,bugprone-not-null-terminated-result,bugprone-parent-virtual-call,bugprone-posix-return,bugprone-sizeof-container,bugprone-sizeof-expression,bugprone-spuriously-wake-up-functions,bugprone-string-constructor,bugprone-string-integer-assignment,bugprone-string-literal-with-embedded-nul,bugprone-suspicious-enum-usage,bugprone-suspicious-include,bugprone-suspicious-memset-usage,bugprone-suspicious-missing-comma,bugprone-suspicious-semicolon,bugprone-suspicious-string-compare,bugprone-swapped-arguments,bugprone-terminating-continue,bugprone-throw-keyword-missing,bugprone-too-small-loop-variable,bugprone-undefined-memory-manipulation,bugprone-undelegated-constructor,bugprone-unhandled-self-assignment,bugprone-unused-raii,bugprone-unused-return-value,bugprone-use-after-move,bugprone-virtual-near-miss,cert-dcl21-cpp,cert-dcl58-cpp,cert-err34-c,cert-err52-cpp,cert-err58-cpp,cert-err60-cpp,cert-flp30-c,cert-msc50-cpp,cert-msc51-cpp,cppcoreguidelines-interfaces-global-init,cppcoreguidelines-narrowing-conversions,cppcoreguidelines-pro-type-member-init,cppcoreguidelines-slicing,google-default-arguments,google-explicit-constructor,google-runtime-operator,hicpp-exception-baseclass,hicpp-multiway-paths-covered,misc-misplaced-const,misc-new-delete-overloads,misc-no-recursion,misc-non-copyable-objects,misc-throw-by-value-catch-by-reference,misc-unconventional-assign-operator,misc-uniqueptr-reset-release,modernize-avoid-bind,modernize-concat-nested-namespaces,modernize-deprecated-headers,modernize-deprecated-ios-base-aliases,modernize-loop-convert,modernize-make-shared,modernize-make-unique,modernize-pass-by-value,modernize-raw-string-literal,modernize-redundant-void-arg,modernize-replace-auto-ptr,modernize-replace-disallow-copy-and-assign-macro,modernize-replace-random-shuffle,modernize-return-braced-init-list,modernize-shrink-to-fit,modernize-unary-static-assert,modernize-use-auto,modernize-use-bool-literals,modernize-use-emplace,modernize-use-equals-default,modernize-use-equals-delete,modernize-use-noexcept,modernize-use-nullptr,modernize-use-override,modernize-use-transparent-functors,modernize-use-uncaught-exceptions,mpi-buffer-deref,mpi-type-mismatch,openmp-use-default-none,performance-faster-string-find,performance-for-range-copy,performance-implicit-conversion-in-loop,performance-inefficient-algorithm,performance-inefficient-string-concatenation,performance-inefficient-vector-operation,performance-move-const-arg,performance-move-constructor-init,performance-no-automatic-move,performance-noexcept-move-constructor,performance-trivially-destructible,performance-type-promotion-in-math-fn,performance-unnecessary-copy-initialization,performance-unnecessary-value-param,portability-simd-intrinsics,readability-avoid-const-params-in-decls,readability-const-return-type,readability-container-size-empty,readability-delete-null-pointer,readability-deleted-default,readability-inconsistent-declaration-parameter-name,readability-misleading-indentation,readability-misplaced-array-index,readability-non-const-parameter,readability-redundant-control-flow,readability-redundant-declaration,readability-redundant-function-ptr-dereference,readability-redundant-smartptr-get,readability-redundant-string-cstr,readability-redundant-string-init,readability-simplify-subscript-expr,readability-static-accessed-through-instance,readability-static-definition-in-anonymous-namespace,readability-string-compare,readability-uniqueptr-delete-release,readability-use-anyofallof,-misc-no-recursion,bugprone-easily-swappable-parameters,bugprone-suspicious-memory-comparison,cert-exp42-c,cert-flp37-c,cppcoreguidelines-virtual-class-destructor,readability-container-data-pointer,readability-identifier-length,readability-suspicious-call-argument" />
|
||||
</scope>
|
||||
<option name="clangTidyChecks" value="-*,bugprone-argument-comment,bugprone-assert-side-effect,bugprone-bad-signal-to-kill-thread,bugprone-branch-clone,bugprone-copy-constructor-init,bugprone-dangling-handle,bugprone-dynamic-static-initializers,bugprone-fold-init-type,bugprone-forward-declaration-namespace,bugprone-forwarding-reference-overload,bugprone-inaccurate-erase,bugprone-incorrect-roundings,bugprone-integer-division,bugprone-lambda-function-name,bugprone-macro-parentheses,bugprone-macro-repeated-side-effects,bugprone-misplaced-operator-in-strlen-in-alloc,bugprone-misplaced-pointer-arithmetic-in-alloc,bugprone-misplaced-widening-cast,bugprone-move-forwarding-reference,bugprone-multiple-statement-macro,bugprone-no-escape,bugprone-not-null-terminated-result,bugprone-parent-virtual-call,bugprone-posix-return,bugprone-sizeof-container,bugprone-sizeof-expression,bugprone-spuriously-wake-up-functions,bugprone-string-constructor,bugprone-string-integer-assignment,bugprone-string-literal-with-embedded-nul,bugprone-suspicious-enum-usage,bugprone-suspicious-include,bugprone-suspicious-memset-usage,bugprone-suspicious-missing-comma,bugprone-suspicious-semicolon,bugprone-suspicious-string-compare,bugprone-swapped-arguments,bugprone-terminating-continue,bugprone-throw-keyword-missing,bugprone-too-small-loop-variable,bugprone-undefined-memory-manipulation,bugprone-undelegated-constructor,bugprone-unhandled-self-assignment,bugprone-unused-raii,bugprone-unused-return-value,bugprone-use-after-move,bugprone-virtual-near-miss,cert-dcl21-cpp,cert-dcl58-cpp,cert-err34-c,cert-err52-cpp,cert-err58-cpp,cert-err60-cpp,cert-flp30-c,cert-msc50-cpp,cert-msc51-cpp,cppcoreguidelines-interfaces-global-init,cppcoreguidelines-narrowing-conversions,cppcoreguidelines-pro-type-member-init,cppcoreguidelines-slicing,google-default-arguments,google-explicit-constructor,google-runtime-operator,hicpp-exception-baseclass,hicpp-multiway-paths-covered,misc-misplaced-const,misc-new-delete-overloads,misc-no-recursion,misc-non-copyable-objects,misc-throw-by-value-catch-by-reference,misc-unconventional-assign-operator,misc-uniqueptr-reset-release,modernize-avoid-bind,modernize-concat-nested-namespaces,modernize-deprecated-headers,modernize-deprecated-ios-base-aliases,modernize-loop-convert,modernize-make-shared,modernize-make-unique,modernize-pass-by-value,modernize-raw-string-literal,modernize-redundant-void-arg,modernize-replace-auto-ptr,modernize-replace-disallow-copy-and-assign-macro,modernize-replace-random-shuffle,modernize-return-braced-init-list,modernize-shrink-to-fit,modernize-unary-static-assert,modernize-use-auto,modernize-use-bool-literals,modernize-use-emplace,modernize-use-equals-default,modernize-use-equals-delete,modernize-use-noexcept,modernize-use-nullptr,modernize-use-override,modernize-use-transparent-functors,modernize-use-uncaught-exceptions,mpi-buffer-deref,mpi-type-mismatch,openmp-use-default-none,performance-faster-string-find,performance-for-range-copy,performance-implicit-conversion-in-loop,performance-inefficient-algorithm,performance-inefficient-string-concatenation,performance-inefficient-vector-operation,performance-move-const-arg,performance-move-constructor-init,performance-no-automatic-move,performance-noexcept-move-constructor,performance-trivially-destructible,performance-type-promotion-in-math-fn,performance-unnecessary-copy-initialization,performance-unnecessary-value-param,portability-simd-intrinsics,readability-avoid-const-params-in-decls,readability-const-return-type,readability-container-size-empty,readability-delete-null-pointer,readability-deleted-default,readability-inconsistent-declaration-parameter-name,readability-misleading-indentation,readability-misplaced-array-index,readability-non-const-parameter,readability-redundant-control-flow,readability-redundant-declaration,readability-redundant-function-ptr-dereference,readability-redundant-smartptr-get,readability-redundant-string-cstr,readability-redundant-string-init,readability-simplify-subscript-expr,readability-static-accessed-through-instance,readability-static-definition-in-anonymous-namespace,readability-string-compare,readability-uniqueptr-delete-release,readability-use-anyofallof,-misc-no-recursion" />
|
||||
<option name="clangTidyChecks" value="-*,bugprone-argument-comment,bugprone-assert-side-effect,bugprone-bad-signal-to-kill-thread,bugprone-branch-clone,bugprone-copy-constructor-init,bugprone-dangling-handle,bugprone-dynamic-static-initializers,bugprone-fold-init-type,bugprone-forward-declaration-namespace,bugprone-forwarding-reference-overload,bugprone-inaccurate-erase,bugprone-incorrect-roundings,bugprone-integer-division,bugprone-macro-parentheses,bugprone-macro-repeated-side-effects,bugprone-misplaced-operator-in-strlen-in-alloc,bugprone-misplaced-pointer-arithmetic-in-alloc,bugprone-misplaced-widening-cast,bugprone-move-forwarding-reference,bugprone-multiple-statement-macro,bugprone-no-escape,bugprone-not-null-terminated-result,bugprone-parent-virtual-call,bugprone-posix-return,bugprone-sizeof-container,bugprone-sizeof-expression,bugprone-spuriously-wake-up-functions,bugprone-string-constructor,bugprone-string-integer-assignment,bugprone-string-literal-with-embedded-nul,bugprone-suspicious-enum-usage,bugprone-suspicious-include,bugprone-suspicious-memset-usage,bugprone-suspicious-missing-comma,bugprone-suspicious-semicolon,bugprone-suspicious-string-compare,bugprone-swapped-arguments,bugprone-terminating-continue,bugprone-throw-keyword-missing,bugprone-too-small-loop-variable,bugprone-undefined-memory-manipulation,bugprone-undelegated-constructor,bugprone-unhandled-self-assignment,bugprone-unused-raii,bugprone-unused-return-value,bugprone-use-after-move,bugprone-virtual-near-miss,cert-dcl21-cpp,cert-dcl58-cpp,cert-err34-c,cert-err52-cpp,cert-err58-cpp,cert-err60-cpp,cert-flp30-c,cert-msc50-cpp,cert-msc51-cpp,cppcoreguidelines-interfaces-global-init,cppcoreguidelines-narrowing-conversions,cppcoreguidelines-pro-type-member-init,cppcoreguidelines-slicing,google-default-arguments,google-explicit-constructor,google-runtime-operator,hicpp-exception-baseclass,hicpp-multiway-paths-covered,misc-misplaced-const,misc-new-delete-overloads,misc-no-recursion,misc-non-copyable-objects,misc-throw-by-value-catch-by-reference,misc-unconventional-assign-operator,misc-uniqueptr-reset-release,modernize-avoid-bind,modernize-concat-nested-namespaces,modernize-deprecated-headers,modernize-deprecated-ios-base-aliases,modernize-loop-convert,modernize-make-shared,modernize-make-unique,modernize-pass-by-value,modernize-raw-string-literal,modernize-redundant-void-arg,modernize-replace-auto-ptr,modernize-replace-disallow-copy-and-assign-macro,modernize-replace-random-shuffle,modernize-return-braced-init-list,modernize-shrink-to-fit,modernize-unary-static-assert,modernize-use-auto,modernize-use-bool-literals,modernize-use-emplace,modernize-use-equals-default,modernize-use-equals-delete,modernize-use-noexcept,modernize-use-nullptr,modernize-use-override,modernize-use-transparent-functors,modernize-use-uncaught-exceptions,mpi-buffer-deref,mpi-type-mismatch,openmp-use-default-none,performance-faster-string-find,performance-for-range-copy,performance-implicit-conversion-in-loop,performance-inefficient-algorithm,performance-inefficient-string-concatenation,performance-inefficient-vector-operation,performance-move-const-arg,performance-move-constructor-init,performance-no-automatic-move,performance-noexcept-move-constructor,performance-trivially-destructible,performance-type-promotion-in-math-fn,performance-unnecessary-copy-initialization,performance-unnecessary-value-param,portability-simd-intrinsics,readability-avoid-const-params-in-decls,readability-const-return-type,readability-container-size-empty,readability-delete-null-pointer,readability-deleted-default,readability-inconsistent-declaration-parameter-name,readability-misleading-indentation,readability-misplaced-array-index,readability-non-const-parameter,readability-redundant-control-flow,readability-redundant-declaration,readability-redundant-function-ptr-dereference,readability-redundant-smartptr-get,readability-redundant-string-cstr,readability-redundant-string-init,readability-simplify-subscript-expr,readability-static-accessed-through-instance,readability-static-definition-in-anonymous-namespace,readability-string-compare,readability-uniqueptr-delete-release,readability-use-anyofallof,-misc-no-recursion" />
|
||||
<option name="preferClangTidyFilesOverIDESettings" value="false" />
|
||||
</inspection_tool>
|
||||
<inspection_tool class="ConstructionIsNotAllowed" enabled="false" level="WARNING" enabled_by_default="false" />
|
||||
<inspection_tool class="DuplicateSwitchCase" enabled="false" level="WARNING" enabled_by_default="false" />
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
<!-- THIS FILE IS AUTO GENERATED; DO NOT EDIT BY HAND -->
|
||||
<h4><em>last updated on 2021-11-26 for Ballistica version 1.6.6 build 20410</em></h4>
|
||||
<h4><em>last updated on 2021-12-17 for Ballistica version 1.6.6 build 20414</em></h4>
|
||||
<p>This page documents the Python classes and functions in the 'ba' module,
|
||||
which are the ones most relevant to modding in Ballistica. If you come across something you feel should be included here or could be better explained, please <a href="mailto:support@froemling.net">let me know</a>. Happy modding!</p>
|
||||
<hr>
|
||||
|
||||
@ -3,12 +3,12 @@
|
||||
all: resources
|
||||
|
||||
# This section is autogenerated; do not edit by hand.
|
||||
#__AUTOGENERATED_PUBLIC_BEGIN__
|
||||
#__AUTOGENERATED_PUBLIC_END__
|
||||
# __AUTOGENERATED_PUBLIC_BEGIN__
|
||||
# __AUTOGENERATED_PUBLIC_END__
|
||||
|
||||
|
||||
# This section is autogenerated; do not edit by hand.
|
||||
#__AUTOGENERATED_PRIVATE_BEGIN__
|
||||
# __AUTOGENERATED_PRIVATE_BEGIN__
|
||||
|
||||
resources: \
|
||||
../ballisticacore-windows/Generic/BallisticaCore.ico
|
||||
@ -26,4 +26,4 @@ efrocache-list:
|
||||
|
||||
efrocache-build: resources
|
||||
|
||||
#__AUTOGENERATED_PRIVATE_END__
|
||||
# __AUTOGENERATED_PRIVATE_END__
|
||||
|
||||
@ -144,6 +144,10 @@ AppConfig::AppConfig() {
|
||||
SetupEntries();
|
||||
}
|
||||
|
||||
// Clion think all calls of this are unreachable.
|
||||
#pragma clang diagnostic push
|
||||
#pragma ide diagnostic ignored "UnreachableCallsOfFunction"
|
||||
|
||||
template <typename T>
|
||||
void AppConfig::CompleteMap(const T& entry_map) {
|
||||
for (auto&& i : entry_map) {
|
||||
@ -165,6 +169,8 @@ void AppConfig::CompleteMap(const T& entry_map) {
|
||||
#endif
|
||||
}
|
||||
|
||||
#pragma clang diagnostic pop
|
||||
|
||||
void AppConfig::SetupEntries() {
|
||||
// Register all our typed entries.
|
||||
float_entries_[FloatID::kScreenGamma] = FloatEntry("Screen Gamma", 1.0F);
|
||||
|
||||
@ -21,7 +21,7 @@
|
||||
namespace ballistica {
|
||||
|
||||
// These are set automatically via script; don't modify them here.
|
||||
const int kAppBuildNumber = 20410;
|
||||
const int kAppBuildNumber = 20414;
|
||||
const char* kAppVersion = "1.6.6";
|
||||
|
||||
// Our standalone globals.
|
||||
|
||||
@ -291,12 +291,12 @@ void Player::RunInput(InputType type, float value) {
|
||||
}
|
||||
} else {
|
||||
if (arg >= threshold) {
|
||||
if (!left_held_ && !up_held_ && !down_held_) {
|
||||
if (!up_held_ && !down_held_) {
|
||||
right_held_ = true;
|
||||
RunInput(InputType::kRightPress);
|
||||
}
|
||||
} else if (arg <= -threshold) {
|
||||
if (!right_held_ && !up_held_ && !down_held_) {
|
||||
if (!up_held_ && !down_held_) {
|
||||
left_held_ = true;
|
||||
RunInput(InputType::kLeftPress);
|
||||
}
|
||||
@ -319,12 +319,12 @@ void Player::RunInput(InputType type, float value) {
|
||||
}
|
||||
} else {
|
||||
if (arg <= -threshold) {
|
||||
if (!left_held_ && !right_held_ && !up_held_) {
|
||||
if (!left_held_ && !right_held_) {
|
||||
down_held_ = true;
|
||||
RunInput(InputType::kDownPress);
|
||||
}
|
||||
} else if (arg >= threshold) {
|
||||
if (!left_held_ && !up_held_ && !right_held_) {
|
||||
if (!left_held_ && !right_held_) {
|
||||
up_held_ = true;
|
||||
RunInput(InputType::kUpPress);
|
||||
}
|
||||
|
||||
@ -176,8 +176,14 @@ auto TimerList::NewTimer(TimerMedium current_time, TimerMedium length,
|
||||
auto* t = new Timer(this, next_timer_id_++, current_time, length, offset,
|
||||
repeat_count);
|
||||
t->runnable_ = runnable;
|
||||
|
||||
// Clion (correctly) points out that t may get deallocated in this call,
|
||||
// but the call returns nullptr in that case.
|
||||
#pragma clang diagnostic push
|
||||
#pragma ide diagnostic ignored "DanglingPointer"
|
||||
t = SubmitTimer(t);
|
||||
return t;
|
||||
#pragma clang diagnostic pop
|
||||
}
|
||||
|
||||
auto TimerList::GetTimeToNextExpire(TimerMedium current_time) -> TimerMedium {
|
||||
@ -229,7 +235,9 @@ auto TimerList::SubmitTimer(Timer* t) -> Timer* {
|
||||
return nullptr;
|
||||
} else {
|
||||
// Its still alive. Shove it back in line and tell it to keep working.
|
||||
if (!t->initial_ && t->repeat_count_ > 0) t->repeat_count_--;
|
||||
if (!t->initial_ && t->repeat_count_ > 0) {
|
||||
t->repeat_count_--;
|
||||
}
|
||||
t->initial_ = false;
|
||||
|
||||
// No drift.
|
||||
|
||||
@ -127,21 +127,31 @@ void GraphicsServer::PreprocessRenderFrameDef(FrameDef* frame_def) {
|
||||
assert(InGraphicsThread());
|
||||
|
||||
// Now let the renderer do any preprocess passes (shadows, etc).
|
||||
renderer_->PreprocessFrameDef(frame_def);
|
||||
assert(renderer_);
|
||||
if (renderer_ != nullptr) {
|
||||
renderer_->PreprocessFrameDef(frame_def);
|
||||
}
|
||||
}
|
||||
|
||||
// Does the default drawing to the screen, either from the left or right stereo
|
||||
// eye or in mono.
|
||||
void GraphicsServer::DrawRenderFrameDef(FrameDef* frame_def, int eye) {
|
||||
renderer_->RenderFrameDef(frame_def);
|
||||
assert(renderer_);
|
||||
if (renderer_) {
|
||||
renderer_->RenderFrameDef(frame_def);
|
||||
}
|
||||
}
|
||||
|
||||
// Clean up the frame_def once done drawing it.
|
||||
void GraphicsServer::FinishRenderFrameDef(FrameDef* frame_def) {
|
||||
renderer_->FinishFrameDef(frame_def);
|
||||
assert(renderer_);
|
||||
if (renderer_) {
|
||||
renderer_->FinishFrameDef(frame_def);
|
||||
|
||||
// Let the app know a frame render is complete (it may need to do a swap/etc).
|
||||
g_app->DidFinishRenderingFrame(frame_def);
|
||||
// Let the app know a frame render is complete (it may need to do a
|
||||
// swap/etc).
|
||||
g_app->DidFinishRenderingFrame(frame_def);
|
||||
}
|
||||
}
|
||||
|
||||
void GraphicsServer::TryRender() {
|
||||
@ -514,6 +524,10 @@ void GraphicsServer::VideoResize(float h, float v) {
|
||||
// FIXME: Shouldn't have android-specific code in here.
|
||||
void GraphicsServer::HandlePushAndroidRes(const std::string& android_res) {
|
||||
if (g_buildconfig.ostype_android()) {
|
||||
assert(renderer_);
|
||||
if (renderer_ == nullptr) {
|
||||
return;
|
||||
}
|
||||
// We push android res to the java layer here. We don't actually worry
|
||||
// about screen-size-changed callbacks and whatnot, since those will happen
|
||||
// automatically once things actually change. We just want to be sure that
|
||||
|
||||
@ -54,6 +54,12 @@ auto PythonClassCollideModel::GetCollideModel(bool doraise) const
|
||||
return collide_model;
|
||||
}
|
||||
|
||||
// Clion makes some incorrect inferences here.
|
||||
#pragma clang diagnostic push
|
||||
#pragma ide diagnostic ignored "UnreachableCode"
|
||||
#pragma ide diagnostic ignored "ConstantConditionsOC"
|
||||
#pragma ide diagnostic ignored "ConstantFunctionResult"
|
||||
|
||||
auto PythonClassCollideModel::tp_new(PyTypeObject* type, PyObject* args,
|
||||
PyObject* kwds) -> PyObject* {
|
||||
auto* self =
|
||||
@ -67,10 +73,6 @@ auto PythonClassCollideModel::tp_new(PyTypeObject* type, PyObject* args,
|
||||
+ GetCurrentThreadName() + ").");
|
||||
}
|
||||
|
||||
// Clion incorrectly things s_create_empty will always be false.
|
||||
#pragma clang diagnostic push
|
||||
#pragma ide diagnostic ignored "UnreachableCode"
|
||||
#pragma ide diagnostic ignored "ConstantConditionsOC"
|
||||
if (!s_create_empty_) {
|
||||
throw Exception(
|
||||
"Can't instantiate CollideModels directly; use "
|
||||
@ -78,11 +80,12 @@ auto PythonClassCollideModel::tp_new(PyTypeObject* type, PyObject* args,
|
||||
}
|
||||
self->collide_model_ = new Object::Ref<CollideModel>();
|
||||
BA_PYTHON_NEW_CATCH;
|
||||
#pragma clang diagnostic pop
|
||||
}
|
||||
return reinterpret_cast<PyObject*>(self);
|
||||
}
|
||||
|
||||
#pragma clang diagnostic pop
|
||||
|
||||
void PythonClassCollideModel::Delete(Object::Ref<CollideModel>* ref) {
|
||||
assert(InGameThread());
|
||||
// if we're the py-object for a collide_model, clear them out
|
||||
|
||||
@ -52,6 +52,11 @@ auto PythonClassData::GetData(bool doraise) const -> Data* {
|
||||
}
|
||||
return data;
|
||||
}
|
||||
// Clion makes some incorrect inferences here.
|
||||
#pragma clang diagnostic push
|
||||
#pragma ide diagnostic ignored "UnreachableCode"
|
||||
#pragma ide diagnostic ignored "ConstantConditionsOC"
|
||||
#pragma ide diagnostic ignored "ConstantFunctionResult"
|
||||
|
||||
auto PythonClassData::tp_new(PyTypeObject* type, PyObject* args, PyObject* kwds)
|
||||
-> PyObject* {
|
||||
@ -65,10 +70,6 @@ auto PythonClassData::tp_new(PyTypeObject* type, PyObject* args, PyObject* kwds)
|
||||
+ GetCurrentThreadName() + ").");
|
||||
}
|
||||
|
||||
// Clion incorrectly things s_create_empty will always be false.
|
||||
#pragma clang diagnostic push
|
||||
#pragma ide diagnostic ignored "UnreachableCode"
|
||||
#pragma ide diagnostic ignored "ConstantConditionsOC"
|
||||
if (!s_create_empty_) {
|
||||
throw Exception(
|
||||
"Can't instantiate Datas directly; use ba.getdata() to get "
|
||||
@ -76,10 +77,10 @@ auto PythonClassData::tp_new(PyTypeObject* type, PyObject* args, PyObject* kwds)
|
||||
}
|
||||
self->data_ = new Object::Ref<Data>();
|
||||
BA_PYTHON_NEW_CATCH;
|
||||
#pragma clang diagnostic pop
|
||||
}
|
||||
return reinterpret_cast<PyObject*>(self);
|
||||
}
|
||||
#pragma clang diagnostic pop
|
||||
|
||||
void PythonClassData::Delete(Object::Ref<Data>* ref) {
|
||||
assert(InGameThread());
|
||||
|
||||
@ -53,6 +53,12 @@ auto PythonClassModel::GetModel(bool doraise) const -> Model* {
|
||||
return model;
|
||||
}
|
||||
|
||||
// Clion makes some incorrect inferences here.
|
||||
#pragma clang diagnostic push
|
||||
#pragma ide diagnostic ignored "UnreachableCode"
|
||||
#pragma ide diagnostic ignored "ConstantConditionsOC"
|
||||
#pragma ide diagnostic ignored "ConstantFunctionResult"
|
||||
|
||||
auto PythonClassModel::tp_new(PyTypeObject* type, PyObject* args,
|
||||
PyObject* kwds) -> PyObject* {
|
||||
auto* self = reinterpret_cast<PythonClassModel*>(type->tp_alloc(type, 0));
|
||||
@ -64,10 +70,6 @@ auto PythonClassModel::tp_new(PyTypeObject* type, PyObject* args,
|
||||
+ " objects must only be created in the game thread (current is ("
|
||||
+ GetCurrentThreadName() + ").");
|
||||
}
|
||||
// Clion incorrectly things s_create_empty will always be false.
|
||||
#pragma clang diagnostic push
|
||||
#pragma ide diagnostic ignored "UnreachableCode"
|
||||
#pragma ide diagnostic ignored "ConstantConditionsOC"
|
||||
if (!s_create_empty_) {
|
||||
throw Exception(
|
||||
"Can't instantiate Models directly; use ba.getmodel() to get "
|
||||
@ -75,11 +77,12 @@ auto PythonClassModel::tp_new(PyTypeObject* type, PyObject* args,
|
||||
}
|
||||
self->model_ = new Object::Ref<Model>();
|
||||
BA_PYTHON_NEW_CATCH;
|
||||
#pragma clang diagnostic pop
|
||||
}
|
||||
return reinterpret_cast<PyObject*>(self);
|
||||
}
|
||||
|
||||
#pragma clang diagnostic pop
|
||||
|
||||
void PythonClassModel::Delete(Object::Ref<Model>* ref) {
|
||||
assert(InGameThread());
|
||||
|
||||
|
||||
@ -52,6 +52,12 @@ auto PythonClassSound::GetSound(bool doraise) const -> Sound* {
|
||||
return sound;
|
||||
}
|
||||
|
||||
// Clion makes some incorrect inferences here.
|
||||
#pragma clang diagnostic push
|
||||
#pragma ide diagnostic ignored "UnreachableCode"
|
||||
#pragma ide diagnostic ignored "ConstantConditionsOC"
|
||||
#pragma ide diagnostic ignored "ConstantFunctionResult"
|
||||
|
||||
auto PythonClassSound::tp_new(PyTypeObject* type, PyObject* args,
|
||||
PyObject* kwds) -> PyObject* {
|
||||
auto* self = reinterpret_cast<PythonClassSound*>(type->tp_alloc(type, 0));
|
||||
@ -63,10 +69,6 @@ auto PythonClassSound::tp_new(PyTypeObject* type, PyObject* args,
|
||||
+ " objects must only be created in the game thread (current is ("
|
||||
+ GetCurrentThreadName() + ").");
|
||||
}
|
||||
// Clion incorrectly things s_create_empty will always be false.
|
||||
#pragma clang diagnostic push
|
||||
#pragma ide diagnostic ignored "UnreachableCode"
|
||||
#pragma ide diagnostic ignored "ConstantConditionsOC"
|
||||
if (!s_create_empty_) {
|
||||
throw Exception(
|
||||
"Can't instantiate Sounds directly; use ba.getsound() to get "
|
||||
@ -74,11 +76,12 @@ auto PythonClassSound::tp_new(PyTypeObject* type, PyObject* args,
|
||||
}
|
||||
self->sound_ = new Object::Ref<Sound>();
|
||||
BA_PYTHON_NEW_CATCH;
|
||||
#pragma clang diagnostic pop
|
||||
}
|
||||
return reinterpret_cast<PyObject*>(self);
|
||||
}
|
||||
|
||||
#pragma clang diagnostic pop
|
||||
|
||||
void PythonClassSound::Delete(Object::Ref<Sound>* ref) {
|
||||
assert(InGameThread());
|
||||
|
||||
|
||||
@ -139,7 +139,13 @@ auto PythonClassWidget::GetChildren(PythonClassWidget* self) -> PyObject* {
|
||||
}
|
||||
PyObject* py_list = PyList_New(0);
|
||||
auto* cw = dynamic_cast<ContainerWidget*>(w);
|
||||
|
||||
// Clion seems to think dynamic_casting a Widget* to a ContainerWidget*
|
||||
// will always succeed. Go home Clion; you're drunk.
|
||||
#pragma clang diagnostic push
|
||||
#pragma ide diagnostic ignored "ConstantConditionsOC"
|
||||
if (cw) {
|
||||
#pragma clang diagnostic pop
|
||||
for (auto&& i : cw->widgets()) {
|
||||
assert(i.exists());
|
||||
PyList_Append(py_list, i->BorrowPyRef());
|
||||
@ -156,7 +162,13 @@ auto PythonClassWidget::GetSelectedChild(PythonClassWidget* self) -> PyObject* {
|
||||
throw Exception(PyExcType::kWidgetNotFound);
|
||||
}
|
||||
auto* cw = dynamic_cast<ContainerWidget*>(w);
|
||||
|
||||
// Clion seems to think dynamic_casting a Widget* to a ContainerWidget*
|
||||
// will always succeed. Go home Clion; you're drunk.
|
||||
#pragma clang diagnostic push
|
||||
#pragma ide diagnostic ignored "ConstantConditionsOC"
|
||||
if (cw) {
|
||||
#pragma clang diagnostic pop
|
||||
Widget* selected_widget = cw->selected_widget();
|
||||
if (selected_widget) return selected_widget->NewPyRef();
|
||||
}
|
||||
|
||||
@ -9,7 +9,7 @@ clean:
|
||||
|
||||
|
||||
# This section is autogenerated; do not edit by hand.
|
||||
#__AUTOGENERATED_PUBLIC_BEGIN__
|
||||
# __AUTOGENERATED_PUBLIC_BEGIN__
|
||||
|
||||
sources: \
|
||||
../../assets/src/ba_data/python/ba/_generated/__init__.py \
|
||||
@ -29,10 +29,10 @@ sources: \
|
||||
../../assets/src/ba_data/python/ba/_generated/enums.py : ../ballistica/core/types.h ../../tools/batools/pythonenumsmodule.py
|
||||
@$(PCOMMAND) gen_python_enums_module $< $@
|
||||
|
||||
#__AUTOGENERATED_PUBLIC_END__
|
||||
# __AUTOGENERATED_PUBLIC_END__
|
||||
|
||||
# This section is autogenerated; do not edit by hand.
|
||||
#__AUTOGENERATED_PRIVATE_BEGIN__
|
||||
# __AUTOGENERATED_PRIVATE_BEGIN__
|
||||
|
||||
# Note: we include our public targets in efrocache even
|
||||
# though they are buildable in public. This allows us to
|
||||
@ -47,4 +47,4 @@ efrocache-list:
|
||||
|
||||
efrocache-build: sources
|
||||
|
||||
#__AUTOGENERATED_PRIVATE_END__
|
||||
# __AUTOGENERATED_PRIVATE_END__
|
||||
|
||||
@ -429,7 +429,7 @@ def test_protocol_creation() -> None:
|
||||
response_types={0: _TResp1})
|
||||
|
||||
|
||||
def test_sender_module_single_embedded() -> None:
|
||||
def test_sender_module_single_emb() -> None:
|
||||
"""Test generation of protocol-specific sender modules for typing/etc."""
|
||||
# NOTE: Ideally we should be testing efro.message.create_sender_module()
|
||||
# here, but it requires us to pass code which imports this test module
|
||||
@ -462,7 +462,7 @@ def test_sender_module_single_embedded() -> None:
|
||||
' See test stdout for new code.')
|
||||
|
||||
|
||||
def test_sender_module_sync_embedded() -> None:
|
||||
def test_sender_module_sync_emb() -> None:
|
||||
"""Test generation of protocol-specific sender modules for typing/etc."""
|
||||
# NOTE: Ideally we should be testing efro.message.create_sender_module()
|
||||
# here, but it requires us to pass code which imports this test module
|
||||
@ -495,7 +495,7 @@ def test_sender_module_sync_embedded() -> None:
|
||||
' See test stdout for new code.')
|
||||
|
||||
|
||||
def test_sender_module_async_embedded() -> None:
|
||||
def test_sender_module_async_emb() -> None:
|
||||
"""Test generation of protocol-specific sender modules for typing/etc."""
|
||||
# NOTE: Ideally we should be testing efro.message.create_sender_module()
|
||||
# here, but it requires us to pass code which imports this test module
|
||||
@ -528,7 +528,7 @@ def test_sender_module_async_embedded() -> None:
|
||||
' See test stdout for new code.')
|
||||
|
||||
|
||||
def test_sender_module_both_embedded() -> None:
|
||||
def test_sender_module_both_emb() -> None:
|
||||
"""Test generation of protocol-specific sender modules for typing/etc."""
|
||||
# NOTE: Ideally we should be testing efro.message.create_sender_module()
|
||||
# here, but it requires us to pass code which imports this test module
|
||||
@ -561,7 +561,7 @@ def test_sender_module_both_embedded() -> None:
|
||||
' See test stdout for new code.')
|
||||
|
||||
|
||||
def test_receiver_module_single_embedded() -> None:
|
||||
def test_receiver_module_single_emb() -> None:
|
||||
"""Test generation of protocol-specific sender modules for typing/etc."""
|
||||
# NOTE: Ideally we should be testing efro.message.create_receiver_module()
|
||||
# here, but it requires us to pass code which imports this test module
|
||||
@ -595,7 +595,7 @@ def test_receiver_module_single_embedded() -> None:
|
||||
' See test stdout for new code.')
|
||||
|
||||
|
||||
def test_receiver_module_sync_embedded() -> None:
|
||||
def test_receiver_module_sync_emb() -> None:
|
||||
"""Test generation of protocol-specific sender modules for typing/etc."""
|
||||
# NOTE: Ideally we should be testing efro.message.create_receiver_module()
|
||||
# here, but it requires us to pass code which imports this test module
|
||||
@ -628,7 +628,7 @@ def test_receiver_module_sync_embedded() -> None:
|
||||
' See test stdout for new code.')
|
||||
|
||||
|
||||
def test_receiver_module_async_embedded() -> None:
|
||||
def test_receiver_module_async_emb() -> None:
|
||||
"""Test generation of protocol-specific sender modules for typing/etc."""
|
||||
# NOTE: Ideally we should be testing efro.message.create_receiver_module()
|
||||
# here, but it requires us to pass code which imports this test module
|
||||
|
||||
@ -173,7 +173,7 @@ def _get_py_targets_subset(all_targets: set[str], subset: str,
|
||||
' \\\n '.join(pyc_targets) + '\n')
|
||||
|
||||
# We transform all non-public targets into efrocache-fetches in public.
|
||||
efc = '' if subset.startswith('public') else '#__EFROCACHE_TARGET__\n'
|
||||
efc = '' if subset.startswith('public') else '# __EFROCACHE_TARGET__\n'
|
||||
|
||||
out += ('\n# Rule to copy src asset scripts to dst.\n'
|
||||
'# (and make non-writable so I\'m less likely to '
|
||||
@ -259,7 +259,7 @@ def _get_extras_targets_win(all_targets: set[str], platform: str) -> str:
|
||||
|
||||
# We transform all these targets into efrocache-fetches in public.
|
||||
out += ('\n# Rule to copy src extras to build.\n'
|
||||
f'#__EFROCACHE_TARGET__\n'
|
||||
f'# __EFROCACHE_TARGET__\n'
|
||||
f'$(EXTRAS_TARGETS_WIN_{p_up}) : build/% :'
|
||||
' src/%\n'
|
||||
'\t@echo Copying file: $@\n'
|
||||
@ -287,10 +287,10 @@ def update_assets_makefile(projroot: str, check: bool) -> None:
|
||||
original = infile.read()
|
||||
lines = original.splitlines()
|
||||
|
||||
auto_start_public = lines.index('#__AUTOGENERATED_PUBLIC_BEGIN__')
|
||||
auto_end_public = lines.index('#__AUTOGENERATED_PUBLIC_END__')
|
||||
auto_start_private = lines.index('#__AUTOGENERATED_PRIVATE_BEGIN__')
|
||||
auto_end_private = lines.index('#__AUTOGENERATED_PRIVATE_END__')
|
||||
auto_start_public = lines.index('# __AUTOGENERATED_PUBLIC_BEGIN__')
|
||||
auto_end_public = lines.index('# __AUTOGENERATED_PUBLIC_END__')
|
||||
auto_start_private = lines.index('# __AUTOGENERATED_PRIVATE_BEGIN__')
|
||||
auto_end_private = lines.index('# __AUTOGENERATED_PRIVATE_END__')
|
||||
|
||||
all_targets_public: set[str] = set()
|
||||
all_targets_private: set[str] = set()
|
||||
|
||||
@ -32,7 +32,7 @@ class PipRequirement:
|
||||
# entries; this accounts for manual installations or other nonstandard setups.
|
||||
PIP_REQUIREMENTS = [
|
||||
PipRequirement(modulename='pylint', minversion=[2, 12, 1]),
|
||||
PipRequirement(modulename='mypy', minversion=[0, 910]),
|
||||
PipRequirement(modulename='mypy', minversion=[0, 920]),
|
||||
PipRequirement(modulename='yapf', minversion=[0, 31, 0]),
|
||||
PipRequirement(modulename='cpplint', minversion=[1, 5, 5]),
|
||||
PipRequirement(modulename='pytest', minversion=[6, 2, 4]),
|
||||
@ -788,7 +788,7 @@ def filter_server_config(projroot: str, infilepath: str) -> str:
|
||||
"""Add commented-out config options to a server config."""
|
||||
with open(infilepath, encoding='utf-8') as infile:
|
||||
cfg = infile.read()
|
||||
return cfg.replace('#__CONFIG_TEMPLATE_VALUES__',
|
||||
return cfg.replace('# __CONFIG_TEMPLATE_VALUES__',
|
||||
_get_server_config_template_yaml(projroot))
|
||||
|
||||
|
||||
|
||||
@ -191,10 +191,10 @@ def update(projroot: str, check: bool) -> None:
|
||||
all_dsts_public: set[str] = set()
|
||||
all_dsts_private: set[str] = set()
|
||||
|
||||
auto_start_public = lines.index('#__AUTOGENERATED_PUBLIC_BEGIN__')
|
||||
auto_end_public = lines.index('#__AUTOGENERATED_PUBLIC_END__')
|
||||
auto_start_private = lines.index('#__AUTOGENERATED_PRIVATE_BEGIN__')
|
||||
auto_end_private = lines.index('#__AUTOGENERATED_PRIVATE_END__')
|
||||
auto_start_public = lines.index('# __AUTOGENERATED_PUBLIC_BEGIN__')
|
||||
auto_end_public = lines.index('# __AUTOGENERATED_PUBLIC_END__')
|
||||
auto_start_private = lines.index('# __AUTOGENERATED_PRIVATE_BEGIN__')
|
||||
auto_end_private = lines.index('# __AUTOGENERATED_PRIVATE_END__')
|
||||
|
||||
# Public targets (full sources available in public)
|
||||
targets: list[Target] = []
|
||||
@ -219,7 +219,7 @@ def update(projroot: str, check: bool) -> None:
|
||||
our_lines_private_1 = (
|
||||
_empty_line_if(bool(targets)) +
|
||||
_emit_group_build_lines(targets, basename) +
|
||||
['#__EFROCACHE_TARGET__\n' + t.emit() for t in targets] + [
|
||||
['# __EFROCACHE_TARGET__\n' + t.emit() for t in targets] + [
|
||||
'\n# Note: we include our public targets in efrocache even\n'
|
||||
'# though they are buildable in public. This allows us to\n'
|
||||
'# fetch them on Windows to bootstrap binary CI builds in\n'
|
||||
@ -231,11 +231,11 @@ def update(projroot: str, check: bool) -> None:
|
||||
targets = []
|
||||
basename = 'private-internal'
|
||||
_add_python_embedded_targets_internal(targets)
|
||||
our_lines_private_2 = (['#__PUBSYNC_STRIP_BEGIN__'] +
|
||||
our_lines_private_2 = (['# __PUBSYNC_STRIP_BEGIN__'] +
|
||||
_empty_line_if(bool(targets)) +
|
||||
_emit_group_build_lines(targets, basename) +
|
||||
[t.emit()
|
||||
for t in targets] + ['#__PUBSYNC_STRIP_END__'])
|
||||
[t.emit() for t in targets] +
|
||||
['# __PUBSYNC_STRIP_END__'])
|
||||
our_lines_private = our_lines_private_1 + our_lines_private_2
|
||||
|
||||
filtered = (lines[:auto_start_public + 1] + our_lines_public +
|
||||
|
||||
@ -366,10 +366,10 @@ def update(projroot: str, check: bool) -> None:
|
||||
original = infile.read()
|
||||
lines = original.splitlines()
|
||||
|
||||
auto_start_public = lines.index('#__AUTOGENERATED_PUBLIC_BEGIN__')
|
||||
auto_end_public = lines.index('#__AUTOGENERATED_PUBLIC_END__')
|
||||
auto_start_private = lines.index('#__AUTOGENERATED_PRIVATE_BEGIN__')
|
||||
auto_end_private = lines.index('#__AUTOGENERATED_PRIVATE_END__')
|
||||
auto_start_public = lines.index('# __AUTOGENERATED_PUBLIC_BEGIN__')
|
||||
auto_end_public = lines.index('# __AUTOGENERATED_PUBLIC_END__')
|
||||
auto_start_private = lines.index('# __AUTOGENERATED_PRIVATE_BEGIN__')
|
||||
auto_end_private = lines.index('# __AUTOGENERATED_PRIVATE_END__')
|
||||
|
||||
# Public targets (full sources available in public)
|
||||
targets: list[Target] = []
|
||||
@ -392,7 +392,7 @@ def update(projroot: str, check: bool) -> None:
|
||||
_empty_line_if(bool(targets)) +
|
||||
_emit_group_build_lines(targets, basename) +
|
||||
_emit_group_clean_lines(targets, basename) +
|
||||
['#__EFROCACHE_TARGET__\n' + t.emit()
|
||||
['# __EFROCACHE_TARGET__\n' + t.emit()
|
||||
for t in targets] + _emit_group_efrocache_lines(targets))
|
||||
|
||||
# Private-internal targets (not available at all in public)
|
||||
@ -410,12 +410,12 @@ def update(projroot: str, check: bool) -> None:
|
||||
_add_apple_tv_3d_icon(targets)
|
||||
_add_apple_tv_store_icon(targets)
|
||||
_add_google_vr_icon(targets)
|
||||
our_lines_private_2 = (['#__PUBSYNC_STRIP_BEGIN__'] +
|
||||
our_lines_private_2 = (['# __PUBSYNC_STRIP_BEGIN__'] +
|
||||
_empty_line_if(bool(targets)) +
|
||||
_emit_group_build_lines(targets, basename) +
|
||||
_emit_group_clean_lines(targets, basename) +
|
||||
[t.emit()
|
||||
for t in targets] + ['#__PUBSYNC_STRIP_END__'])
|
||||
[t.emit() for t in targets] +
|
||||
['# __PUBSYNC_STRIP_END__'])
|
||||
our_lines_private = our_lines_private_1 + our_lines_private_2
|
||||
|
||||
filtered = (lines[:auto_start_public + 1] + our_lines_public +
|
||||
|
||||
@ -45,7 +45,7 @@ def dataclass_to_dict(obj: Any,
|
||||
the ability to do a lossless round-trip with data).
|
||||
|
||||
If coerce_to_float is True, integer values present on float typed fields
|
||||
will be converted to floats in the dict output. If False, a TypeError
|
||||
will be converted to float in the dict output. If False, a TypeError
|
||||
will be triggered.
|
||||
"""
|
||||
|
||||
@ -94,10 +94,10 @@ def dataclass_from_dict(cls: type[T],
|
||||
(as this would break the ability to do a lossless round-trip with data).
|
||||
|
||||
If coerce_to_float is True, int values passed for float typed fields
|
||||
will be converted to float values. Otherwise a TypeError is raised.
|
||||
will be converted to float values. Otherwise, a TypeError is raised.
|
||||
|
||||
If allow_unknown_attrs is False, AttributeErrors will be raised for
|
||||
attributes present in the dict but not on the data class. Otherwise they
|
||||
attributes present in the dict but not on the data class. Otherwise, they
|
||||
will be preserved as part of the instance and included if it is
|
||||
exported back to a dict, unless discard_unknown_attrs is True, in which
|
||||
case they will simply be discarded.
|
||||
|
||||
@ -14,7 +14,7 @@ from typing import _AnnotatedAlias # type: ignore
|
||||
|
||||
_pytz_utc: Any
|
||||
|
||||
# We don't *require* pytz but we want to support it for tzinfos if available.
|
||||
# We don't *require* pytz, but we want to support it for tzinfos if available.
|
||||
try:
|
||||
import pytz
|
||||
_pytz_utc = pytz.utc
|
||||
@ -126,7 +126,7 @@ class IOAttrs:
|
||||
# Turning off store_default requires the field to have either
|
||||
# a default_factory or a default
|
||||
if not self.store_default:
|
||||
default_factory: Any = field.default_factory # type: ignore
|
||||
default_factory: Any = field.default_factory
|
||||
if (default_factory is dataclasses.MISSING
|
||||
and field.default is dataclasses.MISSING):
|
||||
raise TypeError(f'Field {field.name} of {cls} has'
|
||||
@ -163,7 +163,7 @@ def _get_origin(anntype: Any) -> Any:
|
||||
def _parse_annotated(anntype: Any) -> tuple[Any, Optional[IOAttrs]]:
|
||||
"""Parse Annotated() constructs, returning annotated type & IOAttrs."""
|
||||
# If we get an Annotated[foo, bar, eep] we take
|
||||
# foo as the actual type and we look for IOAttrs instances in
|
||||
# foo as the actual type, and we look for IOAttrs instances in
|
||||
# bar/eep to affect our behavior.
|
||||
ioattrs: Optional[IOAttrs] = None
|
||||
if isinstance(anntype, _AnnotatedAlias):
|
||||
|
||||
@ -70,14 +70,14 @@ class _Inputter(Generic[T]):
|
||||
return value
|
||||
|
||||
if origin is typing.Union:
|
||||
# Currently the only unions we support are None/Value
|
||||
# Currently, the only unions we support are None/Value
|
||||
# (translated from Optional), which we verified on prep.
|
||||
# So let's treat this as a simple optional case.
|
||||
if value is None:
|
||||
return None
|
||||
childanntypes_l = [
|
||||
c for c in typing.get_args(anntype) if c is not type(None)
|
||||
]
|
||||
] # noqa (pycodestyle complains about *is* with type)
|
||||
assert len(childanntypes_l) == 1
|
||||
return self._value_from_input(cls, fieldpath, childanntypes_l[0],
|
||||
value, ioattrs)
|
||||
@ -127,7 +127,7 @@ class _Inputter(Generic[T]):
|
||||
"""Given input data, returns bytes."""
|
||||
import base64
|
||||
|
||||
# For firestore, bytes are passed as-is. Otherwise they're encoded
|
||||
# For firestore, bytes are passed as-is. Otherwise, they're encoded
|
||||
# as base64.
|
||||
if self._codec is Codec.FIRESTORE:
|
||||
if not isinstance(value, bytes):
|
||||
@ -268,7 +268,7 @@ class _Inputter(Generic[T]):
|
||||
cls, fieldpath, valanntype, val, ioattrs)
|
||||
|
||||
elif issubclass(keyanntype, Enum):
|
||||
# In prep we verified that all these enums' values have
|
||||
# In prep, we verified that all these enums' values have
|
||||
# the same type, so we can just look at the first to see if
|
||||
# this is a string enum or an int enum.
|
||||
enumvaltype = type(next(iter(keyanntype)).value)
|
||||
|
||||
@ -60,7 +60,7 @@ class _Outputter:
|
||||
# If we're not storing default values for this fella,
|
||||
# we can skip all output processing if we've got a default value.
|
||||
if ioattrs is not None and not ioattrs.store_default:
|
||||
default_factory: Any = field.default_factory # type: ignore
|
||||
default_factory: Any = field.default_factory
|
||||
if default_factory is not dataclasses.MISSING:
|
||||
if default_factory() == value:
|
||||
continue
|
||||
@ -113,14 +113,14 @@ class _Outputter:
|
||||
return value if self._create else None
|
||||
|
||||
if origin is typing.Union:
|
||||
# Currently the only unions we support are None/Value
|
||||
# Currently, the only unions we support are None/Value
|
||||
# (translated from Optional), which we verified on prep.
|
||||
# So let's treat this as a simple optional case.
|
||||
if value is None:
|
||||
return None
|
||||
childanntypes_l = [
|
||||
c for c in typing.get_args(anntype) if c is not type(None)
|
||||
]
|
||||
] # noqa (pycodestyle complains about *is* with type)
|
||||
assert len(childanntypes_l) == 1
|
||||
return self._process_value(cls, fieldpath, childanntypes_l[0],
|
||||
value, ioattrs)
|
||||
|
||||
@ -75,7 +75,7 @@ class DataclassFieldLookup(Generic[T]):
|
||||
# We tell the type system that we are returning an instance
|
||||
# of our class, which allows it to perform type checking on
|
||||
# member lookups. In reality, however, we are providing a
|
||||
# special object which captures path lookups so we can build
|
||||
# special object which captures path lookups, so we can build
|
||||
# a string from them.
|
||||
if not TYPE_CHECKING:
|
||||
out = callback(_PathCapture(self.cls))
|
||||
|
||||
@ -303,7 +303,7 @@ class PrepSession:
|
||||
"""Run prep on a Union type."""
|
||||
typeargs = typing.get_args(anntype)
|
||||
if (len(typeargs) != 2
|
||||
or len([c for c in typeargs if c is type(None)]) != 1):
|
||||
or len([c for c in typeargs if c is type(None)]) != 1): # noqa
|
||||
raise TypeError(f'Union {anntype} for attr \'{attrname}\' on'
|
||||
f' {cls.__name__} is not supported by dataclassio;'
|
||||
f' only 2 member Unions with one type being None'
|
||||
|
||||
@ -766,7 +766,7 @@ class MessageReceiver:
|
||||
|
||||
# Return type of None translates to EmptyResponse.
|
||||
responsetypes = tuple(EmptyResponse if r is type(None) else r
|
||||
for r in responsetypes)
|
||||
for r in responsetypes) # noqa
|
||||
|
||||
# Make sure our protocol has this message type registered and our
|
||||
# return types exactly match. (Technically we could return a subset
|
||||
|
||||
@ -579,6 +579,8 @@ def human_readable_compact_id(num: int) -> str:
|
||||
'o' is excluded due to similarity to '0'.
|
||||
'z' is excluded due to similarity to '2'.
|
||||
|
||||
Therefore for n chars this can store values of 21^n.
|
||||
|
||||
When reading human input consisting of these IDs, it may be desirable
|
||||
to map the disallowed chars to their corresponding allowed ones
|
||||
('o' -> '0', etc).
|
||||
@ -599,6 +601,8 @@ def compact_id(num: int) -> str:
|
||||
friendly to humans due to using both capital and lowercase letters,
|
||||
both 'O' and '0', etc.
|
||||
|
||||
Therefore for n chars this can store values of 62^n.
|
||||
|
||||
Sort order for these ids is the same as the original numbers.
|
||||
"""
|
||||
return _compact_id(
|
||||
@ -612,3 +616,24 @@ def assert_never(value: NoReturn) -> NoReturn:
|
||||
See https://github.com/python/typing/issues/735
|
||||
"""
|
||||
assert False, f'Unhandled value: {value} ({type(value).__name__})'
|
||||
|
||||
|
||||
def unchanging_hostname() -> str:
|
||||
"""Return an unchanging name for the local device.
|
||||
|
||||
Similar to the `hostname` call (or os.uname().nodename in Python)
|
||||
except attempts to give a name that doesn't change depending on
|
||||
network conditions. (A Mac will tend to go from Foo to Foo.local,
|
||||
Foo.lan etc. throughout its various adventures)
|
||||
"""
|
||||
import os
|
||||
import platform
|
||||
import subprocess
|
||||
|
||||
# On Mac, this should give the computer name assigned in System Prefs.
|
||||
if platform.system() == 'Darwin':
|
||||
return subprocess.run(
|
||||
['scutil', '--get', 'ComputerName'],
|
||||
check=True,
|
||||
capture_output=True).stdout.decode().strip().replace(' ', '-')
|
||||
return os.uname().nodename
|
||||
|
||||
@ -172,8 +172,8 @@ def py_examine(projroot: Path, filename: Path, line: int, column: int,
|
||||
symbol = (selection if selection is not None else _py_symbol_at_column(
|
||||
flines[line - 1], column))
|
||||
|
||||
# Insert a line after the provided one which is just the symbol so we
|
||||
# can ask for its value alone.
|
||||
# Insert a line after the provided one which is just the symbol so
|
||||
# that we can ask for its value alone.
|
||||
match = re.match(r'\s*', flines[line - 1])
|
||||
whitespace = match.group() if match is not None else ''
|
||||
sline = whitespace + symbol + ' #@'
|
||||
@ -187,8 +187,8 @@ def py_examine(projroot: Path, filename: Path, line: int, column: int,
|
||||
symbol = (selection if selection is not None else _py_symbol_at_column(
|
||||
flines[line - 1], column))
|
||||
|
||||
# Insert a line after the provided one which is just the symbol so we
|
||||
# can ask for its value alone.
|
||||
# Insert a line after the provided one which is just the symbol so
|
||||
# that we can ask for its value alone.
|
||||
match = re.match(r'\s*', flines[line - 1])
|
||||
whitespace = match.group() if match is not None else ''
|
||||
if operation == 'mypy_infer':
|
||||
|
||||
@ -24,7 +24,7 @@ if TYPE_CHECKING:
|
||||
|
||||
BASE_URL = 'https://files.ballistica.net/cache/ba1/'
|
||||
|
||||
TARGET_TAG = '#__EFROCACHE_TARGET__'
|
||||
TARGET_TAG = '# __EFROCACHE_TARGET__'
|
||||
|
||||
CACHE_DIR_NAME = '.efrocache'
|
||||
CACHE_MAP_NAME = '.efrocachemap'
|
||||
|
||||
@ -10,7 +10,7 @@ from threading import Condition, Thread
|
||||
import os
|
||||
|
||||
if TYPE_CHECKING:
|
||||
from typing import Generator, Optional, Callable
|
||||
from typing import Iterable, Optional, Callable
|
||||
|
||||
|
||||
class _FileBatchesRun:
|
||||
@ -107,7 +107,7 @@ def file_batches(
|
||||
batch_size: int = 1,
|
||||
file_filter: Optional[Callable[[str], bool]] = None,
|
||||
include_mac_packages: bool = False,
|
||||
) -> Generator[list[str], None, None]:
|
||||
) -> Iterable[list[str]]:
|
||||
"""Efficiently yield batches of files to operate on.
|
||||
|
||||
Accepts a list of paths which can be files or directories to be recursed.
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user