Newer
Older
DungeonShooting / DungeonShooting_Godot / src / config / ExcelConfig_BulletBase.cs
using System.Text.Json.Serialization;
using System.Collections.Generic;

namespace Config;

public static partial class ExcelConfig
{
    public partial class BulletBase
    {
        /// <summary>
        /// 子弹id
        /// </summary>
        [JsonInclude]
        public string Id;

        /// <summary>
        /// 子弹名称
        /// </summary>
        [JsonInclude]
        public string Name;

        /// <summary>
        /// 子弹类型: <br/>
        /// 实体子弹:1 <br/>
        /// 激光子弹:2 <br/>
        /// 纯伤害:3
        /// </summary>
        [JsonInclude]
        public int Type;

        /// <summary>
        /// 绑定子弹预制体,根据Type填不同的参数 <br/>
        /// Type为1,填ActivityBase表Id <br/>
        /// Type为2,填场景路径 <br/>
        /// Type为3,不填
        /// </summary>
        [JsonInclude]
        public string Prefab;

        /// <summary>
        /// 造成的伤害区间 <br/>
        /// 格式为[value]或者[min,max]
        /// </summary>
        [JsonInclude]
        public int[] HarmRange;

        /// <summary>
        /// 造成伤害后击退值区间 <br/>
        /// 如果发射子弹,则按每发子弹算击退 <br/>
        /// 格式为[value]或者[min,max]
        /// </summary>
        [JsonInclude]
        public float[] RepelRange;

        /// <summary>
        /// 子弹偏移角度区间 <br/>
        /// 用于设置子弹偏移朝向, 该属性和射半径效果类似, 但与其不同的是, 散射半径是用来控制枪口朝向的, 而该属性是控制子弹朝向的, 可用于制作霰弹枪子弹效果 <br/>
        /// 格式为[value]或者[min,max]
        /// </summary>
        [JsonInclude]
        public float[] DeviationAngleRange;

        /// <summary>
        /// 子弹初速度区间 <br/>
        /// 格式为[value]或者[min,max]
        /// </summary>
        [JsonInclude]
        public float[] SpeedRange;

        /// <summary>
        /// 子弹最大存在时间,单位:秒 <br/>
        /// 如果值小于等于0时子弹无限期存在 <br/>
        /// 只有Type为1时才需要填写 <br/>
        /// 格式为[value]或者[min,max]
        /// </summary>
        [JsonInclude]
        public float[] LifeTimeRange;

        /// <summary>
        /// 子弹最大飞行距离区间 <br/>
        /// 格式为[value]或者[min,max]
        /// </summary>
        [JsonInclude]
        public float[] DistanceRange;

        /// <summary>
        /// 初始纵轴速度区间 <br/>
        /// 只有Type为1时有效 <br/>
        /// 格式为[value]或者[min,max]
        /// </summary>
        [JsonInclude]
        public float[] VerticalSpeed;

        /// <summary>
        /// 反弹次数区间 <br/>
        /// 只有Type为1或2时有效 <br/>
        /// 格式为[value]或者[min,max]
        /// </summary>
        [JsonInclude]
        public int[] BounceCount;

        /// <summary>
        /// 子弹穿透次数区间 <br/>
        /// 只有Type为1时有效 <br/>
        /// 格式为[value]或者[min,max]
        /// </summary>
        [JsonInclude]
        public int[] Penetration;

        /// <summary>
        /// 返回浅拷贝出的新对象
        /// </summary>
        public BulletBase Clone()
        {
            var inst = new BulletBase();
            inst.Id = Id;
            inst.Name = Name;
            inst.Type = Type;
            inst.Prefab = Prefab;
            inst.HarmRange = HarmRange;
            inst.RepelRange = RepelRange;
            inst.DeviationAngleRange = DeviationAngleRange;
            inst.SpeedRange = SpeedRange;
            inst.LifeTimeRange = LifeTimeRange;
            inst.DistanceRange = DistanceRange;
            inst.VerticalSpeed = VerticalSpeed;
            inst.BounceCount = BounceCount;
            inst.Penetration = Penetration;
            return inst;
        }
    }
}