[Activity] Add full check
This commit is contained in:
@@ -63,7 +63,7 @@ public class ActivityFormatter
|
|||||||
|
|
||||||
public string FormatActivityPlayer(ActivityPlayer player) => player switch
|
public string FormatActivityPlayer(ActivityPlayer player) => player switch
|
||||||
{
|
{
|
||||||
ActivityRolePlayer rolePlayer => $"{player.Name} {RolesToEmotes(rolePlayer.Roles)}",
|
ActivityRolePlayer rolePlayer => $"{player.Name} - {RolesToEmotes(rolePlayer.Roles)}",
|
||||||
_ => $"{player.Name})"
|
_ => $"{player.Name})"
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -73,22 +73,22 @@ public class ActivityFormatter
|
|||||||
|
|
||||||
if (rolePlayerRoles.HasFlag(ActivityRoles.Helper))
|
if (rolePlayerRoles.HasFlag(ActivityRoles.Helper))
|
||||||
{
|
{
|
||||||
emotesBuilder.Append($"{_options.HelperEmote}/");
|
emotesBuilder.Append($" {_options.HelperEmote} ");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (rolePlayerRoles.HasFlag(ActivityRoles.Dps))
|
if (rolePlayerRoles.HasFlag(ActivityRoles.Dps))
|
||||||
{
|
{
|
||||||
emotesBuilder.Append(_options.DpsEmote);
|
emotesBuilder.Append($" {_options.DpsEmote} ");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (rolePlayerRoles.HasFlag(ActivityRoles.Tank))
|
if (rolePlayerRoles.HasFlag(ActivityRoles.Tank))
|
||||||
{
|
{
|
||||||
emotesBuilder.Append(_options.TankEmote);
|
emotesBuilder.Append($" {_options.TankEmote} ");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (rolePlayerRoles.HasFlag(ActivityRoles.Support))
|
if (rolePlayerRoles.HasFlag(ActivityRoles.Support))
|
||||||
{
|
{
|
||||||
emotesBuilder.Append(_options.SupportEmote);
|
emotesBuilder.Append($" {_options.SupportEmote} ");
|
||||||
}
|
}
|
||||||
|
|
||||||
return emotesBuilder.ToString();
|
return emotesBuilder.ToString();
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ namespace Cocotte.Modules.Activities;
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
[Group("activite", "Organise des activités")]
|
[Group("activite", "Organise des activités")]
|
||||||
[SuppressMessage("ReSharper", "UnusedMember.Local")]
|
[SuppressMessage("ReSharper", "UnusedMember.Local")]
|
||||||
public class ActivityModule : InteractionModuleBase<SocketInteractionContext>
|
public partial class ActivityModule : InteractionModuleBase<SocketInteractionContext>
|
||||||
{
|
{
|
||||||
private readonly ILogger<ActivityModule> _logger;
|
private readonly ILogger<ActivityModule> _logger;
|
||||||
private readonly ActivityOptions _options;
|
private readonly ActivityOptions _options;
|
||||||
@@ -129,6 +129,17 @@ public class ActivityModule : InteractionModuleBase<SocketInteractionContext>
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Check if activity is full
|
||||||
|
if (await _activitiesRepository.ActivityPlayerCount(activity) >= activity.MaxPlayers)
|
||||||
|
{
|
||||||
|
await RespondAsync(
|
||||||
|
ephemeral: true,
|
||||||
|
embed: EmbedUtils.ErrorEmbed("L'activité est complète").Build()
|
||||||
|
);
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
_logger.LogTrace("Player {Player} joined activity {Id}", user.DisplayName, activityId);
|
_logger.LogTrace("Player {Player} joined activity {Id}", user.DisplayName, activityId);
|
||||||
|
|
||||||
var roles = _activityHelper.GetPlayerRoles(user.Roles);
|
var roles = _activityHelper.GetPlayerRoles(user.Roles);
|
||||||
|
|||||||
42
Cocotte/Modules/Activities/ActivityModuleDebug.cs
Normal file
42
Cocotte/Modules/Activities/ActivityModuleDebug.cs
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
using Cocotte.Modules.Activities.Models;
|
||||||
|
using Cocotte.Utils;
|
||||||
|
using Discord;
|
||||||
|
using Discord.Interactions;
|
||||||
|
|
||||||
|
namespace Cocotte.Modules.Activities;
|
||||||
|
|
||||||
|
#if DEBUG
|
||||||
|
public partial class ActivityModule
|
||||||
|
{
|
||||||
|
[MessageCommand("Add role player")]
|
||||||
|
public async Task AddRolePlayer(IMessage message)
|
||||||
|
{
|
||||||
|
if (message is IUserMessage userMessage && userMessage.Author.IsBot)
|
||||||
|
{
|
||||||
|
if (await _activitiesRepository.FindActivity(message.Id) is { } activity)
|
||||||
|
{
|
||||||
|
// Generate random player
|
||||||
|
var player = new ActivityRolePlayer
|
||||||
|
{
|
||||||
|
Activity = activity,
|
||||||
|
Name = $"Player{Random.Shared.Next(1, 100)}",
|
||||||
|
DiscordId = (ulong) Random.Shared.NextInt64(),
|
||||||
|
Roles = (ActivityRoles) Random.Shared.Next((int) (ActivityRoles.Dps | ActivityRoles.Helper |
|
||||||
|
ActivityRoles.Support | ActivityRoles.Tank) + 1)
|
||||||
|
};
|
||||||
|
|
||||||
|
// Add the player to the activity
|
||||||
|
activity.ActivityPlayers.Add(player);
|
||||||
|
await _activitiesRepository.SaveChanges();
|
||||||
|
|
||||||
|
await UpdateActivityEmbed(activity);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
await RespondAsync(
|
||||||
|
embed: EmbedUtils.SuccessEmbed($"Successfully added a player").Build(),
|
||||||
|
ephemeral: true
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
@@ -1,4 +1,5 @@
|
|||||||
using Cocotte.Services;
|
using Cocotte.Services;
|
||||||
|
using Microsoft.EntityFrameworkCore;
|
||||||
|
|
||||||
namespace Cocotte.Modules.Activities.Models;
|
namespace Cocotte.Modules.Activities.Models;
|
||||||
|
|
||||||
@@ -31,6 +32,9 @@ public class ActivitiesRepository
|
|||||||
return await _cocotteDbContext.ActivityRolePlayers.FindAsync(activityId, playerId);
|
return await _cocotteDbContext.ActivityRolePlayers.FindAsync(activityId, playerId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public async Task<int> ActivityPlayerCount(Activity activity) =>
|
||||||
|
await _cocotteDbContext.ActivityPlayers.Where(player => player.ActivityId == activity.ActivityId).CountAsync();
|
||||||
|
|
||||||
public async Task<IEnumerable<ActivityPlayer>> LoadActivityPlayers(Activity activity)
|
public async Task<IEnumerable<ActivityPlayer>> LoadActivityPlayers(Activity activity)
|
||||||
{
|
{
|
||||||
await _cocotteDbContext
|
await _cocotteDbContext
|
||||||
|
|||||||
Reference in New Issue
Block a user