mirror of
https://github.com/OMGeeky/andors-trail.git
synced 2026-02-23 15:38:29 +01:00
Merge branch 'questsort' into nut_test_brimhaven
This commit is contained in:
@@ -116,43 +116,43 @@ public final class HeroinfoActivity_Quests extends Fragment {
|
||||
groupList.clear();
|
||||
childList.clear();
|
||||
|
||||
for (Quest q : world.quests.getAllQuests()) {
|
||||
for (String questProgressID : player.getAllQuestProgressIDs()) {
|
||||
Quest q = world.quests.getQuest(questProgressID);
|
||||
if (q == null) continue; // This should not happen
|
||||
if (!q.showInLog) continue; // Do not show
|
||||
if (player.hasAnyQuestProgress(q.questID)) {
|
||||
boolean isCompleted = q.isCompleted(player);
|
||||
boolean isCompleted = q.isCompleted(player);
|
||||
|
||||
int v = world.model.uiSelections.selectedQuestFilter;
|
||||
if (v == 0) { // Active quests
|
||||
if (isCompleted) continue;
|
||||
} else if (v == 1) { // All quests
|
||||
// Always show.
|
||||
} else if (v == 2) { // Completed quests
|
||||
if (!isCompleted) continue;
|
||||
}
|
||||
|
||||
int statusResId;
|
||||
if (isCompleted) {
|
||||
statusResId = R.string.questlog_queststatus_completed;
|
||||
} else {
|
||||
statusResId = R.string.questlog_queststatus_inprogress;
|
||||
}
|
||||
|
||||
Map<String, Object> item = new HashMap<String, Object>();
|
||||
item.put(mn_questName, q.name);
|
||||
item.put(mn_questStatus, getString(R.string.questlog_queststatus, getString(statusResId)));
|
||||
groupList.add(item);
|
||||
|
||||
List<Map<String, ?>> logItemList = new ArrayList<Map<String, ?>>();
|
||||
for (QuestLogEntry e : q.stages) {
|
||||
if (e.logtext.length() <= 0) continue; // Do not show if displaytext is empty.
|
||||
if (player.hasExactQuestProgress(q.questID, e.progress)) {
|
||||
item = new HashMap<String, Object>();
|
||||
item.put(mn_logText, e.logtext);
|
||||
logItemList.add(item);
|
||||
}
|
||||
}
|
||||
childList.add(logItemList);
|
||||
int v = world.model.uiSelections.selectedQuestFilter;
|
||||
if (v == 0) { // Active quests
|
||||
if (isCompleted) continue;
|
||||
} else if (v == 1) { // All quests
|
||||
// Always show.
|
||||
} else if (v == 2) { // Completed quests
|
||||
if (!isCompleted) continue;
|
||||
}
|
||||
|
||||
int statusResId;
|
||||
if (isCompleted) {
|
||||
statusResId = R.string.questlog_queststatus_completed;
|
||||
} else {
|
||||
statusResId = R.string.questlog_queststatus_inprogress;
|
||||
}
|
||||
|
||||
Map<String, Object> item = new HashMap<String, Object>();
|
||||
item.put(mn_questName, q.name);
|
||||
item.put(mn_questStatus, getString(R.string.questlog_queststatus, getString(statusResId)));
|
||||
groupList.add(item);
|
||||
|
||||
List<Map<String, ?>> logItemList = new ArrayList<Map<String, ?>>();
|
||||
for (QuestLogEntry e : q.stages) {
|
||||
if (e.logtext.length() <= 0) continue; // Do not show if displaytext is empty.
|
||||
if (player.hasExactQuestProgress(q.questID, e.progress)) {
|
||||
item = new HashMap<String, Object>();
|
||||
item.put(mn_logText, e.logtext);
|
||||
logItemList.add(item);
|
||||
}
|
||||
}
|
||||
childList.add(logItemList);
|
||||
}
|
||||
questlog_contents_adapter.notifyDataSetChanged();
|
||||
}
|
||||
|
||||
@@ -3,8 +3,12 @@ package com.gpl.rpg.AndorsTrail.model.actor;
|
||||
import java.io.DataInputStream;
|
||||
import java.io.DataOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.Map.Entry;
|
||||
import java.util.UUID;
|
||||
|
||||
@@ -19,6 +23,7 @@ import com.gpl.rpg.AndorsTrail.model.ability.SkillCollection;
|
||||
import com.gpl.rpg.AndorsTrail.model.item.DropListCollection;
|
||||
import com.gpl.rpg.AndorsTrail.model.item.Inventory;
|
||||
import com.gpl.rpg.AndorsTrail.model.item.Loot;
|
||||
import com.gpl.rpg.AndorsTrail.model.quest.Quest;
|
||||
import com.gpl.rpg.AndorsTrail.model.quest.QuestProgress;
|
||||
import com.gpl.rpg.AndorsTrail.savegames.LegacySavegameFormatReaderForPlayer;
|
||||
import com.gpl.rpg.AndorsTrail.util.Coord;
|
||||
@@ -42,7 +47,7 @@ public final class Player extends Actor {
|
||||
public int totalExperience;
|
||||
public final Range weaponDamage = new Range();
|
||||
|
||||
private final HashMap<String, HashSet<Integer> > questProgress = new HashMap<String, HashSet<Integer> >();
|
||||
private final LinkedHashMap<String, HashSet<Integer> > questProgress = new LinkedHashMap<String, HashSet<Integer> >();
|
||||
private String spawnMap;
|
||||
private String spawnPlace;
|
||||
private final HashMap<String, Integer> alignments = new HashMap<String, Integer>();
|
||||
@@ -141,6 +146,9 @@ public final class Player extends Actor {
|
||||
public boolean hasAnyQuestProgress(String questID) {
|
||||
return questProgress.containsKey(questID);
|
||||
}
|
||||
public Collection<String> getAllQuestProgressIDs() {
|
||||
return new ArrayList<>(this.questProgress.keySet());
|
||||
}
|
||||
public boolean isLatestQuestProgress(String questID, int progress) {
|
||||
if (!questProgress.containsKey(questID)) return false;
|
||||
if (!questProgress.get(questID).contains(progress)) return false;
|
||||
@@ -345,16 +353,30 @@ public final class Player extends Actor {
|
||||
this.spawnPlace = src.readUTF();
|
||||
|
||||
if (fileversion > 13) {
|
||||
LinkedHashMap<String, HashSet<Integer> > questProgress = new LinkedHashMap<String, HashSet<Integer> >();
|
||||
final int numQuests = src.readInt();
|
||||
for(int i = 0; i < numQuests; ++i) {
|
||||
final String questID = src.readUTF();
|
||||
this.questProgress.put(questID, new HashSet<Integer>());
|
||||
questProgress.put(questID, new HashSet<Integer>());
|
||||
final int numProgress = src.readInt();
|
||||
for(int j = 0; j < numProgress; ++j) {
|
||||
int progress = src.readInt();
|
||||
this.questProgress.get(questID).add(progress);
|
||||
questProgress.get(questID).add(progress);
|
||||
}
|
||||
}
|
||||
|
||||
// questprogress is randomly sorted until 52 so sort it by quest order
|
||||
if (fileversion < 52) {
|
||||
for (Quest q : world.quests.getAllQuests()) {
|
||||
final HashSet<Integer> questSteps = questProgress.get(q.questID);
|
||||
if (questSteps != null) {
|
||||
this.questProgress.put(q.questID, questSteps);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
this.questProgress.putAll(questProgress);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
this.availableSkillIncreases = 0;
|
||||
|
||||
@@ -47,11 +47,6 @@ public final class Quest implements Comparable<Quest> {
|
||||
|
||||
@Override
|
||||
public int compareTo(Quest q) {
|
||||
|
||||
int comp = name.compareTo(q.name);
|
||||
if (comp == 0) {
|
||||
comp = sortOrder - q.sortOrder;
|
||||
}
|
||||
return comp;
|
||||
return sortOrder - q.sortOrder;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user