cleaning up score screen names

This commit is contained in:
Eric Froemling 2020-04-15 00:52:54 -07:00
parent 71b77be103
commit b11bb26f51
46 changed files with 706 additions and 298 deletions

View File

@ -330,7 +330,9 @@
<w>cooldown</w> <w>cooldown</w>
<w>cooldowns</w> <w>cooldowns</w>
<w>coopgame</w> <w>coopgame</w>
<w>coopjoin</w>
<w>coopjoinscreen</w> <w>coopjoinscreen</w>
<w>coopscore</w>
<w>coopscorescreen</w> <w>coopscorescreen</w>
<w>coopsession</w> <w>coopsession</w>
<w>coords</w> <w>coords</w>
@ -447,6 +449,7 @@
<w>downmix</w> <w>downmix</w>
<w>dpad</w> <w>dpad</w>
<w>dpath</w> <w>dpath</w>
<w>drawscore</w>
<w>drawscreen</w> <w>drawscreen</w>
<w>dripity</w> <w>dripity</w>
<w>dropbox</w> <w>dropbox</w>
@ -469,7 +472,9 @@
<w>dstvar</w> <w>dstvar</w>
<w>dtest</w> <w>dtest</w>
<w>dtime</w> <w>dtime</w>
<w>dualteamscore</w>
<w>dualteamscorescreen</w> <w>dualteamscorescreen</w>
<w>dualteamsession</w>
<w>duckdns</w> <w>duckdns</w>
<w>dummymodule</w> <w>dummymodule</w>
<w>dummyname</w> <w>dummyname</w>
@ -637,6 +642,7 @@
<w>freefly</w> <w>freefly</w>
<w>freeforallendscreen</w> <w>freeforallendscreen</w>
<w>freeforallsession</w> <w>freeforallsession</w>
<w>freeforallvictory</w>
<w>freepik</w> <w>freepik</w>
<w>freesound</w> <w>freesound</w>
<w>froemling</w> <w>froemling</w>
@ -1088,7 +1094,11 @@
<w>multiline</w> <w>multiline</w>
<w>multiplayer</w> <w>multiplayer</w>
<w>multiteamendscreen</w> <w>multiteamendscreen</w>
<w>multiteamjoin</w>
<w>multiteamjoinscreen</w> <w>multiteamjoinscreen</w>
<w>multiteamscore</w>
<w>multiteamsession</w>
<w>multiteamvictory</w>
<w>multithreaded</w> <w>multithreaded</w>
<w>musicinfo</w> <w>musicinfo</w>
<w>musicinfos</w> <w>musicinfos</w>

View File

@ -16,6 +16,7 @@
"ba_data/python/ba/__pycache__/_coopgame.cpython-37.opt-1.pyc", "ba_data/python/ba/__pycache__/_coopgame.cpython-37.opt-1.pyc",
"ba_data/python/ba/__pycache__/_coopsession.cpython-37.opt-1.pyc", "ba_data/python/ba/__pycache__/_coopsession.cpython-37.opt-1.pyc",
"ba_data/python/ba/__pycache__/_dependency.cpython-37.opt-1.pyc", "ba_data/python/ba/__pycache__/_dependency.cpython-37.opt-1.pyc",
"ba_data/python/ba/__pycache__/_dualteamsession.cpython-37.opt-1.pyc",
"ba_data/python/ba/__pycache__/_enums.cpython-37.opt-1.pyc", "ba_data/python/ba/__pycache__/_enums.cpython-37.opt-1.pyc",
"ba_data/python/ba/__pycache__/_error.cpython-37.opt-1.pyc", "ba_data/python/ba/__pycache__/_error.cpython-37.opt-1.pyc",
"ba_data/python/ba/__pycache__/_freeforallsession.cpython-37.opt-1.pyc", "ba_data/python/ba/__pycache__/_freeforallsession.cpython-37.opt-1.pyc",
@ -33,6 +34,7 @@
"ba_data/python/ba/__pycache__/_messages.cpython-37.opt-1.pyc", "ba_data/python/ba/__pycache__/_messages.cpython-37.opt-1.pyc",
"ba_data/python/ba/__pycache__/_meta.cpython-37.opt-1.pyc", "ba_data/python/ba/__pycache__/_meta.cpython-37.opt-1.pyc",
"ba_data/python/ba/__pycache__/_modutils.cpython-37.opt-1.pyc", "ba_data/python/ba/__pycache__/_modutils.cpython-37.opt-1.pyc",
"ba_data/python/ba/__pycache__/_multiteamsession.cpython-37.opt-1.pyc",
"ba_data/python/ba/__pycache__/_music.cpython-37.opt-1.pyc", "ba_data/python/ba/__pycache__/_music.cpython-37.opt-1.pyc",
"ba_data/python/ba/__pycache__/_netutils.cpython-37.opt-1.pyc", "ba_data/python/ba/__pycache__/_netutils.cpython-37.opt-1.pyc",
"ba_data/python/ba/__pycache__/_nodeactor.cpython-37.opt-1.pyc", "ba_data/python/ba/__pycache__/_nodeactor.cpython-37.opt-1.pyc",
@ -44,9 +46,7 @@
"ba_data/python/ba/__pycache__/_stats.cpython-37.opt-1.pyc", "ba_data/python/ba/__pycache__/_stats.cpython-37.opt-1.pyc",
"ba_data/python/ba/__pycache__/_store.cpython-37.opt-1.pyc", "ba_data/python/ba/__pycache__/_store.cpython-37.opt-1.pyc",
"ba_data/python/ba/__pycache__/_team.cpython-37.opt-1.pyc", "ba_data/python/ba/__pycache__/_team.cpython-37.opt-1.pyc",
"ba_data/python/ba/__pycache__/_teambasesession.cpython-37.opt-1.pyc",
"ba_data/python/ba/__pycache__/_teamgame.cpython-37.opt-1.pyc", "ba_data/python/ba/__pycache__/_teamgame.cpython-37.opt-1.pyc",
"ba_data/python/ba/__pycache__/_teamssession.cpython-37.opt-1.pyc",
"ba_data/python/ba/__pycache__/_tips.cpython-37.opt-1.pyc", "ba_data/python/ba/__pycache__/_tips.cpython-37.opt-1.pyc",
"ba_data/python/ba/__pycache__/_tournament.cpython-37.opt-1.pyc", "ba_data/python/ba/__pycache__/_tournament.cpython-37.opt-1.pyc",
"ba_data/python/ba/__pycache__/deprecated.cpython-37.opt-1.pyc", "ba_data/python/ba/__pycache__/deprecated.cpython-37.opt-1.pyc",
@ -66,6 +66,7 @@
"ba_data/python/ba/_coopgame.py", "ba_data/python/ba/_coopgame.py",
"ba_data/python/ba/_coopsession.py", "ba_data/python/ba/_coopsession.py",
"ba_data/python/ba/_dependency.py", "ba_data/python/ba/_dependency.py",
"ba_data/python/ba/_dualteamsession.py",
"ba_data/python/ba/_enums.py", "ba_data/python/ba/_enums.py",
"ba_data/python/ba/_error.py", "ba_data/python/ba/_error.py",
"ba_data/python/ba/_freeforallsession.py", "ba_data/python/ba/_freeforallsession.py",
@ -83,6 +84,7 @@
"ba_data/python/ba/_messages.py", "ba_data/python/ba/_messages.py",
"ba_data/python/ba/_meta.py", "ba_data/python/ba/_meta.py",
"ba_data/python/ba/_modutils.py", "ba_data/python/ba/_modutils.py",
"ba_data/python/ba/_multiteamsession.py",
"ba_data/python/ba/_music.py", "ba_data/python/ba/_music.py",
"ba_data/python/ba/_netutils.py", "ba_data/python/ba/_netutils.py",
"ba_data/python/ba/_nodeactor.py", "ba_data/python/ba/_nodeactor.py",
@ -94,9 +96,7 @@
"ba_data/python/ba/_stats.py", "ba_data/python/ba/_stats.py",
"ba_data/python/ba/_store.py", "ba_data/python/ba/_store.py",
"ba_data/python/ba/_team.py", "ba_data/python/ba/_team.py",
"ba_data/python/ba/_teambasesession.py",
"ba_data/python/ba/_teamgame.py", "ba_data/python/ba/_teamgame.py",
"ba_data/python/ba/_teamssession.py",
"ba_data/python/ba/_tips.py", "ba_data/python/ba/_tips.py",
"ba_data/python/ba/_tournament.py", "ba_data/python/ba/_tournament.py",
"ba_data/python/ba/deprecated.py", "ba_data/python/ba/deprecated.py",
@ -118,22 +118,22 @@
"ba_data/python/bastd/__pycache__/tutorial.cpython-37.opt-1.pyc", "ba_data/python/bastd/__pycache__/tutorial.cpython-37.opt-1.pyc",
"ba_data/python/bastd/activity/__init__.py", "ba_data/python/bastd/activity/__init__.py",
"ba_data/python/bastd/activity/__pycache__/__init__.cpython-37.opt-1.pyc", "ba_data/python/bastd/activity/__pycache__/__init__.cpython-37.opt-1.pyc",
"ba_data/python/bastd/activity/__pycache__/coopjoinscreen.cpython-37.opt-1.pyc", "ba_data/python/bastd/activity/__pycache__/coopjoin.cpython-37.opt-1.pyc",
"ba_data/python/bastd/activity/__pycache__/coopscorescreen.cpython-37.opt-1.pyc", "ba_data/python/bastd/activity/__pycache__/coopscore.cpython-37.opt-1.pyc",
"ba_data/python/bastd/activity/__pycache__/drawscreen.cpython-37.opt-1.pyc", "ba_data/python/bastd/activity/__pycache__/drawscore.cpython-37.opt-1.pyc",
"ba_data/python/bastd/activity/__pycache__/dualteamscorescreen.cpython-37.opt-1.pyc", "ba_data/python/bastd/activity/__pycache__/dualteamscore.cpython-37.opt-1.pyc",
"ba_data/python/bastd/activity/__pycache__/freeforallendscreen.cpython-37.opt-1.pyc", "ba_data/python/bastd/activity/__pycache__/freeforallvictory.cpython-37.opt-1.pyc",
"ba_data/python/bastd/activity/__pycache__/multiteamendscreen.cpython-37.opt-1.pyc", "ba_data/python/bastd/activity/__pycache__/multiteamjoin.cpython-37.opt-1.pyc",
"ba_data/python/bastd/activity/__pycache__/multiteamjoinscreen.cpython-37.opt-1.pyc", "ba_data/python/bastd/activity/__pycache__/multiteamscore.cpython-37.opt-1.pyc",
"ba_data/python/bastd/activity/__pycache__/teamsscorescreen.cpython-37.opt-1.pyc", "ba_data/python/bastd/activity/__pycache__/multiteamvictory.cpython-37.opt-1.pyc",
"ba_data/python/bastd/activity/coopjoinscreen.py", "ba_data/python/bastd/activity/coopjoin.py",
"ba_data/python/bastd/activity/coopscorescreen.py", "ba_data/python/bastd/activity/coopscore.py",
"ba_data/python/bastd/activity/drawscreen.py", "ba_data/python/bastd/activity/drawscore.py",
"ba_data/python/bastd/activity/dualteamscorescreen.py", "ba_data/python/bastd/activity/dualteamscore.py",
"ba_data/python/bastd/activity/freeforallendscreen.py", "ba_data/python/bastd/activity/freeforallvictory.py",
"ba_data/python/bastd/activity/multiteamendscreen.py", "ba_data/python/bastd/activity/multiteamjoin.py",
"ba_data/python/bastd/activity/multiteamjoinscreen.py", "ba_data/python/bastd/activity/multiteamscore.py",
"ba_data/python/bastd/activity/teamsscorescreen.py", "ba_data/python/bastd/activity/multiteamvictory.py",
"ba_data/python/bastd/actor/__init__.py", "ba_data/python/bastd/actor/__init__.py",
"ba_data/python/bastd/actor/__pycache__/__init__.cpython-37.opt-1.pyc", "ba_data/python/bastd/actor/__pycache__/__init__.cpython-37.opt-1.pyc",
"ba_data/python/bastd/actor/__pycache__/background.cpython-37.opt-1.pyc", "ba_data/python/bastd/actor/__pycache__/background.cpython-37.opt-1.pyc",
@ -141,6 +141,7 @@
"ba_data/python/bastd/actor/__pycache__/controlsguide.cpython-37.opt-1.pyc", "ba_data/python/bastd/actor/__pycache__/controlsguide.cpython-37.opt-1.pyc",
"ba_data/python/bastd/actor/__pycache__/flag.cpython-37.opt-1.pyc", "ba_data/python/bastd/actor/__pycache__/flag.cpython-37.opt-1.pyc",
"ba_data/python/bastd/actor/__pycache__/image.cpython-37.opt-1.pyc", "ba_data/python/bastd/actor/__pycache__/image.cpython-37.opt-1.pyc",
"ba_data/python/bastd/actor/__pycache__/multiteamvictory.cpython-37.opt-1.pyc",
"ba_data/python/bastd/actor/__pycache__/onscreencountdown.cpython-37.opt-1.pyc", "ba_data/python/bastd/actor/__pycache__/onscreencountdown.cpython-37.opt-1.pyc",
"ba_data/python/bastd/actor/__pycache__/onscreentimer.cpython-37.opt-1.pyc", "ba_data/python/bastd/actor/__pycache__/onscreentimer.cpython-37.opt-1.pyc",
"ba_data/python/bastd/actor/__pycache__/playerspaz.cpython-37.opt-1.pyc", "ba_data/python/bastd/actor/__pycache__/playerspaz.cpython-37.opt-1.pyc",
@ -161,6 +162,7 @@
"ba_data/python/bastd/actor/controlsguide.py", "ba_data/python/bastd/actor/controlsguide.py",
"ba_data/python/bastd/actor/flag.py", "ba_data/python/bastd/actor/flag.py",
"ba_data/python/bastd/actor/image.py", "ba_data/python/bastd/actor/image.py",
"ba_data/python/bastd/actor/multiteamvictory.py",
"ba_data/python/bastd/actor/onscreencountdown.py", "ba_data/python/bastd/actor/onscreencountdown.py",
"ba_data/python/bastd/actor/onscreentimer.py", "ba_data/python/bastd/actor/onscreentimer.py",
"ba_data/python/bastd/actor/playerspaz.py", "ba_data/python/bastd/actor/playerspaz.py",

View File

