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