Пример #1
0
    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;
    }
Пример #2
0
    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);
    }