@ -158,6 +158,7 @@ SCRIPT_TARGETS_PY_1 = \
build/ba_data/python/bacommon/__init__.py \ build/ba_data/python/bacommon/__init__.py \
build/ba_data/python/bacommon/assets.py \ build/ba_data/python/bacommon/assets.py \
build/ba_data/python/bacommon/err.py \ build/ba_data/python/bacommon/err.py \
build/ba_data/python/ba/_dualteamsession.py \
build/ba_data/python/ba/_gameactivity.py \ build/ba_data/python/ba/_gameactivity.py \
build/ba_data/python/ba/_apputils.py \ build/ba_data/python/ba/_apputils.py \
build/ba_data/python/ba/_coopsession.py \ build/ba_data/python/ba/_coopsession.py \
@ -172,7 +173,6 @@ SCRIPT_TARGETS_PY_1 = \
build/ba_data/python/ba/_error.py \ build/ba_data/python/ba/_error.py \
build/ba_data/python/ba/_achievement.py \ build/ba_data/python/ba/_achievement.py \
build/ba_data/python/ba/_map.py \ build/ba_data/python/ba/_map.py \
build/ba_data/python/ba/_teambasesession.py \
build/ba_data/python/ba/_gameutils.py \ build/ba_data/python/ba/_gameutils.py \
build/ba_data/python/ba/_activity.py \ build/ba_data/python/ba/_activity.py \
build/ba_data/python/ba/deprecated.py \ build/ba_data/python/ba/deprecated.py \
@ -190,10 +190,10 @@ SCRIPT_TARGETS_PY_1 = \
build/ba_data/python/ba/_benchmark.py \ build/ba_data/python/ba/_benchmark.py \
build/ba_data/python/ba/_tournament.py \ build/ba_data/python/ba/_tournament.py \
build/ba_data/python/ba/_messages.py \ build/ba_data/python/ba/_messages.py \
build/ba_data/python/ba/_teamssession.py \
build/ba_data/python/ba/_freeforallsession.py \ build/ba_data/python/ba/_freeforallsession.py \
build/ba_data/python/ba/_playlist.py \ build/ba_data/python/ba/_playlist.py \
build/ba_data/python/ba/_team.py \ build/ba_data/python/ba/_team.py \
build/ba_data/python/ba/_multiteamsession.py \
build/ba_data/python/ba/_actor.py \ build/ba_data/python/ba/_actor.py \
build/ba_data/python/ba/_powerup.py \ build/ba_data/python/ba/_powerup.py \
build/ba_data/python/ba/_campaign.py \ build/ba_data/python/ba/_campaign.py \
@ -310,15 +310,15 @@ SCRIPT_TARGETS_PY_1 = \
build/ba_data/python/bastd/ui/store/browser.py \ build/ba_data/python/bastd/ui/store/browser.py \
build/ba_data/python/bastd/ui/store/button.py \ build/ba_data/python/bastd/ui/store/button.py \
build/ba_data/python/bastd/ui/store/item.py \ build/ba_data/python/bastd/ui/store/item.py \
build/ba_data/python/bastd/activity/freeforallendscreen.py \ build/ba_data/python/bastd/activity/coopjoin.py \
build/ba_data/python/bastd/activity/multiteamvictory.py \
build/ba_data/python/bastd/activity/dualteamscore.py \
build/ba_data/python/bastd/activity/drawscore.py \
build/ba_data/python/bastd/activity/__init__.py \ build/ba_data/python/bastd/activity/__init__.py \
build/ba_data/python/bastd/activity/coopscorescreen.py \ build/ba_data/python/bastd/activity/freeforallvictory.py \
build/ba_data/python/bastd/activity/dualteamscorescreen.py \ build/ba_data/python/bastd/activity/coopscore.py \
build/ba_data/python/bastd/activity/coopjoinscreen.py \ build/ba_data/python/bastd/activity/multiteamjoin.py \
build/ba_data/python/bastd/activity/multiteamendscreen.py \ build/ba_data/python/bastd/activity/multiteamscore.py \
build/ba_data/python/bastd/activity/teamsscorescreen.py \
build/ba_data/python/bastd/activity/multiteamjoinscreen.py \
build/ba_data/python/bastd/activity/drawscreen.py \
build/ba_data/python/bastd/game/capturetheflag.py \ build/ba_data/python/bastd/game/capturetheflag.py \
build/ba_data/python/bastd/game/targetpractice.py \ build/ba_data/python/bastd/game/targetpractice.py \
build/ba_data/python/bastd/game/ninjafight.py \ build/ba_data/python/bastd/game/ninjafight.py \
@ -362,6 +362,7 @@ SCRIPT_TARGETS_PY_1 = \
build/ba_data/python/bastd/actor/flag.py \ build/ba_data/python/bastd/actor/flag.py \
build/ba_data/python/bastd/actor/scoreboard.py \ build/ba_data/python/bastd/actor/scoreboard.py \
build/ba_data/python/bastd/actor/popuptext.py \ build/ba_data/python/bastd/actor/popuptext.py \
build/ba_data/python/bastd/actor/multiteamvictory.py \
build/ba_data/python/bastd/actor/background.py \ build/ba_data/python/bastd/actor/background.py \
build/ba_data/python/bastd/actor/__init__.py \ build/ba_data/python/bastd/actor/__init__.py \
build/ba_data/python/bastd/actor/zoomtext.py \ build/ba_data/python/bastd/actor/zoomtext.py \
@ -396,6 +397,7 @@ SCRIPT_TARGETS_PYC_1 = \
build/ba_data/python/bacommon/__pycache__/__init__.cpython-37.opt-1.pyc \ build/ba_data/python/bacommon/__pycache__/__init__.cpython-37.opt-1.pyc \
build/ba_data/python/bacommon/__pycache__/assets.cpython-37.opt-1.pyc \ build/ba_data/python/bacommon/__pycache__/assets.cpython-37.opt-1.pyc \
build/ba_data/python/bacommon/__pycache__/err.cpython-37.opt-1.pyc \ build/ba_data/python/bacommon/__pycache__/err.cpython-37.opt-1.pyc \
build/ba_data/python/ba/__pycache__/_dualteamsession.cpython-37.opt-1.pyc \
build/ba_data/python/ba/__pycache__/_gameactivity.cpython-37.opt-1.pyc \ build/ba_data/python/ba/__pycache__/_gameactivity.cpython-37.opt-1.pyc \
build/ba_data/python/ba/__pycache__/_apputils.cpython-37.opt-1.pyc \ build/ba_data/python/ba/__pycache__/_apputils.cpython-37.opt-1.pyc \
build/ba_data/python/ba/__pycache__/_coopsession.cpython-37.opt-1.pyc \ build/ba_data/python/ba/__pycache__/_coopsession.cpython-37.opt-1.pyc \
@ -410,7 +412,6 @@ SCRIPT_TARGETS_PYC_1 = \
build/ba_data/python/ba/__pycache__/_error.cpython-37.opt-1.pyc \ build/ba_data/python/ba/__pycache__/_error.cpython-37.opt-1.pyc \
build/ba_data/python/ba/__pycache__/_achievement.cpython-37.opt-1.pyc \ build/ba_data/python/ba/__pycache__/_achievement.cpython-37.opt-1.pyc \
build/ba_data/python/ba/__pycache__/_map.cpython-37.opt-1.pyc \ build/ba_data/python/ba/__pycache__/_map.cpython-37.opt-1.pyc \
build/ba_data/python/ba/__pycache__/_teambasesession.cpython-37.opt-1.pyc \
build/ba_data/python/ba/__pycache__/_gameutils.cpython-37.opt-1.pyc \ build/ba_data/python/ba/__pycache__/_gameutils.cpython-37.opt-1.pyc \
build/ba_data/python/ba/__pycache__/_activity.cpython-37.opt-1.pyc \ build/ba_data/python/ba/__pycache__/_activity.cpython-37.opt-1.pyc \
build/ba_data/python/ba/__pycache__/deprecated.cpython-37.opt-1.pyc \ build/ba_data/python/ba/__pycache__/deprecated.cpython-37.opt-1.pyc \
@ -428,10 +429,10 @@ SCRIPT_TARGETS_PYC_1 = \
build/ba_data/python/ba/__pycache__/_benchmark.cpython-37.opt-1.pyc \ build/ba_data/python/ba/__pycache__/_benchmark.cpython-37.opt-1.pyc \
build/ba_data/python/ba/__pycache__/_tournament.cpython-37.opt-1.pyc \ build/ba_data/python/ba/__pycache__/_tournament.cpython-37.opt-1.pyc \
build/ba_data/python/ba/__pycache__/_messages.cpython-37.opt-1.pyc \ build/ba_data/python/ba/__pycache__/_messages.cpython-37.opt-1.pyc \
build/ba_data/python/ba/__pycache__/_teamssession.cpython-37.opt-1.pyc \
build/ba_data/python/ba/__pycache__/_freeforallsession.cpython-37.opt-1.pyc \ build/ba_data/python/ba/__pycache__/_freeforallsession.cpython-37.opt-1.pyc \
build/ba_data/python/ba/__pycache__/_playlist.cpython-37.opt-1.pyc \ build/ba_data/python/ba/__pycache__/_playlist.cpython-37.opt-1.pyc \
build/ba_data/python/ba/__pycache__/_team.cpython-37.opt-1.pyc \ build/ba_data/python/ba/__pycache__/_team.cpython-37.opt-1.pyc \
build/ba_data/python/ba/__pycache__/_multiteamsession.cpython-37.opt-1.pyc \
build/ba_data/python/ba/__pycache__/_actor.cpython-37.opt-1.pyc \ build/ba_data/python/ba/__pycache__/_actor.cpython-37.opt-1.pyc \
build/ba_data/python/ba/__pycache__/_powerup.cpython-37.opt-1.pyc \ build/ba_data/python/ba/__pycache__/_powerup.cpython-37.opt-1.pyc \
build/ba_data/python/ba/__pycache__/_campaign.cpython-37.opt-1.pyc \ build/ba_data/python/ba/__pycache__/_campaign.cpython-37.opt-1.pyc \
@ -548,15 +549,15 @@ SCRIPT_TARGETS_PYC_1 = \
build/ba_data/python/bastd/ui/store/__pycache__/browser.cpython-37.opt-1.pyc \ build/ba_data/python/bastd/ui/store/__pycache__/browser.cpython-37.opt-1.pyc \
build/ba_data/python/bastd/ui/store/__pycache__/button.cpython-37.opt-1.pyc \ build/ba_data/python/bastd/ui/store/__pycache__/button.cpython-37.opt-1.pyc \
build/ba_data/python/bastd/ui/store/__pycache__/item.cpython-37.opt-1.pyc \ build/ba_data/python/bastd/ui/store/__pycache__/item.cpython-37.opt-1.pyc \
build/ba_data/python/bastd/activity/__pycache__/freeforallendscreen.cpython-37.opt-1.pyc \ build/ba_data/python/bastd/activity/__pycache__/coopjoin.cpython-37.opt-1.pyc \
build/ba_data/python/bastd/activity/__pycache__/multiteamvictory.cpython-37.opt-1.pyc \
build/ba_data/python/bastd/activity/__pycache__/dualteamscore.cpython-37.opt-1.pyc \
build/ba_data/python/bastd/activity/__pycache__/drawscore.cpython-37.opt-1.pyc \
build/ba_data/python/bastd/activity/__pycache__/__init__.cpython-37.opt-1.pyc \ build/ba_data/python/bastd/activity/__pycache__/__init__.cpython-37.opt-1.pyc \
build/ba_data/python/bastd/activity/__pycache__/coopscorescreen.cpython-37.opt-1.pyc \ build/ba_data/python/bastd/activity/__pycache__/freeforallvictory.cpython-37.opt-1.pyc \
build/ba_data/python/bastd/activity/__pycache__/dualteamscorescreen.cpython-37.opt-1.pyc \ build/ba_data/python/bastd/activity/__pycache__/coopscore.cpython-37.opt-1.pyc \
build/ba_data/python/bastd/activity/__pycache__/coopjoinscreen.cpython-37.opt-1.pyc \ build/ba_data/python/bastd/activity/__pycache__/multiteamjoin.cpython-37.opt-1.pyc \
build/ba_data/python/bastd/activity/__pycache__/multiteamendscreen.cpython-37.opt-1.pyc \ build/ba_data/python/bastd/activity/__pycache__/multiteamscore.cpython-37.opt-1.pyc \
build/ba_data/python/bastd/activity/__pycache__/teamsscorescreen.cpython-37.opt-1.pyc \
build/ba_data/python/bastd/activity/__pycache__/multiteamjoinscreen.cpython-37.opt-1.pyc \
build/ba_data/python/bastd/activity/__pycache__/drawscreen.cpython-37.opt-1.pyc \
build/ba_data/python/bastd/game/__pycache__/capturetheflag.cpython-37.opt-1.pyc \ build/ba_data/python/bastd/game/__pycache__/capturetheflag.cpython-37.opt-1.pyc \
build/ba_data/python/bastd/game/__pycache__/targetpractice.cpython-37.opt-1.pyc \ build/ba_data/python/bastd/game/__pycache__/targetpractice.cpython-37.opt-1.pyc \
build/ba_data/python/bastd/game/__pycache__/ninjafight.cpython-37.opt-1.pyc \ build/ba_data/python/bastd/game/__pycache__/ninjafight.cpython-37.opt-1.pyc \
@ -600,6 +601,7 @@ SCRIPT_TARGETS_PYC_1 = \
build/ba_data/python/bastd/actor/__pycache__/flag.cpython-37.opt-1.pyc \ build/ba_data/python/bastd/actor/__pycache__/flag.cpython-37.opt-1.pyc \
build/ba_data/python/bastd/actor/__pycache__/scoreboard.cpython-37.opt-1.pyc \ build/ba_data/python/bastd/actor/__pycache__/scoreboard.cpython-37.opt-1.pyc \
build/ba_data/python/bastd/actor/__pycache__/popuptext.cpython-37.opt-1.pyc \ build/ba_data/python/bastd/actor/__pycache__/popuptext.cpython-37.opt-1.pyc \
build/ba_data/python/bastd/actor/__pycache__/multiteamvictory.cpython-37.opt-1.pyc \
build/ba_data/python/bastd/actor/__pycache__/background.cpython-37.opt-1.pyc \ build/ba_data/python/bastd/actor/__pycache__/background.cpython-37.opt-1.pyc \
build/ba_data/python/bastd/actor/__pycache__/__init__.cpython-37.opt-1.pyc \ build/ba_data/python/bastd/actor/__pycache__/__init__.cpython-37.opt-1.pyc \
build/ba_data/python/bastd/actor/__pycache__/zoomtext.cpython-37.opt-1.pyc \ build/ba_data/python/bastd/actor/__pycache__/zoomtext.cpython-37.opt-1.pyc \
@ -710,6 +712,11 @@ build/ba_data/python/bacommon/__pycache__/err.cpython-37.opt-1.pyc: \
@echo Compiling script: $^ @echo Compiling script: $^
@rm -rf $@ && $(TOOLS_DIR)/snippets compile_python_files $^ && chmod 444 $@ @rm -rf $@ && $(TOOLS_DIR)/snippets compile_python_files $^ && chmod 444 $@
build/ba_data/python/ba/__pycache__/_dualteamsession.cpython-37.opt-1.pyc: \
build/ba_data/python/ba/_dualteamsession.py
@echo Compiling script: $^
@rm -rf $@ && $(TOOLS_DIR)/snippets compile_python_files $^ && chmod 444 $@
build/ba_data/python/ba/__pycache__/_gameactivity.cpython-37.opt-1.pyc: \ build/ba_data/python/ba/__pycache__/_gameactivity.cpython-37.opt-1.pyc: \
build/ba_data/python/ba/_gameactivity.py build/ba_data/python/ba/_gameactivity.py
@echo Compiling script: $^ @echo Compiling script: $^
@ -780,11 +787,6 @@ build/ba_data/python/ba/__pycache__/_map.cpython-37.opt-1.pyc: \
@echo Compiling script: $^ @echo Compiling script: $^
@rm -rf $@ && $(TOOLS_DIR)/snippets compile_python_files $^ && chmod 444 $@ @rm -rf $@ && $(TOOLS_DIR)/snippets compile_python_files $^ && chmod 444 $@
build/ba_data/python/ba/__pycache__/_teambasesession.cpython-37.opt-1.pyc: \
build/ba_data/python/ba/_teambasesession.py
@echo Compiling script: $^
@rm -rf $@ && $(TOOLS_DIR)/snippets compile_python_files $^ && chmod 444 $@
build/ba_data/python/ba/__pycache__/_gameutils.cpython-37.opt-1.pyc: \ build/ba_data/python/ba/__pycache__/_gameutils.cpython-37.opt-1.pyc: \
build/ba_data/python/ba/_gameutils.py build/ba_data/python/ba/_gameutils.py
@echo Compiling script: $^ @echo Compiling script: $^
@ -870,11 +872,6 @@ build/ba_data/python/ba/__pycache__/_messages.cpython-37.opt-1.pyc: \
@echo Compiling script: $^ @echo Compiling script: $^
@rm -rf $@ && $(TOOLS_DIR)/snippets compile_python_files $^ && chmod 444 $@ @rm -rf $@ && $(TOOLS_DIR)/snippets compile_python_files $^ && chmod 444 $@
build/ba_data/python/ba/__pycache__/_teamssession.cpython-37.opt-1.pyc: \
build/ba_data/python/ba/_teamssession.py
@echo Compiling script: $^
@rm -rf $@ && $(TOOLS_DIR)/snippets compile_python_files $^ && chmod 444 $@
build/ba_data/python/ba/__pycache__/_freeforallsession.cpython-37.opt-1.pyc: \ build/ba_data/python/ba/__pycache__/_freeforallsession.cpython-37.opt-1.pyc: \
build/ba_data/python/ba/_freeforallsession.py build/ba_data/python/ba/_freeforallsession.py
@echo Compiling script: $^ @echo Compiling script: $^
@ -890,6 +887,11 @@ build/ba_data/python/ba/__pycache__/_team.cpython-37.opt-1.pyc: \
@echo Compiling script: $^ @echo Compiling script: $^
@rm -rf $@ && $(TOOLS_DIR)/snippets compile_python_files $^ && chmod 444 $@ @rm -rf $@ && $(TOOLS_DIR)/snippets compile_python_files $^ && chmod 444 $@
build/ba_data/python/ba/__pycache__/_multiteamsession.cpython-37.opt-1.pyc: \
build/ba_data/python/ba/_multiteamsession.py
@echo Compiling script: $^
@rm -rf $@ && $(TOOLS_DIR)/snippets compile_python_files $^ && chmod 444 $@
build/ba_data/python/ba/__pycache__/_actor.cpython-37.opt-1.pyc: \ build/ba_data/python/ba/__pycache__/_actor.cpython-37.opt-1.pyc: \
build/ba_data/python/ba/_actor.py build/ba_data/python/ba/_actor.py
@echo Compiling script: $^ @echo Compiling script: $^
@ -1470,8 +1472,23 @@ build/ba_data/python/bastd/ui/store/__pycache__/item.cpython-37.opt-1.pyc: \
@echo Compiling script: $^ @echo Compiling script: $^
@rm -rf $@ && $(TOOLS_DIR)/snippets compile_python_files $^ && chmod 444 $@ @rm -rf $@ && $(TOOLS_DIR)/snippets compile_python_files $^ && chmod 444 $@
build/ba_data/python/bastd/activity/__pycache__/freeforallendscreen.cpython-37.opt-1.pyc: \ build/ba_data/python/bastd/activity/__pycache__/coopjoin.cpython-37.opt-1.pyc: \
build/ba_data/python/bastd/activity/freeforallendscreen.py build/ba_data/python/bastd/activity/coopjoin.py
@echo Compiling script: $^
@rm -rf $@ && $(TOOLS_DIR)/snippets compile_python_files $^ && chmod 444 $@
build/ba_data/python/bastd/activity/__pycache__/multiteamvictory.cpython-37.opt-1.pyc: \
build/ba_data/python/bastd/activity/multiteamvictory.py
@echo Compiling script: $^
@rm -rf $@ && $(TOOLS_DIR)/snippets compile_python_files $^ && chmod 444 $@
build/ba_data/python/bastd/activity/__pycache__/dualteamscore.cpython-37.opt-1.pyc: \
build/ba_data/python/bastd/activity/dualteamscore.py
@echo Compiling script: $^
@rm -rf $@ && $(TOOLS_DIR)/snippets compile_python_files $^ && chmod 444 $@
build/ba_data/python/bastd/activity/__pycache__/drawscore.cpython-37.opt-1.pyc: \
build/ba_data/python/bastd/activity/drawscore.py
@echo Compiling script: $^ @echo Compiling script: $^
@rm -rf $@ && $(TOOLS_DIR)/snippets compile_python_files $^ && chmod 444 $@ @rm -rf $@ && $(TOOLS_DIR)/snippets compile_python_files $^ && chmod 444 $@
@ -1480,38 +1497,23 @@ build/ba_data/python/bastd/activity/__pycache__/__init__.cpython-37.opt-1.pyc: \
@echo Compiling script: $^ @echo Compiling script: $^
@rm -rf $@ && $(TOOLS_DIR)/snippets compile_python_files $^ && chmod 444 $@ @rm -rf $@ && $(TOOLS_DIR)/snippets compile_python_files $^ && chmod 444 $@
build/ba_data/python/bastd/activity/__pycache__/coopscorescreen.cpython-37.opt-1.pyc: \ build/ba_data/python/bastd/activity/__pycache__/freeforallvictory.cpython-37.opt-1.pyc: \
build/ba_data/python/bastd/activity/coopscorescreen.py build/ba_data/python/bastd/activity/freeforallvictory.py
@echo Compiling script: $^ @echo Compiling script: $^
@rm -rf $@ && $(TOOLS_DIR)/snippets compile_python_files $^ && chmod 444 $@ @rm -rf $@ && $(TOOLS_DIR)/snippets compile_python_files $^ && chmod 444 $@
build/ba_data/python/bastd/activity/__pycache__/dualteamscorescreen.cpython-37.opt-1.pyc: \ build/ba_data/python/bastd/activity/__pycache__/coopscore.cpython-37.opt-1.pyc: \
build/ba_data/python/bastd/activity/dualteamscorescreen.py build/ba_data/python/bastd/activity/coopscore.py
@echo Compiling script: $^ @echo Compiling script: $^
@rm -rf $@ && $(TOOLS_DIR)/snippets compile_python_files $^ && chmod 444 $@ @rm -rf $@ && $(TOOLS_DIR)/snippets compile_python_files $^ && chmod 444 $@
build/ba_data/python/bastd/activity/__pycache__/coopjoinscreen.cpython-37.opt-1.pyc: \ build/ba_data/python/bastd/activity/__pycache__/multiteamjoin.cpython-37.opt-1.pyc: \
build/ba_data/python/bastd/activity/coopjoinscreen.py build/ba_data/python/bastd/activity/multiteamjoin.py
@echo Compiling script: $^ @echo Compiling script: $^
@rm -rf $@ && $(TOOLS_DIR)/snippets compile_python_files $^ && chmod 444 $@ @rm -rf $@ && $(TOOLS_DIR)/snippets compile_python_files $^ && chmod 444 $@
build/ba_data/python/bastd/activity/__pycache__/multiteamendscreen.cpython-37.opt-1.pyc: \ build/ba_data/python/bastd/activity/__pycache__/multiteamscore.cpython-37.opt-1.pyc: \
build/ba_data/python/bastd/activity/multiteamendscreen.py build/ba_data/python/bastd/activity/multiteamscore.py
@echo Compiling script: $^
@rm -rf $@ && $(TOOLS_DIR)/snippets compile_python_files $^ && chmod 444 $@
build/ba_data/python/bastd/activity/__pycache__/teamsscorescreen.cpython-37.opt-1.pyc: \
build/ba_data/python/bastd/activity/teamsscorescreen.py
@echo Compiling script: $^
@rm -rf $@ && $(TOOLS_DIR)/snippets compile_python_files $^ && chmod 444 $@
build/ba_data/python/bastd/activity/__pycache__/multiteamjoinscreen.cpython-37.opt-1.pyc: \
build/ba_data/python/bastd/activity/multiteamjoinscreen.py
@echo Compiling script: $^
@rm -rf $@ && $(TOOLS_DIR)/snippets compile_python_files $^ && chmod 444 $@
build/ba_data/python/bastd/activity/__pycache__/drawscreen.cpython-37.opt-1.pyc: \
build/ba_data/python/bastd/activity/drawscreen.py
@echo Compiling script: $^ @echo Compiling script: $^
@rm -rf $@ && $(TOOLS_DIR)/snippets compile_python_files $^ && chmod 444 $@ @rm -rf $@ && $(TOOLS_DIR)/snippets compile_python_files $^ && chmod 444 $@
@ -1730,6 +1732,11 @@ build/ba_data/python/bastd/actor/__pycache__/popuptext.cpython-37.opt-1.pyc: \
@echo Compiling script: $^ @echo Compiling script: $^
@rm -rf $@ && $(TOOLS_DIR)/snippets compile_python_files $^ && chmod 444 $@ @rm -rf $@ && $(TOOLS_DIR)/snippets compile_python_files $^ && chmod 444 $@
build/ba_data/python/bastd/actor/__pycache__/multiteamvictory.cpython-37.opt-1.pyc: \
build/ba_data/python/bastd/actor/multiteamvictory.py
@echo Compiling script: $^
@rm -rf $@ && $(TOOLS_DIR)/snippets compile_python_files $^ && chmod 444 $@
build/ba_data/python/bastd/actor/__pycache__/background.cpython-37.opt-1.pyc: \ build/ba_data/python/bastd/actor/__pycache__/background.cpython-37.opt-1.pyc: \
build/ba_data/python/bastd/actor/background.py build/ba_data/python/bastd/actor/background.py
@echo Compiling script: $^ @echo Compiling script: $^

