private void SaveCooldowns <T>(List <T> cooldowns) where T : ICooldown { for (int index = cooldowns.Count - 1; index >= 0; --index) { ICooldown cooldown = (ICooldown)cooldowns[index]; if (cooldown.Until < DateTime.Now.AddMilliseconds((double)SpellHandler.MinCooldownSaveTimeMillis)) { if (cooldown is ActiveRecordBase) { ((ActiveRecordBase)cooldown).DeleteLater(); } } else { IConsistentCooldown consistentCooldown = cooldown.AsConsistent(); consistentCooldown.CharId = this.Owner.EntityId.Low; consistentCooldown.Save(); cooldowns.Add((T)consistentCooldown); } cooldowns.RemoveAt(index); } }
private void SaveCooldowns <T>(List <T> cooldowns) where T : ICooldown { for (var i = cooldowns.Count - 1; i >= 0; i--) { ICooldown cooldown = cooldowns[i]; if (cooldown.Until < DateTime.Now.AddMilliseconds(SpellHandler.MinCooldownSaveTimeMillis)) { // already expired or will expire very soon if (cooldown is ActiveRecordBase) { ((ActiveRecordBase)cooldown).DeleteLater(); } } else { var cd = cooldown.AsConsistent(); cd.CharId = Owner.EntityId.Low; cd.Save(); // update or create cooldowns.Add((T)cd); } cooldowns.RemoveAt(i); } }