protected virtual void DrawBaseSettings()
        {
            ProjectileConfiguration settings = target as ProjectileConfiguration;

            UnityObjectField <Sprite>(ref settings.ProjectileSprite, ObjectNames.NicifyVariableName(nameof(ProjectileConfiguration.ProjectileSprite)));
            FloatField(ref settings.HitDistance, ObjectNames.NicifyVariableName(nameof(ProjectileConfiguration.HitDistance)));
            FloatField(ref settings.MaxAliveTime, ObjectNames.NicifyVariableName(nameof(ProjectileConfiguration.MaxAliveTime)));
        }
        protected virtual void DrawTurnSettings()
        {
            ProjectileConfiguration settings = target as ProjectileConfiguration;

            BoolField(ref settings.InstantTurn, ObjectNames.NicifyVariableName(nameof(ProjectileConfiguration.InstantTurn)));
            if (!settings.InstantTurn)
            {
                FloatField(ref settings.TurnSpeed, ObjectNames.NicifyVariableName(nameof(ProjectileConfiguration.TurnSpeed)));
            }
        }
Пример #3
0
        public void Initialise(ProjectileConfiguration configuration, IAttackableEntity targetEntity)
        {
            //Set base values
            TargetEntity  = targetEntity;
            Configuration = configuration;
            AliveTime     = 0;

            //Update sprite
            spriteRenderer = spriteRenderer == null?gameObject.AddComponent <SpriteRenderer>() : spriteRenderer;

            spriteRenderer.sprite = configuration.ProjectileSprite;

            //Start Projectile
            Configuration.ProjectileStart(this);
        }
        private IProjectileConfiguration GetSelections(Ballistics.IProjectileConfiguration configuration)
        {
            List <PartSelectionBehavior> lackingComponents = this.GetInsufficientselections(configuration.Parts);

            if (lackingComponents.Count == 0 || infiniteResources)
            {
                //I'm not sure why we ARE making a NEW IProjectileConfiguration here, but it may well be an artifcat of previous design - Ian S.
                IProjectileConfiguration retrievedConfiguration = new ProjectileConfiguration();
                foreach (PartSelectionBehavior nextselectionType in configuration.Parts)
                {
                    retrievedConfiguration.Add(this.Take(nextselectionType));
                }
                return(retrievedConfiguration);
            }
            else
            {
                this.DisplayInsufficientselections(lackingComponents);
                return(null);
            }
        }
Пример #5
0
        public static void CreateProjectile(ProjectileConfiguration projectileConfiguration, IAttackableEntity projectileTarget)
        {
            Projectile projectile = ProjectilePool.GetPoolObject();

            projectile.Initialise(projectileConfiguration, projectileTarget);
        }