// Remove items public virtual void Remove(string instanceId, Location location, bool resetState = false, bool didCollect = false) { ComputedLocationSpawnItems computed = null; lock (m_itemLocations) { m_itemLocations.Remove(instanceId, location); } // No hits for this item at this location if (!m_locationComputedItems.TryGetValue(location.Id, out computed)) { return; } LocationSpawnItemResults <T> result = null; if (!computed.Results.TryGetValue(instanceId, out result)) { return; } result.DidCollect = didCollect; if (resetState) { computed.Results.Remove(instanceId); } OnItemsRemoved(instanceId, result); }
protected virtual void OnItemsRemoved(string instanceId, LocationSpawnItemResults <T> result) { if (ItemsRemoved != null) { ItemsRemoved(this, new LocationSpawnItemDriverEventArgs <T>(result)); } }
protected virtual void OnItemsSpawned(string instanceId, LocationSpawnItemResults <T> result) { m_itemLocations.Add(instanceId, result.SourceLocation); if (ItemsSpawned != null) { ItemsSpawned(this, new LocationSpawnItemDriverEventArgs <T>(result)); } }
protected void AddComputedResult(Location location, string instanceId, LocationSpawnItemResults <T> results) { var computed = GetOrCreateLocationComputedItems(location); computed.Results.Add(instanceId, results); }