public bool SetUse(WildButterfly _butterfly) { if (!this._userList.Contains(_butterfly)) { this._userList.Add(_butterfly); } return(this._user.AddNonContains <int, WildButterfly>(_butterfly.InstanceID, _butterfly)); }
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)); }
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(); } } } }