2 using System.Collections.Generic;
6 namespace Loot.Api.ModContent
13 private IDictionary<string, TextureModContent>
_contents;
14 private IEnumerable<TextureModContent> _modContents => _contents.Select(x => x.Value);
17 => (T) _modContents.FirstOrDefault(x => x.GetType() == typeof(T));
20 => _modContents.FirstOrDefault(x => x.GetType() == type);
23 => _contents.TryGetValue(key, out var modContent) ? modContent : null;
27 if (_contents.ContainsKey(key))
29 throw new Exception($
"Key '{key}' already present in ContentManager");
32 if (_contents.Values.Contains(textureModContent))
34 Loot.Logger.WarnFormat(
"ModContent with registry key {0} was already present", textureModContent.GetRegistryKey());
37 textureModContent._Initialize();
38 _contents.Add(key, textureModContent);
41 internal void Initialize(
Mod mod)
43 _contents =
new Dictionary<string, TextureModContent>();
44 var assembly = mod.Code;
45 var modContents = assembly.GetTypes().Where(x => x.BaseType == typeof(
TextureModContent) && !x.IsAbstract);
46 foreach (var modContent
in modContents)
55 foreach (var content
in _modContents)
61 internal void Unload()
63 foreach (var content
in _modContents)
This class is responsible for managing instances of TextureModContent for registered mods...
IDictionary< string, TextureModContent > _contents
abstract string GetRegistryKey()
An abstract class that contains a mapping of strings to texture instances