diff --git a/.idea/dictionaries/ericf.xml b/.idea/dictionaries/ericf.xml
index 341bf75a..0d35f710 100644
--- a/.idea/dictionaries/ericf.xml
+++ b/.idea/dictionaries/ericf.xml
@@ -283,6 +283,7 @@
coopsession
coords
copyreg
+ copyrightline
cornerpin
coroutines
countdownsounds
@@ -480,6 +481,7 @@
fcntlmodule
fcode
fcontents
+ fcount
fdata
fdesc
fecfc
@@ -896,6 +898,7 @@
megalint
memfunctions
menubar
+ metaprogramming
metascan
meteorshower
mhash
@@ -996,6 +999,7 @@
nodepos
nodpi
noinspect
+ noninfringement
nonmultipart
noone
norun
@@ -1052,6 +1056,7 @@
outname
outpath
ouya
+ packagedirs
painttxtattr
palmos
pandoc
diff --git a/assets/src/data/scripts/_ba.py b/assets/src/data/scripts/_ba.py
index ffa25830..00dc705f 100644
--- a/assets/src/data/scripts/_ba.py
+++ b/assets/src/data/scripts/_ba.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""A dummy stub module for the real _bs.
The real _bs is a compiled extension module and only available
@@ -14,7 +15,7 @@ NOTE: This file was autogenerated by gendummymodule; do not edit by hand.
"""
# (hash we can use to see if this file is out of date)
-# SOURCES_HASH=71385272086508687614988508550620664609
+# SOURCES_HASH=171913046369526584263358640346000279030
# I'm sorry Pylint. I know this file saddens you. Be strong.
# pylint: disable=useless-suppression
diff --git a/assets/src/data/scripts/ba/__init__.py b/assets/src/data/scripts/ba/__init__.py
index c54d9e01..4efb5d26 100644
--- a/assets/src/data/scripts/ba/__init__.py
+++ b/assets/src/data/scripts/ba/__init__.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""The public face of Ballistica.
This top level module is a collection of most commonly used functionality.
diff --git a/assets/src/data/scripts/ba/_account.py b/assets/src/data/scripts/ba/_account.py
index 8f74e07e..b5ffc2b0 100644
--- a/assets/src/data/scripts/ba/_account.py
+++ b/assets/src/data/scripts/ba/_account.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""Account related functionality."""
from __future__ import annotations
diff --git a/assets/src/data/scripts/ba/_achievement.py b/assets/src/data/scripts/ba/_achievement.py
index be0ff83e..09e29526 100644
--- a/assets/src/data/scripts/ba/_achievement.py
+++ b/assets/src/data/scripts/ba/_achievement.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""Various functionality related to achievements."""
from __future__ import annotations
diff --git a/assets/src/data/scripts/ba/_activity.py b/assets/src/data/scripts/ba/_activity.py
index 7e7d1f62..b8fe8c5c 100644
--- a/assets/src/data/scripts/ba/_activity.py
+++ b/assets/src/data/scripts/ba/_activity.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""Defines Activity class."""
from __future__ import annotations
diff --git a/assets/src/data/scripts/ba/_activitytypes.py b/assets/src/data/scripts/ba/_activitytypes.py
index 1e604b6b..20dfc95e 100644
--- a/assets/src/data/scripts/ba/_activitytypes.py
+++ b/assets/src/data/scripts/ba/_activitytypes.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""Some handy base class and special purpose Activity types."""
from __future__ import annotations
diff --git a/assets/src/data/scripts/ba/_actor.py b/assets/src/data/scripts/ba/_actor.py
index 0866a8b3..3b67e6d2 100644
--- a/assets/src/data/scripts/ba/_actor.py
+++ b/assets/src/data/scripts/ba/_actor.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""Defines base Actor class."""
from __future__ import annotations
diff --git a/assets/src/data/scripts/ba/_app.py b/assets/src/data/scripts/ba/_app.py
index dfb043c0..5395f687 100644
--- a/assets/src/data/scripts/ba/_app.py
+++ b/assets/src/data/scripts/ba/_app.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""Functionality related to the high level state of the app."""
from __future__ import annotations
diff --git a/assets/src/data/scripts/ba/_appconfig.py b/assets/src/data/scripts/ba/_appconfig.py
index 844d306c..8ea96b82 100644
--- a/assets/src/data/scripts/ba/_appconfig.py
+++ b/assets/src/data/scripts/ba/_appconfig.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""Provides the AppConfig class."""
from __future__ import annotations
diff --git a/assets/src/data/scripts/ba/_appdelegate.py b/assets/src/data/scripts/ba/_appdelegate.py
index eb299d10..ecced277 100644
--- a/assets/src/data/scripts/ba/_appdelegate.py
+++ b/assets/src/data/scripts/ba/_appdelegate.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""Defines AppDelegate class for handling high level app functionality."""
from __future__ import annotations
diff --git a/assets/src/data/scripts/ba/_apputils.py b/assets/src/data/scripts/ba/_apputils.py
index c2b9363e..1dc668c1 100644
--- a/assets/src/data/scripts/ba/_apputils.py
+++ b/assets/src/data/scripts/ba/_apputils.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""Utility functionality related to the overall operation of the app."""
from __future__ import annotations
diff --git a/assets/src/data/scripts/ba/_benchmark.py b/assets/src/data/scripts/ba/_benchmark.py
index 076da994..83eb20ef 100644
--- a/assets/src/data/scripts/ba/_benchmark.py
+++ b/assets/src/data/scripts/ba/_benchmark.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""Benchmark/Stress-Test related functionality."""
from __future__ import annotations
diff --git a/assets/src/data/scripts/ba/_campaign.py b/assets/src/data/scripts/ba/_campaign.py
index 3f03c31a..493d1c0e 100644
--- a/assets/src/data/scripts/ba/_campaign.py
+++ b/assets/src/data/scripts/ba/_campaign.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""Functionality related to co-op campaigns."""
from __future__ import annotations
diff --git a/assets/src/data/scripts/ba/_coopgame.py b/assets/src/data/scripts/ba/_coopgame.py
index 103005bd..624518fe 100644
--- a/assets/src/data/scripts/ba/_coopgame.py
+++ b/assets/src/data/scripts/ba/_coopgame.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""Functionality related to co-op games."""
from __future__ import annotations
diff --git a/assets/src/data/scripts/ba/_coopsession.py b/assets/src/data/scripts/ba/_coopsession.py
index 01e1ba81..bfa56097 100644
--- a/assets/src/data/scripts/ba/_coopsession.py
+++ b/assets/src/data/scripts/ba/_coopsession.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""Functionality related to coop-mode sessions."""
from __future__ import annotations
diff --git a/assets/src/data/scripts/ba/_dep.py b/assets/src/data/scripts/ba/_dep.py
index a52ad23a..911ede3f 100644
--- a/assets/src/data/scripts/ba/_dep.py
+++ b/assets/src/data/scripts/ba/_dep.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""Functionality related to object/asset dependencies."""
# pylint: disable=redefined-builtin
diff --git a/assets/src/data/scripts/ba/_enums.py b/assets/src/data/scripts/ba/_enums.py
index 4304df09..f70efb4f 100644
--- a/assets/src/data/scripts/ba/_enums.py
+++ b/assets/src/data/scripts/ba/_enums.py
@@ -1,3 +1,23 @@
+# Copyright (c) 2011-2019 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.
+# -----------------------------------------------------------------------------
"""Enums generated by tools/update_python_enums_module in core."""
from enum import Enum
diff --git a/assets/src/data/scripts/ba/_error.py b/assets/src/data/scripts/ba/_error.py
index 4df44d1c..a80033e1 100644
--- a/assets/src/data/scripts/ba/_error.py
+++ b/assets/src/data/scripts/ba/_error.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""Error related functionality."""
from __future__ import annotations
diff --git a/assets/src/data/scripts/ba/_freeforallsession.py b/assets/src/data/scripts/ba/_freeforallsession.py
index 1f5a3118..a0f96623 100644
--- a/assets/src/data/scripts/ba/_freeforallsession.py
+++ b/assets/src/data/scripts/ba/_freeforallsession.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""Functionality related to free-for-all sessions."""
from __future__ import annotations
diff --git a/assets/src/data/scripts/ba/_gameactivity.py b/assets/src/data/scripts/ba/_gameactivity.py
index c9659f91..e4d04218 100644
--- a/assets/src/data/scripts/ba/_gameactivity.py
+++ b/assets/src/data/scripts/ba/_gameactivity.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""Provides GameActivity class."""
# pylint: disable=too-many-lines
diff --git a/assets/src/data/scripts/ba/_gameresults.py b/assets/src/data/scripts/ba/_gameresults.py
index 5ce50d87..61d16f47 100644
--- a/assets/src/data/scripts/ba/_gameresults.py
+++ b/assets/src/data/scripts/ba/_gameresults.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""Functionality related to game results."""
from __future__ import annotations
diff --git a/assets/src/data/scripts/ba/_gameutils.py b/assets/src/data/scripts/ba/_gameutils.py
index 9527e54b..6fa49c6d 100644
--- a/assets/src/data/scripts/ba/_gameutils.py
+++ b/assets/src/data/scripts/ba/_gameutils.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""Utility functionality pertaining to gameplay."""
from __future__ import annotations
diff --git a/assets/src/data/scripts/ba/_general.py b/assets/src/data/scripts/ba/_general.py
index 9a0666a4..e00cdfed 100644
--- a/assets/src/data/scripts/ba/_general.py
+++ b/assets/src/data/scripts/ba/_general.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""Utility snippets applying to generic Python code."""
from __future__ import annotations
diff --git a/assets/src/data/scripts/ba/_hooks.py b/assets/src/data/scripts/ba/_hooks.py
index aa5d01d0..875fcd42 100644
--- a/assets/src/data/scripts/ba/_hooks.py
+++ b/assets/src/data/scripts/ba/_hooks.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""Snippets of code for use by the internal C++ layer.
History: originally I would dynamically compile/eval bits of Python text
diff --git a/assets/src/data/scripts/ba/_input.py b/assets/src/data/scripts/ba/_input.py
index 97045b89..90da7073 100644
--- a/assets/src/data/scripts/ba/_input.py
+++ b/assets/src/data/scripts/ba/_input.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""Input related functionality"""
from __future__ import annotations
diff --git a/assets/src/data/scripts/ba/_lang.py b/assets/src/data/scripts/ba/_lang.py
index d36b3c4d..9b483a91 100644
--- a/assets/src/data/scripts/ba/_lang.py
+++ b/assets/src/data/scripts/ba/_lang.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""Language related functionality."""
from __future__ import annotations
diff --git a/assets/src/data/scripts/ba/_level.py b/assets/src/data/scripts/ba/_level.py
index 58b8b025..f34bab35 100644
--- a/assets/src/data/scripts/ba/_level.py
+++ b/assets/src/data/scripts/ba/_level.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""Functionality related to individual levels in a campaign."""
from __future__ import annotations
diff --git a/assets/src/data/scripts/ba/_lobby.py b/assets/src/data/scripts/ba/_lobby.py
index 60e01c61..abefc97b 100644
--- a/assets/src/data/scripts/ba/_lobby.py
+++ b/assets/src/data/scripts/ba/_lobby.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""Implements lobby system for gathering before games, char select, etc."""
from __future__ import annotations
diff --git a/assets/src/data/scripts/ba/_maps.py b/assets/src/data/scripts/ba/_maps.py
index 9263930a..4f09b7a3 100644
--- a/assets/src/data/scripts/ba/_maps.py
+++ b/assets/src/data/scripts/ba/_maps.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""Map related functionality."""
from __future__ import annotations
diff --git a/assets/src/data/scripts/ba/_math.py b/assets/src/data/scripts/ba/_math.py
index e2834ac1..e5e4d5ab 100644
--- a/assets/src/data/scripts/ba/_math.py
+++ b/assets/src/data/scripts/ba/_math.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""Math related functionality."""
from __future__ import annotations
diff --git a/assets/src/data/scripts/ba/_messages.py b/assets/src/data/scripts/ba/_messages.py
index 8374736d..f7b52ac7 100644
--- a/assets/src/data/scripts/ba/_messages.py
+++ b/assets/src/data/scripts/ba/_messages.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""Defines some standard message objects for use with handlemessage() calls."""
from __future__ import annotations
diff --git a/assets/src/data/scripts/ba/_meta.py b/assets/src/data/scripts/ba/_meta.py
index fe994aba..296c38f8 100644
--- a/assets/src/data/scripts/ba/_meta.py
+++ b/assets/src/data/scripts/ba/_meta.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""Functionality related to dynamic discoverability of classes."""
from __future__ import annotations
diff --git a/assets/src/data/scripts/ba/_modutils.py b/assets/src/data/scripts/ba/_modutils.py
index 22b63531..794be0a1 100644
--- a/assets/src/data/scripts/ba/_modutils.py
+++ b/assets/src/data/scripts/ba/_modutils.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""Functionality related to modding."""
import os
diff --git a/assets/src/data/scripts/ba/_music.py b/assets/src/data/scripts/ba/_music.py
index f814202a..08b907b5 100644
--- a/assets/src/data/scripts/ba/_music.py
+++ b/assets/src/data/scripts/ba/_music.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""Music related functionality."""
from __future__ import annotations
diff --git a/assets/src/data/scripts/ba/_netutils.py b/assets/src/data/scripts/ba/_netutils.py
index d6c45ea8..9e439f98 100644
--- a/assets/src/data/scripts/ba/_netutils.py
+++ b/assets/src/data/scripts/ba/_netutils.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""Networking related functionality."""
from __future__ import annotations
diff --git a/assets/src/data/scripts/ba/_playlist.py b/assets/src/data/scripts/ba/_playlist.py
index 3c236b30..03cb331e 100644
--- a/assets/src/data/scripts/ba/_playlist.py
+++ b/assets/src/data/scripts/ba/_playlist.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""Playlist related functionality."""
from __future__ import annotations
diff --git a/assets/src/data/scripts/ba/_powerup.py b/assets/src/data/scripts/ba/_powerup.py
index 17067aea..f35f8c02 100644
--- a/assets/src/data/scripts/ba/_powerup.py
+++ b/assets/src/data/scripts/ba/_powerup.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""Powerup related functionality."""
from __future__ import annotations
diff --git a/assets/src/data/scripts/ba/_profile.py b/assets/src/data/scripts/ba/_profile.py
index 02ddd614..335350b8 100644
--- a/assets/src/data/scripts/ba/_profile.py
+++ b/assets/src/data/scripts/ba/_profile.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""Functionality related to player profiles."""
from __future__ import annotations
diff --git a/assets/src/data/scripts/ba/_server.py b/assets/src/data/scripts/ba/_server.py
index 76c18f9a..4490c229 100644
--- a/assets/src/data/scripts/ba/_server.py
+++ b/assets/src/data/scripts/ba/_server.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""Functionality related to running the game in server-mode."""
from __future__ import annotations
diff --git a/assets/src/data/scripts/ba/_session.py b/assets/src/data/scripts/ba/_session.py
index d2449b1a..b2a3822a 100644
--- a/assets/src/data/scripts/ba/_session.py
+++ b/assets/src/data/scripts/ba/_session.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""Defines base session class."""
from __future__ import annotations
diff --git a/assets/src/data/scripts/ba/_stats.py b/assets/src/data/scripts/ba/_stats.py
index c9259625..63d155da 100644
--- a/assets/src/data/scripts/ba/_stats.py
+++ b/assets/src/data/scripts/ba/_stats.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""Functionality related to scores and statistics."""
from __future__ import annotations
diff --git a/assets/src/data/scripts/ba/_store.py b/assets/src/data/scripts/ba/_store.py
index 5a701e36..e09d931d 100644
--- a/assets/src/data/scripts/ba/_store.py
+++ b/assets/src/data/scripts/ba/_store.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""Store related functionality for classic mode."""
from __future__ import annotations
diff --git a/assets/src/data/scripts/ba/_team.py b/assets/src/data/scripts/ba/_team.py
index 5dc436fb..0560a75f 100644
--- a/assets/src/data/scripts/ba/_team.py
+++ b/assets/src/data/scripts/ba/_team.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""Defines Team class."""
from __future__ import annotations
diff --git a/assets/src/data/scripts/ba/_teambasesession.py b/assets/src/data/scripts/ba/_teambasesession.py
index 1c3124c3..1ef04c64 100644
--- a/assets/src/data/scripts/ba/_teambasesession.py
+++ b/assets/src/data/scripts/ba/_teambasesession.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""Functionality related to teams sessions."""
from __future__ import annotations
diff --git a/assets/src/data/scripts/ba/_teamgame.py b/assets/src/data/scripts/ba/_teamgame.py
index 494bf2cb..c223f3f1 100644
--- a/assets/src/data/scripts/ba/_teamgame.py
+++ b/assets/src/data/scripts/ba/_teamgame.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""Functionality related to team games."""
from __future__ import annotations
diff --git a/assets/src/data/scripts/ba/_teamssession.py b/assets/src/data/scripts/ba/_teamssession.py
index 729b6ede..2ce3f24a 100644
--- a/assets/src/data/scripts/ba/_teamssession.py
+++ b/assets/src/data/scripts/ba/_teamssession.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""Functionality related to teams sessions."""
from __future__ import annotations
diff --git a/assets/src/data/scripts/ba/_tips.py b/assets/src/data/scripts/ba/_tips.py
index fdd71067..be45a23d 100644
--- a/assets/src/data/scripts/ba/_tips.py
+++ b/assets/src/data/scripts/ba/_tips.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""Functionality related to game tips.
These can be shown at opportune times such as between rounds."""
diff --git a/assets/src/data/scripts/ba/_tournament.py b/assets/src/data/scripts/ba/_tournament.py
index 2baa399d..b5486028 100644
--- a/assets/src/data/scripts/ba/_tournament.py
+++ b/assets/src/data/scripts/ba/_tournament.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""Functionality related to tournament play."""
from __future__ import annotations
diff --git a/assets/src/data/scripts/ba/deprecated.py b/assets/src/data/scripts/ba/deprecated.py
index cb7bceeb..063be17d 100644
--- a/assets/src/data/scripts/ba/deprecated.py
+++ b/assets/src/data/scripts/ba/deprecated.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""Deprecated functionality.
Classes or functions can be relocated here when they are deprecated.
diff --git a/assets/src/data/scripts/ba/internal.py b/assets/src/data/scripts/ba/internal.py
index 968b7d47..0efef69c 100644
--- a/assets/src/data/scripts/ba/internal.py
+++ b/assets/src/data/scripts/ba/internal.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""Exposed functionality not intended for full public use.
Classes and functions contained here, while technically 'public', may change
diff --git a/assets/src/data/scripts/ba/ui/__init__.py b/assets/src/data/scripts/ba/ui/__init__.py
index fc05bc39..05c38afc 100644
--- a/assets/src/data/scripts/ba/ui/__init__.py
+++ b/assets/src/data/scripts/ba/ui/__init__.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""Provide top level UI related functionality."""
from __future__ import annotations
diff --git a/assets/src/data/scripts/bafoundation/__init__.py b/assets/src/data/scripts/bafoundation/__init__.py
index deeb38d0..75c65c8e 100644
--- a/assets/src/data/scripts/bafoundation/__init__.py
+++ b/assets/src/data/scripts/bafoundation/__init__.py
@@ -1,4 +1,2 @@
-# Synced from bsmaster.
-# EFRO_SYNC_HASH=47258835994253322418493299167560392753
-#
+# Copyright (c) 2011-2019 Eric Froemling
"""Functionality shared between Ballistica client and server components."""
diff --git a/assets/src/data/scripts/bafoundation/dataclassutils.py b/assets/src/data/scripts/bafoundation/dataclassutils.py
index 67b3a419..b9d67738 100644
--- a/assets/src/data/scripts/bafoundation/dataclassutils.py
+++ b/assets/src/data/scripts/bafoundation/dataclassutils.py
@@ -1,6 +1,4 @@
-# Synced from bsmaster.
-# EFRO_SYNC_HASH=196941524992995247852512968857048418312
-#
+# Copyright (c) 2011-2019 Eric Froemling
"""Utilities for working with dataclasses."""
from __future__ import annotations
diff --git a/assets/src/data/scripts/bafoundation/entity/__init__.py b/assets/src/data/scripts/bafoundation/entity/__init__.py
index 139ccc9c..76b82f46 100644
--- a/assets/src/data/scripts/bafoundation/entity/__init__.py
+++ b/assets/src/data/scripts/bafoundation/entity/__init__.py
@@ -1,6 +1,4 @@
-# Synced from bamaster.
-# EFRO_SYNC_HASH=196413726588996288733581295344706442629
-#
+# Copyright (c) 2011-2019 Eric Froemling
"""Entity functionality.
A system for defining complex data-containing types, supporting both static
diff --git a/assets/src/data/scripts/bafoundation/entity/_base.py b/assets/src/data/scripts/bafoundation/entity/_base.py
index 78f19255..a3eadf3e 100644
--- a/assets/src/data/scripts/bafoundation/entity/_base.py
+++ b/assets/src/data/scripts/bafoundation/entity/_base.py
@@ -1,6 +1,4 @@
-# Synced from bsmaster.
-# EFRO_SYNC_HASH=8117567323116015157093251373970987221
-#
+# Copyright (c) 2011-2019 Eric Froemling
"""Base classes for the entity system."""
from __future__ import annotations
diff --git a/assets/src/data/scripts/bafoundation/entity/_entity.py b/assets/src/data/scripts/bafoundation/entity/_entity.py
index ed1cdfe3..2e421c74 100644
--- a/assets/src/data/scripts/bafoundation/entity/_entity.py
+++ b/assets/src/data/scripts/bafoundation/entity/_entity.py
@@ -1,6 +1,4 @@
-# Synced from bamaster.
-# EFRO_SYNC_HASH=11716656185614230313846373816308841148
-#
+# Copyright (c) 2011-2019 Eric Froemling
"""Functionality for the actual Entity types."""
from __future__ import annotations
diff --git a/assets/src/data/scripts/bafoundation/entity/_field.py b/assets/src/data/scripts/bafoundation/entity/_field.py
index 4d7d11df..afc0792d 100644
--- a/assets/src/data/scripts/bafoundation/entity/_field.py
+++ b/assets/src/data/scripts/bafoundation/entity/_field.py
@@ -1,6 +1,4 @@
-# Synced from bamaster.
-# EFRO_SYNC_HASH=1181984339043224435868827486253284940
-#
+# Copyright (c) 2011-2019 Eric Froemling
"""Field types for the entity system."""
from __future__ import annotations
diff --git a/assets/src/data/scripts/bafoundation/entity/_support.py b/assets/src/data/scripts/bafoundation/entity/_support.py
index a00fc8b7..42829e50 100644
--- a/assets/src/data/scripts/bafoundation/entity/_support.py
+++ b/assets/src/data/scripts/bafoundation/entity/_support.py
@@ -1,6 +1,4 @@
-# Synced from bamaster.
-# EFRO_SYNC_HASH=207162478257782519026483356805664558659
-#
+# Copyright (c) 2011-2019 Eric Froemling
"""Various support classes for accessing data and info on fields and values."""
from __future__ import annotations
diff --git a/assets/src/data/scripts/bafoundation/entity/_value.py b/assets/src/data/scripts/bafoundation/entity/_value.py
index bbb152ec..a54b3a06 100644
--- a/assets/src/data/scripts/bafoundation/entity/_value.py
+++ b/assets/src/data/scripts/bafoundation/entity/_value.py
@@ -1,6 +1,4 @@
-# Synced from bsmaster.
-# EFRO_SYNC_HASH=158385720566816709798128360485086830759
-#
+# Copyright (c) 2011-2019 Eric Froemling
"""Value types for the entity system."""
from __future__ import annotations
diff --git a/assets/src/data/scripts/bafoundation/entity/util.py b/assets/src/data/scripts/bafoundation/entity/util.py
index 9b4f3650..db8207a1 100644
--- a/assets/src/data/scripts/bafoundation/entity/util.py
+++ b/assets/src/data/scripts/bafoundation/entity/util.py
@@ -1,6 +1,4 @@
-# Synced from bamaster.
-# EFRO_SYNC_HASH=151238242547824871848833808259117588767
-#
+# Copyright (c) 2011-2019 Eric Froemling
"""Misc utility functionality related to the entity system."""
from __future__ import annotations
diff --git a/assets/src/data/scripts/bafoundation/err.py b/assets/src/data/scripts/bafoundation/err.py
index 610f6634..879429a7 100644
--- a/assets/src/data/scripts/bafoundation/err.py
+++ b/assets/src/data/scripts/bafoundation/err.py
@@ -1,6 +1,4 @@
-# Synced from bamaster.
-# EFRO_SYNC_HASH=324606719817436157254454259763962378663
-#
+# Copyright (c) 2011-2019 Eric Froemling
"""Error related functionality shared between all ba components."""
# Hmmmm - need to give this exception structure some thought...
diff --git a/assets/src/data/scripts/bafoundation/executils.py b/assets/src/data/scripts/bafoundation/executils.py
index 817c6d0d..7d5c7793 100644
--- a/assets/src/data/scripts/bafoundation/executils.py
+++ b/assets/src/data/scripts/bafoundation/executils.py
@@ -1,6 +1,4 @@
-# Synced from bamaster.
-# EFRO_SYNC_HASH=43697789967751346220367938882574464737
-#
+# Copyright (c) 2011-2019 Eric Froemling
"""Exec related functionality shared between all ba components."""
from __future__ import annotations
diff --git a/assets/src/data/scripts/bafoundation/jsonutils.py b/assets/src/data/scripts/bafoundation/jsonutils.py
index 97855435..582ff74a 100644
--- a/assets/src/data/scripts/bafoundation/jsonutils.py
+++ b/assets/src/data/scripts/bafoundation/jsonutils.py
@@ -1,6 +1,4 @@
-# Synced from bsmaster.
-# EFRO_SYNC_HASH=303140082733449378022422119719823943963
-#
+# Copyright (c) 2011-2019 Eric Froemling
"""Custom json compressor/decompressor with support for more data times/etc."""
from __future__ import annotations
diff --git a/assets/src/data/scripts/bafoundation/util.py b/assets/src/data/scripts/bafoundation/util.py
index f2226197..c24398cc 100644
--- a/assets/src/data/scripts/bafoundation/util.py
+++ b/assets/src/data/scripts/bafoundation/util.py
@@ -1,6 +1,4 @@
-# Synced from bsmaster.
-# EFRO_SYNC_HASH=15008988795367952822112128932296326511
-#
+# Copyright (c) 2011-2019 Eric Froemling
"""Small handy bits of functionality."""
from __future__ import annotations
diff --git a/assets/src/data/scripts/bastd/__init__.py b/assets/src/data/scripts/bastd/__init__.py
index 242fefe6..68ea0a2e 100644
--- a/assets/src/data/scripts/bastd/__init__.py
+++ b/assets/src/data/scripts/bastd/__init__.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""BallisticaCore standard library: games, UI, etc."""
# bs_meta require api 6
diff --git a/assets/src/data/scripts/bastd/activity/__init__.py b/assets/src/data/scripts/bastd/activity/__init__.py
index e69de29b..72840fe8 100644
--- a/assets/src/data/scripts/bastd/activity/__init__.py
+++ b/assets/src/data/scripts/bastd/activity/__init__.py
@@ -0,0 +1 @@
+# Copyright (c) 2011-2019 Eric Froemling
diff --git a/assets/src/data/scripts/bastd/activity/coopjoinscreen.py b/assets/src/data/scripts/bastd/activity/coopjoinscreen.py
index 032146d9..bb640c79 100644
--- a/assets/src/data/scripts/bastd/activity/coopjoinscreen.py
+++ b/assets/src/data/scripts/bastd/activity/coopjoinscreen.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""Functionality related to the co-op join screen."""
from __future__ import annotations
diff --git a/assets/src/data/scripts/bastd/activity/coopscorescreen.py b/assets/src/data/scripts/bastd/activity/coopscorescreen.py
index 72dcbb71..b928c91a 100644
--- a/assets/src/data/scripts/bastd/activity/coopscorescreen.py
+++ b/assets/src/data/scripts/bastd/activity/coopscorescreen.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""Provides a score screen for coop games."""
# pylint: disable=too-many-lines
diff --git a/assets/src/data/scripts/bastd/activity/drawscreen.py b/assets/src/data/scripts/bastd/activity/drawscreen.py
index 8615e7b6..5b3888f4 100644
--- a/assets/src/data/scripts/bastd/activity/drawscreen.py
+++ b/assets/src/data/scripts/bastd/activity/drawscreen.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""Functionality related to the draw screen."""
from __future__ import annotations
diff --git a/assets/src/data/scripts/bastd/activity/dualteamscorescreen.py b/assets/src/data/scripts/bastd/activity/dualteamscorescreen.py
index b84667f2..fb272e5f 100644
--- a/assets/src/data/scripts/bastd/activity/dualteamscorescreen.py
+++ b/assets/src/data/scripts/bastd/activity/dualteamscorescreen.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""Functionality related to the end screen in dual-team mode."""
from __future__ import annotations
diff --git a/assets/src/data/scripts/bastd/activity/freeforallendscreen.py b/assets/src/data/scripts/bastd/activity/freeforallendscreen.py
index 81c511ea..018f48bb 100644
--- a/assets/src/data/scripts/bastd/activity/freeforallendscreen.py
+++ b/assets/src/data/scripts/bastd/activity/freeforallendscreen.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""Functionality related to the final screen in free-for-all games."""
from __future__ import annotations
diff --git a/assets/src/data/scripts/bastd/activity/multiteamendscreen.py b/assets/src/data/scripts/bastd/activity/multiteamendscreen.py
index 1e22c21e..1eb31763 100644
--- a/assets/src/data/scripts/bastd/activity/multiteamendscreen.py
+++ b/assets/src/data/scripts/bastd/activity/multiteamendscreen.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""Functionality related to the final screen in multi-teams sessions."""
from __future__ import annotations
diff --git a/assets/src/data/scripts/bastd/activity/multiteamjoinscreen.py b/assets/src/data/scripts/bastd/activity/multiteamjoinscreen.py
index a7565924..5bf2367f 100644
--- a/assets/src/data/scripts/bastd/activity/multiteamjoinscreen.py
+++ b/assets/src/data/scripts/bastd/activity/multiteamjoinscreen.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""Functionality related to the join screen for multi-team sessions."""
from __future__ import annotations
diff --git a/assets/src/data/scripts/bastd/activity/teamsscorescreen.py b/assets/src/data/scripts/bastd/activity/teamsscorescreen.py
index 65f1f933..0a97162a 100644
--- a/assets/src/data/scripts/bastd/activity/teamsscorescreen.py
+++ b/assets/src/data/scripts/bastd/activity/teamsscorescreen.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""Functionality related to teams mode score screen."""
from __future__ import annotations
diff --git a/assets/src/data/scripts/bastd/actor/__init__.py b/assets/src/data/scripts/bastd/actor/__init__.py
index e69de29b..72840fe8 100644
--- a/assets/src/data/scripts/bastd/actor/__init__.py
+++ b/assets/src/data/scripts/bastd/actor/__init__.py
@@ -0,0 +1 @@
+# Copyright (c) 2011-2019 Eric Froemling
diff --git a/assets/src/data/scripts/bastd/actor/background.py b/assets/src/data/scripts/bastd/actor/background.py
index f7dbce5c..4b7f6c84 100644
--- a/assets/src/data/scripts/bastd/actor/background.py
+++ b/assets/src/data/scripts/bastd/actor/background.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""Defines Actor(s)."""
from __future__ import annotations
diff --git a/assets/src/data/scripts/bastd/actor/bomb.py b/assets/src/data/scripts/bastd/actor/bomb.py
index 1aa62a2f..1b35d346 100644
--- a/assets/src/data/scripts/bastd/actor/bomb.py
+++ b/assets/src/data/scripts/bastd/actor/bomb.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""Various classes for bombs, mines, tnt, etc."""
# FIXME
diff --git a/assets/src/data/scripts/bastd/actor/controlsguide.py b/assets/src/data/scripts/bastd/actor/controlsguide.py
index a319906b..d63fadbc 100644
--- a/assets/src/data/scripts/bastd/actor/controlsguide.py
+++ b/assets/src/data/scripts/bastd/actor/controlsguide.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""Defines Actors related to controls guides."""
from __future__ import annotations
diff --git a/assets/src/data/scripts/bastd/actor/flag.py b/assets/src/data/scripts/bastd/actor/flag.py
index 17a1d040..51b744d3 100644
--- a/assets/src/data/scripts/bastd/actor/flag.py
+++ b/assets/src/data/scripts/bastd/actor/flag.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""Implements a flag used for marking bases, capture-the-flag games, etc."""
from __future__ import annotations
diff --git a/assets/src/data/scripts/bastd/actor/image.py b/assets/src/data/scripts/bastd/actor/image.py
index 734c236f..a6935997 100644
--- a/assets/src/data/scripts/bastd/actor/image.py
+++ b/assets/src/data/scripts/bastd/actor/image.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""Defines Actor(s)."""
from __future__ import annotations
diff --git a/assets/src/data/scripts/bastd/actor/onscreencountdown.py b/assets/src/data/scripts/bastd/actor/onscreencountdown.py
index b7303ccf..6bda9149 100644
--- a/assets/src/data/scripts/bastd/actor/onscreencountdown.py
+++ b/assets/src/data/scripts/bastd/actor/onscreencountdown.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""Defines Actor Type(s)."""
from __future__ import annotations
diff --git a/assets/src/data/scripts/bastd/actor/onscreentimer.py b/assets/src/data/scripts/bastd/actor/onscreentimer.py
index 73c830e3..949f5592 100644
--- a/assets/src/data/scripts/bastd/actor/onscreentimer.py
+++ b/assets/src/data/scripts/bastd/actor/onscreentimer.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""Defines Actor(s)."""
from __future__ import annotations
diff --git a/assets/src/data/scripts/bastd/actor/playerspaz.py b/assets/src/data/scripts/bastd/actor/playerspaz.py
index 5e670764..73e0952e 100644
--- a/assets/src/data/scripts/bastd/actor/playerspaz.py
+++ b/assets/src/data/scripts/bastd/actor/playerspaz.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""Functionality related to player-controlled Spazzes."""
from __future__ import annotations
diff --git a/assets/src/data/scripts/bastd/actor/popuptext.py b/assets/src/data/scripts/bastd/actor/popuptext.py
index 85fe49a9..79af0958 100644
--- a/assets/src/data/scripts/bastd/actor/popuptext.py
+++ b/assets/src/data/scripts/bastd/actor/popuptext.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""Defines Actor(s)."""
from __future__ import annotations
diff --git a/assets/src/data/scripts/bastd/actor/powerupbox.py b/assets/src/data/scripts/bastd/actor/powerupbox.py
index c95c8949..d1d1c9cb 100644
--- a/assets/src/data/scripts/bastd/actor/powerupbox.py
+++ b/assets/src/data/scripts/bastd/actor/powerupbox.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""Defines Actor(s)."""
from __future__ import annotations
diff --git a/assets/src/data/scripts/bastd/actor/respawnicon.py b/assets/src/data/scripts/bastd/actor/respawnicon.py
index fc67a843..08b5a27f 100644
--- a/assets/src/data/scripts/bastd/actor/respawnicon.py
+++ b/assets/src/data/scripts/bastd/actor/respawnicon.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""Implements respawn icon actor."""
from __future__ import annotations
diff --git a/assets/src/data/scripts/bastd/actor/scoreboard.py b/assets/src/data/scripts/bastd/actor/scoreboard.py
index 7c8a03e3..b161a17e 100644
--- a/assets/src/data/scripts/bastd/actor/scoreboard.py
+++ b/assets/src/data/scripts/bastd/actor/scoreboard.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""Defines ScoreBoard Actor and related functionality."""
from __future__ import annotations
diff --git a/assets/src/data/scripts/bastd/actor/spawner.py b/assets/src/data/scripts/bastd/actor/spawner.py
index 410e099e..d54924b0 100644
--- a/assets/src/data/scripts/bastd/actor/spawner.py
+++ b/assets/src/data/scripts/bastd/actor/spawner.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""Defines some lovely Actor(s)."""
from __future__ import annotations
diff --git a/assets/src/data/scripts/bastd/actor/spaz.py b/assets/src/data/scripts/bastd/actor/spaz.py
index 1ea969d1..e20cb25b 100644
--- a/assets/src/data/scripts/bastd/actor/spaz.py
+++ b/assets/src/data/scripts/bastd/actor/spaz.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""Defines the spaz actor."""
# pylint: disable=too-many-lines
diff --git a/assets/src/data/scripts/bastd/actor/spazappearance.py b/assets/src/data/scripts/bastd/actor/spazappearance.py
index e4b529cd..6180d1ec 100644
--- a/assets/src/data/scripts/bastd/actor/spazappearance.py
+++ b/assets/src/data/scripts/bastd/actor/spazappearance.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""Appearance functionality for spazzes."""
from __future__ import annotations
diff --git a/assets/src/data/scripts/bastd/actor/spazbot.py b/assets/src/data/scripts/bastd/actor/spazbot.py
index 606f8db3..dbbd73a4 100644
--- a/assets/src/data/scripts/bastd/actor/spazbot.py
+++ b/assets/src/data/scripts/bastd/actor/spazbot.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""Bot versions of Spaz."""
# pylint: disable=too-many-lines
diff --git a/assets/src/data/scripts/bastd/actor/spazfactory.py b/assets/src/data/scripts/bastd/actor/spazfactory.py
index 3fd3fc3e..e479d684 100644
--- a/assets/src/data/scripts/bastd/actor/spazfactory.py
+++ b/assets/src/data/scripts/bastd/actor/spazfactory.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""Provides a factory object from creating Spazzes."""
from __future__ import annotations
diff --git a/assets/src/data/scripts/bastd/actor/text.py b/assets/src/data/scripts/bastd/actor/text.py
index 6c627c35..279662e2 100644
--- a/assets/src/data/scripts/bastd/actor/text.py
+++ b/assets/src/data/scripts/bastd/actor/text.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""Defines Actor(s)."""
from __future__ import annotations
diff --git a/assets/src/data/scripts/bastd/actor/tipstext.py b/assets/src/data/scripts/bastd/actor/tipstext.py
index ed645028..d6989022 100644
--- a/assets/src/data/scripts/bastd/actor/tipstext.py
+++ b/assets/src/data/scripts/bastd/actor/tipstext.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""Provides tip related Actor(s)."""
from __future__ import annotations
diff --git a/assets/src/data/scripts/bastd/actor/zoomtext.py b/assets/src/data/scripts/bastd/actor/zoomtext.py
index 4a052a18..2387b0cf 100644
--- a/assets/src/data/scripts/bastd/actor/zoomtext.py
+++ b/assets/src/data/scripts/bastd/actor/zoomtext.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""Defined Actor(s)."""
from __future__ import annotations
diff --git a/assets/src/data/scripts/bastd/appdelegate.py b/assets/src/data/scripts/bastd/appdelegate.py
index d50c97cd..0002c564 100644
--- a/assets/src/data/scripts/bastd/appdelegate.py
+++ b/assets/src/data/scripts/bastd/appdelegate.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""Provide our delegate for high level app functionality."""
from __future__ import annotations
diff --git a/assets/src/data/scripts/bastd/game/__init__.py b/assets/src/data/scripts/bastd/game/__init__.py
index e69de29b..72840fe8 100644
--- a/assets/src/data/scripts/bastd/game/__init__.py
+++ b/assets/src/data/scripts/bastd/game/__init__.py
@@ -0,0 +1 @@
+# Copyright (c) 2011-2019 Eric Froemling
diff --git a/assets/src/data/scripts/bastd/game/assault.py b/assets/src/data/scripts/bastd/game/assault.py
index 78458073..4ab2113f 100644
--- a/assets/src/data/scripts/bastd/game/assault.py
+++ b/assets/src/data/scripts/bastd/game/assault.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""Defines assault minigame."""
# bs_meta require api 6
diff --git a/assets/src/data/scripts/bastd/game/capturetheflag.py b/assets/src/data/scripts/bastd/game/capturetheflag.py
index 0b88de28..128b554b 100644
--- a/assets/src/data/scripts/bastd/game/capturetheflag.py
+++ b/assets/src/data/scripts/bastd/game/capturetheflag.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""Defines a capture-the-flag game."""
# bs_meta require api 6
diff --git a/assets/src/data/scripts/bastd/game/chosenone.py b/assets/src/data/scripts/bastd/game/chosenone.py
index 835707f7..9e707ed4 100644
--- a/assets/src/data/scripts/bastd/game/chosenone.py
+++ b/assets/src/data/scripts/bastd/game/chosenone.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""Provides the chosen-one mini-game."""
# bs_meta require api 6
diff --git a/assets/src/data/scripts/bastd/game/conquest.py b/assets/src/data/scripts/bastd/game/conquest.py
index c038e239..b06cf570 100644
--- a/assets/src/data/scripts/bastd/game/conquest.py
+++ b/assets/src/data/scripts/bastd/game/conquest.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""Provides the Conquest game."""
# bs_meta require api 6
diff --git a/assets/src/data/scripts/bastd/game/deathmatch.py b/assets/src/data/scripts/bastd/game/deathmatch.py
index 9de103d2..8bb87805 100644
--- a/assets/src/data/scripts/bastd/game/deathmatch.py
+++ b/assets/src/data/scripts/bastd/game/deathmatch.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""DeathMatch game and support classes."""
# bs_meta require api 6
diff --git a/assets/src/data/scripts/bastd/game/easteregghunt.py b/assets/src/data/scripts/bastd/game/easteregghunt.py
index aa5cdd25..2ff0a52a 100644
--- a/assets/src/data/scripts/bastd/game/easteregghunt.py
+++ b/assets/src/data/scripts/bastd/game/easteregghunt.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""Provides an easter egg hunt game."""
# bs_meta require api 6
diff --git a/assets/src/data/scripts/bastd/game/elimination.py b/assets/src/data/scripts/bastd/game/elimination.py
index 3fcaee7f..7fb303f5 100644
--- a/assets/src/data/scripts/bastd/game/elimination.py
+++ b/assets/src/data/scripts/bastd/game/elimination.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""Elimination mini-game."""
# bs_meta require api 6
diff --git a/assets/src/data/scripts/bastd/game/football.py b/assets/src/data/scripts/bastd/game/football.py
index 31c8ea6f..c8610821 100644
--- a/assets/src/data/scripts/bastd/game/football.py
+++ b/assets/src/data/scripts/bastd/game/football.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""Implements football games (both co-op and teams varieties)."""
# bs_meta require api 6
diff --git a/assets/src/data/scripts/bastd/game/hockey.py b/assets/src/data/scripts/bastd/game/hockey.py
index b034a4d6..ee819750 100644
--- a/assets/src/data/scripts/bastd/game/hockey.py
+++ b/assets/src/data/scripts/bastd/game/hockey.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""Hockey game and support classes."""
# bs_meta require api 6
diff --git a/assets/src/data/scripts/bastd/game/keepaway.py b/assets/src/data/scripts/bastd/game/keepaway.py
index 3df02148..a251276c 100644
--- a/assets/src/data/scripts/bastd/game/keepaway.py
+++ b/assets/src/data/scripts/bastd/game/keepaway.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""Defines a keep-away game type."""
# bs_meta require api 6
diff --git a/assets/src/data/scripts/bastd/game/kingofthehill.py b/assets/src/data/scripts/bastd/game/kingofthehill.py
index 89d7b909..bc432c7c 100644
--- a/assets/src/data/scripts/bastd/game/kingofthehill.py
+++ b/assets/src/data/scripts/bastd/game/kingofthehill.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""Defines the King of the Hill game."""
# bs_meta require api 6
diff --git a/assets/src/data/scripts/bastd/game/meteorshower.py b/assets/src/data/scripts/bastd/game/meteorshower.py
index 88a65e7e..5c94aa1a 100644
--- a/assets/src/data/scripts/bastd/game/meteorshower.py
+++ b/assets/src/data/scripts/bastd/game/meteorshower.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""Defines a bomb-dodging mini-game."""
# bs_meta require api 6
diff --git a/assets/src/data/scripts/bastd/game/ninjafight.py b/assets/src/data/scripts/bastd/game/ninjafight.py
index f0ce38c5..ec24290d 100644
--- a/assets/src/data/scripts/bastd/game/ninjafight.py
+++ b/assets/src/data/scripts/bastd/game/ninjafight.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""Provides Ninja Fight mini-game."""
# bs_meta require api 6
diff --git a/assets/src/data/scripts/bastd/game/onslaught.py b/assets/src/data/scripts/bastd/game/onslaught.py
index a917ed51..a14e3a1d 100644
--- a/assets/src/data/scripts/bastd/game/onslaught.py
+++ b/assets/src/data/scripts/bastd/game/onslaught.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""Provides Onslaught Co-op game."""
# Yes this is a long one..
diff --git a/assets/src/data/scripts/bastd/game/race.py b/assets/src/data/scripts/bastd/game/race.py
index f8521941..63804470 100644
--- a/assets/src/data/scripts/bastd/game/race.py
+++ b/assets/src/data/scripts/bastd/game/race.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""Defines Race mini-game."""
# bs_meta require api 6
diff --git a/assets/src/data/scripts/bastd/game/runaround.py b/assets/src/data/scripts/bastd/game/runaround.py
index 69d2019b..27d98389 100644
--- a/assets/src/data/scripts/bastd/game/runaround.py
+++ b/assets/src/data/scripts/bastd/game/runaround.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""Defines the runaround co-op game."""
# We wear the cone of shame.
diff --git a/assets/src/data/scripts/bastd/game/targetpractice.py b/assets/src/data/scripts/bastd/game/targetpractice.py
index 804d1a1d..0f678ed2 100644
--- a/assets/src/data/scripts/bastd/game/targetpractice.py
+++ b/assets/src/data/scripts/bastd/game/targetpractice.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""Implements Target Practice game."""
# bs_meta require api 6
diff --git a/assets/src/data/scripts/bastd/game/thelaststand.py b/assets/src/data/scripts/bastd/game/thelaststand.py
index 84b4c883..e8bf0523 100644
--- a/assets/src/data/scripts/bastd/game/thelaststand.py
+++ b/assets/src/data/scripts/bastd/game/thelaststand.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""Defines the last stand minigame."""
from __future__ import annotations
diff --git a/assets/src/data/scripts/bastd/mainmenu.py b/assets/src/data/scripts/bastd/mainmenu.py
index bc547cde..76d6a84e 100644
--- a/assets/src/data/scripts/bastd/mainmenu.py
+++ b/assets/src/data/scripts/bastd/mainmenu.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""Session and Activity for displaying the main menu bg."""
from __future__ import annotations
diff --git a/assets/src/data/scripts/bastd/mapdata/__init__.py b/assets/src/data/scripts/bastd/mapdata/__init__.py
index e69de29b..72840fe8 100644
--- a/assets/src/data/scripts/bastd/mapdata/__init__.py
+++ b/assets/src/data/scripts/bastd/mapdata/__init__.py
@@ -0,0 +1 @@
+# Copyright (c) 2011-2019 Eric Froemling
diff --git a/assets/src/data/scripts/bastd/mapdata/big_g.py b/assets/src/data/scripts/bastd/mapdata/big_g.py
index cb23fee4..520aaeb9 100644
--- a/assets/src/data/scripts/bastd/mapdata/big_g.py
+++ b/assets/src/data/scripts/bastd/mapdata/big_g.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
# This file was automatically generated from "big_g.ma"
# pylint: disable=all
points = {}
diff --git a/assets/src/data/scripts/bastd/mapdata/bridgit.py b/assets/src/data/scripts/bastd/mapdata/bridgit.py
index bc3b2935..600f3f5c 100644
--- a/assets/src/data/scripts/bastd/mapdata/bridgit.py
+++ b/assets/src/data/scripts/bastd/mapdata/bridgit.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
# This file was automatically generated from "bridgit.ma"
# pylint: disable=all
points = {}
diff --git a/assets/src/data/scripts/bastd/mapdata/courtyard.py b/assets/src/data/scripts/bastd/mapdata/courtyard.py
index 6f6fd694..5bd9dfb0 100644
--- a/assets/src/data/scripts/bastd/mapdata/courtyard.py
+++ b/assets/src/data/scripts/bastd/mapdata/courtyard.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
# This file was automatically generated from "courtyard.ma"
# pylint: disable=all
points = {}
diff --git a/assets/src/data/scripts/bastd/mapdata/crag_castle.py b/assets/src/data/scripts/bastd/mapdata/crag_castle.py
index 9f51867f..4bc3bea0 100644
--- a/assets/src/data/scripts/bastd/mapdata/crag_castle.py
+++ b/assets/src/data/scripts/bastd/mapdata/crag_castle.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
# This file was automatically generated from "crag_castle.ma"
# pylint: disable=all
points = {}
diff --git a/assets/src/data/scripts/bastd/mapdata/doom_shroom.py b/assets/src/data/scripts/bastd/mapdata/doom_shroom.py
index a0812149..7c04a7d2 100644
--- a/assets/src/data/scripts/bastd/mapdata/doom_shroom.py
+++ b/assets/src/data/scripts/bastd/mapdata/doom_shroom.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
# This file was automatically generated from "doom_shroom.ma"
# pylint: disable=all
points = {}
diff --git a/assets/src/data/scripts/bastd/mapdata/football_stadium.py b/assets/src/data/scripts/bastd/mapdata/football_stadium.py
index 73f97a2b..507fc1d3 100644
--- a/assets/src/data/scripts/bastd/mapdata/football_stadium.py
+++ b/assets/src/data/scripts/bastd/mapdata/football_stadium.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
# This file was automatically generated from "football_stadium.ma"
# pylint: disable=all
points = {}
diff --git a/assets/src/data/scripts/bastd/mapdata/happy_thoughts.py b/assets/src/data/scripts/bastd/mapdata/happy_thoughts.py
index 85099d14..d00d959a 100644
--- a/assets/src/data/scripts/bastd/mapdata/happy_thoughts.py
+++ b/assets/src/data/scripts/bastd/mapdata/happy_thoughts.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
# This file was automatically generated from "happy_thoughts.ma"
# pylint: disable=all
points = {}
diff --git a/assets/src/data/scripts/bastd/mapdata/hockey_stadium.py b/assets/src/data/scripts/bastd/mapdata/hockey_stadium.py
index 9279b006..c907ff40 100644
--- a/assets/src/data/scripts/bastd/mapdata/hockey_stadium.py
+++ b/assets/src/data/scripts/bastd/mapdata/hockey_stadium.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
# This file was automatically generated from "hockey_stadium.ma"
# pylint: disable=all
points = {}
diff --git a/assets/src/data/scripts/bastd/mapdata/lake_frigid.py b/assets/src/data/scripts/bastd/mapdata/lake_frigid.py
index 66a16521..28192230 100644
--- a/assets/src/data/scripts/bastd/mapdata/lake_frigid.py
+++ b/assets/src/data/scripts/bastd/mapdata/lake_frigid.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
# This file was automatically generated from "lake_frigid.ma"
# pylint: disable=all
points = {}
diff --git a/assets/src/data/scripts/bastd/mapdata/monkey_face.py b/assets/src/data/scripts/bastd/mapdata/monkey_face.py
index 9c4031bb..e00902eb 100644
--- a/assets/src/data/scripts/bastd/mapdata/monkey_face.py
+++ b/assets/src/data/scripts/bastd/mapdata/monkey_face.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
# This file was automatically generated from "monkey_face.ma"
# pylint: disable=all
points = {}
diff --git a/assets/src/data/scripts/bastd/mapdata/rampage.py b/assets/src/data/scripts/bastd/mapdata/rampage.py
index da8730cf..1d1b82fe 100644
--- a/assets/src/data/scripts/bastd/mapdata/rampage.py
+++ b/assets/src/data/scripts/bastd/mapdata/rampage.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
# This file was automatically generated from "rampage.ma"
# pylint: disable=all
points = {}
diff --git a/assets/src/data/scripts/bastd/mapdata/roundabout.py b/assets/src/data/scripts/bastd/mapdata/roundabout.py
index 0ce30a54..9059a74d 100644
--- a/assets/src/data/scripts/bastd/mapdata/roundabout.py
+++ b/assets/src/data/scripts/bastd/mapdata/roundabout.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
# This file was automatically generated from "roundabout.ma"
# pylint: disable=all
points = {}
diff --git a/assets/src/data/scripts/bastd/mapdata/step_right_up.py b/assets/src/data/scripts/bastd/mapdata/step_right_up.py
index 0b442416..c540cd97 100644
--- a/assets/src/data/scripts/bastd/mapdata/step_right_up.py
+++ b/assets/src/data/scripts/bastd/mapdata/step_right_up.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
# This file was automatically generated from "step_right_up.ma"
# pylint: disable=all
points = {}
diff --git a/assets/src/data/scripts/bastd/mapdata/the_pad.py b/assets/src/data/scripts/bastd/mapdata/the_pad.py
index 350dba7a..f245d18c 100644
--- a/assets/src/data/scripts/bastd/mapdata/the_pad.py
+++ b/assets/src/data/scripts/bastd/mapdata/the_pad.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
# This file was automatically generated from "the_pad.ma"
# pylint: disable=all
points = {}
diff --git a/assets/src/data/scripts/bastd/mapdata/tip_top.py b/assets/src/data/scripts/bastd/mapdata/tip_top.py
index 20c0c6d2..f654d3ef 100644
--- a/assets/src/data/scripts/bastd/mapdata/tip_top.py
+++ b/assets/src/data/scripts/bastd/mapdata/tip_top.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
# This file was automatically generated from "tip_top.ma"
# pylint: disable=all
points = {}
diff --git a/assets/src/data/scripts/bastd/mapdata/tower_d.py b/assets/src/data/scripts/bastd/mapdata/tower_d.py
index f28e9a86..66e7307e 100644
--- a/assets/src/data/scripts/bastd/mapdata/tower_d.py
+++ b/assets/src/data/scripts/bastd/mapdata/tower_d.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
# This file was automatically generated from "tower_d.ma"
# pylint: disable=all
points = {}
diff --git a/assets/src/data/scripts/bastd/mapdata/zig_zag.py b/assets/src/data/scripts/bastd/mapdata/zig_zag.py
index 8f8ccad1..1eba36f4 100644
--- a/assets/src/data/scripts/bastd/mapdata/zig_zag.py
+++ b/assets/src/data/scripts/bastd/mapdata/zig_zag.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
# This file was automatically generated from "zig_zag.ma"
# pylint: disable=all
points = {}
diff --git a/assets/src/data/scripts/bastd/maps.py b/assets/src/data/scripts/bastd/maps.py
index 618f1bdb..b8406b56 100644
--- a/assets/src/data/scripts/bastd/maps.py
+++ b/assets/src/data/scripts/bastd/maps.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""Standard maps."""
# pylint: disable=too-many-lines
diff --git a/assets/src/data/scripts/bastd/session/__init__.py b/assets/src/data/scripts/bastd/session/__init__.py
index e69de29b..72840fe8 100644
--- a/assets/src/data/scripts/bastd/session/__init__.py
+++ b/assets/src/data/scripts/bastd/session/__init__.py
@@ -0,0 +1 @@
+# Copyright (c) 2011-2019 Eric Froemling
diff --git a/assets/src/data/scripts/bastd/stdmap.py b/assets/src/data/scripts/bastd/stdmap.py
index d1d470cb..e561598e 100644
--- a/assets/src/data/scripts/bastd/stdmap.py
+++ b/assets/src/data/scripts/bastd/stdmap.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""Defines standard map type."""
from __future__ import annotations
diff --git a/assets/src/data/scripts/bastd/tutorial.py b/assets/src/data/scripts/bastd/tutorial.py
index 61bcc688..cb6e8b04 100644
--- a/assets/src/data/scripts/bastd/tutorial.py
+++ b/assets/src/data/scripts/bastd/tutorial.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""Wrangles the game tutorial sequence."""
# Not too concerned with keeping this old module pretty;
diff --git a/assets/src/data/scripts/bastd/ui/__init__.py b/assets/src/data/scripts/bastd/ui/__init__.py
index 0e9370f6..06f22de2 100644
--- a/assets/src/data/scripts/bastd/ui/__init__.py
+++ b/assets/src/data/scripts/bastd/ui/__init__.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""
Provide top level UI related functionality.
"""
diff --git a/assets/src/data/scripts/bastd/ui/account/__init__.py b/assets/src/data/scripts/bastd/ui/account/__init__.py
index c48a83b5..1ee73efd 100644
--- a/assets/src/data/scripts/bastd/ui/account/__init__.py
+++ b/assets/src/data/scripts/bastd/ui/account/__init__.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""UI functionality related to accounts."""
from __future__ import annotations
diff --git a/assets/src/data/scripts/bastd/ui/account/link.py b/assets/src/data/scripts/bastd/ui/account/link.py
index e11c983d..467435fe 100644
--- a/assets/src/data/scripts/bastd/ui/account/link.py
+++ b/assets/src/data/scripts/bastd/ui/account/link.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""UI functionality for linking accounts."""
from __future__ import annotations
diff --git a/assets/src/data/scripts/bastd/ui/account/settings.py b/assets/src/data/scripts/bastd/ui/account/settings.py
index 96e62949..33979b31 100644
--- a/assets/src/data/scripts/bastd/ui/account/settings.py
+++ b/assets/src/data/scripts/bastd/ui/account/settings.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""Provides UI for account functionality."""
# pylint: disable=too-many-lines
diff --git a/assets/src/data/scripts/bastd/ui/account/unlink.py b/assets/src/data/scripts/bastd/ui/account/unlink.py
index e85b9dec..aac6006d 100644
--- a/assets/src/data/scripts/bastd/ui/account/unlink.py
+++ b/assets/src/data/scripts/bastd/ui/account/unlink.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""UI functionality for unlinking accounts."""
from __future__ import annotations
diff --git a/assets/src/data/scripts/bastd/ui/account/viewer.py b/assets/src/data/scripts/bastd/ui/account/viewer.py
index 48398f26..6e8ada05 100644
--- a/assets/src/data/scripts/bastd/ui/account/viewer.py
+++ b/assets/src/data/scripts/bastd/ui/account/viewer.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""Provides a popup for displaying info about any account."""
from __future__ import annotations
diff --git a/assets/src/data/scripts/bastd/ui/achievements.py b/assets/src/data/scripts/bastd/ui/achievements.py
index 163944b0..fd49922c 100644
--- a/assets/src/data/scripts/bastd/ui/achievements.py
+++ b/assets/src/data/scripts/bastd/ui/achievements.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""Provides a popup window to view achievements."""
from __future__ import annotations
diff --git a/assets/src/data/scripts/bastd/ui/appinvite.py b/assets/src/data/scripts/bastd/ui/appinvite.py
index 5e6b6048..fb692579 100644
--- a/assets/src/data/scripts/bastd/ui/appinvite.py
+++ b/assets/src/data/scripts/bastd/ui/appinvite.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""UI functionality related to inviting people to try the game."""
from __future__ import annotations
diff --git a/assets/src/data/scripts/bastd/ui/characterpicker.py b/assets/src/data/scripts/bastd/ui/characterpicker.py
index a44b2459..80f57688 100644
--- a/assets/src/data/scripts/bastd/ui/characterpicker.py
+++ b/assets/src/data/scripts/bastd/ui/characterpicker.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""Provides a picker for characters."""
from __future__ import annotations
diff --git a/assets/src/data/scripts/bastd/ui/colorpicker.py b/assets/src/data/scripts/bastd/ui/colorpicker.py
index d0b4ed87..ec0c1d7e 100644
--- a/assets/src/data/scripts/bastd/ui/colorpicker.py
+++ b/assets/src/data/scripts/bastd/ui/colorpicker.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""Provides popup windows for choosing colors."""
from __future__ import annotations
diff --git a/assets/src/data/scripts/bastd/ui/config.py b/assets/src/data/scripts/bastd/ui/config.py
index 974744fb..cca6b991 100644
--- a/assets/src/data/scripts/bastd/ui/config.py
+++ b/assets/src/data/scripts/bastd/ui/config.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""Functionality for editing config values and applying them to the game."""
from __future__ import annotations
diff --git a/assets/src/data/scripts/bastd/ui/configerror.py b/assets/src/data/scripts/bastd/ui/configerror.py
index da9b2f6c..512be519 100644
--- a/assets/src/data/scripts/bastd/ui/configerror.py
+++ b/assets/src/data/scripts/bastd/ui/configerror.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""UI for dealing with broken config files."""
from __future__ import annotations
diff --git a/assets/src/data/scripts/bastd/ui/confirm.py b/assets/src/data/scripts/bastd/ui/confirm.py
index b78dffea..fb464fbd 100644
--- a/assets/src/data/scripts/bastd/ui/confirm.py
+++ b/assets/src/data/scripts/bastd/ui/confirm.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""Provides ConfirmWindow base class and commonly used derivatives."""
from __future__ import annotations
diff --git a/assets/src/data/scripts/bastd/ui/continues.py b/assets/src/data/scripts/bastd/ui/continues.py
index d4a93247..d0baae08 100644
--- a/assets/src/data/scripts/bastd/ui/continues.py
+++ b/assets/src/data/scripts/bastd/ui/continues.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""Provides a popup window to continue a game."""
from __future__ import annotations
diff --git a/assets/src/data/scripts/bastd/ui/coop/__init__.py b/assets/src/data/scripts/bastd/ui/coop/__init__.py
index e69de29b..72840fe8 100644
--- a/assets/src/data/scripts/bastd/ui/coop/__init__.py
+++ b/assets/src/data/scripts/bastd/ui/coop/__init__.py
@@ -0,0 +1 @@
+# Copyright (c) 2011-2019 Eric Froemling
diff --git a/assets/src/data/scripts/bastd/ui/coop/browser.py b/assets/src/data/scripts/bastd/ui/coop/browser.py
index 3450cc91..ddaa39ed 100644
--- a/assets/src/data/scripts/bastd/ui/coop/browser.py
+++ b/assets/src/data/scripts/bastd/ui/coop/browser.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""UI for browsing available co-op levels/games/etc."""
# FIXME: Break this up.
# pylint: disable=too-many-lines
diff --git a/assets/src/data/scripts/bastd/ui/coop/gamebutton.py b/assets/src/data/scripts/bastd/ui/coop/gamebutton.py
index b5879bfd..ef2b1e2f 100644
--- a/assets/src/data/scripts/bastd/ui/coop/gamebutton.py
+++ b/assets/src/data/scripts/bastd/ui/coop/gamebutton.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""Defines button for co-op games."""
from __future__ import annotations
diff --git a/assets/src/data/scripts/bastd/ui/coop/level.py b/assets/src/data/scripts/bastd/ui/coop/level.py
index b3613f4c..e2adae32 100644
--- a/assets/src/data/scripts/bastd/ui/coop/level.py
+++ b/assets/src/data/scripts/bastd/ui/coop/level.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""Bits of utility functionality related to co-op levels."""
from __future__ import annotations
diff --git a/assets/src/data/scripts/bastd/ui/creditslist.py b/assets/src/data/scripts/bastd/ui/creditslist.py
index 48660c0f..c1855acb 100644
--- a/assets/src/data/scripts/bastd/ui/creditslist.py
+++ b/assets/src/data/scripts/bastd/ui/creditslist.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""Provides a window to display game credits."""
from __future__ import annotations
diff --git a/assets/src/data/scripts/bastd/ui/debug.py b/assets/src/data/scripts/bastd/ui/debug.py
index ec95b35b..fdb9848d 100644
--- a/assets/src/data/scripts/bastd/ui/debug.py
+++ b/assets/src/data/scripts/bastd/ui/debug.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""UIs for debugging purposes."""
from __future__ import annotations
diff --git a/assets/src/data/scripts/bastd/ui/feedback.py b/assets/src/data/scripts/bastd/ui/feedback.py
index d9143ba9..83f820b4 100644
--- a/assets/src/data/scripts/bastd/ui/feedback.py
+++ b/assets/src/data/scripts/bastd/ui/feedback.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""UI functionality related to users rating the game."""
from __future__ import annotations
diff --git a/assets/src/data/scripts/bastd/ui/fileselector.py b/assets/src/data/scripts/bastd/ui/fileselector.py
index 97c1655c..1b913f87 100644
--- a/assets/src/data/scripts/bastd/ui/fileselector.py
+++ b/assets/src/data/scripts/bastd/ui/fileselector.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""UI functionality for selecting files."""
from __future__ import annotations
diff --git a/assets/src/data/scripts/bastd/ui/gather.py b/assets/src/data/scripts/bastd/ui/gather.py
index 02d90044..caef2e29 100644
--- a/assets/src/data/scripts/bastd/ui/gather.py
+++ b/assets/src/data/scripts/bastd/ui/gather.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""Provides UI for inviting/joining friends."""
# pylint: disable=too-many-lines
diff --git a/assets/src/data/scripts/bastd/ui/getcurrency.py b/assets/src/data/scripts/bastd/ui/getcurrency.py
index e5fd9fec..d0d5d868 100644
--- a/assets/src/data/scripts/bastd/ui/getcurrency.py
+++ b/assets/src/data/scripts/bastd/ui/getcurrency.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""UI functionality for purchasing/acquiring currency."""
from __future__ import annotations
diff --git a/assets/src/data/scripts/bastd/ui/getremote.py b/assets/src/data/scripts/bastd/ui/getremote.py
index 612ed6b7..087769dd 100644
--- a/assets/src/data/scripts/bastd/ui/getremote.py
+++ b/assets/src/data/scripts/bastd/ui/getremote.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""Provides a popup telling the user about the BSRemote app."""
from __future__ import annotations
diff --git a/assets/src/data/scripts/bastd/ui/helpui.py b/assets/src/data/scripts/bastd/ui/helpui.py
index 792072fc..fcae441a 100644
--- a/assets/src/data/scripts/bastd/ui/helpui.py
+++ b/assets/src/data/scripts/bastd/ui/helpui.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""Provides help related ui."""
from __future__ import annotations
diff --git a/assets/src/data/scripts/bastd/ui/iconpicker.py b/assets/src/data/scripts/bastd/ui/iconpicker.py
index b17bea90..0329361d 100644
--- a/assets/src/data/scripts/bastd/ui/iconpicker.py
+++ b/assets/src/data/scripts/bastd/ui/iconpicker.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""Provides a picker for icons."""
from __future__ import annotations
diff --git a/assets/src/data/scripts/bastd/ui/kiosk.py b/assets/src/data/scripts/bastd/ui/kiosk.py
index 684962ae..37042638 100644
--- a/assets/src/data/scripts/bastd/ui/kiosk.py
+++ b/assets/src/data/scripts/bastd/ui/kiosk.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""UI functionality for running the game in kiosk mode."""
from __future__ import annotations
diff --git a/assets/src/data/scripts/bastd/ui/league/__init__.py b/assets/src/data/scripts/bastd/ui/league/__init__.py
index 6be260bc..6eb1a5a7 100644
--- a/assets/src/data/scripts/bastd/ui/league/__init__.py
+++ b/assets/src/data/scripts/bastd/ui/league/__init__.py
@@ -1 +1,2 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""League related UI functionality."""
diff --git a/assets/src/data/scripts/bastd/ui/league/rankbutton.py b/assets/src/data/scripts/bastd/ui/league/rankbutton.py
index 7fb4de10..4aa3ab81 100644
--- a/assets/src/data/scripts/bastd/ui/league/rankbutton.py
+++ b/assets/src/data/scripts/bastd/ui/league/rankbutton.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""Provides a button showing league rank."""
from __future__ import annotations
diff --git a/assets/src/data/scripts/bastd/ui/league/rankwindow.py b/assets/src/data/scripts/bastd/ui/league/rankwindow.py
index 69a43d02..d908cfad 100644
--- a/assets/src/data/scripts/bastd/ui/league/rankwindow.py
+++ b/assets/src/data/scripts/bastd/ui/league/rankwindow.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""UI related to league rank."""
from __future__ import annotations
diff --git a/assets/src/data/scripts/bastd/ui/mainmenu.py b/assets/src/data/scripts/bastd/ui/mainmenu.py
index ce83b679..6b167027 100644
--- a/assets/src/data/scripts/bastd/ui/mainmenu.py
+++ b/assets/src/data/scripts/bastd/ui/mainmenu.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""Implements the main menu window."""
from __future__ import annotations
diff --git a/assets/src/data/scripts/bastd/ui/onscreenkeyboard.py b/assets/src/data/scripts/bastd/ui/onscreenkeyboard.py
index 8a59d13a..1b2ee688 100644
--- a/assets/src/data/scripts/bastd/ui/onscreenkeyboard.py
+++ b/assets/src/data/scripts/bastd/ui/onscreenkeyboard.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""Provides the built-in on screen keyboard UI."""
from __future__ import annotations
diff --git a/assets/src/data/scripts/bastd/ui/party.py b/assets/src/data/scripts/bastd/ui/party.py
index e743fab3..8adca358 100644
--- a/assets/src/data/scripts/bastd/ui/party.py
+++ b/assets/src/data/scripts/bastd/ui/party.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""Provides party related UI."""
from __future__ import annotations
diff --git a/assets/src/data/scripts/bastd/ui/partyqueue.py b/assets/src/data/scripts/bastd/ui/partyqueue.py
index 8c334632..4168b2b1 100644
--- a/assets/src/data/scripts/bastd/ui/partyqueue.py
+++ b/assets/src/data/scripts/bastd/ui/partyqueue.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""UI related to waiting in line for a party."""
from __future__ import annotations
diff --git a/assets/src/data/scripts/bastd/ui/play.py b/assets/src/data/scripts/bastd/ui/play.py
index 5c87dae3..89350676 100644
--- a/assets/src/data/scripts/bastd/ui/play.py
+++ b/assets/src/data/scripts/bastd/ui/play.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""Provides the top level play window."""
from __future__ import annotations
diff --git a/assets/src/data/scripts/bastd/ui/playlist/__init__.py b/assets/src/data/scripts/bastd/ui/playlist/__init__.py
index 199936eb..00fe072b 100644
--- a/assets/src/data/scripts/bastd/ui/playlist/__init__.py
+++ b/assets/src/data/scripts/bastd/ui/playlist/__init__.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""Playlist ui functionality."""
from __future__ import annotations
diff --git a/assets/src/data/scripts/bastd/ui/playlist/addgame.py b/assets/src/data/scripts/bastd/ui/playlist/addgame.py
index 6a0983db..bfcf13c2 100644
--- a/assets/src/data/scripts/bastd/ui/playlist/addgame.py
+++ b/assets/src/data/scripts/bastd/ui/playlist/addgame.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""Provides a window for selecting a game type to add to a playlist."""
from __future__ import annotations
diff --git a/assets/src/data/scripts/bastd/ui/playlist/browser.py b/assets/src/data/scripts/bastd/ui/playlist/browser.py
index 51c30817..7051c872 100644
--- a/assets/src/data/scripts/bastd/ui/playlist/browser.py
+++ b/assets/src/data/scripts/bastd/ui/playlist/browser.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""Provides a window for browsing and launching game playlists."""
from __future__ import annotations
diff --git a/assets/src/data/scripts/bastd/ui/playlist/customizebrowser.py b/assets/src/data/scripts/bastd/ui/playlist/customizebrowser.py
index 6ae23574..5deed808 100644
--- a/assets/src/data/scripts/bastd/ui/playlist/customizebrowser.py
+++ b/assets/src/data/scripts/bastd/ui/playlist/customizebrowser.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""Provides UI for viewing/creating/editing playlists."""
from __future__ import annotations
diff --git a/assets/src/data/scripts/bastd/ui/playlist/edit.py b/assets/src/data/scripts/bastd/ui/playlist/edit.py
index 494f26c4..bb737bc6 100644
--- a/assets/src/data/scripts/bastd/ui/playlist/edit.py
+++ b/assets/src/data/scripts/bastd/ui/playlist/edit.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""Provides a window for editing individual game playlists."""
from __future__ import annotations
diff --git a/assets/src/data/scripts/bastd/ui/playlist/editcontroller.py b/assets/src/data/scripts/bastd/ui/playlist/editcontroller.py
index 29f15eb0..e015b8a1 100644
--- a/assets/src/data/scripts/bastd/ui/playlist/editcontroller.py
+++ b/assets/src/data/scripts/bastd/ui/playlist/editcontroller.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""Defines a controller for wrangling playlist edit UIs."""
from __future__ import annotations
diff --git a/assets/src/data/scripts/bastd/ui/playlist/editgame.py b/assets/src/data/scripts/bastd/ui/playlist/editgame.py
index c9e7159b..3b9f6c50 100644
--- a/assets/src/data/scripts/bastd/ui/playlist/editgame.py
+++ b/assets/src/data/scripts/bastd/ui/playlist/editgame.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""Provides UI for editing a game in a playlist."""
from __future__ import annotations
diff --git a/assets/src/data/scripts/bastd/ui/playlist/mapselect.py b/assets/src/data/scripts/bastd/ui/playlist/mapselect.py
index 5c12a362..67695cce 100644
--- a/assets/src/data/scripts/bastd/ui/playlist/mapselect.py
+++ b/assets/src/data/scripts/bastd/ui/playlist/mapselect.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""Provides UI for selecting maps in playlists."""
from __future__ import annotations
diff --git a/assets/src/data/scripts/bastd/ui/playlist/share.py b/assets/src/data/scripts/bastd/ui/playlist/share.py
index 3dfd5cee..dc40cc0a 100644
--- a/assets/src/data/scripts/bastd/ui/playlist/share.py
+++ b/assets/src/data/scripts/bastd/ui/playlist/share.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""UI functionality for importing shared playlists."""
from __future__ import annotations
diff --git a/assets/src/data/scripts/bastd/ui/playoptions.py b/assets/src/data/scripts/bastd/ui/playoptions.py
index b9f18a8a..14e0e031 100644
--- a/assets/src/data/scripts/bastd/ui/playoptions.py
+++ b/assets/src/data/scripts/bastd/ui/playoptions.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""Provides a window for configuring play options."""
from __future__ import annotations
diff --git a/assets/src/data/scripts/bastd/ui/popup.py b/assets/src/data/scripts/bastd/ui/popup.py
index de82c3a0..5057c051 100644
--- a/assets/src/data/scripts/bastd/ui/popup.py
+++ b/assets/src/data/scripts/bastd/ui/popup.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""Popup window/menu related functionality."""
from __future__ import annotations
diff --git a/assets/src/data/scripts/bastd/ui/profile/__init__.py b/assets/src/data/scripts/bastd/ui/profile/__init__.py
index e69de29b..72840fe8 100644
--- a/assets/src/data/scripts/bastd/ui/profile/__init__.py
+++ b/assets/src/data/scripts/bastd/ui/profile/__init__.py
@@ -0,0 +1 @@
+# Copyright (c) 2011-2019 Eric Froemling
diff --git a/assets/src/data/scripts/bastd/ui/profile/browser.py b/assets/src/data/scripts/bastd/ui/profile/browser.py
index b0ccbcf7..2fe84cc1 100644
--- a/assets/src/data/scripts/bastd/ui/profile/browser.py
+++ b/assets/src/data/scripts/bastd/ui/profile/browser.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""UI functionality related to browsing player profiles."""
from __future__ import annotations
diff --git a/assets/src/data/scripts/bastd/ui/profile/edit.py b/assets/src/data/scripts/bastd/ui/profile/edit.py
index 045359aa..d64f6dda 100644
--- a/assets/src/data/scripts/bastd/ui/profile/edit.py
+++ b/assets/src/data/scripts/bastd/ui/profile/edit.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""Provides UI to edit a player profile."""
from __future__ import annotations
diff --git a/assets/src/data/scripts/bastd/ui/profile/upgrade.py b/assets/src/data/scripts/bastd/ui/profile/upgrade.py
index a12fb996..06807b27 100644
--- a/assets/src/data/scripts/bastd/ui/profile/upgrade.py
+++ b/assets/src/data/scripts/bastd/ui/profile/upgrade.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""UI for player profile upgrades."""
from __future__ import annotations
diff --git a/assets/src/data/scripts/bastd/ui/promocode.py b/assets/src/data/scripts/bastd/ui/promocode.py
index 67827dd0..7a5668ec 100644
--- a/assets/src/data/scripts/bastd/ui/promocode.py
+++ b/assets/src/data/scripts/bastd/ui/promocode.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""UI functionality for entering promo codes."""
from __future__ import annotations
diff --git a/assets/src/data/scripts/bastd/ui/purchase.py b/assets/src/data/scripts/bastd/ui/purchase.py
index 34960ebc..a2d9baa0 100644
--- a/assets/src/data/scripts/bastd/ui/purchase.py
+++ b/assets/src/data/scripts/bastd/ui/purchase.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""UI related to purchasing items."""
from __future__ import annotations
diff --git a/assets/src/data/scripts/bastd/ui/qrcode.py b/assets/src/data/scripts/bastd/ui/qrcode.py
index 6691fbef..25122308 100644
--- a/assets/src/data/scripts/bastd/ui/qrcode.py
+++ b/assets/src/data/scripts/bastd/ui/qrcode.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""Provides functionality for displaying QR codes."""
from __future__ import annotations
diff --git a/assets/src/data/scripts/bastd/ui/radiogroup.py b/assets/src/data/scripts/bastd/ui/radiogroup.py
index cab35ac6..cc24daad 100644
--- a/assets/src/data/scripts/bastd/ui/radiogroup.py
+++ b/assets/src/data/scripts/bastd/ui/radiogroup.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""UI functionality for creating radio groups of buttons."""
from __future__ import annotations
diff --git a/assets/src/data/scripts/bastd/ui/report.py b/assets/src/data/scripts/bastd/ui/report.py
index c15ef2f0..a14918be 100644
--- a/assets/src/data/scripts/bastd/ui/report.py
+++ b/assets/src/data/scripts/bastd/ui/report.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""UI related to reporting bad behavior/etc."""
from __future__ import annotations
diff --git a/assets/src/data/scripts/bastd/ui/resourcetypeinfo.py b/assets/src/data/scripts/bastd/ui/resourcetypeinfo.py
index 8fc2737e..e13c6974 100644
--- a/assets/src/data/scripts/bastd/ui/resourcetypeinfo.py
+++ b/assets/src/data/scripts/bastd/ui/resourcetypeinfo.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""Provides a window which shows info about resource types."""
from __future__ import annotations
diff --git a/assets/src/data/scripts/bastd/ui/serverdialog.py b/assets/src/data/scripts/bastd/ui/serverdialog.py
index c6e9ebe0..d29d2f54 100644
--- a/assets/src/data/scripts/bastd/ui/serverdialog.py
+++ b/assets/src/data/scripts/bastd/ui/serverdialog.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""Dialog window controlled by the master server."""
from __future__ import annotations
diff --git a/assets/src/data/scripts/bastd/ui/settings/__init__.py b/assets/src/data/scripts/bastd/ui/settings/__init__.py
index e69de29b..72840fe8 100644
--- a/assets/src/data/scripts/bastd/ui/settings/__init__.py
+++ b/assets/src/data/scripts/bastd/ui/settings/__init__.py
@@ -0,0 +1 @@
+# Copyright (c) 2011-2019 Eric Froemling
diff --git a/assets/src/data/scripts/bastd/ui/settings/advanced.py b/assets/src/data/scripts/bastd/ui/settings/advanced.py
index edfac11e..fef24db6 100644
--- a/assets/src/data/scripts/bastd/ui/settings/advanced.py
+++ b/assets/src/data/scripts/bastd/ui/settings/advanced.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""UI functionality for advanced settings."""
from __future__ import annotations
diff --git a/assets/src/data/scripts/bastd/ui/settings/allsettings.py b/assets/src/data/scripts/bastd/ui/settings/allsettings.py
index 58b4e06f..3b6f3e1a 100644
--- a/assets/src/data/scripts/bastd/ui/settings/allsettings.py
+++ b/assets/src/data/scripts/bastd/ui/settings/allsettings.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""UI for top level settings categories."""
from __future__ import annotations
diff --git a/assets/src/data/scripts/bastd/ui/settings/audio.py b/assets/src/data/scripts/bastd/ui/settings/audio.py
index e2085880..86f24bc9 100644
--- a/assets/src/data/scripts/bastd/ui/settings/audio.py
+++ b/assets/src/data/scripts/bastd/ui/settings/audio.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""Provides audio settings UI."""
from __future__ import annotations
diff --git a/assets/src/data/scripts/bastd/ui/settings/controls.py b/assets/src/data/scripts/bastd/ui/settings/controls.py
index 69743b29..7b689f5a 100644
--- a/assets/src/data/scripts/bastd/ui/settings/controls.py
+++ b/assets/src/data/scripts/bastd/ui/settings/controls.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""Provides a top level control settings window."""
from __future__ import annotations
diff --git a/assets/src/data/scripts/bastd/ui/settings/gamepad.py b/assets/src/data/scripts/bastd/ui/settings/gamepad.py
index b5e9b4c8..1956b31a 100644
--- a/assets/src/data/scripts/bastd/ui/settings/gamepad.py
+++ b/assets/src/data/scripts/bastd/ui/settings/gamepad.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""Settings UI functionality related to gamepads."""
from __future__ import annotations
diff --git a/assets/src/data/scripts/bastd/ui/settings/gamepadadvanced.py b/assets/src/data/scripts/bastd/ui/settings/gamepadadvanced.py
index 5e8a1e4a..10beec79 100644
--- a/assets/src/data/scripts/bastd/ui/settings/gamepadadvanced.py
+++ b/assets/src/data/scripts/bastd/ui/settings/gamepadadvanced.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""UI functionality related to advanced gamepad configuring."""
from __future__ import annotations
diff --git a/assets/src/data/scripts/bastd/ui/settings/gamepadselect.py b/assets/src/data/scripts/bastd/ui/settings/gamepadselect.py
index 79177af3..f1830ba0 100644
--- a/assets/src/data/scripts/bastd/ui/settings/gamepadselect.py
+++ b/assets/src/data/scripts/bastd/ui/settings/gamepadselect.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""Settings UI related to gamepad functionality."""
from __future__ import annotations
diff --git a/assets/src/data/scripts/bastd/ui/settings/graphics.py b/assets/src/data/scripts/bastd/ui/settings/graphics.py
index e68bddc8..bd176009 100644
--- a/assets/src/data/scripts/bastd/ui/settings/graphics.py
+++ b/assets/src/data/scripts/bastd/ui/settings/graphics.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""Provides UI for graphics settings."""
from __future__ import annotations
diff --git a/assets/src/data/scripts/bastd/ui/settings/keyboard.py b/assets/src/data/scripts/bastd/ui/settings/keyboard.py
index 9dc358ac..86d37457 100644
--- a/assets/src/data/scripts/bastd/ui/settings/keyboard.py
+++ b/assets/src/data/scripts/bastd/ui/settings/keyboard.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""Keyboard settings related UI functionality."""
from __future__ import annotations
diff --git a/assets/src/data/scripts/bastd/ui/settings/nettesting.py b/assets/src/data/scripts/bastd/ui/settings/nettesting.py
index 2c9d161c..af040eb8 100644
--- a/assets/src/data/scripts/bastd/ui/settings/nettesting.py
+++ b/assets/src/data/scripts/bastd/ui/settings/nettesting.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""Provides ui for network related testing."""
from __future__ import annotations
diff --git a/assets/src/data/scripts/bastd/ui/settings/ps3controller.py b/assets/src/data/scripts/bastd/ui/settings/ps3controller.py
index 689920b5..322dc7dd 100644
--- a/assets/src/data/scripts/bastd/ui/settings/ps3controller.py
+++ b/assets/src/data/scripts/bastd/ui/settings/ps3controller.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""Settings UI related to PS3 controllers."""
from __future__ import annotations
diff --git a/assets/src/data/scripts/bastd/ui/settings/remoteapp.py b/assets/src/data/scripts/bastd/ui/settings/remoteapp.py
index b99a4dfc..8fde22a7 100644
--- a/assets/src/data/scripts/bastd/ui/settings/remoteapp.py
+++ b/assets/src/data/scripts/bastd/ui/settings/remoteapp.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""Settings UI functionality related to the remote app."""
from __future__ import annotations
diff --git a/assets/src/data/scripts/bastd/ui/settings/testing.py b/assets/src/data/scripts/bastd/ui/settings/testing.py
index b63eb9c3..5966dad0 100644
--- a/assets/src/data/scripts/bastd/ui/settings/testing.py
+++ b/assets/src/data/scripts/bastd/ui/settings/testing.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""Provides UI for test settings."""
from __future__ import annotations
diff --git a/assets/src/data/scripts/bastd/ui/settings/touchscreen.py b/assets/src/data/scripts/bastd/ui/settings/touchscreen.py
index 0f95d7f0..4c7bfe5d 100644
--- a/assets/src/data/scripts/bastd/ui/settings/touchscreen.py
+++ b/assets/src/data/scripts/bastd/ui/settings/touchscreen.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""UI settings functionality related to touchscreens."""
from __future__ import annotations
diff --git a/assets/src/data/scripts/bastd/ui/settings/vrtesting.py b/assets/src/data/scripts/bastd/ui/settings/vrtesting.py
index 8418c0cd..c2d21003 100644
--- a/assets/src/data/scripts/bastd/ui/settings/vrtesting.py
+++ b/assets/src/data/scripts/bastd/ui/settings/vrtesting.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""Provides UI for testing vr settings."""
from __future__ import annotations
diff --git a/assets/src/data/scripts/bastd/ui/settings/wiimote.py b/assets/src/data/scripts/bastd/ui/settings/wiimote.py
index 649d12f5..e4606217 100644
--- a/assets/src/data/scripts/bastd/ui/settings/wiimote.py
+++ b/assets/src/data/scripts/bastd/ui/settings/wiimote.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""Settings UI functionality related to wiimote support."""
from __future__ import annotations
diff --git a/assets/src/data/scripts/bastd/ui/settings/xbox360controller.py b/assets/src/data/scripts/bastd/ui/settings/xbox360controller.py
index 085719e5..8bcdd2a0 100644
--- a/assets/src/data/scripts/bastd/ui/settings/xbox360controller.py
+++ b/assets/src/data/scripts/bastd/ui/settings/xbox360controller.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""UI functionality related to using xbox360 controllers."""
from __future__ import annotations
diff --git a/assets/src/data/scripts/bastd/ui/soundtrack/__init__.py b/assets/src/data/scripts/bastd/ui/soundtrack/__init__.py
index e69de29b..72840fe8 100644
--- a/assets/src/data/scripts/bastd/ui/soundtrack/__init__.py
+++ b/assets/src/data/scripts/bastd/ui/soundtrack/__init__.py
@@ -0,0 +1 @@
+# Copyright (c) 2011-2019 Eric Froemling
diff --git a/assets/src/data/scripts/bastd/ui/soundtrack/browser.py b/assets/src/data/scripts/bastd/ui/soundtrack/browser.py
index 2b5c1af3..d22de73e 100644
--- a/assets/src/data/scripts/bastd/ui/soundtrack/browser.py
+++ b/assets/src/data/scripts/bastd/ui/soundtrack/browser.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""Provides UI for browsing soundtracks."""
from __future__ import annotations
diff --git a/assets/src/data/scripts/bastd/ui/soundtrack/edit.py b/assets/src/data/scripts/bastd/ui/soundtrack/edit.py
index 315115bc..ef3c6536 100644
--- a/assets/src/data/scripts/bastd/ui/soundtrack/edit.py
+++ b/assets/src/data/scripts/bastd/ui/soundtrack/edit.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""Provides UI for editing a soundtrack."""
from __future__ import annotations
diff --git a/assets/src/data/scripts/bastd/ui/soundtrack/entrytypeselect.py b/assets/src/data/scripts/bastd/ui/soundtrack/entrytypeselect.py
index 2a4c0541..f7c0c488 100644
--- a/assets/src/data/scripts/bastd/ui/soundtrack/entrytypeselect.py
+++ b/assets/src/data/scripts/bastd/ui/soundtrack/entrytypeselect.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""Provides UI for selecting soundtrack entry types."""
from __future__ import annotations
diff --git a/assets/src/data/scripts/bastd/ui/soundtrack/itunes.py b/assets/src/data/scripts/bastd/ui/soundtrack/itunes.py
index 61773d9c..69072049 100644
--- a/assets/src/data/scripts/bastd/ui/soundtrack/itunes.py
+++ b/assets/src/data/scripts/bastd/ui/soundtrack/itunes.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""UI functionality related to using iTunes for soundtracks."""
from __future__ import annotations
diff --git a/assets/src/data/scripts/bastd/ui/specialoffer.py b/assets/src/data/scripts/bastd/ui/specialoffer.py
index c2a9cb5c..9bee1fc0 100644
--- a/assets/src/data/scripts/bastd/ui/specialoffer.py
+++ b/assets/src/data/scripts/bastd/ui/specialoffer.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""UI for presenting sales/etc."""
from __future__ import annotations
diff --git a/assets/src/data/scripts/bastd/ui/store/__init__.py b/assets/src/data/scripts/bastd/ui/store/__init__.py
index e69de29b..72840fe8 100644
--- a/assets/src/data/scripts/bastd/ui/store/__init__.py
+++ b/assets/src/data/scripts/bastd/ui/store/__init__.py
@@ -0,0 +1 @@
+# Copyright (c) 2011-2019 Eric Froemling
diff --git a/assets/src/data/scripts/bastd/ui/store/browser.py b/assets/src/data/scripts/bastd/ui/store/browser.py
index c2db848f..efbcc4f3 100644
--- a/assets/src/data/scripts/bastd/ui/store/browser.py
+++ b/assets/src/data/scripts/bastd/ui/store/browser.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""UI for browsing the store."""
# pylint: disable=too-many-lines
from __future__ import annotations
diff --git a/assets/src/data/scripts/bastd/ui/store/button.py b/assets/src/data/scripts/bastd/ui/store/button.py
index 3054b7f4..f41afe7c 100644
--- a/assets/src/data/scripts/bastd/ui/store/button.py
+++ b/assets/src/data/scripts/bastd/ui/store/button.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""UI functionality for a button leading to the store."""
from __future__ import annotations
diff --git a/assets/src/data/scripts/bastd/ui/store/item.py b/assets/src/data/scripts/bastd/ui/store/item.py
index dcfa2633..12ddc191 100644
--- a/assets/src/data/scripts/bastd/ui/store/item.py
+++ b/assets/src/data/scripts/bastd/ui/store/item.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""UI functionality related to UI items."""
from __future__ import annotations
diff --git a/assets/src/data/scripts/bastd/ui/tabs.py b/assets/src/data/scripts/bastd/ui/tabs.py
index 172fc721..a3c31fa4 100644
--- a/assets/src/data/scripts/bastd/ui/tabs.py
+++ b/assets/src/data/scripts/bastd/ui/tabs.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""UI functionality for creating tab style buttons."""
from __future__ import annotations
diff --git a/assets/src/data/scripts/bastd/ui/teamnamescolors.py b/assets/src/data/scripts/bastd/ui/teamnamescolors.py
index f5f98b45..308941a9 100644
--- a/assets/src/data/scripts/bastd/ui/teamnamescolors.py
+++ b/assets/src/data/scripts/bastd/ui/teamnamescolors.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""Provides a window to customize team names and colors."""
from __future__ import annotations
diff --git a/assets/src/data/scripts/bastd/ui/telnet.py b/assets/src/data/scripts/bastd/ui/telnet.py
index efb70d0e..7b0ee17c 100644
--- a/assets/src/data/scripts/bastd/ui/telnet.py
+++ b/assets/src/data/scripts/bastd/ui/telnet.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""UI functionality for telnet access."""
from __future__ import annotations
diff --git a/assets/src/data/scripts/bastd/ui/tournamententry.py b/assets/src/data/scripts/bastd/ui/tournamententry.py
index 79d6c9d2..cb50a6a3 100644
--- a/assets/src/data/scripts/bastd/ui/tournamententry.py
+++ b/assets/src/data/scripts/bastd/ui/tournamententry.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""Defines a popup window for entering tournaments."""
from __future__ import annotations
diff --git a/assets/src/data/scripts/bastd/ui/tournamentscores.py b/assets/src/data/scripts/bastd/ui/tournamentscores.py
index 81ad9a24..58e99528 100644
--- a/assets/src/data/scripts/bastd/ui/tournamentscores.py
+++ b/assets/src/data/scripts/bastd/ui/tournamentscores.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""Provides a popup for viewing tournament scores."""
from __future__ import annotations
diff --git a/assets/src/data/scripts/bastd/ui/trophies.py b/assets/src/data/scripts/bastd/ui/trophies.py
index d2e4c7e7..3f5f834e 100644
--- a/assets/src/data/scripts/bastd/ui/trophies.py
+++ b/assets/src/data/scripts/bastd/ui/trophies.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""Provides a popup window for viewing trophies."""
from __future__ import annotations
diff --git a/assets/src/data/scripts/bastd/ui/url.py b/assets/src/data/scripts/bastd/ui/url.py
index 797b3459..037d8084 100644
--- a/assets/src/data/scripts/bastd/ui/url.py
+++ b/assets/src/data/scripts/bastd/ui/url.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""UI functionality related to URLs."""
from __future__ import annotations
diff --git a/assets/src/data/scripts/bastd/ui/watch.py b/assets/src/data/scripts/bastd/ui/watch.py
index 7caad3d2..e035f653 100644
--- a/assets/src/data/scripts/bastd/ui/watch.py
+++ b/assets/src/data/scripts/bastd/ui/watch.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""Provides UI functionality for watching replays."""
from __future__ import annotations
diff --git a/assets/src/server/config.py b/assets/src/server/config.py
index 6990d564..53bdc3e1 100644
--- a/assets/src/server/config.py
+++ b/assets/src/server/config.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
# place any of your own overrides here.
# see ballisticacore_server for details on what you can override
# examples (uncomment to use):
diff --git a/assets/src/server/server.py b/assets/src/server/server.py
index d7564848..de35dc1e 100755
--- a/assets/src/server/server.py
+++ b/assets/src/server/server.py
@@ -1,4 +1,5 @@
#!/usr/bin/env python3.7
+# Copyright (c) 2011-2019 Eric Froemling
"""Functionality for running a BallisticaCore server."""
from __future__ import annotations
diff --git a/tools/efrotools/__init__.py b/tools/efrotools/__init__.py
index 78aa7d4e..c8105199 100644
--- a/tools/efrotools/__init__.py
+++ b/tools/efrotools/__init__.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""EfroTools: Various build related functionality for use in my projects."""
from __future__ import annotations
@@ -11,6 +12,27 @@ from typing import TYPE_CHECKING
if TYPE_CHECKING:
from typing import Dict, Union, Sequence, Optional, Any
+MIT_LICENSE = """Copyright (c) 2011-2019 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.
+"""
+
def explicit_bool(value: bool) -> bool:
"""Simply return input value; can avoid unreachable-code type warnings."""
@@ -46,6 +68,23 @@ def set_config(projroot: Path, config: Dict[str, Any]) -> None:
outfile.write(json.dumps(config, indent=2))
+def get_public_license(style: str) -> str:
+ """Return the MIT license as used for our public facing stuff.
+
+ 'style' arg can be 'python', 'c++', or 'raw'.
+ """
+ raw = MIT_LICENSE
+ if style == 'raw':
+ return raw
+ if style == 'python':
+ return ('\n'.join('#' + (' ' if l else '') + l
+ for l in raw.splitlines()) + '\n' + '# ' + '-' * 77)
+ if style == 'c++':
+ return '\n'.join('//' + (' ' if l else '') + l
+ for l in raw.splitlines())
+ raise RuntimeError(f'Invalid style: {style}')
+
+
def readfile(path: Union[str, Path]) -> str:
"""Read a text file and return a str."""
with open(path) as infile:
diff --git a/tools/efrotools/code.py b/tools/efrotools/code.py
index ce92aeb4..8af94579 100644
--- a/tools/efrotools/code.py
+++ b/tools/efrotools/code.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""Functionality for formatting, linting, etc. code."""
from __future__ import annotations
diff --git a/tools/efrotools/filecache.py b/tools/efrotools/filecache.py
index f1cf6aa1..64ba7b6a 100644
--- a/tools/efrotools/filecache.py
+++ b/tools/efrotools/filecache.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""Provides a system for caching linting/formatting operations."""
from __future__ import annotations
diff --git a/tools/efrotools/ios.py b/tools/efrotools/ios.py
index bc6c2fe7..997b2b53 100644
--- a/tools/efrotools/ios.py
+++ b/tools/efrotools/ios.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""Tools related to ios development."""
from __future__ import annotations
diff --git a/tools/efrotools/jsontools.py b/tools/efrotools/jsontools.py
index f645b9dd..841141ad 100644
--- a/tools/efrotools/jsontools.py
+++ b/tools/efrotools/jsontools.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""Json related tools functionality."""
from __future__ import annotations
diff --git a/tools/efrotools/makefile.py b/tools/efrotools/makefile.py
index 4f34a274..62dfe0a3 100644
--- a/tools/efrotools/makefile.py
+++ b/tools/efrotools/makefile.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""Tools for parsing/filtering makefiles."""
from __future__ import annotations
diff --git a/tools/efrotools/pybuild.py b/tools/efrotools/pybuild.py
index 1e851cf1..6bd06c1a 100644
--- a/tools/efrotools/pybuild.py
+++ b/tools/efrotools/pybuild.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""Functionality related to building python for ios, android, etc."""
from __future__ import annotations
diff --git a/tools/efrotools/pylintplugins.py b/tools/efrotools/pylintplugins.py
index 87240494..4c8c211f 100644
--- a/tools/efrotools/pylintplugins.py
+++ b/tools/efrotools/pylintplugins.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""Plugins for pylint"""
from __future__ import annotations
diff --git a/tools/efrotools/snippets.py b/tools/efrotools/snippets.py
index 8ad6190a..f2ae065e 100644
--- a/tools/efrotools/snippets.py
+++ b/tools/efrotools/snippets.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""Standard snippets that can be pulled into project snippets scripts.
A snippet is a mini-program that directly takes input from stdin and does
diff --git a/tools/efrotools/sync.py b/tools/efrotools/sync.py
index 97015304..8ee4df3e 100644
--- a/tools/efrotools/sync.py
+++ b/tools/efrotools/sync.py
@@ -1,3 +1,4 @@
+# Copyright (c) 2011-2019 Eric Froemling
"""Functionality for syncing specific directories between different projects.
This can be preferable vs using shared git subrepos for certain use cases.
diff --git a/tools/snippets b/tools/snippets
index 5bd72dcf..f7f253ac 100755
--- a/tools/snippets
+++ b/tools/snippets
@@ -1,4 +1,5 @@
#!/usr/bin/env python3.7
+# Copyright (c) 2011-2019 Eric Froemling
"""Wee little snippets of functionality specific to this project.
All top level functions here can be run by passing them as the first
diff --git a/tools/update_project b/tools/update_project
index 1fabb419..d00c0924 100755
--- a/tools/update_project
+++ b/tools/update_project
@@ -1,4 +1,5 @@
#!/usr/bin/env python3.7
+# Copyright (c) 2011-2019 Eric Froemling
"""
This script acts as a 'meta' Makefile for the project. It is in charge
of generating Makefiles, IDE project files, procedurally generated source
@@ -25,7 +26,7 @@ from typing import TYPE_CHECKING
if TYPE_CHECKING:
from typing import Optional, Tuple, List, Dict, Set
-LEGAL_NOTICE_PRIVATE = 'Copyright (c) 2019 Eric Froemling'
+LEGAL_NOTICE_PRIVATE = 'Copyright (c) 2011-2019 Eric Froemling'
CLRHDR = '\033[95m' # Header.
CLRGRN = '\033[92m' # Green.
@@ -56,15 +57,12 @@ class App:
self._public = get_config(Path('.'))['public']
assert isinstance(self._public, bool)
- self._src_files: List[str] = []
+ self._source_files: List[str] = []
self._header_files: List[str] = []
- self._line_changes: Dict[str, List[LineChange]] = {}
+ self._line_checks: Dict[str, List[LineChange]] = {}
self._file_changes: Dict[str, str] = {}
- # KILL ME
- self._fixable_header_errors: Dict[str, List[Tuple[int, str]]] = {}
-
def run(self) -> None:
"""Do the thing."""
@@ -145,39 +143,56 @@ class App:
def _apply_line_changes(self) -> None:
- print("LOOKING AT", len(self._line_changes), 'CHANGES')
-
- # Build a flat list of entries needing to be manually applied.
+ # Build a flat list of entries that can and can-not be auto applied.
manual_changes: List[Tuple[str, LineChange]] = []
- for fname, entries in self._line_changes.items():
+ auto_changes: List[Tuple[str, LineChange]] = []
+ for fname, entries in self._line_checks.items():
for entry in entries:
- if not entry.can_auto_update:
+ if entry.can_auto_update:
+ auto_changes.append((fname, entry))
+ else:
manual_changes.append((fname, entry))
- # If there are any said entries, list then and bail.
+ # If there are any manual-only entries, list then and bail.
# (Don't wanna allow auto-apply unless it fixes everything)
if manual_changes:
- print(f"{CLRRED}Found incorrect lines (cannot auto-update;"
- f" please correct manually):{CLREND}")
+ print(f"{CLRRED}Found erroneous lines "
+ f"requiring manual correction:{CLREND}")
for change in manual_changes:
- print(f'{CLRRED}{change}{CLREND}')
+ print(f'{CLRRED}{change[0]}:{change[1].line_number + 1}:'
+ f' Expected line to be:\n {change[1].expected}{CLREND}')
sys.exit(-1)
- if self._fixable_header_errors:
- for filename, fixes in self._fixable_header_errors.items():
- with open(filename, 'r') as infile:
- lines = infile.read().splitlines()
- for fix_line, fix_str in fixes:
- lines[fix_line] = fix_str
- with open(filename, 'w') as outfile:
- outfile.write('\n'.join(lines) + '\n')
- print(CLRBLU + 'Writing header: ' + filename + CLREND)
- else:
- print(f'No issues found in {len(self._header_files)} headers.')
+ # Now, if we've got auto entries, either list or auto-correct them.
+ if auto_changes:
+ if not self._fix:
+ for i, change in enumerate(auto_changes):
+ print(f'{CLRRED}#{i}: {change[0]}:{CLREND}')
+ print(f'{CLRRED} Expected "{change[1].expected}"{CLREND}')
+ with open(change[0]) as infile:
+ lines = infile.read().splitlines()
+ line = lines[change[1].line_number]
+ print(f'{CLRRED} Found "{line}"{CLREND}')
+ print(CLRRED + 'All errors are auto-fixable;'
+ ' pass --fix to apply corrections.' + CLREND)
+ sys.exit(255)
+ else:
+ for i, change in enumerate(auto_changes):
+ print(f'{CLRBLU}Correcting file: {change[0]}{CLREND}')
+ with open(change[0]) as infile:
+ lines = infile.read().splitlines()
+ lines[change[1].line_number] = change[1].expected
+ with open(change[0], 'w') as outfile:
+ outfile.write('\n'.join(lines) + '\n')
+
+ # If there were no issues whatsoever, note that.
+ if not manual_changes and not auto_changes:
+ fcount = len(self._header_files) + len(self._source_files)
+ print(f'No issues found in {fcount} source files.')
def _check_source_files(self) -> None:
- for fsrc in self._src_files:
+ for fsrc in self._source_files:
if fsrc.endswith('.cpp') or fsrc.endswith('.cxx'):
raise Exception('please use .cc for c++ files; found ' + fsrc)
@@ -197,13 +212,18 @@ class App:
with open(fname) as infile:
lines = infile.read().splitlines()
- # Check for Copyright line/license.
- expected_lines = [(0, '// ' + LEGAL_NOTICE_PRIVATE)]
- for line_number, expected in expected_lines:
- if lines[line_number] != expected:
- print(CLRRED + "Invalid legal notice in '" + fname +
- "'; please correct." + CLREND)
- sys.exit(255)
+ # Look for copyright/legal-notice line(s)
+ legal_notice = '// ' + LEGAL_NOTICE_PRIVATE
+ lnum = 0
+ if lines[lnum] != legal_notice:
+ # Allow auto-correcting if it looks close already
+ # (don't want to blow away an unrelated line)
+ allow_auto = 'Copyright' in lines[
+ lnum] and 'Eric Froemling' in lines[lnum]
+ self._add_line_check(fname,
+ line_number=lnum,
+ expected=legal_notice,
+ can_auto_update=allow_auto)
def _check_headers(self) -> None:
for header_file_raw in self._header_files:
@@ -213,49 +233,122 @@ class App:
if header_file.endswith('.h'):
self._check_header(header_file)
- if self._fixable_header_errors and not self._fix:
- print(CLRRED +
- 'Fixable header error(s) found; pass --fix to correct.' +
- CLREND)
- sys.exit(255)
+ def _add_line_check(self, filename: str, line_number: int, expected: str,
+ can_auto_update: bool) -> None:
+ self._line_checks.setdefault(filename, []).append(
+ LineChange(line_number=line_number,
+ expected=expected,
+ can_auto_update=can_auto_update))
+
+ def _check_header(self, fname: str) -> None:
- def _check_header(self, header_file: str) -> None:
# Make sure its define guard is correct.
- guard = (header_file[4:].upper().replace('/', '_').replace('.', '_') +
- '_')
- with open(header_file) as fhdr:
+ guard = (fname[4:].upper().replace('/', '_').replace('.', '_') + '_')
+ with open(fname) as fhdr:
lines = fhdr.read().splitlines()
if self._public:
raise RuntimeError('FIXME: Check for full license.')
- expected_lines = [(0, '// ' + LEGAL_NOTICE_PRIVATE),
- (2, '#ifndef ' + guard), (3, '#define ' + guard),
- (-1, '#endif // ' + guard)]
- errors_found = False
- can_fix = True
- for line, expected in expected_lines:
- if lines[line] != expected:
- errors_found = True
- print("Incorrect line " + str(line) + " in " + header_file +
- ":\n"
- "Expected: " + expected + "\n"
- "Found: " + lines[line])
+ # Look for copyright/legal-notice line(s)
+ line = '// ' + LEGAL_NOTICE_PRIVATE
+ lnum = 0
+ if lines[lnum] != line:
+ # Allow auto-correcting if it looks close already
+ # (don't want to blow away an unrelated line)
+ allow_auto = 'Copyright' in lines[
+ lnum] and 'Eric Froemling' in lines[lnum]
+ self._add_line_check(fname,
+ line_number=lnum,
+ expected=line,
+ can_auto_update=allow_auto)
- # If the beginning of the line differs, don't attempt auto-fix.
- if lines[line][:16] != expected[:16]:
- can_fix = False
- if errors_found:
- if can_fix:
- self._fixable_header_errors.setdefault(header_file,
- []).append(
- (line,
- expected))
- else:
- print(CLRRED + "Error found in '" + header_file +
- "'. Not auto-fixable; please correct manually." +
- CLREND)
+ # Check for header guard at top
+ line = '#ifndef ' + guard
+ lnum = 2
+ if lines[lnum] != line:
+ # Allow auto-correcting if it looks close already
+ # (don't want to blow away an unrelated line)
+ allow_auto = lines[lnum].startswith('#ifndef BALLISTICA_')
+ self._add_line_check(fname,
+ line_number=lnum,
+ expected=line,
+ can_auto_update=allow_auto)
+
+ # Check for header guard at bottom
+ line = '#endif // ' + guard
+ lnum = -1
+ if lines[lnum] != line:
+ # Allow auto-correcting if it looks close already
+ # (don't want to blow away an unrelated line)
+ allow_auto = lines[lnum].startswith('#endif // BALLISTICA_')
+ self._add_line_check(fname,
+ line_number=lnum,
+ expected=line,
+ can_auto_update=allow_auto)
+
+ def _check_python_file(self, fname: str) -> None:
+ with open(fname) as infile:
+ contents = infile.read()
+ lines = contents.splitlines()
+
+ # Make sure all standalone scripts are pointing to the right
+ # version of python (with a few exceptions where it needs to
+ # differ)
+ if contents.startswith('#!/'):
+ copyrightline = 1
+ if fname not in [
+ 'tools/devtool', 'tools/version_utils', 'tools/vmshell'
+ ]:
+ if not contents.startswith('#!/usr/bin/env python3.7'):
+ print(f"{CLRRED}Incorrect shebang (first line) for "
+ f"{fname}.{CLREND}")
sys.exit(255)
+ else:
+ copyrightline = 0
+
+ # Look for copyright/legal-notice line(s)
+ line = '# ' + LEGAL_NOTICE_PRIVATE
+ lnum = copyrightline
+ if len(lines) < lnum + 1:
+ raise RuntimeError('Not enough lines in file:', fname)
+
+ if lines[lnum] != line:
+ # Allow auto-correcting if it looks close already
+ # (don't want to blow away an unrelated line)
+ allow_auto = 'Copyright' in lines[
+ lnum] and 'Eric Froemling' in lines[lnum]
+ self._add_line_check(fname,
+ line_number=lnum,
+ expected=line,
+ can_auto_update=allow_auto)
+
+ def _check_python_files(self) -> None:
+ from pathlib import Path
+ from efrotools.code import get_script_filenames
+
+ scriptfiles = get_script_filenames(Path('.'))
+ for fname in scriptfiles:
+ self._check_python_file(fname)
+
+ # Check our packages and make sure all subdirs contain and __init__.py
+ # (I tend to forget this sometimes)
+ packagedirs = ['tools/efrotools']
+ script_asset_dir = 'assets/src/data/scripts'
+ for name in os.listdir(script_asset_dir):
+ # (Assume all dirs under our script assets dir are packages)
+ if os.path.isdir(os.path.join(script_asset_dir)):
+ packagedirs.append(os.path.join(script_asset_dir, name))
+
+ for packagedir in packagedirs:
+ for root, _dirs, files in os.walk(packagedir):
+ if ('__pycache__' not in root
+ and os.path.basename(root) != '.vscode'):
+ if '__init__.py' not in files:
+ print(CLRRED +
+ 'Error: no __init__.py in package dir: ' + root +
+ CLREND)
+ sys.exit(255)
def _update_visual_studio_project(self, fname: str, src_root: str) -> None:
with open(fname) as infile:
@@ -266,7 +359,7 @@ class App:
# all_files = sorted(src_files + header_files)
# del header_files # Unused.
all_files = sorted([
- f for f in (self._src_files + self._header_files)
+ f for f in (self._source_files + self._header_files)
if not f.endswith('.m') and not f.endswith('.mm')
and not f.endswith('.c')
])
@@ -362,7 +455,7 @@ class App:
auto_end = lines.index(' #AUTOGENERATED_END')
our_lines = [
' ${BA_SRC_ROOT}/ballistica' + f
- for f in sorted(self._src_files + self._header_files)
+ for f in sorted(self._source_files + self._header_files)
if not f.endswith('.mm') and not f.endswith('.m')
]
filtered = lines[:auto_start + 1] + our_lines + lines[auto_end:]
@@ -393,55 +486,9 @@ class App:
src_files.add(os.path.join(root, ftst)[len(scan_dir):])
if any(ftst.endswith(ext) for ext in header_exts):
header_files.add(os.path.join(root, ftst)[len(scan_dir):])
- self._src_files = sorted(src_files)
+ self._source_files = sorted(src_files)
self._header_files = sorted(header_files)
- def _check_python_files(self) -> None:
- from pathlib import Path
- from efrotools.code import get_script_filenames
-
- scriptfiles = get_script_filenames(Path('.'))
- for fname in scriptfiles:
- with open(fname) as infile:
- contents = infile.read()
-
- # Make sure all standalone scripts are pointing to the right
- # version of python (with a few exceptions where it needs to
- # differ)
- if contents.startswith('#!/'):
- # copyrightline = 1
- if fname not in [
- 'tools/devtool', 'tools/version_utils', 'tools/vmshell'
- ]:
- if not contents.startswith('#!/usr/bin/env python3.7'):
- print(f"{CLRRED}Incorrect shebang (first line) for "
- f"{fname}.{CLREND}")
- sys.exit(255)
- else:
- pass
- # copyrightline = 0
-
- # Make sure the proper copyright notice is in place.
-
- # Check our packages and make sure all subdirs contain and __init__.py
- # (I tend to forget this sometimes)
- packagedirs = ['tools/efrotools']
- script_asset_dir = 'assets/src/data/scripts'
- for name in os.listdir(script_asset_dir):
- # (Assume all dirs under our script assets dir are packages)
- if os.path.isdir(os.path.join(script_asset_dir)):
- packagedirs.append(os.path.join(script_asset_dir, name))
-
- for packagedir in packagedirs:
- for root, _dirs, files in os.walk(packagedir):
- if ('__pycache__' not in root
- and os.path.basename(root) != '.vscode'):
- if '__init__.py' not in files:
- print(CLRRED +
- 'Error: no __init__.py in package dir: ' + root +
- CLREND)
- sys.exit(255)
-
def _check_sync_states(self) -> None:
# Make sure none of our sync targets have been mucked with since
# their last sync.