package com.newhive.scammerradar.tag;

import com.newhive.scammerradar.ScammerRadarAddon;
import com.newhive.scammerradar.classes.CheckResult;
import com.newhive.scammerradar.config.ScammerRadarConfig;
import com.newhive.scammerradar.enums.ListEnum;
import com.newhive.scammerradar.helper.subhelper.IconSubHelper;
import net.labymod.api.client.entity.player.badge.renderer.BadgeRenderer;
import net.labymod.api.client.gui.screen.ScreenContext;
import net.labymod.api.client.network.NetworkPlayerInfo;
import org.jetbrains.annotations.Nullable;

public class PlayerTabBadge extends BadgeRenderer {
   ScammerRadarAddon addon;

   public PlayerTabBadge(ScammerRadarAddon addon) {
      this.addon = addon;
   }

   public void render(ScreenContext context, float x, float y, NetworkPlayerInfo player) {
      CheckResult res = this.visibleRank(player);
      if (res != null) {
         if (res.getVisibleTag().equals(ListEnum.SCAMMERRADAR)) {
            context.canvas().submitIcon(IconSubHelper.Tags.SCAMMER, x, y, 8.0F, 8.0F);
         }

         if (res.getVisibleTag().equals(ListEnum.PRIVATE)) {
            context.canvas().submitIcon(IconSubHelper.Tags.PRIVATE, x, y, 8.0F, 8.0F);
         }

         if (res.getVisibleTag().equals(ListEnum.MM)) {
            context.canvas().submitIcon(IconSubHelper.Tags.MM, x, y, 8.0F, 8.0F);
         }

      }
   }

   protected boolean isVisible(NetworkPlayerInfo player) {
      return this.visibleRank(player) != null;
   }

   private @Nullable CheckResult visibleRank(NetworkPlayerInfo player) {
      if (!(Boolean)((ScammerRadarConfig)this.addon.configuration()).tabBadge().get()) {
         return null;
      } else if (!(Boolean)((ScammerRadarConfig)this.addon.configuration()).enabled().get()) {
         return null;
      } else if (player.profile().getUsername().startsWith("!")) {
         return this.addon.getHelper().getPlayerObject(player.profile().getUsername());
      } else {
         return player.profile().getUniqueId() == null ? null : this.addon.getHelper().getPlayerObject(player.profile().getUniqueId());
      }
   }
}
