Minor bug fixing and project cleanup

This commit is contained in:
Eric Froemling 2020-07-12 02:47:27 -07:00
parent 29742b69cb
commit 0db957a4c3
9 changed files with 69 additions and 49 deletions

View File

@ -4135,16 +4135,16 @@
"assets/build/windows/x64/vc_redist.x64.exe": "https://files.ballistica.net/cache/ba1/ea/19/8b8787d81abcdce158ba608cd24f", "assets/build/windows/x64/vc_redist.x64.exe": "https://files.ballistica.net/cache/ba1/ea/19/8b8787d81abcdce158ba608cd24f",
"assets/build/windows/x64/vcruntime140_1d.dll": "https://files.ballistica.net/cache/ba1/11/d8/ff6344b429b00c24d9a1930d4338", "assets/build/windows/x64/vcruntime140_1d.dll": "https://files.ballistica.net/cache/ba1/11/d8/ff6344b429b00c24d9a1930d4338",
"assets/build/windows/x64/vcruntime140d.dll": "https://files.ballistica.net/cache/ba1/20/33/0825e11e6518f87ece3009309933", "assets/build/windows/x64/vcruntime140d.dll": "https://files.ballistica.net/cache/ba1/20/33/0825e11e6518f87ece3009309933",
"build/prefab/linux-server/debug/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/57/f8/47526bddac42b974f4ce86d13166", "build/prefab/linux-server/debug/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/7c/92/8e0cbeffff273e5aa40fa584b602",
"build/prefab/linux-server/release/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/0a/a9/46cb3927b667d67d8dc936b744b6", "build/prefab/linux-server/release/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/41/4a/91a9073717d810d978101f035f75",
"build/prefab/linux/debug/ballisticacore": "https://files.ballistica.net/cache/ba1/dd/f3/130eb5ddb320f11093ba92bfbe6a", "build/prefab/linux/debug/ballisticacore": "https://files.ballistica.net/cache/ba1/13/cc/732f4cbdaa5ff318c7041b3cc46e",
"build/prefab/linux/release/ballisticacore": "https://files.ballistica.net/cache/ba1/53/a6/56310d64b07fb7aa1481e59a4d29", "build/prefab/linux/release/ballisticacore": "https://files.ballistica.net/cache/ba1/95/01/6e4e0ddd1b32d2a24267472811d9",
"build/prefab/mac-server/debug/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/cd/6a/1518d0ebde22f06a679edf04002a", "build/prefab/mac-server/debug/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/63/ee/2230562fd122dbc68ace1959440a",
"build/prefab/mac-server/release/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/72/4f/f4d081f47a48ba940603a6825c1f", "build/prefab/mac-server/release/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/18/0e/6aebdc438215b178618b209b3d38",
"build/prefab/mac/debug/ballisticacore": "https://files.ballistica.net/cache/ba1/d9/1f/436439103f6ede3ec88f46b592a7", "build/prefab/mac/debug/ballisticacore": "https://files.ballistica.net/cache/ba1/a6/6e/7041677d14ff3445e678e85ed509",
"build/prefab/mac/release/ballisticacore": "https://files.ballistica.net/cache/ba1/97/44/68715ff4f2208719f42e174db2e5", "build/prefab/mac/release/ballisticacore": "https://files.ballistica.net/cache/ba1/78/7f/27a790f133b341a47e0d286631f6",
"build/prefab/windows-server/debug/dist/ballisticacore_headless.exe": "https://files.ballistica.net/cache/ba1/39/87/ce5cf695b6af229875b9c5ff757e", "build/prefab/windows-server/debug/dist/ballisticacore_headless.exe": "https://files.ballistica.net/cache/ba1/3f/7b/6548e30606ba52f274a72f123473",
"build/prefab/windows-server/release/dist/ballisticacore_headless.exe": "https://files.ballistica.net/cache/ba1/db/f1/50f277827b1b070dd3b4c5c97553", "build/prefab/windows-server/release/dist/ballisticacore_headless.exe": "https://files.ballistica.net/cache/ba1/df/d8/b1bfd4a2de519276ae8b3498e64d",
"build/prefab/windows/debug/BallisticaCore.exe": "https://files.ballistica.net/cache/ba1/20/f3/6fb608d305279d5d8663f6b8cee6", "build/prefab/windows/debug/BallisticaCore.exe": "https://files.ballistica.net/cache/ba1/56/77/a0fcc90f8be8ac87b677ac0c983d",
"build/prefab/windows/release/BallisticaCore.exe": "https://files.ballistica.net/cache/ba1/71/a0/00ae9e235e28b18def6847d69c75" "build/prefab/windows/release/BallisticaCore.exe": "https://files.ballistica.net/cache/ba1/45/1e/d1a5697069c1719b962140d4815b"
} }