View File

@ -62,7 +62,7 @@ from ba._session import Session
from ba._stats import PlayerScoredMessage, PlayerRecord, Stats from ba._stats import PlayerScoredMessage, PlayerRecord, Stats
from ba._team import Team from ba._team import Team
from ba._teamgame import TeamGameActivity from ba._teamgame import TeamGameActivity
from ba._teamssession import TeamsSession from ba._dualteamsession import DualTeamSession
from ba._achievement import Achievement from ba._achievement import Achievement
from ba._appconfig import AppConfig from ba._appconfig import AppConfig
from ba._appdelegate import AppDelegate from ba._appdelegate import AppDelegate
@ -82,7 +82,7 @@ from ba._messages import (OutOfBoundsMessage, DeathType, DieMessage,
CelebrateMessage) CelebrateMessage)
from ba._music import setmusic, MusicPlayer, MusicType, MusicPlayMode from ba._music import setmusic, MusicPlayer, MusicType, MusicPlayMode
from ba._powerup import PowerupMessage, PowerupAcceptMessage from ba._powerup import PowerupMessage, PowerupAcceptMessage
from ba._teambasesession import TeamBaseSession from ba._multiteamsession import MultiTeamSession
from ba.ui import Window, UIController, uicleanupcheck from ba.ui import Window, UIController, uicleanupcheck
app: App app: App

View File

@ -62,7 +62,7 @@ class EndSessionActivity(Activity):
call_after_ad(Call(_ba.new_host_session, MainMenuSession)) call_after_ad(Call(_ba.new_host_session, MainMenuSession))
class JoiningActivity(Activity): class JoinActivity(Activity):
"""Standard activity for waiting for players to join. """Standard activity for waiting for players to join.
It shows tips and other info and waits for all players to check ready. It shows tips and other info and waits for all players to check ready.

View File

@ -109,7 +109,7 @@ def stop_stress_test() -> None:
def start_stress_test(args: Dict[str, Any]) -> None: def start_stress_test(args: Dict[str, Any]) -> None:
"""(internal)""" """(internal)"""
from ba._general import Call from ba._general import Call
from ba._teamssession import TeamsSession from ba._dualteamsession import DualTeamSession
from ba._freeforallsession import FreeForAllSession from ba._freeforallsession import FreeForAllSession
from ba._enums import TimeType, TimeFormat from ba._enums import TimeType, TimeFormat
bs_config = _ba.app.config bs_config = _ba.app.config
@ -125,7 +125,8 @@ def start_stress_test(args: Dict[str, Any]) -> None:
bs_config['Team Tournament Playlist Selection'] = args['playlist_name'] bs_config['Team Tournament Playlist Selection'] = args['playlist_name']
bs_config['Team Tournament Playlist Randomize'] = 1 bs_config['Team Tournament Playlist Randomize'] = 1
_ba.timer(1.0, _ba.timer(1.0,
Call(_ba.pushcall, Call(_ba.new_host_session, TeamsSession)), Call(_ba.pushcall, Call(_ba.new_host_session,
DualTeamSession)),
timetype=TimeType.REAL) timetype=TimeType.REAL)
else: else:
bs_config['Free-for-All Playlist Selection'] = args['playlist_name'] bs_config['Free-for-All Playlist Selection'] = args['playlist_name']

View File

@ -48,7 +48,7 @@ class CoopSession(Session):
"""Instantiate a co-op mode session.""" """Instantiate a co-op mode session."""
# pylint: disable=cyclic-import # pylint: disable=cyclic-import
from ba._campaign import get_campaign from ba._campaign import get_campaign
from bastd.activity.coopjoinscreen import CoopJoiningActivity from bastd.activity.coopjoin import CoopJoinActivity
_ba.increment_analytics_count('Co-op session start') _ba.increment_analytics_count('Co-op session start')
@ -100,7 +100,7 @@ class CoopSession(Session):
self._custom_menu_ui: List[Dict[str, Any]] = [] self._custom_menu_ui: List[Dict[str, Any]] = []
# Start our joining screen. # Start our joining screen.
self.set_activity(_ba.new_activity(CoopJoiningActivity)) self.set_activity(_ba.new_activity(CoopJoinActivity))
self._next_game_instance: Optional[ba.GameActivity] = None self._next_game_instance: Optional[ba.GameActivity] = None
self._next_game_name: Optional[str] = None self._next_game_name: Optional[str] = None
@ -249,13 +249,13 @@ class CoopSession(Session):
# pylint: disable=too-many-locals # pylint: disable=too-many-locals
# pylint: disable=too-many-statements # pylint: disable=too-many-statements
# pylint: disable=cyclic-import # pylint: disable=cyclic-import
from ba._activitytypes import JoiningActivity, TransitionActivity from ba._activitytypes import JoinActivity, TransitionActivity
from ba._lang import Lstr from ba._lang import Lstr
from ba._general import WeakCall from ba._general import WeakCall
from ba._coopgame import CoopGameActivity from ba._coopgame import CoopGameActivity
from ba._gameresults import TeamGameResults from ba._gameresults import TeamGameResults
from bastd.tutorial import TutorialActivity from bastd.tutorial import TutorialActivity
from bastd.activity.coopscorescreen import CoopScoreScreen from bastd.activity.coopscore import CoopScoreScreen
app = _ba.app app = _ba.app
@ -279,9 +279,8 @@ class CoopSession(Session):
# If we're in a between-round activity or a restart-activity, # If we're in a between-round activity or a restart-activity,
# hop into a round. # hop into a round.
if (isinstance( if (isinstance(activity,
activity, (JoinActivity, CoopScoreScreen, TransitionActivity))):
(JoiningActivity, CoopScoreScreen, TransitionActivity))):
if outcome == 'next_level': if outcome == 'next_level':
if self._next_game_instance is None: if self._next_game_instance is None:
@ -295,7 +294,7 @@ class CoopSession(Session):
# Special case: if we're coming from a joining-activity # Special case: if we're coming from a joining-activity
# and will be going into onslaught-training, show the # and will be going into onslaught-training, show the
# tutorial first. # tutorial first.
if (isinstance(activity, JoiningActivity) if (isinstance(activity, JoinActivity)
and self.campaign_state['level'] == 'Onslaught Training' and self.campaign_state['level'] == 'Onslaught Training'
and not app.kiosk_mode): and not app.kiosk_mode):
if self._tutorial_activity is None: if self._tutorial_activity is None:

View File

@ -24,13 +24,13 @@ from __future__ import annotations
from typing import TYPE_CHECKING from typing import TYPE_CHECKING
import _ba import _ba
from ba import _teambasesession from ba import _multiteamsession
if TYPE_CHECKING: if TYPE_CHECKING:
import ba import ba
class TeamsSession(_teambasesession.TeamBaseSession): class DualTeamSession(_multiteamsession.MultiTeamSession):
"""ba.Session type for teams mode games. """ba.Session type for teams mode games.
Category: Gameplay Classes Category: Gameplay Classes
@ -46,15 +46,16 @@ class TeamsSession(_teambasesession.TeamBaseSession):
def _switch_to_score_screen(self, results: ba.TeamGameResults) -> None: def _switch_to_score_screen(self, results: ba.TeamGameResults) -> None:
# pylint: disable=cyclic-import # pylint: disable=cyclic-import
from bastd.activity import drawscreen from bastd.activity.drawscore import DrawScoreScreenActivity
from bastd.activity import dualteamscorescreen from bastd.activity.dualteamscore import (
from bastd.activity import multiteamendscreen TeamVictoryScoreScreenActivity)
from bastd.activity.multiteamvictory import (
TeamSeriesVictoryScoreScreenActivity)
winners = results.get_winners() winners = results.get_winners()
# If everyone has the same score, call it a draw. # If everyone has the same score, call it a draw.
if len(winners) < 2: if len(winners) < 2:
self.set_activity( self.set_activity(_ba.new_activity(DrawScoreScreenActivity))
_ba.new_activity(drawscreen.DrawScoreScreenActivity))
else: else:
winner = winners[0].teams[0] winner = winners[0].teams[0]
winner.sessiondata['score'] += 1 winner.sessiondata['score'] += 1
@ -63,12 +64,9 @@ class TeamsSession(_teambasesession.TeamBaseSession):
if winner.sessiondata['score'] >= (self._series_length - if winner.sessiondata['score'] >= (self._series_length -
1) / 2 + 1: 1) / 2 + 1:
self.set_activity( self.set_activity(
_ba.new_activity( _ba.new_activity(TeamSeriesVictoryScoreScreenActivity,
multiteamendscreen. {'winner': winner}))
TeamSeriesVictoryScoreScreenActivity,
{'winner': winner}))
else: else:
self.set_activity( self.set_activity(
_ba.new_activity( _ba.new_activity(TeamVictoryScoreScreenActivity,
dualteamscorescreen.TeamVictoryScoreScreenActivity, {'winner': winner}))
{'winner': winner}))

View File

@ -25,14 +25,14 @@ from __future__ import annotations
from typing import TYPE_CHECKING from typing import TYPE_CHECKING
import _ba import _ba
from ba._teambasesession import TeamBaseSession from ba._multiteamsession import MultiTeamSession
if TYPE_CHECKING: if TYPE_CHECKING:
from typing import Dict from typing import Dict
import ba import ba
class FreeForAllSession(TeamBaseSession): class FreeForAllSession(MultiTeamSession):
"""ba.Session type for free-for-all mode games. """ba.Session type for free-for-all mode games.
Category: Gameplay Classes Category: Gameplay Classes
@ -70,10 +70,10 @@ class FreeForAllSession(TeamBaseSession):
def _switch_to_score_screen(self, results: ba.TeamGameResults) -> None: def _switch_to_score_screen(self, results: ba.TeamGameResults) -> None:
# pylint: disable=cyclic-import # pylint: disable=cyclic-import
from bastd.activity.drawscreen import DrawScoreScreenActivity from bastd.activity.drawscore import DrawScoreScreenActivity
from bastd.activity.multiteamendscreen import ( from bastd.activity.multiteamvictory import (
TeamSeriesVictoryScoreScreenActivity) TeamSeriesVictoryScoreScreenActivity)
from bastd.activity.freeforallendscreen import ( from bastd.activity.freeforallvictory import (
FreeForAllVictoryScoreScreenActivity) FreeForAllVictoryScoreScreenActivity)
winners = results.get_winners() winners = results.get_winners()

