public void Initialize(AspectedEntity entity)
        {
            _entity = entity;

            GetAspect <DeathAspect>().OnTriggerSignal.AddOnce(HandleDeath);

            name = GetAspect <IdentityAspect>().ToString();

            ConnectView();
        }
        public void Take(float damage, AspectedEntity source)
        {
            damage = ApplyHandlers(damage);
            if (damage <= 0f)
            {
                return;
            }

            Health.Modify(-damage);
            OnDamageTakenSignal.Dispatch(damage, source);
        }
Example #3
0
        //ignore dispose warning. aspects are disposed by entity
        public AspectedEntity Create(ShipData data)
        {
            var entity = new AspectedEntity(
                new LogDealDamageAspect(),
                new LogResourceAspect <HealthAspect>("Health"),
                new LogResourceAspect <ShieldAspect>("Shield"),
                new IdentityAspect(data.Name),
                new HealthAspect(data.Health),
                new TakeDamageAspect(),
                new ShieldAspect(data.Shield.Value),
                new RechargeShieldAspect(data.Shield.RechargeRate),
                new DeathAspect(),
                new DealDamageToTargetsAspect(),
                new GunsAspect(data.Guns.Select(c => c.Data).ToArray()));

            SetupDamageHandlers(entity);

            foreach (var module in data.Modules)
            {
                module.Apply(entity);
            }

            return(entity);
        }
Example #4
0
        private static void SetupDamageHandlers(AspectedEntity entity)
        {
            var takeDamageAspect = entity.GetAspect <TakeDamageAspect>();

            takeDamageAspect.AddHandler(entity.GetAspect <ShieldAspect>());
        }
 public override void Apply(AspectedEntity entity) =>
 entity.GetAspect <GunsAspect>().ScaleReloadTime(1f + _reloadSpeedBoost / 100f);
Example #6
0
 public abstract void Apply(AspectedEntity entity);
 public override void Apply(AspectedEntity entity) =>
 entity?.GetAspect <RechargeShieldAspect>().Scale(1f + _rechargeRateScale / 100f);
 public override void Apply(AspectedEntity entity) => entity?.GetAspect <T>().ApplyBoost(_value);