コード例 #1
0
 public void HandleRadius(Entity owner, Entity originalTarget, ImpactRadiusTypes radiusType)
 {
     if (_radiusHandlers.TryGetValue((int)radiusType, out var handler))
     {
         handler.HandleRadius(owner, originalTarget);
     }
 }
コード例 #2
0
        public static List <Point3> RadiusPoints(this ImpactRadiusTypes radius, Point3 center, Directions fwd)
        {
            if (radius == ImpactRadiusTypes.Single)
            {
                return(null);
            }
            switch (radius)
            {
            default:
            case ImpactRadiusTypes.Single:
                return(null);

            case ImpactRadiusTypes.Cross:
                return(RadiusPnts(_surrounding4Way, center, 1));

            case ImpactRadiusTypes.Cross2:
                return(RadiusPnts(_surrounding4Way, center, 2));

            case ImpactRadiusTypes.Radius1:
                return(RadiusPnts(_surrounding8Way, center, 2));

            case ImpactRadiusTypes.Radius2:
                return(RadiusPnts(_surrounding8Way, center, 3));

            case ImpactRadiusTypes.Radius3:
                return(RadiusPnts(_surrounding8Way, center, 4));

            case ImpactRadiusTypes.Cone:
                return(GetOctantPnts(center, 2, fwd));
            }
        }
コード例 #3
0
        public static float ToFloat(this ImpactRadiusTypes radius)
        {
            switch (radius)
            {
            case ImpactRadiusTypes.Radius1:
                return(Game.MapCellSize);

            case ImpactRadiusTypes.Radius2:
                return(Game.MapCellSize * 2);

            case ImpactRadiusTypes.Radius3:
                return(Game.MapCellSize * 3);
            }
            return(0);
        }
コード例 #4
0
            public ProjectileTemplate(DataEntry data)
            {
                Data              = data;
                ID                = data.ID;
                Type              = data.TryGetValue("Type", data.ID);
                Movement          = data.TryGetValue("Movement", "Simple");
                Speed             = data.TryGetValue("Speed", 0f);
                Rotation          = data.TryGetValue("Rotation", 0f);
                CollisionDistance = data.TryGetValue("CollisionDistance", 0.25f);
                Size              = data.TryGetValue("Size", 0f);
                Length            = data.TryGetValue("Length", 0f);
                Timeout           = data.TryGetValue(DatabaseFields.Timeout, _defaultTimeout.Value);
                GlowPower         = data.TryGetValue("GlowPower", 0f);
                TrailAmount       = data.TryGetValue("TrailAmount", 0);
                TrailFrequency    = data.TryGetValue("TrailFrequency", 0f);
                TrailColor        = data.TryGetValue("TrailColor", Color.black);
                Radius            = ParseUtilities.TryParseEnum(data.GetValue <string>("Radius"), ImpactRadiusTypes.Single);
                Billboard         = ParseUtilities.TryParseEnum(data.GetValue <string>("Billboard"), BillboardMode.FaceCamYDiff);
                MainColor         = data.TryGetValue("MainColor", Color.white);
                OffsetColor       = data.TryGetValue("OffsetColor", Color.white);
                PoolSize          = data.TryGetValue("PoolSize", _defaultPool);
                var afx = data.GetValue <string>(DatabaseFields.ActionFx);

                if (!string.IsNullOrEmpty(afx))
                {
                    ActionFx = ItemPool.LoadAsset <ActionFx>(UnityDirs.ActionFx, afx);
                }
                var model = data.GetValue <string>(DatabaseFields.Model);

                switch (Type)
                {
                default:
                case "Simple":
                    break;

                case "SpherePhysics":
                    if (!string.IsNullOrEmpty(model))
                    {
                        Animation = ItemPool.LoadAsset <SpriteAnimation>(UnityDirs.ActionSpawn, model);
                    }
                    break;

                case "VolumeLaser":
                    Prefab = model;
                    break;
                }
                Components = data.Get(DatabaseFields.Components) as DataList;
            }
コード例 #5
0
 public void AddHandler(ImpactRadiusTypes radius, IRadiusHandler handler)
 {
     _radiusHandlers.Add((int)radius, handler);
 }
コード例 #6
0
 public ImpactRadius(ImpactRadiusTypes radius, bool limitToEnemy)
 {
     Radius       = radius;
     LimitToEnemy = limitToEnemy;
 }
コード例 #7
0
 public ImpactRadius(ImpactRadiusTypes radius)
 {
     Radius = radius;
 }