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);
        }
    }
}
