"""
This file is part of the Tetris project.

Written 2023 by Maarten Tromp <maarten@geekabit.nl>


Website
-------
https://www.geekabit.nl/projects/tetris-window/


License
-------
CC0 (no copyright, public domain)
The person who associated a work with this deed has dedicated the work to the public domain by
waiving all of his or her rights to the work worldwide under copyright law, including all related
and neighbouring rights, to the extent allowed by law. You can copy, modify, distribute and perform
the work, even for commercial purposes, all without asking permission.
https://creativecommons.org/share-your-work/public-domain/cc0/
This file is part of the Tetris project.
"""


# imports
import logging


class GameStart:
	"""
	Simple game-start animation.
	"""

	# constants
	font_colour = (255, 255, 255)
	# Arcade font by Yuji Adachi https://fontmeme.com/fonts/arcade-yuji-adachi-font/
	font_7x7 = {
		"A" : (
			(0, 0, 1, 1, 1, 0, 0),
			(0, 1, 1, 0, 1, 1, 0),
			(1, 1, 0, 0, 0, 1, 1),
			(0, 0, 0, 0, 0, 1, 1),
			(1, 1, 1, 1, 1, 1, 1),
			(1, 1, 0, 0, 0, 1, 1),
			(1, 1, 0, 0, 0, 1, 1)),
		"B" : (
			(1, 1, 1, 1, 1, 1, 0),
			(1, 1, 0, 0, 0, 1, 1),
			(1, 1, 0, 0, 0, 1, 1),
			(1, 1, 1, 1, 1, 1, 0),
			(1, 1, 0, 0, 0, 1, 1),
			(1, 1, 0, 0, 0, 1, 1),
			(1, 1, 1, 1, 1, 1, 0)),
		"C" : (
			(0, 1, 1, 1, 1, 1, 0),
			(1, 1, 0, 0, 0, 1, 1),
			(1, 1, 0, 0, 0, 0, 0),
			(1, 1, 0, 0, 0, 0, 0),
			(1, 1, 0, 0, 0, 0, 0),
			(1, 1, 0, 0, 0, 1, 1),
			(0, 1, 1, 1, 1, 1, 0)),
		"D" : (
			(1, 1, 1, 1, 1, 1, 0),
			(1, 1, 0, 0, 0, 1, 1),
			(1, 1, 0, 0, 0, 1, 1),
			(1, 1, 0, 0, 0, 1, 1),
			(1, 1, 0, 0, 0, 1, 1),
			(1, 1, 0, 0, 0, 1, 1),
			(1, 1, 1, 1, 1, 1, 0)),
		"E" : (
			(1, 1, 1, 1, 1, 1, 1),
			(1, 1, 0, 0, 0, 0, 0),
			(1, 1, 0, 0, 0, 0, 0),
			(1, 1, 1, 1, 1, 1, 0),
			(1, 1, 0, 0, 0, 0, 0),
			(1, 1, 0, 0, 0, 0, 0),
			(1, 1, 1, 1, 1, 1, 1)),
		"F" : (
			(1, 1, 1, 1, 1, 1, 1),
			(1, 1, 0, 0, 0, 0, 0),
			(1, 1, 0, 0, 0, 0, 0),
			(1, 1, 1, 1, 1, 1, 0),
			(1, 1, 0, 0, 0, 0, 0),
			(1, 1, 0, 0, 0, 0, 0),
			(1, 1, 0, 0, 0, 0, 0)),
		"G" : (
			(0, 1, 1, 1, 1, 1, 0),
			(1, 1, 0, 0, 0, 1, 1),
			(1, 1, 0, 0, 0, 0, 0),
			(1, 1, 0, 0, 1, 1, 1),
			(1, 1, 0, 0, 0, 1, 1),
			(1, 1, 0, 0, 0, 1, 1),
			(0, 1, 1, 1, 1, 1, 0)),
		"H" : (
			(1, 1, 0, 0, 0, 1, 1),
			(1, 1, 0, 0, 0, 1, 1),
			(1, 1, 0, 0, 0, 1, 1),
			(1, 1, 1, 1, 1, 1, 1),
			(1, 1, 0, 0, 0, 1, 1),
			(1, 1, 0, 0, 0, 1, 1),
			(1, 1, 0, 0, 0, 1, 1)),
		"I" : (
			(1, 1, 1, 1, 1, 1, 0),
			(0, 0, 1, 1, 0, 0, 0),
			(0, 0, 1, 1, 0, 0, 0),
			(0, 0, 1, 1, 0, 0, 0),
			(0, 0, 1, 1, 0, 0, 0),
			(0, 0, 1, 1, 0, 0, 0),
			(1, 1, 1, 1, 1, 1, 0)),
		"J" : (
			(0, 0, 1, 1, 1, 1, 1),
			(0, 0, 0, 0, 1, 1, 0),
			(0, 0, 0, 0, 1, 1, 0),
			(0, 0, 0, 0, 1, 1, 0),
			(0, 0, 0, 0, 1, 1, 0),
			(1, 1, 0, 0, 1, 1, 0),
			(0, 1, 1, 1, 1, 0, 0)),
		"K" : (
			(1, 1, 0, 0, 0, 1, 1),
			(1, 1, 0, 0, 1, 1, 0),
			(1, 1, 0, 1, 1, 0, 0),
			(1, 1, 1, 1, 0, 0, 0),
			(1, 1, 1, 1, 1, 0, 0),
			(1, 1, 0, 1, 1, 1, 0),
			(1, 1, 0, 0, 0, 1, 1)),
		"L" : (
			(1, 1, 0, 0, 0, 0, 0),
			(1, 1, 0, 0, 0, 0, 0),
			(1, 1, 0, 0, 0, 0, 0),
			(1, 1, 0, 0, 0, 0, 0),
			(1, 1, 0, 0, 0, 0, 0),
			(1, 1, 0, 0, 0, 0, 0),
			(1, 1, 1, 1, 1, 1, 1)),
		"M" : (
			(1, 0, 0, 0, 0, 0, 1),
			(1, 1, 0, 0, 0, 1, 1),
			(1, 1, 1, 0, 1, 1, 1),
			(1, 1, 1, 1, 1, 1, 1),
			(1, 1, 0, 1, 0, 1, 1),
			(1, 1, 0, 0, 0, 1, 1),
			(1, 1, 0, 0, 0, 1, 1)),
		"N" : (
			(1, 1, 0, 0, 0, 1, 1),
			(1, 1, 1, 0, 0, 1, 1),
			(1, 1, 1, 1, 0, 1, 1),
			(1, 1, 0, 1, 1, 1, 1),
			(1, 1, 0, 0, 1, 1, 1),
			(1, 1, 0, 0, 0, 1, 1),
			(1, 1, 0, 0, 0, 1, 1)),
		"O" : (
			(0, 1, 1, 1, 1, 1, 0),
			(1, 1, 0, 0, 0, 1, 1),
			(1, 1, 0, 0, 0, 1, 1),
			(1, 1, 0, 0, 0, 1, 1),
			(1, 1, 0, 0, 0, 1, 1),
			(1, 1, 0, 0, 0, 1, 1),
			(0, 1, 1, 1, 1, 1, 0)),
		"P" : (
			(1, 1, 1, 1, 1, 1, 0),
			(1, 1, 0, 0, 0, 1, 1),
			(1, 1, 0, 0, 0, 1, 1),
			(1, 1, 1, 1, 1, 1, 0),
			(1, 1, 0, 0, 0, 0, 0),
			(1, 1, 0, 0, 0, 0, 0),
			(1, 1, 0, 0, 0, 0, 0)),
		"Q" : (
			(0, 1, 1, 1, 1, 1, 0),
			(1, 1, 0, 0, 0, 1, 1),
			(1, 1, 0, 0, 0, 1, 1),
			(1, 1, 0, 0, 0, 1, 1),
			(1, 1, 0, 1, 1, 1, 1),
			(1, 1, 0, 0, 1, 1, 0),
			(0, 1, 1, 1, 0, 1, 1)),
		"R" : (
			(1, 1, 1, 1, 1, 1, 0),
			(1, 1, 0, 0, 0, 1, 1),
			(1, 1, 0, 0, 0, 1, 1),
			(1, 1, 1, 1, 1, 1, 0),
			(1, 1, 0, 1, 1, 0, 0),
			(1, 1, 0, 0, 1, 1, 0),
			(1, 1, 0, 0, 0, 1, 1)),
		"S" : (
			(0, 1, 1, 1, 1, 1, 0),
			(1, 1, 0, 0, 0, 1, 1),
			(1, 1, 0, 0, 0, 0, 0),
			(0, 1, 1, 1, 1, 1, 0),
			(0, 0, 0, 0, 0, 1, 1),
			(1, 1, 0, 0, 0, 1, 1),
			(0, 1, 1, 1, 1, 1, 0)),
		"T" : (
			(1, 1, 1, 1, 1, 1, 0),
			(0, 0, 1, 1, 0, 0, 0),
			(0, 0, 1, 1, 0, 0, 0),
			(0, 0, 1, 1, 0, 0, 0),
			(0, 0, 1, 1, 0, 0, 0),
			(0, 0, 1, 1, 0, 0, 0),
			(0, 0, 1, 1, 0, 0, 0)),
		"U" : (
			(1, 1, 0, 0, 0, 1, 1),
			(1, 1, 0, 0, 0, 1, 1),
			(1, 1, 0, 0, 0, 1, 1),
			(1, 1, 0, 0, 0, 1, 1),
			(1, 1, 0, 0, 0, 1, 1),
			(1, 1, 0, 0, 0, 1, 1),
			(0, 1, 1, 1, 1, 1, 0)),
		"V" : (
			(1, 1, 0, 0, 0, 1, 1),
			(1, 1, 0, 0, 0, 1, 1),
			(1, 1, 0, 0, 0, 1, 1),
			(1, 1, 0, 0, 0, 1, 1),
			(1, 1, 0, 0, 0, 1, 1),
			(0, 1, 1, 0, 1, 1, 0),
			(0, 0, 1, 1, 1, 0, 0)),
		"W" : (
			(1, 1, 0, 0, 0, 1, 1),
			(1, 1, 0, 0, 0, 1, 1),
			(1, 1, 0, 0, 0, 1, 1),
			(1, 1, 0, 0, 0, 1, 1),
			(1, 1, 0, 1, 0, 1, 1),
			(1, 1, 1, 1, 1, 1, 1),
			(0, 1, 1, 0, 1, 1, 0)),
		"X" : (
			(1, 1, 0, 0, 0, 1, 1),
			(0, 1, 1, 0, 1, 1, 0),
			(0, 0, 1, 1, 1, 0, 0),
			(0, 0, 1, 1, 1, 0, 0),
			(0, 1, 1, 0, 1, 1, 0),
			(1, 1, 0, 0, 0, 1, 1),
			(1, 0, 0, 0, 0, 0, 1)),
		"Y" : (
			(1, 1, 0, 0, 1, 1, 0),
			(1, 1, 0, 0, 1, 1, 0),
			(1, 1, 0, 0, 1, 1, 0),
			(0, 1, 1, 1, 1, 0, 0),
			(0, 0, 1, 1, 0, 0, 0),
			(0, 0, 1, 1, 0, 0, 0),
			(0, 0, 1, 1, 0, 0, 0)),
		"Z" : (
			(1, 1, 1, 1, 1, 1, 1),
			(0, 0, 0, 0, 1, 1, 0),
			(0, 0, 0, 1, 1, 0, 0),
			(0, 0, 1, 1, 0, 0, 0),
			(0, 1, 1, 0, 0, 0, 0),
			(1, 1, 0, 0, 0, 0, 0),
			(1, 1, 1, 1, 1, 1, 1))
		}
	font_8x8 = {
		"A" : (
			(0, 0, 1, 1, 1, 1, 0, 0),
			(0, 1, 1, 0, 0, 1, 1, 0),
			(1, 1, 0, 0, 0, 0, 1, 1),
			(1, 1, 0, 0, 0, 0, 1, 1),
			(1, 1, 1, 1, 1, 1, 1, 1),
			(1, 1, 0, 0, 0, 0, 1, 1),
			(1, 1, 0, 0, 0, 0, 1, 1),
			(1, 1, 0, 0, 0, 0, 1, 1)),
		"B" : (
			(1, 1, 1, 1, 1, 1, 1, 0),
			(1, 1, 0, 0, 0, 0, 1, 1),
			(1, 1, 0, 0, 0, 0, 1, 1),
			(1, 1, 1, 1, 1, 1, 1, 0),
			(1, 1, 0, 0, 0, 0, 1, 1),
			(1, 1, 0, 0, 0, 0, 1, 1),
			(1, 1, 0, 0, 0, 0, 1, 1),
			(1, 1, 1, 1, 1, 1, 1, 0)),
		"C" : (
			(0, 1, 1, 1, 1, 1, 1, 0),
			(1, 1, 0, 0, 0, 0, 1, 1),
			(1, 1, 0, 0, 0, 0, 0, 0),
			(1, 1, 0, 0, 0, 0, 0, 0),
			(1, 1, 0, 0, 0, 0, 0, 0),
			(1, 1, 0, 0, 0, 0, 1, 1),
			(1, 1, 0, 0, 0, 0, 1, 1),
			(0, 1, 1, 1, 1, 1, 1, 0)),
		"D" : (
			(1, 1, 1, 1, 1, 1, 1, 0),
			(1, 1, 0, 0, 0, 0, 1, 1),
			(1, 1, 0, 0, 0, 0, 1, 1),
			(1, 1, 0, 0, 0, 0, 1, 1),
			(1, 1, 0, 0, 0, 0, 1, 1),
			(1, 1, 0, 0, 0, 0, 1, 1),
			(1, 1, 0, 0, 0, 0, 1, 1),
			(1, 1, 1, 1, 1, 1, 1, 0)),
		"E" : (
			(1, 1, 1, 1, 1, 1, 1, 1),
			(1, 1, 0, 0, 0, 0, 0, 0),
			(1, 1, 0, 0, 0, 0, 0, 0),
			(1, 1, 1, 1, 1, 1, 1, 0),
			(1, 1, 0, 0, 0, 0, 0, 0),
			(1, 1, 0, 0, 0, 0, 0, 0),
			(1, 1, 0, 0, 0, 0, 0, 0),
			(1, 1, 1, 1, 1, 1, 1, 1)),
		"F" : (
			(1, 1, 1, 1, 1, 1, 1, 1),
			(1, 1, 0, 0, 0, 0, 0, 0),
			(1, 1, 0, 0, 0, 0, 0, 0),
			(1, 1, 1, 1, 1, 1, 1, 0),
			(1, 1, 0, 0, 0, 0, 0, 0),
			(1, 1, 0, 0, 0, 0, 0, 0),
			(1, 1, 0, 0, 0, 0, 0, 0),
			(1, 1, 0, 0, 0, 0, 0, 0)),
		"G" : (
			(0, 1, 1, 1, 1, 1, 1, 0),
			(1, 1, 0, 0, 0, 0, 1, 1),
			(1, 1, 0, 0, 0, 0, 0, 0),
			(1, 1, 0, 0, 0, 0, 0, 0),
			(1, 1, 0, 0, 0, 1, 1, 1),
			(1, 1, 0, 0, 0, 0, 1, 1),
			(1, 1, 0, 0, 0, 0, 1, 1),
			(0, 1, 1, 1, 1, 1, 1, 0)),
		"H" : (
			(1, 1, 0, 0, 0, 0, 1, 1),
			(1, 1, 0, 0, 0, 0, 1, 1),
			(1, 1, 0, 0, 0, 0, 1, 1),
			(1, 1, 1, 1, 1, 1, 1, 1),
			(1, 1, 0, 0, 0, 0, 1, 1),
			(1, 1, 0, 0, 0, 0, 1, 1),
			(1, 1, 0, 0, 0, 0, 1, 1),
			(1, 1, 0, 0, 0, 0, 1, 1)),
		"I" : (
			(0, 1, 1, 1, 1, 1, 1, 0),
			(0, 0, 0, 1, 1, 0, 0, 0),
			(0, 0, 0, 1, 1, 0, 0, 0),
			(0, 0, 0, 1, 1, 0, 0, 0),
			(0, 0, 0, 1, 1, 0, 0, 0),
			(0, 0, 0, 1, 1, 0, 0, 0),
			(0, 0, 0, 1, 1, 0, 0, 0),
			(0, 1, 1, 1, 1, 1, 1, 0)),
		"J" : (
			(0, 0, 1, 1, 1, 1, 1, 1),
			(0, 0, 0, 0, 1, 1, 0, 0),
			(0, 0, 0, 0, 1, 1, 0, 0),
			(0, 0, 0, 0, 1, 1, 0, 0),
			(0, 0, 0, 0, 1, 1, 0, 0),
			(1, 1, 0, 0, 1, 1, 0, 0),
			(1, 1, 0, 0, 1, 1, 0, 0),
			(0, 1, 1, 1, 1, 0, 0, 0)),
		"K" : (
			(1, 1, 0, 0, 0, 0, 1, 1),
			(1, 1, 0, 0, 0, 1, 1, 0),
			(1, 1, 0, 0, 1, 1, 0, 0),
			(1, 1, 1, 1, 0, 0, 0, 0),
			(1, 1, 0, 1, 1, 0, 0, 0),
			(1, 1, 0, 0, 1, 1, 0, 0),
			(1, 1, 0, 0, 0, 1, 1, 0),
			(1, 1, 0, 0, 0, 0, 1, 1)),
		"L" : (
			(1, 1, 0, 0, 0, 0, 0, 0),
			(1, 1, 0, 0, 0, 0, 0, 0),
			(1, 1, 0, 0, 0, 0, 0, 0),
			(1, 1, 0, 0, 0, 0, 0, 0),
			(1, 1, 0, 0, 0, 0, 0, 0),
			(1, 1, 0, 0, 0, 0, 0, 0),
			(1, 1, 0, 0, 0, 0, 0, 0),
			(1, 1, 1, 1, 1, 1, 1, 1)),
		"M" : (
			(1, 1, 0, 0, 0, 0, 1, 1),
			(1, 1, 1, 0, 0, 1, 1, 1),
			(1, 1, 1, 1, 1, 1, 1, 1),
			(1, 1, 0, 1, 1, 0, 1, 1),
			(1, 1, 0, 0, 0, 0, 1, 1),
			(1, 1, 0, 0, 0, 0, 1, 1),
			(1, 1, 0, 0, 0, 0, 1, 1),
			(1, 1, 0, 0, 0, 0, 1, 1)),
		"N" : (
			(1, 1, 0, 0, 0, 0, 1, 1),
			(1, 1, 1, 0, 0, 0, 1, 1),
			(1, 1, 1, 1, 0, 0, 1, 1),
			(1, 1, 0, 1, 1, 0, 1, 1),
			(1, 1, 0, 0, 1, 1, 1, 1),
			(1, 1, 0, 0, 0, 1, 1, 1),
			(1, 1, 0, 0, 0, 0, 1, 1),
			(1, 1, 0, 0, 0, 0, 1, 1)),
		"O" : (
			(0, 1, 1, 1, 1, 1, 1, 0),
			(1, 1, 0, 0, 0, 0, 1, 1),
			(1, 1, 0, 0, 0, 0, 1, 1),
			(1, 1, 0, 0, 0, 0, 1, 1),
			(1, 1, 0, 0, 0, 0, 1, 1),
			(1, 1, 0, 0, 0, 0, 1, 1),
			(1, 1, 0, 0, 0, 0, 1, 1),
			(0, 1, 1, 1, 1, 1, 1, 0)),
		"P" : (
			(1, 1, 1, 1, 1, 1, 1, 0),
			(1, 1, 0, 0, 0, 0, 1, 1),
			(1, 1, 0, 0, 0, 0, 1, 1),
			(1, 1, 0, 0, 0, 0, 1, 1),
			(1, 1, 1, 1, 1, 1, 1, 0),
			(1, 1, 0, 0, 0, 0, 0, 0),
			(1, 1, 0, 0, 0, 0, 0, 0),
			(1, 1, 0, 0, 0, 0, 0, 0)),
		"Q" : (
			(0, 1, 1, 1, 1, 1, 1, 0),
			(1, 1, 0, 0, 0, 0, 1, 1),
			(1, 1, 0, 0, 0, 0, 1, 1),
			(1, 1, 0, 0, 0, 0, 1, 1),
			(1, 1, 0, 0, 0, 0, 1, 1),
			(1, 1, 0, 0, 1, 1, 1, 1),
			(1, 1, 0, 0, 0, 1, 1, 0),
			(0, 1, 1, 1, 1, 0, 1, 1)),
		"R" : (
			(1, 1, 1, 1, 1, 1, 1, 0),
			(1, 1, 0, 0, 0, 0, 1, 1),
			(1, 1, 0, 0, 0, 0, 1, 1),
			(1, 1, 0, 0, 0, 0, 1, 1),
			(1, 1, 1, 1, 1, 1, 1, 0),
			(1, 1, 0, 0, 1, 1, 0, 0),
			(1, 1, 0, 0, 0, 1, 1, 0),
			(1, 1, 0, 0, 0, 0, 1, 1)),
		"S" : (
			(0, 1, 1, 1, 1, 1, 0, 0),
			(1, 1, 0, 0, 0, 0, 1, 1),
			(1, 1, 0, 0, 0, 0, 0, 0),
			(0, 1, 1, 1, 1, 1, 1, 0),
			(0, 0, 0, 0, 0, 0, 1, 1),
			(1, 1, 0, 0, 0, 0, 1, 1),
			(1, 1, 0, 0, 0, 0, 1, 1),
			(0, 1, 1, 1, 1, 1, 1, 0)),
		"T" : (
			(1, 1, 1, 1, 1, 1, 1, 1),
			(0, 0, 0, 1, 1, 0, 0, 0),
			(0, 0, 0, 1, 1, 0, 0, 0),
			(0, 0, 0, 1, 1, 0, 0, 0),
			(0, 0, 0, 1, 1, 0, 0, 0),
			(0, 0, 0, 1, 1, 0, 0, 0),
			(0, 0, 0, 1, 1, 0, 0, 0),
			(0, 0, 0, 1, 1, 0, 0, 0)),
		"U" : (
			(1, 1, 0, 0, 0, 0, 1, 1),
			(1, 1, 0, 0, 0, 0, 1, 1),
			(1, 1, 0, 0, 0, 0, 1, 1),
			(1, 1, 0, 0, 0, 0, 1, 1),
			(1, 1, 0, 0, 0, 0, 1, 1),
			(1, 1, 0, 0, 0, 0, 1, 1),
			(1, 1, 0, 0, 0, 0, 1, 1),
			(0, 1, 1, 1, 1, 1, 1, 0)),
		"V" : (
			(1, 1, 0, 0, 0, 0, 1, 1),
			(1, 1, 0, 0, 0, 0, 1, 1),
			(1, 1, 0, 0, 0, 0, 1, 1),
			(1, 1, 0, 0, 0, 0, 1, 1),
			(1, 1, 0, 0, 0, 0, 1, 1),
			(1, 1, 0, 0, 0, 0, 1, 1),
			(0, 1, 1, 0, 0, 1, 1, 0),
			(0, 0, 1, 1, 1, 1, 0, 0)),
		"W" : (
			(1, 1, 0, 0, 0, 0, 1, 1),
			(1, 1, 0, 0, 0, 0, 1, 1),
			(1, 1, 0, 0, 0, 0, 1, 1),
			(1, 1, 0, 0, 0, 0, 1, 1),
			(1, 1, 0, 1, 1, 0, 1, 1),
			(1, 1, 1, 1, 1, 1, 1, 1),
			(1, 1, 1, 0, 0, 1, 1, 1),
			(1, 1, 0, 0, 0, 0, 1, 1)),
		"X" : (
			(1, 1, 0, 0, 0, 0, 1, 1),
			(1, 1, 0, 0, 0, 0, 1, 1),
			(0, 1, 1, 0, 0, 1, 1, 0),
			(0, 0, 1, 1, 1, 1, 0, 0),
			(0, 0, 1, 1, 1, 1, 0, 0),
			(0, 1, 1, 0, 0, 1, 1, 0),
			(1, 1, 0, 0, 0, 0, 1, 1),
			(1, 1, 0, 0, 0, 0, 1, 1)),
		"Y" : (
			(1, 1, 0, 0, 0, 0, 1, 1),
			(1, 1, 0, 0, 0, 0, 1, 1),
			(0, 1, 1, 0, 0, 1, 1, 0),
			(0, 0, 1, 1, 1, 1, 0, 0),
			(0, 0, 0, 1, 1, 0, 0, 0),
			(0, 0, 0, 1, 1, 0, 0, 0),
			(0, 0, 0, 1, 1, 0, 0, 0),
			(0, 0, 0, 1, 1, 0, 0, 0)),
		"Z" : (
			(1, 1, 1, 1, 1, 1, 1, 1),
			(0, 0, 0, 0, 0, 0, 1, 1),
			(0, 0, 0, 0, 0, 1, 1, 0),
			(0, 0, 0, 0, 1, 1, 0, 0),
			(0, 0, 0, 1, 1, 0, 0, 0),
			(0, 0, 1, 1, 0, 0, 0, 0),
			(0, 1, 1, 0, 0, 0, 0, 0),
			(1, 1, 1, 1, 1, 1, 1, 1))
		}
	max_frames = 30


	def __init__(self, screen, players):
		"""
		Initialize game-start animation. Print player names on screen.

		Parameters
		----------
		screen: screen object
		players: tuple or list or player objects
			One or two player objects.
		"""

		assert 1 <= len(players) <= 2

		# private variables
		self._screen = screen
		self._players = players
		self._frame_counter = 0

		if len(self._players) == 1:
			logging.debug("starting game-start animation for player %s (%s)",
					self._players[0].name, self._players[0].id)
		else:
			logging.debug("starting game-start animation for players %s and %s (%s and %s)",
					self._players[0].name, self._players[1].name, self._players[0].id, self._players[1].id)

		# init
		screen.clear()

		# write first name
		self._write((1, 1), self._players[0].name)


	def _write(self, coordinates, text):
		"""
		Write text on screen, starting at coordinates.

		Parameters
		----------
		coordinates: tuple of 2 numbers
			X and y start coordinates
		text: string
			Max 3 letters

		Returns
		-------
		none
		"""

		logging.debug("writing: %s", text)

		assert len(coordinates) == 2, f"coordinates: {coordinates}"
		(screen_x, screen_y) = coordinates
		assert len(text) <= 3, f"text: {text}"

		for letter in text:
			img = self.font_8x8[letter]
			for row in img:
				for pixel in row:
					if pixel:
						self._screen.set_pixel((screen_x, screen_y), self.font_colour)
					screen_x += 1
				screen_x = 1
				screen_y += 1
			screen_y += 2


	def update(self):
		"""
		Update game state. This function is called at a regular interval. Handle timed actions and user
		actions.

		Parameters
		----------
		none

		Returns
		-------
		none
		"""

		# quit when max frames is reached
		if self._frame_counter >= self.max_frames:
			return False
		self._frame_counter += 1
		return True
