public virtual void CreateSkeleton(SkeletonContainer container) { model = new SkeletonModel(container); model.currentHealth.ObserveEveryValueChanged(x => x.Value) .Subscribe(hp => view.SetHP((float)hp / (float)model.maxHealth.Value * 100)) .AddTo(disposables); model.isDead.Where(isDead => isDead == true) .Subscribe(_ => { Death(); }).AddTo(disposables); view.trigger .OnTriggerEnter2DAsObservable() .Subscribe(x => TriggerEnter(x.gameObject)) .AddTo(disposables); Observable.EveryUpdate() .Subscribe(_ => StatesUpdate()) .AddTo(disposables); state = State.Walk; }
public SkeletonModel(SkeletonContainer container) { maxHealth = new ReactiveProperty <int>(container.maxHealth); currentHealth = new ReactiveProperty <int>(maxHealth.Value); moveSpeed = new ReactiveProperty <float>(container.moveSpeed); canAttack = new ReactiveProperty <bool>(true); attackRate = new ReactiveProperty <float>(container.attackRate); isDead = new ReactiveProperty <bool>(false); damage = new ReactiveProperty <int>(container.damage); gold = new ReactiveProperty <int>(container.gold); currentHealth.Where(hp => hp < 1) .Subscribe(_ => isDead.Value = true); }