2014-12-31 04:07:05 +00:00
|
|
|
|
using System;
|
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
using System.Linq;
|
|
|
|
|
using System.Text;
|
|
|
|
|
|
|
|
|
|
namespace Axios.Engine.Data
|
|
|
|
|
{
|
|
|
|
|
// Q. What is the point of this?
|
|
|
|
|
// A. This is not to cache textures loaded by content manager
|
|
|
|
|
// but other data/content that isn't. Use cases include:
|
|
|
|
|
// - Any graphics generated during runtime (such as dialogs)
|
2015-01-03 02:14:38 +00:00
|
|
|
|
// - Command console
|
2014-12-31 04:07:05 +00:00
|
|
|
|
// - Any data that is loaded in during run time (such as maps)
|
|
|
|
|
// Content manager performs it's own caching so anything loaded by it
|
|
|
|
|
// or the Gameservice - then attempted to load again will not be loaded
|
|
|
|
|
// again but rather a reference to it will be returned
|
|
|
|
|
// ************************************************
|
|
|
|
|
// DANGER WILL ROBINSON DANGER
|
|
|
|
|
// ************************************************
|
|
|
|
|
// Only store stuff here that you want during the FULL lifecycle of your game
|
|
|
|
|
// The cache is never cleared - so a reference will exist for the objects you leave
|
|
|
|
|
// You MAY clear the cache by using the clear method or unset
|
|
|
|
|
//
|
|
|
|
|
// You probably don't want this
|
|
|
|
|
// There is no cache...
|
|
|
|
|
// This is not the cache you are looking for...
|
|
|
|
|
//
|
|
|
|
|
public class Cache : Singleton<Cache>
|
|
|
|
|
{
|
|
|
|
|
private Dictionary<string, object> _cache;
|
|
|
|
|
public Cache()
|
|
|
|
|
{
|
|
|
|
|
_cache = new Dictionary<string, object>();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public object get(string key)
|
|
|
|
|
{
|
2015-01-03 02:14:38 +00:00
|
|
|
|
object val;
|
|
|
|
|
_cache.TryGetValue(key, out val);
|
|
|
|
|
return val;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public T get<T>(string key)
|
|
|
|
|
{
|
|
|
|
|
object val;
|
|
|
|
|
_cache.TryGetValue(key, out val);
|
|
|
|
|
return (T)val;
|
2014-12-31 04:07:05 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void set(string key, object obj)
|
|
|
|
|
{
|
|
|
|
|
_cache[key] = obj;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void unset(string key)
|
|
|
|
|
{
|
|
|
|
|
_cache.Remove(key);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void clear()
|
|
|
|
|
{
|
|
|
|
|
_cache = new Dictionary<string, object>();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|