/*
 * Derived from Epic Fight (https://github.com/Epic-Fight/epicfight)
 * by the Epic Fight Team, licensed under GPLv3.
 * Modifications © 2026 TiedUp! Remake Contributors, distributed under GPLv3.
 */

package com.tiedup.remake.rig.mesh;

import java.util.List;
import java.util.Map;

import net.minecraft.world.entity.EquipmentSlot;
import com.tiedup.remake.rig.asset.AssetAccessor;
import com.tiedup.remake.rig.mesh.MeshPartDefinition;
import com.tiedup.remake.rig.mesh.Meshes;
import com.tiedup.remake.rig.mesh.SkinnedMesh;
import com.tiedup.remake.rig.mesh.VertexBuilder;

public class HumanoidMesh extends SkinnedMesh {
	public final SkinnedMeshPart head;
	public final SkinnedMeshPart torso;
	public final SkinnedMeshPart leftArm;
	public final SkinnedMeshPart rightArm;
	public final SkinnedMeshPart leftLeg;
	public final SkinnedMeshPart rightLeg;
	public final SkinnedMeshPart hat;
	public final SkinnedMeshPart jacket;
	public final SkinnedMeshPart leftSleeve;
	public final SkinnedMeshPart rightSleeve;
	public final SkinnedMeshPart leftPants;
	public final SkinnedMeshPart rightPants;
	
	public HumanoidMesh(Map<String, Number[]> arrayMap, Map<MeshPartDefinition, List<VertexBuilder>> parts, SkinnedMesh parent, RenderProperties properties) {
		super(arrayMap, parts, parent, properties);
		
		this.head = this.getOrLogException(this.parts, "head");
		this.torso = this.getOrLogException(this.parts, "torso");
		this.leftArm = this.getOrLogException(this.parts, "leftArm");
		this.rightArm = this.getOrLogException(this.parts, "rightArm");
		this.leftLeg = this.getOrLogException(this.parts, "leftLeg");
		this.rightLeg = this.getOrLogException(this.parts, "rightLeg");
		
		this.hat = this.getOrLogException(this.parts, "hat");
		this.jacket = this.getOrLogException(this.parts, "jacket");
		this.leftSleeve = this.getOrLogException(this.parts, "leftSleeve");
		this.rightSleeve = this.getOrLogException(this.parts, "rightSleeve");
		this.leftPants = this.getOrLogException(this.parts, "leftPants");
		this.rightPants = this.getOrLogException(this.parts, "rightPants");
	}
	
	public AssetAccessor<? extends SkinnedMesh> getHumanoidArmorModel(EquipmentSlot slot) {
		// RIG : Meshes.{HELMET,CHESTPLATE,LEGGINS,BOOTS} strippés en Phase 0 (armor rendering
		// hors scope bondage V1). Re-implém Phase 2 si besoin de rendre armures vanilla
		// sur le rig — pour l'instant retour null = armor rendering off.
		return null;
	}
}
