using System.Collections.Generic;
using UnityEngine;
namespace BulletHellTemplate
{
///
/// Enumeration for range indicator types.
///
public enum RangeIndicatorType
{
None,
Radial,
RadialAoE,
Arrow,
Cone
}
///
/// Enumeration for launch types.
///
public enum LaunchType
{
Projectile,
TargetedAoE,
TargetedAirStrike,
}
///
/// Defines the modes for Advanced Dash, such as input direction or targeting.
///
public enum DashMode
{
InputDirection,
ForwardOnly,
ReverseOnly,
NearestTarget,
RandomDirection
}
///
/// Enumeration for aim types.
///
public enum AimType
{
InputDirection,
TargetNearestEnemy,
FowardDirection,
ReverseDirection,
RandomDirection,
}
///
/// Represents settings for a radial indicator.
///
[System.Serializable]
public class RadialIndicatorSettings
{
[Tooltip("Radius area of the indicator.")]
public float radiusArea;
[Tooltip("Determines whether to use a cast indicator.")]
public bool useCastIndicator;
}
///
/// Represents settings for a radial AoE indicator.
///
[System.Serializable]
public class RadialAoEIndicatorSettings
{
[Tooltip("Maximum range for the indicator radius.")]
public float radiusMaxRange;
[Tooltip("Area radius for the indicator.")]
public float radiusArea;
[Tooltip("Determines whether to use a cast indicator.")]
public bool useCastIndicator;
}
///
/// Represents settings for an arrow indicator.
///
[System.Serializable]
public class ArrowIndicatorSettings
{
[Tooltip("Size of the arrow.")]
public Vector3 arrowSize;
[Tooltip("Determines whether to use a cast indicator.")]
public bool useCastIndicator;
}
///
/// Represents settings for a cone indicator.
///
[System.Serializable]
public class ConeIndicatorSettings
{
[Tooltip("Size of the cone arrow.")]
public Vector3 ConeSize;
[Tooltip("Determines whether to use a cast indicator.")]
public bool useCastIndicator;
}
///
/// Represents advanced dash configuration with waves and different dash modes.
///
[System.Serializable]
public class AdvancedDashSettings
{
[Tooltip("Enable Advanced Dash feature.")]
public bool enableAdvancedDash = false;
[Tooltip("Activates the skill animation trigger on each dash.")]
public bool AnimationTriggerEachDash = false;
[Tooltip("Number of dash waves to perform.")]
public int dashWaves = 1;
[Tooltip("Delay (in seconds) between each dash wave.")]
public float delayBetweenWaves = 0f;
[Tooltip("Dash mode for advanced dash.")]
public DashMode dashMode = DashMode.InputDirection;
[Tooltip("Speed of the dash.")]
public float dashSpeed = 10f;
[Tooltip("Duration of the dash.")]
public float dashDuration = 0.3f;
}
///
/// Represents a configuration to change the size of DamageEntity prefabs over time for each axis.
///
[System.Serializable]
public class DamageEntitySizeChange
{
[Tooltip("Enable or disable the size change feature for DamageEntity.")]
public bool enableSizeChange = false;
[Tooltip("Initial size of the DamageEntity on the X-axis.")]
public float initialSizeX = 1.0f;
[Tooltip("Final size of the DamageEntity on the X-axis.")]
public float finalSizeX = 1.0f;
[Tooltip("Time (in seconds) it takes to transition the size on the X-axis.")]
public float sizeChangeTimeX = 0;
[Tooltip("Initial size of the DamageEntity on the Y-axis.")]
public float initialSizeY = 1.0f;
[Tooltip("Final size of the DamageEntity on the Y-axis.")]
public float finalSizeY = 1.0f;
[Tooltip("Time (in seconds) it takes to transition the size on the Y-axis.")]
public float sizeChangeTimeY = 0;
[Tooltip("Initial size of the DamageEntity on the Z-axis.")]
public float initialSizeZ = 1.0f;
[Tooltip("Final size of the DamageEntity on the Z-axis.")]
public float finalSizeZ = 1.0f;
[Tooltip("Time (in seconds) it takes to transition the size on the Z-axis.")]
public float sizeChangeTimeZ = 0;
}
///
/// Represents the data for a skill level.
///
[System.Serializable]
public class SkillLevel
{
[Tooltip("Base damage of the skill at this level.")]
public float baseDamage;
[Tooltip("Damage rate based on the attacker's stats.")]
public float attackerDamageRate;
[Tooltip("Can this skill cause critical damage?")]
public bool canCauseCriticalDamage;
[Tooltip("Speed of the skill's projectile.")]
public float speed;
[Tooltip("Lifetime of the skill's projectile.")]
public float lifeTime;
[Tooltip("Is this level the evolved form of the skill?")]
public bool isEvolved;
}
///
/// Represents a single wave of shots in an advanced multi-shot skill.
///
[System.Serializable]
public class ShotWave
{
[Tooltip("Number of shots in this wave.")]
public int shotCount = 1;
[Tooltip("List of angles for this wave. If more than one, each shot uses the corresponding angle.")]
public List shotAngles = new List();
[Tooltip("Use the initial angle for the first shot instead of the default behavior.")]
public bool useInitialAngle = false;
[Tooltip("Initial angle to use if useInitialAngle is true.")]
public float initialAngle = 0f;
[Tooltip("Delay before the next wave is launched.")]
public float delayBeforeNextWave = 0f;
}
}