changed content manager controller's generic type to allow for any object instead of IDisposable only.

This commit is contained in:
Harrison Deng 2019-01-27 17:12:16 -06:00
parent 6ba5274942
commit 2788d9d349
3 changed files with 17 additions and 12 deletions

View File

@ -33,11 +33,11 @@
<DocumentationFile>bin\Release\RecrownedAthenaeum.Pipeline.xml</DocumentationFile> <DocumentationFile>bin\Release\RecrownedAthenaeum.Pipeline.xml</DocumentationFile>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<Reference Include="MonoGame.Framework, Version=3.7.0.1708, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="MonoGame.Framework, Version=3.7.1.189, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\MonoGame.Framework.Portable.3.7.0.1708\lib\portable-net45+win8+wpa81\MonoGame.Framework.dll</HintPath> <HintPath>..\packages\MonoGame.Framework.Portable.3.7.1.189\lib\portable-net45+win8+wpa81\MonoGame.Framework.dll</HintPath>
</Reference> </Reference>
<Reference Include="MonoGame.Framework.Content.Pipeline, Version=3.7.0.1708, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="MonoGame.Framework.Content.Pipeline, Version=3.7.1.189, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\MonoGame.Framework.Content.Pipeline.Portable.3.7.0.1708\lib\portable-net45+win8+wpa81\MonoGame.Framework.Content.Pipeline.dll</HintPath> <HintPath>..\packages\MonoGame.Framework.Content.Pipeline.Portable.3.7.1.189\lib\portable-net45+win8+wpa81\MonoGame.Framework.Content.Pipeline.dll</HintPath>
</Reference> </Reference>
<Reference Include="Newtonsoft.Json, Version=12.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL"> <Reference Include="Newtonsoft.Json, Version=12.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
<HintPath>..\packages\Newtonsoft.Json.12.0.1\lib\net45\Newtonsoft.Json.dll</HintPath> <HintPath>..\packages\Newtonsoft.Json.12.0.1\lib\net45\Newtonsoft.Json.dll</HintPath>

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<packages> <packages>
<package id="MonoGame.Framework.Content.Pipeline.Portable" version="3.7.0.1708" targetFramework="net45" /> <package id="MonoGame.Framework.Content.Pipeline.Portable" version="3.7.1.189" targetFramework="net45" />
<package id="MonoGame.Framework.Portable" version="3.7.0.1708" targetFramework="net45" /> <package id="MonoGame.Framework.Portable" version="3.7.1.189" targetFramework="net45" />
<package id="Newtonsoft.Json" version="12.0.1" targetFramework="net45" /> <package id="Newtonsoft.Json" version="12.0.1" targetFramework="net45" />
</packages> </packages>

View File

@ -1,4 +1,5 @@
using Microsoft.Xna.Framework.Content; using Microsoft.Xna.Framework.Content;
using Microsoft.Xna.Framework.Graphics;
using RecrownedAthenaeum.ContentSystem; using RecrownedAthenaeum.ContentSystem;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
@ -15,7 +16,7 @@ namespace RecrownedAthenaeum.ContentSystem
Thread thread; Thread thread;
readonly ContentManager contentManager; readonly ContentManager contentManager;
readonly Queue<ContentData> queue; readonly Queue<ContentData> queue;
Dictionary<string, IDisposable> assets; Dictionary<string, Object> assets;
/// <summary> /// <summary>
/// Path modifiers to change the path in which the content manager looks to load a file. Used for better organizing things while not needing to type entire path. /// Path modifiers to change the path in which the content manager looks to load a file. Used for better organizing things while not needing to type entire path.
/// </summary> /// </summary>
@ -44,7 +45,7 @@ namespace RecrownedAthenaeum.ContentSystem
public ContentManagerController(ContentManager contentManager) public ContentManagerController(ContentManager contentManager)
{ {
this.contentManager = contentManager; this.contentManager = contentManager;
assets = new Dictionary<string, IDisposable>(); assets = new Dictionary<string, Object>();
queue = new Queue<ContentData>(); queue = new Queue<ContentData>();
contentPathModifier = new Dictionary<Type, IContentPathResolver>(); contentPathModifier = new Dictionary<Type, IContentPathResolver>();
} }
@ -59,13 +60,14 @@ namespace RecrownedAthenaeum.ContentSystem
if (contentPathModifier.ContainsKey(type)) if (contentPathModifier.ContainsKey(type))
{ {
handler = contentPathModifier[type]; handler = contentPathModifier[type];
} else }
else
{ {
handler = normalPathModifier; handler = normalPathModifier;
} }
path = handler.Modify(assetName); path = handler.Modify(assetName);
} }
assets.Add(assetName, contentManager.Load<IDisposable>(path)); assets.Add(assetName, contentManager.Load<Object>(path));
} }
@ -89,7 +91,7 @@ namespace RecrownedAthenaeum.ContentSystem
/// <typeparam name="T">The type of the asset to be queued.</typeparam> /// <typeparam name="T">The type of the asset to be queued.</typeparam>
/// <param name="assetName">Name of asset to look for.</param> /// <param name="assetName">Name of asset to look for.</param>
/// <param name="usePathModifier">Whether or not to use the path modifiers.</param> /// <param name="usePathModifier">Whether or not to use the path modifiers.</param>
public void Queue<T>(string assetName, bool usePathModifier = true) where T : IDisposable public void Queue<T>(string assetName, bool usePathModifier = true)
{ {
lock (queue) lock (queue)
{ {
@ -145,7 +147,10 @@ namespace RecrownedAthenaeum.ContentSystem
{ {
if (assets.ContainsKey(name)) if (assets.ContainsKey(name))
{ {
assets[name].Dispose(); if (assets[name] is IDisposable)
{
((IDisposable)assets[name]).Dispose();
}
assets.Remove(name); assets.Remove(name);
} }
} }