using Ravenfield.Data;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

namespace Ravenfield.Trigger
{
    [AddComponentMenu("Trigger/Actor/Trigger Change Actor Skin")]
    [TriggerDoc("When triggered, Sets a skin on the target actor or team")]
    public partial class TriggerChangeActorSkin : TriggerReceiver
    {
        public enum Target
        {
            AllActorsOnTeam,
            Actor,
            SquadMembers,
            SkinnedMeshRenderer,
        }

        public enum SkinSource
        {
            SpecificSkin,
            SpecificTeamSkin,
            CopyFromActor,
        }

        public enum SubSkinType
        {
            Character,
            FirstPersonArms,
            FirstPersonLeg,
        }

        public SkinSource source;

        [ConditionalField("source", SkinSource.SpecificSkin)]
        public ActorSkinData skin;

        [ConditionalField("source", SkinSource.SpecificTeamSkin)]
        public Team sourceTeam;

        [ConditionalField("source", SkinSource.CopyFromActor)]
        public ActorReference sourceActor;


        public Target target;

        [ConditionalField("target", Target.SkinnedMeshRenderer, Target.AllActorsOnTeam)]
        public Team targetTeam;

        [ConditionalField("target", Target.SquadMembers)]
        public SquadReference targetSquad;

        [ConditionalField("target", Target.Actor)]
        public ActorReference targetActor;

        [ConditionalField("target", Target.SkinnedMeshRenderer)]
        public SkinnedMeshRenderer skinnedMeshRenderer;

        [ConditionalField("target", Target.SkinnedMeshRenderer)]
        public SubSkinType subSkin;
    }
}
