1
Fork 0
mirror of https://github.com/RYGhub/royal-mifia.git synced 2024-11-25 15:14:18 +00:00

Convertito l'argomento Game in un attributo di Player

This commit is contained in:
Steffo 2017-07-18 00:57:51 +02:00
parent 0003cac1ec
commit 4157ca3ace

15
main.py
View file

@ -25,7 +25,7 @@ freenames = s.names_list.copy()
class Player:
"""Classe di un giocatore. Contiene tutti i dati riguardanti un giocatore all'interno di una partita, come il ruolo,
e i dati riguardanti telegram, come ID e username."""
def __init__(self, tid, tusername, dummy=False):
def __init__(self, game: Game, tid: int, tusername: str, dummy=False):
self.tid = tid # ID di Telegram
self.tusername = tusername # Username di Telegram
self.role = Role(self) # Di base, ogni giocatore è un ruolo indefinito
@ -35,6 +35,7 @@ class Player:
self.protectedby = None # Protettore. Oggetto player che protegge questo giocatore dalla mifia. Se è None, la mifia può uccidere questo giocatore
self.mifiavotes = 0 # Voti che sta ricevendo questo giocatore dalla mifia. Aggiornato da updatemifiavotes()
self.dummy = dummy # E' un bot? Usato solo per il debug (/debugjoin)
self.game = game # La partita associata al giocatore
def __repr__(self) -> str:
return "<Player {username}>".format(username=self.tusername)
@ -47,9 +48,9 @@ class Player:
if not self.dummy:
bot.sendMessage(self.tid, text, parse_mode=ParseMode.MARKDOWN)
def kill(self, bot, game):
def kill(self, bot):
"""Uccidi il giocatore."""
self.role.ondeath(bot, game)
self.role.ondeath(bot, self.game)
self.alive = False
@ -88,6 +89,8 @@ class Game:
int(self.name)
except ValueError:
freenames.append(self.name)
for player in self.players:
player.game = None
def __repr__(self):
r = "<Game {name} in group {groupid} with {nplayers} players in phase {phase}>" \
@ -125,7 +128,7 @@ class Game:
else:
return None
# def updategroupname(self, bot):
# def updategroupname(self, bot: Bot):
# """Cambia il titolo della chat. Per qualche motivo non funziona."""
# try:
# if self.phase == "Voting":
@ -565,7 +568,7 @@ def join(bot, update):
if update.message.from_user.username is None:
game.message(bot, s.error_no_username)
return
p = Player(update.message.from_user.id, update.message.from_user.username)
p = Player(game, update.message.from_user.id, update.message.from_user.username)
try:
p.message(bot, s.you_joined.format(game=game.name, adminname=game.admin.tusername if game.admin is not None else p.tusername))
except Unauthorized:
@ -590,7 +593,7 @@ def debugjoin(bot, update):
return
arg = update.message.text.split(" ")
for name in range(1, int(arg[1]) + 1):
p = Player(int(name), str(name), True)
p = Player(game, int(name), str(name), True)
try:
game.joinplayer(bot, p, silent=True)
except RetryAfter: