Room != Group

This commit is contained in:
Yohann D'ANELLO 2021-11-27 10:27:52 +01:00
parent 4886806af7
commit 6e41710943
Signed by: ynerant
GPG Key ID: 3A75C55819C8CF85
3 changed files with 30 additions and 15 deletions

View File

@ -263,7 +263,7 @@ async def open(ctx: commands.Context):
if room is None:
await ctx.reply("Les salles ne sont pas configurées.")
if len(list(room.players)) != 3 or not all(player for player in room.players):
return await ctx.reply(f"La salle {room.room.value} ne contient pas trois joueurs, "
return await ctx.reply(f"La groupe {room.room.value} ne contient pas trois joueurs, "
f"merci de finir sa configuration avec `!setup {room.room.value}`.")
# Send messages to players
@ -282,7 +282,8 @@ async def open(ctx: commands.Context):
channel_id = player.private_channel_id
channel = bot.get_channel(channel_id)
message = "Les votes sont ouverts.\n"
message += f"Vous devez aller voter en salle **{room.room.value}**.\n"
effective_room = room.room if vote.player2 is not None else room.room.next
message += f"Vous devez aller voter en salle **{effective_room.value}**.\n"
if other_player:
message += f"Vous êtes allié⋅e avec **{other_player.name}**.\n"
message += f"Vous affrontez {' et '.join(f'**{adv.name}**' for adv in other_vote.players)}.\n"
@ -318,7 +319,7 @@ async def close(ctx: commands.Context):
if vote.swapped:
vote.vote = Vote.ALLY if vote.vote == Vote.BETRAY else Vote.BETRAY
await ctx.send(f"L'équipe **{' et '.join(player.name for player in vote.players)}** "
f"en salle **{room.room.value}** a vu son vote échangé. "
f"dans le groupe **{room.room.value}** a vu son vote échangé. "
f"Nouveau vote : **{vote.vote.value}**")
for player in game.players.values():
@ -367,7 +368,7 @@ async def prepare(ctx: commands.Context):
))
game.save()
await ctx.reply("Le tour suivant est en préparation. Utilisez `!setup A|B|C` pour paramétrer les salles A, B ou C. "
await ctx.reply("Le tour suivant est en préparation. Utilisez `!setup A|B|C` pour paramétrer les groupes A, B ou C. "
"Dan peut faire la même chose.")
@ -377,9 +378,11 @@ async def preview(ctx: commands.Context):
game: Game = Game.INSTANCE
current_round = game.rounds[-1]
for room in current_round.rooms:
await ctx.send(f"Dans la salle **{room.room.value}**, s'affronteront :\n"
f"- **{' et '.join(str(player or '_personne_') for player in room.vote1.players)}**\n"
f"- **{' et '.join(str(player or '_personne_') for player in room.vote2.players)}**")
await ctx.send(f"Dans la groupe **{room.room.value}**, s'affronteront :\n"
f"- **{' et '.join(str(player or '_personne_') for player in room.vote1.players)}** "
f"(salle {room.room.next.value})\n"
f"- **{' et '.join(str(player or '_personne_') for player in room.vote2.players)}** "
f"(salle {room.room.value})")
@bot.command(help="Préparation d'une salle")
@ -389,9 +392,9 @@ async def setup(ctx: commands.Context, room: Room):
current_round = game.rounds[-1]
if game.state != GameState.PREPARING:
return await ctx.reply("Vous ne pouvez pas préparer la salle avant le tour suivant.")
return await ctx.reply("Vous ne pouvez pas préparer le groupe avant le tour suivant.")
await ctx.reply(f"Préparation de la salle {room.value}.")
await ctx.reply(f"Préparation du groupe {room.value}.")
match room:
case Room.A:
@ -402,7 +405,7 @@ async def setup(ctx: commands.Context, room: Room):
round_room = current_round.room_c
view = PrepareRoomView(round_room, 0, timeout=300)
await ctx.send(f"Veuillez choisir qui s'affrontera seul dans la salle **{room.value}**.", view=view)
await ctx.send(f"Veuillez choisir qui s'affrontera seul dans le groupe **{room.value}**.", view=view)
if round_room.vote1.player1 is not None:
await ctx.send(f"Attention : **{round_room.vote1.player1.name}** est déjà choisie.")
@ -578,7 +581,7 @@ class PrepareRoomView(disnake.ui.View):
if replaced_player != player:
await interaction.send(
f"Attention : **{player.name}** était déjà attribué⋅e dans la salle "
f"Attention : **{player.name}** était déjà attribué⋅e dans le groupe "
f"**{room.room.value}**. Vous devrez probablement la re-configurer.")
if vote.player1 == player:
@ -618,10 +621,12 @@ class PrepareRoomView(disnake.ui.View):
case 2:
self.round_room.vote2.player2 = player
await interaction.send(
f"Dans la salle **{round_room.room.value}**, **{round_room.vote1.player1.name}** "
f"affrontera **{round_room.vote2.player1.name}** et **{round_room.vote2.player2.name}**.")
f"Dans le groupe **{round_room.room.value}**, **{round_room.vote1.player1.name}** "
f"(salle {round_room.room.next.value}) "
f"affrontera **{round_room.vote2.player1.name}** et **{round_room.vote2.player2.name}** "
f"(salle {round_room.room.value}).")
await interaction.send(
"Vous pouvez redéfinir la salle tant que le tour n'est pas lancé. "
"Vous pouvez redéfinir le groupe tant que le tour n'est pas lancé. "
"Utilisez !preview pour un récapitulatif des tours.")
game.save()

View File

@ -10,6 +10,16 @@ class Room(Enum):
B = 'B'
C = 'C'
@property
def next(self) -> 'Room':
match self:
case Room.A:
return Room.B
case Room.B:
return Room.C
case Room.C:
return Room.A
class GameState(Enum):
PREPARING = 0

View File

@ -48,7 +48,7 @@
<table class="table table-striped">
<thead>
<tr>
<th scope="col">Salle</th>
<th scope="col">Groupe</th>
<th scope="col">Équipes</th>
<th scope="col">Vote</th>
</tr>