public MainCharacter() { Inventory = new Inventory(); Speed = new SpeedTracker(this); Targeting = new Targeting(() => this.Bounds, t => t is Zombie); Added.SubscribeForLifetime(() => { Scene.Add(Targeting); }, this.LifetimeManager); Removed.SubscribeForLifetime(() => { Scene.Remove(Targeting); }, this.LifetimeManager); Targeting.TargetChanged.SubscribeForLifetime((target) => { if (this.Target != null && this.Target.IsExpired == false) { Scene.Update(this.Target); } this.Target = target; if (this.Target != null && this.Target.IsExpired == false) { Scene.Update(this.Target); } }, this.LifetimeManager); Speed.Bounciness = 0; this.HealthPoints = 100; Speed.HitDetectionTypes.Add(typeof(Wall)); Added.SubscribeForLifetime(OnAdded, this.LifetimeManager); Removed.SubscribeForLifetime(OnRemoved, this.LifetimeManager); }
public Turret() { Added.SubscribeForLifetime(() => { Scene.Add(targeting = new Targeting(() => this.Bounds, Filter)); targeting.TargetChanged.SubscribeForLifetime(TargetChanged, this.LifetimeManager); }, this.LifetimeManager); Removed.SubscribeForLifetime(() => { Scene.Remove(targeting); }, this.LifetimeManager); Governor.Rate = TimeSpan.FromSeconds(.3); AmmoPerBurst = 2; }
public Door() { Added.SubscribeForLifetime(() => { this.State = this.State; }, this.Lifetime); Lifetime.OnDisposed(() => FindCieling().ForEach(c => c.Lifetime.Dispose())); }
public Door() { Added.SubscribeForLifetime(() => { this.IsOpen = this.IsOpen; }, this.LifetimeManager); Removed.SubscribeForLifetime(() => FindCieling().ForEach(c => Scene.Remove(c)), this.LifetimeManager); }
public void SynchronizeForLifetime(Action <T> addAction, Action <T> removeAction, Action changedAction, LifetimeManager manager) { Added.SubscribeForLifetime(addAction, manager); Removed.SubscribeForLifetime(removeAction, manager); Changed.SubscribeForLifetime(changedAction, manager); foreach (var obj in this) { addAction(obj); } changedAction(); }
private void InitializeTargeting() { Targeting = new AutoTargetingFunction(() => this.Bounds, t => t is Enemy || t.HasSimpleTag("enemy")); Added.SubscribeForLifetime(() => { Time.CurrentTime.Add(Targeting); }, this.Lifetime); this.Lifetime.OnDisposed(Targeting.Lifetime.Dispose); Targeting.TargetChanged.SubscribeForLifetime((target) => { if (this.Target != null && this.Target.Lifetime.IsExpired == false) { this.Target.SizeOrPositionChanged.Fire(); } this.Target = target as Character; if (this.Target != null && this.Target.Lifetime.IsExpired == false) { this.Target.SizeOrPositionChanged.Fire(); } }, this.Lifetime); }