diff --git a/.efrocachemap b/.efrocachemap index 8c7d8f71..515a7747 100644 --- a/.efrocachemap +++ b/.efrocachemap @@ -3932,26 +3932,26 @@ "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/46/ad/ce8ca86415841e139569bb3c1f8f", - "build/prefab/full/linux_arm64/release/ballisticacore": "https://files.ballistica.net/cache/ba1/7e/cd/849c232cd841cfcba662d9684e3c", - "build/prefab/full/linux_arm64_server/debug/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/b9/1c/6e85525c5de9bca9685a7c1d26e9", - "build/prefab/full/linux_arm64_server/release/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/f8/d3/97dd8a8200380f589a705e720055", - "build/prefab/full/linux_x86_64/debug/ballisticacore": "https://files.ballistica.net/cache/ba1/c2/76/cb60618d327e7e7536d00461b886", - "build/prefab/full/linux_x86_64/release/ballisticacore": "https://files.ballistica.net/cache/ba1/fc/fa/fcca1e02ff3a47785abcf46f37f2", - "build/prefab/full/linux_x86_64_server/debug/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/fc/79/9c289328cf04042c28f449690cc3", - "build/prefab/full/linux_x86_64_server/release/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/32/f9/4e443b5e25cd319a386a7223d7ac", - "build/prefab/full/mac_arm64/debug/ballisticacore": "https://files.ballistica.net/cache/ba1/14/aa/7de00108edbe74a83191feffd9f6", - "build/prefab/full/mac_arm64/release/ballisticacore": "https://files.ballistica.net/cache/ba1/21/d2/655075853f455ee7f3640604635a", - "build/prefab/full/mac_arm64_server/debug/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/2a/63/20338b8263c013cd095f9c42315b", - "build/prefab/full/mac_arm64_server/release/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/20/b9/50a276c94c32c122aa5d4e6fa2ac", - "build/prefab/full/mac_x86_64/debug/ballisticacore": "https://files.ballistica.net/cache/ba1/3e/e5/6383ca046609f0d5349243333474", - "build/prefab/full/mac_x86_64/release/ballisticacore": "https://files.ballistica.net/cache/ba1/23/1c/b85c95ea38daca6c780ca6735756", - "build/prefab/full/mac_x86_64_server/debug/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/5f/53/fb376ece15f95659bfdfec34363a", - "build/prefab/full/mac_x86_64_server/release/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/13/ae/353a1773ee4da017a9e3f9ca3684", - "build/prefab/full/windows_x86/debug/BallisticaCore.exe": "https://files.ballistica.net/cache/ba1/e5/d6/78ea684cc9a71e4546ec0349784c", - "build/prefab/full/windows_x86/release/BallisticaCore.exe": "https://files.ballistica.net/cache/ba1/dd/56/6106a0adf4002d69d3be14846d2b", - "build/prefab/full/windows_x86_server/debug/dist/ballisticacore_headless.exe": "https://files.ballistica.net/cache/ba1/fd/d3/e72d3b3e217bd3fd329106e88c2c", - "build/prefab/full/windows_x86_server/release/dist/ballisticacore_headless.exe": "https://files.ballistica.net/cache/ba1/0e/b3/f440e97dab1b4ec890c0b8c91453", + "build/prefab/full/linux_arm64/debug/ballisticacore": "https://files.ballistica.net/cache/ba1/bd/13/4b8f2b347863747aeaab5d19ffbe", + "build/prefab/full/linux_arm64/release/ballisticacore": "https://files.ballistica.net/cache/ba1/20/00/4f13a3cf0cafd8f60a90008ce605", + "build/prefab/full/linux_arm64_server/debug/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/4d/ae/c8e188c091474324e580ec94f4e0", + "build/prefab/full/linux_arm64_server/release/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/c0/e8/e9915433922b616281694b3c903d", + "build/prefab/full/linux_x86_64/debug/ballisticacore": "https://files.ballistica.net/cache/ba1/6c/52/090604f97715740cfff85f4c3f48", + "build/prefab/full/linux_x86_64/release/ballisticacore": "https://files.ballistica.net/cache/ba1/1e/e9/9de31a86255b65d7d89a02c257b4", + "build/prefab/full/linux_x86_64_server/debug/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/da/ce/a2db4cee1c1858143214c03d3a2c", + "build/prefab/full/linux_x86_64_server/release/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/17/70/b0b4a3853c5182121325de58e224", + "build/prefab/full/mac_arm64/debug/ballisticacore": "https://files.ballistica.net/cache/ba1/e4/42/aa2626b27e0c393b50ae57406bb2", + "build/prefab/full/mac_arm64/release/ballisticacore": "https://files.ballistica.net/cache/ba1/d7/dd/4b7fb2832972f49b01101aac0ca2", + "build/prefab/full/mac_arm64_server/debug/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/d0/80/5a44a3728b56aafe499081d863b2", + "build/prefab/full/mac_arm64_server/release/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/91/13/a46a521e933e4d8dc43f4997e238", + "build/prefab/full/mac_x86_64/debug/ballisticacore": "https://files.ballistica.net/cache/ba1/88/e9/3c26f08c41f7c74db6e6495159ee", + "build/prefab/full/mac_x86_64/release/ballisticacore": "https://files.ballistica.net/cache/ba1/6f/42/49707eb374d25778fe9813963bcd", + "build/prefab/full/mac_x86_64_server/debug/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/25/45/2de5c321525af7c3f152b11f1884", + "build/prefab/full/mac_x86_64_server/release/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/ef/c1/94aab0266746ffb01fdc1cd47a08", + "build/prefab/full/windows_x86/debug/BallisticaCore.exe": "https://files.ballistica.net/cache/ba1/b3/1d/a1d6998e968d27e7eecdf2526eb1", + "build/prefab/full/windows_x86/release/BallisticaCore.exe": "https://files.ballistica.net/cache/ba1/34/47/9378839338629fe8e322a9ddb860", + "build/prefab/full/windows_x86_server/debug/dist/ballisticacore_headless.exe": "https://files.ballistica.net/cache/ba1/e0/dc/0bd676886c0a5391366edfad4bd4", + "build/prefab/full/windows_x86_server/release/dist/ballisticacore_headless.exe": "https://files.ballistica.net/cache/ba1/5d/5f/020bb8c78559871f9924042894ff", "build/prefab/lib/linux_arm64/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/4c/bf/393694ea67f3d590dd2706c9955e", "build/prefab/lib/linux_arm64/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/78/cb/bb9ae4f896f862074057c8e36e1d", "build/prefab/lib/linux_arm64_server/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/ae/bd/39d7b885f7f01e81d0e96f0f85ce", @@ -3960,12 +3960,12 @@ "build/prefab/lib/linux_x86_64/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/52/d9/563a6949d2c4db5a915c54460fbc", "build/prefab/lib/linux_x86_64_server/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/d0/6a/42fe8d2e34f95e1b3282e8422344", "build/prefab/lib/linux_x86_64_server/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/50/cf/bad44b07a4022aee3001002086b5", - "build/prefab/lib/mac_arm64/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/d1/d6/699843b13518be29ea1a370dc7b2", - "build/prefab/lib/mac_arm64/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/0c/88/bb8f8cc3b426b3ba9a15ed3697de", - "build/prefab/lib/mac_arm64_server/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/3b/bf/31fcadf412a0ecf92e8cdc61a01a", - "build/prefab/lib/mac_arm64_server/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/f5/4c/5f5c9d5a5e1985371a0f8f0e5aa6", - "build/prefab/lib/mac_x86_64/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/5f/75/b2490bcee215d922c7b250ea5bda", - "build/prefab/lib/mac_x86_64/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/c9/38/7695ffdddb2eba1f1d800c84dc04", - "build/prefab/lib/mac_x86_64_server/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/73/ab/6333cfc10a127265eb0f0c3fe4b1", - "build/prefab/lib/mac_x86_64_server/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/09/95/dd9f50fbc4eb499018713f3e32da" + "build/prefab/lib/mac_arm64/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/8e/d8/b00361f54ae023feb88cbf0ef78c", + "build/prefab/lib/mac_arm64/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/42/68/fa75c5f75e97ae5214679c75bbc0", + "build/prefab/lib/mac_arm64_server/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/62/b9/2e9fca8ae23035741fadd143a932", + "build/prefab/lib/mac_arm64_server/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/eb/b1/4a527ce50b6d52e7970efb149fbb", + "build/prefab/lib/mac_x86_64/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/11/cf/3e89a9502fdec55eb218ecad26a2", + "build/prefab/lib/mac_x86_64/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/8a/80/2db47e59931fd4e663d4a62c0b5e", + "build/prefab/lib/mac_x86_64_server/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/f0/04/ba4cd87f743c35f3db8649a62ede", + "build/prefab/lib/mac_x86_64_server/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/fc/4d/a37663dbf38601f3daf924065747" } \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md index 2ea48160..c5ab23ca 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,6 +12,7 @@ - Server-wrapper improvements allowing config path and ba_root path to be passed explicitly. - Binary -cfgdir option now properly allows any path, not just './ba_root'. - Additional server-wrapper options such as disabling auto-restart and automatic restarts on config file changes. +- Running a `_ba.connect_to_party` command via the -exec arg should now do the right thing. ### 1.5.29 (20246) - Exposed ba method/class initing in public C++ layer. diff --git a/docs/ba_module.md b/docs/ba_module.md index 64847c11..8a64610c 100644 --- a/docs/ba_module.md +++ b/docs/ba_module.md @@ -1,5 +1,5 @@ -

