using NewHorizons.External.SerializableData;
using Newtonsoft.Json;
using System;
using System.ComponentModel;
namespace NewHorizons.External.Modules.Props.Dialogue
{
[JsonObject]
public class DialogueInfo : GeneralPointPropInfo
{
///
/// Prevents the dialogue from being created after a specific persistent condition is set. Useful for remote dialogue
/// triggers that you want to have happen only once.
///
public string blockAfterPersistentCondition;
///
/// If a pathToAnimController is supplied, if you are within this distance the character will look at you. If it is set
/// to 0, they will only look at you when spoken to.
///
public float lookAtRadius;
///
/// If this dialogue is meant for a character, this is the relative path from the planet to that character's
/// CharacterAnimController, TravelerController, TravelerEyeController (eye of the universe), FacePlayerWhenTalking,
/// HearthianRecorderEffects or SolanumAnimController.
///
/// If none of those components are present it will add a FacePlayerWhenTalking component.
///
public string pathToAnimController;
///
/// Radius of the spherical collision volume where you get the "talk to" prompt when looking at. If you use a
/// remoteTrigger, you can set this to 0 to make the dialogue only trigger remotely.
///
public float radius = 1f;
///
/// Distance from radius the prompt appears
///
[DefaultValue(2f)] public float range = 2f;
///
/// Allows you to trigger dialogue from a distance when you walk into an area.
///
public RemoteTriggerInfo remoteTrigger;
[Obsolete("remoteTriggerPosition is deprecated. Use remoteTrigger.position instead")] public MVector3 remoteTriggerPosition;
[Obsolete("remoteTriggerRadius is deprecated. Use remoteTrigger.radius instead")] public float remoteTriggerRadius;
[Obsolete("remoteTriggerPrereqCondition is deprecated. Use remoteTrigger.prereqCondition instead")] public string remoteTriggerPrereqCondition;
///
/// Relative path to the xml file defining the dialogue.
///
public string xmlFile;
///
/// What type of flashlight toggle to do when dialogue is interacted with
///
[DefaultValue("none")] public FlashlightToggle flashlightToggle = FlashlightToggle.None;
}
}