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); }
//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); }
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);
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);