95 lines
2.0 KiB
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);
|
|
}
|
|
}
|