View File

@ -289,10 +289,10 @@ class GameActivity(Activity):
@classmethod @classmethod
def supports_session_type(cls, sessiontype: Type[ba.Session]) -> bool: def supports_session_type(cls, sessiontype: Type[ba.Session]) -> bool:
"""Return whether this game supports the provided Session type.""" """Return whether this game supports the provided Session type."""
from ba._teambasesession import TeamBaseSession from ba._multiteamsession import MultiTeamSession
# By default, games support any versus mode # By default, games support any versus mode
return issubclass(sessiontype, TeamBaseSession) return issubclass(sessiontype, MultiTeamSession)
def __init__(self, settings: Dict[str, Any]): def __init__(self, settings: Dict[str, Any]):
"""Instantiate the Activity.""" """Instantiate the Activity."""
@ -550,7 +550,7 @@ class GameActivity(Activity):
def _game_begin_analytics(self) -> None: def _game_begin_analytics(self) -> None:
"""Update analytics events for the start of the game.""" """Update analytics events for the start of the game."""
# pylint: disable=too-many-branches # pylint: disable=too-many-branches
from ba._teamssession import TeamsSession from ba._dualteamsession import DualTeamSession
from ba._freeforallsession import FreeForAllSession from ba._freeforallsession import FreeForAllSession
from ba._coopsession import CoopSession from ba._coopsession import CoopSession
session = self.session session = self.session
@ -573,7 +573,7 @@ class GameActivity(Activity):
elif len(self.players) >= 4: elif len(self.players) >= 4:
_ba.increment_analytics_count( _ba.increment_analytics_count(
'Co-op round start 4+ human players') 'Co-op round start 4+ human players')
elif isinstance(session, TeamsSession): elif isinstance(session, DualTeamSession):
_ba.set_analytics_screen('Teams Game: ' + self.get_name()) _ba.set_analytics_screen('Teams Game: ' + self.get_name())
_ba.increment_analytics_count('Teams round start') _ba.increment_analytics_count('Teams round start')
if len(self.players) == 1: if len(self.players) == 1:

View File

@ -36,8 +36,8 @@ DEFAULT_TEAM_COLORS = ((0.1, 0.25, 1.0), (1.0, 0.25, 0.2))
DEFAULT_TEAM_NAMES = ("Blue", "Red") DEFAULT_TEAM_NAMES = ("Blue", "Red")
class TeamBaseSession(Session): class MultiTeamSession(Session):
"""Common base class for ba.TeamsSession and ba.FreeForAllSession. """Common base class for ba.DualTeamSession and ba.FreeForAllSession.
Category: Gameplay Classes Category: Gameplay Classes
@ -54,7 +54,7 @@ class TeamBaseSession(Session):
"""Set up playlists and launches a ba.Activity to accept joiners.""" """Set up playlists and launches a ba.Activity to accept joiners."""
# pylint: disable=cyclic-import # pylint: disable=cyclic-import
from ba import _playlist from ba import _playlist
from bastd.activity import multiteamjoinscreen from bastd.activity.multiteamjoin import MultiTeamJoinActivity
app = _ba.app app = _ba.app
cfg = app.config cfg = app.config
@ -133,8 +133,7 @@ class TeamBaseSession(Session):
self._instantiate_next_game() self._instantiate_next_game()
# Start in our custom join screen. # Start in our custom join screen.
self.set_activity( self.set_activity(_ba.new_activity(MultiTeamJoinActivity))
_ba.new_activity(multiteamjoinscreen.TeamJoiningActivity))
def get_ffa_series_length(self) -> int: def get_ffa_series_length(self) -> int:
"""Return free-for-all series length.""" """Return free-for-all series length."""
@ -174,7 +173,7 @@ class TeamBaseSession(Session):
# pylint: disable=cyclic-import # pylint: disable=cyclic-import
from ba import _error from ba import _error
from bastd.tutorial import TutorialActivity from bastd.tutorial import TutorialActivity
from bastd.activity.multiteamendscreen import ( from bastd.activity.multiteamvictory import (
TeamSeriesVictoryScoreScreenActivity) TeamSeriesVictoryScoreScreenActivity)
from ba import _activitytypes from ba import _activitytypes
@ -195,7 +194,7 @@ class TeamBaseSession(Session):
# into a round. # into a round.
elif isinstance( elif isinstance(
activity, activity,
(_activitytypes.JoiningActivity, _activitytypes.TransitionActivity, (_activitytypes.JoinActivity, _activitytypes.TransitionActivity,
_activitytypes.ScoreScreenActivity)): _activitytypes.ScoreScreenActivity)):
# If we're coming from a series-end activity, reset scores. # If we're coming from a series-end activity, reset scores.

View File

@ -143,7 +143,7 @@ def launch_server_session() -> None:
"""Kick off a host-session based on the current server config.""" """Kick off a host-session based on the current server config."""
from ba._netutils import serverget from ba._netutils import serverget
from ba import _freeforallsession from ba import _freeforallsession
from ba import _teamssession from ba import _dualteamsession
app = _ba.app app = _ba.app
servercfg = copy.deepcopy(app.server_config) servercfg = copy.deepcopy(app.server_config)
appcfg = app.config appcfg = app.config
@ -155,7 +155,7 @@ def launch_server_session() -> None:
if session_type_name == 'ffa': if session_type_name == 'ffa':
sessiontype = _freeforallsession.FreeForAllSession sessiontype = _freeforallsession.FreeForAllSession
elif session_type_name == 'teams': elif session_type_name == 'teams':
sessiontype = _teamssession.TeamsSession sessiontype = _dualteamsession.DualTeamSession
else: else:
raise Exception('invalid session_type value: ' + session_type_name) raise Exception('invalid session_type value: ' + session_type_name)

View File

@ -38,7 +38,7 @@ class Session:
category: Gameplay Classes category: Gameplay Classes
Examples of sessions are ba.FreeForAllSession, ba.TeamsSession, and Examples of sessions are ba.FreeForAllSession, ba.DualTeamSession, and
ba.CoopSession. ba.CoopSession.
A Session is responsible for wrangling and transitioning between various A Session is responsible for wrangling and transitioning between various

View File

