public int AmountOfStoredEntities(TypeCategory storageCategory, TypeCategory inventoryCategory, TagType requiredTagType = null, List <Entity> possibleRelatedEntities = null) { int amount = 0; // TODO: A typeCategoryToEntity Dictionary would speed this up if (typeCategoryToIOTs != null) { foreach (InputOutputType inputOutputType in typeCategoryToIOTs[storageCategory]) { EntityType entityType = (EntityType)inputOutputType; if (entityTypeToEntityInScene.TryGetValue(entityType, out List <Entity> entities)) { foreach (Entity entity in entities) { if (requiredTagType == null || (entity.HasTag(requiredTagType) && (possibleRelatedEntities == null || possibleRelatedEntities.Any(x => entity.tags[requiredTagType].Select(y => y.relatedEntity).Contains(x))))) { amount += entity.inventoryType.GetTypeCategoryAmount(entity, inventoryCategory); } } } } } return(amount); }
static public TypeGroup CreateTypeGroup(TypeCategory typeCategory) { TypeGroup typeGroup = CreateInstance <TypeGroup>(); typeGroup.typeCategories = new List <TypeCategory>() { typeCategory }; typeGroup.ResetCachedMatches(); return(typeGroup); }
public bool IsCategoryOrAncestorOf(TypeCategory typeCategory) { if (typeCategory == this) { return(true); } else if (parent == null) { return(false); } return(parent.IsCategoryOrAncestorOf(typeCategory)); }
private static void UpdateManagerTypeLists(PlayModeStateChange playModeStateChange) { if (playModeStateChange == PlayModeStateChange.ExitingEditMode) { TotalAIManager manager = Object.FindObjectOfType <TotalAIManager>(); if (manager == null) { Debug.LogError("No TotalAIManager in the scene - Please Fix."); return; } TotalAIManager.CreateTypeLists(manager); TypeCategory.UpdateTypeCategoriesChildren(); } }
public bool IsCategoryOrDescendantOf(TypeCategory typeCategory) { if (typeCategory == this) { return(true); } else if (children == null || children.Count == 0) { return(false); } foreach (TypeCategory child in children) { if (child.IsCategoryOrDescendantOf(typeCategory)) { return(true); } } return(false); }