package forge.quest.gui.main;
import forge.AllZone;
import forge.Quest_Assignment;
import forge.ReadQuest_Assignment;
import forge.gui.GuiUtils;
import forge.properties.ForgeProps;
import forge.properties.NewConstants;
import javax.swing.*;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
/**
* <p>QuestQuest class.</p>
*
* @author Forge
* @version $Id: $
*/
public class QuestQuest extends QuestSelectablePanel {
/** Constant <code>serialVersionUID=-162817410327650160L</code> */
private static final long serialVersionUID = -162817410327650160L;
Quest_Assignment assignment;
/**
* <p>Constructor for QuestQuest.</p>
*
* @param assignment a {@link forge.Quest_Assignment} object.
*/
public QuestQuest(Quest_Assignment assignment) {
super(assignment.getName(), assignment.getDifficulty(), assignment.getDesc(), GuiUtils.getIconFromFile(assignment.getIconName()));
this.assignment = assignment;
JLabel repeatabilityLabel;
if (assignment.isRepeatable()) {
repeatabilityLabel = new JLabel("This quest is repeatable");
} else {
repeatabilityLabel = new JLabel("This quest is not repeatable");
}
GuiUtils.addGap(centerPanel);
this.centerPanel.add(repeatabilityLabel);
}
/**
* <p>getQuests.</p>
*
* @return a {@link java.util.List} object.
*/
public static List<QuestQuest> getQuests() {
List<QuestQuest> quests = new ArrayList<QuestQuest>();
List<Quest_Assignment> questList = readQuests();
for (Quest_Assignment assignment : questList) {
quests.add(new QuestQuest(assignment));
}
return quests;
}
/**
* <p>readQuests.</p>
*
* @return a {@link java.util.List} object.
*/
private static List<Quest_Assignment> readQuests() {
forge.quest.data.QuestData questData = AllZone.getQuestData();
ReadQuest_Assignment read = new ReadQuest_Assignment(ForgeProps.getFile(NewConstants.QUEST.QUESTS), questData);
read.run();
List<Quest_Assignment> questsToDisplay = new ArrayList<Quest_Assignment>();
if (questData.getAvailableQuests() != null && questData.getAvailableQuests().size() > 0) {
List<Quest_Assignment> availableQuests = read.getQuestsByIds(questData.getAvailableQuests());
questsToDisplay = availableQuests;
} else {
List<Quest_Assignment> allAvailableQuests = read.getQuests();
List<Integer> availableInts = new ArrayList<Integer>();
int maxQuests = questData.getWin() / 10;
if (maxQuests > 5) {
maxQuests = 5;
}
if (allAvailableQuests.size() < maxQuests) {
maxQuests = allAvailableQuests.size();
}
Collections.shuffle(allAvailableQuests);
for (int i = 0; i < maxQuests; i++) {
Quest_Assignment qa = allAvailableQuests.get(i);
availableInts.add(qa.getId());
questsToDisplay.add(qa);
}
questData.setAvailableQuests(availableInts);
questData.saveData();
}//else
return questsToDisplay;
}
/**
* <p>getQuestAssignment.</p>
*
* @return a {@link forge.Quest_Assignment} object.
*/
public Quest_Assignment getQuestAssignment() {
return assignment;
}
}