Remove() Methods

v4.0

Example code here is from GameStatList.cs, though similar methods are on other list classes as well.

Methods for specific list types are below.

The common methods can be found in GameModuleListExtensions.cs

Remove()

There are many ways to remove an item from the list

Remove(gameStat) will remove the first item that has the uid of the gameStat provided. If you want to ensure you remove the specific GameStat object, use RemoveExact(gameStat) instead.

// Remove by Stat, GameStat, or uid
gameStatList.Remove(stat);
gameStatList.Remove(gameStat);
gameStatList.Remove(uid);

// Remove all by Stat, GameStat, or uid
gameStatList.RemoveAll(stat);
gameStatList.RemoveAll(gameStat);
gameStatList.RemoveAll(uid);

// Remove by a gameId -- These do the same thing
gameStatList.RemoveGameId(gameId);
gameStatList.RemoveExact(gameId);

// Remove an exact Game Module Object
gameStatList.RemoveExact(gameStat); // pass in the gameStat we want to remove

// Clear the entire list
gameStatList.Clear();

GameConditionList

Remove all from a specific IHaveStats source

// These will remove the conditions -- Expiration Conditions will not be added!
public void RemoveAllFromSource(IHaveStats source, Condition condition)
public void RemoveAllFromSource(IHaveStats source, GameCondition gameCondition)
public void RemoveAllFromSource(IHaveStats source, string conditionUid = null)

Expire all from a specific IHaveStats source

// ExpireNow() sets the expiration time to Now. They actually will expire
// the next frame.
public void ExpireAllFromSource(IHaveStats source, Condition condition)
public void ExpireAllFromSource(IHaveStats source, GameCondition gameCondition)
public void ExpireAllFromSource(IHaveStats source, string conditionUid = null)

// Example -- Assumes "witch" is an Actor which implements IHaveStats
public void RemoveAllCursesFromWitch() => ExpireAllFromSource(witch);

GameItemObjectList

The Remove() methods below do not take into account "Equipment" -- that is, they do not update Stats when they are removed. If you plan on removing ItemObjects that are active in an "Equipment" list, you'll want to create your own remove methods to handle your inventory appropriately.

Remove all based on number of ItemAttributes

// If GameItemObject, ItemObject, or itemObjectUid is provided, only those of
// that ItemObject will be removed

// Remove all with exact number of attributes
public void RemoveAllWithExactlyXAttributes(int amount, ItemObject itemObject)
public void RemoveAllWithExactlyXAttributes(int amount, GameItemObject gameItemObject)
public void RemoveAllWithExactlyXAttributes(int amount, string itemObjectUid = null)

// Remove all with less than X attributes
public void RemoveAllWithLessThanXAttributes(int amount, ItemObject itemObject)
public void RemoveAllWithLessThanXAttributes(int amount, GameItemObject gameItemObject)
public void RemoveAllWithLessThanXAttributes(int amount, string itemObjectUid = null) 

// Remove all with more than X attributes
public void RemoveAllWithMoreThanXAttributes(int amount, ItemObject itemObject)
public void RemoveAllWithMoreThanXAttributes(int amount, GameItemObject gameItemObject)
public void RemoveAllWithMoreThanXAttributes(int amount, string itemObjectUid = null)

// Remove all with no attributes
public void RemoveAllWithNoAttributes(ItemObject itemObject)
public void RemoveAllWithNoAttributes(GameItemObject gameItemObject)
public void RemoveAllWithNoAttributes(string itemObjectUid = null)

Remove all based on specific ItemAttributes

// If itemObjectUid is provided, only those of that ItemObject will be removed

// Remove all with specific ItemAttribute
public void RemoveAllWithAttribute(ItemAttribute attribute, string itemObjectUid = null)
public void RemoveAllWithAttribute(GameItemAttribute gameAttribute, string itemObjectUid = null)
public void RemoveAllWithAttribute(string attributeUid, string itemObjectUid = null)

// Remove all with ALL of the specified ItemAttributes
public void RemoveAllWithAllAttributes(IEnumerable<ItemAttribute> attributes, string itemObjectUid = null)
public void RemoveAllWithAllAttributes(IEnumerable<GameItemAttribute> gameAttributes, string itemObjectUid = null)
public void RemoveAllWithAllAttributes(IEnumerable<string> attributeUids, string itemObjectUid = null)

// Remove all with ANY of the specified ItemAttributes
public void RemoveAllWithAnyAttributes(IEnumerable<ItemAttribute> attributes, string itemObjectUid = null)
public void RemoveAllWithAnyAttributes(IEnumerable<GameItemAttribute> gameAttributes, string itemObjectUid = null)
public void RemoveAllWithAnyAttributes(IEnumerable<string> attributeUids, string itemObjectUid = null)

// Example
ItemAttribute[] itemAttributes = new[] { Rare, Epic, Legendary };
gameItemObjectList.RemoveAllWithAnyAttributes(itemAttributes);
Debug.Log("All your good loot has been removed!");

Remove duplicates

These methods will remove any duplicates. The single-object methods have an optional itemObjectUid, when null, will remove any duplicate in the entire list.

There is also an optional bool includeItemAttributes, which is false by default. When true, a GameItemObject must match both its Uid() and its list of ItemAttributes to qualify as a duplicate.

public void RemoveDuplicates(ItemObject itemObject, bool includeItemAttributes = false)
public void RemoveDuplicates(GameItemObject gameItemObject, bool includeItemAttributes = false)
public void RemoveDuplicates(string itemObjectUid = null, bool includeItemAttributes = false)

// Only check a set of ItemObjects
public void RemoveDuplicates(IEnumerable<ItemObject> itemObjects, bool includeItemAttributes = false)
public void RemoveDuplicates(IEnumerable<GameItemObject> gameItemObjects, bool includeItemAttributes = false)
public void RemoveDuplicates(IEnumerable<string> itemObjectUids, bool includeItemAttributes = false)

Last updated