public long GetRetry(TResource resource, string?bucket) { long retry = 0; lock (_sharedResourceTimes) { if (_sharedResourceTimes.TryGetValue(resource, out Cached <long> sharedRetry)) { retry = sharedRetry; } } if (bucket is null) { return(retry); } var resourceBucket = new ResourceBucket(resource, bucket); lock (_userResourceTimes) { if (_userResourceTimes.TryGetValue(resourceBucket, out Cached <long> userRetry) && retry < userRetry) { retry = userRetry; } } return(retry); }
public void OnSelectTarget(Mobile from, object obj) { if (!(obj is ResourceBucket)) { from.SendMessage("Vous devriez utiliser un seau adéquat"); return; } ResourceBucket bucket = (ResourceBucket)obj; if (bucket.MilkType != Milk.None) { from.SendMessage("Cela ferait un trop curieux mélange"); return; } if (bucket.Quantity >= bucket.MaxQuantity) { from.SendMessage("Votre seau est plein"); return; } bucket.ResourceType = BucketLiquid.SugarWater; bucket.Quantity += Utility.Random(1, 5); return; }
public void SetRetry(TResource resource, string bucket, long retry) { lock (_userResourceTimes) { var resourceBucket = new ResourceBucket(resource, bucket); if (!_userResourceTimes.TryGetValue(resourceBucket, out Cached <long> sharedRetryAfter)) { _userResourceTimes.Add(resourceBucket, new Cached <long>(retry, DateTimeOffset.UtcNow)); } else if (sharedRetryAfter <= retry) { _userResourceTimes[resourceBucket] = new Cached <long>(retry, DateTimeOffset.UtcNow); } } }