@ -28,7 +28,7 @@ import _ba
from ba._freeforallsession import FreeForAllSession from ba._freeforallsession import FreeForAllSession
from ba._gameactivity import GameActivity from ba._gameactivity import GameActivity
from ba._gameresults import TeamGameResults from ba._gameresults import TeamGameResults
from ba._teamssession import TeamsSession from ba._dualteamsession import DualTeamSession
if TYPE_CHECKING: if TYPE_CHECKING:
from typing import Any, Dict, Type, Sequence from typing import Any, Dict, Type, Sequence
@ -49,10 +49,10 @@ class TeamGameActivity(GameActivity):
def supports_session_type(cls, sessiontype: Type[ba.Session]) -> bool: def supports_session_type(cls, sessiontype: Type[ba.Session]) -> bool:
""" """
Class method override; Class method override;
returns True for ba.TeamsSessions and ba.FreeForAllSessions; returns True for ba.DualTeamSessions and ba.FreeForAllSessions;
False otherwise. False otherwise.
""" """
return (issubclass(sessiontype, TeamsSession) return (issubclass(sessiontype, DualTeamSession)
or issubclass(sessiontype, FreeForAllSession)) or issubclass(sessiontype, FreeForAllSession))
def __init__(self, settings: Dict[str, Any]): def __init__(self, settings: Dict[str, Any]):
@ -95,7 +95,7 @@ class TeamGameActivity(GameActivity):
if len(self.players) >= 2: if len(self.players) >= 2:
from ba import _achievement from ba import _achievement
_achievement.award_local_achievement('Free Loader') _achievement.award_local_achievement('Free Loader')
elif isinstance(self.session, TeamsSession): elif isinstance(self.session, DualTeamSession):
if len(self.players) >= 4: if len(self.players) >= 4:
from ba import _achievement from ba import _achievement
_achievement.award_local_achievement('Team Player') _achievement.award_local_achievement('Team Player')
@ -116,7 +116,7 @@ class TeamGameActivity(GameActivity):
""" """
if position is None: if position is None:
# In teams-mode get our team-start-location. # In teams-mode get our team-start-location.
if isinstance(self.session, TeamsSession): if isinstance(self.session, DualTeamSession):
position = (self.map.get_start_position(player.team.get_id())) position = (self.map.get_start_position(player.team.get_id()))
else: else:
# Otherwise do free-for-all spawn locations. # Otherwise do free-for-all spawn locations.
@ -137,7 +137,7 @@ class TeamGameActivity(GameActivity):
""" """
# pylint: disable=arguments-differ # pylint: disable=arguments-differ
from ba._coopsession import CoopSession from ba._coopsession import CoopSession
from ba._teambasesession import TeamBaseSession from ba._multiteamsession import MultiTeamSession
from ba._general import Call from ba._general import Call
# Announce win (but only for the first finish() call) # Announce win (but only for the first finish() call)
@ -148,7 +148,7 @@ class TeamGameActivity(GameActivity):
super().end(results, delay=2.0 + announce_delay, force=force) super().end(results, delay=2.0 + announce_delay, force=force)
# Need to do this *after* end end call so that results is valid. # Need to do this *after* end end call so that results is valid.
assert isinstance(results, TeamGameResults) assert isinstance(results, TeamGameResults)
if do_announce and isinstance(session, TeamBaseSession): if do_announce and isinstance(session, MultiTeamSession):
session.announce_game_results( session.announce_game_results(
self, self,
results, results,

View File

@ -40,7 +40,7 @@ from ba._account import (on_account_state_changed,
ensure_have_account_player_profile, ensure_have_account_player_profile,
get_purchased_icons, get_cached_league_rank_data, get_purchased_icons, get_cached_league_rank_data,
get_league_rank_points, cache_league_rank_data) get_league_rank_points, cache_league_rank_data)
from ba._activitytypes import JoiningActivity, ScoreScreenActivity from ba._activitytypes import JoinActivity, ScoreScreenActivity
from ba._achievement import (get_achievement, set_completed_achievements, from ba._achievement import (get_achievement, set_completed_achievements,
display_achievement_banner, display_achievement_banner,
get_achievements_for_coop_level) get_achievements_for_coop_level)
@ -52,7 +52,7 @@ from ba._campaign import get_campaign
from ba._messages import PlayerProfilesChangedMessage from ba._messages import PlayerProfilesChangedMessage
from ba._meta import get_game_types from ba._meta import get_game_types
from ba._modutils import show_user_scripts from ba._modutils import show_user_scripts
from ba._teambasesession import DEFAULT_TEAM_COLORS, DEFAULT_TEAM_NAMES from ba._multiteamsession import DEFAULT_TEAM_COLORS, DEFAULT_TEAM_NAMES
from ba._music import (have_music_player, music_volume_changed, do_play_music, from ba._music import (have_music_player, music_volume_changed, do_play_music,
get_soundtrack_entry_name, get_soundtrack_entry_type, get_soundtrack_entry_name, get_soundtrack_entry_type,
get_music_player, set_music_play_mode, get_music_player, set_music_play_mode,

View File

@ -26,13 +26,13 @@ from typing import TYPE_CHECKING
import _ba import _ba
import ba import ba
from ba.internal import JoiningActivity from ba.internal import JoinActivity
if TYPE_CHECKING: if TYPE_CHECKING:
from typing import Any, Dict, List, Optional, Sequence, Union from typing import Any, Dict, List, Optional, Sequence, Union
class CoopJoiningActivity(JoiningActivity): class CoopJoinActivity(JoinActivity):
"""Join-screen for co-op mode.""" """Join-screen for co-op mode."""
def __init__(self, settings: Dict[str, Any]): def __init__(self, settings: Dict[str, Any]):

View File

@ -25,13 +25,13 @@ from __future__ import annotations
from typing import TYPE_CHECKING from typing import TYPE_CHECKING
import ba import ba
from bastd.activity.teamsscorescreen import TeamsScoreScreenActivity from bastd.activity.multiteamscore import MultiTeamScoreScreenActivity
if TYPE_CHECKING: if TYPE_CHECKING:
from typing import Any, Dict from typing import Any, Dict
class DrawScoreScreenActivity(TeamsScoreScreenActivity): class DrawScoreScreenActivity(MultiTeamScoreScreenActivity):
"""Score screen shown after a draw.""" """Score screen shown after a draw."""
def __init__(self, settings: Dict[str, Any]): def __init__(self, settings: Dict[str, Any]):

View File

@ -25,14 +25,14 @@ from __future__ import annotations
from typing import TYPE_CHECKING from typing import TYPE_CHECKING
import ba import ba
from bastd.activity.teamsscorescreen import TeamsScoreScreenActivity from bastd.activity.multiteamscore import MultiTeamScoreScreenActivity
from bastd.actor.zoomtext import ZoomText from bastd.actor.zoomtext import ZoomText
if TYPE_CHECKING: if TYPE_CHECKING:
from typing import Any, Dict from typing import Any, Dict
class TeamVictoryScoreScreenActivity(TeamsScoreScreenActivity): class TeamVictoryScoreScreenActivity(MultiTeamScoreScreenActivity):
"""Scorescreen between rounds of a dual-team session.""" """Scorescreen between rounds of a dual-team session."""
def __init__(self, settings: Dict[str, Any]): def __init__(self, settings: Dict[str, Any]):
@ -52,7 +52,7 @@ class TeamVictoryScoreScreenActivity(TeamsScoreScreenActivity):
# Usually we say 'Best of 7', but if the language prefers we can say # Usually we say 'Best of 7', but if the language prefers we can say
# 'First to 4'. # 'First to 4'.
session = self.session session = self.session
assert isinstance(session, ba.TeamBaseSession) assert isinstance(session, ba.MultiTeamSession)
if get_resource('bestOfUseFirstToInstead'): if get_resource('bestOfUseFirstToInstead'):
best_txt = ba.Lstr(resource='firstToSeriesText', best_txt = ba.Lstr(resource='firstToSeriesText',
subs=[('${COUNT}', subs=[('${COUNT}',

View File

@ -25,14 +25,14 @@ from __future__ import annotations
from typing import TYPE_CHECKING from typing import TYPE_CHECKING
import ba import ba
from bastd.activity.teamsscorescreen import TeamsScoreScreenActivity from bastd.activity.multiteamscore import MultiTeamScoreScreenActivity
if TYPE_CHECKING: if TYPE_CHECKING:
from typing import Any, Dict, Optional, Set from typing import Any, Dict, Optional, Set
class FreeForAllVictoryScoreScreenActivity(TeamsScoreScreenActivity): class FreeForAllVictoryScoreScreenActivity(MultiTeamScoreScreenActivity):
"""Score screen shown at the end of a free-for-all series.""" """Score screen shown at after free-for-all rounds."""
def __init__(self, settings: Dict[str, Any]): def __init__(self, settings: Dict[str, Any]):
super().__init__(settings=settings) super().__init__(settings=settings)

View File

@ -25,14 +25,14 @@ from __future__ import annotations
from typing import TYPE_CHECKING from typing import TYPE_CHECKING
import ba import ba
from ba.internal import JoiningActivity from ba.internal import JoinActivity
from bastd.actor.text import Text from bastd.actor.text import Text
if TYPE_CHECKING: if TYPE_CHECKING:
from typing import Any, Dict, Optional from typing import Any, Dict, Optional
class TeamJoiningActivity(JoiningActivity): class MultiTeamJoinActivity(JoinActivity):
"""Join screen for teams sessions.""" """Join screen for teams sessions."""
def __init__(self, settings: Dict[str, Any]): def __init__(self, settings: Dict[str, Any]):
@ -41,12 +41,12 @@ class TeamJoiningActivity(JoiningActivity):
def on_transition_in(self) -> None: def on_transition_in(self) -> None:
from bastd.actor.controlsguide import ControlsGuide from bastd.actor.controlsguide import ControlsGuide
from ba import TeamsSession from ba import DualTeamSession
super().on_transition_in() super().on_transition_in()
ControlsGuide(delay=1.0).autoretain() ControlsGuide(delay=1.0).autoretain()
session = self.session session = self.session
assert isinstance(session, ba.TeamBaseSession) assert isinstance(session, ba.MultiTeamSession)
# Show info about the next up game. # Show info about the next up game.
self._next_up_text = Text(ba.Lstr( self._next_up_text = Text(ba.Lstr(
@ -65,7 +65,7 @@ class TeamJoiningActivity(JoiningActivity):
# In teams mode, show our two team names. # In teams mode, show our two team names.
# FIXME: Lobby should handle this. # FIXME: Lobby should handle this.
if isinstance(ba.getsession(), TeamsSession): if isinstance(ba.getsession(), DualTeamSession):
team_names = [team.name for team in ba.getsession().teams] team_names = [team.name for team in ba.getsession().teams]
team_colors = [ team_colors = [
tuple(team.color) + (0.5, ) for team in ba.getsession().teams tuple(team.color) + (0.5, ) for team in ba.getsession().teams

View File

@ -32,7 +32,7 @@ if TYPE_CHECKING:
from ba import PlayerRecord from ba import PlayerRecord
class TeamsScoreScreenActivity(ScoreScreenActivity): class MultiTeamScoreScreenActivity(ScoreScreenActivity):
"""Base class for score screens.""" """Base class for score screens."""
def __init__(self, settings: Dict[str, Any]): def __init__(self, settings: Dict[str, Any]):
@ -46,7 +46,7 @@ class TeamsScoreScreenActivity(ScoreScreenActivity):
from bastd.actor.text import Text from bastd.actor.text import Text
super().on_begin() super().on_begin()
session = self.session session = self.session
if self._show_up_next and isinstance(session, ba.TeamBaseSession): if self._show_up_next and isinstance(session, ba.MultiTeamSession):
txt = ba.Lstr(value='${A} ${B}', txt = ba.Lstr(value='${A} ${B}',
subs=[ subs=[
('${A}', ('${A}',
@ -165,7 +165,7 @@ class TeamsScoreScreenActivity(ScoreScreenActivity):
transition_delay=tdelay).autoretain() transition_delay=tdelay).autoretain()
session = self.session session = self.session
assert isinstance(session, ba.TeamBaseSession) assert isinstance(session, ba.MultiTeamSession)
tval = ba.Lstr(resource='gameLeadersText', tval = ba.Lstr(resource='gameLeadersText',
subs=[('${COUNT}', str(session.get_game_number()))]) subs=[('${COUNT}', str(session.get_game_number()))])
_txt(180, _txt(180,

View File

@ -25,13 +25,13 @@ from __future__ import annotations
from typing import TYPE_CHECKING from typing import TYPE_CHECKING
import ba import ba
from bastd.activity.teamsscorescreen import TeamsScoreScreenActivity from bastd.activity.multiteamscore import MultiTeamScoreScreenActivity
if TYPE_CHECKING: if TYPE_CHECKING:
from typing import Any, Dict, List, Tuple, Optional from typing import Any, Dict, List, Tuple, Optional
class TeamSeriesVictoryScoreScreenActivity(TeamsScoreScreenActivity): class TeamSeriesVictoryScoreScreenActivity(MultiTeamScoreScreenActivity):
"""Final score screen for a team series.""" """Final score screen for a team series."""
def __init__(self, settings: Dict[str, Any]): def __init__(self, settings: Dict[str, Any]):
@ -104,7 +104,7 @@ class TeamSeriesVictoryScoreScreenActivity(TeamsScoreScreenActivity):
str(session.get_ffa_series_length()))])) str(session.get_ffa_series_length()))]))
]) ])
else: else:
assert isinstance(session, ba.TeamBaseSession) assert isinstance(session, ba.MultiTeamSession)
# Some languages may prefer to always show 'first to X' instead of # Some languages may prefer to always show 'first to X' instead of
# 'best of X'. # 'best of X'.

View File

@ -0,0 +1,392 @@
# Copyright (c) 2011-2020 Eric Froemling
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in
# all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE.
# -----------------------------------------------------------------------------
"""Functionality related to the final screen in multi-teams sessions."""
from __future__ import annotations
from typing import TYPE_CHECKING
import ba
from bastd.activity.multiteamscore import MultiTeamScoreScreenActivity
if TYPE_CHECKING:
from typing import Any, Dict, List, Tuple, Optional
class TeamSeriesVictoryScoreScreenActivity(MultiTeamScoreScreenActivity):
"""Final score screen for a team series."""
def __init__(self, settings: Dict[str, Any]):
super().__init__(settings=settings)
self._min_view_time = 15.0
self._is_ffa = isinstance(self.session, ba.FreeForAllSession)
self._allow_server_restart = True
self._tips_text = None
def on_transition_in(self) -> None:
# We don't yet want music and whatnot...
self.default_music = None
self._default_show_tips = False
super().on_transition_in()
def on_begin(self) -> None:
# pylint: disable=too-many-branches
# pylint: disable=too-many-locals
# pylint: disable=too-many-statements
from bastd.actor.text import Text
from bastd.actor.image import Image
from ba.deprecated import get_resource
ba.set_analytics_screen('FreeForAll Series Victory Screen' if self.
_is_ffa else 'Teams Series Victory Screen')
if ba.app.interface_type == 'large':
sval = ba.Lstr(resource='pressAnyKeyButtonPlayAgainText')
else:
sval = ba.Lstr(resource='pressAnyButtonPlayAgainText')
self._show_up_next = False
self._custom_continue_message = sval
super().on_begin()
winning_team = self.settings['winner']
# Pause a moment before playing victory music.
ba.timer(0.6, ba.WeakCall(self._play_victory_music))
ba.timer(4.4, ba.WeakCall(self._show_winner, self.settings['winner']))
ba.timer(4.6, ba.Call(ba.playsound, self._score_display_sound))
# Score / Name / Player-record.
player_entries: List[Tuple[int, str, ba.PlayerRecord]] = []
# Note: for ffa, exclude players who haven't entered the game yet.
if self._is_ffa:
for _pkey, prec in self.stats.get_records().items():
if prec.player.in_game:
player_entries.append(
(prec.player.team.sessiondata['score'],
prec.get_name(full=True), prec))
player_entries.sort(reverse=True, key=lambda x: x[0])
else:
for _pkey, prec in self.stats.get_records().items():
player_entries.append((prec.score, prec.name_full, prec))
player_entries.sort(reverse=True, key=lambda x: x[0])
ts_height = 300.0
ts_h_offs = -390.0
tval = 6.4
t_incr = 0.12
always_use_first_to = get_resource('bestOfUseFirstToInstead')
session = self.session
if self._is_ffa:
assert isinstance(session, ba.FreeForAllSession)
txt = ba.Lstr(
value='${A}:',
subs=[('${A}',
ba.Lstr(resource='firstToFinalText',
subs=[('${COUNT}',
str(session.get_ffa_series_length()))]))
])
else:
assert isinstance(session, ba.MultiTeamSession)
# Some languages may prefer to always show 'first to X' instead of
# 'best of X'.
# FIXME: This will affect all clients connected to us even if
# they're not using this language. Should try to come up
# with a wording that works everywhere.
if always_use_first_to:
txt = ba.Lstr(
value='${A}:',
subs=[
('${A}',
ba.Lstr(resource='firstToFinalText',
subs=[
('${COUNT}',
str(session.get_series_length() / 2 + 1))
]))
])
else:
txt = ba.Lstr(
value='${A}:',
subs=[('${A}',
ba.Lstr(resource='bestOfFinalText',
subs=[('${COUNT}',
str(session.get_series_length()))]))
])
Text(txt,
v_align=Text.VAlign.CENTER,
maxwidth=300,
color=(0.5, 0.5, 0.5, 1.0),
position=(0, 220),
scale=1.2,
transition=Text.Transition.IN_TOP_SLOW,
h_align=Text.HAlign.CENTER,
transition_delay=t_incr * 4).autoretain()
win_score = (session.get_series_length() - 1) / 2 + 1
lose_score = 0
for team in self.teams:
if team.sessiondata['score'] != win_score:
lose_score = team.sessiondata['score']
if not self._is_ffa:
Text(ba.Lstr(resource='gamesToText',
subs=[('${WINCOUNT}', str(win_score)),
('${LOSECOUNT}', str(lose_score))]),
color=(0.5, 0.5, 0.5, 1.0),
maxwidth=160,
v_align=Text.VAlign.CENTER,
position=(0, -215),
scale=1.8,
transition=Text.Transition.IN_LEFT,
h_align=Text.HAlign.CENTER,
transition_delay=4.8 + t_incr * 4).autoretain()
if self._is_ffa:
v_extra = 120
else:
v_extra = 0
mvp: Optional[ba.PlayerRecord] = None
mvp_name: Optional[str] = None
# Show game MVP.
if not self._is_ffa:
mvp, mvp_name = None, None
for entry in player_entries:
if entry[2].team == winning_team:
mvp = entry[2]
mvp_name = entry[1]
break
if mvp is not None:
Text(ba.Lstr(resource='mostValuablePlayerText'),
color=(0.5, 0.5, 0.5, 1.0),
v_align=Text.VAlign.CENTER,
maxwidth=300,
position=(180, ts_height / 2 + 15),
transition=Text.Transition.IN_LEFT,
h_align=Text.HAlign.LEFT,
transition_delay=tval).autoretain()
tval += 4 * t_incr
Image(mvp.get_icon(),
position=(230, ts_height / 2 - 55 + 14 - 5),
scale=(70, 70),
transition=Image.Transition.IN_LEFT,
transition_delay=tval).autoretain()
Text(ba.Lstr(value=mvp_name),
position=(280, ts_height / 2 - 55 + 15 - 5),
h_align=Text.HAlign.LEFT,
v_align=Text.VAlign.CENTER,
maxwidth=170,
scale=1.3,
color=ba.safecolor(mvp.team.color + (1, )),
transition=Text.Transition.IN_LEFT,
transition_delay=tval).autoretain()
tval += 4 * t_incr
# Most violent.
most_kills = 0
for entry in player_entries:
if entry[2].kill_count >= most_kills:
mvp = entry[2]
mvp_name = entry[1]
most_kills = entry[2].kill_count
if mvp is not None:
Text(ba.Lstr(resource='mostViolentPlayerText'),
color=(0.5, 0.5, 0.5, 1.0),
v_align=Text.VAlign.CENTER,
maxwidth=300,
position=(180, ts_height / 2 - 150 + v_extra + 15),
transition=Text.Transition.IN_LEFT,
h_align=Text.HAlign.LEFT,
transition_delay=tval).autoretain()
Text(ba.Lstr(value='(${A})',
subs=[('${A}',
ba.Lstr(resource='killsTallyText',
subs=[('${COUNT}', str(most_kills))]))
]),
position=(260, ts_height / 2 - 150 - 15 + v_extra),
color=(0.3, 0.3, 0.3, 1.0),
scale=0.6,
h_align=Text.HAlign.LEFT,
transition=Text.Transition.IN_LEFT,
transition_delay=tval).autoretain()
tval += 4 * t_incr
Image(mvp.get_icon(),
position=(233, ts_height / 2 - 150 - 30 - 46 + 25 + v_extra),
scale=(50, 50),
transition=Image.Transition.IN_LEFT,
transition_delay=tval).autoretain()
Text(ba.Lstr(value=mvp_name),
position=(270, ts_height / 2 - 150 - 30 - 36 + v_extra + 15),
h_align=Text.HAlign.LEFT,
v_align=Text.VAlign.CENTER,
maxwidth=180,
color=ba.safecolor(mvp.team.color + (1, )),
transition=Text.Transition.IN_LEFT,
transition_delay=tval).autoretain()
tval += 4 * t_incr
# Most killed.
most_killed = 0
mkp, mkp_name = None, None
for entry in player_entries:
if entry[2].killed_count >= most_killed:
mkp = entry[2]
mkp_name = entry[1]
most_killed = entry[2].killed_count
if mkp is not None:
Text(ba.Lstr(resource='mostViolatedPlayerText'),
color=(0.5, 0.5, 0.5, 1.0),
v_align=Text.VAlign.CENTER,
maxwidth=300,
position=(180, ts_height / 2 - 300 + v_extra + 15),
transition=Text.Transition.IN_LEFT,
h_align=Text.HAlign.LEFT,
transition_delay=tval).autoretain()
Text(ba.Lstr(value='(${A})',
subs=[('${A}',
ba.Lstr(resource='deathsTallyText',
subs=[('${COUNT}', str(most_killed))]))
]),
position=(260, ts_height / 2 - 300 - 15 + v_extra),
h_align=Text.HAlign.LEFT,
scale=0.6,
color=(0.3, 0.3, 0.3, 1.0),
transition=Text.Transition.IN_LEFT,
transition_delay=tval).autoretain()
tval += 4 * t_incr
Image(mkp.get_icon(),
position=(233, ts_height / 2 - 300 - 30 - 46 + 25 + v_extra),
scale=(50, 50),
transition=Image.Transition.IN_LEFT,
transition_delay=tval).autoretain()
Text(ba.Lstr(value=mkp_name),
position=(270, ts_height / 2 - 300 - 30 - 36 + v_extra + 15),
h_align=Text.HAlign.LEFT,
v_align=Text.VAlign.CENTER,
color=ba.safecolor(mkp.team.color + (1, )),
maxwidth=180,
transition=Text.Transition.IN_LEFT,
transition_delay=tval).autoretain()
tval += 4 * t_incr
# Now show individual scores.
tdelay = tval
Text(ba.Lstr(resource='finalScoresText'),
color=(0.5, 0.5, 0.5, 1.0),
position=(ts_h_offs, ts_height / 2),
transition=Text.Transition.IN_RIGHT,
transition_delay=tdelay).autoretain()
tdelay += 4 * t_incr
v_offs = 0.0
tdelay += len(player_entries) * 8 * t_incr
for _score, name, prec in player_entries:
tdelay -= 4 * t_incr
v_offs -= 40
Text(str(prec.team.sessiondata['score'])
if self._is_ffa else str(prec.score),
color=(0.5, 0.5, 0.5, 1.0),
position=(ts_h_offs + 230, ts_height / 2 + v_offs),
h_align=Text.HAlign.RIGHT,
transition=Text.Transition.IN_RIGHT,
transition_delay=tdelay).autoretain()
tdelay -= 4 * t_incr
Image(prec.get_icon(),
position=(ts_h_offs - 72, ts_height / 2 + v_offs + 15),
scale=(30, 30),
transition=Image.Transition.IN_LEFT,
transition_delay=tdelay).autoretain()
Text(ba.Lstr(value=name),
position=(ts_h_offs - 50, ts_height / 2 + v_offs + 15),
h_align=Text.HAlign.LEFT,
v_align=Text.VAlign.CENTER,
maxwidth=180,
color=ba.safecolor(prec.team.color + (1, )),
transition=Text.Transition.IN_RIGHT,
transition_delay=tdelay).autoretain()
ba.timer(15.0, ba.WeakCall(self._show_tips))
def _show_tips(self) -> None:
from bastd.actor.tipstext import TipsText
self._tips_text = TipsText(offs_y=70)
def _play_victory_music(self) -> None:
# Make sure we don't stomp on the next activity's music choice.
if not self.is_transitioning_out():
ba.setmusic(ba.MusicType.VICTORY)
def _show_winner(self, team: ba.Team) -> None:
from bastd.actor.image import Image
from bastd.actor.zoomtext import ZoomText
if not self._is_ffa:
offs_v = 0.0
ZoomText(team.name,
position=(0, 97),
color=team.color,
scale=1.15,
jitter=1.0,
maxwidth=250).autoretain()
else:
offs_v = -80.0
if len(team.players) == 1:
i = Image(team.players[0].get_icon(),
position=(0, 143),
scale=(100, 100)).autoretain()
assert i.node
ba.animate(i.node, 'opacity', {0.0: 0.0, 0.25: 1.0})
ZoomText(ba.Lstr(
value=team.players[0].get_name(full=True, icon=False)),
position=(0, 97 + offs_v),
color=team.color,
scale=1.15,
jitter=1.0,
maxwidth=250).autoretain()
s_extra = 1.0 if self._is_ffa else 1.0
# Some languages say "FOO WINS" differently for teams vs players.
if isinstance(self.session, ba.FreeForAllSession):
wins_resource = 'seriesWinLine1PlayerText'
else:
wins_resource = 'seriesWinLine1TeamText'
wins_text = ba.Lstr(resource=wins_resource)
# Temp - if these come up as the english default, fall-back to the
# unified old form which is more likely to be translated.
ZoomText(wins_text,
position=(0, -10 + offs_v),
color=team.color,
scale=0.65 * s_extra,
jitter=1.0,
maxwidth=250).autoretain()
ZoomText(ba.Lstr(resource='seriesWinLine2Text'),
position=(0, -110 + offs_v),
scale=1.0 * s_extra,
color=team.color,
jitter=1.0,
maxwidth=250).autoretain()

View File

@ -135,7 +135,7 @@ class RespawnIcon:
def _get_context(self, player: ba.Player) -> Tuple[bool, float, Dict]: def _get_context(self, player: ba.Player) -> Tuple[bool, float, Dict]:
"""Return info on where we should be shown and stored.""" """Return info on where we should be shown and stored."""
activity = ba.getactivity() activity = ba.getactivity()
if isinstance(ba.getsession(), ba.TeamsSession): if isinstance(ba.getsession(), ba.DualTeamSession):
on_right = player.team.get_id() % 2 == 1 on_right = player.team.get_id() % 2 == 1
# Store a list of icons in the team. # Store a list of icons in the team.

View File

@ -49,7 +49,7 @@ class AssaultGame(ba.TeamGameActivity):
@classmethod @classmethod
def supports_session_type(cls, sessiontype: Type[ba.Session]) -> bool: def supports_session_type(cls, sessiontype: Type[ba.Session]) -> bool:
return issubclass(sessiontype, ba.TeamsSession) return issubclass(sessiontype, ba.DualTeamSession)
@classmethod @classmethod
def get_supported_maps(cls, sessiontype: Type[ba.Session]) -> List[str]: def get_supported_maps(cls, sessiontype: Type[ba.Session]) -> List[str]:

View File

@ -91,7 +91,7 @@ class CaptureTheFlagGame(ba.TeamGameActivity):
@classmethod @classmethod
def supports_session_type(cls, sessiontype: Type[ba.Session]) -> bool: def supports_session_type(cls, sessiontype: Type[ba.Session]) -> bool:
return issubclass(sessiontype, ba.TeamsSession) return issubclass(sessiontype, ba.DualTeamSession)
@classmethod @classmethod
def get_supported_maps(cls, sessiontype: Type[ba.Session]) -> List[str]: def get_supported_maps(cls, sessiontype: Type[ba.Session]) -> List[str]:

View File

@ -71,7 +71,7 @@ class ConquestGame(ba.TeamGameActivity):
@classmethod @classmethod
def supports_session_type(cls, sessiontype: Type[ba.Session]) -> bool: def supports_session_type(cls, sessiontype: Type[ba.Session]) -> bool:
return issubclass(sessiontype, ba.TeamsSession) return issubclass(sessiontype, ba.DualTeamSession)
@classmethod @classmethod
def get_supported_maps(cls, sessiontype: Type[ba.Session]) -> List[str]: def get_supported_maps(cls, sessiontype: Type[ba.Session]) -> List[str]:

View File

@ -48,7 +48,7 @@ class DeathMatchGame(ba.TeamGameActivity):
@classmethod @classmethod
def supports_session_type(cls, sessiontype: Type[ba.Session]) -> bool: def supports_session_type(cls, sessiontype: Type[ba.Session]) -> bool:
return (issubclass(sessiontype, ba.TeamsSession) return (issubclass(sessiontype, ba.DualTeamSession)
or issubclass(sessiontype, ba.FreeForAllSession)) or issubclass(sessiontype, ba.FreeForAllSession))
@classmethod @classmethod

View File

@ -63,7 +63,7 @@ class EasterEggHuntGame(ba.TeamGameActivity):
@classmethod @classmethod
def supports_session_type(cls, sessiontype: Type[ba.Session]) -> bool: def supports_session_type(cls, sessiontype: Type[ba.Session]) -> bool:
return (issubclass(sessiontype, ba.CoopSession) return (issubclass(sessiontype, ba.CoopSession)
or issubclass(sessiontype, ba.TeamsSession) or issubclass(sessiontype, ba.DualTeamSession)
or issubclass(sessiontype, ba.FreeForAllSession)) or issubclass(sessiontype, ba.FreeForAllSession))
@classmethod @classmethod

View File

@ -185,7 +185,7 @@ class EliminationGame(ba.TeamGameActivity):
@classmethod @classmethod
def supports_session_type(cls, sessiontype: Type[ba.Session]) -> bool: def supports_session_type(cls, sessiontype: Type[ba.Session]) -> bool:
return (issubclass(sessiontype, ba.TeamsSession) return (issubclass(sessiontype, ba.DualTeamSession)
or issubclass(sessiontype, ba.FreeForAllSession)) or issubclass(sessiontype, ba.FreeForAllSession))
@classmethod @classmethod
@ -214,7 +214,7 @@ class EliminationGame(ba.TeamGameActivity):
}), }),
("Epic Mode", {'default': False})] # yapf: disable ("Epic Mode", {'default': False})] # yapf: disable
if issubclass(sessiontype, ba.TeamsSession): if issubclass(sessiontype, ba.DualTeamSession):
settings.append(("Solo Mode", {'default': False})) settings.append(("Solo Mode", {'default': False}))
settings.append(("Balance Total Lives", {'default': False})) settings.append(("Balance Total Lives", {'default': False}))
@ -237,11 +237,11 @@ class EliminationGame(ba.TeamGameActivity):
def get_instance_description(self) -> Union[str, Sequence]: def get_instance_description(self) -> Union[str, Sequence]:
return 'Last team standing wins.' if isinstance( return 'Last team standing wins.' if isinstance(
self.session, ba.TeamsSession) else 'Last one standing wins.' self.session, ba.DualTeamSession) else 'Last one standing wins.'
def get_instance_scoreboard_description(self) -> Union[str, Sequence]: def get_instance_scoreboard_description(self) -> Union[str, Sequence]:
return 'last team standing wins' if isinstance( return 'last team standing wins' if isinstance(
self.session, ba.TeamsSession) else 'last one standing wins' self.session, ba.DualTeamSession) else 'last one standing wins'
def on_transition_in(self) -> None: def on_transition_in(self) -> None:
self.default_music = (ba.MusicType.EPIC if self.settings['Epic Mode'] self.default_music = (ba.MusicType.EPIC if self.settings['Epic Mode']
@ -463,7 +463,7 @@ class EliminationGame(ba.TeamGameActivity):
# If balance-team-lives is on, add lives to the smaller team until # If balance-team-lives is on, add lives to the smaller team until
# total lives match. # total lives match.
if (isinstance(self.session, ba.TeamsSession) if (isinstance(self.session, ba.DualTeamSession)
and self.settings['Balance Total Lives'] and self.settings['Balance Total Lives']
and self.teams[0].players and self.teams[1].players): and self.teams[0].players and self.teams[1].players):
if self._get_total_team_lives( if self._get_total_team_lives(

View File

@ -77,7 +77,7 @@ class FootballTeamGame(ba.TeamGameActivity):
@classmethod @classmethod
def supports_session_type(cls, sessiontype: Type[ba.Session]) -> bool: def supports_session_type(cls, sessiontype: Type[ba.Session]) -> bool:
# We only support two-team play. # We only support two-team play.
return issubclass(sessiontype, ba.TeamsSession) return issubclass(sessiontype, ba.DualTeamSession)
@classmethod @classmethod
def get_description(cls, sessiontype: Type[ba.Session]) -> str: def get_description(cls, sessiontype: Type[ba.Session]) -> str:

View File

@ -120,7 +120,7 @@ class HockeyGame(ba.TeamGameActivity):
@classmethod @classmethod
def supports_session_type(cls, sessiontype: Type[ba.Session]) -> bool: def supports_session_type(cls, sessiontype: Type[ba.Session]) -> bool:
return issubclass(sessiontype, ba.TeamsSession) return issubclass(sessiontype, ba.DualTeamSession)
@classmethod @classmethod
def get_supported_maps(cls, sessiontype: Type[ba.Session]) -> List[str]: def get_supported_maps(cls, sessiontype: Type[ba.Session]) -> List[str]:

View File

@ -59,7 +59,7 @@ class KeepAwayGame(ba.TeamGameActivity):
@classmethod @classmethod
def supports_session_type(cls, sessiontype: Type[ba.Session]) -> bool: def supports_session_type(cls, sessiontype: Type[ba.Session]) -> bool:
return (issubclass(sessiontype, ba.TeamsSession) return (issubclass(sessiontype, ba.DualTeamSession)
or issubclass(sessiontype, ba.FreeForAllSession)) or issubclass(sessiontype, ba.FreeForAllSession))
@classmethod @classmethod

View File

@ -61,7 +61,7 @@ class KingOfTheHillGame(ba.TeamGameActivity):
@classmethod @classmethod
def supports_session_type(cls, sessiontype: Type[ba.Session]) -> bool: def supports_session_type(cls, sessiontype: Type[ba.Session]) -> bool:
return issubclass(sessiontype, ba.TeamBaseSession) return issubclass(sessiontype, ba.MultiTeamSession)
@classmethod @classmethod
def get_supported_maps(cls, sessiontype: Type[ba.Session]) -> List[str]: def get_supported_maps(cls, sessiontype: Type[ba.Session]) -> List[str]:

View File

@ -71,7 +71,7 @@ class MeteorShowerGame(ba.TeamGameActivity):
# We support teams, free-for-all, and co-op sessions. # We support teams, free-for-all, and co-op sessions.
@classmethod @classmethod
def supports_session_type(cls, sessiontype: Type[ba.Session]) -> bool: def supports_session_type(cls, sessiontype: Type[ba.Session]) -> bool:
return (issubclass(sessiontype, ba.TeamsSession) return (issubclass(sessiontype, ba.DualTeamSession)
or issubclass(sessiontype, ba.FreeForAllSession) or issubclass(sessiontype, ba.FreeForAllSession)
or issubclass(sessiontype, ba.CoopSession)) or issubclass(sessiontype, ba.CoopSession))

View File

@ -88,7 +88,7 @@ class RaceGame(ba.TeamGameActivity):
@classmethod @classmethod
def supports_session_type(cls, sessiontype: Type[ba.Session]) -> bool: def supports_session_type(cls, sessiontype: Type[ba.Session]) -> bool:
return issubclass(sessiontype, ba.TeamBaseSession) return issubclass(sessiontype, ba.MultiTeamSession)
@classmethod @classmethod
def get_supported_maps(cls, sessiontype: Type[ba.Session]) -> List[str]: def get_supported_maps(cls, sessiontype: Type[ba.Session]) -> List[str]:
@ -125,7 +125,7 @@ class RaceGame(ba.TeamGameActivity):
'default': False 'default': False
})] # yapf: disable })] # yapf: disable
if issubclass(sessiontype, ba.TeamsSession): if issubclass(sessiontype, ba.DualTeamSession):
settings.append(('Entire Team Must Finish', {'default': False})) settings.append(('Entire Team Must Finish', {'default': False}))
return settings return settings
@ -156,7 +156,7 @@ class RaceGame(ba.TeamGameActivity):
self._bomb_spawn_timer: Optional[ba.Timer] = None self._bomb_spawn_timer: Optional[ba.Timer] = None
def get_instance_description(self) -> Union[str, Sequence]: def get_instance_description(self) -> Union[str, Sequence]:
if isinstance(self.session, ba.TeamsSession) and self.settings.get( if isinstance(self.session, ba.DualTeamSession) and self.settings.get(
'Entire Team Must Finish', False): 'Entire Team Must Finish', False):
t_str = ' Your entire team has to finish.' t_str = ' Your entire team has to finish.'
else: else:
@ -252,7 +252,7 @@ class RaceGame(ba.TeamGameActivity):
# value is the min of all team players. # value is the min of all team players.
# Otherwise its the max. # Otherwise its the max.
if isinstance(self.session, if isinstance(self.session,
ba.TeamsSession) and self.settings.get( ba.DualTeamSession) and self.settings.get(
'Entire Team Must Finish'): 'Entire Team Must Finish'):
team.gamedata['lap'] = min( team.gamedata['lap'] = min(
[p.gamedata['lap'] for p in team.players]) [p.gamedata['lap'] for p in team.players])
@ -265,7 +265,7 @@ class RaceGame(ba.TeamGameActivity):
# In teams mode, hand out points based on the order # In teams mode, hand out points based on the order
# players come in. # players come in.
if isinstance(self.session, ba.TeamsSession): if isinstance(self.session, ba.DualTeamSession):
assert self._team_finish_pts is not None assert self._team_finish_pts is not None
if self._team_finish_pts > 0: if self._team_finish_pts > 0:
self.stats.player_scored(player, self.stats.player_scored(player,
@ -364,7 +364,7 @@ class RaceGame(ba.TeamGameActivity):
# A player leaving disqualifies the team if 'Entire Team Must Finish' # A player leaving disqualifies the team if 'Entire Team Must Finish'
# is on (otherwise in teams mode everyone could just leave except the # is on (otherwise in teams mode everyone could just leave except the
# leading player to win). # leading player to win).
if (isinstance(self.session, ba.TeamsSession) if (isinstance(self.session, ba.DualTeamSession)
and self.settings.get('Entire Team Must Finish')): and self.settings.get('Entire Team Must Finish')):
ba.screenmessage(ba.Lstr( ba.screenmessage(ba.Lstr(
translate=('statements', translate=('statements',
@ -396,7 +396,7 @@ class RaceGame(ba.TeamGameActivity):
if not distances: if not distances:
teams_dist = 0 teams_dist = 0
else: else:
if (isinstance(self.session, ba.TeamsSession) if (isinstance(self.session, ba.DualTeamSession)
and self.settings.get('Entire Team Must Finish')): and self.settings.get('Entire Team Must Finish')):
teams_dist = min(distances) teams_dist = min(distances)
else: else:
@ -690,7 +690,7 @@ class RaceGame(ba.TeamGameActivity):
# In teams mode its over as soon as any team finishes the race # In teams mode its over as soon as any team finishes the race
# FIXME: The get_ffa_point_awards code looks dangerous. # FIXME: The get_ffa_point_awards code looks dangerous.
if isinstance(session, ba.TeamsSession): if isinstance(session, ba.DualTeamSession):
self.end_game() self.end_game()
else: else:
# In ffa we keep the race going while there's still any points # In ffa we keep the race going while there's still any points
@ -729,7 +729,7 @@ class RaceGame(ba.TeamGameActivity):
# odd to be announcing that now. # odd to be announcing that now.
self.end(results=results, self.end(results=results,
announce_winning_team=isinstance(self.session, announce_winning_team=isinstance(self.session,
ba.TeamsSession)) ba.DualTeamSession))
def handlemessage(self, msg: Any) -> Any: def handlemessage(self, msg: Any) -> Any:
if isinstance(msg, PlayerSpazDeathMessage): if isinstance(msg, PlayerSpazDeathMessage):

View File

@ -57,7 +57,7 @@ class TargetPracticeGame(ba.TeamGameActivity):
def supports_session_type(cls, sessiontype: Type[ba.Session]) -> bool: def supports_session_type(cls, sessiontype: Type[ba.Session]) -> bool:
# We support any teams or versus sessions. # We support any teams or versus sessions.
return (issubclass(sessiontype, ba.CoopSession) return (issubclass(sessiontype, ba.CoopSession)
or issubclass(sessiontype, ba.TeamBaseSession)) or issubclass(sessiontype, ba.MultiTeamSession))
@classmethod @classmethod
def get_settings( def get_settings(

View File

@ -434,7 +434,7 @@ class MainMenuActivity(ba.Activity):
from bastd.ui.playlist.browser import ( from bastd.ui.playlist.browser import (
PlaylistBrowserWindow) PlaylistBrowserWindow)
ba.app.main_menu_window = PlaylistBrowserWindow( ba.app.main_menu_window = PlaylistBrowserWindow(
sessiontype=ba.TeamsSession, sessiontype=ba.DualTeamSession,
transition=None).get_root_widget() transition=None).get_root_widget()
elif main_window == 'Free-for-All Game Select': elif main_window == 'Free-for-All Game Select':
# pylint: disable=cyclic-import # pylint: disable=cyclic-import

View File

@ -450,7 +450,7 @@ class KioskWindow(ba.Window):
endcall=ba.Call( endcall=ba.Call(
ba.pushcall, ba.pushcall,
ba.Call(_ba.new_host_session, ba.Call(_ba.new_host_session,
ba.TeamsSession))) ba.DualTeamSession)))
ba.containerwidget(edit=self._root_widget, transition='out_left') ba.containerwidget(edit=self._root_widget, transition='out_left')
return return

View File

@ -438,7 +438,7 @@ class PlayWindow(ba.Window):
ba.containerwidget(edit=self._root_widget, transition='out_left') ba.containerwidget(edit=self._root_widget, transition='out_left')
ba.app.main_menu_window = (browser.PlaylistBrowserWindow( ba.app.main_menu_window = (browser.PlaylistBrowserWindow(
origin_widget=self._teams_button, origin_widget=self._teams_button,
sessiontype=ba.TeamsSession).get_root_widget()) sessiontype=ba.DualTeamSession).get_root_widget())
def _free_for_all(self) -> None: def _free_for_all(self) -> None:
# pylint: disable=cyclic-import # pylint: disable=cyclic-import

View File

@ -38,15 +38,15 @@ class PlaylistTypeVars:
from ba.internal import (get_default_teams_playlist, from ba.internal import (get_default_teams_playlist,
get_default_free_for_all_playlist) get_default_free_for_all_playlist)
self.sessiontype: Type[ba.Session] self.sessiontype: Type[ba.Session]
if issubclass(sessiontype, ba.TeamsSession): if issubclass(sessiontype, ba.DualTeamSession):
play_mode_name = ba.Lstr(resource='playModes.teamsText', play_mode_name = ba.Lstr(resource='playModes.teamsText',
fallback_resource='teamsText') fallback_resource='teamsText')
self.get_default_list_call = get_default_teams_playlist self.get_default_list_call = get_default_teams_playlist
self.session_type_name = 'ba.TeamsSession' self.session_type_name = 'ba.DualTeamSession'
self.config_name = 'Team Tournament' self.config_name = 'Team Tournament'
self.window_title_name = ba.Lstr(resource='playModes.teamsText', self.window_title_name = ba.Lstr(resource='playModes.teamsText',
fallback_resource='teamsText') fallback_resource='teamsText')
self.sessiontype = ba.TeamsSession self.sessiontype = ba.DualTeamSession
elif issubclass(sessiontype, ba.FreeForAllSession): elif issubclass(sessiontype, ba.FreeForAllSession):
play_mode_name = ba.Lstr(resource='playModes.freeForAllText', play_mode_name = ba.Lstr(resource='playModes.freeForAllText',
fallback_resource='freeForAllText') fallback_resource='freeForAllText')

View File

@ -55,7 +55,7 @@ class PlaylistBrowserWindow(ba.Window):
scale_origin = None scale_origin = None
# Store state for when we exit the next game. # Store state for when we exit the next game.
if issubclass(sessiontype, ba.TeamsSession): if issubclass(sessiontype, ba.DualTeamSession):
ba.app.main_window = "Team Game Select" ba.app.main_window = "Team Game Select"
ba.set_analytics_screen('Teams Window') ba.set_analytics_screen('Teams Window')
elif issubclass(sessiontype, ba.FreeForAllSession): elif issubclass(sessiontype, ba.FreeForAllSession):
@ -412,7 +412,7 @@ class PlaylistBrowserWindow(ba.Window):
if name == '__default__': if name == '__default__':
if self._sessiontype is ba.FreeForAllSession: if self._sessiontype is ba.FreeForAllSession:
playlist = (get_default_free_for_all_playlist()) playlist = (get_default_free_for_all_playlist())
elif self._sessiontype is ba.TeamsSession: elif self._sessiontype is ba.DualTeamSession:
playlist = get_default_teams_playlist() playlist = get_default_teams_playlist()
else: else:
raise Exception("unrecognized session-type: " + raise Exception("unrecognized session-type: " +

View File

@ -66,7 +66,7 @@ class PlayOptionsWindow(popup.PopupWindow):
self._height = 330.0 - 50.0 self._height = 330.0 - 50.0
# In teams games, show the custom names/colors button. # In teams games, show the custom names/colors button.
if self._sessiontype is ba.TeamsSession: if self._sessiontype is ba.DualTeamSession:
self._height += 50.0 self._height += 50.0
self._row_height = 45.0 self._row_height = 45.0
@ -90,7 +90,7 @@ class PlayOptionsWindow(popup.PopupWindow):
if name == '__default__': if name == '__default__':
if self._sessiontype is ba.FreeForAllSession: if self._sessiontype is ba.FreeForAllSession:
plst = get_default_free_for_all_playlist() plst = get_default_free_for_all_playlist()
elif self._sessiontype is ba.TeamsSession: elif self._sessiontype is ba.DualTeamSession:
plst = get_default_teams_playlist() plst = get_default_teams_playlist()
else: else:
raise Exception("unrecognized session-type: " + raise Exception("unrecognized session-type: " +
@ -262,7 +262,7 @@ class PlayOptionsWindow(popup.PopupWindow):
# Team names/colors. # Team names/colors.
self._custom_colors_names_button: Optional[ba.Widget] self._custom_colors_names_button: Optional[ba.Widget]
if self._sessiontype is ba.TeamsSession: if self._sessiontype is ba.DualTeamSession:
y_offs = 50 if show_shuffle_check_box else 0 y_offs = 50 if show_shuffle_check_box else 0
self._custom_colors_names_button = ba.buttonwidget( self._custom_colors_names_button = ba.buttonwidget(
parent=self.root_widget, parent=self.root_widget,

View File

@ -111,7 +111,7 @@ def instantiate_store_item_display(item_name: str,
modes_l = [] modes_l = []
if gametype.supports_session_type(ba.CoopSession): if gametype.supports_session_type(ba.CoopSession):
modes_l.append(ba.Lstr(resource='playModes.coopText')) modes_l.append(ba.Lstr(resource='playModes.coopText'))
if gametype.supports_session_type(ba.TeamsSession): if gametype.supports_session_type(ba.DualTeamSession):
modes_l.append(ba.Lstr(resource='playModes.teamsText')) modes_l.append(ba.Lstr(resource='playModes.teamsText'))
if gametype.supports_session_type(ba.FreeForAllSession): if gametype.supports_session_type(ba.FreeForAllSession):
modes_l.append(ba.Lstr(resource='playModes.freeForAllText')) modes_l.append(ba.Lstr(resource='playModes.freeForAllText'))

View File

@ -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 2020-04-14 for Ballistica version 1.5.0 build 20001</em></h4> <h4><em>last updated on 2020-04-15 for Ballistica version 1.5.0 build 20001</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>
@ -30,10 +30,10 @@
<li><a href="#class_ba_Session">ba.Session</a></li> <li><a href="#class_ba_Session">ba.Session</a></li>
<ul> <ul>
<li><a href="#class_ba_CoopSession">ba.CoopSession</a></li> <li><a href="#class_ba_CoopSession">ba.CoopSession</a></li>
<li><a href="#class_ba_TeamBaseSession">ba.TeamBaseSession</a></li> <li><a href="#class_ba_MultiTeamSession">ba.MultiTeamSession</a></li>
<ul> <ul>
<li><a href="#class_ba_DualTeamSession">ba.DualTeamSession</a></li>
<li><a href="#class_ba_FreeForAllSession">ba.FreeForAllSession</a></li> <li><a href="#class_ba_FreeForAllSession">ba.FreeForAllSession</a></li>
<li><a href="#class_ba_TeamsSession">ba.TeamsSession</a></li>
</ul> </ul>
</ul> </ul>
<li><a href="#class_ba_Stats">ba.Stats</a></li> <li><a href="#class_ba_Stats">ba.Stats</a></li>
@ -1843,11 +1843,32 @@ its time with lingering corpses, sound effects, etc.</p>
<dt><h4><a name="method_ba_DroppedMessage____init__">&lt;constructor&gt;</a></dt></h4><dd> <dt><h4><a name="method_ba_DroppedMessage____init__">&lt;constructor&gt;</a></dt></h4><dd>
<p><span>ba.DroppedMessage(node: <a href="#class_ba_Node">ba.Node</a>)</span></p> <p><span>ba.DroppedMessage(node: <a href="#class_ba_Node">ba.Node</a>)</span></p>
</dd>
</dl>
<hr>
<h2><strong><a name="class_ba_DualTeamSession">ba.DualTeamSession</a></strong></h3>
<p>inherits from: <a href="#class_ba_MultiTeamSession">ba.MultiTeamSession</a>, <a href="#class_ba_Session">ba.Session</a></p>
<p><a href="#class_ba_Session">ba.Session</a> type for teams mode games.</p>
<p>Category: <a href="#class_category_Gameplay_Classes">Gameplay Classes</a>
</p>
<h3>Attributes Inherited:</h3>
<h5><a href="#attr_ba_Session__campaign">campaign</a>, <a href="#attr_ba_Session__lobby">lobby</a>, <a href="#attr_ba_Session__max_players">max_players</a>, <a href="#attr_ba_Session__min_players">min_players</a>, <a href="#attr_ba_Session__players">players</a>, <a href="#attr_ba_Session__teams">teams</a></h5>
<h3>Methods Inherited:</h3>
<h5><a href="#method_ba_MultiTeamSession__announce_game_results">announce_game_results()</a>, <a href="#method_ba_MultiTeamSession__begin_next_activity">begin_next_activity()</a>, <a href="#method_ba_MultiTeamSession__end">end()</a>, <a href="#method_ba_MultiTeamSession__end_activity">end_activity()</a>, <a href="#method_ba_MultiTeamSession__get_custom_menu_entries">get_custom_menu_entries()</a>, <a href="#method_ba_MultiTeamSession__get_ffa_series_length">get_ffa_series_length()</a>, <a href="#method_ba_MultiTeamSession__get_game_number">get_game_number()</a>, <a href="#method_ba_MultiTeamSession__get_max_players">get_max_players()</a>, <a href="#method_ba_MultiTeamSession__get_next_game_description">get_next_game_description()</a>, <a href="#method_ba_MultiTeamSession__get_series_length">get_series_length()</a>, <a href="#method_ba_MultiTeamSession__getactivity">getactivity()</a>, <a href="#method_ba_MultiTeamSession__handlemessage">handlemessage()</a>, <a href="#method_ba_MultiTeamSession__launch_end_session_activity">launch_end_session_activity()</a>, <a href="#method_ba_MultiTeamSession__on_activity_end">on_activity_end()</a>, <a href="#method_ba_MultiTeamSession__on_player_leave">on_player_leave()</a>, <a href="#method_ba_MultiTeamSession__on_player_request">on_player_request()</a>, <a href="#method_ba_MultiTeamSession__on_team_join">on_team_join()</a>, <a href="#method_ba_MultiTeamSession__on_team_leave">on_team_leave()</a>, <a href="#method_ba_MultiTeamSession__set_activity">set_activity()</a></h5>
<h3>Methods Defined or Overridden:</h3>
<dl>
<dt><h4><a name="method_ba_DualTeamSession____init__">&lt;constructor&gt;</a></dt></h4><dd>
<p><span>ba.DualTeamSession()</span></p>
<p>Set up playlists and launches a <a href="#class_ba_Activity">ba.Activity</a> to accept joiners.</p>
</dd> </dd>
</dl> </dl>
<hr> <hr>
<h2><strong><a name="class_ba_FreeForAllSession">ba.FreeForAllSession</a></strong></h3> <h2><strong><a name="class_ba_FreeForAllSession">ba.FreeForAllSession</a></strong></h3>
<p>inherits from: <a href="#class_ba_TeamBaseSession">ba.TeamBaseSession</a>, <a href="#class_ba_Session">ba.Session</a></p> <p>inherits from: <a href="#class_ba_MultiTeamSession">ba.MultiTeamSession</a>, <a href="#class_ba_Session">ba.Session</a></p>
<p><a href="#class_ba_Session">ba.Session</a> type for free-for-all mode games.</p> <p><a href="#class_ba_Session">ba.Session</a> type for free-for-all mode games.</p>
<p>Category: <a href="#class_category_Gameplay_Classes">Gameplay Classes</a> <p>Category: <a href="#class_category_Gameplay_Classes">Gameplay Classes</a>
@ -1856,7 +1877,7 @@ its time with lingering corpses, sound effects, etc.</p>
<h3>Attributes Inherited:</h3> <h3>Attributes Inherited:</h3>
<h5><a href="#attr_ba_Session__campaign">campaign</a>, <a href="#attr_ba_Session__lobby">lobby</a>, <a href="#attr_ba_Session__max_players">max_players</a>, <a href="#attr_ba_Session__min_players">min_players</a>, <a href="#attr_ba_Session__players">players</a>, <a href="#attr_ba_Session__teams">teams</a></h5> <h5><a href="#attr_ba_Session__campaign">campaign</a>, <a href="#attr_ba_Session__lobby">lobby</a>, <a href="#attr_ba_Session__max_players">max_players</a>, <a href="#attr_ba_Session__min_players">min_players</a>, <a href="#attr_ba_Session__players">players</a>, <a href="#attr_ba_Session__teams">teams</a></h5>
<h3>Methods Inherited:</h3> <h3>Methods Inherited:</h3>
<h5><a href="#method_ba_TeamBaseSession__announce_game_results">announce_game_results()</a>, <a href="#method_ba_TeamBaseSession__begin_next_activity">begin_next_activity()</a>, <a href="#method_ba_TeamBaseSession__end">end()</a>, <a href="#method_ba_TeamBaseSession__end_activity">end_activity()</a>, <a href="#method_ba_TeamBaseSession__get_custom_menu_entries">get_custom_menu_entries()</a>, <a href="#method_ba_TeamBaseSession__get_ffa_series_length">get_ffa_series_length()</a>, <a href="#method_ba_TeamBaseSession__get_game_number">get_game_number()</a>, <a href="#method_ba_TeamBaseSession__get_max_players">get_max_players()</a>, <a href="#method_ba_TeamBaseSession__get_next_game_description">get_next_game_description()</a>, <a href="#method_ba_TeamBaseSession__get_series_length">get_series_length()</a>, <a href="#method_ba_TeamBaseSession__getactivity">getactivity()</a>, <a href="#method_ba_TeamBaseSession__handlemessage">handlemessage()</a>, <a href="#method_ba_TeamBaseSession__launch_end_session_activity">launch_end_session_activity()</a>, <a href="#method_ba_TeamBaseSession__on_activity_end">on_activity_end()</a>, <a href="#method_ba_TeamBaseSession__on_player_leave">on_player_leave()</a>, <a href="#method_ba_TeamBaseSession__on_player_request">on_player_request()</a>, <a href="#method_ba_TeamBaseSession__on_team_join">on_team_join()</a>, <a href="#method_ba_TeamBaseSession__on_team_leave">on_team_leave()</a>, <a href="#method_ba_TeamBaseSession__set_activity">set_activity()</a></h5> <h5><a href="#method_ba_MultiTeamSession__announce_game_results">announce_game_results()</a>, <a href="#method_ba_MultiTeamSession__begin_next_activity">begin_next_activity()</a>, <a href="#method_ba_MultiTeamSession__end">end()</a>, <a href="#method_ba_MultiTeamSession__end_activity">end_activity()</a>, <a href="#method_ba_MultiTeamSession__get_custom_menu_entries">get_custom_menu_entries()</a>, <a href="#method_ba_MultiTeamSession__get_ffa_series_length">get_ffa_series_length()</a>, <a href="#method_ba_MultiTeamSession__get_game_number">get_game_number()</a>, <a href="#method_ba_MultiTeamSession__get_max_players">get_max_players()</a>, <a href="#method_ba_MultiTeamSession__get_next_game_description">get_next_game_description()</a>, <a href="#method_ba_MultiTeamSession__get_series_length">get_series_length()</a>, <a href="#method_ba_MultiTeamSession__getactivity">getactivity()</a>, <a href="#method_ba_MultiTeamSession__handlemessage">handlemessage()</a>, <a href="#method_ba_MultiTeamSession__launch_end_session_activity">launch_end_session_activity()</a>, <a href="#method_ba_MultiTeamSession__on_activity_end">on_activity_end()</a>, <a href="#method_ba_MultiTeamSession__on_player_leave">on_player_leave()</a>, <a href="#method_ba_MultiTeamSession__on_player_request">on_player_request()</a>, <a href="#method_ba_MultiTeamSession__on_team_join">on_team_join()</a>, <a href="#method_ba_MultiTeamSession__on_team_leave">on_team_leave()</a>, <a href="#method_ba_MultiTeamSession__set_activity">set_activity()</a></h5>
<h3>Methods Defined or Overridden:</h3> <h3>Methods Defined or Overridden:</h3>
<h5><a href="#method_ba_FreeForAllSession____init__">&lt;constructor&gt;</a>, <a href="#method_ba_FreeForAllSession__get_ffa_point_awards">get_ffa_point_awards()</a></h5> <h5><a href="#method_ba_FreeForAllSession____init__">&lt;constructor&gt;</a>, <a href="#method_ba_FreeForAllSession__get_ffa_point_awards">get_ffa_point_awards()</a></h5>
<dl> <dl>
@ -3130,6 +3151,87 @@ m.add_actions(conditions=('they_have_material',
<p>Models are used for drawing. <p>Models are used for drawing.
Use <a href="#function_ba_getmodel">ba.getmodel</a>() to instantiate one.</p> Use <a href="#function_ba_getmodel">ba.getmodel</a>() to instantiate one.</p>
<hr>
<h2><strong><a name="class_ba_MultiTeamSession">ba.MultiTeamSession</a></strong></h3>
<p>inherits from: <a href="#class_ba_Session">ba.Session</a></p>
<p>Common base class for <a href="#class_ba_DualTeamSession">ba.DualTeamSession</a> and <a href="#class_ba_FreeForAllSession">ba.FreeForAllSession</a>.</p>
<p>Category: <a href="#class_category_Gameplay_Classes">Gameplay Classes</a></p>
<p> Free-for-all-mode is essentially just teams-mode with each <a href="#class_ba_Player">ba.Player</a> having
their own <a href="#class_ba_Team">ba.Team</a>, so there is much overlap in functionality.
</p>
<h3>Attributes Inherited:</h3>
<h5><a href="#attr_ba_Session__campaign">campaign</a>, <a href="#attr_ba_Session__lobby">lobby</a>, <a href="#attr_ba_Session__max_players">max_players</a>, <a href="#attr_ba_Session__min_players">min_players</a>, <a href="#attr_ba_Session__players">players</a>, <a href="#attr_ba_Session__teams">teams</a></h5>
<h3>Methods Inherited:</h3>
<h5><a href="#method_ba_Session__begin_next_activity">begin_next_activity()</a>, <a href="#method_ba_Session__end">end()</a>, <a href="#method_ba_Session__end_activity">end_activity()</a>, <a href="#method_ba_Session__get_custom_menu_entries">get_custom_menu_entries()</a>, <a href="#method_ba_Session__getactivity">getactivity()</a>, <a href="#method_ba_Session__handlemessage">handlemessage()</a>, <a href="#method_ba_Session__launch_end_session_activity">launch_end_session_activity()</a>, <a href="#method_ba_Session__on_player_leave">on_player_leave()</a>, <a href="#method_ba_Session__on_player_request">on_player_request()</a>, <a href="#method_ba_Session__on_team_leave">on_team_leave()</a>, <a href="#method_ba_Session__set_activity">set_activity()</a></h5>
<h3>Methods Defined or Overridden:</h3>
<h5><a href="#method_ba_MultiTeamSession____init__">&lt;constructor&gt;</a>, <a href="#method_ba_MultiTeamSession__announce_game_results">announce_game_results()</a>, <a href="#method_ba_MultiTeamSession__get_ffa_series_length">get_ffa_series_length()</a>, <a href="#method_ba_MultiTeamSession__get_game_number">get_game_number()</a>, <a href="#method_ba_MultiTeamSession__get_max_players">get_max_players()</a>, <a href="#method_ba_MultiTeamSession__get_next_game_description">get_next_game_description()</a>, <a href="#method_ba_MultiTeamSession__get_series_length">get_series_length()</a>, <a href="#method_ba_MultiTeamSession__on_activity_end">on_activity_end()</a>, <a href="#method_ba_MultiTeamSession__on_team_join">on_team_join()</a></h5>
<dl>
<dt><h4><a name="method_ba_MultiTeamSession____init__">&lt;constructor&gt;</a></dt></h4><dd>
<p><span>ba.MultiTeamSession()</span></p>
<p>Set up playlists and launches a <a href="#class_ba_Activity">ba.Activity</a> to accept joiners.</p>
</dd>
<dt><h4><a name="method_ba_MultiTeamSession__announce_game_results">announce_game_results()</a></dt></h4><dd>
<p><span>announce_game_results(self, activity: <a href="#class_ba_GameActivity">ba.GameActivity</a>, results: <a href="#class_ba_TeamGameResults">ba.TeamGameResults</a>, delay: float, announce_winning_team: bool = True) -&gt; None</span></p>
<p>Show basic game result at the end of a game.</p>
<p>(before transitioning to a score screen).
This will include a zoom-text of 'BLUE WINS'
or whatnot, along with a possible audio
announcement of the same.</p>
</dd>
<dt><h4><a name="method_ba_MultiTeamSession__get_ffa_series_length">get_ffa_series_length()</a></dt></h4><dd>
<p><span>get_ffa_series_length(self) -&gt; int</span></p>
<p>Return free-for-all series length.</p>
</dd>
<dt><h4><a name="method_ba_MultiTeamSession__get_game_number">get_game_number()</a></dt></h4><dd>
<p><span>get_game_number(self) -&gt; int</span></p>
<p>Returns which game in the series is currently being played.</p>
</dd>
<dt><h4><a name="method_ba_MultiTeamSession__get_max_players">get_max_players()</a></dt></h4><dd>
<p><span>get_max_players(self) -&gt; int</span></p>
<p>Return max number of <a href="#class_ba_Player">ba.Players</a> allowed to join the game at once.</p>
</dd>
<dt><h4><a name="method_ba_MultiTeamSession__get_next_game_description">get_next_game_description()</a></dt></h4><dd>
<p><span>get_next_game_description(self) -&gt; <a href="#class_ba_Lstr">ba.Lstr</a></span></p>
<p>Returns a description of the next game on deck.</p>
</dd>
<dt><h4><a name="method_ba_MultiTeamSession__get_series_length">get_series_length()</a></dt></h4><dd>
<p><span>get_series_length(self) -&gt; int</span></p>
<p>Return teams series length.</p>
</dd>
<dt><h4><a name="method_ba_MultiTeamSession__on_activity_end">on_activity_end()</a></dt></h4><dd>
<p><span>on_activity_end(self, activity: <a href="#class_ba_Activity">ba.Activity</a>, results: Any) -&gt; None</span></p>
<p>Called when the current <a href="#class_ba_Activity">ba.Activity</a> has ended.</p>
<p>The <a href="#class_ba_Session">ba.Session</a> should look at the results and start
another <a href="#class_ba_Activity">ba.Activity</a>.</p>
</dd>
<dt><h4><a name="method_ba_MultiTeamSession__on_team_join">on_team_join()</a></dt></h4><dd>
<p><span>on_team_join(self, team: <a href="#class_ba_Team">ba.Team</a>) -&gt; None</span></p>
<p>Called when a new <a href="#class_ba_Team">ba.Team</a> joins the session.</p>
</dd>
</dl>
<hr> <hr>
<h2><strong><a name="class_ba_MusicPlayer">ba.MusicPlayer</a></strong></h3> <h2><strong><a name="class_ba_MusicPlayer">ba.MusicPlayer</a></strong></h3>
<p><em>&lt;top level class&gt;</em> <p><em>&lt;top level class&gt;</em>
@ -3874,7 +3976,7 @@ cause the powerup box to make a sound and disappear or whatnot.</p>
<p>Category: <a href="#class_category_Gameplay_Classes">Gameplay Classes</a></p> <p>Category: <a href="#class_category_Gameplay_Classes">Gameplay Classes</a></p>
<p> Examples of sessions are <a href="#class_ba_FreeForAllSession">ba.FreeForAllSession</a>, <a href="#class_ba_TeamsSession">ba.TeamsSession</a>, and <p> Examples of sessions are <a href="#class_ba_FreeForAllSession">ba.FreeForAllSession</a>, <a href="#class_ba_DualTeamSession">ba.DualTeamSession</a>, and
<a href="#class_ba_CoopSession">ba.CoopSession</a>.</p> <a href="#class_ba_CoopSession">ba.CoopSession</a>.</p>
<p> A Session is responsible for wrangling and transitioning between various <p> A Session is responsible for wrangling and transitioning between various
@ -4339,87 +4441,6 @@ of the session.</p>
<p>Returns the numeric team ID.</p> <p>Returns the numeric team ID.</p>
</dd>
</dl>
<hr>
<h2><strong><a name="class_ba_TeamBaseSession">ba.TeamBaseSession</a></strong></h3>
<p>inherits from: <a href="#class_ba_Session">ba.Session</a></p>
<p>Common base class for <a href="#class_ba_TeamsSession">ba.TeamsSession</a> and <a href="#class_ba_FreeForAllSession">ba.FreeForAllSession</a>.</p>
<p>Category: <a href="#class_category_Gameplay_Classes">Gameplay Classes</a></p>
<p> Free-for-all-mode is essentially just teams-mode with each <a href="#class_ba_Player">ba.Player</a> having
their own <a href="#class_ba_Team">ba.Team</a>, so there is much overlap in functionality.
</p>
<h3>Attributes Inherited:</h3>
<h5><a href="#attr_ba_Session__campaign">campaign</a>, <a href="#attr_ba_Session__lobby">lobby</a>, <a href="#attr_ba_Session__max_players">max_players</a>, <a href="#attr_ba_Session__min_players">min_players</a>, <a href="#attr_ba_Session__players">players</a>, <a href="#attr_ba_Session__teams">teams</a></h5>
<h3>Methods Inherited:</h3>
<h5><a href="#method_ba_Session__begin_next_activity">begin_next_activity()</a>, <a href="#method_ba_Session__end">end()</a>, <a href="#method_ba_Session__end_activity">end_activity()</a>, <a href="#method_ba_Session__get_custom_menu_entries">get_custom_menu_entries()</a>, <a href="#method_ba_Session__getactivity">getactivity()</a>, <a href="#method_ba_Session__handlemessage">handlemessage()</a>, <a href="#method_ba_Session__launch_end_session_activity">launch_end_session_activity()</a>, <a href="#method_ba_Session__on_player_leave">on_player_leave()</a>, <a href="#method_ba_Session__on_player_request">on_player_request()</a>, <a href="#method_ba_Session__on_team_leave">on_team_leave()</a>, <a href="#method_ba_Session__set_activity">set_activity()</a></h5>
<h3>Methods Defined or Overridden:</h3>
<h5><a href="#method_ba_TeamBaseSession____init__">&lt;constructor&gt;</a>, <a href="#method_ba_TeamBaseSession__announce_game_results">announce_game_results()</a>, <a href="#method_ba_TeamBaseSession__get_ffa_series_length">get_ffa_series_length()</a>, <a href="#method_ba_TeamBaseSession__get_game_number">get_game_number()</a>, <a href="#method_ba_TeamBaseSession__get_max_players">get_max_players()</a>, <a href="#method_ba_TeamBaseSession__get_next_game_description">get_next_game_description()</a>, <a href="#method_ba_TeamBaseSession__get_series_length">get_series_length()</a>, <a href="#method_ba_TeamBaseSession__on_activity_end">on_activity_end()</a>, <a href="#method_ba_TeamBaseSession__on_team_join">on_team_join()</a></h5>
<dl>
<dt><h4><a name="method_ba_TeamBaseSession____init__">&lt;constructor&gt;</a></dt></h4><dd>
<p><span>ba.TeamBaseSession()</span></p>
<p>Set up playlists and launches a <a href="#class_ba_Activity">ba.Activity</a> to accept joiners.</p>
</dd>
<dt><h4><a name="method_ba_TeamBaseSession__announce_game_results">announce_game_results()</a></dt></h4><dd>
<p><span>announce_game_results(self, activity: <a href="#class_ba_GameActivity">ba.GameActivity</a>, results: <a href="#class_ba_TeamGameResults">ba.TeamGameResults</a>, delay: float, announce_winning_team: bool = True) -&gt; None</span></p>
<p>Show basic game result at the end of a game.</p>
<p>(before transitioning to a score screen).
This will include a zoom-text of 'BLUE WINS'
or whatnot, along with a possible audio
announcement of the same.</p>
</dd>
<dt><h4><a name="method_ba_TeamBaseSession__get_ffa_series_length">get_ffa_series_length()</a></dt></h4><dd>
<p><span>get_ffa_series_length(self) -&gt; int</span></p>
<p>Return free-for-all series length.</p>
</dd>
<dt><h4><a name="method_ba_TeamBaseSession__get_game_number">get_game_number()</a></dt></h4><dd>
<p><span>get_game_number(self) -&gt; int</span></p>
<p>Returns which game in the series is currently being played.</p>
</dd>
<dt><h4><a name="method_ba_TeamBaseSession__get_max_players">get_max_players()</a></dt></h4><dd>
<p><span>get_max_players(self) -&gt; int</span></p>
<p>Return max number of <a href="#class_ba_Player">ba.Players</a> allowed to join the game at once.</p>
</dd>
<dt><h4><a name="method_ba_TeamBaseSession__get_next_game_description">get_next_game_description()</a></dt></h4><dd>
<p><span>get_next_game_description(self) -&gt; <a href="#class_ba_Lstr">ba.Lstr</a></span></p>
<p>Returns a description of the next game on deck.</p>
</dd>
<dt><h4><a name="method_ba_TeamBaseSession__get_series_length">get_series_length()</a></dt></h4><dd>
<p><span>get_series_length(self) -&gt; int</span></p>
<p>Return teams series length.</p>
</dd>
<dt><h4><a name="method_ba_TeamBaseSession__on_activity_end">on_activity_end()</a></dt></h4><dd>
<p><span>on_activity_end(self, activity: <a href="#class_ba_Activity">ba.Activity</a>, results: Any) -&gt; None</span></p>
<p>Called when the current <a href="#class_ba_Activity">ba.Activity</a> has ended.</p>
<p>The <a href="#class_ba_Session">ba.Session</a> should look at the results and start
another <a href="#class_ba_Activity">ba.Activity</a>.</p>
</dd>
<dt><h4><a name="method_ba_TeamBaseSession__on_team_join">on_team_join()</a></dt></h4><dd>
<p><span>on_team_join(self, team: <a href="#class_ba_Team">ba.Team</a>) -&gt; None</span></p>
<p>Called when a new <a href="#class_ba_Team">ba.Team</a> joins the session.</p>
</dd> </dd>
</dl> </dl>
<hr> <hr>
@ -4514,7 +4535,7 @@ on the <a href="#class_ba_Player">ba.Player</a> and their <a href="#class_ba_Tea
<p><span>supports_session_type(sessiontype: Type[<a href="#class_ba_Session">ba.Session</a>]) -&gt; bool </span></p> <p><span>supports_session_type(sessiontype: Type[<a href="#class_ba_Session">ba.Session</a>]) -&gt; bool </span></p>
<p>Class method override; <p>Class method override;
returns True for <a href="#class_ba_TeamsSession">ba.TeamsSessions</a> and <a href="#class_ba_FreeForAllSession">ba.FreeForAllSessions</a>; returns True for <a href="#class_ba_DualTeamSession">ba.DualTeamSessions</a> and <a href="#class_ba_FreeForAllSession">ba.FreeForAllSessions</a>;
False otherwise.</p> False otherwise.</p>
</dd> </dd>
@ -4629,27 +4650,6 @@ Results for a completed <a href="#class_ba_TeamGameActivity">ba.TeamGameActivity
<h3>Methods:</h3> <h3>Methods:</h3>
<p>&lt;all methods inherited from <a href="#class_ba_NotFoundError">ba.NotFoundError</a>&gt;</p> <p>&lt;all methods inherited from <a href="#class_ba_NotFoundError">ba.NotFoundError</a>&gt;</p>
<hr> <hr>
<h2><strong><a name="class_ba_TeamsSession">ba.TeamsSession</a></strong></h3>
<p>inherits from: <a href="#class_ba_TeamBaseSession">ba.TeamBaseSession</a>, <a href="#class_ba_Session">ba.Session</a></p>
<p><a href="#class_ba_Session">ba.Session</a> type for teams mode games.</p>
<p>Category: <a href="#class_category_Gameplay_Classes">Gameplay Classes</a>
</p>
<h3>Attributes Inherited:</h3>
<h5><a href="#attr_ba_Session__campaign">campaign</a>, <a href="#attr_ba_Session__lobby">lobby</a>, <a href="#attr_ba_Session__max_players">max_players</a>, <a href="#attr_ba_Session__min_players">min_players</a>, <a href="#attr_ba_Session__players">players</a>, <a href="#attr_ba_Session__teams">teams</a></h5>
<h3>Methods Inherited:</h3>
<h5><a href="#method_ba_TeamBaseSession__announce_game_results">announce_game_results()</a>, <a href="#method_ba_TeamBaseSession__begin_next_activity">begin_next_activity()</a>, <a href="#method_ba_TeamBaseSession__end">end()</a>, <a href="#method_ba_TeamBaseSession__end_activity">end_activity()</a>, <a href="#method_ba_TeamBaseSession__get_custom_menu_entries">get_custom_menu_entries()</a>, <a href="#method_ba_TeamBaseSession__get_ffa_series_length">get_ffa_series_length()</a>, <a href="#method_ba_TeamBaseSession__get_game_number">get_game_number()</a>, <a href="#method_ba_TeamBaseSession__get_max_players">get_max_players()</a>, <a href="#method_ba_TeamBaseSession__get_next_game_description">get_next_game_description()</a>, <a href="#method_ba_TeamBaseSession__get_series_length">get_series_length()</a>, <a href="#method_ba_TeamBaseSession__getactivity">getactivity()</a>, <a href="#method_ba_TeamBaseSession__handlemessage">handlemessage()</a>, <a href="#method_ba_TeamBaseSession__launch_end_session_activity">launch_end_session_activity()</a>, <a href="#method_ba_TeamBaseSession__on_activity_end">on_activity_end()</a>, <a href="#method_ba_TeamBaseSession__on_player_leave">on_player_leave()</a>, <a href="#method_ba_TeamBaseSession__on_player_request">on_player_request()</a>, <a href="#method_ba_TeamBaseSession__on_team_join">on_team_join()</a>, <a href="#method_ba_TeamBaseSession__on_team_leave">on_team_leave()</a>, <a href="#method_ba_TeamBaseSession__set_activity">set_activity()</a></h5>
<h3>Methods Defined or Overridden:</h3>
<dl>
<dt><h4><a name="method_ba_TeamsSession____init__">&lt;constructor&gt;</a></dt></h4><dd>
<p><span>ba.TeamsSession()</span></p>
<p>Set up playlists and launches a <a href="#class_ba_Activity">ba.Activity</a> to accept joiners.</p>
</dd>
</dl>
<hr>
<h2><strong><a name="class_ba_Texture">ba.Texture</a></strong></h3> <h2><strong><a name="class_ba_Texture">ba.Texture</a></strong></h3>
<p><em>&lt;top level class&gt;</em> <p><em>&lt;top level class&gt;</em>
</p> </p>