mirror of
https://github.com/RYDE-WORK/ballistica.git
synced 2026-02-07 16:13:23 +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>fstab</w>
|
||||||
<w>fstat</w>
|
<w>fstat</w>
|
||||||
<w>fstrs</w>
|
<w>fstrs</w>
|
||||||
|
<w>fsum</w>
|
||||||
<w>ftime</w>
|
<w>ftime</w>
|
||||||
<w>ftmp</w>
|
<w>ftmp</w>
|
||||||
<w>ftplib</w>
|
<w>ftplib</w>
|
||||||
@ -935,6 +936,7 @@
|
|||||||
<w>getcwd</w>
|
<w>getcwd</w>
|
||||||
<w>getdata</w>
|
<w>getdata</w>
|
||||||
<w>gethostbyname</w>
|
<w>gethostbyname</w>
|
||||||
|
<w>getifaddr</w>
|
||||||
<w>getinputdevice</w>
|
<w>getinputdevice</w>
|
||||||
<w>getkillerplayer</w>
|
<w>getkillerplayer</w>
|
||||||
<w>getlevel</w>
|
<w>getlevel</w>
|
||||||
@ -1018,6 +1020,7 @@
|
|||||||
<w>hattach</w>
|
<w>hattach</w>
|
||||||
<w>hcalc</w>
|
<w>hcalc</w>
|
||||||
<w>hcfg</w>
|
<w>hcfg</w>
|
||||||
|
<w>hdiutil</w>
|
||||||
<w>hdpi</w>
|
<w>hdpi</w>
|
||||||
<w>headercheckline</w>
|
<w>headercheckline</w>
|
||||||
<w>headerregistry</w>
|
<w>headerregistry</w>
|
||||||
@ -1308,6 +1311,7 @@
|
|||||||
<w>locktype</w>
|
<w>locktype</w>
|
||||||
<w>locs</w>
|
<w>locs</w>
|
||||||
<w>logcat</w>
|
<w>logcat</w>
|
||||||
|
<w>logincode</w>
|
||||||
<w>logintoken</w>
|
<w>logintoken</w>
|
||||||
<w>logitech</w>
|
<w>logitech</w>
|
||||||
<w>logput</w>
|
<w>logput</w>
|
||||||
@ -1338,6 +1342,7 @@
|
|||||||
<w>macbuild</w>
|
<w>macbuild</w>
|
||||||
<w>macmusicapp</w>
|
<w>macmusicapp</w>
|
||||||
<w>macos</w>
|
<w>macos</w>
|
||||||
|
<w>macpackage</w>
|
||||||
<w>macpath</w>
|
<w>macpath</w>
|
||||||
<w>mailcap</w>
|
<w>mailcap</w>
|
||||||
<w>mainmenu</w>
|
<w>mainmenu</w>
|
||||||
@ -1365,6 +1370,7 @@
|
|||||||
<w>masktexstorename</w>
|
<w>masktexstorename</w>
|
||||||
<w>masterhash</w>
|
<w>masterhash</w>
|
||||||
<w>masterver</w>
|
<w>masterver</w>
|
||||||
|
<w>mastervers</w>
|
||||||
<w>mathmodule</w>
|
<w>mathmodule</w>
|
||||||
<w>mathnode</w>
|
<w>mathnode</w>
|
||||||
<w>mathutils</w>
|
<w>mathutils</w>
|
||||||
@ -1546,7 +1552,10 @@
|
|||||||
<w>nosyncfiles</w>
|
<w>nosyncfiles</w>
|
||||||
<w>nosynctool</w>
|
<w>nosynctool</w>
|
||||||
<w>nosynctools</w>
|
<w>nosynctools</w>
|
||||||
|
<w>notarytool</w>
|
||||||
<w>notdir</w>
|
<w>notdir</w>
|
||||||
|
<w>notorize</w>
|
||||||
|
<w>notorized</w>
|
||||||
<w>nowtickets</w>
|
<w>nowtickets</w>
|
||||||
<w>npos</w>
|
<w>npos</w>
|
||||||
<w>nprocessors</w>
|
<w>nprocessors</w>
|
||||||
@ -1843,6 +1852,7 @@
|
|||||||
<w>pvval</w>
|
<w>pvval</w>
|
||||||
<w>pybee</w>
|
<w>pybee</w>
|
||||||
<w>pybuild</w>
|
<w>pybuild</w>
|
||||||
|
<w>pybuildapple</w>
|
||||||
<w>pycache</w>
|
<w>pycache</w>
|
||||||
<w>pycharm's</w>
|
<w>pycharm's</w>
|
||||||
<w>pycharmbin</w>
|
<w>pycharmbin</w>
|
||||||
@ -1888,6 +1898,7 @@
|
|||||||
<w>pyver</w>
|
<w>pyver</w>
|
||||||
<w>qrcode</w>
|
<w>qrcode</w>
|
||||||
<w>qrencode</w>
|
<w>qrencode</w>
|
||||||
|
<w>qroffs</w>
|
||||||
<w>qual</w>
|
<w>qual</w>
|
||||||
<w>qualname</w>
|
<w>qualname</w>
|
||||||
<w>quoprimime</w>
|
<w>quoprimime</w>
|
||||||
@ -2083,6 +2094,7 @@
|
|||||||
<w>sharedctypes</w>
|
<w>sharedctypes</w>
|
||||||
<w>sharedobj</w>
|
<w>sharedobj</w>
|
||||||
<w>sharedobjs</w>
|
<w>sharedobjs</w>
|
||||||
|
<w>shasum</w>
|
||||||
<w>shellapi</w>
|
<w>shellapi</w>
|
||||||
<w>shiftdelay</w>
|
<w>shiftdelay</w>
|
||||||
<w>shiftposition</w>
|
<w>shiftposition</w>
|
||||||
@ -2160,6 +2172,7 @@
|
|||||||
<w>srcattr</w>
|
<w>srcattr</w>
|
||||||
<w>srcdata</w>
|
<w>srcdata</w>
|
||||||
<w>srcdir</w>
|
<w>srcdir</w>
|
||||||
|
<w>srcfolder</w>
|
||||||
<w>srcjson</w>
|
<w>srcjson</w>
|
||||||
<w>srcnode</w>
|
<w>srcnode</w>
|
||||||
<w>srcpath</w>
|
<w>srcpath</w>
|
||||||
@ -2440,6 +2453,8 @@
|
|||||||
<w>uadfc</w>
|
<w>uadfc</w>
|
||||||
<w>uber</w>
|
<w>uber</w>
|
||||||
<w>ucrtbased</w>
|
<w>ucrtbased</w>
|
||||||
|
<w>udbz</w>
|
||||||
|
<w>udif</w>
|
||||||
<w>ugrade</w>
|
<w>ugrade</w>
|
||||||
<w>uibounds</w>
|
<w>uibounds</w>
|
||||||
<w>uicleanup</w>
|
<w>uicleanup</w>
|
||||||
@ -2602,6 +2617,7 @@
|
|||||||
<w>xcodebuild</w>
|
<w>xcodebuild</w>
|
||||||
<w>xcpretty</w>
|
<w>xcpretty</w>
|
||||||
<w>xcprojpath</w>
|
<w>xcprojpath</w>
|
||||||
|
<w>xcrun</w>
|
||||||
<w>xcscheme</w>
|
<w>xcscheme</w>
|
||||||
<w>xcsettings</w>
|
<w>xcsettings</w>
|
||||||
<w>xcworkspacedata</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.
|
- 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)
|
### 1.6.6 (20394)
|
||||||
- Beginning work on moving to new asset system.
|
- 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.
|
# if using this on other platforms.
|
||||||
CPUS = $(shell getconf _NPROCESSORS_ONLN || echo 8)
|
CPUS = $(shell getconf _NPROCESSORS_ONLN || echo 8)
|
||||||
PROJ_DIR = ${abspath ${CURDIR}}
|
PROJ_DIR = ${abspath ${CURDIR}}
|
||||||
VERSION = $(shell tools/pcommand version_utils version)
|
VERSION = $(shell tools/pcommand version version)
|
||||||
BUILD_NUMBER = $(shell tools/pcommand version_utils build)
|
BUILD_NUMBER = $(shell tools/pcommand version build)
|
||||||
BUILD_DIR = ${PROJ_DIR}/build
|
BUILD_DIR = ${PROJ_DIR}/build
|
||||||
LAZYBUILDDIR = .cache/lazybuild
|
LAZYBUILDDIR = .cache/lazybuild
|
||||||
STAGE_ASSETS = ${PROJ_DIR}/tools/pcommand stage_assets
|
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__/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__/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__/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/__pycache__/viewer.cpython-39.opt-1.pyc",
|
||||||
"ba_data/python/bastd/ui/account/link.py",
|
"ba_data/python/bastd/ui/account/link.py",
|
||||||
"ba_data/python/bastd/ui/account/settings.py",
|
"ba_data/python/bastd/ui/account/settings.py",
|
||||||
"ba_data/python/bastd/ui/account/unlink.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/account/viewer.py",
|
||||||
"ba_data/python/bastd/ui/achievements.py",
|
"ba_data/python/bastd/ui/achievements.py",
|
||||||
"ba_data/python/bastd/ui/appinvite.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/link.py \
|
||||||
build/ba_data/python/bastd/ui/account/settings.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/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/account/viewer.py \
|
||||||
build/ba_data/python/bastd/ui/achievements.py \
|
build/ba_data/python/bastd/ui/achievements.py \
|
||||||
build/ba_data/python/bastd/ui/appinvite.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__/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__/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__/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/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__/achievements.cpython-39.opt-1.pyc \
|
||||||
build/ba_data/python/bastd/ui/__pycache__/appinvite.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()
|
return int()
|
||||||
|
|
||||||
|
|
||||||
def get_master_server_address(source: int = -1, version: int = 1) -> str:
|
def get_master_server_address(source: int = -1,
|
||||||
"""get_master_server_address(source: int = -1, version: int = 1) -> str
|
version: int = 1,
|
||||||
|
internal: bool = False) -> str:
|
||||||
|
"""get_master_server_address(source: int = -1, version: int = 1,
|
||||||
|
internal: bool = False) -> str
|
||||||
|
|
||||||
(internal)
|
(internal)
|
||||||
|
|
||||||
@ -2392,6 +2395,14 @@ def get_ui_input_device() -> ba.InputDevice:
|
|||||||
return 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:
|
# Show that our return type varies based on "doraise" value:
|
||||||
@overload
|
@overload
|
||||||
def getactivity(doraise: Literal[True] = True) -> ba.Activity:
|
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
|
# Debugging - make note if we're using the local test server so we
|
||||||
# don't accidentally leave it on in a release.
|
# 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()
|
server_addr = _ba.get_master_server_address()
|
||||||
if 'localhost' in server_addr:
|
if 'localhost' in server_addr:
|
||||||
_ba.timer(2.0,
|
_ba.timer(2.0,
|
||||||
@ -391,6 +391,8 @@ class App:
|
|||||||
|
|
||||||
# from ba._dependency import test_depset
|
# from ba._dependency import test_depset
|
||||||
# test_depset()
|
# test_depset()
|
||||||
|
if bool(False):
|
||||||
|
self._test_https()
|
||||||
|
|
||||||
def on_app_pause(self) -> None:
|
def on_app_pause(self) -> None:
|
||||||
"""Called when the app goes to a suspended state."""
|
"""Called when the app goes to a suspended state."""
|
||||||
@ -584,6 +586,8 @@ class App:
|
|||||||
try:
|
try:
|
||||||
with urllib.request.urlopen('https://example.com') as url:
|
with urllib.request.urlopen('https://example.com') as url:
|
||||||
val = url.read()
|
val = url.read()
|
||||||
|
_ba.screenmessage('HTTPS SUCCESS!')
|
||||||
print('HTTPS TEST SUCCESS', len(val))
|
print('HTTPS TEST SUCCESS', len(val))
|
||||||
except Exception as exc:
|
except Exception as exc:
|
||||||
|
_ba.screenmessage('HTTPS FAIL.')
|
||||||
print('HTTPS TEST FAIL:', exc)
|
print('HTTPS TEST FAIL:', exc)
|
||||||
|
|||||||
@ -364,7 +364,8 @@ class CoopSession(Session):
|
|||||||
raise RuntimeError('FIXME')
|
raise RuntimeError('FIXME')
|
||||||
else:
|
else:
|
||||||
if results.scoretype is not ScoreType.POINTS:
|
if results.scoretype is not ScoreType.POINTS:
|
||||||
print(f'Unknown ScoreType:' f' "{results.scoretype}"')
|
print(f'Unknown ScoreType:'
|
||||||
|
f' "{results.scoretype}"')
|
||||||
scoretype = 'points'
|
scoretype = 'points'
|
||||||
|
|
||||||
# Old coop-game-specific results; should migrate away from these.
|
# Old coop-game-specific results; should migrate away from these.
|
||||||
|
|||||||
@ -111,14 +111,15 @@ class MasterServerCallThread(threading.Thread):
|
|||||||
if self._request_type == 'get':
|
if self._request_type == 'get':
|
||||||
response = urllib.request.urlopen(
|
response = urllib.request.urlopen(
|
||||||
urllib.request.Request(
|
urllib.request.Request(
|
||||||
(_ba.get_master_server_address() + '/' +
|
(_ba.get_master_server_address(internal=True) + '/' +
|
||||||
self._request + '?' + parse.urlencode(self._data)),
|
self._request + '?' + parse.urlencode(self._data)),
|
||||||
None, {'User-Agent': _ba.app.user_agent_string}),
|
None, {'User-Agent': _ba.app.user_agent_string}),
|
||||||
timeout=DEFAULT_REQUEST_TIMEOUT_SECONDS)
|
timeout=DEFAULT_REQUEST_TIMEOUT_SECONDS)
|
||||||
elif self._request_type == 'post':
|
elif self._request_type == 'post':
|
||||||
response = urllib.request.urlopen(
|
response = urllib.request.urlopen(
|
||||||
urllib.request.Request(
|
urllib.request.Request(
|
||||||
_ba.get_master_server_address() + '/' + self._request,
|
_ba.get_master_server_address(internal=True) + '/' +
|
||||||
|
self._request,
|
||||||
parse.urlencode(self._data).encode(),
|
parse.urlencode(self._data).encode(),
|
||||||
{'User-Agent': _ba.app.user_agent_string}),
|
{'User-Agent': _ba.app.user_agent_string}),
|
||||||
timeout=DEFAULT_REQUEST_TIMEOUT_SECONDS)
|
timeout=DEFAULT_REQUEST_TIMEOUT_SECONDS)
|
||||||
|
|||||||
@ -10,17 +10,17 @@ import ba
|
|||||||
|
|
||||||
def show_sign_in_prompt(account_type: str = None) -> None:
|
def show_sign_in_prompt(account_type: str = None) -> None:
|
||||||
"""Bring up a prompt telling the user they must sign in."""
|
"""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
|
from bastd.ui.account import settings
|
||||||
if account_type == 'Google Play':
|
if account_type == 'Google Play':
|
||||||
confirm.ConfirmWindow(
|
ConfirmWindow(
|
||||||
ba.Lstr(resource='notSignedInGooglePlayErrorText'),
|
ba.Lstr(resource='notSignedInGooglePlayErrorText'),
|
||||||
lambda: _ba.sign_in('Google Play'),
|
lambda: _ba.sign_in('Google Play'),
|
||||||
ok_text=ba.Lstr(resource='accountSettingsWindow.signInText'),
|
ok_text=ba.Lstr(resource='accountSettingsWindow.signInText'),
|
||||||
width=460,
|
width=460,
|
||||||
height=130)
|
height=130)
|
||||||
else:
|
else:
|
||||||
confirm.ConfirmWindow(
|
ConfirmWindow(
|
||||||
ba.Lstr(resource='notSignedInErrorText'),
|
ba.Lstr(resource='notSignedInErrorText'),
|
||||||
lambda: settings.AccountSettingsWindow(modal=True,
|
lambda: settings.AccountSettingsWindow(modal=True,
|
||||||
close_once_signed_in=True),
|
close_once_signed_in=True),
|
||||||
|
|||||||
@ -25,6 +25,10 @@ class AccountSettingsWindow(ba.Window):
|
|||||||
close_once_signed_in: bool = False):
|
close_once_signed_in: bool = False):
|
||||||
# pylint: disable=too-many-statements
|
# 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
|
self._close_once_signed_in = close_once_signed_in
|
||||||
ba.set_analytics_screen('Account Window')
|
ba.set_analytics_screen('Account Window')
|
||||||
|
|
||||||
@ -86,6 +90,10 @@ class AccountSettingsWindow(ba.Window):
|
|||||||
# exceptions.
|
# exceptions.
|
||||||
self._show_sign_in_buttons.append('Local')
|
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
|
top_extra = 15 if uiscale is ba.UIScale.SMALL else 0
|
||||||
super().__init__(root_widget=ba.containerwidget(
|
super().__init__(root_widget=ba.containerwidget(
|
||||||
size=(self._width, self._height + top_extra),
|
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'
|
show_game_circle_sign_in_button = (account_state == 'signed_out'
|
||||||
and 'Game Circle'
|
and 'Game Circle'
|
||||||
in self._show_sign_in_buttons)
|
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'
|
show_device_sign_in_button = (account_state == 'signed_out' and 'Local'
|
||||||
in self._show_sign_in_buttons)
|
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
|
sign_in_button_space = 70.0
|
||||||
|
|
||||||
show_game_service_button = (self._signed_in and account_type
|
show_game_service_button = (self._signed_in and account_type
|
||||||
@ -223,9 +229,9 @@ class AccountSettingsWindow(ba.Window):
|
|||||||
'allowAccountLinking2', False))
|
'allowAccountLinking2', False))
|
||||||
linked_accounts_text_space = 60.0
|
linked_accounts_text_space = 60.0
|
||||||
|
|
||||||
show_achievements_button = (self._signed_in and account_type
|
show_achievements_button = (
|
||||||
in ('Google Play', 'Alibaba', 'Local',
|
self._signed_in
|
||||||
'OUYA', 'Test'))
|
and account_type in ('Google Play', 'Alibaba', 'Local', 'OUYA'))
|
||||||
achievements_button_space = 60.0
|
achievements_button_space = 60.0
|
||||||
|
|
||||||
show_achievements_text = (self._signed_in
|
show_achievements_text = (self._signed_in
|
||||||
@ -255,8 +261,8 @@ class AccountSettingsWindow(ba.Window):
|
|||||||
show_unlink_accounts_button = show_link_accounts_button
|
show_unlink_accounts_button = show_link_accounts_button
|
||||||
unlink_accounts_button_space = 90.0
|
unlink_accounts_button_space = 90.0
|
||||||
|
|
||||||
show_sign_out_button = (self._signed_in and account_type
|
show_sign_out_button = (self._signed_in
|
||||||
in ['Test', 'Local', 'Google Play'])
|
and account_type in ['Local', 'Google Play'])
|
||||||
sign_out_button_space = 70.0
|
sign_out_button_space = 70.0
|
||||||
|
|
||||||
if self._subcontainer is not None:
|
if self._subcontainer is not None:
|
||||||
@ -272,12 +278,10 @@ class AccountSettingsWindow(ba.Window):
|
|||||||
self._sub_height += sign_in_button_space
|
self._sub_height += sign_in_button_space
|
||||||
if show_game_circle_sign_in_button:
|
if show_game_circle_sign_in_button:
|
||||||
self._sub_height += sign_in_button_space
|
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:
|
if show_device_sign_in_button:
|
||||||
self._sub_height += sign_in_button_space
|
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:
|
if show_game_service_button:
|
||||||
self._sub_height += game_service_button_space
|
self._sub_height += game_service_button_space
|
||||||
if show_linked_accounts_text:
|
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)
|
ba.widget(edit=btn, show_buffer_bottom=40, show_buffer_top=100)
|
||||||
self._sign_in_text = None
|
self._sign_in_text = None
|
||||||
|
|
||||||
if show_ali_sign_in_button:
|
if show_v2_sign_in_button:
|
||||||
button_width = 350
|
button_width = 350
|
||||||
v -= sign_in_button_space
|
v -= sign_in_button_space
|
||||||
self._sign_in_ali_button = btn = ba.buttonwidget(
|
self._sign_in_v2_button = btn = ba.buttonwidget(
|
||||||
parent=self._subcontainer,
|
parent=self._subcontainer,
|
||||||
position=((self._sub_width - button_width) * 0.5, v - 20),
|
position=((self._sub_width - button_width) * 0.5, v - 20),
|
||||||
autoselect=True,
|
autoselect=True,
|
||||||
size=(button_width, 60),
|
size=(button_width, 60),
|
||||||
label=ba.Lstr(value='${A}${B}',
|
label='',
|
||||||
subs=[('${A}',
|
on_activate_call=self._v2_sign_in_press)
|
||||||
ba.charstr(ba.SpecialChar.ALIBABA_LOGO)),
|
ba.textwidget(
|
||||||
('${B}',
|
parent=self._subcontainer,
|
||||||
ba.Lstr(resource=self._r + '.signInText'))
|
draw_controller=btn,
|
||||||
]),
|
h_align='center',
|
||||||
on_activate_call=lambda: self._sign_in_press('Ali'))
|
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:
|
if first_selectable is None:
|
||||||
first_selectable = btn
|
first_selectable = btn
|
||||||
if ba.app.ui.use_toolbars:
|
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)
|
ba.widget(edit=btn, show_buffer_bottom=40, show_buffer_top=100)
|
||||||
self._sign_in_text = None
|
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:
|
if show_player_profiles_button:
|
||||||
button_width = 300
|
button_width = 300
|
||||||
v -= player_profiles_button_space
|
v -= player_profiles_button_space
|
||||||
@ -1051,6 +1029,12 @@ class AccountSettingsWindow(ba.Window):
|
|||||||
self._needs_refresh = True
|
self._needs_refresh = True
|
||||||
ba.timer(0.1, ba.WeakCall(self._update), timetype=ba.TimeType.REAL)
|
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:
|
def _reset_progress(self) -> None:
|
||||||
try:
|
try:
|
||||||
from ba.internal import getcampaign
|
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>fromini</w>
|
||||||
<w>frompos</w>
|
<w>frompos</w>
|
||||||
<w>frontmost</w>
|
<w>frontmost</w>
|
||||||
|
<w>fsum</w>
|
||||||
<w>ftos</w>
|
<w>ftos</w>
|
||||||
<w>ftou</w>
|
<w>ftou</w>
|
||||||
<w>fullpath</w>
|
<w>fullpath</w>
|
||||||
@ -437,6 +438,7 @@
|
|||||||
<w>getcollidemodel</w>
|
<w>getcollidemodel</w>
|
||||||
<w>getdata</w>
|
<w>getdata</w>
|
||||||
<w>gethostbyname</w>
|
<w>gethostbyname</w>
|
||||||
|
<w>getifaddr</w>
|
||||||
<w>getifaddrs</w>
|
<w>getifaddrs</w>
|
||||||
<w>getinputdevice</w>
|
<w>getinputdevice</w>
|
||||||
<w>getline</w>
|
<w>getline</w>
|
||||||
@ -482,6 +484,7 @@
|
|||||||
<w>haveint</w>
|
<w>haveint</w>
|
||||||
<w>havn't</w>
|
<w>havn't</w>
|
||||||
<w>havnt</w>
|
<w>havnt</w>
|
||||||
|
<w>hdiutil</w>
|
||||||
<w>healthcare</w>
|
<w>healthcare</w>
|
||||||
<w>hexval</w>
|
<w>hexval</w>
|
||||||
<w>highp</w>
|
<w>highp</w>
|
||||||
@ -599,6 +602,7 @@
|
|||||||
<w>lockpath</w>
|
<w>lockpath</w>
|
||||||
<w>lockstr</w>
|
<w>lockstr</w>
|
||||||
<w>locktype</w>
|
<w>locktype</w>
|
||||||
|
<w>logincode</w>
|
||||||
<w>logmsg</w>
|
<w>logmsg</w>
|
||||||
<w>logpath</w>
|
<w>logpath</w>
|
||||||
<w>logprefix</w>
|
<w>logprefix</w>
|
||||||
@ -627,6 +631,7 @@
|
|||||||
<w>macmusicappsetvolume</w>
|
<w>macmusicappsetvolume</w>
|
||||||
<w>macmusicappstop</w>
|
<w>macmusicappstop</w>
|
||||||
<w>macos</w>
|
<w>macos</w>
|
||||||
|
<w>macpackage</w>
|
||||||
<w>magoogan</w>
|
<w>magoogan</w>
|
||||||
<w>magua</w>
|
<w>magua</w>
|
||||||
<w>mainmenu</w>
|
<w>mainmenu</w>
|
||||||
@ -639,6 +644,7 @@
|
|||||||
<w>maskhigh</w>
|
<w>maskhigh</w>
|
||||||
<w>maskuv</w>
|
<w>maskuv</w>
|
||||||
<w>masterver</w>
|
<w>masterver</w>
|
||||||
|
<w>mastervers</w>
|
||||||
<w>maximus</w>
|
<w>maximus</w>
|
||||||
<w>maxtries</w>
|
<w>maxtries</w>
|
||||||
<w>maxwidth</w>
|
<w>maxwidth</w>
|
||||||
@ -728,7 +734,10 @@
|
|||||||
<w>noninteractively</w>
|
<w>noninteractively</w>
|
||||||
<w>nonlint</w>
|
<w>nonlint</w>
|
||||||
<w>noone</w>
|
<w>noone</w>
|
||||||
|
<w>notarytool</w>
|
||||||
<w>nothin</w>
|
<w>nothin</w>
|
||||||
|
<w>notorize</w>
|
||||||
|
<w>notorized</w>
|
||||||
<w>nowtickets</w>
|
<w>nowtickets</w>
|
||||||
<w>nptr</w>
|
<w>nptr</w>
|
||||||
<w>nsize</w>
|
<w>nsize</w>
|
||||||
@ -868,6 +877,7 @@
|
|||||||
<w>pver</w>
|
<w>pver</w>
|
||||||
<w>pverraw</w>
|
<w>pverraw</w>
|
||||||
<w>pvrtc</w>
|
<w>pvrtc</w>
|
||||||
|
<w>pybuildapple</w>
|
||||||
<w>pycommand</w>
|
<w>pycommand</w>
|
||||||
<w>pyconfig</w>
|
<w>pyconfig</w>
|
||||||
<w>pycontext</w>
|
<w>pycontext</w>
|
||||||
@ -883,6 +893,7 @@
|
|||||||
<w>qrel</w>
|
<w>qrel</w>
|
||||||
<w>qrencode</w>
|
<w>qrencode</w>
|
||||||
<w>qrinput</w>
|
<w>qrinput</w>
|
||||||
|
<w>qroffs</w>
|
||||||
<w>qrspec</w>
|
<w>qrspec</w>
|
||||||
<w>quadtreespace</w>
|
<w>quadtreespace</w>
|
||||||
<w>qual</w>
|
<w>qual</w>
|
||||||
@ -990,6 +1001,7 @@
|
|||||||
<w>setsockopt</w>
|
<w>setsockopt</w>
|
||||||
<w>sgis</w>
|
<w>sgis</w>
|
||||||
<w>sharedobj</w>
|
<w>sharedobj</w>
|
||||||
|
<w>shasum</w>
|
||||||
<w>shhh</w>
|
<w>shhh</w>
|
||||||
<w>shifthigh</w>
|
<w>shifthigh</w>
|
||||||
<w>shouldnt</w>
|
<w>shouldnt</w>
|
||||||
@ -1017,6 +1029,7 @@
|
|||||||
<w>spinup</w>
|
<w>spinup</w>
|
||||||
<w>spivak</w>
|
<w>spivak</w>
|
||||||
<w>srcattr</w>
|
<w>srcattr</w>
|
||||||
|
<w>srcfolder</w>
|
||||||
<w>srcpath</w>
|
<w>srcpath</w>
|
||||||
<w>srcsz</w>
|
<w>srcsz</w>
|
||||||
<w>sresult</w>
|
<w>sresult</w>
|
||||||
@ -1138,6 +1151,8 @@
|
|||||||
<w>typestr</w>
|
<w>typestr</w>
|
||||||
<w>tzpath</w>
|
<w>tzpath</w>
|
||||||
<w>uber</w>
|
<w>uber</w>
|
||||||
|
<w>udbz</w>
|
||||||
|
<w>udif</w>
|
||||||
<w>uibounds</w>
|
<w>uibounds</w>
|
||||||
<w>uiid</w>
|
<w>uiid</w>
|
||||||
<w>unblessed</w>
|
<w>unblessed</w>
|
||||||
@ -1221,6 +1236,7 @@
|
|||||||
<w>wunused</w>
|
<w>wunused</w>
|
||||||
<w>wvmpth</w>
|
<w>wvmpth</w>
|
||||||
<w>xclamped</w>
|
<w>xclamped</w>
|
||||||
|
<w>xcrun</w>
|
||||||
<w>xdiff</w>
|
<w>xdiff</w>
|
||||||
<w>xdist</w>
|
<w>xdist</w>
|
||||||
<w>xinput</w>
|
<w>xinput</w>
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
<!-- THIS FILE IS AUTO GENERATED; DO NOT EDIT BY HAND -->
|
<!-- 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,
|
<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>
|
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>
|
<hr>
|
||||||
@ -5633,6 +5633,7 @@ of the session.</p>
|
|||||||
<li>FLAG_PHILIPPINES</li>
|
<li>FLAG_PHILIPPINES</li>
|
||||||
<li>FLAG_CHILE</li>
|
<li>FLAG_CHILE</li>
|
||||||
<li>MIKIROG</li>
|
<li>MIKIROG</li>
|
||||||
|
<li>V2_LOGO</li>
|
||||||
</ul>
|
</ul>
|
||||||
<hr>
|
<hr>
|
||||||
<h2><strong><a name="class_ba_StandLocation">ba.StandLocation</a></strong></h3>
|
<h2><strong><a name="class_ba_StandLocation">ba.StandLocation</a></strong></h3>
|
||||||
|
|||||||
@ -21,7 +21,7 @@
|
|||||||
namespace ballistica {
|
namespace ballistica {
|
||||||
|
|
||||||
// These are set automatically via script; don't modify them here.
|
// 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";
|
const char* kAppVersion = "1.6.7";
|
||||||
|
|
||||||
// Our standalone globals.
|
// Our standalone globals.
|
||||||
|
|||||||
@ -398,6 +398,7 @@ enum class SpecialChar {
|
|||||||
kFlagPhilippines,
|
kFlagPhilippines,
|
||||||
kFlagChile,
|
kFlagChile,
|
||||||
kMikirog,
|
kMikirog,
|
||||||
|
kV2Logo,
|
||||||
kLast // Sentinel
|
kLast // Sentinel
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@ -224,6 +224,7 @@ void Game::InitSpecialChars() {
|
|||||||
special_char_strings_[SpecialChar::kFlagChile] = "\xee\x81\xA1";
|
special_char_strings_[SpecialChar::kFlagChile] = "\xee\x81\xA1";
|
||||||
|
|
||||||
special_char_strings_[SpecialChar::kMikirog] = "\xee\x81\xA2";
|
special_char_strings_[SpecialChar::kMikirog] = "\xee\x81\xA2";
|
||||||
|
special_char_strings_[SpecialChar::kV2Logo] = "\xee\x81\xA3";
|
||||||
}
|
}
|
||||||
|
|
||||||
void Game::SetGameRoster(cJSON* r) {
|
void Game::SetGameRoster(cJSON* r) {
|
||||||
|
|||||||
@ -63,7 +63,7 @@ TextGraphics::TextGraphics() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Same with the logo and all the icons on sheets 3 and 4.
|
// 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
|
// A few are *extra* big
|
||||||
if (index == 67 || index == 65 || index == 70 || index == 72
|
if (index == 67 || index == 65 || index == 70 || index == 72
|
||||||
|| index == 73 || index == 75 || index == 76 || index == 78
|
|| index == 73 || index == 75 || index == 76 || index == 78
|
||||||
@ -80,6 +80,13 @@ TextGraphics::TextGraphics() {
|
|||||||
g.y_size *= 0.55f;
|
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;
|
g.advance = g.x_size - 0.09f + extra_advance;
|
||||||
|
|
||||||
// Ticket overlay should be big and shouldn't advance us at all.
|
// 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
|
# Note: we look directly for modules when possible instead of just pip
|
||||||
# entries; this accounts for manual installations or other nonstandard setups.
|
# entries; this accounts for manual installations or other nonstandard setups.
|
||||||
PIP_REQUIREMENTS = [
|
PIP_REQUIREMENTS = [
|
||||||
PipRequirement(modulename='pylint', minversion=[2, 12, 1]),
|
PipRequirement(modulename='pylint', minversion=[2, 12, 2]),
|
||||||
PipRequirement(modulename='mypy', minversion=[0, 930]),
|
PipRequirement(modulename='mypy', minversion=[0, 931]),
|
||||||
PipRequirement(modulename='yapf', minversion=[0, 31, 0]),
|
PipRequirement(modulename='yapf', minversion=[0, 32, 0]),
|
||||||
PipRequirement(modulename='cpplint', minversion=[1, 5, 5]),
|
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='pytz'),
|
||||||
PipRequirement(modulename='ansiwrap'),
|
PipRequirement(modulename='ansiwrap'),
|
||||||
PipRequirement(modulename='yaml', pipname='PyYAML'),
|
PipRequirement(modulename='yaml', pipname='PyYAML'),
|
||||||
PipRequirement(modulename='requests'),
|
PipRequirement(modulename='requests'),
|
||||||
PipRequirement(pipname='typing_extensions', minversion=[4, 0, 0]),
|
PipRequirement(pipname='typing_extensions', minversion=[4, 0, 1]),
|
||||||
PipRequirement(pipname='types-filelock', minversion=[0, 1, 5]),
|
PipRequirement(pipname='types-filelock', minversion=[3, 2, 5]),
|
||||||
PipRequirement(pipname='types-requests', minversion=[2, 25, 6]),
|
PipRequirement(pipname='types-requests', minversion=[2, 27, 7]),
|
||||||
PipRequirement(pipname='types-pytz', minversion=[2021, 1, 2]),
|
PipRequirement(pipname='types-pytz', minversion=[2021, 3, 4]),
|
||||||
PipRequirement(pipname='types-PyYAML', minversion=[5, 4, 6]),
|
PipRequirement(pipname='types-PyYAML', minversion=[6, 0, 3]),
|
||||||
]
|
]
|
||||||
|
|
||||||
# Parts of full-tests suite we only run on particular days.
|
# 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',
|
'Makefile', 'tools/batoolsinternal/meta.py',
|
||||||
'tools/batoolsinternal/pcommand.py', 'tools/batools/meta.py',
|
'tools/batoolsinternal/pcommand.py', 'tools/batools/meta.py',
|
||||||
'tools/batools/pcommand.py', 'src/meta',
|
'tools/batools/pcommand.py', 'src/meta',
|
||||||
'tools/batools/pythonenumsmodule.py'
|
'tools/batools/pythonenumsmodule.py', 'src/ballistica/core/types.h'
|
||||||
]
|
]
|
||||||
|
|
||||||
# Everything possibly affecting asset builds.
|
# Everything possibly affecting asset builds.
|
||||||
@ -398,6 +398,10 @@ def gen_fulltest_buildfile_apple() -> None:
|
|||||||
# noinspection PyListCreation
|
# noinspection PyListCreation
|
||||||
lines = []
|
lines = []
|
||||||
|
|
||||||
|
# pybuildapple = 'tools/pcommand python_build_apple'
|
||||||
|
pybuildapple = ('tools/cloudshell --env tools fromini -- '
|
||||||
|
'tools/pcommand python_build_apple')
|
||||||
|
|
||||||
# iOS stuff
|
# iOS stuff
|
||||||
lines.append('make ios-build')
|
lines.append('make ios-build')
|
||||||
lines.append('make ios-new-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.')]
|
extras = [e for e in extras if e.startswith('ios.')]
|
||||||
for extra in extras:
|
for extra in extras:
|
||||||
if extra == 'ios.pylibs':
|
if extra == 'ios.pylibs':
|
||||||
lines.append('tools/pcommand python_build_apple ios')
|
lines.append(f'{pybuildapple} ios')
|
||||||
elif extra == 'ios.pylibs.debug':
|
elif extra == 'ios.pylibs.debug':
|
||||||
lines.append('tools/pcommand python_build_apple_debug ios')
|
lines.append(f'{pybuildapple}_debug ios')
|
||||||
else:
|
else:
|
||||||
raise RuntimeError(f'Unknown extra: {extra}')
|
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.')]
|
extras = [e for e in extras if e.startswith('tvos.')]
|
||||||
for extra in extras:
|
for extra in extras:
|
||||||
if extra == 'tvos.pylibs':
|
if extra == 'tvos.pylibs':
|
||||||
lines.append('tools/pcommand python_build_apple tvos')
|
lines.append(f'{pybuildapple} tvos')
|
||||||
elif extra == 'tvos.pylibs.debug':
|
elif extra == 'tvos.pylibs.debug':
|
||||||
lines.append('tools/pcommand python_build_apple_debug tvos')
|
lines.append(f'{pybuildapple}_debug tvos')
|
||||||
else:
|
else:
|
||||||
raise RuntimeError(f'Unknown extra: {extra}')
|
raise RuntimeError(f'Unknown extra: {extra}')
|
||||||
|
|
||||||
@ -439,13 +443,13 @@ def gen_fulltest_buildfile_apple() -> None:
|
|||||||
if extra == 'mac.package':
|
if extra == 'mac.package':
|
||||||
lines.append('make mac-package')
|
lines.append('make mac-package')
|
||||||
elif extra == 'mac.package.server.x86_64':
|
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':
|
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':
|
elif extra == 'mac.pylibs':
|
||||||
lines.append('tools/pcommand python_build_apple mac')
|
lines.append(f'{pybuildapple} mac')
|
||||||
elif extra == 'mac.pylibs.debug':
|
elif extra == 'mac.pylibs.debug':
|
||||||
lines.append('tools/pcommand python_build_apple_debug mac')
|
lines.append(f'{pybuildapple}_debug mac')
|
||||||
else:
|
else:
|
||||||
raise RuntimeError(f'Unknown extra: {extra}')
|
raise RuntimeError(f'Unknown extra: {extra}')
|
||||||
|
|
||||||
|
|||||||
@ -171,9 +171,8 @@ def lazy_increment_build() -> None:
|
|||||||
if not update_hash_only:
|
if not update_hash_only:
|
||||||
# Just go ahead and bless; this will increment the build as needed.
|
# Just go ahead and bless; this will increment the build as needed.
|
||||||
# subprocess.run(['make', 'bless'], check=True)
|
# subprocess.run(['make', 'bless'], check=True)
|
||||||
subprocess.run(
|
subprocess.run(['tools/pcommand', 'version', 'incrementbuild'],
|
||||||
['tools/pcommand', 'version_utils', 'incrementbuild'],
|
check=True)
|
||||||
check=True)
|
|
||||||
|
|
||||||
# We probably just changed code, so we need to re-calc the hash.
|
# We probably just changed code, so we need to re-calc the hash.
|
||||||
codehash = get_files_hash(codefiles)
|
codehash = get_files_hash(codefiles)
|
||||||
@ -187,7 +186,7 @@ def get_master_asset_src_dir() -> None:
|
|||||||
import subprocess
|
import subprocess
|
||||||
import os
|
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__'
|
dummy_dir = '/__DUMMY_MASTER_SRC_DISABLED_PATH__'
|
||||||
|
|
||||||
# Only apply this on my setup
|
# Only apply this on my setup
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user