mirror of
https://github.com/RYDE-WORK/ballistica.git
synced 2026-01-19 21:37:57 +08:00
language updates and 1.7 prep work
This commit is contained in:
parent
4d31d59467
commit
d16b569052
968
.efrocachemap
968
.efrocachemap
File diff suppressed because it is too large
Load Diff
16
.idea/dictionaries/ericf.xml
generated
16
.idea/dictionaries/ericf.xml
generated
@ -868,6 +868,7 @@
|
||||
<w>fstab</w>
|
||||
<w>fstat</w>
|
||||
<w>fstrs</w>
|
||||
<w>fsum</w>
|
||||
<w>ftime</w>
|
||||
<w>ftmp</w>
|
||||
<w>ftplib</w>
|
||||
@ -935,6 +936,7 @@
|
||||
<w>getcwd</w>
|
||||
<w>getdata</w>
|
||||
<w>gethostbyname</w>
|
||||
<w>getifaddr</w>
|
||||
<w>getinputdevice</w>
|
||||
<w>getkillerplayer</w>
|
||||
<w>getlevel</w>
|
||||
@ -1018,6 +1020,7 @@
|
||||
<w>hattach</w>
|
||||
<w>hcalc</w>
|
||||
<w>hcfg</w>
|
||||
<w>hdiutil</w>
|
||||
<w>hdpi</w>
|
||||
<w>headercheckline</w>
|
||||
<w>headerregistry</w>
|
||||
@ -1308,6 +1311,7 @@
|
||||
<w>locktype</w>
|
||||
<w>locs</w>
|
||||
<w>logcat</w>
|
||||
<w>logincode</w>
|
||||
<w>logintoken</w>
|
||||
<w>logitech</w>
|
||||
<w>logput</w>
|
||||
@ -1338,6 +1342,7 @@
|
||||
<w>macbuild</w>
|
||||
<w>macmusicapp</w>
|
||||
<w>macos</w>
|
||||
<w>macpackage</w>
|
||||
<w>macpath</w>
|
||||
<w>mailcap</w>
|
||||
<w>mainmenu</w>
|
||||
@ -1365,6 +1370,7 @@
|
||||
<w>masktexstorename</w>
|
||||
<w>masterhash</w>
|
||||
<w>masterver</w>
|
||||
<w>mastervers</w>
|
||||
<w>mathmodule</w>
|
||||
<w>mathnode</w>
|
||||
<w>mathutils</w>
|
||||
@ -1546,7 +1552,10 @@
|
||||
<w>nosyncfiles</w>
|
||||
<w>nosynctool</w>
|
||||
<w>nosynctools</w>
|
||||
<w>notarytool</w>
|
||||
<w>notdir</w>
|
||||
<w>notorize</w>
|
||||
<w>notorized</w>
|
||||
<w>nowtickets</w>
|
||||
<w>npos</w>
|
||||
<w>nprocessors</w>
|
||||
@ -1843,6 +1852,7 @@
|
||||
<w>pvval</w>
|
||||
<w>pybee</w>
|
||||
<w>pybuild</w>
|
||||
<w>pybuildapple</w>
|
||||
<w>pycache</w>
|
||||
<w>pycharm's</w>
|
||||
<w>pycharmbin</w>
|
||||
@ -1888,6 +1898,7 @@
|
||||
<w>pyver</w>
|
||||
<w>qrcode</w>
|
||||
<w>qrencode</w>
|
||||
<w>qroffs</w>
|
||||
<w>qual</w>
|
||||
<w>qualname</w>
|
||||
<w>quoprimime</w>
|
||||
@ -2083,6 +2094,7 @@
|
||||
<w>sharedctypes</w>
|
||||
<w>sharedobj</w>
|
||||
<w>sharedobjs</w>
|
||||
<w>shasum</w>
|
||||
<w>shellapi</w>
|
||||
<w>shiftdelay</w>
|
||||
<w>shiftposition</w>
|
||||
@ -2160,6 +2172,7 @@
|
||||
<w>srcattr</w>
|
||||
<w>srcdata</w>
|
||||
<w>srcdir</w>
|
||||
<w>srcfolder</w>
|
||||
<w>srcjson</w>
|
||||
<w>srcnode</w>
|
||||
<w>srcpath</w>
|
||||
@ -2440,6 +2453,8 @@
|
||||
<w>uadfc</w>
|
||||
<w>uber</w>
|
||||
<w>ucrtbased</w>
|
||||
<w>udbz</w>
|
||||
<w>udif</w>
|
||||
<w>ugrade</w>
|
||||
<w>uibounds</w>
|
||||
<w>uicleanup</w>
|
||||
@ -2602,6 +2617,7 @@
|
||||
<w>xcodebuild</w>
|
||||
<w>xcpretty</w>
|
||||
<w>xcprojpath</w>
|
||||
<w>xcrun</w>
|
||||
<w>xcscheme</w>
|
||||
<w>xcsettings</w>
|
||||
<w>xcworkspacedata</w>
|
||||
|
||||
@ -1,5 +1,9 @@
|
||||
### 1.6.7 (20394)
|
||||
### 1.6.7 (20435)
|
||||
- Fixed a vulnerability which could expose device-account uuids.
|
||||
- Now generating Linux Arm64 server and test builds (currently built against Ubuntu 20).
|
||||
- Mac test builds are now Universal binaries (Arm64 & x86-64 versions bundled together).
|
||||
- Mac test builds are now notarized and distributed via a snazzy .dmg instead of a zip file, so the OS should no longer try to prevent you from running them.
|
||||
- Now, when pushing new builds to https://files.ballistica.net/bombsquad/builds , corresponding checksums are written to a different server and can be accessed via https://tools.ballistica.net/checksums
|
||||
|
||||
### 1.6.6 (20394)
|
||||
- Beginning work on moving to new asset system.
|
||||
|
||||
4
Makefile
4
Makefile
@ -897,8 +897,8 @@ clion-staging: assets-cmake resources meta
|
||||
# if using this on other platforms.
|
||||
CPUS = $(shell getconf _NPROCESSORS_ONLN || echo 8)
|
||||
PROJ_DIR = ${abspath ${CURDIR}}
|
||||
VERSION = $(shell tools/pcommand version_utils version)
|
||||
BUILD_NUMBER = $(shell tools/pcommand version_utils build)
|
||||
VERSION = $(shell tools/pcommand version version)
|
||||
BUILD_NUMBER = $(shell tools/pcommand version build)
|
||||
BUILD_DIR = ${PROJ_DIR}/build
|
||||
LAZYBUILDDIR = .cache/lazybuild
|
||||
STAGE_ASSETS = ${PROJ_DIR}/tools/pcommand stage_assets
|
||||
|
||||
@ -340,10 +340,12 @@
|
||||
"ba_data/python/bastd/ui/account/__pycache__/link.cpython-39.opt-1.pyc",
|
||||
"ba_data/python/bastd/ui/account/__pycache__/settings.cpython-39.opt-1.pyc",
|
||||
"ba_data/python/bastd/ui/account/__pycache__/unlink.cpython-39.opt-1.pyc",
|
||||
"ba_data/python/bastd/ui/account/__pycache__/v2.cpython-39.opt-1.pyc",
|
||||
"ba_data/python/bastd/ui/account/__pycache__/viewer.cpython-39.opt-1.pyc",
|
||||
"ba_data/python/bastd/ui/account/link.py",
|
||||
"ba_data/python/bastd/ui/account/settings.py",
|
||||
"ba_data/python/bastd/ui/account/unlink.py",
|
||||
"ba_data/python/bastd/ui/account/v2.py",
|
||||
"ba_data/python/bastd/ui/account/viewer.py",
|
||||
"ba_data/python/bastd/ui/achievements.py",
|
||||
"ba_data/python/bastd/ui/appinvite.py",
|
||||
|
||||
@ -279,6 +279,7 @@ SCRIPT_TARGETS_PY_PUBLIC = \
|
||||
build/ba_data/python/bastd/ui/account/link.py \
|
||||
build/ba_data/python/bastd/ui/account/settings.py \
|
||||
build/ba_data/python/bastd/ui/account/unlink.py \
|
||||
build/ba_data/python/bastd/ui/account/v2.py \
|
||||
build/ba_data/python/bastd/ui/account/viewer.py \
|
||||
build/ba_data/python/bastd/ui/achievements.py \
|
||||
build/ba_data/python/bastd/ui/appinvite.py \
|
||||
@ -525,6 +526,7 @@ SCRIPT_TARGETS_PYC_PUBLIC = \
|
||||
build/ba_data/python/bastd/ui/account/__pycache__/link.cpython-39.opt-1.pyc \
|
||||
build/ba_data/python/bastd/ui/account/__pycache__/settings.cpython-39.opt-1.pyc \
|
||||
build/ba_data/python/bastd/ui/account/__pycache__/unlink.cpython-39.opt-1.pyc \
|
||||
build/ba_data/python/bastd/ui/account/__pycache__/v2.cpython-39.opt-1.pyc \
|
||||
build/ba_data/python/bastd/ui/account/__pycache__/viewer.cpython-39.opt-1.pyc \
|
||||
build/ba_data/python/bastd/ui/__pycache__/achievements.cpython-39.opt-1.pyc \
|
||||
build/ba_data/python/bastd/ui/__pycache__/appinvite.cpython-39.opt-1.pyc \
|
||||
|
||||
@ -2170,8 +2170,11 @@ def get_low_level_config_value(key: str, default_value: int) -> int:
|
||||
return int()
|
||||
|
||||
|
||||
def get_master_server_address(source: int = -1, version: int = 1) -> str:
|
||||
"""get_master_server_address(source: int = -1, version: int = 1) -> str
|
||||
def get_master_server_address(source: int = -1,
|
||||
version: int = 1,
|
||||
internal: bool = False) -> str:
|
||||
"""get_master_server_address(source: int = -1, version: int = 1,
|
||||
internal: bool = False) -> str
|
||||
|
||||
(internal)
|
||||
|
||||
@ -2392,6 +2395,14 @@ def get_ui_input_device() -> ba.InputDevice:
|
||||
return ba.InputDevice()
|
||||
|
||||
|
||||
def get_v2_fleet() -> str:
|
||||
"""get_v2_fleet() -> str
|
||||
|
||||
(internal)
|
||||
"""
|
||||
return str()
|
||||
|
||||
|
||||
# Show that our return type varies based on "doraise" value:
|
||||
@overload
|
||||
def getactivity(doraise: Literal[True] = True) -> ba.Activity:
|
||||
|
||||
@ -348,7 +348,7 @@ class App:
|
||||
|
||||
# Debugging - make note if we're using the local test server so we
|
||||
# don't accidentally leave it on in a release.
|
||||
# FIXME - should move this to the native layer.
|
||||
# FIXME - should move these sort of warnings to the C++ layer.
|
||||
server_addr = _ba.get_master_server_address()
|
||||
if 'localhost' in server_addr:
|
||||
_ba.timer(2.0,
|
||||
@ -391,6 +391,8 @@ class App:
|
||||
|
||||
# from ba._dependency import test_depset
|
||||
# test_depset()
|
||||
if bool(False):
|
||||
self._test_https()
|
||||
|
||||
def on_app_pause(self) -> None:
|
||||
"""Called when the app goes to a suspended state."""
|
||||
@ -584,6 +586,8 @@ class App:
|
||||
try:
|
||||
with urllib.request.urlopen('https://example.com') as url:
|
||||
val = url.read()
|
||||
_ba.screenmessage('HTTPS SUCCESS!')
|
||||
print('HTTPS TEST SUCCESS', len(val))
|
||||
except Exception as exc:
|
||||
_ba.screenmessage('HTTPS FAIL.')
|
||||
print('HTTPS TEST FAIL:', exc)
|
||||
|
||||
@ -364,7 +364,8 @@ class CoopSession(Session):
|
||||
raise RuntimeError('FIXME')
|
||||
else:
|
||||
if results.scoretype is not ScoreType.POINTS:
|
||||
print(f'Unknown ScoreType:' f' "{results.scoretype}"')
|
||||
print(f'Unknown ScoreType:'
|
||||
f' "{results.scoretype}"')
|
||||
scoretype = 'points'
|
||||
|
||||
# Old coop-game-specific results; should migrate away from these.
|
||||
|
||||
@ -111,14 +111,15 @@ class MasterServerCallThread(threading.Thread):
|
||||
if self._request_type == 'get':
|
||||
response = urllib.request.urlopen(
|
||||
urllib.request.Request(
|
||||
(_ba.get_master_server_address() + '/' +
|
||||
(_ba.get_master_server_address(internal=True) + '/' +
|
||||
self._request + '?' + parse.urlencode(self._data)),
|
||||
None, {'User-Agent': _ba.app.user_agent_string}),
|
||||
timeout=DEFAULT_REQUEST_TIMEOUT_SECONDS)
|
||||
elif self._request_type == 'post':
|
||||
response = urllib.request.urlopen(
|
||||
urllib.request.Request(
|
||||
_ba.get_master_server_address() + '/' + self._request,
|
||||
_ba.get_master_server_address(internal=True) + '/' +
|
||||
self._request,
|
||||
parse.urlencode(self._data).encode(),
|
||||
{'User-Agent': _ba.app.user_agent_string}),
|
||||
timeout=DEFAULT_REQUEST_TIMEOUT_SECONDS)
|
||||
|
||||
@ -10,17 +10,17 @@ import ba
|
||||
|
||||
def show_sign_in_prompt(account_type: str = None) -> None:
|
||||
"""Bring up a prompt telling the user they must sign in."""
|
||||
from bastd.ui import confirm
|
||||
from bastd.ui.confirm import ConfirmWindow
|
||||
from bastd.ui.account import settings
|
||||
if account_type == 'Google Play':
|
||||
confirm.ConfirmWindow(
|
||||
ConfirmWindow(
|
||||
ba.Lstr(resource='notSignedInGooglePlayErrorText'),
|
||||
lambda: _ba.sign_in('Google Play'),
|
||||
ok_text=ba.Lstr(resource='accountSettingsWindow.signInText'),
|
||||
width=460,
|
||||
height=130)
|
||||
else:
|
||||
confirm.ConfirmWindow(
|
||||
ConfirmWindow(
|
||||
ba.Lstr(resource='notSignedInErrorText'),
|
||||
lambda: settings.AccountSettingsWindow(modal=True,
|
||||
close_once_signed_in=True),
|
||||
|
||||
@ -25,6 +25,10 @@ class AccountSettingsWindow(ba.Window):
|
||||
close_once_signed_in: bool = False):
|
||||
# pylint: disable=too-many-statements
|
||||
|
||||
self._sign_in_game_circle_button: Optional[ba.Widget] = None
|
||||
self._sign_in_v2_button: Optional[ba.Widget] = None
|
||||
self._sign_in_device_button: Optional[ba.Widget] = None
|
||||
|
||||
self._close_once_signed_in = close_once_signed_in
|
||||
ba.set_analytics_screen('Account Window')
|
||||
|
||||
@ -86,6 +90,10 @@ class AccountSettingsWindow(ba.Window):
|
||||
# exceptions.
|
||||
self._show_sign_in_buttons.append('Local')
|
||||
|
||||
# Ditto with shiny new V2 ones.
|
||||
if bool(False):
|
||||
self._show_sign_in_buttons.append('V2')
|
||||
|
||||
top_extra = 15 if uiscale is ba.UIScale.SMALL else 0
|
||||
super().__init__(root_widget=ba.containerwidget(
|
||||
size=(self._width, self._height + top_extra),
|
||||
@ -206,12 +214,10 @@ class AccountSettingsWindow(ba.Window):
|
||||
show_game_circle_sign_in_button = (account_state == 'signed_out'
|
||||
and 'Game Circle'
|
||||
in self._show_sign_in_buttons)
|
||||
show_ali_sign_in_button = (account_state == 'signed_out'
|
||||
and 'Ali' in self._show_sign_in_buttons)
|
||||
show_test_sign_in_button = (account_state == 'signed_out'
|
||||
and 'Test' in self._show_sign_in_buttons)
|
||||
show_device_sign_in_button = (account_state == 'signed_out' and 'Local'
|
||||
in self._show_sign_in_buttons)
|
||||
show_v2_sign_in_button = (account_state == 'signed_out'
|
||||
and 'V2' in self._show_sign_in_buttons)
|
||||
sign_in_button_space = 70.0
|
||||
|
||||
show_game_service_button = (self._signed_in and account_type
|
||||
@ -223,9 +229,9 @@ class AccountSettingsWindow(ba.Window):
|
||||
'allowAccountLinking2', False))
|
||||
linked_accounts_text_space = 60.0
|
||||
|
||||
show_achievements_button = (self._signed_in and account_type
|
||||
in ('Google Play', 'Alibaba', 'Local',
|
||||
'OUYA', 'Test'))
|
||||
show_achievements_button = (
|
||||
self._signed_in
|
||||
and account_type in ('Google Play', 'Alibaba', 'Local', 'OUYA'))
|
||||
achievements_button_space = 60.0
|
||||
|
||||
show_achievements_text = (self._signed_in
|
||||
@ -255,8 +261,8 @@ class AccountSettingsWindow(ba.Window):
|
||||
show_unlink_accounts_button = show_link_accounts_button
|
||||
unlink_accounts_button_space = 90.0
|
||||
|
||||
show_sign_out_button = (self._signed_in and account_type
|
||||
in ['Test', 'Local', 'Google Play'])
|
||||
show_sign_out_button = (self._signed_in
|
||||
and account_type in ['Local', 'Google Play'])
|
||||
sign_out_button_space = 70.0
|
||||
|
||||
if self._subcontainer is not None:
|
||||
@ -272,12 +278,10 @@ class AccountSettingsWindow(ba.Window):
|
||||
self._sub_height += sign_in_button_space
|
||||
if show_game_circle_sign_in_button:
|
||||
self._sub_height += sign_in_button_space
|
||||
if show_ali_sign_in_button:
|
||||
self._sub_height += sign_in_button_space
|
||||
if show_test_sign_in_button:
|
||||
self._sub_height += sign_in_button_space
|
||||
if show_device_sign_in_button:
|
||||
self._sub_height += sign_in_button_space
|
||||
if show_v2_sign_in_button:
|
||||
self._sub_height += sign_in_button_space
|
||||
if show_game_service_button:
|
||||
self._sub_height += game_service_button_space
|
||||
if show_linked_accounts_text:
|
||||
@ -462,21 +466,42 @@ class AccountSettingsWindow(ba.Window):
|
||||
ba.widget(edit=btn, show_buffer_bottom=40, show_buffer_top=100)
|
||||
self._sign_in_text = None
|
||||
|
||||
if show_ali_sign_in_button:
|
||||
if show_v2_sign_in_button:
|
||||
button_width = 350
|
||||
v -= sign_in_button_space
|
||||
self._sign_in_ali_button = btn = ba.buttonwidget(
|
||||
self._sign_in_v2_button = btn = ba.buttonwidget(
|
||||
parent=self._subcontainer,
|
||||
position=((self._sub_width - button_width) * 0.5, v - 20),
|
||||
autoselect=True,
|
||||
size=(button_width, 60),
|
||||
label=ba.Lstr(value='${A}${B}',
|
||||
subs=[('${A}',
|
||||
ba.charstr(ba.SpecialChar.ALIBABA_LOGO)),
|
||||
('${B}',
|
||||
ba.Lstr(resource=self._r + '.signInText'))
|
||||
]),
|
||||
on_activate_call=lambda: self._sign_in_press('Ali'))
|
||||
label='',
|
||||
on_activate_call=self._v2_sign_in_press)
|
||||
ba.textwidget(
|
||||
parent=self._subcontainer,
|
||||
draw_controller=btn,
|
||||
h_align='center',
|
||||
v_align='center',
|
||||
size=(0, 0),
|
||||
position=(self._sub_width * 0.5, v + 17),
|
||||
text=ba.Lstr(
|
||||
value='${A}${B}',
|
||||
subs=[('${A}', ba.charstr(ba.SpecialChar.V2_LOGO)),
|
||||
('${B}',
|
||||
ba.Lstr(resource=self._r + '.signInWithV2Text'))]),
|
||||
maxwidth=button_width * 0.8,
|
||||
color=(0.75, 1.0, 0.7))
|
||||
ba.textwidget(parent=self._subcontainer,
|
||||
draw_controller=btn,
|
||||
h_align='center',
|
||||
v_align='center',
|
||||
size=(0, 0),
|
||||
position=(self._sub_width * 0.5, v - 4),
|
||||
text=ba.Lstr(resource=self._r +
|
||||
'.signInWithV2InfoText'),
|
||||
flatness=1.0,
|
||||
scale=0.57,
|
||||
maxwidth=button_width * 0.9,
|
||||
color=(0.55, 0.8, 0.5))
|
||||
if first_selectable is None:
|
||||
first_selectable = btn
|
||||
if ba.app.ui.use_toolbars:
|
||||
@ -532,53 +557,6 @@ class AccountSettingsWindow(ba.Window):
|
||||
ba.widget(edit=btn, show_buffer_bottom=40, show_buffer_top=100)
|
||||
self._sign_in_text = None
|
||||
|
||||
# Old test-account option.
|
||||
if show_test_sign_in_button:
|
||||
button_width = 350
|
||||
v -= sign_in_button_space
|
||||
self._sign_in_test_button = btn = ba.buttonwidget(
|
||||
parent=self._subcontainer,
|
||||
position=((self._sub_width - button_width) * 0.5, v - 20),
|
||||
autoselect=True,
|
||||
size=(button_width, 60),
|
||||
label='',
|
||||
on_activate_call=lambda: self._sign_in_press('Test'))
|
||||
ba.textwidget(parent=self._subcontainer,
|
||||
draw_controller=btn,
|
||||
h_align='center',
|
||||
v_align='center',
|
||||
size=(0, 0),
|
||||
position=(self._sub_width * 0.5, v + 17),
|
||||
text=ba.Lstr(
|
||||
value='${A}${B}',
|
||||
subs=[('${A}',
|
||||
ba.charstr(ba.SpecialChar.TEST_ACCOUNT)),
|
||||
('${B}',
|
||||
ba.Lstr(resource=self._r +
|
||||
'.signInWithTestAccountText'))]),
|
||||
maxwidth=button_width * 0.8,
|
||||
color=(0.75, 1.0, 0.7))
|
||||
ba.textwidget(parent=self._subcontainer,
|
||||
draw_controller=btn,
|
||||
h_align='center',
|
||||
v_align='center',
|
||||
size=(0, 0),
|
||||
position=(self._sub_width * 0.5, v - 4),
|
||||
text=ba.Lstr(resource=self._r +
|
||||
'.signInWithTestAccountInfoText'),
|
||||
flatness=1.0,
|
||||
scale=0.57,
|
||||
maxwidth=button_width * 0.9,
|
||||
color=(0.55, 0.8, 0.5))
|
||||
if first_selectable is None:
|
||||
first_selectable = btn
|
||||
if ba.app.ui.use_toolbars:
|
||||
ba.widget(edit=btn,
|
||||
right_widget=_ba.get_special_widget('party_button'))
|
||||
ba.widget(edit=btn, left_widget=bbtn)
|
||||
ba.widget(edit=btn, show_buffer_bottom=40, show_buffer_top=100)
|
||||
self._sign_in_text = None
|
||||
|
||||
if show_player_profiles_button:
|
||||
button_width = 300
|
||||
v -= player_profiles_button_space
|
||||
@ -1051,6 +1029,12 @@ class AccountSettingsWindow(ba.Window):
|
||||
self._needs_refresh = True
|
||||
ba.timer(0.1, ba.WeakCall(self._update), timetype=ba.TimeType.REAL)
|
||||
|
||||
def _v2_sign_in_press(self) -> None:
|
||||
# pylint: disable=cyclic-import
|
||||
from bastd.ui.account.v2 import V2SignInWindow
|
||||
assert self._sign_in_v2_button is not None
|
||||
V2SignInWindow(origin_widget=self._sign_in_v2_button)
|
||||
|
||||
def _reset_progress(self) -> None:
|
||||
try:
|
||||
from ba.internal import getcampaign
|
||||
|
||||
92
assets/src/ba_data/python/bastd/ui/account/v2.py
Normal file
92
assets/src/ba_data/python/bastd/ui/account/v2.py
Normal file
@ -0,0 +1,92 @@
|
||||
# Released under the MIT License. See LICENSE for details.
|
||||
#
|
||||
"""V2 account ui bits."""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
from typing import TYPE_CHECKING
|
||||
|
||||
import ba
|
||||
import _ba
|
||||
|
||||
if TYPE_CHECKING:
|
||||
from typing import Any, Optional
|
||||
|
||||
|
||||
class V2SignInWindow(ba.Window):
|
||||
"""A window allowing signing in to a v2 account."""
|
||||
|
||||
def __init__(self, origin_widget: ba.Widget):
|
||||
from ba.internal import is_browser_likely_available
|
||||
logincode = '1412345'
|
||||
address = (
|
||||
f'{_ba.get_master_server_address(version=2)}?login={logincode}')
|
||||
self._width = 600
|
||||
self._height = 500
|
||||
uiscale = ba.app.ui.uiscale
|
||||
super().__init__(root_widget=ba.containerwidget(
|
||||
size=(self._width, self._height),
|
||||
transition='in_scale',
|
||||
scale_origin_stack_offset=origin_widget.get_screen_space_center(),
|
||||
scale=(1.25 if uiscale is ba.UIScale.SMALL else
|
||||
1.0 if uiscale is ba.UIScale.MEDIUM else 0.85)))
|
||||
|
||||
ba.textwidget(
|
||||
parent=self._root_widget,
|
||||
position=(self._width * 0.5, self._height - 85),
|
||||
size=(0, 0),
|
||||
text=ba.Lstr(
|
||||
resource='accountSettingsWindow.v2LinkInstructionsText'),
|
||||
color=ba.app.ui.title_color,
|
||||
maxwidth=self._width * 0.9,
|
||||
h_align='center',
|
||||
v_align='center')
|
||||
button_width = 450
|
||||
if is_browser_likely_available():
|
||||
ba.buttonwidget(parent=self._root_widget,
|
||||
position=((self._width * 0.5 - button_width * 0.5),
|
||||
self._height - 175),
|
||||
autoselect=True,
|
||||
size=(button_width, 60),
|
||||
label=ba.Lstr(value=address),
|
||||
color=(0.55, 0.5, 0.6),
|
||||
textcolor=(0.75, 0.7, 0.8),
|
||||
on_activate_call=lambda: ba.open_url(address))
|
||||
qroffs = 0.0
|
||||
else:
|
||||
ba.textwidget(parent=self._root_widget,
|
||||
position=(self._width * 0.5, self._height - 135),
|
||||
size=(0, 0),
|
||||
text=ba.Lstr(value=address),
|
||||
flatness=1.0,
|
||||
maxwidth=self._width,
|
||||
scale=0.75,
|
||||
h_align='center',
|
||||
v_align='center')
|
||||
qroffs = 20.0
|
||||
|
||||
self._cancel_button = ba.buttonwidget(
|
||||
parent=self._root_widget,
|
||||
position=(30, self._height - 55),
|
||||
size=(130, 50),
|
||||
scale=0.8,
|
||||
label=ba.Lstr(resource='cancelText'),
|
||||
# color=(0.6, 0.5, 0.6),
|
||||
on_activate_call=self._done,
|
||||
autoselect=True,
|
||||
textcolor=(0.75, 0.7, 0.8),
|
||||
# icon=ba.gettexture('crossOut'),
|
||||
# iconscale=1.2
|
||||
)
|
||||
ba.containerwidget(edit=self._root_widget,
|
||||
cancel_button=self._cancel_button)
|
||||
|
||||
qr_size = 270
|
||||
ba.imagewidget(parent=self._root_widget,
|
||||
position=(self._width * 0.5 - qr_size * 0.5,
|
||||
self._height * 0.34 + qroffs - qr_size * 0.5),
|
||||
size=(qr_size, qr_size),
|
||||
texture=_ba.get_qrcode_texture(address))
|
||||
|
||||
def _done(self) -> None:
|
||||
ba.containerwidget(edit=self._root_widget, transition='out_scale')
|
||||
16
ballisticacore-cmake/.idea/dictionaries/ericf.xml
generated
16
ballisticacore-cmake/.idea/dictionaries/ericf.xml
generated
@ -409,6 +409,7 @@
|
||||
<w>fromini</w>
|
||||
<w>frompos</w>
|
||||
<w>frontmost</w>
|
||||
<w>fsum</w>
|
||||
<w>ftos</w>
|
||||
<w>ftou</w>
|
||||
<w>fullpath</w>
|
||||
@ -437,6 +438,7 @@
|
||||
<w>getcollidemodel</w>
|
||||
<w>getdata</w>
|
||||
<w>gethostbyname</w>
|
||||
<w>getifaddr</w>
|
||||
<w>getifaddrs</w>
|
||||
<w>getinputdevice</w>
|
||||
<w>getline</w>
|
||||
@ -482,6 +484,7 @@
|
||||
<w>haveint</w>
|
||||
<w>havn't</w>
|
||||
<w>havnt</w>
|
||||
<w>hdiutil</w>
|
||||
<w>healthcare</w>
|
||||
<w>hexval</w>
|
||||
<w>highp</w>
|
||||
@ -599,6 +602,7 @@
|
||||
<w>lockpath</w>
|
||||
<w>lockstr</w>
|
||||
<w>locktype</w>
|
||||
<w>logincode</w>
|
||||
<w>logmsg</w>
|
||||
<w>logpath</w>
|
||||
<w>logprefix</w>
|
||||
@ -627,6 +631,7 @@
|
||||
<w>macmusicappsetvolume</w>
|
||||
<w>macmusicappstop</w>
|
||||
<w>macos</w>
|
||||
<w>macpackage</w>
|
||||
<w>magoogan</w>
|
||||
<w>magua</w>
|
||||
<w>mainmenu</w>
|
||||
@ -639,6 +644,7 @@
|
||||
<w>maskhigh</w>
|
||||
<w>maskuv</w>
|
||||
<w>masterver</w>
|
||||
<w>mastervers</w>
|
||||
<w>maximus</w>
|
||||
<w>maxtries</w>
|
||||
<w>maxwidth</w>
|
||||
@ -728,7 +734,10 @@
|
||||
<w>noninteractively</w>
|
||||
<w>nonlint</w>
|
||||
<w>noone</w>
|
||||
<w>notarytool</w>
|
||||
<w>nothin</w>
|
||||
<w>notorize</w>
|
||||
<w>notorized</w>
|
||||
<w>nowtickets</w>
|
||||
<w>nptr</w>
|
||||
<w>nsize</w>
|
||||
@ -868,6 +877,7 @@
|
||||
<w>pver</w>
|
||||
<w>pverraw</w>
|
||||
<w>pvrtc</w>
|
||||
<w>pybuildapple</w>
|
||||
<w>pycommand</w>
|
||||
<w>pyconfig</w>
|
||||
<w>pycontext</w>
|
||||
@ -883,6 +893,7 @@
|
||||
<w>qrel</w>
|
||||
<w>qrencode</w>
|
||||
<w>qrinput</w>
|
||||
<w>qroffs</w>
|
||||
<w>qrspec</w>
|
||||
<w>quadtreespace</w>
|
||||
<w>qual</w>
|
||||
@ -990,6 +1001,7 @@
|
||||
<w>setsockopt</w>
|
||||
<w>sgis</w>
|
||||
<w>sharedobj</w>
|
||||
<w>shasum</w>
|
||||
<w>shhh</w>
|
||||
<w>shifthigh</w>
|
||||
<w>shouldnt</w>
|
||||
@ -1017,6 +1029,7 @@
|
||||
<w>spinup</w>
|
||||
<w>spivak</w>
|
||||
<w>srcattr</w>
|
||||
<w>srcfolder</w>
|
||||
<w>srcpath</w>
|
||||
<w>srcsz</w>
|
||||
<w>sresult</w>
|
||||
@ -1138,6 +1151,8 @@
|
||||
<w>typestr</w>
|
||||
<w>tzpath</w>
|
||||
<w>uber</w>
|
||||
<w>udbz</w>
|
||||
<w>udif</w>
|
||||
<w>uibounds</w>
|
||||
<w>uiid</w>
|
||||
<w>unblessed</w>
|
||||
@ -1221,6 +1236,7 @@
|
||||
<w>wunused</w>
|
||||
<w>wvmpth</w>
|
||||
<w>xclamped</w>
|
||||
<w>xcrun</w>
|
||||
<w>xdiff</w>
|
||||
<w>xdist</w>
|
||||
<w>xinput</w>
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
<!-- THIS FILE IS AUTO GENERATED; DO NOT EDIT BY HAND -->
|
||||
<h4><em>last updated on 2022-01-25 for Ballistica version 1.6.7 build 20427</em></h4>
|
||||
<h4><em>last updated on 2022-02-01 for Ballistica version 1.6.7 build 20436</em></h4>
|
||||
<p>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 <a href="mailto:support@froemling.net">let me know</a>. Happy modding!</p>
|
||||
<hr>
|
||||
@ -5633,6 +5633,7 @@ of the session.</p>
|
||||
<li>FLAG_PHILIPPINES</li>
|
||||
<li>FLAG_CHILE</li>
|
||||
<li>MIKIROG</li>
|
||||
<li>V2_LOGO</li>
|
||||
</ul>
|
||||
<hr>
|
||||
<h2><strong><a name="class_ba_StandLocation">ba.StandLocation</a></strong></h3>
|
||||
|
||||
@ -21,7 +21,7 @@
|
||||
namespace ballistica {
|
||||
|
||||
// These are set automatically via script; don't modify them here.
|
||||
const int kAppBuildNumber = 20427;
|
||||
const int kAppBuildNumber = 20436;
|
||||
const char* kAppVersion = "1.6.7";
|
||||
|
||||
// Our standalone globals.
|
||||
|
||||
@ -398,6 +398,7 @@ enum class SpecialChar {
|
||||
kFlagPhilippines,
|
||||
kFlagChile,
|
||||
kMikirog,
|
||||
kV2Logo,
|
||||
kLast // Sentinel
|
||||
};
|
||||
|
||||
|
||||
@ -224,6 +224,7 @@ void Game::InitSpecialChars() {
|
||||
special_char_strings_[SpecialChar::kFlagChile] = "\xee\x81\xA1";
|
||||
|
||||
special_char_strings_[SpecialChar::kMikirog] = "\xee\x81\xA2";
|
||||
special_char_strings_[SpecialChar::kV2Logo] = "\xee\x81\xA3";
|
||||
}
|
||||
|
||||
void Game::SetGameRoster(cJSON* r) {
|
||||
|
||||
@ -63,7 +63,7 @@ TextGraphics::TextGraphics() {
|
||||
}
|
||||
|
||||
// Same with the logo and all the icons on sheets 3 and 4.
|
||||
if (index == 30 || (index >= 50 && index < 100)) {
|
||||
if (index == 30 || (index >= 50 && index < 99)) {
|
||||
// A few are *extra* big
|
||||
if (index == 67 || index == 65 || index == 70 || index == 72
|
||||
|| index == 73 || index == 75 || index == 76 || index == 78
|
||||
@ -80,6 +80,13 @@ TextGraphics::TextGraphics() {
|
||||
g.y_size *= 0.55f;
|
||||
}
|
||||
}
|
||||
// Special case for v2 logo.
|
||||
if (index == 99) {
|
||||
g.pen_offset_y += 0.25f;
|
||||
extra_advance += 0.12f;
|
||||
g.x_size *= 0.75f;
|
||||
g.y_size *= 0.75f;
|
||||
}
|
||||
g.advance = g.x_size - 0.09f + extra_advance;
|
||||
|
||||
// Ticket overlay should be big and shouldn't advance us at all.
|
||||
|
||||
@ -31,20 +31,20 @@ class PipRequirement:
|
||||
# Note: we look directly for modules when possible instead of just pip
|
||||
# entries; this accounts for manual installations or other nonstandard setups.
|
||||
PIP_REQUIREMENTS = [
|
||||
PipRequirement(modulename='pylint', minversion=[2, 12, 1]),
|
||||
PipRequirement(modulename='mypy', minversion=[0, 930]),
|
||||
PipRequirement(modulename='yapf', minversion=[0, 31, 0]),
|
||||
PipRequirement(modulename='pylint', minversion=[2, 12, 2]),
|
||||
PipRequirement(modulename='mypy', minversion=[0, 931]),
|
||||
PipRequirement(modulename='yapf', minversion=[0, 32, 0]),
|
||||
PipRequirement(modulename='cpplint', minversion=[1, 5, 5]),
|
||||
PipRequirement(modulename='pytest', minversion=[6, 2, 4]),
|
||||
PipRequirement(modulename='pytest', minversion=[6, 2, 5]),
|
||||
PipRequirement(modulename='pytz'),
|
||||
PipRequirement(modulename='ansiwrap'),
|
||||
PipRequirement(modulename='yaml', pipname='PyYAML'),
|
||||
PipRequirement(modulename='requests'),
|
||||
PipRequirement(pipname='typing_extensions', minversion=[4, 0, 0]),
|
||||
PipRequirement(pipname='types-filelock', minversion=[0, 1, 5]),
|
||||
PipRequirement(pipname='types-requests', minversion=[2, 25, 6]),
|
||||
PipRequirement(pipname='types-pytz', minversion=[2021, 1, 2]),
|
||||
PipRequirement(pipname='types-PyYAML', minversion=[5, 4, 6]),
|
||||
PipRequirement(pipname='typing_extensions', minversion=[4, 0, 1]),
|
||||
PipRequirement(pipname='types-filelock', minversion=[3, 2, 5]),
|
||||
PipRequirement(pipname='types-requests', minversion=[2, 27, 7]),
|
||||
PipRequirement(pipname='types-pytz', minversion=[2021, 3, 4]),
|
||||
PipRequirement(pipname='types-PyYAML', minversion=[6, 0, 3]),
|
||||
]
|
||||
|
||||
# Parts of full-tests suite we only run on particular days.
|
||||
@ -178,7 +178,7 @@ def lazybuild(target: str, category: SourceCategory, command: str) -> None:
|
||||
'Makefile', 'tools/batoolsinternal/meta.py',
|
||||
'tools/batoolsinternal/pcommand.py', 'tools/batools/meta.py',
|
||||
'tools/batools/pcommand.py', 'src/meta',
|
||||
'tools/batools/pythonenumsmodule.py'
|
||||
'tools/batools/pythonenumsmodule.py', 'src/ballistica/core/types.h'
|
||||
]
|
||||
|
||||
# Everything possibly affecting asset builds.
|
||||
@ -398,6 +398,10 @@ def gen_fulltest_buildfile_apple() -> None:
|
||||
# noinspection PyListCreation
|
||||
lines = []
|
||||
|
||||
# pybuildapple = 'tools/pcommand python_build_apple'
|
||||
pybuildapple = ('tools/cloudshell --env tools fromini -- '
|
||||
'tools/pcommand python_build_apple')
|
||||
|
||||
# iOS stuff
|
||||
lines.append('make ios-build')
|
||||
lines.append('make ios-new-build')
|
||||
@ -406,9 +410,9 @@ def gen_fulltest_buildfile_apple() -> None:
|
||||
extras = [e for e in extras if e.startswith('ios.')]
|
||||
for extra in extras:
|
||||
if extra == 'ios.pylibs':
|
||||
lines.append('tools/pcommand python_build_apple ios')
|
||||
lines.append(f'{pybuildapple} ios')
|
||||
elif extra == 'ios.pylibs.debug':
|
||||
lines.append('tools/pcommand python_build_apple_debug ios')
|
||||
lines.append(f'{pybuildapple}_debug ios')
|
||||
else:
|
||||
raise RuntimeError(f'Unknown extra: {extra}')
|
||||
|
||||
@ -419,9 +423,9 @@ def gen_fulltest_buildfile_apple() -> None:
|
||||
extras = [e for e in extras if e.startswith('tvos.')]
|
||||
for extra in extras:
|
||||
if extra == 'tvos.pylibs':
|
||||
lines.append('tools/pcommand python_build_apple tvos')
|
||||
lines.append(f'{pybuildapple} tvos')
|
||||
elif extra == 'tvos.pylibs.debug':
|
||||
lines.append('tools/pcommand python_build_apple_debug tvos')
|
||||
lines.append(f'{pybuildapple}_debug tvos')
|
||||
else:
|
||||
raise RuntimeError(f'Unknown extra: {extra}')
|
||||
|
||||
@ -439,13 +443,13 @@ def gen_fulltest_buildfile_apple() -> None:
|
||||
if extra == 'mac.package':
|
||||
lines.append('make mac-package')
|
||||
elif extra == 'mac.package.server.x86_64':
|
||||
lines.append('make mac-cloud-server-package-x86-64')
|
||||
lines.append('make mac-server-package-x86-64')
|
||||
elif extra == 'mac.package.server.arm64':
|
||||
lines.append('make mac-cloud-server-package-arm64')
|
||||
lines.append('make mac-server-package-arm64')
|
||||
elif extra == 'mac.pylibs':
|
||||
lines.append('tools/pcommand python_build_apple mac')
|
||||
lines.append(f'{pybuildapple} mac')
|
||||
elif extra == 'mac.pylibs.debug':
|
||||
lines.append('tools/pcommand python_build_apple_debug mac')
|
||||
lines.append(f'{pybuildapple}_debug mac')
|
||||
else:
|
||||
raise RuntimeError(f'Unknown extra: {extra}')
|
||||
|
||||
|
||||
@ -171,9 +171,8 @@ def lazy_increment_build() -> None:
|
||||
if not update_hash_only:
|
||||
# Just go ahead and bless; this will increment the build as needed.
|
||||
# subprocess.run(['make', 'bless'], check=True)
|
||||
subprocess.run(
|
||||
['tools/pcommand', 'version_utils', 'incrementbuild'],
|
||||
check=True)
|
||||
subprocess.run(['tools/pcommand', 'version', 'incrementbuild'],
|
||||
check=True)
|
||||
|
||||
# We probably just changed code, so we need to re-calc the hash.
|
||||
codehash = get_files_hash(codefiles)
|
||||
@ -187,7 +186,7 @@ def get_master_asset_src_dir() -> None:
|
||||
import subprocess
|
||||
import os
|
||||
|
||||
master_assets_dir = '/Users/ericf/Dropbox/ballisticacore_master_assets'
|
||||
master_assets_dir = '/Users/ericf/Documents/ballisticacore_master_assets'
|
||||
dummy_dir = '/__DUMMY_MASTER_SRC_DISABLED_PATH__'
|
||||
|
||||
# Only apply this on my setup
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user