mirror of
https://github.com/RYDE-WORK/ballistica.git
synced 2026-01-19 13:25:31 +08:00
tidying
This commit is contained in:
parent
2a3373aa6a
commit
b51bc29773
88
.efrocachemap
generated
88
.efrocachemap
generated
@ -4064,50 +4064,50 @@
|
||||
"build/assets/windows/Win32/ucrtbased.dll": "2def5335207d41b21b9823f6805997f1",
|
||||
"build/assets/windows/Win32/vc_redist.x86.exe": "b08a55e2e77623fe657bea24f223a3ae",
|
||||
"build/assets/windows/Win32/vcruntime140d.dll": "865b2af4d1e26a1a8073c89acb06e599",
|
||||
"build/prefab/full/linux_arm64_gui/debug/ballisticakit": "d17c2ee21e1fb7845763e9ccc9e7966d",
|
||||
"build/prefab/full/linux_arm64_gui/release/ballisticakit": "742d02168b023ef812b53fed2e581f7d",
|
||||
"build/prefab/full/linux_arm64_server/debug/dist/ballisticakit_headless": "b41cfcdd17a4ce3a85707426c62144ee",
|
||||
"build/prefab/full/linux_arm64_server/release/dist/ballisticakit_headless": "a799400fd4b28b724a5cd7022c016a1c",
|
||||
"build/prefab/full/linux_x86_64_gui/debug/ballisticakit": "0651c8caba1b5258acf06cf515829e94",
|
||||
"build/prefab/full/linux_x86_64_gui/release/ballisticakit": "c67d36bac8c20c59cf58fe67ff5aab6f",
|
||||
"build/prefab/full/linux_x86_64_server/debug/dist/ballisticakit_headless": "a932c27c89add5dd0b0b5054ccbc9c30",
|
||||
"build/prefab/full/linux_x86_64_server/release/dist/ballisticakit_headless": "bcccf5b9506727ae7339d172946e9cba",
|
||||
"build/prefab/full/mac_arm64_gui/debug/ballisticakit": "ad79f1fb9a69488395dcb8e9909b18e2",
|
||||
"build/prefab/full/mac_arm64_gui/release/ballisticakit": "1c4c72504904d6ac6003401cffef8550",
|
||||
"build/prefab/full/mac_arm64_server/debug/dist/ballisticakit_headless": "3be75ed39f701ea673fdf4c41cc85fee",
|
||||
"build/prefab/full/mac_arm64_server/release/dist/ballisticakit_headless": "b6caf556a041fd297a42d022dd28bbbd",
|
||||
"build/prefab/full/mac_x86_64_gui/debug/ballisticakit": "32bce4f3dc1068d13c7a8c13f6f65d39",
|
||||
"build/prefab/full/mac_x86_64_gui/release/ballisticakit": "633069c441e56f01cbe5a15d2a3202d4",
|
||||
"build/prefab/full/mac_x86_64_server/debug/dist/ballisticakit_headless": "02350d3de51cd2056d3144ff34fe24d2",
|
||||
"build/prefab/full/mac_x86_64_server/release/dist/ballisticakit_headless": "562c39ba329fcd64b23d86a56cd5f7bb",
|
||||
"build/prefab/full/windows_x86_gui/debug/BallisticaKit.exe": "a173972be3a16bc2637dabbe124aaea6",
|
||||
"build/prefab/full/windows_x86_gui/release/BallisticaKit.exe": "f0b9f9514c4da093c8720a89e54c069c",
|
||||
"build/prefab/full/windows_x86_server/debug/dist/BallisticaKitHeadless.exe": "f7df321426c7add9f4ea31e266ed5c66",
|
||||
"build/prefab/full/windows_x86_server/release/dist/BallisticaKitHeadless.exe": "72435cbb4e1b80f31652950f32021464",
|
||||
"build/prefab/lib/linux_arm64_gui/debug/libballisticaplus.a": "cbb5ca4147284608ee43aaefe1f9bcfb",
|
||||
"build/prefab/lib/linux_arm64_gui/release/libballisticaplus.a": "788b336518c767880ce7392d7f595852",
|
||||
"build/prefab/lib/linux_arm64_server/debug/libballisticaplus.a": "cbb5ca4147284608ee43aaefe1f9bcfb",
|
||||
"build/prefab/lib/linux_arm64_server/release/libballisticaplus.a": "788b336518c767880ce7392d7f595852",
|
||||
"build/prefab/lib/linux_x86_64_gui/debug/libballisticaplus.a": "cccb7895ed8f412f72ce04c676eae235",
|
||||
"build/prefab/lib/linux_x86_64_gui/release/libballisticaplus.a": "f792c55164f95f8b33f00e7d809c90f7",
|
||||
"build/prefab/lib/linux_x86_64_server/debug/libballisticaplus.a": "cccb7895ed8f412f72ce04c676eae235",
|
||||
"build/prefab/lib/linux_x86_64_server/release/libballisticaplus.a": "f792c55164f95f8b33f00e7d809c90f7",
|
||||
"build/prefab/lib/mac_arm64_gui/debug/libballisticaplus.a": "460f8c445f95f1789820ab1d4556c03a",
|
||||
"build/prefab/lib/mac_arm64_gui/release/libballisticaplus.a": "911f93f977b96774cfa3c82f5e5a4cc8",
|
||||
"build/prefab/lib/mac_arm64_server/debug/libballisticaplus.a": "460f8c445f95f1789820ab1d4556c03a",
|
||||
"build/prefab/lib/mac_arm64_server/release/libballisticaplus.a": "911f93f977b96774cfa3c82f5e5a4cc8",
|
||||
"build/prefab/lib/mac_x86_64_gui/debug/libballisticaplus.a": "8d7077f5e2b9ed0cf9dcf8cbb75ef696",
|
||||
"build/prefab/lib/mac_x86_64_gui/release/libballisticaplus.a": "016af4cf5eea1232e05db579bda8ee4b",
|
||||
"build/prefab/lib/mac_x86_64_server/debug/libballisticaplus.a": "5d848f38d9a8056de078a26f78538051",
|
||||
"build/prefab/lib/mac_x86_64_server/release/libballisticaplus.a": "016af4cf5eea1232e05db579bda8ee4b",
|
||||
"build/prefab/lib/windows/Debug_Win32/BallisticaKitGenericPlus.lib": "3dd5639a27b74c03e77e3ef706889466",
|
||||
"build/prefab/lib/windows/Debug_Win32/BallisticaKitGenericPlus.pdb": "c374e1187e51a6c7af83b3158e9ece34",
|
||||
"build/prefab/lib/windows/Debug_Win32/BallisticaKitHeadlessPlus.lib": "92888461dc4f86381cfade96b43ca944",
|
||||
"build/prefab/lib/windows/Debug_Win32/BallisticaKitHeadlessPlus.pdb": "95c4b8c64bcfb62f782a4b3b74189b80",
|
||||
"build/prefab/lib/windows/Release_Win32/BallisticaKitGenericPlus.lib": "bb99cd26d290a01a90f538fc9dcc4af6",
|
||||
"build/prefab/lib/windows/Release_Win32/BallisticaKitGenericPlus.pdb": "eb5316cfd1213ed4eb61f780ea9ad5ef",
|
||||
"build/prefab/lib/windows/Release_Win32/BallisticaKitHeadlessPlus.lib": "1c436928b8fdae376046661097a85851",
|
||||
"build/prefab/lib/windows/Release_Win32/BallisticaKitHeadlessPlus.pdb": "b5e3f67b28943b3afe6e8d62811f2844",
|
||||
"build/prefab/full/linux_arm64_gui/debug/ballisticakit": "4542f7820b33b8f1f6719b17efa26453",
|
||||
"build/prefab/full/linux_arm64_gui/release/ballisticakit": "c94898207acb63e3e09cb08b50ebd287",
|
||||
"build/prefab/full/linux_arm64_server/debug/dist/ballisticakit_headless": "ad606ee2ee1367b906c9cbb18c53baf6",
|
||||
"build/prefab/full/linux_arm64_server/release/dist/ballisticakit_headless": "776e2461a852753010278d5b90ff32df",
|
||||
"build/prefab/full/linux_x86_64_gui/debug/ballisticakit": "aefcfd8774114e7cebc418d0adad56f2",
|
||||
"build/prefab/full/linux_x86_64_gui/release/ballisticakit": "d21df3fc06db87786d68ccc1417d043e",
|
||||
"build/prefab/full/linux_x86_64_server/debug/dist/ballisticakit_headless": "7b218f79079e8e0d92b5f0a4afb0599d",
|
||||
"build/prefab/full/linux_x86_64_server/release/dist/ballisticakit_headless": "94738f2f6fcbea9dad60af4bd6a7cd5d",
|
||||
"build/prefab/full/mac_arm64_gui/debug/ballisticakit": "033b39b34a10d5bce6e53572a816d0ef",
|
||||
"build/prefab/full/mac_arm64_gui/release/ballisticakit": "f4eb1cc72a16eafcaba2d55c65f19a7b",
|
||||
"build/prefab/full/mac_arm64_server/debug/dist/ballisticakit_headless": "fec5b1818aa97bc0dff1ddf127742574",
|
||||
"build/prefab/full/mac_arm64_server/release/dist/ballisticakit_headless": "76930acbbd2e8dd35f35639d85ce21ac",
|
||||
"build/prefab/full/mac_x86_64_gui/debug/ballisticakit": "d5ab5ad85dd8d113125d15f03c221db3",
|
||||
"build/prefab/full/mac_x86_64_gui/release/ballisticakit": "29fbcf76221d71ea3ecb73d8ab353f7b",
|
||||
"build/prefab/full/mac_x86_64_server/debug/dist/ballisticakit_headless": "3d8b4b5d6ba376f2d280209e0aa3bcf2",
|
||||
"build/prefab/full/mac_x86_64_server/release/dist/ballisticakit_headless": "fb9da4455aa7c0d8e5120a75ccaeabcb",
|
||||
"build/prefab/full/windows_x86_gui/debug/BallisticaKit.exe": "056f8137ba8b1179b66eea59944aefb2",
|
||||
"build/prefab/full/windows_x86_gui/release/BallisticaKit.exe": "78f53224dd6052c93da31bda7ee1c84c",
|
||||
"build/prefab/full/windows_x86_server/debug/dist/BallisticaKitHeadless.exe": "82128374a7eabc651061d778e099b923",
|
||||
"build/prefab/full/windows_x86_server/release/dist/BallisticaKitHeadless.exe": "2cd60cbebfbe25447791284b42c3caf9",
|
||||
"build/prefab/lib/linux_arm64_gui/debug/libballisticaplus.a": "a589af5b31246539eac3264c829c41a0",
|
||||
"build/prefab/lib/linux_arm64_gui/release/libballisticaplus.a": "3dfaf945474294cb9f3808a835fb667c",
|
||||
"build/prefab/lib/linux_arm64_server/debug/libballisticaplus.a": "a589af5b31246539eac3264c829c41a0",
|
||||
"build/prefab/lib/linux_arm64_server/release/libballisticaplus.a": "3dfaf945474294cb9f3808a835fb667c",
|
||||
"build/prefab/lib/linux_x86_64_gui/debug/libballisticaplus.a": "47e08d2f265f4dda15b309fa67ba163b",
|
||||
"build/prefab/lib/linux_x86_64_gui/release/libballisticaplus.a": "c9a5225be07b4456e073014e1db2cafe",
|
||||
"build/prefab/lib/linux_x86_64_server/debug/libballisticaplus.a": "47e08d2f265f4dda15b309fa67ba163b",
|
||||
"build/prefab/lib/linux_x86_64_server/release/libballisticaplus.a": "c9a5225be07b4456e073014e1db2cafe",
|
||||
"build/prefab/lib/mac_arm64_gui/debug/libballisticaplus.a": "f79382e5342db6f38f4c07170589d62d",
|
||||
"build/prefab/lib/mac_arm64_gui/release/libballisticaplus.a": "b2d5386301891813a790f1a19d442022",
|
||||
"build/prefab/lib/mac_arm64_server/debug/libballisticaplus.a": "f79382e5342db6f38f4c07170589d62d",
|
||||
"build/prefab/lib/mac_arm64_server/release/libballisticaplus.a": "b2d5386301891813a790f1a19d442022",
|
||||
"build/prefab/lib/mac_x86_64_gui/debug/libballisticaplus.a": "899eda04958efce6903b7dd2abe6c76f",
|
||||
"build/prefab/lib/mac_x86_64_gui/release/libballisticaplus.a": "e98d76fe2d0af7e775801998d8591340",
|
||||
"build/prefab/lib/mac_x86_64_server/debug/libballisticaplus.a": "e9d551c0bfbb330470b1e0784028e4d3",
|
||||
"build/prefab/lib/mac_x86_64_server/release/libballisticaplus.a": "e98d76fe2d0af7e775801998d8591340",
|
||||
"build/prefab/lib/windows/Debug_Win32/BallisticaKitGenericPlus.lib": "77f25ad3348eb212969725c0ec7ebec8",
|
||||
"build/prefab/lib/windows/Debug_Win32/BallisticaKitGenericPlus.pdb": "df8038790ce73124950dc443c1e972ad",
|
||||
"build/prefab/lib/windows/Debug_Win32/BallisticaKitHeadlessPlus.lib": "f184798b7973343cdc42d16e05aa335f",
|
||||
"build/prefab/lib/windows/Debug_Win32/BallisticaKitHeadlessPlus.pdb": "2e3ed4ea52261efd17d0927b21cf4075",
|
||||
"build/prefab/lib/windows/Release_Win32/BallisticaKitGenericPlus.lib": "1a5c374cfdd07ccbb2f1e9a44b886131",
|
||||
"build/prefab/lib/windows/Release_Win32/BallisticaKitGenericPlus.pdb": "66da72816faa1d87d0b3fe677c6eb9c8",
|
||||
"build/prefab/lib/windows/Release_Win32/BallisticaKitHeadlessPlus.lib": "fbef69c5fba9b7c94d37e233eb6c9642",
|
||||
"build/prefab/lib/windows/Release_Win32/BallisticaKitHeadlessPlus.pdb": "c37e1dc4f95a8db0b5059dae0b5f5241",
|
||||
"src/assets/ba_data/python/babase/_mgen/__init__.py": "f885fed7f2ed98ff2ba271f9dbe3391c",
|
||||
"src/assets/ba_data/python/babase/_mgen/enums.py": "f8cd3af311ac63147882590123b78318",
|
||||
"src/ballistica/base/mgen/pyembed/binding_base.inc": "ad347097a38e0d7ede9eb6dec6a80ee9",
|
||||
|
||||
3
.idea/dictionaries/ericf.xml
generated
3
.idea/dictionaries/ericf.xml
generated
@ -1073,6 +1073,7 @@
|
||||
<w>flagnode</w>
|
||||
<w>flagpos</w>
|
||||
<w>flav</w>
|
||||
<w>flavordir</w>
|
||||
<w>fldtypes</w>
|
||||
<w>flines</w>
|
||||
<w>floinkdingle</w>
|
||||
@ -3378,4 +3379,4 @@
|
||||
<w>zval</w>
|
||||
</words>
|
||||
</dictionary>
|
||||
</component>
|
||||
</component>
|
||||
@ -1,4 +1,6 @@
|
||||
### 1.7.27 (build 21281, api 8, 2023-08-30)
|
||||
### 1.7.28 (build 21289, api 8, 2023-08-31)
|
||||
|
||||
### 1.7.27 (build 21282, api 8, 2023-08-30)
|
||||
|
||||
- Fixed a rare crash that could occur if the app shuts down while a background
|
||||
thread is making a web request. The app will now try to wait for any such
|
||||
|
||||
3
ballisticakit-cmake/.idea/dictionaries/ericf.xml
generated
3
ballisticakit-cmake/.idea/dictionaries/ericf.xml
generated
@ -654,6 +654,7 @@
|
||||
<w>fjco</w>
|
||||
<w>fjcoiwef</w>
|
||||
<w>flagindex</w>
|
||||
<w>flavordir</w>
|
||||
<w>flipbit</w>
|
||||
<w>floinkdingle</w>
|
||||
<w>floooff</w>
|
||||
@ -1981,4 +1982,4 @@
|
||||
<w>zrot</w>
|
||||
</words>
|
||||
</dictionary>
|
||||
</component>
|
||||
</component>
|
||||
@ -4,10 +4,10 @@
|
||||
# pylint: disable=too-many-lines
|
||||
from __future__ import annotations
|
||||
|
||||
import os
|
||||
import logging
|
||||
from enum import Enum
|
||||
|
||||
import warnings
|
||||
from enum import Enum
|
||||
from typing import TYPE_CHECKING
|
||||
from concurrent.futures import ThreadPoolExecutor
|
||||
from functools import cached_property
|
||||
@ -143,10 +143,11 @@ class App:
|
||||
the single shared instance.
|
||||
"""
|
||||
|
||||
self.env: babase.Env = _babase.Env()
|
||||
if self.env.running_with_dummy_modules:
|
||||
if os.environ.get('BA_RUNNING_WITH_DUMMY_MODULES') == '1':
|
||||
return
|
||||
|
||||
self.env: babase.Env = _babase.Env()
|
||||
|
||||
self.state = self.State.NOT_RUNNING
|
||||
|
||||
# Controls which app-modes we use for handling given
|
||||
@ -199,7 +200,7 @@ class App:
|
||||
def postinit(self) -> None:
|
||||
"""Called after we've been inited and assigned to babase.app."""
|
||||
|
||||
if self.env.running_with_dummy_modules:
|
||||
if os.environ.get('BA_RUNNING_WITH_DUMMY_MODULES') == '1':
|
||||
return
|
||||
|
||||
# NOTE: the reason we need a postinit here is that
|
||||
|
||||
@ -52,8 +52,8 @@ if TYPE_CHECKING:
|
||||
|
||||
# Build number and version of the ballistica binary we expect to be
|
||||
# using.
|
||||
TARGET_BALLISTICA_BUILD = 21281
|
||||
TARGET_BALLISTICA_VERSION = '1.7.27'
|
||||
TARGET_BALLISTICA_BUILD = 21289
|
||||
TARGET_BALLISTICA_VERSION = '1.7.28'
|
||||
|
||||
|
||||
@dataclass
|
||||
|
||||
@ -56,7 +56,6 @@ class UIV1Subsystem(babase.AppSubsystem):
|
||||
self.cleanupchecks: list[UICleanupCheck] = []
|
||||
self.upkeeptimer: babase.AppTimer | None = None
|
||||
self.use_toolbars = _bauiv1.toolbar_test()
|
||||
# self.use_toolbars = env.get('toolbar_test', True)
|
||||
|
||||
self.title_color = (0.72, 0.7, 0.75)
|
||||
self.heading_color = (0.72, 0.7, 0.75)
|
||||
|
||||
@ -70,7 +70,6 @@ class ControlsSettingsWindow(bui.Window):
|
||||
show_space_1 = True
|
||||
height += space_height
|
||||
|
||||
print('hello')
|
||||
show_keyboard = False
|
||||
if bs.getinputdevice('Keyboard', '#1', doraise=False) is not None:
|
||||
show_keyboard = True
|
||||
|
||||
@ -234,7 +234,7 @@ void BaseFeatureSet::OnAppShutdownComplete() {
|
||||
if (app_adapter->ManagesEventLoop()) {
|
||||
g_core->main_event_loop()->Quit();
|
||||
} else {
|
||||
g_core->platform->QuitApp();
|
||||
platform->QuitApp();
|
||||
}
|
||||
}
|
||||
|
||||
@ -720,5 +720,6 @@ void BaseFeatureSet::ShutdownSuppressEnd() {
|
||||
shutdown_suppress_count_--;
|
||||
assert(shutdown_suppress_count_ >= 0);
|
||||
}
|
||||
auto BaseFeatureSet::GetReturnValue() const -> int { return return_value(); }
|
||||
|
||||
} // namespace ballistica::base
|
||||
|
||||
@ -736,6 +736,11 @@ class BaseFeatureSet : public FeatureSetNativeComponent,
|
||||
// Non-const bits (fixme: clean up access to these).
|
||||
TouchInput* touch_input{};
|
||||
|
||||
auto return_value() const { return return_value_; }
|
||||
void set_return_value(int val) { return_value_ = val; }
|
||||
|
||||
auto GetReturnValue() const -> int override;
|
||||
|
||||
private:
|
||||
BaseFeatureSet();
|
||||
void LogVersionInfo_();
|
||||
@ -762,6 +767,7 @@ class BaseFeatureSet : public FeatureSetNativeComponent,
|
||||
bool base_native_import_completed_{};
|
||||
bool basn_log_behavior_{};
|
||||
bool server_wrapper_managed_{};
|
||||
int return_value_{};
|
||||
};
|
||||
|
||||
} // namespace ballistica::base
|
||||
|
||||
@ -63,6 +63,14 @@ void BasePlatformApple::DoOpenURL(const std::string& url) {
|
||||
#endif
|
||||
}
|
||||
|
||||
void BasePlatformApple::QuitApp() {
|
||||
#if BA_OSTYPE_MACOS && BA_XCODE_BUILD && !BA_HEADLESS_BUILD
|
||||
core::AppleUtils::Quit(); // will post a cocoa terminate
|
||||
#else
|
||||
BasePlatform::QuitApp();
|
||||
#endif
|
||||
}
|
||||
|
||||
} // namespace ballistica::base
|
||||
|
||||
#endif // BA_OSTYPE_MACOS || BA_OSTYPE_IOS_TVOS
|
||||
|
||||
@ -16,6 +16,7 @@ class BasePlatformApple : public BasePlatform {
|
||||
void RestorePurchases() override;
|
||||
void PurchaseAck(const std::string& purchase,
|
||||
const std::string& order_id) override;
|
||||
void QuitApp() override;
|
||||
|
||||
void DoOpenURL(const std::string& url) override;
|
||||
|
||||
|
||||
@ -321,4 +321,6 @@ void BasePlatform::OnAppShutdown() { assert(g_base->InLogicThread()); }
|
||||
void BasePlatform::OnScreenSizeChange() { assert(g_base->InLogicThread()); }
|
||||
void BasePlatform::DoApplyAppConfig() { assert(g_base->InLogicThread()); }
|
||||
|
||||
void BasePlatform::QuitApp() { exit(g_base->return_value()); }
|
||||
|
||||
} // namespace ballistica::base
|
||||
|
||||
@ -33,6 +33,9 @@ class BasePlatform {
|
||||
virtual void OnScreenSizeChange();
|
||||
virtual void DoApplyAppConfig();
|
||||
|
||||
/// Quit the app (can be immediate or via posting some high level event).
|
||||
virtual void QuitApp();
|
||||
|
||||
#pragma mark IN APP PURCHASES --------------------------------------------------
|
||||
|
||||
void Purchase(const std::string& item);
|
||||
|
||||
@ -170,10 +170,6 @@ void PythonClassEnv::SetupType(PyTypeObject* cls) {
|
||||
envs["demo"] = BoolEntry_(g_buildconfig.demo_build(),
|
||||
"Whether the app is targeting a demo experience.");
|
||||
|
||||
auto* envval = getenv("BA_RUNNING_WITH_DUMMY_MODULES");
|
||||
envs["running_with_dummy_modules"] =
|
||||
BoolEntry_(envval && !strcmp(envval, "1"), "(internal)");
|
||||
|
||||
bool first = true;
|
||||
for (auto&& entry : envs) {
|
||||
if (!first) {
|
||||
@ -239,9 +235,33 @@ PythonClassEnv::PythonClassEnv() = default;
|
||||
|
||||
PythonClassEnv::~PythonClassEnv() = default;
|
||||
|
||||
auto PythonClassEnv::Dir(PythonClassEnv* self) -> PyObject* {
|
||||
BA_PYTHON_TRY;
|
||||
|
||||
// Start with the standard Python dir listing.
|
||||
PyObject* dir_list = Python::generic_dir(reinterpret_cast<PyObject*>(self));
|
||||
assert(PyList_Check(dir_list));
|
||||
|
||||
assert(g_entries_);
|
||||
|
||||
// ..and add in our custom attr names.
|
||||
for (auto&& env : *g_entries_) {
|
||||
PyList_Append(dir_list, PythonRef(PyUnicode_FromString(env.first.c_str()),
|
||||
PythonRef::kSteal)
|
||||
.Get());
|
||||
}
|
||||
PyList_Sort(dir_list);
|
||||
return dir_list;
|
||||
|
||||
BA_PYTHON_CATCH;
|
||||
}
|
||||
|
||||
PyTypeObject PythonClassEnv::type_obj;
|
||||
|
||||
// Any methods for our class go here.
|
||||
PyMethodDef PythonClassEnv::tp_methods[] = {{nullptr}};
|
||||
PyMethodDef PythonClassEnv::tp_methods[] = {
|
||||
{"__dir__", (PyCFunction)Dir, METH_NOARGS,
|
||||
"allows inclusion of our custom attrs in standard python dir()"},
|
||||
{nullptr}};
|
||||
|
||||
} // namespace ballistica::base
|
||||
|
||||
@ -37,6 +37,7 @@ class PythonClassEnv : public PythonClass {
|
||||
static auto tp_new(PyTypeObject* type, PyObject* args, PyObject* keywds)
|
||||
-> PyObject*;
|
||||
static void tp_dealloc(PythonClassEnv* self);
|
||||
static auto Dir(PythonClassEnv* self) -> PyObject*;
|
||||
};
|
||||
|
||||
} // namespace ballistica::base
|
||||
|
||||
@ -148,6 +148,7 @@ auto CoreFeatureSet::core_config() const -> const CoreConfig& {
|
||||
}
|
||||
|
||||
void CoreFeatureSet::ApplyBaEnvConfig() {
|
||||
// Ask baenv for the config we should use.
|
||||
auto envcfg =
|
||||
python->objs().Get(core::CorePython::ObjID::kBaEnvGetConfigCall).Call();
|
||||
BA_PRECONDITION_FATAL(envcfg.Exists());
|
||||
@ -155,7 +156,7 @@ void CoreFeatureSet::ApplyBaEnvConfig() {
|
||||
assert(!have_ba_env_vals_);
|
||||
have_ba_env_vals_ = true;
|
||||
|
||||
// Grab everything baenv shipped us.
|
||||
// Pull everything we want out of it.
|
||||
ba_env_config_dir_ = envcfg.GetAttr("config_dir").ValueAsString();
|
||||
ba_env_data_dir_ = envcfg.GetAttr("data_dir").ValueAsString();
|
||||
ba_env_app_python_dir_ =
|
||||
@ -173,7 +174,8 @@ void CoreFeatureSet::ApplyBaEnvConfig() {
|
||||
ba_env_app_python_dir_.has_value()
|
||||
&& *ba_env_app_python_dir_ != standard_app_python_dir;
|
||||
|
||||
// Ok, now look for the existence of ba_data in the dir we've got.
|
||||
// As a sanity check, die if the data dir we were given doesn't contain a
|
||||
// 'ba_data' dir.
|
||||
auto fullpath = ba_env_data_dir_ + BA_DIRSLASH + "ba_data";
|
||||
if (!platform->FilePathExists(fullpath)) {
|
||||
FatalError("ba_data directory not found at '" + fullpath + "'.");
|
||||
@ -335,14 +337,15 @@ void CoreFeatureSet::UpdateAppTime() {
|
||||
std::scoped_lock lock(app_time_mutex_);
|
||||
microsecs_t passed = t - last_app_time_measure_microsecs_;
|
||||
|
||||
// The time calls we're using are supposed to be monotonic, but I've seen
|
||||
// 'passed' equal -1 even when it is using std::chrono::steady_clock. Let's
|
||||
// do our own filtering here to make 100% sure we don't go backwards.
|
||||
// The time calls we're using are supposed to be monotonic, but I've
|
||||
// seen 'passed' equal -1 even when it is using
|
||||
// std::chrono::steady_clock. Let's do our own filtering here to make
|
||||
// 100% sure we don't go backwards.
|
||||
if (passed < 0) {
|
||||
passed = 0;
|
||||
} else {
|
||||
// Very large times-passed probably means we went to sleep or something;
|
||||
// clamp to a reasonable value.
|
||||
// Very large times-passed probably means we went to sleep or
|
||||
// something; clamp to a reasonable value.
|
||||
if (passed > 250000) {
|
||||
passed = 250000;
|
||||
}
|
||||
@ -355,8 +358,8 @@ void CoreFeatureSet::UpdateAppTime() {
|
||||
void CoreFeatureSet::UpdateMainThreadID() {
|
||||
auto current_id = std::this_thread::get_id();
|
||||
|
||||
// This gets called a lot and it may happen before we are spun up,
|
||||
// so just ignore it in that case..
|
||||
// This gets called a lot and it may happen before we are spun up, so just
|
||||
// ignore it in that case.
|
||||
main_thread_id = current_id;
|
||||
main_event_loop_->set_thread_id(current_id);
|
||||
}
|
||||
|
||||
@ -164,7 +164,6 @@ class CoreFeatureSet {
|
||||
bool should_pause{};
|
||||
bool reset_vr_orientation{};
|
||||
bool user_ran_commands{};
|
||||
int return_value{};
|
||||
std::thread::id main_thread_id{};
|
||||
|
||||
bool vr_mode;
|
||||
|
||||
@ -297,14 +297,6 @@ void CorePlatformApple::SetHardwareCursorVisible(bool visible) {
|
||||
#endif
|
||||
}
|
||||
|
||||
void CorePlatformApple::QuitApp() {
|
||||
#if BA_OSTYPE_MACOS && BA_XCODE_BUILD && !BA_HEADLESS_BUILD
|
||||
AppleUtils::Quit(); // will post a cocoa terminate
|
||||
#else
|
||||
CorePlatform::QuitApp();
|
||||
#endif
|
||||
}
|
||||
|
||||
void CorePlatformApple::OpenFileExternally(const std::string& path) {
|
||||
#if BA_XCODE_BUILD
|
||||
AppleUtils::EditTextFile(path.c_str());
|
||||
|
||||
@ -50,7 +50,6 @@ class CorePlatformApple : public CorePlatform {
|
||||
void GameCenterLogin() override;
|
||||
auto IsOSPlayingMusic() -> bool override;
|
||||
void SetHardwareCursorVisible(bool visible) override;
|
||||
void QuitApp() override;
|
||||
void OpenFileExternally(const std::string& path) override;
|
||||
void OpenDirExternally(const std::string& path) override;
|
||||
void MacMusicAppInit() override;
|
||||
|
||||
@ -470,8 +470,6 @@ void CorePlatform::SleepMillisecs(millisecs_t ms) {
|
||||
#pragma clang diagnostic push
|
||||
#pragma ide diagnostic ignored "NullDereferences"
|
||||
|
||||
void CorePlatform::WillExitMain(bool errored) {}
|
||||
|
||||
auto CorePlatform::GetUIScale() -> UIScale {
|
||||
// Handles mac/pc/linux cases.
|
||||
return UIScale::kLarge;
|
||||
@ -810,8 +808,6 @@ void CorePlatform::SetHardwareCursorVisible(bool visible) {
|
||||
#endif
|
||||
}
|
||||
|
||||
void CorePlatform::QuitApp() { exit(g_core->return_value); }
|
||||
|
||||
void CorePlatform::OpenFileExternally(const std::string& path) {
|
||||
Log(LogLevel::kError, "OpenFileExternally() unimplemented");
|
||||
}
|
||||
|
||||
@ -49,8 +49,6 @@ class CorePlatform {
|
||||
/// class versions can go here.
|
||||
virtual void PostInit();
|
||||
|
||||
virtual void WillExitMain(bool errored);
|
||||
|
||||
virtual void OnScreenSizeChange();
|
||||
virtual void StepDisplayTime();
|
||||
|
||||
@ -430,9 +428,6 @@ class CorePlatform {
|
||||
/// Show/hide the hardware cursor.
|
||||
virtual void SetHardwareCursorVisible(bool visible);
|
||||
|
||||
/// Quit the app (can be immediate or via posting some high level event).
|
||||
virtual void QuitApp();
|
||||
|
||||
/// Open a file using the system default method (in another app, etc.)
|
||||
virtual void OpenFileExternally(const std::string& path);
|
||||
|
||||
|
||||
@ -8,10 +8,9 @@
|
||||
|
||||
namespace ballistica::core {
|
||||
|
||||
/// 'Soft' interface to the base feature-set.
|
||||
/// Feature-sets listing base as a soft requirement must limit their use of
|
||||
/// base to these methods and should be prepared to handle the not-present
|
||||
/// case.
|
||||
/// 'Soft' interface to the base feature-set. Feature-sets listing base as a
|
||||
/// soft requirement must limit their use of base to these methods and
|
||||
/// should be prepared to handle the not-present case.
|
||||
class BaseSoftInterface {
|
||||
public:
|
||||
virtual void ScreenMessage(const std::string& s, const Vector3f& color) = 0;
|
||||
@ -44,6 +43,7 @@ class BaseSoftInterface {
|
||||
virtual void DoPushObjCall(const PythonObjectSetBase* objset, int id,
|
||||
const std::string& arg) = 0;
|
||||
virtual auto IsAppStarted() const -> bool = 0;
|
||||
virtual auto GetReturnValue() const -> int = 0;
|
||||
};
|
||||
|
||||
} // namespace ballistica::core
|
||||
|
||||
@ -221,7 +221,7 @@ auto PythonClassMaterial::tp_setattro(PythonClassMaterial* self, PyObject* attr,
|
||||
auto PythonClassMaterial::Dir(PythonClassMaterial* self) -> PyObject* {
|
||||
BA_PYTHON_TRY;
|
||||
|
||||
// Start with the standard python dir listing.
|
||||
// Start with the standard Python dir listing.
|
||||
PyObject* dir_list = Python::generic_dir(reinterpret_cast<PyObject*>(self));
|
||||
assert(PyList_Check(dir_list));
|
||||
|
||||
|
||||
@ -25,26 +25,25 @@ class BaseFeatureSet;
|
||||
|
||||
namespace ballistica::scene_v1 {
|
||||
|
||||
// Protocol version we host games with and write replays to.
|
||||
// This should be incremented whenever there are changes made to the
|
||||
// session-commands layer (new/removed/changed nodes, attrs, data files,
|
||||
// behavior, etc.)
|
||||
// Note that the packet/gamepacket/message layer can vary more organically based
|
||||
// on build-numbers of connected clients/servers since none of that data is
|
||||
// stored; this just needs to be observed for all the scene stuff that
|
||||
// goes into replays since a single stream can get played/replayed on different
|
||||
// builds (as long as they support that protocol version).
|
||||
// Protocol version we host games with and write replays to. This should be
|
||||
// incremented whenever there are changes made to the session-commands layer
|
||||
// (new/removed/changed nodes, attrs, data files, behavior, etc.)
|
||||
|
||||
// Note that the packet/gamepacket/message layer can vary more organically
|
||||
// based on build-numbers of connected clients/servers since none of that
|
||||
// data is stored; this just needs to be observed for all the scene stuff
|
||||
// that goes into replays since a single stream can get played/replayed on
|
||||
// different builds (as long as they support that protocol version).
|
||||
const int kProtocolVersion = 33;
|
||||
|
||||
// Oldest protocol version we can act as a client to.
|
||||
// This can generally be left as-is as long as only
|
||||
// new nodes/attrs/commands are added and existing
|
||||
// stuff is unchanged.
|
||||
// Oldest protocol version we can act as a client to. This can generally be
|
||||
// left as-is as long as only new nodes/attrs/commands are added and
|
||||
// existing stuff is unchanged.
|
||||
const int kProtocolVersionMin = 24;
|
||||
|
||||
// FIXME: We should separate out connection protocol from scene protocol. We
|
||||
// want to be able to watch really old replays if possible but being able to
|
||||
// connect to old clients is much less important (and slows progress).
|
||||
// want to be able to watch really old replays if possible but being able
|
||||
// to connect to old clients is much less important (and slows progress).
|
||||
|
||||
// Protocol additions:
|
||||
// 25: added a few new achievement graphics and new node attrs for displaying
|
||||
|
||||
@ -39,8 +39,8 @@ auto main(int argc, char** argv) -> int {
|
||||
namespace ballistica {
|
||||
|
||||
// These are set automatically via script; don't modify them here.
|
||||
const int kEngineBuildNumber = 21281;
|
||||
const char* kEngineVersion = "1.7.27";
|
||||
const int kEngineBuildNumber = 21289;
|
||||
const char* kEngineVersion = "1.7.28";
|
||||
const int kEngineApiVersion = 8;
|
||||
|
||||
#if BA_MONOLITHIC_BUILD
|
||||
@ -156,9 +156,8 @@ auto MonolithicMain(const core::CoreConfig& core_config) -> int {
|
||||
}
|
||||
}
|
||||
}
|
||||
if (l_core) {
|
||||
l_core->platform->WillExitMain(false);
|
||||
return l_core->return_value;
|
||||
if (l_base) {
|
||||
return l_base->GetReturnValue();
|
||||
}
|
||||
return -1; // Didn't even get core; something clearly wrong.
|
||||
}
|
||||
|
||||
@ -18,8 +18,8 @@
|
||||
#include "ballistica/shared/foundation/macros.h"
|
||||
#include "ballistica/shared/foundation/types.h"
|
||||
|
||||
// There are one or two places where we include this from regular C
|
||||
// or Objective-C code so want to gracefully handle that case.
|
||||
// There are one or two places where we include this from regular C or
|
||||
// Objective-C code so want to gracefully handle that case.
|
||||
#ifdef __cplusplus
|
||||
|
||||
namespace ballistica {
|
||||
@ -40,10 +40,9 @@ const int kMaxPacketSize = 700;
|
||||
// Extra bytes added to message packets.
|
||||
const int kMessagePacketHeaderSize = 6;
|
||||
|
||||
// The screen, no matter what size/aspect, will always
|
||||
// fit this virtual rectangle, so placing UI elements within
|
||||
// these coords is always safe.
|
||||
// (we currently match the screen ratio of an iPhone 5).
|
||||
// The screen, no matter what size/aspect, will always fit this virtual
|
||||
// rectangle, so placing UI elements within these coords is always safe. (we
|
||||
// currently match the screen ratio of an iPhone 5).
|
||||
const int kBaseVirtualResX = 1207;
|
||||
const int kBaseVirtualResY = 680;
|
||||
|
||||
@ -60,13 +59,14 @@ namespace core {
|
||||
class CoreConfig;
|
||||
}
|
||||
|
||||
// The following is a smattering of convenience functions declared in our top
|
||||
// level namespace. Functionality can be exposed here if it is used often
|
||||
// enough that avoiding the extra class includes seems like an overall
|
||||
// The following is a smattering of convenience functions declared in our
|
||||
// top level namespace. Functionality can be exposed here if it is used
|
||||
// often enough that avoiding the extra class includes seems like an overall
|
||||
// compile-time/convenience win.
|
||||
|
||||
#if BA_MONOLITHIC_BUILD
|
||||
/// Entry point for standard monolithic builds. Handles all initing and running.
|
||||
/// Entry point for standard monolithic builds. Handles all initing and
|
||||
/// running.
|
||||
auto MonolithicMain(const core::CoreConfig& config) -> int;
|
||||
#endif // BA_MONOLITHIC_BUILD
|
||||
|
||||
@ -80,12 +80,11 @@ auto CurrentThreadName() -> std::string;
|
||||
/// Convenient access to Logging::Log.
|
||||
void Log(LogLevel level, const std::string& msg);
|
||||
|
||||
/// Log a fatal error and kill the app.
|
||||
/// Can be called from any thread at any time.
|
||||
/// Provided message will be shown to the user if possible.
|
||||
/// This will attempt to ship all accumulated logs to the master-server
|
||||
/// so the standard Log() call can be used before this to include extra
|
||||
/// info not relevant to the end user.
|
||||
/// Log a fatal error and kill the app. Can be called from any thread at any
|
||||
/// time. Provided message will be shown to the user if possible. This will
|
||||
/// attempt to ship all accumulated logs to the master-server so the
|
||||
/// standard Log() call can be used before this to include extra info not
|
||||
/// relevant to the end user.
|
||||
void FatalError(const std::string& message = "");
|
||||
|
||||
} // namespace ballistica
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user