Пример #1
0
        public async Task LoadoutTask(LoadoutAction action = LoadoutAction.Show, [Remainder] string loadoutName = "")
        {
            if (!(Context.User is SocketGuildUser sgu))
            {
                return;
            }

            var user = EntityConverter.ConvertUser(sgu);

            switch (action)
            {
            case LoadoutAction.Show:
                var embed = new EmbedBuilder();
                if (user.Loadouts.loadouts.Count > 0)
                {
                    foreach (var item in user.Loadouts.loadouts)
                    {
                        var items = item.Gear.Count > 0 ? string.Join("", item.Gear.Select(i => user.Inv.GetItem(i)?.Icon ?? "-")) : "no gear";
                        var djinn = item.Djinn.Count > 0 ? string.Join("", item.Djinn.Select(d => user.DjinnPocket.GetDjinn(d)?.Emote ?? "-")) : "no Djinn";
                        embed.AddField(item.LoadoutName,
                                       $"{ElementIcons[item.Element]} {item.ClassSeries}\n" +
                                       $"{items}\n" +
                                       $"{djinn}"
                                       , inline: true);
                    }
                }
                else
                {
                    embed.WithDescription("No loadouts saved.");
                }
                _ = ReplyAsync(embed: embed.Build());
                break;

            case LoadoutAction.Save:
                if (loadoutName.IsNullOrEmpty())
                {
                    return;
                }

                user.Loadouts.RemoveLoadout(loadoutName);
                if (user.Loadouts.loadouts.Count >= 6)
                {
                    _ = ReplyAsync("Loadout limit of 6 reached.");
                    return;
                }
                var newLoadout = Loadout.GetLoadout(user);
                newLoadout.LoadoutName = loadoutName;
                user.Loadouts.SaveLoadout(newLoadout);
                UserAccountProvider.StoreUser(user);
                _ = LoadoutTask(LoadoutAction.Show);
                break;

            case LoadoutAction.Load:
                var loadedLoadout = user.Loadouts.GetLoadout(loadoutName);
                if (loadedLoadout != null)
                {
                    await GiveElementRole(sgu, loadedLoadout.Element);
                    await ChangeElement(user, loadedLoadout.Element);

                    loadedLoadout.ApplyLoadout(user);
                    UserAccountProvider.StoreUser(user);
                    _ = Status();
                }
                break;

            case LoadoutAction.Remove:
                if (loadoutName.IsNullOrEmpty())
                {
                    return;
                }

                user.Loadouts.RemoveLoadout(loadoutName);
                UserAccountProvider.StoreUser(user);
                _ = LoadoutTask(LoadoutAction.Show);
                break;
            }
            await Task.CompletedTask;
        }
Пример #2
0
        public async Task LoadoutTask(LoadoutAction action = LoadoutAction.Show, [Remainder] string loadoutName = "")
        {
            var user = UserAccounts.GetAccount(Context.User);

            switch (action)
            {
            case LoadoutAction.Show:
                var embed = new EmbedBuilder();
                if (user.Loadouts.loadouts.Count > 0)
                {
                    foreach (var item in user.Loadouts.loadouts)
                    {
                        embed.AddField(item.LoadoutName, $"{ElementIcons[item.Element]} {item.ClassSeries}\n" +
                                       $"{string.Join("", item.Gear.Select(i => user.Inv.GetItem(i).Icon))}\n" +
                                       $"{string.Join("", item.Djinn.Select(d => user.DjinnPocket.GetDjinn(d)?.Emote))}", inline: true);
                    }
                }
                else
                {
                    embed.WithDescription("No loadouts saved.");
                }
                _ = ReplyAsync(embed: embed.Build());
                break;

            case LoadoutAction.Save:
                if (loadoutName.IsNullOrEmpty())
                {
                    return;
                }
                if (user.Loadouts.loadouts.Count >= 6)
                {
                    return;
                }
                var newLoadout = Loadout.GetLoadout(user);
                newLoadout.LoadoutName = loadoutName;
                user.Loadouts.SaveLoadout(newLoadout);
                _ = LoadoutTask(LoadoutAction.Show);
                UserAccounts.SaveAccounts();
                break;

            case LoadoutAction.Load:
                var loadedLoadout = user.Loadouts.GetLoadout(loadoutName);
                if (loadedLoadout != null)
                {
                    await ChooseElement(loadedLoadout.Element);

                    loadedLoadout.ApplyLoadout(user);
                    _ = Status();
                }
                break;

            case LoadoutAction.Remove:
                if (loadoutName.IsNullOrEmpty())
                {
                    return;
                }
                user.Loadouts.RemoveLoadout(loadoutName);
                _ = LoadoutTask(LoadoutAction.Show);
                break;
            }
            await Task.CompletedTask;
        }