float scaleDamageCached(ulong targetID) { ScaleCacheItem kvp = null; if (cachedScales.TryGetValue(targetID, out kvp) && DateTime.Now < kvp.expires) { return(kvp.scale); } return(cacheDamageScale(targetID, scaleDamage(targetID), kvp)); }
float cacheDamageScale(ulong targetID, float scale, ScaleCacheItem kvp = null) { if (kvp == null) { kvp = new ScaleCacheItem(DateTime.Now.AddMinutes(1), scale); cachedScales.Add(targetID, kvp); } else { kvp.expires = DateTime.Now.AddMinutes(1); kvp.scale = scale; } return(scale); }