View File

@ -2,6 +2,7 @@
- The ba.Session.teams and ba.Session.players lists are now ba.Session.sessionteams and ba.Session.sessionplayers. This is to help keep it clear that a Team/Player and a SessionTeam/SessionPlayer are different things now. - The ba.Session.teams and ba.Session.players lists are now ba.Session.sessionteams and ba.Session.sessionplayers. This is to help keep it clear that a Team/Player and a SessionTeam/SessionPlayer are different things now.
- Disconnecting an input-device now immediately removes the player instead of doing so in the next cycle; this prevents possible issues where code would try to access player.inputdevice before the removal happens which would lead to errors. - Disconnecting an input-device now immediately removes the player instead of doing so in the next cycle; this prevents possible issues where code would try to access player.inputdevice before the removal happens which would lead to errors.
- Updated mac prefab builds to point at homebrew's python@3.7 package now that 3.8 has been made the default. - Updated mac prefab builds to point at homebrew's python@3.7 package now that 3.8 has been made the default.
- Fixed an issue where adding/deleting UI widgets within certain callbacks could cause a crash.
### 1.5.19 (20123) ### 1.5.19 (20123)
- Cleaned up some bomb logic to avoid weird corner-cases such as land-mine explosions behaving like punches when set off by punches or bombs potentially resulting in multiple explosions when triggered by multiple other bombs simultaneously. Holler if anything explosion-related seems off now. - Cleaned up some bomb logic to avoid weird corner-cases such as land-mine explosions behaving like punches when set off by punches or bombs potentially resulting in multiple explosions when triggered by multiple other bombs simultaneously. Holler if anything explosion-related seems off now.

View File

@ -665,7 +665,7 @@ VERSION = $(shell tools/version_utils version)
BUILD_NUMBER = $(shell tools/version_utils build) BUILD_NUMBER = $(shell tools/version_utils build)
BUILD_DIR = ${PROJ_DIR}/build BUILD_DIR = ${PROJ_DIR}/build
LAZYBUILDDIR = .cache/lazybuild LAZYBUILDDIR = .cache/lazybuild
STAGE_ASSETS = ${PROJ_DIR}/tools/stage_assets STAGE_ASSETS = ${PROJ_DIR}/tools/pcommand stage_assets
# Things to ignore when doing root level cleans. # Things to ignore when doing root level cleans.
ROOT_CLEAN_IGNORES = --exclude=assets/src_master \ ROOT_CLEAN_IGNORES = --exclude=assets/src_master \

View File

@ -592,7 +592,9 @@ class Session:
lobby = chooser.lobby lobby = chooser.lobby
activity = self._activity_weak() activity = self._activity_weak()
# It seems this can happen.. # This happens sometimes. That seems like it shouldn't be happening;
# when would we have a session and a chooser with players but no
# active activity?
if activity is None: if activity is None:
print('_on_player_ready called with no activity.') print('_on_player_ready called with no activity.')
return return

View File

@ -374,8 +374,15 @@ class PartyQueueWindow(ba.Window):
def on_update_response(self, response: Optional[Dict[str, Any]]) -> None: def on_update_response(self, response: Optional[Dict[str, Any]]) -> None:
"""We've received a response from an update to the server.""" """We've received a response from an update to the server."""
# pylint: disable=too-many-branches
if not self._root_widget: if not self._root_widget:
return return
# Seeing this in logs; debugging...
if not self._title_text:
print('PartyQueueWindows update: Have root but no title_text.')
return
if response is not None: if response is not None:
should_show_field = (response.get('d') is not None) should_show_field = (response.get('d') is not None)
self._smoothing = response['s'] self._smoothing = response['s']

View File

