From 1cc07d243ed823c5b2b18db34d44497c8461b1f5 Mon Sep 17 00:00:00 2001 From: Eric Froemling Date: Fri, 8 Oct 2021 16:17:51 -0500 Subject: [PATCH] Language updates and tidying --- .efrocachemap | 26 +++++++++++++------------- docs/ba_module.md | 2 +- tools/efro/dataclassio/_pathcapture.py | 20 ++++++++++++++++++++ 3 files changed, 34 insertions(+), 14 deletions(-) diff --git a/.efrocachemap b/.efrocachemap index ca075db5..78116cb7 100644 --- a/.efrocachemap +++ b/.efrocachemap @@ -420,9 +420,9 @@ "assets/build/ba_data/audio/zoeOw.ogg": "https://files.ballistica.net/cache/ba1/14/f1/4f2995d78fc20dd79dfb39c5d554", "assets/build/ba_data/audio/zoePickup01.ogg": "https://files.ballistica.net/cache/ba1/57/ac/6ed0caecd25dc23688debed24c45", "assets/build/ba_data/audio/zoeScream01.ogg": "https://files.ballistica.net/cache/ba1/32/08/38dac4a79ab2acee76a75d32a310", - "assets/build/ba_data/data/langdata.json": "https://files.ballistica.net/cache/ba1/e4/48/6648ea4178c12d6e25ed3a53f628", - "assets/build/ba_data/data/languages/arabic.json": "https://files.ballistica.net/cache/ba1/0f/0e/7184059414320d32104463e41038", - "assets/build/ba_data/data/languages/belarussian.json": "https://files.ballistica.net/cache/ba1/e2/58/c2c5964370df118c51528dc4bfa2", + "assets/build/ba_data/data/langdata.json": "https://files.ballistica.net/cache/ba1/13/e2/9a883b2b01f282e87f445de8bdcf", + "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/languages/croatian.json": "https://files.ballistica.net/cache/ba1/66/bf/6e98398016da261296b8c306560e", @@ -431,29 +431,29 @@ "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/6f/82/a29452c726dc179fc33286a90922", "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/16/53/1535cc28a789efb7372de01bd7fb", - "assets/build/ba_data/data/languages/german.json": "https://files.ballistica.net/cache/ba1/2f/47/3f7ef1eb62055dd5e6f7b7ec648c", + "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/gibberish.json": "https://files.ballistica.net/cache/ba1/0a/ec/f6665a696238275c806e7a0b1d0d", - "assets/build/ba_data/data/languages/greek.json": "https://files.ballistica.net/cache/ba1/ff/08/0d32d1babc60fdebd39def8b51da", - "assets/build/ba_data/data/languages/hindi.json": "https://files.ballistica.net/cache/ba1/63/f0/cc8dd75a100f7d58000a361ca160", + "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/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/87/e5/a10ddd73cfb7996bbd576032db6a", + "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/korean.json": "https://files.ballistica.net/cache/ba1/26/8d/bf9cc8db2cc71b69e789898e1093", + "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/polish.json": "https://files.ballistica.net/cache/ba1/2e/17/fb3e7ed77fa54427b434b1791793", + "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/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/serbian.json": "https://files.ballistica.net/cache/ba1/0d/19/4ed63932f5476d97068171906135", - "assets/build/ba_data/data/languages/slovak.json": "https://files.ballistica.net/cache/ba1/97/ec/384ca27db2fdc711514273726935", + "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/bc/71/83c7c31a4f6467ed2ec8b86a4b71", "assets/build/ba_data/data/languages/swedish.json": "https://files.ballistica.net/cache/ba1/50/9f/be006ba19be6a69a57837eb6dca0", "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/8b/65/adfbe450da3f61677bd909fff707", + "assets/build/ba_data/data/languages/vietnamese.json": "https://files.ballistica.net/cache/ba1/e4/8b/93243a2723b04ff70580afc9ebb7", "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", diff --git a/docs/ba_module.md b/docs/ba_module.md index f80dbc50..1d7966f6 100644 --- a/docs/ba_module.md +++ b/docs/ba_module.md @@ -1,5 +1,5 @@ -

last updated on 2021-10-02 for Ballistica version 1.6.5 build 20393

+

last updated on 2021-10-08 for Ballistica version 1.6.5 build 20393

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 let me know. Happy modding!


diff --git a/tools/efro/dataclassio/_pathcapture.py b/tools/efro/dataclassio/_pathcapture.py index 0b17a2bf..cd781dae 100644 --- a/tools/efro/dataclassio/_pathcapture.py +++ b/tools/efro/dataclassio/_pathcapture.py @@ -84,3 +84,23 @@ class DataclassFieldLookup(Generic[T]): f' the provided object; got a {type(out)}.') return out.path return '' + + def paths(self, callback: Callable[[T], List[Any]]) -> List[str]: + """Look up multiple paths on child dataclass fields. + + Functionality is identical to path() but for multiple paths at once. + + example: + DataclassFieldLookup(MyType).paths(lambda obj: [obj.foo, obj.bar]) + """ + outvals: List[str] = [] + if not TYPE_CHECKING: + outs = callback(_PathCapture(self.cls)) + assert isinstance(outs, list) + for out in outs: + if not isinstance(out, _PathCapture): + raise TypeError( + f'Expected a valid path under' + f' the provided object; got a {type(out)}.') + outvals.append(out.path) + return outvals