Delete quests from the player if there are errors loading them from the db

This commit is contained in:
Melledy 2022-08-21 22:19:34 -07:00
parent c53697da82
commit 1e649cd804
No known key found for this signature in database
GPG Key ID: 2A8E7A1D64737CCB
3 changed files with 19 additions and 3 deletions

View File

@ -346,6 +346,10 @@ public class GameMainQuest {
public void save() {
DatabaseHelper.saveQuest(this);
}
public void delete() {
DatabaseHelper.deleteQuest(this);
}
public ParentQuest toProto() {
ParentQuest.Builder proto = ParentQuest.newBuilder()

View File

@ -181,6 +181,7 @@ public class GameQuest {
}
return false;
}
public void save() {
getMainQuest().save();
}

View File

@ -313,16 +313,27 @@ public class QuestManager extends BasePlayerManager {
}
public void loadFromDatabase() {
List<GameMainQuest> quests = DatabaseHelper.getAllQuests(getPlayer());
for (GameMainQuest mainQuest : quests) {
boolean cancelAdd = false;
mainQuest.setOwner(this.getPlayer());
for (GameQuest quest : mainQuest.getChildQuests().values()) {
QuestData questConfig = GameData.getQuestDataMap().get(quest.getSubQuestId());
if (questConfig == null) {
mainQuest.delete();
cancelAdd = true;
break;
}
quest.setMainQuest(mainQuest);
quest.setConfig(GameData.getQuestDataMap().get(quest.getSubQuestId()));
quest.setConfig(questConfig);
}
this.getMainQuests().put(mainQuest.getParentQuestId(), mainQuest);
if (!cancelAdd) {
this.getMainQuests().put(mainQuest.getParentQuestId(), mainQuest);
}
}
}