mirror of
https://github.com/Melledy/Grasscutter.git
synced 2024-12-05 03:03:31 +00:00
95 lines
3.7 KiB
Java
95 lines
3.7 KiB
Java
package emu.grasscutter.server.packet.send;
|
|
|
|
import java.util.Collections;
|
|
|
|
import emu.grasscutter.data.GameData;
|
|
import emu.grasscutter.game.player.Player;
|
|
import emu.grasscutter.net.packet.BasePacket;
|
|
import emu.grasscutter.net.packet.PacketOpcodes;
|
|
import emu.grasscutter.net.proto.CodexDataFullNotifyOuterClass.CodexDataFullNotify;
|
|
import emu.grasscutter.net.proto.CodexTypeDataOuterClass.CodexTypeData;
|
|
|
|
public class PacketCodexDataFullNotify extends BasePacket {
|
|
public PacketCodexDataFullNotify(Player player) {
|
|
super(PacketOpcodes.CodexDataFullNotify, true);
|
|
|
|
//Quests
|
|
CodexTypeData.Builder questTypeData = CodexTypeData.newBuilder()
|
|
.setTypeValue(1);
|
|
|
|
//Weapons
|
|
CodexTypeData.Builder weaponTypeData = CodexTypeData.newBuilder()
|
|
.setTypeValue(2);
|
|
|
|
//Animals
|
|
CodexTypeData.Builder animalTypeData = CodexTypeData.newBuilder()
|
|
.setTypeValue(3);
|
|
|
|
//Materials
|
|
CodexTypeData.Builder materialTypeData = CodexTypeData.newBuilder()
|
|
.setTypeValue(4);
|
|
|
|
//Books
|
|
CodexTypeData.Builder bookTypeData = CodexTypeData.newBuilder()
|
|
.setTypeValue(5);
|
|
|
|
//Tips
|
|
CodexTypeData.Builder pushTipsTypeData = CodexTypeData.newBuilder()
|
|
.setTypeValue(6);
|
|
|
|
//Views
|
|
CodexTypeData.Builder viewTypeData = CodexTypeData.newBuilder()
|
|
.setTypeValue(7);
|
|
|
|
//Reliquary
|
|
CodexTypeData.Builder reliquaryData = CodexTypeData.newBuilder()
|
|
.setTypeValue(8);
|
|
|
|
player.getQuestManager().forEachMainQuest(mainQuest -> {
|
|
if(mainQuest.isFinished()){
|
|
var codexQuest = GameData.getCodexQuestDataIdMap().get(mainQuest.getParentQuestId());
|
|
if(codexQuest != null){
|
|
questTypeData.addCodexIdList(codexQuest.getId()).addAllHaveViewedList(Collections.singleton(true));
|
|
}
|
|
}
|
|
});
|
|
|
|
player.getCodex().getUnlockedWeapon().forEach(weapon -> {
|
|
var codexWeapon = GameData.getCodexWeaponDataIdMap().get(weapon);
|
|
if(codexWeapon != null){
|
|
weaponTypeData.addCodexIdList(codexWeapon.getId()).addAllHaveViewedList(Collections.singleton(true));
|
|
}
|
|
});
|
|
|
|
player.getCodex().getUnlockedAnimal().forEach((animal, amount) -> {
|
|
var codexAnimal = GameData.getCodexAnimalDataMap().get(animal);
|
|
if(codexAnimal != null){
|
|
animalTypeData.addCodexIdList(codexAnimal.getId()).addAllHaveViewedList(Collections.singleton(true));
|
|
}
|
|
});
|
|
|
|
player.getCodex().getUnlockedMaterial().forEach(material -> {
|
|
var codexMaterial = GameData.getCodexMaterialDataIdMap().get(material);
|
|
if(codexMaterial != null){
|
|
materialTypeData.addCodexIdList(codexMaterial.getId()).addAllHaveViewedList(Collections.singleton(true));
|
|
}
|
|
});
|
|
|
|
player.getCodex().getUnlockedReliquarySuitCodex().forEach(reliquarySuit -> {
|
|
reliquaryData.addCodexIdList(reliquarySuit).addAllHaveViewedList(Collections.singleton(true));
|
|
});
|
|
|
|
CodexDataFullNotify.Builder proto = CodexDataFullNotify.newBuilder()
|
|
.addTypeDataList(questTypeData.build())
|
|
.addTypeDataList(weaponTypeData)
|
|
.addTypeDataList(animalTypeData)
|
|
.addTypeDataList(materialTypeData)
|
|
.addTypeDataList(bookTypeData)
|
|
.addTypeDataList(pushTipsTypeData.build())
|
|
.addTypeDataList(viewTypeData.build())
|
|
.addTypeDataList(reliquaryData);
|
|
|
|
this.setData(proto);
|
|
}
|
|
}
|