Implement sending gifts

This commit is contained in:
Melledy
2025-11-21 04:46:11 -08:00
parent be842e4269
commit e5fe89ebc9
7 changed files with 241 additions and 0 deletions
@@ -28,6 +28,9 @@ public class GameData {
@Getter private static DataTable<TalentGroupDef> TalentGroupDataTable = new DataTable<>();
@Getter private static DataTable<TalentDef> TalentDataTable = new DataTable<>();
@Getter private static DataTable<AffinityLevelDef> AffinityLevelDataTable = new DataTable<>();
@Getter private static DataTable<AffinityGiftDef> AffinityGiftDataTable = new DataTable<>();
@Getter private static DataTable<CharGemDef> CharGemDataTable = new DataTable<>();
@Getter private static DataTable<CharGemSlotControlDef> CharGemSlotControlDataTable = new DataTable<>();
@Getter private static DataTable<CharGemAttrGroupDef> CharGemAttrGroupDataTable = new DataTable<>();
@@ -0,0 +1,20 @@
package emu.nebula.data.resources;
import emu.nebula.data.BaseDef;
import emu.nebula.data.ResourceType;
import lombok.Getter;
@Getter
@ResourceType(name = "AffinityGift.json")
public class AffinityGiftDef extends BaseDef {
private int Id;
private int BaseAffinity;
private int[] Tags;
@Override
public int getId() {
return Id;
}
}
@@ -0,0 +1,19 @@
package emu.nebula.data.resources;
import emu.nebula.data.BaseDef;
import emu.nebula.data.ResourceType;
import lombok.Getter;
@Getter
@ResourceType(name = "AffinityLevel.json")
public class AffinityLevelDef extends BaseDef {
private int AffinityLevel;
private int NeedExp;
@Override
public int getId() {
return AffinityLevel;
}
}
@@ -31,6 +31,7 @@ public class CharacterDef extends BaseDef {
private int[] GemSlots;
private transient CharacterDesDef des;
private transient ElementType elementType;
private transient List<ChatDef> chats;
@@ -38,6 +39,10 @@ public class CharacterDef extends BaseDef {
public int getId() {
return Id;
}
protected void setDes(CharacterDesDef des) {
this.des = des;
}
public int getSkillsUpgradeGroup(int index) {
if (index < 0 || index >= this.SkillsUpgradeGroup.length) {
@@ -0,0 +1,60 @@
package emu.nebula.data.resources;
import emu.nebula.data.BaseDef;
import emu.nebula.data.GameData;
import emu.nebula.data.ResourceType;
import emu.nebula.data.ResourceType.LoadPriority;
import it.unimi.dsi.fastutil.ints.IntOpenHashSet;
import lombok.Getter;
@Getter
@ResourceType(name = "CharacterDes.json", loadPriority = LoadPriority.LOW)
public class CharacterDesDef extends BaseDef {
private int Id;
private int[] Tag;
private IntOpenHashSet PreferTags;
private IntOpenHashSet HateTags;
@Override
public int getId() {
return Id;
}
public boolean isPreferGift(AffinityGiftDef gift) {
if (this.getPreferTags() == null) {
return false;
}
for (int i = 0; i < gift.getTags().length; i++) {
int tag = gift.getTags()[i];
if (this.getPreferTags().contains(tag)) {
return true;
}
}
return false;
}
public boolean isHateGift(AffinityGiftDef gift) {
if (this.getHateTags() == null) {
return false;
}
for (int i = 0; i < gift.getTags().length; i++) {
int tag = gift.getTags()[i];
if (this.getHateTags().contains(tag)) {
return true;
}
}
return false;
}
@Override
public void onLoad() {
var character = GameData.getCharacterDataTable().get(this.getId());
if (character != null) {
character.setDes(this);
}
}
}