package letzplay.core; import java.util.ArrayList; import java.util.List; public class Quest implements Trigger { private String title; private String description; private List taskList; private int minLvl; private float gainExp; private boolean finished; private List triggers; public Quest(String title, String description, int minLvl, float gainExp) { this.title = title; this.description = description; this.minLvl = minLvl; this.gainExp = gainExp; taskList = new ArrayList<>(); triggers = new ArrayList<>(); finished = false; } public void addTask(Task task) { addTrigger(task.getTrigger()); taskList.add(task); } public void addTask(List tasks) { for (Task t : tasks) { addTask(t); } } public Progression progression() { int done = 0; for (Task task : taskList) { if (task.isDone()) { done++; } } return new Progression(done, taskList.size()); } public String getTitle() { return title; } public String getDescription() { return description; } public List getTaskList() { return taskList; } public int getMinLvl() { return minLvl; } public float getGainExp() { return gainExp; } public void setFinished() { finished = true; } public boolean finished() { return finished; } @Override public String toString() { return title + ": " + progression().toString() + "\n" + description + "\nTasks: " + taskList.toString() + "\n"; } @Override public void trigger(String msg) { if (triggers.contains(msg)) { for (Task t : taskList) { t.trigger(msg); } } } private void addTrigger(String trigger) { triggers.add(trigger); } }