public void Remove(ReusableID id) { ReturnID(id); IntToID.Remove(id); GlobalIDToID.Remove(id); Holders.Remove(id); }
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); }
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); }