@ -1,5 +1,5 @@
<!-- THIS FILE IS AUTO GENERATED; DO NOT EDIT BY HAND --> <!-- THIS FILE IS AUTO GENERATED; DO NOT EDIT BY HAND -->
<h4><em>last updated on 2020-07-09 for Ballistica version 1.5.20 build 20128</em></h4> <h4><em>last updated on 2020-07-11 for Ballistica version 1.5.20 build 20132</em></h4>
<p>This page documents the Python classes and functions in the 'ba' module, <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> 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> <hr>
@ -2219,7 +2219,7 @@ its time with lingering corpses, sound effects, etc.</p>
<p>&lt;all methods inherited from <a href="#class_ba_Team">ba.Team</a>&gt;</p> <p>&lt;all methods inherited from <a href="#class_ba_Team">ba.Team</a>&gt;</p>
<hr> <hr>
<h2><strong><a name="class_ba_Existable">ba.Existable</a></strong></h3> <h2><strong><a name="class_ba_Existable">ba.Existable</a></strong></h3>
<p>Inherits from: <a href="#class_typing_Protocol">typing.Protocol</a>, <a href="#class_typing_Generic">typing.Generic</a></p> <p>Inherits from: <a href="#class_typing_extensions_Protocol">typing_extensions.Protocol</a></p>
<p>A Protocol for objects supporting an exists() method.</p> <p>A Protocol for objects supporting an exists() method.</p>
<p>Category: <a href="#class_category_Protocols">Protocols</a> <p>Category: <a href="#class_category_Protocols">Protocols</a>

View File

