コード例 #1
0
    // 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);
    }
コード例 #2
0
 protected virtual void OnItemsRemoved(string instanceId, LocationSpawnItemResults <T> result)
 {
     if (ItemsRemoved != null)
     {
         ItemsRemoved(this, new LocationSpawnItemDriverEventArgs <T>(result));
     }
 }
コード例 #3
0
    protected virtual void OnItemsSpawned(string instanceId, LocationSpawnItemResults <T> result)
    {
        m_itemLocations.Add(instanceId, result.SourceLocation);

        if (ItemsSpawned != null)
        {
            ItemsSpawned(this, new LocationSpawnItemDriverEventArgs <T>(result));
        }
    }
コード例 #4
0
    protected void AddComputedResult(Location location, string instanceId, LocationSpawnItemResults <T> results)
    {
        var computed = GetOrCreateLocationComputedItems(location);

        computed.Results.Add(instanceId, results);
    }