This commit is contained in:
Eric Froemling 2022-12-07 22:19:11 -08:00
parent 1e8ad4361d
commit be9599d0a7
No known key found for this signature in database
GPG Key ID: 89C93F0F8D6D5A98
10 changed files with 660 additions and 627 deletions

File diff suppressed because it is too large Load Diff

View File

@ -1,4 +1,11 @@
### 1.7.16 (build 20961, api 7, 2022-12-06)
- Fixed a bug where profile names encased in curly brackets could cause harmless error messages.
- Android will no longer log errors on ba.open_url() calls if a browser is not available (it still just falls back to the in-app dialog in that case).
- The 'Upgrade' button for device accounts now signs you out and closes the upgrade window to hopefully make it more clear that you need to sign in with your newly created/upgraded BombSquad account.
### 1.7.15 (build 20960, api 7, 2022-12-04)
- The cancel button on the 'Sign in with a Bombsquad Account' popup no longer respond to system cancel buttons (escape key, android back button, etc). Turns out some Android people were pressing back repeatedly to come back from a browser after signing in and immediately canceling their sign in attempts in the game before they completed. Hopefully this will avoid some frustration.
- Fixed an issue where back presses could result in multiple main menu windows appearing.
### 1.7.14 (build 20958, api 7, 2022-12-03)
- Android Google Play logins now provide V2 accounts with access to all V2 features such as a globally-unique account tag, cloud-console, and workspaces. They should still retain their V1 data as well.
@ -15,6 +22,7 @@
- Fixed a low level event-loop issue that in some cases was preventing the Android version from properly pausing/resuming the app or managing connections while in the background. If you look at the devices section on ballistica.net you should now see your device disappear when you background the app and reappear when you foreground it. Please holler if not.
- Device accounts are now marked as deprecated, and signing in with one now brings up an 'upgrade' UI which allows converting it to a V2 account. It is my hope to push the entire client ecosystem to V2 accounts as quickly as possible since trying to support both independent V1 accounts and V2 accounts is a substantial technical burden.
- Fixed an issue where Log calls made within `Thread::PushThreadMessage()` could result in deadlock.
- Fixed an issue where some Android hardware buttons could theoretically cause rogue game controller button presses (due to downcasting int values > 255 into a uint8 value).
### 1.7.13 (build 20919, api 7, 2022-11-03)
- Android target-sdk has been updated to 33 (Android 13). Please holler if anything seems broken or is behaving differently than before on Android.

View File

@ -47,7 +47,7 @@ def bootstrap() -> None:
# Give a soft warning if we're being used with a different binary
# version than we expect.
expected_build = 20960
expected_build = 20961
running_build: int = env['build_number']
if running_build != expected_build:
print(

View File

@ -173,7 +173,7 @@ class PluginSubsystem:
color=(1, 1, 0),
)
plugnames = ', '.join(disappeared_plugs)
logging.warning(
logging.info(
'%d plugin(s) no longer found: %s.',
len(disappeared_plugs),
plugnames,

View File

@ -67,11 +67,14 @@ class V2ProxySignInWindow(ba.Window):
label=ba.Lstr(resource='cancelText'),
on_activate_call=self._done,
autoselect=True,
color=(0.55, 0.5, 0.6),
textcolor=(0.75, 0.7, 0.8),
)
ba.containerwidget(
edit=self._root_widget, cancel_button=self._cancel_button
)
if bool(False):
ba.containerwidget(
edit=self._root_widget, cancel_button=self._cancel_button
)
self._update_timer: ba.Timer | None = None

View File

@ -88,17 +88,13 @@ class V2UpgradeWindow(ba.Window):
on_activate_call=show_what_is_v2_page,
)
bamasteraddr = ba.internal.get_master_server_address(version=2)
upgrade_button = ba.buttonwidget(
parent=self._root_widget,
position=(self._width - button_width - 20, 25),
size=(button_width, 65),
autoselect=True,
label=ba.Lstr(resource='upgradeText'),
on_activate_call=ba.Call(
ba.open_url,
f'{bamasteraddr}/v2uda/{self._code}',
),
on_activate_call=self._upgrade_press,
)
ba.containerwidget(
@ -107,5 +103,15 @@ class V2UpgradeWindow(ba.Window):
cancel_button=cancel_button,
)
def _upgrade_press(self) -> None:
# Get rid of the window and sign out before kicking the
# user over to a browser to do the upgrade. This hopefully
# makes it more clear when they come back that they need to
# sign in with the 'BombSquad account' option.
ba.containerwidget(edit=self._root_widget, transition='out_left')
ba.internal.sign_out_v1()
bamasteraddr = ba.internal.get_master_server_address(version=2)
ba.open_url(f'{bamasteraddr}/v2uda/{self._code}')
def _done(self) -> None:
ba.containerwidget(edit=self._root_widget, transition='out_left')

