mirror of
https://github.com/Melledy/Nebula.git
synced 2026-09-19 17:19:58 +02:00
Add record viewing to boss blitz leaderboard
This commit is contained in:
@@ -67,6 +67,17 @@ public class ItemParamMap extends Int2IntLinkedOpenHashMap implements ObjectBidi
|
|||||||
return params;
|
return params;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ItemParamMap clone() {
|
||||||
|
var map = new ItemParamMap();
|
||||||
|
|
||||||
|
for (var entry : this) {
|
||||||
|
map.put(entry.getIntKey(), entry.getIntValue());
|
||||||
|
}
|
||||||
|
|
||||||
|
return map;
|
||||||
|
}
|
||||||
|
|
||||||
// Iterable
|
// Iterable
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -145,7 +156,7 @@ public class ItemParamMap extends Int2IntLinkedOpenHashMap implements ObjectBidi
|
|||||||
return map;
|
return map;
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
// Static helpers
|
||||||
|
|
||||||
public static ItemParamMap of(int... entries) {
|
public static ItemParamMap of(int... entries) {
|
||||||
// Create
|
// Create
|
||||||
|
|||||||
@@ -10,10 +10,13 @@ import emu.nebula.database.GameDatabaseObject;
|
|||||||
import emu.nebula.game.player.Player;
|
import emu.nebula.game.player.Player;
|
||||||
import emu.nebula.game.tower.StarTowerBuild;
|
import emu.nebula.game.tower.StarTowerBuild;
|
||||||
import emu.nebula.game.character.GameCharacter;
|
import emu.nebula.game.character.GameCharacter;
|
||||||
|
import emu.nebula.game.inventory.ItemParamMap;
|
||||||
import emu.nebula.proto.JointDrillRank.JointDrillRankChar;
|
import emu.nebula.proto.JointDrillRank.JointDrillRankChar;
|
||||||
import emu.nebula.proto.JointDrillRank.JointDrillRankData;
|
import emu.nebula.proto.JointDrillRank.JointDrillRankData;
|
||||||
import emu.nebula.proto.JointDrillRank.JointDrillRankTeam;
|
import emu.nebula.proto.JointDrillRank.JointDrillRankTeam;
|
||||||
import emu.nebula.proto.Public.HonorInfo;
|
import emu.nebula.proto.Public.HonorInfo;
|
||||||
|
import emu.nebula.proto.Public.ItemTpl;
|
||||||
|
import emu.nebula.proto.PublicStarTower.BuildPotential;
|
||||||
import it.unimi.dsi.fastutil.ints.IntOpenHashSet;
|
import it.unimi.dsi.fastutil.ints.IntOpenHashSet;
|
||||||
import it.unimi.dsi.fastutil.ints.IntSet;
|
import it.unimi.dsi.fastutil.ints.IntSet;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
@@ -153,6 +156,10 @@ public class JointDrillRankEntry implements GameDatabaseObject {
|
|||||||
private int damage;
|
private int damage;
|
||||||
private int time;
|
private int time;
|
||||||
private List<JointDrillCharEntry> characters;
|
private List<JointDrillCharEntry> characters;
|
||||||
|
private int[] discs;
|
||||||
|
private ItemParamMap potentials;
|
||||||
|
private ItemParamMap notes;
|
||||||
|
private int[] secondaryIds;
|
||||||
|
|
||||||
@Deprecated // Morphia only
|
@Deprecated // Morphia only
|
||||||
public JointDrillTeamEntry() {
|
public JointDrillTeamEntry() {
|
||||||
@@ -164,6 +171,10 @@ public class JointDrillRankEntry implements GameDatabaseObject {
|
|||||||
this.buildScore = build.getScore();
|
this.buildScore = build.getScore();
|
||||||
this.time = time;
|
this.time = time;
|
||||||
this.damage = damage;
|
this.damage = damage;
|
||||||
|
this.discs = build.getDiscIds();
|
||||||
|
this.potentials = build.getPotentials().clone();
|
||||||
|
this.notes = build.getSubNoteSkills().clone();
|
||||||
|
this.secondaryIds = build.getSecondarySkills().toIntArray();
|
||||||
this.characters = new ArrayList<>();
|
this.characters = new ArrayList<>();
|
||||||
|
|
||||||
for (var charId : build.getCharIds()) {
|
for (var charId : build.getCharIds()) {
|
||||||
@@ -184,6 +195,30 @@ public class JointDrillRankEntry implements GameDatabaseObject {
|
|||||||
proto.addChars(c.toProto());
|
proto.addChars(c.toProto());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Lazy way to add extra info.
|
||||||
|
// Discs, secondary ids, potentials, and notes were all added in the same update,
|
||||||
|
// so we don't need to null check each one individually.
|
||||||
|
if (this.getDiscs() != null) {
|
||||||
|
proto.addAllDiscs(this.getDiscs());
|
||||||
|
proto.addAllActiveSecondaryIds(this.getSecondaryIds());
|
||||||
|
|
||||||
|
for (var pot : this.getPotentials()) {
|
||||||
|
var info = BuildPotential.newInstance()
|
||||||
|
.setPotentialId(pot.getIntKey())
|
||||||
|
.setLevel(pot.getIntValue());
|
||||||
|
|
||||||
|
proto.addPotentials(info);
|
||||||
|
}
|
||||||
|
|
||||||
|
for (var note : this.getNotes()) {
|
||||||
|
var info = ItemTpl.newInstance()
|
||||||
|
.setTid(note.getIntKey())
|
||||||
|
.setQty(note.getIntValue());
|
||||||
|
|
||||||
|
proto.addNotes(info);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return proto;
|
return proto;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12,7 +12,10 @@ import emu.nebula.database.GameDatabaseObject;
|
|||||||
import emu.nebula.game.player.Player;
|
import emu.nebula.game.player.Player;
|
||||||
import emu.nebula.game.tower.StarTowerBuild;
|
import emu.nebula.game.tower.StarTowerBuild;
|
||||||
import emu.nebula.game.character.GameCharacter;
|
import emu.nebula.game.character.GameCharacter;
|
||||||
|
import emu.nebula.game.inventory.ItemParamMap;
|
||||||
import emu.nebula.proto.Public.HonorInfo;
|
import emu.nebula.proto.Public.HonorInfo;
|
||||||
|
import emu.nebula.proto.Public.ItemTpl;
|
||||||
|
import emu.nebula.proto.PublicStarTower.BuildPotential;
|
||||||
import emu.nebula.proto.ScoreBossRank.ScoreBossRankChar;
|
import emu.nebula.proto.ScoreBossRank.ScoreBossRankChar;
|
||||||
import emu.nebula.proto.ScoreBossRank.ScoreBossRankData;
|
import emu.nebula.proto.ScoreBossRank.ScoreBossRankData;
|
||||||
import emu.nebula.proto.ScoreBossRank.ScoreBossRankTeam;
|
import emu.nebula.proto.ScoreBossRank.ScoreBossRankTeam;
|
||||||
@@ -184,6 +187,10 @@ public class ScoreBossRankEntry implements GameDatabaseObject {
|
|||||||
private int levelScore;
|
private int levelScore;
|
||||||
private int skillScore;
|
private int skillScore;
|
||||||
private List<ScoreBossCharEntry> characters;
|
private List<ScoreBossCharEntry> characters;
|
||||||
|
private int[] discs;
|
||||||
|
private ItemParamMap potentials;
|
||||||
|
private ItemParamMap notes;
|
||||||
|
private int[] secondaryIds;
|
||||||
|
|
||||||
@Deprecated // Morphia only
|
@Deprecated // Morphia only
|
||||||
public ScoreBossTeamEntry() {
|
public ScoreBossTeamEntry() {
|
||||||
@@ -196,6 +203,10 @@ public class ScoreBossRankEntry implements GameDatabaseObject {
|
|||||||
this.stars = stars;
|
this.stars = stars;
|
||||||
this.levelScore = score;
|
this.levelScore = score;
|
||||||
this.skillScore = skillScore;
|
this.skillScore = skillScore;
|
||||||
|
this.discs = build.getDiscIds();
|
||||||
|
this.potentials = build.getPotentials().clone();
|
||||||
|
this.notes = build.getSubNoteSkills().clone();
|
||||||
|
this.secondaryIds = build.getSecondarySkills().toIntArray();
|
||||||
this.characters = new ArrayList<>();
|
this.characters = new ArrayList<>();
|
||||||
|
|
||||||
for (var charId : build.getCharIds()) {
|
for (var charId : build.getCharIds()) {
|
||||||
@@ -215,6 +226,30 @@ public class ScoreBossRankEntry implements GameDatabaseObject {
|
|||||||
proto.addChars(c.toProto());
|
proto.addChars(c.toProto());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Lazy way to add extra info.
|
||||||
|
// Discs, secondary ids, potentials, and notes were all added in the same update,
|
||||||
|
// so we don't need to null check each one individually.
|
||||||
|
if (this.getDiscs() != null) {
|
||||||
|
proto.addAllDiscs(this.getDiscs());
|
||||||
|
proto.addAllActiveSecondaryIds(this.getSecondaryIds());
|
||||||
|
|
||||||
|
for (var pot : this.getPotentials()) {
|
||||||
|
var info = BuildPotential.newInstance()
|
||||||
|
.setPotentialId(pot.getIntKey())
|
||||||
|
.setLevel(pot.getIntValue());
|
||||||
|
|
||||||
|
proto.addPotentials(info);
|
||||||
|
}
|
||||||
|
|
||||||
|
for (var note : this.getNotes()) {
|
||||||
|
var info = ItemTpl.newInstance()
|
||||||
|
.setTid(note.getIntKey())
|
||||||
|
.setQty(note.getIntValue());
|
||||||
|
|
||||||
|
proto.addNotes(info);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return proto;
|
return proto;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user