package org.royaldev.thehumanity.commands.impl;
import org.jetbrains.annotations.NotNull;
import org.kitteh.irc.client.library.element.User;
import org.kitteh.irc.client.library.event.helper.ActorEvent;
import org.royaldev.thehumanity.TheHumanity;
import org.royaldev.thehumanity.cards.packs.CAHCardPack;
import org.royaldev.thehumanity.cards.packs.CardPackParser;
import org.royaldev.thehumanity.util.ConversionHelper;
import xyz.cardstock.cardstock.commands.BaseCommand;
import xyz.cardstock.cardstock.commands.CallInfo;
import xyz.cardstock.cardstock.commands.Command;
import java.util.List;
import java.util.stream.Collectors;
@Command(
name = "loadcardpack",
description = "Loads or reloads card packs into the list of loaded packs.",
aliases = {"loadpack", "load"},
usage = "<command> [packs...]"
)
public class LoadCardPackCommand extends BaseCommand {
private final TheHumanity humanity;
public LoadCardPackCommand(final TheHumanity instance) {
this.humanity = instance;
}
@Override
public void run(@NotNull ActorEvent<User> event, @NotNull CallInfo callInfo, @NotNull List<String> arguments) {
if (arguments.size() < 1) {
event.getActor().sendNotice("You must provide card packs.");
return;
}
// Get the names of the requested packs
final List<String> names = CardPackParser.getListOfCardPackNames(arguments.toArray(new String[arguments.size()]), this.humanity.getDefaultPacks());
// Get the corresponding card packs, filter out the nulls, then remove them
names.stream()
.map(this.humanity::getCardPack)
.filter(pack -> pack != null)
.forEach(this.humanity::removeCardPack);
// Download or parse each pack again, filter out the null packs
final List<CAHCardPack> packs = names.stream()
.map(this.humanity::parseOrDownloadCardPack)
.filter(pack -> pack != null)
.collect(Collectors.toList());
// Re-add them
packs.forEach(this.humanity::addCardPack);
ConversionHelper.respond(event, "Loaded " + packs.size() + " pack" + (packs.size() == 1 ? "" : "s") + ".");
}
}