From 99dac3af6fbeedc1b925a730d64c64d99aec092b Mon Sep 17 00:00:00 2001 From: Eric Froemling Date: Mon, 19 Apr 2021 19:08:44 -0700 Subject: [PATCH] Added ba.app.state val --- .efrocachemap | 72 ++++++++++++------------- CHANGELOG.md | 1 + assets/src/ba_data/python/ba/_app.py | 51 +++++++++++------- assets/src/ba_data/python/ba/_plugin.py | 2 +- docs/ba_module.md | 18 ++++++- 5 files changed, 87 insertions(+), 57 deletions(-) diff --git a/.efrocachemap b/.efrocachemap index de0092df..6aa18ef9 100644 --- a/.efrocachemap +++ b/.efrocachemap @@ -3932,40 +3932,40 @@ "assets/build/windows/Win32/ucrtbased.dll": "https://files.ballistica.net/cache/ba1/b5/85/f8b6d0558ddb87267f34254b1450", "assets/build/windows/Win32/vc_redist.x86.exe": "https://files.ballistica.net/cache/ba1/1c/e1/4a1a2eddda2f4aebd5f8b64ab08e", "assets/build/windows/Win32/vcruntime140d.dll": "https://files.ballistica.net/cache/ba1/50/8d/bc2600ac9491f1b14d659709451f", - "build/prefab/full/linux_arm64/debug/ballisticacore": "https://files.ballistica.net/cache/ba1/fb/43/4ee03d93cb600a9d5357ed4a8f79", - "build/prefab/full/linux_arm64/release/ballisticacore": "https://files.ballistica.net/cache/ba1/4e/46/13900c39fd26bab6f03282f12cec", - "build/prefab/full/linux_arm64_server/debug/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/28/33/625c9e921e767b9454c8d37cd56a", - "build/prefab/full/linux_arm64_server/release/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/a0/84/78af1a816be47f63737dbcdd44fa", - "build/prefab/full/linux_x86_64/debug/ballisticacore": "https://files.ballistica.net/cache/ba1/1c/33/248616c7c2f44cc1806746ad830d", - "build/prefab/full/linux_x86_64/release/ballisticacore": "https://files.ballistica.net/cache/ba1/64/46/9a353218fcc3fc8d49d1b97a67a8", - "build/prefab/full/linux_x86_64_server/debug/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/71/b6/2b354c0f019f57010292b20ee923", - "build/prefab/full/linux_x86_64_server/release/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/a1/a5/db3122d4b5ac643a773cd6c66f20", - "build/prefab/full/mac_arm64/debug/ballisticacore": "https://files.ballistica.net/cache/ba1/3f/02/7e02321ee25135067834f31c6146", - "build/prefab/full/mac_arm64/release/ballisticacore": "https://files.ballistica.net/cache/ba1/e7/f5/bcbda2d9ebd4de7ee4ee4035cac6", - "build/prefab/full/mac_arm64_server/debug/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/0c/b6/5afdffaf67d325f5173d618d21e5", - "build/prefab/full/mac_arm64_server/release/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/79/c3/b5bcc67d79d0d2fd8e6e8ee3a76d", - "build/prefab/full/mac_x86_64/debug/ballisticacore": "https://files.ballistica.net/cache/ba1/ea/37/d338b766e925f67249c3e59238d8", - "build/prefab/full/mac_x86_64/release/ballisticacore": "https://files.ballistica.net/cache/ba1/ea/69/b6964aea96a7ffe478b5a2da6500", - "build/prefab/full/mac_x86_64_server/debug/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/85/b1/1597fda81eb5ac71db7b9d6288b8", - "build/prefab/full/mac_x86_64_server/release/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/40/c3/6a017548a398061ced1f8669faf7", - "build/prefab/full/windows_x86/debug/BallisticaCore.exe": "https://files.ballistica.net/cache/ba1/67/6a/a4d22f68e1bc8ba940567ee22608", - "build/prefab/full/windows_x86/release/BallisticaCore.exe": "https://files.ballistica.net/cache/ba1/d6/56/c44797e5734c16c58b1d7679fbf0", - "build/prefab/full/windows_x86_server/debug/dist/ballisticacore_headless.exe": "https://files.ballistica.net/cache/ba1/9b/1f/9639e9527dcb178424b4f9ac0a39", - "build/prefab/full/windows_x86_server/release/dist/ballisticacore_headless.exe": "https://files.ballistica.net/cache/ba1/ad/a1/aa3966ca129f1be76d70e58389a7", - "build/prefab/lib/linux_arm64/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/d5/a9/ebdcf3e7aa536f1f1339a6cebc0e", - "build/prefab/lib/linux_arm64/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/bd/2e/29ac9dcb9cef978ae0230b3d663f", - "build/prefab/lib/linux_arm64_server/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/56/27/212fb5cdcf60dc8ebfd66c30f957", - "build/prefab/lib/linux_arm64_server/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/ec/1f/228af5f4fbf759d0c31821f57032", - "build/prefab/lib/linux_x86_64/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/29/07/d2c9b0d389b10b8397eb5d62db81", - "build/prefab/lib/linux_x86_64/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/c7/9f/78c5a20694fb80dba8141f0e22bd", - "build/prefab/lib/linux_x86_64_server/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/1e/3a/4bbd2dc474279e8ad989d20ae304", - "build/prefab/lib/linux_x86_64_server/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/45/9f/8e53aaea561cf99502e325cccaf8", - "build/prefab/lib/mac_arm64/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/50/8b/7adf41aae43d70a691cafdeb39b4", - "build/prefab/lib/mac_arm64/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/13/cb/717aecaca7eb3bb679592159efc7", - "build/prefab/lib/mac_arm64_server/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/e4/57/57c7ec83ecfe22d0e43a067c2acc", - "build/prefab/lib/mac_arm64_server/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/96/4e/4a089c7256cc6574d3954c79106a", - "build/prefab/lib/mac_x86_64/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/34/2c/6d6f5dca8dde7e3825d37d0ebc6a", - "build/prefab/lib/mac_x86_64/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/b9/ad/9ac77c3fa1da834865daeaca50ee", - "build/prefab/lib/mac_x86_64_server/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/90/23/d17be669d1095577a9534dcb0865", - "build/prefab/lib/mac_x86_64_server/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/df/18/8fcc18af7c1aca22a91ecf3b2dbd" + "build/prefab/full/linux_arm64/debug/ballisticacore": "https://files.ballistica.net/cache/ba1/4d/69/2e4c0ba6b6a7f27c9754e6fa2028", + "build/prefab/full/linux_arm64/release/ballisticacore": "https://files.ballistica.net/cache/ba1/54/e1/f8d826dfbe0ff9f192edc232857c", + "build/prefab/full/linux_arm64_server/debug/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/b1/fd/2258453c18672fd79398b0c2030c", + "build/prefab/full/linux_arm64_server/release/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/3e/74/9417d078cb0a0eaecdf30e531c4e", + "build/prefab/full/linux_x86_64/debug/ballisticacore": "https://files.ballistica.net/cache/ba1/b0/e8/495cc0e784c6b98d33ee8e83f922", + "build/prefab/full/linux_x86_64/release/ballisticacore": "https://files.ballistica.net/cache/ba1/7b/73/c72308a21aeb876e4192719f4445", + "build/prefab/full/linux_x86_64_server/debug/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/11/d4/474b2f2cf46689f7cb7733b66a10", + "build/prefab/full/linux_x86_64_server/release/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/0e/d3/e1d791f6a6411c7acfdd72d2c75e", + "build/prefab/full/mac_arm64/debug/ballisticacore": "https://files.ballistica.net/cache/ba1/89/f9/7b3ec953d17beaa42560aa09bbdb", + "build/prefab/full/mac_arm64/release/ballisticacore": "https://files.ballistica.net/cache/ba1/57/81/c00fc47949becf3fa7b8fda7737e", + "build/prefab/full/mac_arm64_server/debug/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/63/87/4f12518d69e5974124744a99b9cc", + "build/prefab/full/mac_arm64_server/release/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/34/16/d383c070bc3ee1692f729d817ba5", + "build/prefab/full/mac_x86_64/debug/ballisticacore": "https://files.ballistica.net/cache/ba1/0c/68/d5c5a2e2511e597ab13f0e23f62b", + "build/prefab/full/mac_x86_64/release/ballisticacore": "https://files.ballistica.net/cache/ba1/10/3a/e8cca189e72de469661306810f4e", + "build/prefab/full/mac_x86_64_server/debug/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/90/0a/621c8f2bc888e93581b4100ef857", + "build/prefab/full/mac_x86_64_server/release/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/2b/24/e9fd7c975d93ce57707b5ddd01f1", + "build/prefab/full/windows_x86/debug/BallisticaCore.exe": "https://files.ballistica.net/cache/ba1/a6/f8/3bcda19fe1c92de4114b0096a807", + "build/prefab/full/windows_x86/release/BallisticaCore.exe": "https://files.ballistica.net/cache/ba1/d4/7b/22b7570f138f58ff88b219ff2586", + "build/prefab/full/windows_x86_server/debug/dist/ballisticacore_headless.exe": "https://files.ballistica.net/cache/ba1/99/54/0a026dbab2d2e6e44d89f8242f4f", + "build/prefab/full/windows_x86_server/release/dist/ballisticacore_headless.exe": "https://files.ballistica.net/cache/ba1/79/63/76dd15496bdedc116a02fc7a5df3", + "build/prefab/lib/linux_arm64/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/95/48/ad90969b34d9166d32eae56ea9e4", + "build/prefab/lib/linux_arm64/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/b4/5a/0515721b7e4ce334c0fabbeb4376", + "build/prefab/lib/linux_arm64_server/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/d5/7f/9d46d20545a97b9f3b65ce25880a", + "build/prefab/lib/linux_arm64_server/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/66/bd/5b9723fab837270b875da9f9d91e", + "build/prefab/lib/linux_x86_64/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/34/80/166ae132364a8d788ddc66b6b8fe", + "build/prefab/lib/linux_x86_64/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/88/14/b63a6887474340f9ea5aecd861c7", + "build/prefab/lib/linux_x86_64_server/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/01/b8/9b18a2d624f5251c1d3d57a9abb8", + "build/prefab/lib/linux_x86_64_server/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/18/8a/d5f35a9938e4cfc21f26338b487a", + "build/prefab/lib/mac_arm64/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/2f/c5/891774c681b68e350cca570a7936", + "build/prefab/lib/mac_arm64/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/ef/96/a0e88328f90dc079c84bc0791f7f", + "build/prefab/lib/mac_arm64_server/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/c6/30/6446116fbb8ab3d97602a90ae99b", + "build/prefab/lib/mac_arm64_server/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/40/75/633d1a8d826ecf7417519e7d39eb", + "build/prefab/lib/mac_x86_64/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/81/da/43f897aec8a5140ac1ef35b193e9", + "build/prefab/lib/mac_x86_64/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/94/90/fefc90daa043e388604ea79ef4f0", + "build/prefab/lib/mac_x86_64_server/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/12/cb/521fa56c5954c40be151704fd77e", + "build/prefab/lib/mac_x86_64_server/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/53/a7/da3c0ac70e103a8a3a31b50bc41e" } \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md index ac51e75a..b3a9b22c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -19,6 +19,7 @@ - Fixed a potential crash-on-exit due to statically allocated colliders/caches in `ode_collision_trimesh.cpp` getting torn down while in use - Better randomization for player free-for-all starting locations - Plugins can now register to be called for pause, resume, and shutdown events in addition to launch +- Added ba.app.state holding the overall state of the app (running, paused, etc) ### 1.5.29 (20246) - Exposed ba method/class initing in public C++ layer. diff --git a/assets/src/ba_data/python/ba/_app.py b/assets/src/ba_data/python/ba/_app.py index 33df74ad..3a2d8ea9 100644 --- a/assets/src/ba_data/python/ba/_app.py +++ b/assets/src/ba_data/python/ba/_app.py @@ -3,6 +3,7 @@ """Functionality related to the high level state of the app.""" from __future__ import annotations +from enum import Enum import random from typing import TYPE_CHECKING @@ -32,8 +33,16 @@ class App: Note that properties not documented here should be considered internal and subject to change without warning. """ + # pylint: disable=too-many-public-methods + class State(Enum): + """High level state the app can be in.""" + LAUNCHING = 0 + RUNNING = 1 + PAUSED = 2 + SHUTTING_DOWN = 3 + @property def build_number(self) -> int: """Integer build number. @@ -172,6 +181,8 @@ class App: """ # pylint: disable=too-many-statements + self.state = self.State.LAUNCHING + # Config. self.config_file_healthy = False @@ -199,7 +210,6 @@ class App: self.tips: List[str] = [] self.stress_test_reset_timer: Optional[ba.Timer] = None self.did_weak_call_warning = False - self.ran_on_app_launch = False self.log_have_new = False self.log_upload_timer_started = False @@ -374,11 +384,31 @@ class App: self.accounts.on_app_launch() self.plugins.on_app_launch() - self.ran_on_app_launch = True + self.state = self.State.RUNNING # from ba._dependency import test_depset # test_depset() + def on_app_pause(self) -> None: + """Called when the app goes to a suspended state.""" + self.state = self.State.PAUSED + self.plugins.on_app_pause() + + def on_app_resume(self) -> None: + """Run when the app resumes from a suspended state.""" + + self.state = self.State.RUNNING + self.fg_state += 1 + self.accounts.on_app_resume() + self.music.on_app_resume() + self.plugins.on_app_resume() + + def on_app_shutdown(self) -> None: + """(internal)""" + self.state = self.State.SHUTTING_DOWN + self.music.on_app_shutdown() + self.plugins.on_app_shutdown() + def read_config(self) -> None: """(internal)""" from ba import _appconfig @@ -482,18 +512,6 @@ class App: else: self.main_menu_resume_callbacks.append(call) - def on_app_pause(self) -> None: - """Called when the app goes to a suspended state.""" - self.plugins.on_app_pause() - - def on_app_resume(self) -> None: - """Run when the app resumes from a suspended state.""" - - self.fg_state += 1 - self.accounts.on_app_resume() - self.music.on_app_resume() - self.plugins.on_app_resume() - def launch_coop_game(self, game: str, force: bool = False, @@ -542,11 +560,6 @@ class App: _ba.fade_screen(False, endcall=_fade_end) return True - def on_app_shutdown(self) -> None: - """(internal)""" - self.music.on_app_shutdown() - self.plugins.on_app_shutdown() - def handle_deep_link(self, url: str) -> None: """Handle a deep link URL.""" from ba._language import Lstr diff --git a/assets/src/ba_data/python/ba/_plugin.py b/assets/src/ba_data/python/ba/_plugin.py index 009cd9d0..025f7a24 100644 --- a/assets/src/ba_data/python/ba/_plugin.py +++ b/assets/src/ba_data/python/ba/_plugin.py @@ -124,7 +124,7 @@ class Plugin: """Called when the app is being launched.""" def on_app_pause(self) -> None: - """Сalled after pausing game activity.""" + """Called after pausing game activity.""" def on_app_resume(self) -> None: """Called after the game continues.""" diff --git a/docs/ba_module.md b/docs/ba_module.md index a6b384bc..3d3a842e 100644 --- a/docs/ba_module.md +++ b/docs/ba_module.md @@ -227,6 +227,10 @@
  • ba.WidgetNotFoundError
  • +

    Misc Classes

    +

    Protocols