#region File Description //----------------------------------------------------------------------------- // GameResourceBase.cs // // Microsoft XNA Community Game Platform // Copyright (C) Microsoft Corporation. All rights reserved. //----------------------------------------------------------------------------- #endregion #region Using Statements using System; using System.Collections.Generic; using System.Text; using Microsoft.Xna.Framework; using RobotGameData.GameInterface; #endregion namespace RobotGameData.Resource { /// /// the base class from which all resource structures must inherit. /// public class GameResourceBase : IDisposable, IIdentity { #region Fields int id = -1; string keyName = String.Empty; string assetName = String.Empty; bool isDisposed; protected object resource = null; #endregion #region Properties public int Id { get { if (id == 0) { id = GetHashCode(); } return id; } } public string Key { get { return keyName; } } public string AssetName { get { return assetName; } } public object Resource { get { return resource; } } public bool IsDisposed { get { return isDisposed; } } #endregion /// /// Constructor. /// /// key name /// asset name public GameResourceBase(string key, string assetName) { this.keyName = key; this.assetName = assetName; } public void Dispose() { Dispose(true); GC.SuppressFinalize(this); } protected virtual void Dispose(bool disposing) { if (!isDisposed) { if (disposing) { //if we're manually disposing, //then managed content should be unloaded resource = null; } isDisposed = true; } } } }