private void LoadCaches(string[] entities) { for (int i = 0; i < entities.Length; ++i) { string name = entities[i]; if (!m_cacheEntities.ContainsKey(name)) { EB.Debug.LogError("DataCacheManager.LoadCaches: entity not found for {0}", name); continue; } DataCacheEntity entity = m_cacheEntities[name]; if (entity.Cache != null) { continue; } IVersionedDataCache cache = LoadCache(name, entity.Type); if (cache != null) { entity.Cache = cache; entity.Version = cache.Version; } } }
private void RegisterEntity(string name, System.Type type, OnCacheUpdatedDelegate onupdated) { if (m_cacheEntities.ContainsKey(name)) { DataCacheEntity entity = m_cacheEntities[name]; if (entity.Type != type) { EB.Debug.LogError("DataCacheManager.RegisterCacheEntity: exists {0} named {1} not match {2}", m_cacheEntities[name].ToString(), name, type.ToString()); return; } EB.Debug.LogWarning("DataCacheManager.RegisterCacheEntity: {0} named {1} already exists", type.ToString(), name); if (onupdated != null) { entity.OnCacheUpdated += onupdated; } } else { DataCacheEntity entity = new DataCacheEntity(); entity.Name = name; entity.Type = type; entity.Name = string.Empty; if (onupdated != null) { entity.OnCacheUpdated += onupdated; } m_cacheEntities[name] = entity; } }
public T Load <T>(string name) where T : IVersionedDataCache { UnityEngine.Debug.Assert(m_cacheEntities.ContainsKey(name), "DataCacheManager.Load: entity not exists"); LoadCaches(new string[] { name }); DataCacheEntity entity = m_cacheEntities[name]; return((T)entity.Cache); }