@ -30,7 +30,6 @@ import subprocess
from functools import partial from functools import partial
from typing import TYPE_CHECKING from typing import TYPE_CHECKING
from efro.error import CleanError
from efrotools.pybuild import PYTHON_VERSION_MAJOR from efrotools.pybuild import PYTHON_VERSION_MAJOR
if TYPE_CHECKING: if TYPE_CHECKING:
@ -48,10 +47,10 @@ OPT_PYC_SUFFIX = ('cpython-' + PYTHON_VERSION_MAJOR.replace('.', '') +
class Config: class Config:
"""Encapsulates command options.""" """Encapsulates command options."""
def __init__(self) -> None: def __init__(self, projroot: str) -> None:
self.projroot = projroot
# We always calc src relative to this script. # We always calc src relative to this script.
self.src = os.path.abspath( self.src = self.projroot + '/assets/build'
os.path.dirname(sys.argv[0]) + '/../assets/build')
self.dst: Optional[str] = None self.dst: Optional[str] = None
self.win_extras_src: Optional[str] = None self.win_extras_src: Optional[str] = None
self.win_platform: Optional[str] = None self.win_platform: Optional[str] = None
@ -71,7 +70,7 @@ class Config:
self.is_payload_full = False self.is_payload_full = False
self.debug = False self.debug = False
def _parse_android_args(self) -> None: def _parse_android_args(self, args: List[str]) -> None:
# On Android we get nitpicky with what # On Android we get nitpicky with what
# we want to copy in since we can speed up # we want to copy in since we can speed up
# iterations by installing stripped down # iterations by installing stripped down
@ -89,7 +88,7 @@ class Config:
self.include_fonts = False self.include_fonts = False
self.include_json = False self.include_json = False
self.include_pylib = False self.include_pylib = False
for arg in sys.argv[1:]: for arg in args:
if arg == '-full': if arg == '-full':
self.include_audio = True self.include_audio = True
self.include_models = True self.include_models = True
@ -118,13 +117,13 @@ class Config:
elif arg == '-audio': elif arg == '-audio':
self.include_audio = True self.include_audio = True
def _parse_win_platform(self, platform: str) -> None: def _parse_win_platform(self, platform: str, args: List[str]) -> None:
"""Parse sub-args in the windows platform string.""" """Parse sub-args in the windows platform string."""
winempty, wintype, winplt, wincfg = platform.split('-') winempty, wintype, winplt, wincfg = platform.split('-')
self.win_platform = winplt self.win_platform = winplt
self.win_type = wintype self.win_type = wintype
assert winempty == '' assert winempty == ''
self.dst = sys.argv[2] self.dst = args[1]
self.tex_suffix = '.dds' self.tex_suffix = '.dds'
if wintype == 'win': if wintype == 'win':
@ -137,12 +136,9 @@ class Config:
raise RuntimeError(f'Invalid wintype: "{wintype}"') raise RuntimeError(f'Invalid wintype: "{wintype}"')
if winplt == 'Win32': if winplt == 'Win32':
self.win_extras_src = os.path.abspath( self.win_extras_src = self.projroot + '/assets/build/windows/Win32'
os.path.dirname(sys.argv[0]) +
'/../assets/build/windows/Win32')
elif winplt == 'x64': elif winplt == 'x64':
self.win_extras_src = os.path.abspath( self.win_extras_src = self.projroot + '/assets/build/windows/x64'
os.path.dirname(sys.argv[0]) + '/../assets/build/windows/x64')
else: else:
raise RuntimeError(f'Invalid winplt: "{winplt}"') raise RuntimeError(f'Invalid winplt: "{winplt}"')
@ -153,31 +149,31 @@ class Config:
else: else:
raise RuntimeError(f'Invalid wincfg: "{wincfg}"') raise RuntimeError(f'Invalid wincfg: "{wincfg}"')
def parse_args(self) -> None: def parse_args(self, args: List[str]) -> None:
"""Parse args and apply to the cfg.""" """Parse args and apply to the cfg."""
if len(sys.argv) < 2: if len(args) < 1:
raise RuntimeError('Expected a platform argument.') raise RuntimeError('Expected a platform argument.')
platform = sys.argv[1] platform = args[0]
if platform == '-android': if platform == '-android':
self._parse_android_args() self._parse_android_args(args)
elif platform.startswith('-win'): elif platform.startswith('-win'):
self._parse_win_platform(platform) self._parse_win_platform(platform, args)
elif platform == '-cmake': elif platform == '-cmake':
self.dst = sys.argv[2] self.dst = args[1]
self.tex_suffix = '.dds' self.tex_suffix = '.dds'
elif '-cmakeserver' in sys.argv: elif '-cmakeserver' in args:
self.dst = sys.argv[2] self.dst = args[1]
self.include_textures = False self.include_textures = False
self.include_audio = False self.include_audio = False
self.include_models = False self.include_models = False
elif '-xcode-mac' in sys.argv: elif '-xcode-mac' in args:
self.src = os.environ['SOURCE_ROOT'] + '/assets/build' self.src = os.environ['SOURCE_ROOT'] + '/assets/build'
self.dst = (os.environ['TARGET_BUILD_DIR'] + '/' + self.dst = (os.environ['TARGET_BUILD_DIR'] + '/' +
os.environ['UNLOCALIZED_RESOURCES_FOLDER_PATH']) os.environ['UNLOCALIZED_RESOURCES_FOLDER_PATH'])
self.include_pylib = True self.include_pylib = True
self.pylib_src_name = 'pylib-apple' self.pylib_src_name = 'pylib-apple'
self.tex_suffix = '.dds' self.tex_suffix = '.dds'
elif '-xcode-ios' in sys.argv: elif '-xcode-ios' in args:
self.src = os.environ['SOURCE_ROOT'] + '/assets/build' self.src = os.environ['SOURCE_ROOT'] + '/assets/build'
self.dst = (os.environ['TARGET_BUILD_DIR'] + '/' + self.dst = (os.environ['TARGET_BUILD_DIR'] + '/' +
os.environ['UNLOCALIZED_RESOURCES_FOLDER_PATH']) os.environ['UNLOCALIZED_RESOURCES_FOLDER_PATH'])
@ -323,11 +319,14 @@ def _sync_pylib(cfg: Config) -> None:
_run(cmd) _run(cmd)
def main() -> None: def main(projroot: str, args: Optional[List[str]] = None) -> None:
"""Stage assets for a build.""" """Stage assets for a build."""
cfg = Config() if args is None:
cfg.parse_args() args = sys.argv
cfg = Config(projroot)
cfg.parse_args(args)
# Ok, now for every top level dir in src, come up with a nice single # Ok, now for every top level dir in src, come up with a nice single
# command to sync the needed subset of it to dst. # command to sync the needed subset of it to dst.
@ -386,9 +385,9 @@ def main() -> None:
_write_payload_file(cfg.dst, cfg.is_payload_full) _write_payload_file(cfg.dst, cfg.is_payload_full)
if __name__ == '__main__': # if __name__ == '__main__':
try: # try:
main() # main()
except CleanError as exc: # except CleanError as exc:
exc.pretty_print() # exc.pretty_print()
sys.exit(1) # sys.exit(1)

View File

@ -692,3 +692,14 @@ def efro_gradle() -> None:
if errored: if errored:
sys.exit(1) sys.exit(1)
def stage_assets() -> None:
"""Stage assets for a build."""
from batools.assetstaging import main
from efro.error import CleanError
try:
main(projroot=str(PROJROOT), args=sys.argv[2:])
except CleanError as exc:
exc.pretty_print()
sys.exit(1)

View File

@ -55,7 +55,7 @@ from batools.pcommand import (
get_modern_make, warm_start_asset_build, update_docs_md, list_pip_reqs, get_modern_make, warm_start_asset_build, update_docs_md, list_pip_reqs,
install_pip_reqs, checkenv, ensure_prefab_platform, prefab_run_var, install_pip_reqs, checkenv, ensure_prefab_platform, prefab_run_var,
make_prefab, update_makebob, lazybuild, android_archive_unstripped_libs, make_prefab, update_makebob, lazybuild, android_archive_unstripped_libs,
efro_gradle) efro_gradle, stage_assets)
# pylint: enable=unused-import # pylint: enable=unused-import
if TYPE_CHECKING: if TYPE_CHECKING: