Пример #1
0
 /// <summary>
 /// Adds trait provider component
 /// </summary>
 /// <param name="part"></param>
 /// <param name="provider"></param>
 public void AddProvider([NotNull] CharacterPart part, [NotNull] Getter provider)
 {
     if (providers.ContainsKey(part))
     {
         return;
     }
     providers.Add(part, provider);
 }
Пример #2
0
 internal void RemovePart([NotNull] CharacterPart part)
 {
     if (parts.Remove(part))
     {
         foreach (var(type, _) in TypeCacher.type2ProvidedTypes[part.GetType()])
         {
             traitManager[type].RemoveProvider(part);
         }
     }
 }
Пример #3
0
        internal void AddPart([NotNull] CharacterPart part)
        {
            if (parts.Contains(part))
            {
                return;
            }

            parts.Add(part);
            foreach (var(type, provider) in TypeCacher.type2ProvidedTypes[part.GetType()])
            {
                traitManager[type].AddProvider(part, provider.Substitute(part));
            }
        }
Пример #4
0
 /// <summary>
 /// Removes provider also destroying consumer components, if no providers left
 /// </summary>
 /// <param name="part"></param>
 public void RemoveProvider([NotNull] CharacterPart part)
 {
     if (part == null)
     {
         throw new ArgumentNullException(nameof(part));
     }
     if (providers.ContainsKey(part))
     {
         providers.Remove(part);
         if (providers.Count == 0)
         {
             foreach (var traitConsumer in consumers)
             {
                 consumers.Remove(traitConsumer);
                 traitConsumer.OnProvidersEmpty();
             }
         }
     }
 }