last updated on 2021-02-27 for Ballistica version 1.6.0 build 20312

+

last updated on 2021-03-03 for Ballistica version 1.6.0 build 20319

This page documents the Python classes and functions in the 'ba' module, which are the ones most relevant to modding in Ballistica. If you come across something you feel should be included here or could be better explained, please let me know. Happy modding!


diff --git a/src/ballistica/app/app.cc b/src/ballistica/app/app.cc index 98fc3d1f..451a8d7a 100644 --- a/src/ballistica/app/app.cc +++ b/src/ballistica/app/app.cc @@ -108,6 +108,7 @@ void App::PushShutdownCompleteCall() { } void App::ShutdownComplete() { + assert(InMainThread()); assert(g_platform); // Need to call our cleanup stuff that would otherwise get called in main. diff --git a/src/ballistica/app/app_globals.h b/src/ballistica/app/app_globals.h index 68b565e9..16b817fd 100644 --- a/src/ballistica/app/app_globals.h +++ b/src/ballistica/app/app_globals.h @@ -56,7 +56,7 @@ class AppGlobals { UIScale ui_scale{UIScale::kLarge}; AccountType account_type{AccountType::kInvalid}; bool remote_server_accepting_connections{true}; - std::string game_commands; + std::string exec_command; std::string user_agent_string{"BA_USER_AGENT_UNSET (" BA_PLATFORM_STRING ")"}; int return_value{}; bool is_stdin_a_terminal{true}; diff --git a/src/ballistica/ballistica.cc b/src/ballistica/ballistica.cc index 33ecff87..5704269b 100644 --- a/src/ballistica/ballistica.cc +++ b/src/ballistica/ballistica.cc @@ -21,7 +21,7 @@ namespace ballistica { // These are set automatically via script; don't change here. -const int kAppBuildNumber = 20319; +const int kAppBuildNumber = 20321; const char* kAppVersion = "1.6.0"; // Our standalone globals. @@ -87,7 +87,6 @@ auto BallisticaMain(int argc, char** argv) -> int { g_app_globals = new AppGlobals(argc, argv); g_app_internal = CreateAppInternal(); g_platform = Platform::Create(); - g_platform->PostInit(); g_account = new Account(); g_utils = new Utils(); Scene::Init(); @@ -126,15 +125,15 @@ auto BallisticaMain(int argc, char** argv) -> int { // Phase 2: Set things in motion. // ------------------------------------------------------------------------- - // Ok; now that we're bootstrapped, tell the game thread to read and apply - // the config which should kick off the real action. - g_game->PushApplyConfigCall(); - // Let the app and platform do whatever else it wants here such as adding // initial input devices/etc. g_app->OnBootstrapComplete(); g_platform->OnBootstrapComplete(); + // Ok; now that we're bootstrapped, tell the game thread to read and apply + // the config which should kick off the real action. + g_game->PushApplyConfigCall(); + // ------------------------------------------------------------------------- // Phase 3/4: Create a screen and/or kick off game (in other threads). // ------------------------------------------------------------------------- @@ -258,7 +257,7 @@ auto InNetworkWriteThread() -> bool { && g_network_write_module->thread()->IsCurrent()); } -auto GetInterfaceType() -> UIScale { return g_app_globals->ui_scale; } +auto GetUIScale() -> UIScale { return g_app_globals->ui_scale; } void Log(const std::string& msg, bool to_stdout, bool to_server) { Logging::Log(msg, to_stdout, to_server); diff --git a/src/ballistica/ballistica.h b/src/ballistica/ballistica.h index f50b5521..c24b109c 100644 --- a/src/ballistica/ballistica.h +++ b/src/ballistica/ballistica.h @@ -220,7 +220,7 @@ auto GetCurrentThreadName() -> std::string; auto Log(const std::string& msg, bool to_stdout = true, bool to_server = true) -> void; -auto GetInterfaceType() -> UIScale; +auto GetUIScale() -> UIScale; /// Return true if stdin seems to be coming from a terminal /// (so we know to print prompts, etc). diff --git a/src/ballistica/game/game.cc b/src/ballistica/game/game.cc index ff245ac6..f5af83af 100644 --- a/src/ballistica/game/game.cc +++ b/src/ballistica/game/game.cc @@ -317,6 +317,7 @@ void Game::Prune() { g_media->Prune(); } // Launch into main menu or whatever else. void Game::RunAppLaunchCommands() { + assert(InGameThread()); assert(!ran_app_launch_commands_); // First off, run our python app-launch call. @@ -325,10 +326,11 @@ void Game::RunAppLaunchCommands() { ScopedSetContext cp(GetUIContext()); g_python->obj(Python::ObjID::kOnAppLaunchCall).Call(); } + ran_app_launch_commands_ = true; // If we were passed launch command args, run them. - if (!g_app_globals->game_commands.empty()) { - bool success = PythonCommand(g_app_globals->game_commands, BA_BCFN).Run(); + if (!g_app_globals->exec_command.empty()) { + bool success = PythonCommand(g_app_globals->exec_command, BA_BCFN).Run(); if (!success) { exit(1); } @@ -340,8 +342,6 @@ void Game::RunAppLaunchCommands() { } UpdateProcessTimer(); - - ran_app_launch_commands_ = true; } Game::~Game() = default; @@ -353,7 +353,9 @@ void Game::UpdateProcessTimer() { // This might get called before we set up our timer in some cases. (such as // very early) should be safe to ignore since we update the interval // explicitly after creating the timers. - if (!process_timer_) return; + if (!process_timer_) { + return; + } // If there's loading to do, keep at it rather vigorously. if (have_pending_loads_) { @@ -883,18 +885,17 @@ void Game::LaunchHostSession(PyObject* session_type_obj, } void Game::RunMainMenu() { - PushCall([this] { - if (g_app_globals->shutting_down) { - return; - } - assert(g_python); - assert(InGameThread()); - PythonRef result = - g_python->obj(Python::ObjID::kLaunchMainMenuSessionCall).Call(); - if (!result.exists()) { - throw Exception("error running main menu"); - } - }); + assert(InGameThread()); + if (g_app_globals->shutting_down) { + return; + } + assert(g_python); + assert(InGameThread()); + PythonRef result = + g_python->obj(Python::ObjID::kLaunchMainMenuSessionCall).Call(); + if (!result.exists()) { + throw Exception("error running main menu"); + } } // Commands run via the in-game console. These are a bit more 'casual' and run diff --git a/src/ballistica/graphics/area_of_interest.cc b/src/ballistica/graphics/area_of_interest.cc index f62bcc13..9475c16d 100644 --- a/src/ballistica/graphics/area_of_interest.cc +++ b/src/ballistica/graphics/area_of_interest.cc @@ -12,7 +12,7 @@ AreaOfInterest::~AreaOfInterest() = default; void AreaOfInterest::SetRadius(float r_in) { // We slightly scale this for phone situations. - float extrascale = (GetInterfaceType() == UIScale::kSmall) ? 0.85f : 1.0f; + float extrascale = (GetUIScale() == UIScale::kSmall) ? 0.85f : 1.0f; radius_ = r_in * extrascale; } diff --git a/src/ballistica/graphics/gl/renderer_gl.cc b/src/ballistica/graphics/gl/renderer_gl.cc index 0c853ad2..8da46450 100644 --- a/src/ballistica/graphics/gl/renderer_gl.cc +++ b/src/ballistica/graphics/gl/renderer_gl.cc @@ -5833,7 +5833,7 @@ std::string RendererGL::GetAutoAndroidRes() { if (strstr(renderer, "Adreno (TM) 4") || strstr(renderer, "Adreno (TM) 5")) { // for phones lets go with 1080p (phones most likely have 1920x1080-ish // aspect ratios) - if (GetInterfaceType() == UIScale::kSmall) { + if (GetUIScale() == UIScale::kSmall) { return "1080p"; } else { // tablets are more likely to have 1920x1200 so lets inch a bit higher @@ -5845,7 +5845,7 @@ std::string RendererGL::GetAutoAndroidRes() { if (is_extra_speedy_android_device_) { // for phones lets go with 1080p (phones most likely have 1920x1080-ish // aspect ratios) - if (GetInterfaceType() == UIScale::kSmall) { + if (GetUIScale() == UIScale::kSmall) { return "1080p"; } else { // tablets are more likely to have 1920x1200 so lets inch a bit higher diff --git a/src/ballistica/graphics/graphics.cc b/src/ballistica/graphics/graphics.cc index 6ca43146..9c766e6c 100644 --- a/src/ballistica/graphics/graphics.cc +++ b/src/ballistica/graphics/graphics.cc @@ -431,7 +431,7 @@ void Graphics::DrawMiscOverlays(RenderPass* pass) { // during gameplay. float start_v = g_graphics->screen_virtual_height() * 0.05f; float scale; - switch (GetInterfaceType()) { + switch (GetUIScale()) { case UIScale::kSmall: scale = 1.5f; break; diff --git a/src/ballistica/input/device/touch_input.cc b/src/ballistica/input/device/touch_input.cc index 57b51a75..21fa7238 100644 --- a/src/ballistica/input/device/touch_input.cc +++ b/src/ballistica/input/device/touch_input.cc @@ -71,7 +71,7 @@ void TouchInput::HandleTouchEvent(TouchEvent::Type type, void* touch, float x, } TouchInput::TouchInput() { - switch (GetInterfaceType()) { + switch (GetUIScale()) { case UIScale::kSmall: base_controls_scale_ = 2.0f; world_draw_scale_ = 1.2f; @@ -866,7 +866,7 @@ void TouchInput::UpdateMapping() { g_app_config->Resolve(AppConfig::BoolID::kTouchControlsSwipeHidden); // Start with defaults. - switch (GetInterfaceType()) { + switch (GetUIScale()) { case UIScale::kSmall: buttons_default_frac_x_ = 0.88f; buttons_default_frac_y_ = 0.2f; diff --git a/src/ballistica/platform/apple/platform_apple.h b/src/ballistica/platform/apple/platform_apple.h index 9d85341d..bf7c3114 100644 --- a/src/ballistica/platform/apple/platform_apple.h +++ b/src/ballistica/platform/apple/platform_apple.h @@ -23,7 +23,7 @@ class PlatformApple : public Platform { auto GetLocale() -> std::string override; auto DoGetDeviceName() -> std::string override; auto DoHasTouchScreen() -> bool override; - auto GetInterfaceType() -> UIScale override; + auto GetUIScale() -> UIScale override; auto IsRunningOnDesktop() -> bool override; void HandleLog(const std::string& msg) override; void SetupDataDirectory() override; diff --git a/src/ballistica/platform/platform.cc b/src/ballistica/platform/platform.cc index bf0c8448..43f0d380 100644 --- a/src/ballistica/platform/platform.cc +++ b/src/ballistica/platform/platform.cc @@ -105,6 +105,7 @@ namespace ballistica { auto Platform::Create() -> Platform* { auto platform = new BA_PLATFORM_CLASS(); + platform->PostInit(); return platform; } @@ -562,7 +563,7 @@ static void HandleArgs(int argc, char** argv) { g_app_globals->vr_mode = false; } else if (!strcmp(argv[i], "-exec")) { if (i + 1 < argc) { - g_app_globals->game_commands = argv[i + 1]; + g_app_globals->exec_command = argv[i + 1]; } else { printf("%s", "Error: expected arg after -exec\n"); fflush(stdout); @@ -597,13 +598,13 @@ static void HandleArgs(int argc, char** argv) { // In Android's case we have to pull our exec arg from the java/kotlin layer. if (g_buildconfig.ostype_android()) { - g_app_globals->game_commands = g_platform->GetAndroidExecArg(); + g_app_globals->exec_command = g_platform->GetAndroidExecArg(); } // TEMP/HACK: hard code launch args. if (explicit_bool(false)) { if (g_buildconfig.ostype_android()) { - g_app_globals->game_commands = + g_app_globals->exec_command = "import ba.internal; ba.internal.run_stress_test()"; } } @@ -685,7 +686,7 @@ void Platform::CreateAuxiliaryModules() { void Platform::WillExitMain(bool errored) {} -auto Platform::GetInterfaceType() -> UIScale { +auto Platform::GetUIScale() -> UIScale { // Handles mac/pc/linux cases. return UIScale::kLarge; } diff --git a/src/ballistica/platform/platform.h b/src/ballistica/platform/platform.h index cc897966..c363220d 100644 --- a/src/ballistica/platform/platform.h +++ b/src/ballistica/platform/platform.h @@ -148,7 +148,7 @@ class Platform { virtual auto IsEventPushMode() -> bool; // Return the interface type based on the environment (phone, tablet, etc). - virtual auto GetInterfaceType() -> UIScale; + virtual auto GetUIScale() -> UIScale; // Return a string *reasonably* likely to be unique and consistent for this // device. Do not assume this is globally unique and *do not* assume that it diff --git a/src/ballistica/python/methods/python_methods_app.cc b/src/ballistica/python/methods/python_methods_app.cc index da30b7a6..d9d73b29 100644 --- a/src/ballistica/python/methods/python_methods_app.cc +++ b/src/ballistica/python/methods/python_methods_app.cc @@ -742,7 +742,7 @@ auto PyEnv(PyObject* self) -> PyObject* { bool iircade_mode{g_buildconfig.arcade_build()}; const char* ui_scale; - switch (GetInterfaceType()) { + switch (GetUIScale()) { case UIScale::kLarge: ui_scale = "large"; break; diff --git a/src/ballistica/scene/node/spaz_node.cc b/src/ballistica/scene/node/spaz_node.cc index c8a90e7b..fb9817b8 100644 --- a/src/ballistica/scene/node/spaz_node.cc +++ b/src/ballistica/scene/node/spaz_node.cc @@ -4934,7 +4934,7 @@ void SpazNode::Draw(FrameDef* frame_def) { int elem_count = name_text_group_.GetElementCount(); float s_extra = - (IsVRMode() || GetInterfaceType() == UIScale::kSmall) ? 1.2f : 1.0f; + (IsVRMode() || GetUIScale() == UIScale::kSmall) ? 1.2f : 1.0f; for (int e = 0; e < elem_count; e++) { // Gracefully skip unloaded textures. diff --git a/src/ballistica/ui/root_ui.cc b/src/ballistica/ui/root_ui.cc index 5fbe3823..b02e0204 100644 --- a/src/ballistica/ui/root_ui.cc +++ b/src/ballistica/ui/root_ui.cc @@ -27,7 +27,7 @@ const float kMenuButtonDrawDepth = -0.07f; RootUI::RootUI() { float base_scale; - switch (GetInterfaceType()) { + switch (GetUIScale()) { case UIScale::kLarge: base_scale = 1.0f; break; diff --git a/src/ballistica/ui/ui.cc b/src/ballistica/ui/ui.cc index 5520d981..d30de0fa 100644 --- a/src/ballistica/ui/ui.cc +++ b/src/ballistica/ui/ui.cc @@ -56,7 +56,7 @@ UI::UI() { // VR and tv builds always use medium. g_app_globals->ui_scale = UIScale::kMedium; } else { - g_app_globals->ui_scale = g_platform->GetInterfaceType(); + g_app_globals->ui_scale = g_platform->GetUIScale(); } } diff --git a/src/ballistica/ui/widget/root_widget.cc b/src/ballistica/ui/widget/root_widget.cc index af5738f9..e3f8698a 100644 --- a/src/ballistica/ui/widget/root_widget.cc +++ b/src/ballistica/ui/widget/root_widget.cc @@ -141,7 +141,7 @@ auto RootWidget::AddCover(float h_align, VAlign v_align, float x, float y, // when the user specifies no backing it means they intend to cover the screen // with a flat-ish window texture.. however this only applies to phone-size; // for other sizes we always draw a backing. - if (GetInterfaceType() != UIScale::kSmall) { + if (GetUIScale() != UIScale::kSmall) { bd.visibility_mask |= static_cast(Widget::ToolbarVisibility::kMenuFull); } @@ -152,7 +152,7 @@ auto RootWidget::AddCover(float h_align, VAlign v_align, float x, float y, void RootWidget::AddMeter(float h_align, float x, int type, float r, float g, float b, bool plus, const std::string& s) { - float yoffs = (GetInterfaceType() == UIScale::kSmall) ? 0.0f : -7.0f; + float yoffs = (GetUIScale() == UIScale::kSmall) ? 0.0f : -7.0f; float width = type == 1 ? 80.0f : 110.0f; // bar @@ -170,7 +170,7 @@ void RootWidget::AddMeter(float h_align, float x, int type, float r, float g, bd.color_r = 0.32f; bd.color_g = 0.30f; bd.color_b = 0.4f; - if (GetInterfaceType() != UIScale::kSmall) { + if (GetUIScale() != UIScale::kSmall) { bd.color_r *= TOOLBAR_COLOR_R; bd.color_g *= TOOLBAR_COLOR_G; bd.color_b *= TOOLBAR_COLOR_B; @@ -286,7 +286,7 @@ void RootWidget::AddMeter(float h_align, float x, int type, float r, float g, bd.color_r = 0.35f; bd.color_g = 0.35f; bd.color_b = 0.55f; - if (GetInterfaceType() != UIScale::kSmall) { + if (GetUIScale() != UIScale::kSmall) { bd.color_r *= TOOLBAR_COLOR_R; bd.color_g *= TOOLBAR_COLOR_G; bd.color_b *= TOOLBAR_COLOR_B; @@ -349,9 +349,9 @@ void RootWidget::Setup() { // widen this a bit in small mode so it just covers most of the top // - that looks funny in medium/large mode though - // if (GetInterfaceType() == UIScale::kSmall) { + // if (GetUIScale() == UIScale::kSmall) { // AddCover(0.5f, VAlign::kTop, 0.0f, 320.0f, - // GetInterfaceType() == UIScale::kSmall ? 1000.0f : + // GetUIScale() == UIScale::kSmall ? 1000.0f : // 1000.0f, 800.0f, 0.4f); // } // if (c) { @@ -365,14 +365,14 @@ void RootWidget::Setup() { bd.h_align = 0.5f; bd.v_align = VAlign::kTop; bd.width = 370.0f; - // if (GetInterfaceType() != UIScale::kSmall) { + // if (GetUIScale() != UIScale::kSmall) { // bd.width = 950.0f; // } bd.height = 90.0f; bd.x = 256.0f; bd.y = -20.0f; bd.img = "uiAtlas2"; - // if (GetInterfaceType() != UIScale::kSmall) { + // if (GetUIScale() != UIScale::kSmall) { // bd.model_transparent = "toolbarBackingTop"; // } else { bd.model_transparent = "toolbarBackingTop2"; @@ -382,7 +382,7 @@ void RootWidget::Setup() { bd.color_g = 0.41f; bd.color_b = 0.56f; bd.opacity = 1.0f; - // if (GetInterfaceType() != UIScale::kSmall) { + // if (GetUIScale() != UIScale::kSmall) { // bd.color_r *= TOOLBAR_COLOR_R; // bd.color_g *= TOOLBAR_COLOR_G; // bd.color_b *= TOOLBAR_COLOR_B; @@ -409,14 +409,14 @@ void RootWidget::Setup() { bd.h_align = 0.5f; bd.v_align = VAlign::kTop; bd.width = 850.0f; - if (GetInterfaceType() != UIScale::kSmall) { + if (GetUIScale() != UIScale::kSmall) { bd.width = 850.0f; } bd.height = 90.0f; bd.x = 0.0f; bd.y = -20.0f; bd.img = "uiAtlas2"; - if (GetInterfaceType() != UIScale::kSmall) { + if (GetUIScale() != UIScale::kSmall) { bd.model_transparent = "toolbarBackingTop2"; } else { bd.model_transparent = "toolbarBackingTop2"; @@ -426,7 +426,7 @@ void RootWidget::Setup() { bd.color_g = 0.41f; bd.color_b = 0.56f; bd.opacity = 1.0f; - if (GetInterfaceType() != UIScale::kSmall) { + if (GetUIScale() != UIScale::kSmall) { bd.color_r *= TOOLBAR_COLOR_R * TOOLBAR_BACK_COLOR_R; bd.color_g *= TOOLBAR_COLOR_G * TOOLBAR_BACK_COLOR_G; bd.color_b *= TOOLBAR_COLOR_B * TOOLBAR_BACK_COLOR_B; @@ -446,7 +446,7 @@ void RootWidget::Setup() { AddButton(bd); } - float yoffs = (GetInterfaceType() == UIScale::kSmall) ? 0.0f : -10.0f; + float yoffs = (GetUIScale() == UIScale::kSmall) ? 0.0f : -10.0f; // account button { @@ -456,12 +456,12 @@ void RootWidget::Setup() { bd.width = 160.0f; bd.height = 60.0f; bd.depth_min = 0.3f; - bd.x = (GetInterfaceType() == UIScale::kSmall) ? 100.0f : -50.0f; + bd.x = (GetUIScale() == UIScale::kSmall) ? 100.0f : -50.0f; bd.y = -24.0f + yoffs; bd.color_r = 0.56f; bd.color_g = 0.5f; bd.color_b = 0.73f; - if (GetInterfaceType() != UIScale::kSmall) { + if (GetUIScale() != UIScale::kSmall) { bd.color_r *= TOOLBAR_COLOR_R; bd.color_g *= TOOLBAR_COLOR_G; bd.color_b *= TOOLBAR_COLOR_B; @@ -473,7 +473,7 @@ void RootWidget::Setup() { | static_cast(Widget::ToolbarVisibility::kMenuFullRoot)); // on desktop, stick this in the top left corner - // if (GetInterfaceType() == UIScale::kLarge) { + // if (GetUIScale() == UIScale::kLarge) { // bd.h_align = 0.0f; // bd.x = 120.0f; // } @@ -511,7 +511,7 @@ void RootWidget::Setup() { } } - float anchorx = (GetInterfaceType() == UIScale::kSmall) ? 0.3f : 0.25f; + float anchorx = (GetUIScale() == UIScale::kSmall) ? 0.3f : 0.25f; AddMeter(anchorx, 200.0f - 148.0f, 0, 1.0f, 1.0f, 1.0f, false, "456/1000"); AddMeter(anchorx, 200.0f, 1, 1.0f, 1.0f, 1.0f, false, "123"); @@ -657,7 +657,7 @@ void RootWidget::Setup() { float backingCoverG = backingG; float backingCoverB = backingB; float backingA = 1.0f; - if (GetInterfaceType() != UIScale::kSmall) { + if (GetUIScale() != UIScale::kSmall) { backingR *= TOOLBAR_COLOR_R * TOOLBAR_BACK_COLOR_R; backingG *= TOOLBAR_COLOR_G * TOOLBAR_BACK_COLOR_G; backingB *= TOOLBAR_COLOR_B * TOOLBAR_BACK_COLOR_B; @@ -685,7 +685,7 @@ void RootWidget::Setup() { bd.x = 0.0f; bd.y = 41.0f; bd.img = "uiAtlas2"; - if (GetInterfaceType() != UIScale::kSmall) { + if (GetUIScale() != UIScale::kSmall) { bd.model_transparent = "toolbarBackingBottom2"; } else { bd.model_transparent = "toolbarBackingBottom2"; @@ -945,7 +945,7 @@ void RootWidget::StepPositions(float dt) { } if (&b == back_button_) { // back button is always disabled in medium/large UI - if (GetInterfaceType() != UIScale::kSmall) { + if (GetUIScale() != UIScale::kSmall) { enable_button = false; } @@ -1034,7 +1034,7 @@ void RootWidget::StepPositions(float dt) { void RootWidget::UpdateLayout() { // Now actually put things in place. base_scale_ = 1.0f; - switch (GetInterfaceType()) { + switch (GetUIScale()) { case UIScale::kLarge: base_scale_ = 0.6f; break; diff --git a/src/ballistica/ui/widget/text_widget.cc b/src/ballistica/ui/widget/text_widget.cc index d54a7c9d..a7a27a5a 100644 --- a/src/ballistica/ui/widget/text_widget.cc +++ b/src/ballistica/ui/widget/text_widget.cc @@ -230,7 +230,7 @@ void TextWidget::Draw(RenderPass* pass, bool draw_transparent) { c.SetTexture(g_media->GetTexture(SystemTextureID::kTextClearButton)); c.PushTransform(); c.Translate(r - 20, b * 0.5f + t * 0.5f, 0.1f); - if (GetInterfaceType() == UIScale::kSmall) { + if (GetUIScale() == UIScale::kSmall) { c.Scale(30, 30); } else { c.Scale(25, 25);