mirror of
https://github.com/OMGeeky/andors-trail.git
synced 2026-02-23 15:38:29 +01:00
Merge branch 'queststepsort' into nut_test_fungi
This commit is contained in:
@@ -2,6 +2,7 @@ package com.gpl.rpg.AndorsTrail.activity.fragment;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.LinkedHashSet;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
@@ -21,6 +22,7 @@ import com.gpl.rpg.AndorsTrail.context.WorldContext;
|
||||
import com.gpl.rpg.AndorsTrail.model.actor.Player;
|
||||
import com.gpl.rpg.AndorsTrail.model.quest.Quest;
|
||||
import com.gpl.rpg.AndorsTrail.model.quest.QuestLogEntry;
|
||||
import com.gpl.rpg.AndorsTrail.model.quest.QuestProgress;
|
||||
import com.gpl.rpg.AndorsTrail.view.SpinnerEmulator;
|
||||
|
||||
public final class HeroinfoActivity_Quests extends Fragment {
|
||||
@@ -144,12 +146,16 @@ public final class HeroinfoActivity_Quests extends Fragment {
|
||||
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);
|
||||
for(Integer progress : player.getQuestProgress(q.questID)) {
|
||||
for(QuestLogEntry e : q.stages) {
|
||||
if (e.progress == progress.intValue()) {
|
||||
if (e.logtext.length() > 0) {
|
||||
item = new HashMap<String, Object>();
|
||||
item.put(mn_logText, e.logtext);
|
||||
logItemList.add(item);
|
||||
}
|
||||
continue;
|
||||
}
|
||||
}
|
||||
}
|
||||
childList.add(logItemList);
|
||||
|
||||
@@ -9,6 +9,8 @@ import java.util.Collections;
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.LinkedHashSet;
|
||||
import java.util.List;
|
||||
import java.util.Map.Entry;
|
||||
import java.util.UUID;
|
||||
|
||||
@@ -47,13 +49,15 @@ public final class Player extends Actor {
|
||||
public int totalExperience;
|
||||
public final Range weaponDamage = new Range();
|
||||
|
||||
private final LinkedHashMap<String, HashSet<Integer> > questProgress = new LinkedHashMap<String, HashSet<Integer> >();
|
||||
private final LinkedHashMap<String, LinkedHashSet<Integer>> questProgress = new LinkedHashMap<String, LinkedHashSet<Integer> >();
|
||||
private String spawnMap;
|
||||
private String spawnPlace;
|
||||
private final HashMap<String, Integer> alignments = new HashMap<String, Integer>();
|
||||
public String id = UUID.randomUUID().toString();
|
||||
public long savedVersion = 1; // the version get's increased for cheat detection everytime a player with limited saves is saved
|
||||
|
||||
|
||||
|
||||
// Unequipped stats
|
||||
public static final class PlayerBaseTraits {
|
||||
public int iconID;
|
||||
@@ -157,9 +161,13 @@ public final class Player extends Actor {
|
||||
}
|
||||
return true;
|
||||
}
|
||||
public Integer[] getQuestProgress(String questID) {
|
||||
if (!questProgress.containsKey(questID)) return new Integer[] {};
|
||||
return questProgress.get(questID).toArray(new Integer[questProgress.get(questID).size()]);
|
||||
}
|
||||
public boolean addQuestProgress(QuestProgress progress) {
|
||||
if (hasExactQuestProgress(progress.questID, progress.progress)) return false;
|
||||
if (!questProgress.containsKey(progress.questID)) questProgress.put(progress.questID, new HashSet<Integer>());
|
||||
if (!questProgress.containsKey(progress.questID)) questProgress.put(progress.questID, new LinkedHashSet<Integer>());
|
||||
questProgress.get(progress.questID).add(progress.progress);
|
||||
return true; //Progress was added.
|
||||
}
|
||||
@@ -353,22 +361,34 @@ public final class Player extends Actor {
|
||||
this.spawnPlace = src.readUTF();
|
||||
|
||||
if (fileversion > 13) {
|
||||
LinkedHashMap<String, HashSet<Integer> > questProgress = new LinkedHashMap<String, HashSet<Integer> >();
|
||||
LinkedHashMap<String, LinkedHashSet<Integer> > questProgress = new LinkedHashMap<String, LinkedHashSet<Integer> >();
|
||||
final int numQuests = src.readInt();
|
||||
for(int i = 0; i < numQuests; ++i) {
|
||||
final String questID = src.readUTF();
|
||||
questProgress.put(questID, new HashSet<Integer>());
|
||||
questProgress.put(questID, new LinkedHashSet<Integer>());
|
||||
final int numProgress = src.readInt();
|
||||
for(int j = 0; j < numProgress; ++j) {
|
||||
int progress = src.readInt();
|
||||
questProgress.get(questID).add(progress);
|
||||
|
||||
// queststeps are randomly sorted until 56 so sort it by ID
|
||||
if (fileversion < 56) {
|
||||
List<Integer> steps = new ArrayList<Integer>();
|
||||
for (int j = 0; j < numProgress; ++j) {
|
||||
int progress = src.readInt();
|
||||
steps.add(progress);
|
||||
}
|
||||
Collections.sort(steps);
|
||||
questProgress.get(questID).addAll(steps);
|
||||
} else {
|
||||
for (int j = 0; j < numProgress; ++j) {
|
||||
int progress = src.readInt();
|
||||
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);
|
||||
final LinkedHashSet<Integer> questSteps = questProgress.get(q.questID);
|
||||
if (questSteps != null) {
|
||||
this.questProgress.put(q.questID, questSteps);
|
||||
}
|
||||
@@ -440,7 +460,7 @@ public final class Player extends Actor {
|
||||
dest.writeUTF(spawnMap);
|
||||
dest.writeUTF(spawnPlace);
|
||||
dest.writeInt(questProgress.size());
|
||||
for(Entry<String, HashSet<Integer> > e : questProgress.entrySet()) {
|
||||
for(Entry<String, LinkedHashSet<Integer> > e : questProgress.entrySet()) {
|
||||
dest.writeUTF(e.getKey());
|
||||
dest.writeInt(e.getValue().size());
|
||||
for(int progress : e.getValue()) {
|
||||
|
||||
Reference in New Issue
Block a user