mirror of
https://github.com/RYGhub/royal-mifia.git
synced 2024-11-26 07:34:19 +00:00
parent
e0c46de498
commit
4a826402e1
2 changed files with 60 additions and 18 deletions
68
main.py
68
main.py
|
@ -72,6 +72,7 @@ class Game:
|
||||||
self.tokill = list() # type: List['Player']
|
self.tokill = list() # type: List['Player']
|
||||||
self.phase = 'Join' # type: str
|
self.phase = 'Join' # type: str
|
||||||
self.day = 0 # type: int
|
self.day = 0 # type: int
|
||||||
|
self.votemsg = None # type: Union["telegram.Message", None]
|
||||||
|
|
||||||
self.configstep = 0 # type: int
|
self.configstep = 0 # type: int
|
||||||
self.roleconfig = dict() # type: Dict[int]
|
self.roleconfig = dict() # type: Dict[int]
|
||||||
|
@ -274,6 +275,24 @@ class Game:
|
||||||
self.message(s.new_day.format(day=self.day))
|
self.message(s.new_day.format(day=self.day))
|
||||||
# Controlla se qualcuno ha vinto
|
# Controlla se qualcuno ha vinto
|
||||||
self.victoryconditions()
|
self.victoryconditions()
|
||||||
|
# Manda la tastiera con i voti e fissala
|
||||||
|
# Genera la tastiera
|
||||||
|
table = list()
|
||||||
|
for player in self.players:
|
||||||
|
if not player.alive:
|
||||||
|
continue
|
||||||
|
row = list()
|
||||||
|
row.append(InlineKeyboardButton(s.vote_keyboard_line.format(status=s.status_normal_voted, player=player, votes=player.votes),
|
||||||
|
callback_data=player.tusername))
|
||||||
|
table.append(row)
|
||||||
|
row = list()
|
||||||
|
row.append(InlineKeyboardButton(s.vote_keyboard_nobody, callback_data="-"))
|
||||||
|
table.append(row)
|
||||||
|
keyboard = InlineKeyboardMarkup(table)
|
||||||
|
# Manda la tastiera
|
||||||
|
self.votemsg = self.bot.sendMessage(self.groupid, s.vote_keyboard, parse_mode=ParseMode.MARKDOWN, reply_markup=keyboard)
|
||||||
|
# Fissa la tastiera
|
||||||
|
self.bot.pinChatMessage(self.groupid, self.votemsg.message_id)
|
||||||
|
|
||||||
def startpreset(self):
|
def startpreset(self):
|
||||||
"""Inizio della fase di preset"""
|
"""Inizio della fase di preset"""
|
||||||
|
@ -651,26 +670,12 @@ def vote(bot: Bot, update):
|
||||||
if game is None:
|
if game is None:
|
||||||
bot.sendMessage(update.message.chat.id, s.error_no_games_found, parse_mode=ParseMode.MARKDOWN)
|
bot.sendMessage(update.message.chat.id, s.error_no_games_found, parse_mode=ParseMode.MARKDOWN)
|
||||||
return
|
return
|
||||||
elif game.phase is not 'Voting':
|
elif game.phase != 'Voting':
|
||||||
bot.sendMessage(update.message.chat.id, s.error_no_games_found, parse_mode=ParseMode.MARKDOWN)
|
bot.sendMessage(update.message.chat.id, s.error_no_games_found, parse_mode=ParseMode.MARKDOWN)
|
||||||
return
|
return
|
||||||
elif game.day <= 1:
|
elif game.day <= 1:
|
||||||
game.message(s.error_no_votes_on_first_day)
|
game.message(s.error_no_votes_on_first_day)
|
||||||
return
|
return
|
||||||
# Genera la tastiera
|
|
||||||
table = list()
|
|
||||||
for player in game.players:
|
|
||||||
if not player.alive:
|
|
||||||
continue
|
|
||||||
row = list()
|
|
||||||
row.append(InlineKeyboardButton(s.vote_keyboard_line.format(player=player, votes=player.votes), callback_data=player.tusername))
|
|
||||||
table.append(row)
|
|
||||||
row = list()
|
|
||||||
row.append(InlineKeyboardButton(s.vote_keyboard_nobody, callback_data="-"))
|
|
||||||
table.append(row)
|
|
||||||
keyboard = InlineKeyboardMarkup(table)
|
|
||||||
# Manda la tastiera
|
|
||||||
bot.sendMessage(game.groupid, s.vote_keyboard, parse_mode=ParseMode.MARKDOWN, reply_markup=keyboard)
|
|
||||||
|
|
||||||
|
|
||||||
def endday(_: Bot, update):
|
def endday(_: Bot, update):
|
||||||
|
@ -777,10 +782,14 @@ def delete(bot: Bot, update):
|
||||||
|
|
||||||
def load(bot: Bot, update):
|
def load(bot: Bot, update):
|
||||||
"""Carica una partita salvata."""
|
"""Carica una partita salvata."""
|
||||||
|
game = findgamebyid(update.message.chat.id)
|
||||||
|
if game is not None:
|
||||||
|
bot.sendMessage(update.message.chat.id, s.error_game_in_progress, parse_mode=ParseMode.MARKDOWN)
|
||||||
|
return
|
||||||
file = open(str(update.message.chat.id) + ".p", "rb")
|
file = open(str(update.message.chat.id) + ".p", "rb")
|
||||||
game = pickle.load(file)
|
game = pickle.load(file)
|
||||||
inprogress.append(game)
|
inprogress.append(game)
|
||||||
game.message(bot, s.game_loaded)
|
game.message(s.game_loaded)
|
||||||
|
|
||||||
|
|
||||||
def save(bot: Bot, update):
|
def save(bot: Bot, update):
|
||||||
|
@ -832,11 +841,16 @@ def inlinekeyboard(bot: Bot, update):
|
||||||
game.loadpreset(update.callback_query.data)
|
game.loadpreset(update.callback_query.data)
|
||||||
bot.answerCallbackQuery(callback_query_id=update.callback_query.id, text=s.preset_selected.format(selected=update.callback_query.data))
|
bot.answerCallbackQuery(callback_query_id=update.callback_query.id, text=s.preset_selected.format(selected=update.callback_query.data))
|
||||||
elif game.phase is 'Voting':
|
elif game.phase is 'Voting':
|
||||||
|
# Controlla che non sia il primo giorno
|
||||||
|
if game.day <= 1:
|
||||||
|
bot.answerCallbackQuery(callback_query_id=update.callback_query.id, text=s.error_no_votes_on_first_day, show_alert=True)
|
||||||
|
return
|
||||||
# Trova il giocatore
|
# Trova il giocatore
|
||||||
player = game.findplayerbyid(update.callback_query.from_user.id)
|
player = game.findplayerbyid(update.callback_query.from_user.id)
|
||||||
if player is None:
|
if player is None:
|
||||||
bot.answerCallbackQuery(callback_query_id=update.callback_query.id, text=s.error_not_in_game, show_alert=True)
|
bot.answerCallbackQuery(callback_query_id=update.callback_query.id, text=s.error_not_in_game, show_alert=True)
|
||||||
return
|
return
|
||||||
|
# Controlla che sia vivo
|
||||||
if not player.alive:
|
if not player.alive:
|
||||||
bot.answerCallbackQuery(callback_query_id=update.callback_query.id, text=s.error_dead, show_alert=True)
|
bot.answerCallbackQuery(callback_query_id=update.callback_query.id, text=s.error_dead, show_alert=True)
|
||||||
return
|
return
|
||||||
|
@ -851,6 +865,28 @@ def inlinekeyboard(bot: Bot, update):
|
||||||
player.votingfor = target
|
player.votingfor = target
|
||||||
game.message(s.vote.format(voting=player.tusername, voted=target.tusername))
|
game.message(s.vote.format(voting=player.tusername, voted=target.tusername))
|
||||||
bot.answerCallbackQuery(callback_query_id=update.callback_query.id, text=s.vote_fp.format(voted=target.tusername))
|
bot.answerCallbackQuery(callback_query_id=update.callback_query.id, text=s.vote_fp.format(voted=target.tusername))
|
||||||
|
# Aggiorna i voti
|
||||||
|
game.updatevotes()
|
||||||
|
mostvoted = game.mostvotedplayers()
|
||||||
|
# Aggiorna la tastiera
|
||||||
|
table = list()
|
||||||
|
for player in game.players:
|
||||||
|
if not player.alive:
|
||||||
|
continue
|
||||||
|
if player in mostvoted:
|
||||||
|
status_icon = s.status_most_voted
|
||||||
|
else:
|
||||||
|
status_icon = s.status_normal_voted
|
||||||
|
row = list()
|
||||||
|
row.append(InlineKeyboardButton(s.vote_keyboard_line.format(status=status_icon, player=player, votes=player.votes),
|
||||||
|
callback_data=player.tusername))
|
||||||
|
table.append(row)
|
||||||
|
row = list()
|
||||||
|
row.append(InlineKeyboardButton(s.vote_keyboard_nobody, callback_data="-"))
|
||||||
|
table.append(row)
|
||||||
|
keyboard = InlineKeyboardMarkup(table)
|
||||||
|
# Manda la tastiera
|
||||||
|
bot.editMessageReplyMarkup(game.groupid, game.votemsg.message_id, reply_markup=keyboard)
|
||||||
|
|
||||||
|
|
||||||
updater.dispatcher.add_handler(CommandHandler('ping', ping))
|
updater.dispatcher.add_handler(CommandHandler('ping', ping))
|
||||||
|
|
10
strings.py
10
strings.py
|
@ -277,10 +277,10 @@ end_game_wiped = "Nessuno è più vivo. La specie umana si è estinta.\n"
|
||||||
end_game_chaos = "Sei un Signore del Caos."
|
end_game_chaos = "Sei un Signore del Caos."
|
||||||
|
|
||||||
# Generale: scegli per chi votare
|
# Generale: scegli per chi votare
|
||||||
vote_keyboard = "Chi vuoi votare...?"
|
vote_keyboard = "Clicca qui per votare!"
|
||||||
|
|
||||||
# Generale: riga della tastiera del voto
|
# Generale: riga della tastiera del voto
|
||||||
vote_keyboard_line = "{player} - {votes}"
|
vote_keyboard_line = "{status} {votes} - {player}"
|
||||||
|
|
||||||
# Generale: riga della tastiera per annullare il voto
|
# Generale: riga della tastiera per annullare il voto
|
||||||
vote_keyboard_nobody = "Nessuno"
|
vote_keyboard_nobody = "Nessuno"
|
||||||
|
@ -318,6 +318,12 @@ status_alive_player = "{icon} @{name} ({votes} voti)\n"
|
||||||
# Status: giocatore morto (deve terminare con \n)
|
# Status: giocatore morto (deve terminare con \n)
|
||||||
status_dead_player = "\U0001F480 @{name}\n"
|
status_dead_player = "\U0001F480 @{name}\n"
|
||||||
|
|
||||||
|
# Status: giocatore più votato della partita
|
||||||
|
status_most_voted = "\U0001F534"
|
||||||
|
|
||||||
|
# Status: voti giocatore normali
|
||||||
|
status_normal_voted = "\u26AA"
|
||||||
|
|
||||||
# Status: Modalità debug
|
# Status: Modalità debug
|
||||||
debug_mode = "*DEBUG/CHEATS MODE*\n"
|
debug_mode = "*DEBUG/CHEATS MODE*\n"
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue