/*
* Copyright (C) 2023 NotEnoughUpdates contributors
*
* This file is part of NotEnoughUpdates.
*
* NotEnoughUpdates is free software: you can redistribute it
* and/or modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation, either
* version 3 of the License, or (at your option) any later version.
*
* NotEnoughUpdates is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with NotEnoughUpdates. If not, see .
*/
package io.github.moulberry.notenoughupdates.profileviewer.level.task;
import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import io.github.moulberry.notenoughupdates.NotEnoughUpdates;
import io.github.moulberry.notenoughupdates.profileviewer.GuiProfileViewer;
import io.github.moulberry.notenoughupdates.profileviewer.ProfileViewer;
import io.github.moulberry.notenoughupdates.profileviewer.SkyblockProfiles;
import io.github.moulberry.notenoughupdates.profileviewer.level.LevelPage;
import io.github.moulberry.notenoughupdates.profileviewer.weight.weight.Weight;
import io.github.moulberry.notenoughupdates.util.Utils;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
public class DungeonTaskLevel extends GuiTaskLevel {
public DungeonTaskLevel(LevelPage levelPage) {super(levelPage);}
@Override
public void drawTask(JsonObject object, int mouseX, int mouseY, int guiLeft, int guiTop) {
JsonObject dungeonTask = levelPage.getConstant().get("dungeon_task").getAsJsonObject();
SkyblockProfiles.SkyblockProfile selectedProfile = GuiProfileViewer.getSelectedProfile();
if (selectedProfile == null) {
return;
}
Map skyblockInfo = selectedProfile.getLevelingInfo();
int sbLevelGainedFloor = 0;
int sbXpGainedClass = 0;
int sbXpGainedLvl = 0;
int catacombsLvl = 0;
if (skyblockInfo != null && skyblockInfo.containsKey("catacombs")) {
ProfileViewer.Level catacombs = skyblockInfo.get("catacombs");
catacombsLvl = (int) catacombs.level;
for (int i = 1; i <= catacombs.level; i++) {
if (40 > i) {
sbXpGainedLvl += 20;
} else {
sbXpGainedLvl += 40;
}
}
for (String dungeonClass : Weight.DUNGEON_CLASS_NAMES) {
ProfileViewer.Level level = skyblockInfo.get(dungeonClass);
for (int i = 1; i <= level.level; i++) {
if (i <= 50) sbXpGainedClass += dungeonTask.get("class_xp").getAsInt();
}
}
JsonArray completeCatacombs = dungeonTask.get("complete_catacombs").getAsJsonArray();
int index = 0;
for (JsonElement completeCatacomb : completeCatacombs) {
int value = completeCatacomb.getAsInt();
JsonElement normalCompletions = Utils
.getElementOrDefault(object, "dungeons.dungeon_types.catacombs.tier_completions", null);
if (normalCompletions != null && normalCompletions.getAsJsonObject().has("" + index)) {
sbLevelGainedFloor += value;
}
index++;
}
int masterCatacombs = dungeonTask.get("complete_master_catacombs").getAsInt();
for (int i = 0; i <= 7; i++) {
JsonElement masterCompletions = Utils
.getElementOrDefault(object, "dungeons.dungeon_types.master_catacombs.tier_completions", null);
if (masterCompletions != null) {
if (masterCompletions.getAsJsonObject().has("" + i)) {
sbLevelGainedFloor += masterCatacombs;
}
}
}
}
int catacombsLevelUp = dungeonTask.get("catacombs_level_up").getAsInt();
int classLevelUp = dungeonTask.get("class_level_up").getAsInt();
int completeDungeon = dungeonTask.get("complete_dungeon").getAsInt();
int totalGainful = catacombsLevelUp + classLevelUp + completeDungeon;
double totalXp = sbXpGainedLvl + sbXpGainedClass + sbLevelGainedFloor;
List lore = new ArrayList<>();
lore.add(levelPage.buildLore("Catacombs Level Up", sbXpGainedLvl, catacombsLevelUp, false));
lore.add(levelPage.buildLore("Class Level Up", sbXpGainedClass, classLevelUp, false));
lore.add(levelPage.buildLore("Complete Dungeons", sbLevelGainedFloor, completeDungeon, false));
levelPage.renderLevelBar(
"Dungeon Task",
NotEnoughUpdates.INSTANCE.manager
.createItemResolutionQuery()
.withKnownInternalName("WITHER_RELIC")
.resolveToItemStack(),
guiLeft + 23, guiTop + 55,
110,
catacombsLvl,
totalXp,
totalGainful,
mouseX, mouseY,
true,
lore
);
}
}