コード例 #1
0
 public bool SetUse(WildButterfly _butterfly)
 {
     if (!this._userList.Contains(_butterfly))
     {
         this._userList.Add(_butterfly);
     }
     return(this._user.AddNonContains <int, WildButterfly>(_butterfly.InstanceID, _butterfly));
 }
コード例 #2
0
 public bool StopUse(WildButterfly _butterfly)
 {
     if (this._userList.Contains(_butterfly))
     {
         this._userList.Remove(_butterfly);
     }
     this._userList.RemoveAll((Predicate <WildButterfly>)(x => Object.op_Equality((Object)x, (Object)null) || Object.op_Equality((Object)((Component)x).get_gameObject(), (Object)null)));
     return(this._user.Remove(_butterfly.InstanceID));
 }
コード例 #3
0
        private void CreateButterfly()
        {
            int num1 = this._createNumRange.RandomRange();

            this._userList.RemoveAll((Predicate <WildButterfly>)(x => Object.op_Equality((Object)x, (Object)null) || Object.op_Equality((Object)((Component)x).get_gameObject(), (Object)null)));
            int num2 = num1 - this._userList.Count;

            if (num2 == 0)
            {
                if (((IReadOnlyList <WildButterfly>) this._userList).IsNullOrEmpty <WildButterfly>())
                {
                    return;
                }
                foreach (WildButterfly user in this._userList)
                {
                    user.ForcedLocomotion();
                }
            }
            else if (0 < num2)
            {
                if (!((IReadOnlyList <WildButterfly>) this._userList).IsNullOrEmpty <WildButterfly>())
                {
                    foreach (WildButterfly user in this._userList)
                    {
                        user.ForcedLocomotion();
                    }
                }
                while (0 < this._createDisposableList.Count)
                {
                    this._createDisposableList.Dequeue()?.Dispose();
                }
                for (int index = 0; index < num2; ++index)
                {
                    this._createDisposableList.Enqueue(ObservableExtensions.Subscribe <long>(Observable.TakeUntilDestroy <long>(Observable.TakeUntilDestroy <long>(Observable.TakeUntilDestroy <long>(Observable.TakeUntilDestroy <long>((IObservable <M0>)Observable.Timer(TimeSpan.FromSeconds((double)Random.Range(0.0f, 4f))), (Component)this), (Component)this._center), (Component)this._viaPoint), (Component)this._depopPoint), (Action <M0>)(_ =>
                    {
                        if (this.AddCheck == null || !this.AddCheck(this._center.get_position()))
                        {
                            return;
                        }
                        Func <ButterflyHabitatPoint, WildButterfly> addAnimalAction = this.AddAnimalAction;
                        if (addAnimalAction == null)
                        {
                            return;
                        }
                        WildButterfly wildButterfly = addAnimalAction(this);
                    }), (Action <Exception>)(ex => {}), (Action)(() => {})));
                }
            }
            else
            {
                if (num2 >= 0)
                {
                    return;
                }
                int num3 = Mathf.Abs(num2);
                for (int index = 0; index < this._userList.Count; ++index)
                {
                    WildButterfly user = this._userList[index];
                    if (index < num3)
                    {
                        user.ForcedDepop();
                    }
                    else
                    {
                        user.ForcedLocomotion();
                    }
                }
            }
        }