package joshie.harvest.quests.town.festivals.contest;
import joshie.harvest.api.npc.NPCEntity;
import joshie.harvest.api.quests.Selection;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.util.text.translation.I18n;
import net.minecraftforge.fml.common.eventhandler.Event.Result;
import org.apache.commons.lang3.tuple.Pair;
import javax.annotation.Nonnull;
import java.util.List;
public class ContestEntrySelection<E> extends Selection<QuestContest> {
private final String translate;
public ContestEntrySelection(String prefix) {
this.translate = "harvestfestival.quest.festival." + prefix + ".nostalls";
}
@Override
@SuppressWarnings({"unchecked", "deprecation"})
public String[] getText(@Nonnull EntityPlayer player, QuestContest quest) {
List<Pair<String, Integer>> entries = quest.getEntries().getNames();
int max = Math.min(4, entries.size());
if (max <= 0) return new String[] { I18n.translateToLocal(translate) };
else {
String[] string = new String[max];
for (int i = 0; i < max; i++) {
string[i] = "@" + entries.get(i).getKey();
}
return string;
}
}
@Override
@SuppressWarnings("unchecked")
public Result onSelected(EntityPlayer player, NPCEntity entity, QuestContest quest, int option) {
List<Pair<E, Integer>> entries = quest.getEntries().getAvailableEntries(player);
int index = option - 1;
if (index >= entries.size()) return Result.DENY;
else {
quest.getEntries().enter(player, entries.get(index).getKey(), entries.get(index).getValue());
quest.syncData(player);
return Result.ALLOW;
}
}
}