Exemplo n.º 1
0
        internal void SetPlayerClass(string player, SpellClass theClass, double currentTime)
        {
            if (!PlayerToClass.TryGetValue(player, out SpellClassCounter counter))
            {
                lock (PlayerToClass)
                {
                    counter = new SpellClassCounter {
                        ClassCounts = new Dictionary <SpellClass, long>()
                    };
                    PlayerToClass.TryAdd(player, counter);
                    AddVerifiedPlayer(player, currentTime);
                }
            }

            lock (counter)
            {
                if (!theClass.Equals(counter.CurrentClass) && counter.CurrentMax != 1000000)
                {
                    counter.CurrentClass          = theClass;
                    counter.ClassCounts[theClass] = 1000000;
                    counter.CurrentMax            = 1000000;
                    LOG.Debug("Assigning " + player + " as " + theClass.ToString() + " from class specific action");
                }
            }
        }
Exemplo n.º 2
0
        internal void UpdatePlayerClassFromSpell(SpellCast cast, SpellClass theClass, double currentTime)
        {
            if (!PlayerToClass.TryGetValue(cast.Caster, out SpellClassCounter counter))
            {
                lock (PlayerToClass)
                {
                    counter = new SpellClassCounter {
                        ClassCounts = new Dictionary <SpellClass, long>()
                    };
                    PlayerToClass.TryAdd(cast.Caster, counter);
                }
            }

            lock (counter)
            {
                long newValue = 1;
                if (cast.SpellData.Rank > 1)
                {
                    newValue = 10;
                    AddVerifiedPlayer(cast.Caster, currentTime);
                }

                if (counter.ClassCounts.TryGetValue(theClass, out long value))
                {
                    newValue += value;
                }

                counter.ClassCounts[theClass] = newValue;

                if (newValue > counter.CurrentMax)
                {
                    counter.CurrentMax = newValue;
                    if (!theClass.Equals(counter.CurrentClass))
                    {
                        if (LOG.IsDebugEnabled)
                        {
                            LOG.Debug("Assigning " + cast.Caster + " as " + theClass.ToString() + " from " + cast.Spell);
                        }
                    }
                    counter.CurrentClass = theClass;
                }
            }
        }