View File

@ -257,10 +257,13 @@ void AppFlavor::PauseApp() {
auto threads{Thread::GetStillPausingThreads()};
running_thread_count = threads.size();
if (running_thread_count == 0) {
Log(LogLevel::kDebug,
"PauseApp() completed in "
+ std::to_string(Platform::GetCurrentMilliseconds() - start_time)
+ "ms.");
if (g_buildconfig.debug_build()) {
Log(LogLevel::kDebug,
"PauseApp() completed in "
+ std::to_string(Platform::GetCurrentMilliseconds()
- start_time)
+ "ms.");
}
return;
}
}
@ -282,10 +285,12 @@ void AppFlavor::ResumeApp() {
assert(sys_paused_app_);
sys_paused_app_ = false;
UpdatePauseResume();
Log(LogLevel::kDebug,
"ResumeApp() completed in "
+ std::to_string(Platform::GetCurrentMilliseconds() - start_time)
+ "ms.");
if (g_buildconfig.debug_build()) {
Log(LogLevel::kDebug,
"ResumeApp() completed in "
+ std::to_string(Platform::GetCurrentMilliseconds() - start_time)
+ "ms.");
}
}
void AppFlavor::DidFinishRenderingFrame(FrameDef* frame) {}

View File

@ -32,8 +32,8 @@
namespace ballistica {
// These are set automatically via script; don't modify them here.
const int kAppBuildNumber = 20960;
const char* kAppVersion = "1.7.15";
const int kAppBuildNumber = 20961;
const char* kAppVersion = "1.7.16";
// Our standalone globals.
// These are separated out for easy access.

View File

@ -1108,7 +1108,15 @@ void RootWidget::SetOverlayWidget(StackWidget* w) {
overlay_stack_widget_ = w;
}
void RootWidget::OnCancelCustom() { g_ui->PushBackButtonCall(nullptr); }
void RootWidget::OnCancelCustom() {
// Need to revisit this. If the cancel event it pushes is not handled, it will
// wind up back here where it pushes another back call. This cycle repeats
// forever until something comes along which does handle cancel events and
// then it gets them all. Current repro case is Sign-in-with-BombSquad-Account
// window - press escape a few times while that is up and then click cancel;
// This code is only used for toolbar mode so should be safe to leave it
// disabled for now. g_ui->PushBackButtonCall(nullptr);
}
auto RootWidget::GetSpecialWidget(const std::string& s) const -> Widget* {
if (s == "party_button") {

View File

@ -441,20 +441,23 @@ void TextWidget::SetText(const std::string& text_in_raw) {
bool do_format_check{};
bool print_false_positives{};
if (g_buildconfig.debug_build()) {
do_format_check = explicit_bool(true);
} else {
if (text_in_raw.size() > 1 && text_in_raw[0] == '{'
&& text_in_raw[text_in_raw.size() - 1] == '}') {
// Ok, its got bounds like json; now if its either missing quotes or a
// colon then let's check it.
if (!strstr(text_in_raw.c_str(), "\"")
|| !strstr(text_in_raw.c_str(), ":")) {
do_format_check = true;
// Only non-editable text support resource-strings.
if (!editable_) {
if (g_buildconfig.debug_build()) {
do_format_check = explicit_bool(true);
} else {
if (text_in_raw.size() > 1 && text_in_raw[0] == '{'
&& text_in_raw[text_in_raw.size() - 1] == '}') {
// Ok, its got bounds like json; now if its either missing quotes or a
// colon then let's check it.
if (!strstr(text_in_raw.c_str(), "\"")
|| !strstr(text_in_raw.c_str(), ":")) {
do_format_check = true;
// We wanna avoid doing this check when we don't have to.
// so lets print if we get a false positive
print_false_positives = true;
// We wanna avoid doing this check when we don't have to.
// so lets print if we get a false positive
print_false_positives = true;
}
}
}
}