mirror of
https://github.com/Melledy/Nebula.git
synced 2025-12-12 12:24:35 +01:00
Refactor quest manager stuff
This commit is contained in:
@@ -33,7 +33,6 @@ public class QuestManager extends PlayerManager implements GameDatabaseObject {
|
||||
private int uid;
|
||||
|
||||
// Daily activity missions
|
||||
private int activity;
|
||||
private IntSet claimedActiveIds;
|
||||
|
||||
// Quests
|
||||
@@ -71,6 +70,29 @@ public class QuestManager extends PlayerManager implements GameDatabaseObject {
|
||||
Nebula.getGameDatabase().update(this, this.getUid(), "levelRewards", this.levelRewards);
|
||||
}
|
||||
|
||||
public synchronized int getActivity() {
|
||||
int activity = 0;
|
||||
|
||||
for (var quest : getQuests().values()) {
|
||||
if (quest.getType() != QuestType.Daily) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (!quest.isClaimed()) {
|
||||
continue;
|
||||
}
|
||||
|
||||
var data = GameData.getDailyQuestDataTable().get(quest.getId());
|
||||
if (data == null) {
|
||||
continue;
|
||||
}
|
||||
|
||||
activity += data.getActive();
|
||||
}
|
||||
|
||||
return activity;
|
||||
}
|
||||
|
||||
public synchronized void resetDailyQuests() {
|
||||
// Reset daily quests
|
||||
for (var data : GameData.getDailyQuestDataTable()) {
|
||||
@@ -85,9 +107,7 @@ public class QuestManager extends PlayerManager implements GameDatabaseObject {
|
||||
}
|
||||
|
||||
// Reset activity
|
||||
this.activity = 0;
|
||||
this.claimedActiveIds.clear();
|
||||
|
||||
this.hasDailyReward = true;
|
||||
|
||||
// Persist to database
|
||||
@@ -164,9 +184,6 @@ public class QuestManager extends PlayerManager implements GameDatabaseObject {
|
||||
if (data != null) {
|
||||
// Add reward data
|
||||
this.getPlayer().getInventory().addItem(data.getItemTid(), data.getItemQty(), change);
|
||||
|
||||
// Add activity
|
||||
this.activity += data.getActive();
|
||||
}
|
||||
|
||||
// Set claimed
|
||||
@@ -176,9 +193,6 @@ public class QuestManager extends PlayerManager implements GameDatabaseObject {
|
||||
Nebula.getGameDatabase().update(this, this.getUid(), "quests." + quest.getId(), quest);
|
||||
}
|
||||
|
||||
// Update in database
|
||||
Nebula.getGameDatabase().update(this, this.getUid(), "activity", this.getActivity());
|
||||
|
||||
// Trigger quest
|
||||
this.getPlayer().triggerQuest(QuestCondType.QuestWithSpecificType, claimList.size(), QuestType.Daily);
|
||||
|
||||
@@ -191,13 +205,15 @@ public class QuestManager extends PlayerManager implements GameDatabaseObject {
|
||||
var claimList = new IntArrayList();
|
||||
var rewards = new ItemParamMap();
|
||||
|
||||
int activity = this.getActivity();
|
||||
|
||||
// Get claimable
|
||||
for (var data : GameData.getDailyQuestActiveDataTable()) {
|
||||
if (this.getClaimedActiveIds().contains(data.getId())) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (this.getActivity() >= data.getActive()) {
|
||||
if (activity >= data.getActive()) {
|
||||
// Add rewards
|
||||
rewards.add(data.getRewards());
|
||||
|
||||
@@ -304,10 +320,12 @@ public class QuestManager extends PlayerManager implements GameDatabaseObject {
|
||||
quests.addList(quest.toProto());
|
||||
}
|
||||
|
||||
// Set claimed activity ids
|
||||
for (int id : this.getClaimedActiveIds()) {
|
||||
proto.addDailyActiveIds(id);
|
||||
}
|
||||
|
||||
// Set world level rewards
|
||||
proto.getMutableState()
|
||||
.getMutableWorldClassReward()
|
||||
.setFlag(this.getLevelRewards().toBigEndianByteArray());
|
||||
|
||||
Reference in New Issue
Block a user