letzplay/src/main/java/letzplay/core/Quest.java

95 lines
2.0 KiB
Java

package letzplay.core;
import java.util.ArrayList;
import java.util.List;
public class Quest implements Trigger {
private String title;
private String description;
private List<Task> taskList;
private int minLvl;
private float gainExp;
private boolean finished;
private List<String> 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<Task> 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<Task> 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);
}
}