mirror of
https://github.com/RYDE-WORK/ballistica.git
synced 2026-02-06 15:47:06 +08:00
work in progress on _bainternal py module
This commit is contained in:
parent
a14ea60a8a
commit
d514eba1a8
@ -3995,50 +3995,50 @@
|
|||||||
"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/__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/b2/e5/0ee0561e16257a32830645239f34",
|
"assets/src/ba_data/python/ba/_generated/enums.py": "https://files.ballistica.net/cache/ba1/b2/e5/0ee0561e16257a32830645239f34",
|
||||||
"ballisticacore-windows/Generic/BallisticaCore.ico": "https://files.ballistica.net/cache/ba1/89/c0/e32c7d2a35dc9aef57cc73b0911a",
|
"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/6b/e8/d24c94a6b989acff6eabe76639dc",
|
"build/prefab/full/linux_arm64_gui/debug/ballisticacore": "https://files.ballistica.net/cache/ba1/3c/77/04b4a5e5483b8c2a5041cf33177e",
|
||||||
"build/prefab/full/linux_arm64_gui/release/ballisticacore": "https://files.ballistica.net/cache/ba1/e3/d1/45b086c23b8f8fa4407aadf1f33d",
|
"build/prefab/full/linux_arm64_gui/release/ballisticacore": "https://files.ballistica.net/cache/ba1/db/ed/655b7a5f870bd14bbb9b2cc86f18",
|
||||||
"build/prefab/full/linux_arm64_server/debug/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/1d/68/7283a2f2aa677b43ee180cfd003a",
|
"build/prefab/full/linux_arm64_server/debug/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/33/a6/4fb920d00f3b7f1e45df0894b957",
|
||||||
"build/prefab/full/linux_arm64_server/release/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/2e/c8/d9530a64d2b54bdf0a40af6ee3ba",
|
"build/prefab/full/linux_arm64_server/release/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/4f/3c/8524e9d2ae515883beb55608c804",
|
||||||
"build/prefab/full/linux_x86_64_gui/debug/ballisticacore": "https://files.ballistica.net/cache/ba1/b0/c1/c0f5d1f36cf398935adb81ee9194",
|
"build/prefab/full/linux_x86_64_gui/debug/ballisticacore": "https://files.ballistica.net/cache/ba1/a4/34/ca59dc7e360989e90712fd7479ec",
|
||||||
"build/prefab/full/linux_x86_64_gui/release/ballisticacore": "https://files.ballistica.net/cache/ba1/a7/0f/03f5a9cb4ebca7b1481b0eb5e069",
|
"build/prefab/full/linux_x86_64_gui/release/ballisticacore": "https://files.ballistica.net/cache/ba1/e8/86/1bf02b18f43cef7c3b8a3f4c0992",
|
||||||
"build/prefab/full/linux_x86_64_server/debug/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/b9/a7/0f77eaebbb18ad0d224e196bfe22",
|
"build/prefab/full/linux_x86_64_server/debug/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/95/9e/a9bbba540c8dc202bd8e84b4bbb5",
|
||||||
"build/prefab/full/linux_x86_64_server/release/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/3e/bf/11620aabebaa398ec8a6608e017d",
|
"build/prefab/full/linux_x86_64_server/release/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/87/3f/6f3d7db1e3bd9f5378e07849e638",
|
||||||
"build/prefab/full/mac_arm64_gui/debug/ballisticacore": "https://files.ballistica.net/cache/ba1/34/37/7e66ea0c048a064a6ca0ab506a10",
|
"build/prefab/full/mac_arm64_gui/debug/ballisticacore": "https://files.ballistica.net/cache/ba1/18/04/bce334a942743038f3e4737f96e1",
|
||||||
"build/prefab/full/mac_arm64_gui/release/ballisticacore": "https://files.ballistica.net/cache/ba1/73/bb/636174d3ca010f2a6a2e6d4e6b6e",
|
"build/prefab/full/mac_arm64_gui/release/ballisticacore": "https://files.ballistica.net/cache/ba1/91/38/4ffe7091ba3a4b78537d0fed875a",
|
||||||
"build/prefab/full/mac_arm64_server/debug/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/86/38/641aa55c007421d864d5c15e48e9",
|
"build/prefab/full/mac_arm64_server/debug/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/64/a6/d61e5449b966e5a7a4ff78d180b9",
|
||||||
"build/prefab/full/mac_arm64_server/release/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/c2/a4/5e2cd5aee95187c3c486a01ca295",
|
"build/prefab/full/mac_arm64_server/release/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/58/dd/fb56683ec41f2f1a6e4c7cd9be37",
|
||||||
"build/prefab/full/mac_x86_64_gui/debug/ballisticacore": "https://files.ballistica.net/cache/ba1/ac/b7/6e4ccacf60dfd9b804fceaee521a",
|
"build/prefab/full/mac_x86_64_gui/debug/ballisticacore": "https://files.ballistica.net/cache/ba1/3a/ad/38a79505481c967d88c9670bc6a5",
|
||||||
"build/prefab/full/mac_x86_64_gui/release/ballisticacore": "https://files.ballistica.net/cache/ba1/ca/df/41218c2e85335edd56cb16b9b1bd",
|
"build/prefab/full/mac_x86_64_gui/release/ballisticacore": "https://files.ballistica.net/cache/ba1/8c/bf/a0ee6a443e4bdb97a92c3da70196",
|
||||||
"build/prefab/full/mac_x86_64_server/debug/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/71/24/8368f82cff7cd110da5aac9fe6fb",
|
"build/prefab/full/mac_x86_64_server/debug/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/a8/a5/0349b307442b990368f01fc4d0c6",
|
||||||
"build/prefab/full/mac_x86_64_server/release/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/10/82/8d3f421a7d543c023687a3c53dbf",
|
"build/prefab/full/mac_x86_64_server/release/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/b9/a8/5d9aa9993e0c027aa6e95780e13a",
|
||||||
"build/prefab/full/windows_x86_gui/debug/BallisticaCore.exe": "https://files.ballistica.net/cache/ba1/84/26/6b1afe3e4b75c354477930c5b1ed",
|
"build/prefab/full/windows_x86_gui/debug/BallisticaCore.exe": "https://files.ballistica.net/cache/ba1/3a/59/6fe1ff1e5e64180b29d4ec9cd1a2",
|
||||||
"build/prefab/full/windows_x86_gui/release/BallisticaCore.exe": "https://files.ballistica.net/cache/ba1/5f/13/4470db4743c750d3b652bdddc96a",
|
"build/prefab/full/windows_x86_gui/release/BallisticaCore.exe": "https://files.ballistica.net/cache/ba1/1f/f1/ad26d4f67412eaaa2966cca82f8e",
|
||||||
"build/prefab/full/windows_x86_server/debug/dist/BallisticaCoreHeadless.exe": "https://files.ballistica.net/cache/ba1/be/36/1aa413ad7d9fb1c16269ef9be3f8",
|
"build/prefab/full/windows_x86_server/debug/dist/BallisticaCoreHeadless.exe": "https://files.ballistica.net/cache/ba1/65/fa/c2516baddc702bd9edb30390b232",
|
||||||
"build/prefab/full/windows_x86_server/release/dist/BallisticaCoreHeadless.exe": "https://files.ballistica.net/cache/ba1/a5/e0/5e17b9531385957a9667fd09c957",
|
"build/prefab/full/windows_x86_server/release/dist/BallisticaCoreHeadless.exe": "https://files.ballistica.net/cache/ba1/5f/8c/2d8c7b89e73b62bf0b88f38a80a1",
|
||||||
"build/prefab/lib/linux_arm64_gui/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/ed/ab/bb1936d686208edc8c4730949632",
|
"build/prefab/lib/linux_arm64_gui/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/ec/70/bb76d82665f9cfc95bea6a3b277f",
|
||||||
"build/prefab/lib/linux_arm64_gui/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/0b/88/beb016a2d7ff70fcf7016d8187ae",
|
"build/prefab/lib/linux_arm64_gui/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/49/36/0c77fc298d97a386f0f1c1faa020",
|
||||||
"build/prefab/lib/linux_arm64_server/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/12/be/b10ca74c866bf5d6783672805037",
|
"build/prefab/lib/linux_arm64_server/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/fe/35/f506a7fd6b80e89cfa4ce5a9af84",
|
||||||
"build/prefab/lib/linux_arm64_server/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/af/f2/5acd4d29a8b1991c1e09737195f9",
|
"build/prefab/lib/linux_arm64_server/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/a1/b1/bffa28e8677d6025f43ebaec241b",
|
||||||
"build/prefab/lib/linux_x86_64_gui/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/0f/19/279502db6206f11c8e4b5422bc34",
|
"build/prefab/lib/linux_x86_64_gui/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/9d/f7/ee8b85edf48e549dba57e23082d9",
|
||||||
"build/prefab/lib/linux_x86_64_gui/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/a1/f2/99be86d804b841689a49f484d35d",
|
"build/prefab/lib/linux_x86_64_gui/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/cd/fe/e8e4ae7de89c8ac6b1093c148a5f",
|
||||||
"build/prefab/lib/linux_x86_64_server/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/00/44/dd1e2251e0215546803c9fbac444",
|
"build/prefab/lib/linux_x86_64_server/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/47/08/4662c54c56443c6ed70fd95294cd",
|
||||||
"build/prefab/lib/linux_x86_64_server/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/16/81/25d134cc4a2bd4bf47fd176f0700",
|
"build/prefab/lib/linux_x86_64_server/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/f5/cc/e3c1d51df1cdcce702c12c2538ef",
|
||||||
"build/prefab/lib/mac_arm64_gui/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/2a/a1/546dae6c198c49ff56ef5fad1187",
|
"build/prefab/lib/mac_arm64_gui/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/6e/ff/85ffb41a77eabae5bf74e1d52607",
|
||||||
"build/prefab/lib/mac_arm64_gui/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/01/60/bb0aae698489aefb789ad78a9340",
|
"build/prefab/lib/mac_arm64_gui/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/bb/dd/96ab4c30c037eff4d1005b6515ec",
|
||||||
"build/prefab/lib/mac_arm64_server/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/df/fb/4f5eef097e21d2bef9c89d6fe8f0",
|
"build/prefab/lib/mac_arm64_server/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/34/8a/23328b06e397dfdafb201f429e0e",
|
||||||
"build/prefab/lib/mac_arm64_server/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/76/d8/adc5e75eee89d891802c13b27cb0",
|
"build/prefab/lib/mac_arm64_server/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/09/d9/ee415075a16dccc24f365dc2c847",
|
||||||
"build/prefab/lib/mac_x86_64_gui/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/cd/d7/d96b6c39bce663f33f736f879342",
|
"build/prefab/lib/mac_x86_64_gui/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/0f/80/d43c47af5dc56078f0e4b31049ec",
|
||||||
"build/prefab/lib/mac_x86_64_gui/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/92/aa/398f81c2cc39c37185034c62af39",
|
"build/prefab/lib/mac_x86_64_gui/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/ff/81/4c771163b42212f839a1fbc3b1ce",
|
||||||
"build/prefab/lib/mac_x86_64_server/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/88/b1/3a1e67fab19230eb82ef229a1729",
|
"build/prefab/lib/mac_x86_64_server/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/a8/f3/187de01651879d28e70ab4d2375a",
|
||||||
"build/prefab/lib/mac_x86_64_server/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/03/32/ec1822a2b5eb602885762e6fa886",
|
"build/prefab/lib/mac_x86_64_server/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/de/4c/74a267e161853efc82afa8aa6b41",
|
||||||
"build/prefab/lib/windows/Debug_Win32/BallisticaCoreGenericInternal.lib": "https://files.ballistica.net/cache/ba1/6a/3c/5c45519b983e18ba57630ca90637",
|
"build/prefab/lib/windows/Debug_Win32/BallisticaCoreGenericInternal.lib": "https://files.ballistica.net/cache/ba1/16/52/cf9c1531c053eb01fc9c1d4ade55",
|
||||||
"build/prefab/lib/windows/Debug_Win32/BallisticaCoreGenericInternal.pdb": "https://files.ballistica.net/cache/ba1/a4/04/af5d0357afba90780cf966584100",
|
"build/prefab/lib/windows/Debug_Win32/BallisticaCoreGenericInternal.pdb": "https://files.ballistica.net/cache/ba1/7b/78/cdac1fffd8a600387ce160afd888",
|
||||||
"build/prefab/lib/windows/Debug_Win32/BallisticaCoreHeadlessInternal.lib": "https://files.ballistica.net/cache/ba1/92/3a/238a4e4e4d51d6f9976bd5e5e724",
|
"build/prefab/lib/windows/Debug_Win32/BallisticaCoreHeadlessInternal.lib": "https://files.ballistica.net/cache/ba1/4a/2c/c90d053b0758bf561c39c046b1a0",
|
||||||
"build/prefab/lib/windows/Debug_Win32/BallisticaCoreHeadlessInternal.pdb": "https://files.ballistica.net/cache/ba1/20/69/b8ccf2f5df5ff6837aaaf0baef5a",
|
"build/prefab/lib/windows/Debug_Win32/BallisticaCoreHeadlessInternal.pdb": "https://files.ballistica.net/cache/ba1/2f/ba/dff4088d2b8c29d8bffe5931bf11",
|
||||||
"build/prefab/lib/windows/Release_Win32/BallisticaCoreGenericInternal.lib": "https://files.ballistica.net/cache/ba1/dd/de/51cd4209ce2bb9377fb9df204bc1",
|
"build/prefab/lib/windows/Release_Win32/BallisticaCoreGenericInternal.lib": "https://files.ballistica.net/cache/ba1/6a/4b/da9fcff7a95c12e980d9eb4a54ae",
|
||||||
"build/prefab/lib/windows/Release_Win32/BallisticaCoreGenericInternal.pdb": "https://files.ballistica.net/cache/ba1/c7/7f/6a64850570f668759cecb4a00e2b",
|
"build/prefab/lib/windows/Release_Win32/BallisticaCoreGenericInternal.pdb": "https://files.ballistica.net/cache/ba1/56/bf/1ceb339245a465763d0ede76f52b",
|
||||||
"build/prefab/lib/windows/Release_Win32/BallisticaCoreHeadlessInternal.lib": "https://files.ballistica.net/cache/ba1/23/17/311aada1ccf834cec4162301895f",
|
"build/prefab/lib/windows/Release_Win32/BallisticaCoreHeadlessInternal.lib": "https://files.ballistica.net/cache/ba1/3d/6a/a3e8a651870ffae660cd2c444f38",
|
||||||
"build/prefab/lib/windows/Release_Win32/BallisticaCoreHeadlessInternal.pdb": "https://files.ballistica.net/cache/ba1/31/97/9a3aa9ed980f08e58cb29f5fc3a4",
|
"build/prefab/lib/windows/Release_Win32/BallisticaCoreHeadlessInternal.pdb": "https://files.ballistica.net/cache/ba1/ed/58/1c30bad71ae607d2a34ea3f208d9",
|
||||||
"src/ballistica/generated/python_embedded/binding.inc": "https://files.ballistica.net/cache/ba1/7d/3e/229a581cb2454ed856f1d8b564a7",
|
"src/ballistica/generated/python_embedded/binding.inc": "https://files.ballistica.net/cache/ba1/7d/3e/229a581cb2454ed856f1d8b564a7",
|
||||||
"src/ballistica/generated/python_embedded/bootstrap.inc": "https://files.ballistica.net/cache/ba1/98/12/571b2160d69d42580e8f31fa6a8d"
|
"src/ballistica/generated/python_embedded/bootstrap.inc": "https://files.ballistica.net/cache/ba1/98/12/571b2160d69d42580e8f31fa6a8d"
|
||||||
}
|
}
|
||||||
9
.idea/dictionaries/ericf.xml
generated
9
.idea/dictionaries/ericf.xml
generated
@ -13,6 +13,7 @@
|
|||||||
<w>aaaj</w>
|
<w>aaaj</w>
|
||||||
<w>aaak</w>
|
<w>aaak</w>
|
||||||
<w>aarch</w>
|
<w>aarch</w>
|
||||||
|
<w>aate</w>
|
||||||
<w>abcdefghijklmnopqrstuvwxyz</w>
|
<w>abcdefghijklmnopqrstuvwxyz</w>
|
||||||
<w>abcdefghjkmnpqrtuvwxy</w>
|
<w>abcdefghjkmnpqrtuvwxy</w>
|
||||||
<w>abeb</w>
|
<w>abeb</w>
|
||||||
@ -186,6 +187,7 @@
|
|||||||
<w>bacommon</w>
|
<w>bacommon</w>
|
||||||
<w>badguy</w>
|
<w>badguy</w>
|
||||||
<w>bafoundation</w>
|
<w>bafoundation</w>
|
||||||
|
<w>bainternal</w>
|
||||||
<w>ballistica</w>
|
<w>ballistica</w>
|
||||||
<w>ballistica's</w>
|
<w>ballistica's</w>
|
||||||
<w>ballisticacore</w>
|
<w>ballisticacore</w>
|
||||||
@ -280,6 +282,7 @@
|
|||||||
<w>bsactor</w>
|
<w>bsactor</w>
|
||||||
<w>bscampaign</w>
|
<w>bscampaign</w>
|
||||||
<w>bsfoundation</w>
|
<w>bsfoundation</w>
|
||||||
|
<w>bsgp</w>
|
||||||
<w>bsmaster</w>
|
<w>bsmaster</w>
|
||||||
<w>bsmusic</w>
|
<w>bsmusic</w>
|
||||||
<w>bsources</w>
|
<w>bsources</w>
|
||||||
@ -689,6 +692,7 @@
|
|||||||
<w>dualteamsession</w>
|
<w>dualteamsession</w>
|
||||||
<w>duckdns</w>
|
<w>duckdns</w>
|
||||||
<w>dummymodule</w>
|
<w>dummymodule</w>
|
||||||
|
<w>dummymodules</w>
|
||||||
<w>dummyname</w>
|
<w>dummyname</w>
|
||||||
<w>dummyret</w>
|
<w>dummyret</w>
|
||||||
<w>dummytoken</w>
|
<w>dummytoken</w>
|
||||||
@ -1489,6 +1493,7 @@
|
|||||||
<w>mathutils</w>
|
<w>mathutils</w>
|
||||||
<w>maxdepth</w>
|
<w>maxdepth</w>
|
||||||
<w>maxlinks</w>
|
<w>maxlinks</w>
|
||||||
|
<w>maxpathlen</w>
|
||||||
<w>maxtries</w>
|
<w>maxtries</w>
|
||||||
<w>maxval</w>
|
<w>maxval</w>
|
||||||
<w>maxw</w>
|
<w>maxw</w>
|
||||||
@ -1524,6 +1529,7 @@
|
|||||||
<w>minidom</w>
|
<w>minidom</w>
|
||||||
<w>minigame</w>
|
<w>minigame</w>
|
||||||
<w>minigames</w>
|
<w>minigames</w>
|
||||||
|
<w>miniplayer</w>
|
||||||
<w>minping</w>
|
<w>minping</w>
|
||||||
<w>minusbutton</w>
|
<w>minusbutton</w>
|
||||||
<w>minval</w>
|
<w>minval</w>
|
||||||
@ -1627,6 +1633,7 @@
|
|||||||
<w>nametext</w>
|
<w>nametext</w>
|
||||||
<w>nameval</w>
|
<w>nameval</w>
|
||||||
<w>nboxes</w>
|
<w>nboxes</w>
|
||||||
|
<w>nbuffer</w>
|
||||||
<w>ncpu</w>
|
<w>ncpu</w>
|
||||||
<w>ndbm</w>
|
<w>ndbm</w>
|
||||||
<w>ndkpath</w>
|
<w>ndkpath</w>
|
||||||
@ -2368,6 +2375,7 @@
|
|||||||
<w>standin</w>
|
<w>standin</w>
|
||||||
<w>starscale</w>
|
<w>starscale</w>
|
||||||
<w>startercache</w>
|
<w>startercache</w>
|
||||||
|
<w>startms</w>
|
||||||
<w>startscan</w>
|
<w>startscan</w>
|
||||||
<w>startsplits</w>
|
<w>startsplits</w>
|
||||||
<w>starttime</w>
|
<w>starttime</w>
|
||||||
@ -2734,6 +2742,7 @@
|
|||||||
<w>vartype</w>
|
<w>vartype</w>
|
||||||
<w>vcruntime</w>
|
<w>vcruntime</w>
|
||||||
<w>vcxproj</w>
|
<w>vcxproj</w>
|
||||||
|
<w>vdata</w>
|
||||||
<w>venv</w>
|
<w>venv</w>
|
||||||
<w>verfilename</w>
|
<w>verfilename</w>
|
||||||
<w>verlines</w>
|
<w>verlines</w>
|
||||||
|
|||||||
4
.idea/scopes/UncheckedPython.xml
generated
4
.idea/scopes/UncheckedPython.xml
generated
@ -1,3 +1,3 @@
|
|||||||
<component name="DependencyValidationManager">
|
<component name="DependencyValidationManager">
|
||||||
<scope name="UncheckedPython" pattern="file:assets/src/ba_data/python/_ba.py||file:src/meta/bameta/python_embedded/binding.py" />
|
<scope name="UncheckedPython" pattern="file:assets/src/ba_data/python/_ba.py||file:src/meta/bameta/python_embedded/binding.py||file:assets/src/ba_data/python/_bainternal.py" />
|
||||||
</component>
|
</component>
|
||||||
@ -1,4 +1,4 @@
|
|||||||
### 1.7.7 (build 20756, api 7, 2022-09-03)
|
### 1.7.7 (build 20760, api 7, 2022-09-04)
|
||||||
- Added `ba.app.meta.load_exported_classes()` for loading classes discovered by the meta subsystem cleanly in a background thread.
|
- Added `ba.app.meta.load_exported_classes()` for loading classes discovered by the meta subsystem cleanly in a background thread.
|
||||||
- Improved logging of missing playlist game types.
|
- Improved logging of missing playlist game types.
|
||||||
- Some ba.Lstr functionality can now be used in background threads.
|
- Some ba.Lstr functionality can now be used in background threads.
|
||||||
@ -15,7 +15,9 @@
|
|||||||
- Spaz starting with gloves no longer loses it after picking up an expiring gloves powerup (thanks itsre3!)
|
- Spaz starting with gloves no longer loses it after picking up an expiring gloves powerup (thanks itsre3!)
|
||||||
- Starting to rename the 'game' thread to the 'logic' thread. This is the thread where most high level app logic happen, not only game logic.
|
- Starting to rename the 'game' thread to the 'logic' thread. This is the thread where most high level app logic happen, not only game logic.
|
||||||
- `_ba.in_game_thread()` is now `_ba.in_logic_thread()`.
|
- `_ba.in_game_thread()` is now `_ba.in_logic_thread()`.
|
||||||
- Misc C++ layer tidying.
|
- Misc C++ layer tidying/refactoring.
|
||||||
|
- Split out the `_ba` binary module into `_ba` and `_bainternal`. This will eventually allow running without the closed-source parts (_bainternal) present at all.
|
||||||
|
- There is now a `_bainternal.py` dummy-module alongside the existing `_ba.py` one. Be sure to exclude it from any script collections used by the game (the same as `_ba.py`).
|
||||||
|
|
||||||
### 1.7.6 (build 20687, api 7, 2022-08-11)
|
### 1.7.6 (build 20687, api 7, 2022-08-11)
|
||||||
- Cleaned up da MetaSubsystem code.
|
- Cleaned up da MetaSubsystem code.
|
||||||
|
|||||||
6
Makefile
6
Makefile
@ -105,8 +105,8 @@ clean-list:
|
|||||||
git clean -dnx ${ROOT_CLEAN_IGNORES}
|
git clean -dnx ${ROOT_CLEAN_IGNORES}
|
||||||
|
|
||||||
# Force regenerate the dummy module.
|
# Force regenerate the dummy module.
|
||||||
dummymodule:
|
dummymodules:
|
||||||
./tools/pcommand update_dummy_module --force
|
./tools/pcommand update_dummy_modules --force
|
||||||
|
|
||||||
# Generate docs.
|
# Generate docs.
|
||||||
docs: assets-cmake
|
docs: assets-cmake
|
||||||
@ -117,7 +117,7 @@ docs: assets-cmake
|
|||||||
assets-windows-Win32 assets-windows-x64 \
|
assets-windows-Win32 assets-windows-x64 \
|
||||||
assets-mac assets-ios assets-android assets-clean \
|
assets-mac assets-ios assets-android assets-clean \
|
||||||
resources resources-clean meta meta-clean \
|
resources resources-clean meta meta-clean \
|
||||||
clean clean-list dummymodule docs
|
clean clean-list dummymodules docs
|
||||||
|
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
|
|||||||
@ -1,4 +1,6 @@
|
|||||||
[
|
[
|
||||||
|
"ba_data/python/__pycache__/_bainternal.cpython-310.opt-1.pyc",
|
||||||
|
"ba_data/python/_bainternal.py",
|
||||||
"ba_data/python/ba/__init__.py",
|
"ba_data/python/ba/__init__.py",
|
||||||
"ba_data/python/ba/__pycache__/__init__.cpython-310.opt-1.pyc",
|
"ba_data/python/ba/__pycache__/__init__.cpython-310.opt-1.pyc",
|
||||||
"ba_data/python/ba/__pycache__/_accountv1.cpython-310.opt-1.pyc",
|
"ba_data/python/ba/__pycache__/_accountv1.cpython-310.opt-1.pyc",
|
||||||
|
|||||||
@ -133,6 +133,7 @@ endef
|
|||||||
# __AUTOGENERATED_PUBLIC_BEGIN__
|
# __AUTOGENERATED_PUBLIC_BEGIN__
|
||||||
|
|
||||||
SCRIPT_TARGETS_PY_PUBLIC = \
|
SCRIPT_TARGETS_PY_PUBLIC = \
|
||||||
|
build/ba_data/python/_bainternal.py \
|
||||||
build/ba_data/python/ba/__init__.py \
|
build/ba_data/python/ba/__init__.py \
|
||||||
build/ba_data/python/ba/_accountv1.py \
|
build/ba_data/python/ba/_accountv1.py \
|
||||||
build/ba_data/python/ba/_accountv2.py \
|
build/ba_data/python/ba/_accountv2.py \
|
||||||
@ -383,6 +384,7 @@ SCRIPT_TARGETS_PY_PUBLIC = \
|
|||||||
build/server/ballisticacore_server.py
|
build/server/ballisticacore_server.py
|
||||||
|
|
||||||
SCRIPT_TARGETS_PYC_PUBLIC = \
|
SCRIPT_TARGETS_PYC_PUBLIC = \
|
||||||
|
build/ba_data/python/__pycache__/_bainternal.cpython-310.opt-1.pyc \
|
||||||
build/ba_data/python/ba/__pycache__/__init__.cpython-310.opt-1.pyc \
|
build/ba_data/python/ba/__pycache__/__init__.cpython-310.opt-1.pyc \
|
||||||
build/ba_data/python/ba/__pycache__/_accountv1.cpython-310.opt-1.pyc \
|
build/ba_data/python/ba/__pycache__/_accountv1.cpython-310.opt-1.pyc \
|
||||||
build/ba_data/python/ba/__pycache__/_accountv2.cpython-310.opt-1.pyc \
|
build/ba_data/python/ba/__pycache__/_accountv2.cpython-310.opt-1.pyc \
|
||||||
|
|||||||
@ -1 +1 @@
|
|||||||
70054840476702184810018356968995584648
|
35892999596210727401283369713319458531
|
||||||
1
assets/src/ba_data/python/._bainternal_sources_hash
Normal file
1
assets/src/ba_data/python/._bainternal_sources_hash
Normal file
@ -0,0 +1 @@
|
|||||||
|
35892999596210727401283369713319458531
|
||||||
@ -3,12 +3,12 @@
|
|||||||
"""A dummy stub module for the real _ba.
|
"""A dummy stub module for the real _ba.
|
||||||
|
|
||||||
The real _ba is a compiled extension module and only available
|
The real _ba is a compiled extension module and only available
|
||||||
in the live game. This dummy module allows Pylint/Mypy/etc. to
|
in the live engine. This dummy-module allows Pylint/Mypy/etc. to
|
||||||
function reasonably well outside of the game.
|
function reasonably well outside of that environment.
|
||||||
|
|
||||||
Make sure this file is never included in an actual game distro!
|
Make sure this file is never included in live script dirs!
|
||||||
|
|
||||||
Ideally this should be a stub (.pyi) file, but we'd need
|
In the future perhaps this can be a stub (.pyi) file, but we will need
|
||||||
to make sure that it still works with all our tools
|
to make sure that it still works with all our tools
|
||||||
(mypy, pylint, pycharm).
|
(mypy, pylint, pycharm).
|
||||||
|
|
||||||
|
|||||||
244
assets/src/ba_data/python/_bainternal.py
Normal file
244
assets/src/ba_data/python/_bainternal.py
Normal file
@ -0,0 +1,244 @@
|
|||||||
|
# Released under the MIT License. See LICENSE for details.
|
||||||
|
#
|
||||||
|
"""A dummy stub module for the real _bainternal.
|
||||||
|
|
||||||
|
The real _bainternal is a compiled extension module and only available
|
||||||
|
in the live engine. This dummy-module allows Pylint/Mypy/etc. to
|
||||||
|
function reasonably well outside of that environment.
|
||||||
|
|
||||||
|
Make sure this file is never included in live script dirs!
|
||||||
|
|
||||||
|
In the future perhaps this can be a stub (.pyi) file, but we will need
|
||||||
|
to make sure that it still works with all our tools
|
||||||
|
(mypy, pylint, pycharm).
|
||||||
|
|
||||||
|
NOTE: This file was autogenerated by batools.dummymodule; do not edit by hand.
|
||||||
|
"""
|
||||||
|
|
||||||
|
# I'm sorry Pylint. I know this file saddens you. Be strong.
|
||||||
|
# pylint: disable=useless-suppression
|
||||||
|
# pylint: disable=unnecessary-pass
|
||||||
|
# pylint: disable=use-dict-literal
|
||||||
|
# pylint: disable=use-list-literal
|
||||||
|
# pylint: disable=unused-argument
|
||||||
|
# pylint: disable=missing-docstring
|
||||||
|
# pylint: disable=too-many-locals
|
||||||
|
# pylint: disable=redefined-builtin
|
||||||
|
# pylint: disable=too-many-lines
|
||||||
|
# pylint: disable=redefined-outer-name
|
||||||
|
# pylint: disable=invalid-name
|
||||||
|
# pylint: disable=no-value-for-parameter
|
||||||
|
|
||||||
|
from __future__ import annotations
|
||||||
|
|
||||||
|
from typing import TYPE_CHECKING, TypeVar
|
||||||
|
|
||||||
|
if TYPE_CHECKING:
|
||||||
|
from typing import Any, Callable
|
||||||
|
|
||||||
|
_T = TypeVar('_T')
|
||||||
|
|
||||||
|
|
||||||
|
def _uninferrable() -> Any:
|
||||||
|
"""Get an "Any" in mypy and "uninferrable" in Pylint."""
|
||||||
|
# pylint: disable=undefined-variable
|
||||||
|
return _not_a_real_variable # type: ignore
|
||||||
|
|
||||||
|
|
||||||
|
def add_transaction(transaction: dict,
|
||||||
|
callback: Callable | None = None) -> None:
|
||||||
|
"""(internal)"""
|
||||||
|
return None
|
||||||
|
|
||||||
|
|
||||||
|
def game_service_has_leaderboard(game: str, config: str) -> bool:
|
||||||
|
"""(internal)
|
||||||
|
|
||||||
|
Given a game and config string, returns whether there is a leaderboard
|
||||||
|
for it on the game service.
|
||||||
|
"""
|
||||||
|
return bool()
|
||||||
|
|
||||||
|
|
||||||
|
def get_master_server_address(source: int = -1,
|
||||||
|
version: int = 1,
|
||||||
|
internal: bool = False) -> str:
|
||||||
|
"""(internal)
|
||||||
|
|
||||||
|
Return the address of the master server.
|
||||||
|
"""
|
||||||
|
return str()
|
||||||
|
|
||||||
|
|
||||||
|
def get_news_show() -> str:
|
||||||
|
"""(internal)"""
|
||||||
|
return str()
|
||||||
|
|
||||||
|
|
||||||
|
def get_price(item: str) -> str | None:
|
||||||
|
"""(internal)"""
|
||||||
|
return ''
|
||||||
|
|
||||||
|
|
||||||
|
def get_public_login_id() -> str | None:
|
||||||
|
"""(internal)"""
|
||||||
|
return ''
|
||||||
|
|
||||||
|
|
||||||
|
def get_purchased(item: str) -> bool:
|
||||||
|
"""(internal)"""
|
||||||
|
return bool()
|
||||||
|
|
||||||
|
|
||||||
|
def get_purchases_state() -> int:
|
||||||
|
"""(internal)"""
|
||||||
|
return int()
|
||||||
|
|
||||||
|
|
||||||
|
def get_v1_account_display_string(full: bool = True) -> str:
|
||||||
|
"""(internal)"""
|
||||||
|
return str()
|
||||||
|
|
||||||
|
|
||||||
|
def get_v1_account_misc_read_val(name: str, default_value: Any) -> Any:
|
||||||
|
"""(internal)"""
|
||||||
|
return _uninferrable()
|
||||||
|
|
||||||
|
|
||||||
|
def get_v1_account_misc_read_val_2(name: str, default_value: Any) -> Any:
|
||||||
|
"""(internal)"""
|
||||||
|
return _uninferrable()
|
||||||
|
|
||||||
|
|
||||||
|
def get_v1_account_misc_val(name: str, default_value: Any) -> Any:
|
||||||
|
"""(internal)"""
|
||||||
|
return _uninferrable()
|
||||||
|
|
||||||
|
|
||||||
|
def get_v1_account_name() -> str:
|
||||||
|
"""(internal)"""
|
||||||
|
return str()
|
||||||
|
|
||||||
|
|
||||||
|
def get_v1_account_state() -> str:
|
||||||
|
"""(internal)"""
|
||||||
|
return str()
|
||||||
|
|
||||||
|
|
||||||
|
def get_v1_account_state_num() -> int:
|
||||||
|
"""(internal)"""
|
||||||
|
return int()
|
||||||
|
|
||||||
|
|
||||||
|
def get_v1_account_ticket_count() -> int:
|
||||||
|
"""(internal)
|
||||||
|
|
||||||
|
Returns the number of tickets for the current account.
|
||||||
|
"""
|
||||||
|
return int()
|
||||||
|
|
||||||
|
|
||||||
|
def get_v1_account_type() -> str:
|
||||||
|
"""(internal)"""
|
||||||
|
return str()
|
||||||
|
|
||||||
|
|
||||||
|
def get_v2_fleet() -> str:
|
||||||
|
"""(internal)"""
|
||||||
|
return str()
|
||||||
|
|
||||||
|
|
||||||
|
def have_outstanding_transactions() -> bool:
|
||||||
|
"""(internal)"""
|
||||||
|
return bool()
|
||||||
|
|
||||||
|
|
||||||
|
def in_game_purchase(item: str, price: int) -> None:
|
||||||
|
"""(internal)"""
|
||||||
|
return None
|
||||||
|
|
||||||
|
|
||||||
|
def is_blessed() -> bool:
|
||||||
|
"""(internal)"""
|
||||||
|
return bool()
|
||||||
|
|
||||||
|
|
||||||
|
def mark_config_dirty() -> None:
|
||||||
|
"""(internal)
|
||||||
|
|
||||||
|
Category: General Utility Functions
|
||||||
|
"""
|
||||||
|
return None
|
||||||
|
|
||||||
|
|
||||||
|
def power_ranking_query(callback: Callable, season: Any = None) -> None:
|
||||||
|
"""(internal)"""
|
||||||
|
return None
|
||||||
|
|
||||||
|
|
||||||
|
def purchase(item: str) -> None:
|
||||||
|
"""(internal)"""
|
||||||
|
return None
|
||||||
|
|
||||||
|
|
||||||
|
def report_achievement(achievement: str, pass_to_account: bool = True) -> None:
|
||||||
|
"""(internal)"""
|
||||||
|
return None
|
||||||
|
|
||||||
|
|
||||||
|
def reset_achievements() -> None:
|
||||||
|
"""(internal)"""
|
||||||
|
return None
|
||||||
|
|
||||||
|
|
||||||
|
def restore_purchases() -> None:
|
||||||
|
"""(internal)"""
|
||||||
|
return None
|
||||||
|
|
||||||
|
|
||||||
|
def run_transactions() -> None:
|
||||||
|
"""(internal)"""
|
||||||
|
return None
|
||||||
|
|
||||||
|
|
||||||
|
def sign_in_v1(account_type: str) -> None:
|
||||||
|
"""(internal)
|
||||||
|
|
||||||
|
Category: General Utility Functions
|
||||||
|
"""
|
||||||
|
return None
|
||||||
|
|
||||||
|
|
||||||
|
def sign_out_v1(v2_embedded: bool = False) -> None:
|
||||||
|
"""(internal)
|
||||||
|
|
||||||
|
Category: General Utility Functions
|
||||||
|
"""
|
||||||
|
return None
|
||||||
|
|
||||||
|
|
||||||
|
def submit_score(game: str,
|
||||||
|
config: str,
|
||||||
|
name: Any,
|
||||||
|
score: int | None,
|
||||||
|
callback: Callable,
|
||||||
|
friend_callback: Callable | None,
|
||||||
|
order: str = 'increasing',
|
||||||
|
tournament_id: str | None = None,
|
||||||
|
score_type: str = 'points',
|
||||||
|
campaign: str | None = None,
|
||||||
|
level: str | None = None) -> None:
|
||||||
|
"""(internal)
|
||||||
|
|
||||||
|
Submit a score to the server; callback will be called with the results.
|
||||||
|
As a courtesy, please don't send fake scores to the server. I'd prefer
|
||||||
|
to devote my time to improving the game instead of trying to make the
|
||||||
|
score server more mischief-proof.
|
||||||
|
"""
|
||||||
|
return None
|
||||||
|
|
||||||
|
|
||||||
|
def tournament_query(callback: Callable[[dict | None], None],
|
||||||
|
args: dict) -> None:
|
||||||
|
"""(internal)"""
|
||||||
|
return None
|
||||||
@ -32,7 +32,7 @@ def bootstrap() -> None:
|
|||||||
|
|
||||||
# Give a soft warning if we're being used with a different binary
|
# Give a soft warning if we're being used with a different binary
|
||||||
# version than we expect.
|
# version than we expect.
|
||||||
expected_build = 20756
|
expected_build = 20760
|
||||||
running_build: int = env['build_number']
|
running_build: int = env['build_number']
|
||||||
if running_build != expected_build:
|
if running_build != expected_build:
|
||||||
print(
|
print(
|
||||||
|
|||||||
10
ballisticacore-cmake/.idea/dictionaries/ericf.xml
generated
10
ballisticacore-cmake/.idea/dictionaries/ericf.xml
generated
@ -3,6 +3,7 @@
|
|||||||
<words>
|
<words>
|
||||||
<w>NOMINMAX</w>
|
<w>NOMINMAX</w>
|
||||||
<w>aabb</w>
|
<w>aabb</w>
|
||||||
|
<w>aate</w>
|
||||||
<w>abcdefghijklmnopqrstuvwxyz</w>
|
<w>abcdefghijklmnopqrstuvwxyz</w>
|
||||||
<w>abcdefghjkmnpqrtuvwxy</w>
|
<w>abcdefghjkmnpqrtuvwxy</w>
|
||||||
<w>abouttab</w>
|
<w>abouttab</w>
|
||||||
@ -90,6 +91,7 @@
|
|||||||
<w>backporting</w>
|
<w>backporting</w>
|
||||||
<w>backtraces</w>
|
<w>backtraces</w>
|
||||||
<w>backwin</w>
|
<w>backwin</w>
|
||||||
|
<w>bainternal</w>
|
||||||
<w>ballistica</w>
|
<w>ballistica</w>
|
||||||
<w>ballisticacore</w>
|
<w>ballisticacore</w>
|
||||||
<w>bamasteraddr</w>
|
<w>bamasteraddr</w>
|
||||||
@ -157,8 +159,10 @@
|
|||||||
<w>bscfg</w>
|
<w>bscfg</w>
|
||||||
<w>bsgaps</w>
|
<w>bsgaps</w>
|
||||||
<w>bsgdps</w>
|
<w>bsgdps</w>
|
||||||
|
<w>bsgp</w>
|
||||||
<w>bsivu</w>
|
<w>bsivu</w>
|
||||||
<w>bsmhi</w>
|
<w>bsmhi</w>
|
||||||
|
<w>bsremote</w>
|
||||||
<w>bsstd</w>
|
<w>bsstd</w>
|
||||||
<w>bstat</w>
|
<w>bstat</w>
|
||||||
<w>bstr</w>
|
<w>bstr</w>
|
||||||
@ -356,6 +360,7 @@
|
|||||||
<w>dstpath</w>
|
<w>dstpath</w>
|
||||||
<w>dstr</w>
|
<w>dstr</w>
|
||||||
<w>dtest</w>
|
<w>dtest</w>
|
||||||
|
<w>dummymodules</w>
|
||||||
<w>dummyret</w>
|
<w>dummyret</w>
|
||||||
<w>dummyval</w>
|
<w>dummyval</w>
|
||||||
<w>dummyvalid</w>
|
<w>dummyvalid</w>
|
||||||
@ -759,6 +764,7 @@
|
|||||||
<w>masterver</w>
|
<w>masterver</w>
|
||||||
<w>mastervers</w>
|
<w>mastervers</w>
|
||||||
<w>maximus</w>
|
<w>maximus</w>
|
||||||
|
<w>maxpathlen</w>
|
||||||
<w>maxtries</w>
|
<w>maxtries</w>
|
||||||
<w>maxwait</w>
|
<w>maxwait</w>
|
||||||
<w>maxwidth</w>
|
<w>maxwidth</w>
|
||||||
@ -778,6 +784,7 @@
|
|||||||
<w>mikirog</w>
|
<w>mikirog</w>
|
||||||
<w>millisecs</w>
|
<w>millisecs</w>
|
||||||
<w>minelem</w>
|
<w>minelem</w>
|
||||||
|
<w>miniplayer</w>
|
||||||
<w>minping</w>
|
<w>minping</w>
|
||||||
<w>minsdl</w>
|
<w>minsdl</w>
|
||||||
<w>mipmapcount</w>
|
<w>mipmapcount</w>
|
||||||
@ -826,6 +833,7 @@
|
|||||||
<w>mywidget</w>
|
<w>mywidget</w>
|
||||||
<w>namecap</w>
|
<w>namecap</w>
|
||||||
<w>nameval</w>
|
<w>nameval</w>
|
||||||
|
<w>nbuffer</w>
|
||||||
<w>ndebug</w>
|
<w>ndebug</w>
|
||||||
<w>nearbytab</w>
|
<w>nearbytab</w>
|
||||||
<w>nearstr</w>
|
<w>nearstr</w>
|
||||||
@ -1226,6 +1234,7 @@
|
|||||||
<w>ssval</w>
|
<w>ssval</w>
|
||||||
<w>standin</w>
|
<w>standin</w>
|
||||||
<w>startedptr</w>
|
<w>startedptr</w>
|
||||||
|
<w>startms</w>
|
||||||
<w>startpos</w>
|
<w>startpos</w>
|
||||||
<w>startsplits</w>
|
<w>startsplits</w>
|
||||||
<w>starttime</w>
|
<w>starttime</w>
|
||||||
@ -1399,6 +1408,7 @@
|
|||||||
<w>vbos</w>
|
<w>vbos</w>
|
||||||
<w>vbuf</w>
|
<w>vbuf</w>
|
||||||
<w>vcache</w>
|
<w>vcache</w>
|
||||||
|
<w>vdata</w>
|
||||||
<w>vdynamic</w>
|
<w>vdynamic</w>
|
||||||
<w>vertout</w>
|
<w>vertout</w>
|
||||||
<w>verts</w>
|
<w>verts</w>
|
||||||
|
|||||||
@ -18,43 +18,43 @@
|
|||||||
#include "ballistica/platform/platform.h"
|
#include "ballistica/platform/platform.h"
|
||||||
#include "ballistica/python/python.h"
|
#include "ballistica/python/python.h"
|
||||||
#include "ballistica/scene/scene.h"
|
#include "ballistica/scene/scene.h"
|
||||||
#include "ballistica/ui/ui.h"
|
|
||||||
|
|
||||||
namespace ballistica {
|
namespace ballistica {
|
||||||
|
|
||||||
// These are set automatically via script; don't modify them here.
|
// These are set automatically via script; don't modify them here.
|
||||||
const int kAppBuildNumber = 20756;
|
const int kAppBuildNumber = 20760;
|
||||||
const char* kAppVersion = "1.7.7";
|
const char* kAppVersion = "1.7.7";
|
||||||
|
|
||||||
// Our standalone globals.
|
// Our standalone globals.
|
||||||
// These are separated out for easy access.
|
// These are separated out for easy access.
|
||||||
// Everything else should go into AppGlobals (or more ideally into a class).
|
// Everything else should go into AppGlobals (or more ideally into a class).
|
||||||
int g_early_log_writes{10};
|
int g_early_log_writes{10};
|
||||||
Thread* g_main_thread{};
|
|
||||||
AppGlobals* g_app_globals{};
|
Account* g_account{};
|
||||||
AppConfig* g_app_config{};
|
AppConfig* g_app_config{};
|
||||||
|
AppGlobals* g_app_globals{};
|
||||||
AppInternal* g_app_internal{};
|
AppInternal* g_app_internal{};
|
||||||
App* g_app{};
|
App* g_app{};
|
||||||
Account* g_account{};
|
Audio* g_audio{};
|
||||||
Game* g_game{};
|
AudioServer* g_audio_server{};
|
||||||
BGDynamics* g_bg_dynamics{};
|
BGDynamics* g_bg_dynamics{};
|
||||||
BGDynamicsServer* g_bg_dynamics_server{};
|
BGDynamicsServer* g_bg_dynamics_server{};
|
||||||
Platform* g_platform{};
|
Game* g_game{};
|
||||||
Utils* g_utils{};
|
|
||||||
UI* g_ui{};
|
|
||||||
Graphics* g_graphics{};
|
Graphics* g_graphics{};
|
||||||
Python* g_python{};
|
|
||||||
Input* g_input{};
|
|
||||||
GraphicsServer* g_graphics_server{};
|
GraphicsServer* g_graphics_server{};
|
||||||
|
Input* g_input{};
|
||||||
|
Thread* g_main_thread{};
|
||||||
Media* g_media{};
|
Media* g_media{};
|
||||||
Audio* g_audio{};
|
|
||||||
MediaServer* g_media_server{};
|
MediaServer* g_media_server{};
|
||||||
AudioServer* g_audio_server{};
|
|
||||||
StdInputModule* g_std_input_module{};
|
|
||||||
NetworkReader* g_network_reader{};
|
NetworkReader* g_network_reader{};
|
||||||
Networking* g_networking{};
|
Networking* g_networking{};
|
||||||
NetworkWriteModule* g_network_write_module{};
|
NetworkWriteModule* g_network_write_module{};
|
||||||
|
Platform* g_platform{};
|
||||||
|
Python* g_python{};
|
||||||
|
StdInputModule* g_std_input_module{};
|
||||||
TextGraphics* g_text_graphics{};
|
TextGraphics* g_text_graphics{};
|
||||||
|
UI* g_ui{};
|
||||||
|
Utils* g_utils{};
|
||||||
|
|
||||||
// Basic overview of our bootstrapping process:
|
// Basic overview of our bootstrapping process:
|
||||||
// 1: All threads and globals are created and provisioned. Everything above
|
// 1: All threads and globals are created and provisioned. Everything above
|
||||||
|
|||||||
@ -1033,6 +1033,7 @@ auto AddClass(PyObject* module) -> PyObject* {
|
|||||||
BA_PRECONDITION(r == 0);
|
BA_PRECONDITION(r == 0);
|
||||||
return reinterpret_cast<PyObject*>(&T::type_obj);
|
return reinterpret_cast<PyObject*>(&T::type_obj);
|
||||||
}
|
}
|
||||||
|
|
||||||
auto Python::InitModuleClasses(PyObject* module) -> void {
|
auto Python::InitModuleClasses(PyObject* module) -> void {
|
||||||
// Init our classes and add them to our module.
|
// Init our classes and add them to our module.
|
||||||
AddClass<PythonClassNode>(module);
|
AddClass<PythonClassNode>(module);
|
||||||
|
|||||||
@ -1,10 +1,10 @@
|
|||||||
# Released under the MIT License. See LICENSE for details.
|
# Released under the MIT License. See LICENSE for details.
|
||||||
#
|
#
|
||||||
"""Generates a dummy _ba.py based on the game's real internal _ba module.
|
"""Generates a dummy _ba.py and _bainternal.py based on binary modules.
|
||||||
|
|
||||||
This allows us to use code introspection tools such as pylint from outside
|
This allows us to use code introspection tools such as pylint without spinning
|
||||||
the game, and also allows external scripts to import game scripts successfully
|
up the engine, and also allows external scripts to import game scripts
|
||||||
(though with limited functionality)
|
successfully (albeit with limited functionality).
|
||||||
"""
|
"""
|
||||||
|
|
||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
@ -201,10 +201,6 @@ def _writefuncs(parent: Any, funcnames: Sequence[str], indent: int,
|
|||||||
'import ba # pylint: disable=cyclic-import\nreturn ' +
|
'import ba # pylint: disable=cyclic-import\nreturn ' +
|
||||||
returns + '()')
|
returns + '()')
|
||||||
|
|
||||||
# we'll also have to go without a sig
|
|
||||||
# (could use the equivalent _ba class perhaps)
|
|
||||||
# sig = sig.split('->')[0]
|
|
||||||
|
|
||||||
elif returns in {'object', 'Any'}:
|
elif returns in {'object', 'Any'}:
|
||||||
|
|
||||||
# We use 'object' when we mean "can vary"
|
# We use 'object' when we mean "can vary"
|
||||||
@ -614,9 +610,10 @@ def _writeclasses(module: ModuleType, classnames: Sequence[str]) -> str:
|
|||||||
return out
|
return out
|
||||||
|
|
||||||
|
|
||||||
def generate(sources_hash: str, outfilename: str) -> None:
|
def generate(mname: str, sources_hash: str, outfilename: str) -> None:
|
||||||
"""Run the actual generation from within the game."""
|
"""Run the actual generation from within the game."""
|
||||||
import _ba as module
|
# pylint: disable=too-many-locals
|
||||||
|
module = __import__(mname)
|
||||||
from efrotools import get_public_license, PYVER
|
from efrotools import get_public_license, PYVER
|
||||||
import types
|
import types
|
||||||
funcnames = []
|
funcnames = []
|
||||||
@ -626,7 +623,7 @@ def generate(sources_hash: str, outfilename: str) -> None:
|
|||||||
funcnames.append(entry)
|
funcnames.append(entry)
|
||||||
elif isinstance(getattr(module, entry), type):
|
elif isinstance(getattr(module, entry), type):
|
||||||
classnames.append(entry)
|
classnames.append(entry)
|
||||||
elif entry == 'app':
|
elif mname == '_ba' and entry == 'app':
|
||||||
# Ignore _ba.app.
|
# Ignore _ba.app.
|
||||||
continue
|
continue
|
||||||
else:
|
else:
|
||||||
@ -634,18 +631,31 @@ def generate(sources_hash: str, outfilename: str) -> None:
|
|||||||
f'found unknown obj {entry}, {getattr(module, entry)}')
|
f'found unknown obj {entry}, {getattr(module, entry)}')
|
||||||
funcnames.sort()
|
funcnames.sort()
|
||||||
classnames.sort()
|
classnames.sort()
|
||||||
|
typing_imports = ('TYPE_CHECKING, overload, Sequence, TypeVar'
|
||||||
|
if mname == '_ba' else 'TYPE_CHECKING, TypeVar')
|
||||||
|
typing_imports_tc = ('Any, Callable, Literal'
|
||||||
|
if mname == '_ba' else 'Any, Callable')
|
||||||
|
tc_import_lines_extra = (' from ba._app import App\n'
|
||||||
|
' import ba\n' if mname == '_ba' else '')
|
||||||
|
app_declare_lines = ('app: App\n'
|
||||||
|
'\n' if mname == '_ba' else '')
|
||||||
|
enum_import_lines = (
|
||||||
|
'from ba._generated.enums import TimeFormat, TimeType\n'
|
||||||
|
'\n' if mname == '_ba' else '')
|
||||||
out = (get_public_license('python')
|
out = (get_public_license('python')
|
||||||
+ '\n'
|
+ '\n'
|
||||||
'#\n'
|
'#\n'
|
||||||
'"""A dummy stub module for the real _ba.\n'
|
f'"""A dummy stub module for the real {mname}.\n'
|
||||||
'\n'
|
'\n'
|
||||||
'The real _ba is a compiled extension module and only available\n'
|
f'The real {mname} is a compiled extension module'
|
||||||
'in the live game. This dummy module allows Pylint/Mypy/etc. to\n'
|
' and only available\n'
|
||||||
'function reasonably well outside of the game.\n'
|
'in the live engine. This dummy-module allows Pylint/Mypy/etc. to\n'
|
||||||
|
'function reasonably well outside of that environment.\n'
|
||||||
'\n'
|
'\n'
|
||||||
'Make sure this file is never included in an actual game distro!\n'
|
'Make sure this file is never included in live script dirs!\n'
|
||||||
'\n'
|
'\n'
|
||||||
'Ideally this should be a stub (.pyi) file, but we\'d need\n'
|
'In the future perhaps this can be a stub (.pyi) file, but'
|
||||||
|
' we will need\n'
|
||||||
'to make sure that it still works with all our tools\n'
|
'to make sure that it still works with all our tools\n'
|
||||||
'(mypy, pylint, pycharm).\n'
|
'(mypy, pylint, pycharm).\n'
|
||||||
'\n'
|
'\n'
|
||||||
@ -672,20 +682,17 @@ def generate(sources_hash: str, outfilename: str) -> None:
|
|||||||
'\n'
|
'\n'
|
||||||
'from __future__ import annotations\n'
|
'from __future__ import annotations\n'
|
||||||
'\n'
|
'\n'
|
||||||
'from typing import TYPE_CHECKING, overload, Sequence, TypeVar\n'
|
f'from typing import {typing_imports}\n'
|
||||||
'\n'
|
|
||||||
'from ba._generated.enums import TimeFormat, TimeType\n'
|
|
||||||
'\n'
|
'\n'
|
||||||
|
f'{enum_import_lines}'
|
||||||
'if TYPE_CHECKING:\n'
|
'if TYPE_CHECKING:\n'
|
||||||
' from typing import Any, Callable, Literal\n'
|
f' from typing import {typing_imports_tc}\n'
|
||||||
' from ba._app import App\n'
|
f'{tc_import_lines_extra}'
|
||||||
' import ba\n'
|
|
||||||
'\n'
|
'\n'
|
||||||
'\n'
|
'\n'
|
||||||
"_T = TypeVar('_T')\n"
|
"_T = TypeVar('_T')\n"
|
||||||
'\n'
|
'\n'
|
||||||
'app: App\n'
|
f'{app_declare_lines}'
|
||||||
'\n'
|
|
||||||
'def _uninferrable() -> Any:\n'
|
'def _uninferrable() -> Any:\n'
|
||||||
' """Get an "Any" in mypy and "uninferrable" in Pylint."""\n'
|
' """Get an "Any" in mypy and "uninferrable" in Pylint."""\n'
|
||||||
' # pylint: disable=undefined-variable\n'
|
' # pylint: disable=undefined-variable\n'
|
||||||
@ -698,7 +705,7 @@ def generate(sources_hash: str, outfilename: str) -> None:
|
|||||||
out += _writefuncs(module, funcnames, indent=0, spacing=2, as_method=False)
|
out += _writefuncs(module, funcnames, indent=0, spacing=2, as_method=False)
|
||||||
|
|
||||||
outhashpath = os.path.join(os.path.dirname(outfilename),
|
outhashpath = os.path.join(os.path.dirname(outfilename),
|
||||||
'._ba_sources_hash')
|
f'.{mname}_sources_hash')
|
||||||
|
|
||||||
with open(outfilename, 'w', encoding='utf-8') as outfile:
|
with open(outfilename, 'w', encoding='utf-8') as outfile:
|
||||||
outfile.write(out)
|
outfile.write(out)
|
||||||
@ -711,8 +718,8 @@ def generate(sources_hash: str, outfilename: str) -> None:
|
|||||||
check=True)
|
check=True)
|
||||||
|
|
||||||
|
|
||||||
def _dummy_module_dirty() -> tuple[bool, str]:
|
def _dummy_module_dirty(mname: str) -> tuple[bool, str]:
|
||||||
"""Test hashes on the dummy module to see if it needs updates."""
|
"""Test hashes on the dummy-module to see if it needs updates."""
|
||||||
|
|
||||||
# Let's generate a hash from all sources under the python source dir.
|
# Let's generate a hash from all sources under the python source dir.
|
||||||
pysources = []
|
pysources = []
|
||||||
@ -725,7 +732,7 @@ def _dummy_module_dirty() -> tuple[bool, str]:
|
|||||||
# Also lets add this script so we re-create when it changes.
|
# Also lets add this script so we re-create when it changes.
|
||||||
pysources.append(__file__)
|
pysources.append(__file__)
|
||||||
|
|
||||||
outpath = 'assets/src/ba_data/python/._ba_sources_hash'
|
outpath = f'assets/src/ba_data/python/.{mname}_sources_hash'
|
||||||
if not os.path.exists(outpath):
|
if not os.path.exists(outpath):
|
||||||
existing_hash = ''
|
existing_hash = ''
|
||||||
else:
|
else:
|
||||||
@ -743,12 +750,9 @@ def _dummy_module_dirty() -> tuple[bool, str]:
|
|||||||
|
|
||||||
|
|
||||||
def update(projroot: str, check: bool, force: bool) -> None:
|
def update(projroot: str, check: bool, force: bool) -> None:
|
||||||
"""Update the dummy module as needed."""
|
"""Update dummy-modules as needed."""
|
||||||
toolsdir = os.path.abspath(os.path.join(projroot, 'tools'))
|
toolsdir = os.path.abspath(os.path.join(projroot, 'tools'))
|
||||||
|
|
||||||
outfilename = os.path.abspath(
|
|
||||||
os.path.join(projroot, 'assets/src/ba_data/python/_ba.py'))
|
|
||||||
|
|
||||||
# Make sure we're running from the project root dir.
|
# Make sure we're running from the project root dir.
|
||||||
os.chdir(projroot)
|
os.chdir(projroot)
|
||||||
|
|
||||||
@ -756,53 +760,61 @@ def update(projroot: str, check: bool, force: bool) -> None:
|
|||||||
if force and check:
|
if force and check:
|
||||||
raise Exception('cannot specify both force and check mode')
|
raise Exception('cannot specify both force and check mode')
|
||||||
|
|
||||||
dirty, sources_hash = _dummy_module_dirty()
|
for mname in ('_ba', '_bainternal'):
|
||||||
|
outfilename = os.path.abspath(
|
||||||
|
os.path.join(projroot, f'assets/src/ba_data/python/{mname}.py'))
|
||||||
|
|
||||||
if dirty:
|
dirty, sources_hash = _dummy_module_dirty(mname)
|
||||||
if check:
|
|
||||||
print(f'{Clr.RED}ERROR: dummy _ba module'
|
|
||||||
f' is out of date.{Clr.RST}')
|
|
||||||
sys.exit(255)
|
|
||||||
elif not force:
|
|
||||||
# Dummy module is clean and force is off; we're done here.
|
|
||||||
print('Dummy module _ba.py is up to date.')
|
|
||||||
sys.exit(0)
|
|
||||||
|
|
||||||
print(f'{Clr.MAG}Updating _ba.py Dummy Module...{Clr.RST}')
|
if dirty:
|
||||||
|
if check:
|
||||||
|
print(f'{Clr.RED}ERROR: dummy {mname} module'
|
||||||
|
f' is out of date.{Clr.RST}')
|
||||||
|
sys.exit(255)
|
||||||
|
elif not force:
|
||||||
|
# Dummy-module is clean and force is off; we're done here.
|
||||||
|
print(f'Dummy-module {Clr.BLD}{mname}.py{Clr.RST} is up to date.')
|
||||||
|
continue
|
||||||
|
|
||||||
# Let's build the cmake version; no sandboxing issues to contend with
|
print(f'{Clr.MAG}Updating {Clr.BLD}{mname}.py{Clr.RST}{Clr.MAG}'
|
||||||
# there. Also going with the headless build; will need to revisit if
|
f' dummy-module...{Clr.RST}')
|
||||||
# there's ever any functionality not available in that build.
|
|
||||||
subprocess.run(['make', 'cmake-server-build'], check=True)
|
|
||||||
|
|
||||||
# Launch ballistica and exec ourself from within it.
|
# Let's build the cmake version; no sandboxing issues to contend with
|
||||||
print('Launching ballisticacore to generate dummy-module...')
|
# there. Also going with the headless build; will need to revisit if
|
||||||
try:
|
# there's ever any functionality not available in that build.
|
||||||
subprocess.run(
|
subprocess.run(['make', 'cmake-server-build'], check=True)
|
||||||
[
|
|
||||||
'./ballisticacore',
|
|
||||||
'-exec',
|
|
||||||
f'try:\n'
|
|
||||||
f' import sys\n'
|
|
||||||
f' sys.path.append("{toolsdir}")\n'
|
|
||||||
f' from batools import dummymodule\n'
|
|
||||||
f' dummymodule.generate(sources_hash="{sources_hash}",\n'
|
|
||||||
f' outfilename="{outfilename}")\n'
|
|
||||||
f' ba.quit()\n'
|
|
||||||
f'except Exception as exc:\n'
|
|
||||||
f' import sys\n'
|
|
||||||
f' import traceback\n'
|
|
||||||
f' print("ERROR GENERATING DUMMY MODULE")\n'
|
|
||||||
f' traceback.print_exc()\n'
|
|
||||||
f' sys.exit(255)\n',
|
|
||||||
],
|
|
||||||
cwd='build/cmake/server-debug/dist',
|
|
||||||
check=True,
|
|
||||||
)
|
|
||||||
except Exception as exc2:
|
|
||||||
# Keep our error simple here; we want focus to be on what went
|
|
||||||
# wrong withing BallisticaCore.
|
|
||||||
raise CleanError(
|
|
||||||
'BallisticaCore dummy-module generation failed.') from exc2
|
|
||||||
|
|
||||||
print('Dummy-module generation complete.')
|
# Launch ballisticacore and exec ourself from within it.
|
||||||
|
print(f'Launching ballisticacore to generate'
|
||||||
|
f' {Clr.BLD}{mname}.py{Clr.RST} dummy-module...')
|
||||||
|
try:
|
||||||
|
subprocess.run(
|
||||||
|
[
|
||||||
|
'./ballisticacore',
|
||||||
|
'-exec',
|
||||||
|
f'try:\n'
|
||||||
|
f' import sys\n'
|
||||||
|
f' sys.path.append("{toolsdir}")\n'
|
||||||
|
f' from batools import dummymodule\n'
|
||||||
|
f' dummymodule.generate(mname="{mname}",\n'
|
||||||
|
f' sources_hash="{sources_hash}",\n'
|
||||||
|
f' outfilename="{outfilename}")\n'
|
||||||
|
f' ba.quit()\n'
|
||||||
|
f'except Exception as exc:\n'
|
||||||
|
f' import sys\n'
|
||||||
|
f' import traceback\n'
|
||||||
|
f' print("ERROR GENERATING {mname} DUMMY-MODULE")\n'
|
||||||
|
f' traceback.print_exc()\n'
|
||||||
|
f' sys.exit(255)\n',
|
||||||
|
],
|
||||||
|
cwd='build/cmake/server-debug/dist',
|
||||||
|
check=True,
|
||||||
|
)
|
||||||
|
print(
|
||||||
|
f'{Clr.BLU}{mname} dummy-module generation complete.{Clr.RST}')
|
||||||
|
|
||||||
|
except Exception as exc2:
|
||||||
|
# Keep our error simple here; we want focus to be on what went
|
||||||
|
# wrong withing BallisticaCore.
|
||||||
|
raise CleanError(
|
||||||
|
'BallisticaCore dummy-module generation failed.') from exc2
|
||||||
|
|||||||
@ -999,8 +999,8 @@ def gen_python_init_module() -> None:
|
|||||||
'#\n')
|
'#\n')
|
||||||
|
|
||||||
|
|
||||||
def update_dummy_module() -> None:
|
def update_dummy_modules() -> None:
|
||||||
"""Update our _ba dummy module."""
|
"""Update our _ba.py and _bainternal.py dummy modules."""
|
||||||
from batools.dummymodule import update
|
from batools.dummymodule import update
|
||||||
update(projroot=str(PROJROOT),
|
update(projroot=str(PROJROOT),
|
||||||
check='--check' in sys.argv,
|
check='--check' in sys.argv,
|
||||||
|
|||||||
@ -101,7 +101,7 @@ class Updater:
|
|||||||
self._apply_line_changes()
|
self._apply_line_changes()
|
||||||
self._apply_file_changes()
|
self._apply_file_changes()
|
||||||
|
|
||||||
self._update_dummy_module()
|
self._update_dummy_modules()
|
||||||
|
|
||||||
# Though not technically necessary, let's go ahead and update
|
# Though not technically necessary, let's go ahead and update
|
||||||
# irony compile-commands, tool configs, etc. as part of the
|
# irony compile-commands, tool configs, etc. as part of the
|
||||||
@ -659,13 +659,13 @@ class Updater:
|
|||||||
raise CleanError(
|
raise CleanError(
|
||||||
'Error checking/updating resources Makefile.') from exc
|
'Error checking/updating resources Makefile.') from exc
|
||||||
|
|
||||||
def _update_dummy_module(self) -> None:
|
def _update_dummy_modules(self) -> None:
|
||||||
# Update our dummy _ba module.
|
# Update our dummy _ba module.
|
||||||
# Note: This should happen near the end because it may run the cmake
|
# Note: This should happen near the end because it may run the cmake
|
||||||
# build so its success may depend on the cmake build files having
|
# build so its success may depend on the cmake build files having
|
||||||
# already been updated.
|
# already been updated.
|
||||||
try:
|
try:
|
||||||
subprocess.run(['tools/pcommand', 'update_dummy_module'] +
|
subprocess.run(['tools/pcommand', 'update_dummy_modules'] +
|
||||||
self._checkarglist,
|
self._checkarglist,
|
||||||
check=True)
|
check=True)
|
||||||
except Exception as exc:
|
except Exception as exc:
|
||||||
|
|||||||
@ -42,7 +42,7 @@ from batools.pcommand import (
|
|||||||
gen_flat_data_code, wsl_path_to_win, wsl_build_check_win_drive,
|
gen_flat_data_code, wsl_path_to_win, wsl_build_check_win_drive,
|
||||||
win_ci_binary_build, genchangelog, android_sdk_utils,
|
win_ci_binary_build, genchangelog, android_sdk_utils,
|
||||||
update_resources_makefile, update_meta_makefile, gen_python_enums_module,
|
update_resources_makefile, update_meta_makefile, gen_python_enums_module,
|
||||||
gen_python_init_module, update_dummy_module, win_ci_install_prereqs,
|
gen_python_init_module, update_dummy_modules, win_ci_install_prereqs,
|
||||||
version)
|
version)
|
||||||
# pylint: enable=unused-import
|
# pylint: enable=unused-import
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user