public void Remove(ReusableID id)
 {
     ReturnID(id);
     IntToID.Remove(id);
     GlobalIDToID.Remove(id);
     Holders.Remove(id);
 }
Beispiel #2
0
 public MapTile(Map map, int x, int y)
 {
     ObjectID = EffectManager.SetID(this);
     Map      = map;
     X        = x;
     Y        = y;
 }
 private void ReturnID(ReusableID id)
 {
     Debug.Assert(!ReusableIDs.Contains(id.NextGeneration));
     if (id == ReusableID.Null)
     {
         return;
     }
     ReusableIDs.Enqueue(id.NextGeneration);
 }
Beispiel #4
0
 public Material(string id, string name, string description)
 {
     ID = id;
     Materials.Add(ID, this);
     ObjectID    = EffectManager.SetID(this);
     Name        = name;
     Description = description;
     ValidParts  = Parts.Keys.ToHashSet();
     ValidParts.Remove(ToolArrow.Fletching);
 }
 private ReusableID NewID()
 {
     if (ReusableIDs.Count > 0)
     {
         Console.WriteLine("Reusing ID");
         return(ReusableIDs.Dequeue());
     }
     CurrentID = CurrentID.Next;
     return(CurrentID);
 }
        public bool Has(ReusableID id)
        {
            WeakReference <IEffectHolder> weakref;

            if (Holders.TryGetValue(id, out weakref))
            {
                IEffectHolder holder;
                if (weakref.TryGetTarget(out holder))
                {
                    return(true);
                }
                else
                {
                    Remove(id);
                }
            }
            return(false);
        }
 public void Clear()
 {
     CurrentID = new ReusableID(HighestPersistentID + 1, 0);
     foreach (var id in GetNonPersistentIDs())
     {
         if (id < CurrentID)
         {
             ReturnID(id);
         }
         IntToID.Remove(id);
         GlobalIDToID.Remove(id);
         Holders.Remove(id);
     }
     //ReusableIDs.Clear();
     //IntToID.Clear();
     //GlobalIDToID.Clear();
     //Holders.Clear();
 }
        public IEffectHolder Get(ReusableID id)
        {
            WeakReference <IEffectHolder> weakref;

            if (Holders.TryGetValue(id, out weakref))
            {
                IEffectHolder holder;
                if (weakref.TryGetTarget(out holder))
                {
                    return(holder);
                }
                else
                {
                    Remove(id);
                }
            }
            return(null);
        }