tcr/java/src/game/entity/npc/CharacterInfo.java
2025-03-12 18:13:11 +01:00

62 lines
No EOL
1.6 KiB
Java
Executable file

package game.entity.npc;
import game.init.SpeciesRegistry;
import game.item.ItemStack;
import game.item.RngLoot;
import game.rng.Random;
import game.rng.WeightedList;
public class CharacterInfo {
public final boolean spawner;
public final SpeciesInfo species;
public final ClassInfo spclass;
public final String name;
public final String skin;
public final String cape;
public final int color1;
public final int color2;
private final WeightedList<RngLoot>[] items;
public CharacterInfo(SpeciesInfo species, ClassInfo spclass, String name, String skin, String cape, int color1, int color2, boolean spawner) {
this.spawner = spawner; // ? SpeciesRegistry.CHARACTERS.size() : -1;
this.species = species;
this.spclass = spclass;
this.name = name;
this.skin = skin;
this.cape = cape;
this.color1 = color1;
this.color2 = color2;
this.items = new WeightedList[6];
for(int z = 0; z < this.items.length; z++) {
this.items[z] = new WeightedList();
}
SpeciesRegistry.SKINS.put(skin, species.renderer);
if(!cape.isEmpty()) {
SpeciesRegistry.CAPES.add(cape);
}
if(spclass != null)
spclass.chars.add(this);
// if(spawner)
// SpeciesRegistry.CHARACTERS.add(this);
}
public WeightedList<RngLoot>[] getItems() {
return this.items;
}
public ItemStack pickItem(int slot, Random rand) {
WeightedList<RngLoot> list = this.items[slot];
if(list.isEmpty()) {
if(this.spclass != null) {
list = this.spclass.getItems()[slot];
}
if(this.spclass == null || list.isEmpty()) {
list = this.species.getItems()[slot];
if(list.isEmpty()) {
return null;
}
}
}
return list.pick(rand).getItem(rand);
}
}