예제 #1
0
        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);
            }
        }
예제 #2
0
 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);
     }
 }