mirror of
https://github.com/RYDE-WORK/ballistica.git
synced 2026-01-19 13:25:31 +08:00
more feature-set untangling
This commit is contained in:
parent
28da551aa2
commit
37deb4c3bd
@ -4072,33 +4072,33 @@
|
||||
"build/assets/workspace/ninjafightplug.py": "https://files.ballistica.net/cache/ba1/c5/09/4f10b8a21ba87aa5509cff7a164b",
|
||||
"build/assets/workspace/onslaughtplug.py": "https://files.ballistica.net/cache/ba1/ff/0a/a354984f9c074dab0676ac7e4877",
|
||||
"build/assets/workspace/runaroundplug.py": "https://files.ballistica.net/cache/ba1/2a/1c/9ee5db6d1bceca7fa6638fb8abde",
|
||||
"build/prefab/full/linux_arm64_gui/debug/ballisticakit": "https://files.ballistica.net/cache/ba1/08/e3/a0b9223475c7706681fad7968ba7",
|
||||
"build/prefab/full/linux_arm64_gui/release/ballisticakit": "https://files.ballistica.net/cache/ba1/6d/ef/b6d1a6b9754d3036f71ad3fa77e2",
|
||||
"build/prefab/full/linux_arm64_server/debug/dist/ballisticakit_headless": "https://files.ballistica.net/cache/ba1/2b/b1/6f30bc9be42939f9399d4a3f2b3a",
|
||||
"build/prefab/full/linux_arm64_server/release/dist/ballisticakit_headless": "https://files.ballistica.net/cache/ba1/0e/ef/1ce03a67174a21bb153ea7e8e27b",
|
||||
"build/prefab/full/linux_x86_64_gui/debug/ballisticakit": "https://files.ballistica.net/cache/ba1/d0/26/46d5ff486b95aedaa3caf3c299c9",
|
||||
"build/prefab/full/linux_x86_64_gui/release/ballisticakit": "https://files.ballistica.net/cache/ba1/10/ea/b9aa9951192cbc45cccb4c3c2289",
|
||||
"build/prefab/full/linux_x86_64_server/debug/dist/ballisticakit_headless": "https://files.ballistica.net/cache/ba1/e0/a0/32c52b4e83da434e22544bdda893",
|
||||
"build/prefab/full/linux_x86_64_server/release/dist/ballisticakit_headless": "https://files.ballistica.net/cache/ba1/0b/09/2986300ce8c70c4e301da76a0533",
|
||||
"build/prefab/full/mac_arm64_gui/debug/ballisticakit": "https://files.ballistica.net/cache/ba1/b1/79/ba61f157a98f4ceab818d99edab9",
|
||||
"build/prefab/full/mac_arm64_gui/release/ballisticakit": "https://files.ballistica.net/cache/ba1/09/78/0a5975081c617f7a52c6ddd3d7c0",
|
||||
"build/prefab/full/mac_arm64_server/debug/dist/ballisticakit_headless": "https://files.ballistica.net/cache/ba1/36/91/561ed25a53dd05a321418ef95527",
|
||||
"build/prefab/full/mac_arm64_server/release/dist/ballisticakit_headless": "https://files.ballistica.net/cache/ba1/8d/27/ee747a3e85a28e124c21ac2b380d",
|
||||
"build/prefab/full/mac_x86_64_gui/debug/ballisticakit": "https://files.ballistica.net/cache/ba1/a7/b8/ad830a02ee58f2e87466f011fb27",
|
||||
"build/prefab/full/mac_x86_64_gui/release/ballisticakit": "https://files.ballistica.net/cache/ba1/ca/71/6fd4afebc57e78d5986a2f657a3f",
|
||||
"build/prefab/full/mac_x86_64_server/debug/dist/ballisticakit_headless": "https://files.ballistica.net/cache/ba1/56/16/efa353be8adca6c233db12102463",
|
||||
"build/prefab/full/mac_x86_64_server/release/dist/ballisticakit_headless": "https://files.ballistica.net/cache/ba1/85/98/0aa74afa4bfa7f12b4bb54fe76a3",
|
||||
"build/prefab/full/windows_x86_gui/debug/BallisticaKit.exe": "https://files.ballistica.net/cache/ba1/e6/bb/308f33d3c4b549b8b701a6e94db1",
|
||||
"build/prefab/full/windows_x86_gui/release/BallisticaKit.exe": "https://files.ballistica.net/cache/ba1/68/c5/ad76162d865a7a14f2f2677300d1",
|
||||
"build/prefab/full/windows_x86_server/debug/dist/BallisticaKitHeadless.exe": "https://files.ballistica.net/cache/ba1/c6/39/21bdc2e4e59855558bbc7d606f28",
|
||||
"build/prefab/full/windows_x86_server/release/dist/BallisticaKitHeadless.exe": "https://files.ballistica.net/cache/ba1/f9/eb/e2be79806312a8615a1e6da93078",
|
||||
"build/prefab/lib/linux_arm64_gui/debug/libballistica_plus.a": "https://files.ballistica.net/cache/ba1/f4/e7/32cfbd534ac61e626f6c6fbe2b01",
|
||||
"build/prefab/full/linux_arm64_gui/debug/ballisticakit": "https://files.ballistica.net/cache/ba1/26/28/76adeaf883a0ce33dffdf2940d5b",
|
||||
"build/prefab/full/linux_arm64_gui/release/ballisticakit": "https://files.ballistica.net/cache/ba1/62/f6/bf633c2dc38d61b73b8109cc002b",
|
||||
"build/prefab/full/linux_arm64_server/debug/dist/ballisticakit_headless": "https://files.ballistica.net/cache/ba1/d1/5b/7ce29036b8eae3226fa440761b11",
|
||||
"build/prefab/full/linux_arm64_server/release/dist/ballisticakit_headless": "https://files.ballistica.net/cache/ba1/8e/f4/5fd5e80bec1d9bda19f43932400a",
|
||||
"build/prefab/full/linux_x86_64_gui/debug/ballisticakit": "https://files.ballistica.net/cache/ba1/b7/62/e50ab9f38db10874d32715c11e29",
|
||||
"build/prefab/full/linux_x86_64_gui/release/ballisticakit": "https://files.ballistica.net/cache/ba1/90/86/fc717a6aab51a451313da677a630",
|
||||
"build/prefab/full/linux_x86_64_server/debug/dist/ballisticakit_headless": "https://files.ballistica.net/cache/ba1/85/e3/72d4977a7238491402788eecc44d",
|
||||
"build/prefab/full/linux_x86_64_server/release/dist/ballisticakit_headless": "https://files.ballistica.net/cache/ba1/46/be/0ca1d581bee963f3f2adc30bbdbc",
|
||||
"build/prefab/full/mac_arm64_gui/debug/ballisticakit": "https://files.ballistica.net/cache/ba1/5b/a4/68472d57ebe52dd72db1a78a302d",
|
||||
"build/prefab/full/mac_arm64_gui/release/ballisticakit": "https://files.ballistica.net/cache/ba1/1c/49/78f788f23a025707360b23d7daf3",
|
||||
"build/prefab/full/mac_arm64_server/debug/dist/ballisticakit_headless": "https://files.ballistica.net/cache/ba1/7b/f3/3e0101776643cff6bdbd3bbb089f",
|
||||
"build/prefab/full/mac_arm64_server/release/dist/ballisticakit_headless": "https://files.ballistica.net/cache/ba1/81/6a/6784af212260aef7375936705d08",
|
||||
"build/prefab/full/mac_x86_64_gui/debug/ballisticakit": "https://files.ballistica.net/cache/ba1/3b/5a/fd4873250526f81d98acf374face",
|
||||
"build/prefab/full/mac_x86_64_gui/release/ballisticakit": "https://files.ballistica.net/cache/ba1/4f/e5/3554a91085d6c99cf4225991a49b",
|
||||
"build/prefab/full/mac_x86_64_server/debug/dist/ballisticakit_headless": "https://files.ballistica.net/cache/ba1/6c/7a/0a43c1a584fae923c7f9b006aa00",
|
||||
"build/prefab/full/mac_x86_64_server/release/dist/ballisticakit_headless": "https://files.ballistica.net/cache/ba1/d8/6e/b6c78fd05b4082a56101251d80a7",
|
||||
"build/prefab/full/windows_x86_gui/debug/BallisticaKit.exe": "https://files.ballistica.net/cache/ba1/a0/10/73c560964fcc4834ab4d383166d7",
|
||||
"build/prefab/full/windows_x86_gui/release/BallisticaKit.exe": "https://files.ballistica.net/cache/ba1/de/46/fb9e06c434c2a4a2f9ef5b559d1b",
|
||||
"build/prefab/full/windows_x86_server/debug/dist/BallisticaKitHeadless.exe": "https://files.ballistica.net/cache/ba1/f9/c2/634df05be8abea32da3e8ca3095e",
|
||||
"build/prefab/full/windows_x86_server/release/dist/BallisticaKitHeadless.exe": "https://files.ballistica.net/cache/ba1/76/16/8c323c36f0e5d37c667b78f6e164",
|
||||
"build/prefab/lib/linux_arm64_gui/debug/libballistica_plus.a": "https://files.ballistica.net/cache/ba1/5f/35/b7d5e6c2446f339bdd61527ea735",
|
||||
"build/prefab/lib/linux_arm64_gui/release/libballistica_plus.a": "https://files.ballistica.net/cache/ba1/f3/f8/52577356f2ff5229ed4e5a6764cf",
|
||||
"build/prefab/lib/linux_arm64_server/debug/libballistica_plus.a": "https://files.ballistica.net/cache/ba1/60/2b/35acb337afc2d997ffc94d2da757",
|
||||
"build/prefab/lib/linux_arm64_server/debug/libballistica_plus.a": "https://files.ballistica.net/cache/ba1/f1/f5/ee7230a33652160f1a69d37d0b1d",
|
||||
"build/prefab/lib/linux_arm64_server/release/libballistica_plus.a": "https://files.ballistica.net/cache/ba1/3f/91/9d57b5688d3fdedc41ad0a91cfcc",
|
||||
"build/prefab/lib/linux_x86_64_gui/debug/libballistica_plus.a": "https://files.ballistica.net/cache/ba1/a9/92/58c58ab93d71d77eac753c7632ed",
|
||||
"build/prefab/lib/linux_x86_64_gui/debug/libballistica_plus.a": "https://files.ballistica.net/cache/ba1/3b/a8/25df998ef2e458e4b3df4f9e4bc3",
|
||||
"build/prefab/lib/linux_x86_64_gui/release/libballistica_plus.a": "https://files.ballistica.net/cache/ba1/40/35/f0ce16f78cb98281471dc4fb1048",
|
||||
"build/prefab/lib/linux_x86_64_server/debug/libballistica_plus.a": "https://files.ballistica.net/cache/ba1/5b/b3/487175ffc786ab47da1220b95643",
|
||||
"build/prefab/lib/linux_x86_64_server/debug/libballistica_plus.a": "https://files.ballistica.net/cache/ba1/d3/f6/9b895fa7a559163f3ba301a5b082",
|
||||
"build/prefab/lib/linux_x86_64_server/release/libballistica_plus.a": "https://files.ballistica.net/cache/ba1/b6/e7/1d76994d633f5e189754b477da1d",
|
||||
"build/prefab/lib/mac_arm64_gui/debug/libballistica_plus.a": "https://files.ballistica.net/cache/ba1/fb/7b/7a6549bb17264a5040d4db99a4cc",
|
||||
"build/prefab/lib/mac_arm64_gui/release/libballistica_plus.a": "https://files.ballistica.net/cache/ba1/eb/ab/4311e83907061aad56967531f41b",
|
||||
@ -4108,14 +4108,14 @@
|
||||
"build/prefab/lib/mac_x86_64_gui/release/libballistica_plus.a": "https://files.ballistica.net/cache/ba1/30/4a/aa281e0eb46722098ec29d7da4f8",
|
||||
"build/prefab/lib/mac_x86_64_server/debug/libballistica_plus.a": "https://files.ballistica.net/cache/ba1/0b/e4/a9d278c1bc9a5d731f865ac91a0b",
|
||||
"build/prefab/lib/mac_x86_64_server/release/libballistica_plus.a": "https://files.ballistica.net/cache/ba1/92/f7/8898478ab4ef0a342c727dd64195",
|
||||
"build/prefab/lib/windows/Debug_Win32/BallisticaKitGenericPlus.lib": "https://files.ballistica.net/cache/ba1/14/3f/8bffa39ee2e862bfd61886f8dd20",
|
||||
"build/prefab/lib/windows/Debug_Win32/BallisticaKitGenericPlus.pdb": "https://files.ballistica.net/cache/ba1/de/69/ff2d73feab522f0be693900c534b",
|
||||
"build/prefab/lib/windows/Debug_Win32/BallisticaKitHeadlessPlus.lib": "https://files.ballistica.net/cache/ba1/2a/ac/8e4a2b322079d57a65cf5ec686eb",
|
||||
"build/prefab/lib/windows/Debug_Win32/BallisticaKitHeadlessPlus.pdb": "https://files.ballistica.net/cache/ba1/9b/d8/f5dbc2b76e5d6992e6e0f957699d",
|
||||
"build/prefab/lib/windows/Release_Win32/BallisticaKitGenericPlus.lib": "https://files.ballistica.net/cache/ba1/68/f9/0e55e33d9782d596d65770e943d8",
|
||||
"build/prefab/lib/windows/Release_Win32/BallisticaKitGenericPlus.pdb": "https://files.ballistica.net/cache/ba1/b4/49/32ebdaa15a795c84e90c3d16fdee",
|
||||
"build/prefab/lib/windows/Release_Win32/BallisticaKitHeadlessPlus.lib": "https://files.ballistica.net/cache/ba1/e9/3c/b86de4797400df2a7bbba4e957f7",
|
||||
"build/prefab/lib/windows/Release_Win32/BallisticaKitHeadlessPlus.pdb": "https://files.ballistica.net/cache/ba1/93/88/176702f3743aa143dcd2ee651c4a",
|
||||
"build/prefab/lib/windows/Debug_Win32/BallisticaKitGenericPlus.lib": "https://files.ballistica.net/cache/ba1/54/37/fe9ce1e5ac553d1efbfe87f0b3db",
|
||||
"build/prefab/lib/windows/Debug_Win32/BallisticaKitGenericPlus.pdb": "https://files.ballistica.net/cache/ba1/14/9b/9339463649a9c9c4f5a17c8612c9",
|
||||
"build/prefab/lib/windows/Debug_Win32/BallisticaKitHeadlessPlus.lib": "https://files.ballistica.net/cache/ba1/33/6a/1b57410d2fb4b0537ecec3648850",
|
||||
"build/prefab/lib/windows/Debug_Win32/BallisticaKitHeadlessPlus.pdb": "https://files.ballistica.net/cache/ba1/6d/f9/b35d9ebe3503c3f24cf6774d5458",
|
||||
"build/prefab/lib/windows/Release_Win32/BallisticaKitGenericPlus.lib": "https://files.ballistica.net/cache/ba1/de/ff/32c6e83e91a48cd9500d710ab1af",
|
||||
"build/prefab/lib/windows/Release_Win32/BallisticaKitGenericPlus.pdb": "https://files.ballistica.net/cache/ba1/1f/7e/b8cf9ad9f8cd86a292e1609fdd93",
|
||||
"build/prefab/lib/windows/Release_Win32/BallisticaKitHeadlessPlus.lib": "https://files.ballistica.net/cache/ba1/19/7f/fa2c37a849648ada4bbaa4c826d4",
|
||||
"build/prefab/lib/windows/Release_Win32/BallisticaKitHeadlessPlus.pdb": "https://files.ballistica.net/cache/ba1/65/32/b571911edfbbffa5263a29dbece2",
|
||||
"src/assets/ba_data/python/babase/_mgen/__init__.py": "https://files.ballistica.net/cache/ba1/52/c6/c11130af7b10d6c0321add5518fa",
|
||||
"src/assets/ba_data/python/babase/_mgen/enums.py": "https://files.ballistica.net/cache/ba1/38/c3/1dedd5e74f2508efc5974c8815a1",
|
||||
"src/ballistica/base/mgen/pyembed/binding_base.inc": "https://files.ballistica.net/cache/ba1/b4/3d/e352190a0e5673d101c0f3ee3ad2",
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
### 1.7.20 (build 21023, api 8, 2023-05-26)
|
||||
### 1.7.20 (build 21025, api 8, 2023-05-30)
|
||||
|
||||
- This seems like a good time for a `refactoring` release in anticipation of
|
||||
changes coming in 1.8. Basically this means that a lot of things will be
|
||||
|
||||
@ -416,6 +416,7 @@ add_executable(ballisticakit
|
||||
${BA_SRC_ROOT}/ballistica/base/support/plus_soft.h
|
||||
${BA_SRC_ROOT}/ballistica/base/support/stdio_console.cc
|
||||
${BA_SRC_ROOT}/ballistica/base/support/stdio_console.h
|
||||
${BA_SRC_ROOT}/ballistica/base/support/ui_v1_soft.h
|
||||
${BA_SRC_ROOT}/ballistica/base/ui/console.cc
|
||||
${BA_SRC_ROOT}/ballistica/base/ui/console.h
|
||||
${BA_SRC_ROOT}/ballistica/base/ui/ui.cc
|
||||
|
||||
@ -407,6 +407,7 @@
|
||||
<ClInclude Include="..\..\src\ballistica\base\support\plus_soft.h" />
|
||||
<ClCompile Include="..\..\src\ballistica\base\support\stdio_console.cc" />
|
||||
<ClInclude Include="..\..\src\ballistica\base\support\stdio_console.h" />
|
||||
<ClInclude Include="..\..\src\ballistica\base\support\ui_v1_soft.h" />
|
||||
<ClCompile Include="..\..\src\ballistica\base\ui\console.cc" />
|
||||
<ClInclude Include="..\..\src\ballistica\base\ui\console.h" />
|
||||
<ClCompile Include="..\..\src\ballistica\base\ui\ui.cc" />
|
||||
|
||||
@ -655,6 +655,9 @@
|
||||
<ClInclude Include="..\..\src\ballistica\base\support\stdio_console.h">
|
||||
<Filter>ballistica\base\support</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\src\ballistica\base\support\ui_v1_soft.h">
|
||||
<Filter>ballistica\base\support</Filter>
|
||||
</ClInclude>
|
||||
<ClCompile Include="..\..\src\ballistica\base\ui\console.cc">
|
||||
<Filter>ballistica\base\ui</Filter>
|
||||
</ClCompile>
|
||||
|
||||
@ -402,6 +402,7 @@
|
||||
<ClInclude Include="..\..\src\ballistica\base\support\plus_soft.h" />
|
||||
<ClCompile Include="..\..\src\ballistica\base\support\stdio_console.cc" />
|
||||
<ClInclude Include="..\..\src\ballistica\base\support\stdio_console.h" />
|
||||
<ClInclude Include="..\..\src\ballistica\base\support\ui_v1_soft.h" />
|
||||
<ClCompile Include="..\..\src\ballistica\base\ui\console.cc" />
|
||||
<ClInclude Include="..\..\src\ballistica\base\ui\console.h" />
|
||||
<ClCompile Include="..\..\src\ballistica\base\ui\ui.cc" />
|
||||
|
||||
@ -655,6 +655,9 @@
|
||||
<ClInclude Include="..\..\src\ballistica\base\support\stdio_console.h">
|
||||
<Filter>ballistica\base\support</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\src\ballistica\base\support\ui_v1_soft.h">
|
||||
<Filter>ballistica\base\support</Filter>
|
||||
</ClInclude>
|
||||
<ClCompile Include="..\..\src\ballistica\base\ui\console.cc">
|
||||
<Filter>ballistica\base\ui</Filter>
|
||||
</ClCompile>
|
||||
|
||||
@ -31,7 +31,7 @@ if TYPE_CHECKING:
|
||||
|
||||
# Build number and version of the ballistica binary we expect to be
|
||||
# using.
|
||||
TARGET_BALLISTICA_BUILD = 21023
|
||||
TARGET_BALLISTICA_BUILD = 21025
|
||||
TARGET_BALLISTICA_VERSION = '1.7.20'
|
||||
|
||||
_g_env_config: EnvConfig | None = None
|
||||
|
||||
@ -36,16 +36,15 @@
|
||||
#include "ballistica/shared/python/python.h"
|
||||
#include "ballistica/shared/python/python_command.h"
|
||||
|
||||
// TEMP.
|
||||
extern auto TempSV1CreateAppMode() -> ballistica::base::AppMode*;
|
||||
|
||||
namespace ballistica::base {
|
||||
|
||||
core::CoreFeatureSet* g_core{};
|
||||
BaseFeatureSet* g_base{};
|
||||
PlusSoftInterface* g_plus_soft{};
|
||||
classic::ClassicFeatureSet* g_classic{};
|
||||
ui_v1::UIV1FeatureSet* g_ui_v1{};
|
||||
ClassicSoftInterface* g_classic_soft{};
|
||||
// ui_v1::UIV1FeatureSet* g_ui_v1{};
|
||||
UIV1SoftInterface* g_ui_v1_soft{};
|
||||
|
||||
BaseFeatureSet::BaseFeatureSet()
|
||||
: python{new BasePython()},
|
||||
@ -71,7 +70,6 @@ BaseFeatureSet::BaseFeatureSet()
|
||||
text_graphics{new TextGraphics()},
|
||||
audio_server{new AudioServer()},
|
||||
assets{new Assets()},
|
||||
// app_mode{TempSV1CreateAppMode()},
|
||||
app_mode_{AppModeEmpty::GetSingleton()},
|
||||
stdio_console{g_buildconfig.enable_stdio_console() ? new StdioConsole()
|
||||
: nullptr} {
|
||||
@ -121,8 +119,8 @@ void BaseFeatureSet::OnModuleExec(PyObject* module) {
|
||||
// FIXME: neither of these should be here.
|
||||
assert(g_classic == nullptr);
|
||||
g_classic = classic::ClassicFeatureSet::Import();
|
||||
assert(g_ui_v1 == nullptr);
|
||||
g_ui_v1 = ui_v1::UIV1FeatureSet::Import();
|
||||
// assert(g_ui_v1 == nullptr);
|
||||
// g_ui_v1 = ui_v1::UIV1FeatureSet::Import();
|
||||
|
||||
// let baenv know it can now feed us logs and run some checks.
|
||||
g_core->python->RunBaEnvOnBaBaseImport();
|
||||
|
||||
@ -58,6 +58,7 @@ struct BGDynamicsShadowData;
|
||||
class BGDynamicsVolumeLight;
|
||||
struct BGDynamicsVolumeLightData;
|
||||
class Camera;
|
||||
class ClassicSoftInterface;
|
||||
class CollisionMeshAsset;
|
||||
class CollisionCache;
|
||||
class Console;
|
||||
@ -124,6 +125,7 @@ class TextureAssetPreloadData;
|
||||
class TextureAssetRendererData;
|
||||
class TouchInput;
|
||||
class UI;
|
||||
class UIV1SoftInterface;
|
||||
class AppVR;
|
||||
class GraphicsVR;
|
||||
|
||||
@ -593,7 +595,9 @@ extern core::CoreFeatureSet* g_core;
|
||||
extern base::BaseFeatureSet* g_base;
|
||||
extern PlusSoftInterface* g_plus_soft;
|
||||
extern classic::ClassicFeatureSet* g_classic;
|
||||
extern ui_v1::UIV1FeatureSet* g_ui_v1;
|
||||
extern base::ClassicSoftInterface* g_classic_soft;
|
||||
extern base::UIV1SoftInterface* g_ui_v1_soft;
|
||||
// extern ui_v1::UIV1FeatureSet* g_ui_v1;
|
||||
|
||||
/// Our C++ front-end to our feature set. This is what other C++
|
||||
/// feature-sets can 'Import' from us.
|
||||
|
||||
@ -174,6 +174,28 @@ void Logic::OnInitialScreenCreated() {
|
||||
// (or no screen in the case of headless-mode).
|
||||
// We use this as a cue to kick off our business logic.
|
||||
|
||||
// Let the Python layer know what's up. It will probably flip to
|
||||
// 'Launching' state.
|
||||
CompleteAppBootstrapping();
|
||||
|
||||
// Push an initial frame to the graphics thread. From this point it will be
|
||||
// self-sustaining; sending us a request for a new one each time it receives
|
||||
// one we send it.
|
||||
if (!g_core->HeadlessMode()) {
|
||||
g_base->graphics->BuildAndPushFrameDef();
|
||||
}
|
||||
}
|
||||
|
||||
// Launch into main menu or whatever else.
|
||||
void Logic::CompleteAppBootstrapping() {
|
||||
assert(g_base->InLogicThread());
|
||||
assert(g_base->CurrentContext().IsEmpty());
|
||||
|
||||
assert(!app_bootstrapping_complete_);
|
||||
app_bootstrapping_complete_ = true;
|
||||
|
||||
g_core->BootLog("app bootstrapping complete");
|
||||
|
||||
// Let the assets system know it can start loading stuff now that
|
||||
// we have a screen and thus know texture formats/etc.
|
||||
// TODO(ericf): It might be nice to kick this off earlier if our logic is
|
||||
@ -205,25 +227,6 @@ void Logic::OnInitialScreenCreated() {
|
||||
// Let our initial app-mode know it has become active.
|
||||
g_base->app_mode()->OnActivate();
|
||||
|
||||
// Let the Python layer know what's up. It will probably flip to
|
||||
// 'Launching' state.
|
||||
CompleteAppBootstrapping();
|
||||
|
||||
// Deliver an initial frame-def to the graphics thread. It will send us a
|
||||
// request for a new one each time it grabs one we send it.
|
||||
if (!g_core->HeadlessMode()) {
|
||||
g_base->graphics->BuildAndPushFrameDef();
|
||||
}
|
||||
}
|
||||
|
||||
// Launch into main menu or whatever else.
|
||||
void Logic::CompleteAppBootstrapping() {
|
||||
assert(g_base->InLogicThread());
|
||||
assert(!app_bootstrapping_complete_);
|
||||
assert(g_base->CurrentContext().IsEmpty());
|
||||
|
||||
g_core->BootLog("app bootstrapping complete");
|
||||
|
||||
// Reset our various subsystems to a default state.
|
||||
g_base->ui->Reset();
|
||||
g_base->input->Reset();
|
||||
@ -236,28 +239,6 @@ void Logic::CompleteAppBootstrapping() {
|
||||
g_base->python->objs()
|
||||
.Get(BasePython::ObjID::kOnAppBootstrappingCompleteCall)
|
||||
.Call();
|
||||
app_bootstrapping_complete_ = true;
|
||||
|
||||
// TODO(ericf): update this for the shiny new app-mode world.
|
||||
if (explicit_bool(false)) {
|
||||
// If we were passed launch command args, run them.
|
||||
if (g_core->core_config().exec_command.has_value()) {
|
||||
bool success = PythonCommand(*g_core->core_config().exec_command,
|
||||
BA_BUILD_COMMAND_FILENAME)
|
||||
.Exec(true, nullptr, nullptr);
|
||||
if (!success) {
|
||||
exit(1);
|
||||
}
|
||||
}
|
||||
// If the stuff we just ran didn't result in a session, create a default
|
||||
// one.
|
||||
auto* appmode = scene_v1::SceneV1AppMode::GetActiveOrFatal();
|
||||
if (!appmode->GetForegroundSession()) {
|
||||
appmode->RunMainMenu();
|
||||
}
|
||||
} else {
|
||||
// Reset various subsystems
|
||||
}
|
||||
|
||||
UpdatePendingWorkTimer();
|
||||
}
|
||||
|
||||
@ -11,13 +11,14 @@ namespace ballistica::base {
|
||||
|
||||
class BasePlatform {
|
||||
public:
|
||||
/// Create the proper BasePlatform subclass for the current platform.
|
||||
/// Instantiate the appropriate BasePlatform subclass for the current
|
||||
/// environment.
|
||||
static auto CreatePlatform() -> BasePlatform*;
|
||||
|
||||
/// Create the proper App module and add it to the main_event_loop.
|
||||
/// Instantiate the appropriate App subclass for the current environment.
|
||||
static auto CreateApp() -> App*;
|
||||
|
||||
/// Create the appropriate Graphics subclass for the app.
|
||||
/// Instantiate the appropriate Graphics subclass for the current environment.
|
||||
static auto CreateGraphics() -> Graphics*;
|
||||
|
||||
#pragma mark IN APP PURCHASES --------------------------------------------------
|
||||
|
||||
21
src/ballistica/base/support/ui_v1_soft.h
Normal file
21
src/ballistica/base/support/ui_v1_soft.h
Normal file
@ -0,0 +1,21 @@
|
||||
// Released under the MIT License. See LICENSE for details.
|
||||
|
||||
#ifndef BALLISTICA_BASE_SUPPORT_UI_V1_SOFT_H_
|
||||
#define BALLISTICA_BASE_SUPPORT_UI_V1_SOFT_H_
|
||||
|
||||
namespace ballistica::base {
|
||||
|
||||
/// 'Soft' interface to the ui_v1 feature-set.
|
||||
/// Feature-sets listing ui_v1 as a soft requirement must limit their use of
|
||||
/// it to these methods and should be prepared to handle the not-present
|
||||
/// case.
|
||||
class UIV1SoftInterface {
|
||||
public:
|
||||
virtual void DoHandleDeviceMenuPress(base::InputDevice* device) = 0;
|
||||
virtual void DoShowURL(const std::string& url) = 0;
|
||||
virtual void DoQuitWindow() = 0;
|
||||
};
|
||||
|
||||
} // namespace ballistica::base
|
||||
|
||||
#endif // BALLISTICA_BASE_SUPPORT_UI_V1_SOFT_H_
|
||||
@ -121,7 +121,12 @@ void UI::PushMainMenuPressCall(InputDevice* device) {
|
||||
|
||||
void UI::MainMenuPress(InputDevice* device) {
|
||||
assert(g_base->InLogicThread());
|
||||
g_ui_v1->python->HandleDeviceMenuPress(device);
|
||||
if (g_ui_v1_soft) {
|
||||
g_ui_v1_soft->DoHandleDeviceMenuPress(device);
|
||||
} else {
|
||||
Log(LogLevel::kWarning,
|
||||
"UI::MainMenuPress called without g_ui_v1_soft; unexpected.");
|
||||
}
|
||||
}
|
||||
|
||||
auto UI::IsWindowPresent() const -> bool {
|
||||
@ -405,7 +410,14 @@ void UI::Draw(FrameDef* frame_def) {
|
||||
}
|
||||
}
|
||||
|
||||
void UI::ShowURL(const std::string& url) { g_ui_v1->python->ShowURL(url); }
|
||||
void UI::ShowURL(const std::string& url) {
|
||||
if (g_ui_v1_soft) {
|
||||
g_ui_v1_soft->DoShowURL(url);
|
||||
} else {
|
||||
Log(LogLevel::kWarning,
|
||||
"UI::ShowURL called without g_ui_v1_soft present; unexpected.");
|
||||
}
|
||||
}
|
||||
|
||||
void UI::ConfirmQuit() {
|
||||
g_base->logic->event_loop()->PushCall([] {
|
||||
@ -413,9 +425,9 @@ void UI::ConfirmQuit() {
|
||||
if (g_core->HeadlessMode()) {
|
||||
Log(LogLevel::kError, "UI::ConfirmQuit() unhandled on headless.");
|
||||
} else {
|
||||
// If input is locked or the in-app-console is up, just quit immediately;
|
||||
// a confirm screen wouldn't work anyway.
|
||||
if (g_base->input->IsInputLocked()
|
||||
// If input is locked or the in-app-console is up or we don't have ui-v1,
|
||||
// just quit immediately; a confirm screen wouldn't work anyway.
|
||||
if (g_base->input->IsInputLocked() || g_ui_v1_soft == nullptr
|
||||
|| (g_base->console() != nullptr && g_base->console()->active())) {
|
||||
// Just go through _babase.quit().
|
||||
// FIXME: Shouldn't need to go out to the Python layer here;
|
||||
@ -426,9 +438,7 @@ void UI::ConfirmQuit() {
|
||||
} else {
|
||||
ScopedSetContext ssc(nullptr);
|
||||
g_base->audio->PlaySound(g_base->assets->SysSound(SysSoundID::kSwish));
|
||||
g_ui_v1->python->objs()
|
||||
.Get(ui_v1::UIV1Python::ObjID::kQuitWindowCall)
|
||||
.Call();
|
||||
g_ui_v1_soft->DoQuitWindow();
|
||||
|
||||
// If we have a keyboard, give it UI ownership.
|
||||
InputDevice* keyboard = g_base->input->keyboard_input();
|
||||
|
||||
@ -38,6 +38,9 @@ void ClassicFeatureSet::OnModuleExec(PyObject* module) {
|
||||
assert(g_base == nullptr); // Should be getting set once here.
|
||||
g_base = base::BaseFeatureSet::Import();
|
||||
|
||||
// Let base know that we exist.
|
||||
base::g_classic_soft = g_classic;
|
||||
|
||||
g_core->BootLog("_baclassic exec end");
|
||||
}
|
||||
|
||||
|
||||
@ -3,6 +3,9 @@
|
||||
#ifndef BALLISTICA_CLASSIC_CLASSIC_H_
|
||||
#define BALLISTICA_CLASSIC_CLASSIC_H_
|
||||
|
||||
#include <ballistica/base/input/device/input_device.h>
|
||||
|
||||
#include "ballistica/base/support/classic_soft.h"
|
||||
#include "ballistica/shared/foundation/feature_set_native_component.h"
|
||||
|
||||
// Common header that most everything using our feature-set should include.
|
||||
@ -55,7 +58,8 @@ extern ClassicFeatureSet* g_classic;
|
||||
|
||||
/// Our C++ front-end to our feature set. This is what other C++
|
||||
/// feature-sets can 'Import' from us.
|
||||
class ClassicFeatureSet : public FeatureSetNativeComponent {
|
||||
class ClassicFeatureSet : public FeatureSetNativeComponent,
|
||||
public base::ClassicSoftInterface {
|
||||
public:
|
||||
/// Instantiate our FeatureSet if needed and return the single
|
||||
/// instance of it. Basically a Python import statement.
|
||||
|
||||
@ -143,7 +143,7 @@ void CoreFeatureSet::PostInit() {
|
||||
// Grab whatever Python stuff we use.
|
||||
python->ImportPythonObjs();
|
||||
|
||||
// FIXME - MOVE THIS TO A RUN_APP_TO_COMPLETION() SORT OF FUNCTION
|
||||
// FIXME: MOVE THIS TO A RUN_APP_TO_COMPLETION() SORT OF PLACE.
|
||||
// For now it does the right thing here since all we have is monolithic
|
||||
// builds but this will need to account for more situations later.
|
||||
python->ReleaseMainThreadGIL();
|
||||
|
||||
@ -1692,8 +1692,9 @@ static auto PyHandleAppIntentExec(PyObject* self, PyObject* args,
|
||||
BA_BUILD_COMMAND_FILENAME)
|
||||
.Exec(true, nullptr, nullptr);
|
||||
if (!success) {
|
||||
// FIXME: what should we do in this case?
|
||||
// exit(1);
|
||||
// TODO(ericf): what should we do in this case?
|
||||
// Obviously if we add return/success values for intents we should set
|
||||
// that here.
|
||||
}
|
||||
}
|
||||
// If the stuff we just ran didn't result in a session, create a default
|
||||
|
||||
@ -30,11 +30,6 @@
|
||||
#include "ballistica/scene_v1/support/scene_v1_app_mode.h"
|
||||
#include "ballistica/shared/generic/utils.h"
|
||||
|
||||
// FIXME: TEMP; REMOVE THIS SOON.
|
||||
auto TempSV1CreateAppMode() -> ballistica::base::AppMode* {
|
||||
return ballistica::scene_v1::SceneV1AppMode::GetSingleton();
|
||||
}
|
||||
|
||||
namespace ballistica::scene_v1 {
|
||||
|
||||
core::CoreFeatureSet* g_core{};
|
||||
|
||||
@ -39,7 +39,7 @@ auto main(int argc, char** argv) -> int {
|
||||
namespace ballistica {
|
||||
|
||||
// These are set automatically via script; don't modify them here.
|
||||
const int kEngineBuildNumber = 21023;
|
||||
const int kEngineBuildNumber = 21025;
|
||||
const char* kEngineVersion = "1.7.20";
|
||||
|
||||
auto MonolithicMain(const core::CoreConfig& core_config) -> int {
|
||||
|
||||
@ -69,6 +69,7 @@ auto UIV1Python::GetPyWidget(PyObject* o) -> Widget* {
|
||||
"Can't get widget from value: " + Python::ObjToString(o) + ".",
|
||||
PyExcType::kType);
|
||||
}
|
||||
|
||||
void UIV1Python::ShowURL(const std::string& url) {
|
||||
g_base->logic->event_loop()->PushCall([this, url] {
|
||||
assert(g_base->InLogicThread());
|
||||
|
||||
@ -44,6 +44,9 @@ void UIV1FeatureSet::OnModuleExec(PyObject* module) {
|
||||
assert(g_base == nullptr); // Should be getting set once here.
|
||||
g_base = base::BaseFeatureSet::Import();
|
||||
|
||||
// Let base know that we exist.
|
||||
base::g_ui_v1_soft = g_ui_v1;
|
||||
|
||||
g_core->BootLog("_bauiv1 exec end");
|
||||
}
|
||||
|
||||
@ -54,4 +57,14 @@ auto UIV1FeatureSet::Import() -> UIV1FeatureSet* {
|
||||
return ImportThroughPythonModule<UIV1FeatureSet>("_bauiv1");
|
||||
}
|
||||
|
||||
void UIV1FeatureSet::DoHandleDeviceMenuPress(base::InputDevice* device) {
|
||||
python->HandleDeviceMenuPress(device);
|
||||
}
|
||||
|
||||
void UIV1FeatureSet::DoShowURL(const std::string& url) { python->ShowURL(url); }
|
||||
|
||||
void UIV1FeatureSet::DoQuitWindow() {
|
||||
g_ui_v1->python->objs().Get(ui_v1::UIV1Python::ObjID::kQuitWindowCall).Call();
|
||||
}
|
||||
|
||||
} // namespace ballistica::ui_v1
|
||||
|
||||
@ -3,6 +3,9 @@
|
||||
#ifndef BALLISTICA_UI_V1_UI_V1_H_
|
||||
#define BALLISTICA_UI_V1_UI_V1_H_
|
||||
|
||||
#include <ballistica/base/input/device/input_device.h>
|
||||
|
||||
#include "ballistica/base/support/ui_v1_soft.h"
|
||||
#include "ballistica/shared/foundation/feature_set_native_component.h"
|
||||
|
||||
// Common header that most everything using our feature-set should include.
|
||||
@ -42,7 +45,8 @@ extern UIV1FeatureSet* g_ui_v1;
|
||||
|
||||
/// Our C++ front-end to our feature set. This is what other C++
|
||||
/// feature-sets can 'Import' from us.
|
||||
class UIV1FeatureSet : public FeatureSetNativeComponent {
|
||||
class UIV1FeatureSet : public FeatureSetNativeComponent,
|
||||
public base::UIV1SoftInterface {
|
||||
public:
|
||||
/// Instantiate our FeatureSet if needed and return the single
|
||||
/// instance of it. Basically a Python import statement.
|
||||
@ -50,6 +54,9 @@ class UIV1FeatureSet : public FeatureSetNativeComponent {
|
||||
|
||||
/// Called when our associated Python module is instantiated.
|
||||
static void OnModuleExec(PyObject* module);
|
||||
void DoHandleDeviceMenuPress(base::InputDevice* device) override;
|
||||
void DoShowURL(const std::string& url) override;
|
||||
void DoQuitWindow() override;
|
||||
|
||||
UIV1Python* const python;
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user