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
+
+
+Inherits from: enum.Enum
+High level state the app can be in.
+
+Values:
+
+- LAUNCHING
+- RUNNING
+- PAUSED
+- SHUTTING_DOWN
+
+
Inherits from: builtins.dict
A special dict that holds the game's persistent configuration values.
@@ -4804,7 +4820,7 @@ the type-checker properly identifies the returned value as one.
on_app_pause(self) -> None
-Сalled after pausing game activity.
+Called after pausing game activity.