36 lines
1.4 KiB
C#
Raw Normal View History

using System;
using System.Collections.Generic;
using RecrownedGTK.AssetsSystem.Information;
using RecrownedGTK.AssetsSystem.Loaders;
namespace RecrownedGTK.AssetsSystem {
public class AssetLoader {
private readonly Dictionary<Type, ILoader> typeLoaders;
public AssetLoader() {
typeLoaders = new Dictionary<Type, ILoader>();
}
public void AddLoaderResolver(ILoader loader) {
if (typeLoaders.ContainsKey(loader.resultingType)) {
throw new InvalidOperationException(String.Format("The type {0} already exists in this resolver.", loader.resultingType));
}
typeLoaders.Add(loader.resultingType, loader);
}
public void RemoveLoaderResolver(Type type) {
if (!typeLoaders.ContainsKey(type)) {
throw new InvalidOperationException(String.Format("The type {0} doesn't exist in this resolver.", type));
}
typeLoaders.Remove(type);
}
public void RemoveLoaderResolver(ILoader loader) {
RemoveLoaderResolver(loader.resultingType);
}
public IInfo Load(string path, Type type) {
if (!typeLoaders.ContainsKey(type)) {
throw new InvalidOperationException(String.Format("The type {0} doesn't exist in this resolver.", type));
}
return typeLoaders[type].load(path);
}
}
}