public void GetAtlas(List <UnitIconImageCacheTestCase.AtlasCache> registerAtlases, List <string> removeAtlases, string argKey, UIAtlas expected) { var cache = new UnitIconImageCache(); foreach (var registerAtlas in registerAtlases) { cache.Register(registerAtlas.key, registerAtlas.atlas); } foreach (var removeAtlasName in removeAtlases) { cache.RemoveAtlas(removeAtlasName); } var result = cache.GetAtlas(argKey); if (expected == null) { Assert.True(result == null); } else { Assert.True( result != null && result == expected); } }
private void GetCharaIconSprite(uint unCharaID, System.Action <Sprite> callback) { var name = UnitIconImageCache.GetCharaIconSpriteName(unCharaID); if (name == "") { Call(m_DefaultIcon, callback); return; } m_loader.SerialLoad(name, callback); }
public void Clear() { foreach (var testCase in UnitIconImageCacheTestCase.GetAtlas) { var registerAtlases = (List <UnitIconImageCacheTestCase.AtlasCache>)testCase.Arguments[0]; var cache = new UnitIconImageCache(); foreach (var registerAtlas in registerAtlases) { cache.Register(registerAtlas.key, registerAtlas.atlas); } cache.Clear(); foreach (var registerAtlas in registerAtlases) { var result = cache.GetAtlas(registerAtlas.key); Assert.True(result == null); } break; } foreach (var testCase in UnitIconImageCacheTestCase.GetSprite) { UnitIconImageCacheTestCase.InitializeSprites(); var registerSprites = (List <UnitIconImageCacheTestCase.SpriteCache>)testCase.Arguments[0]; var cache = new UnitIconImageCache(); foreach (var registerSprite in registerSprites) { cache.Register(registerSprite.key, registerSprite.sprite); } cache.Clear(); foreach (var registerSprite in registerSprites) { var result = cache.GetSprite(registerSprite.key); Assert.True(result == null); } break; } }
public long Get(uint unCharaFixID, ref string spriteName, System.Action <Sprite> callback = null, bool hipriority = false) { if (spriteName == string.Empty) { spriteName = UnitIconImageCache.GetCharaIconSpriteName(unCharaFixID); } string name = spriteName; long requestId = GetCharaIcon(unCharaFixID, sprite => { Call(sprite, callback); }, hipriority); return(requestId); }
public void GetSprite() { foreach (var testCase in UnitIconImageCacheTestCase.GetSprite) { UnitIconImageCacheTestCase.InitializeSprites(); var registerSprites = (List <UnitIconImageCacheTestCase.SpriteCache>)testCase.Arguments[0]; var removeSprites = (List <string>)testCase.Arguments[1]; var argKey = (string)testCase.Arguments[2]; var expected = (Sprite)testCase.Arguments[3]; var cache = new UnitIconImageCache(); foreach (var registerSprite in registerSprites) { cache.Register(registerSprite.key, registerSprite.sprite); } foreach (var removeSpriteName in removeSprites) { cache.RemoveSprite(removeSpriteName); } var result = cache.GetSprite(argKey); if (expected == null) { Assert.True(result == null, "Failed at " + testCase.TestName); } else { Assert.True( result != null && result == expected , "Failed at " + testCase.TestName); } } }
public void SetCache(UnitIconImageCache cache) { m_cache = cache; }
// ================================ take sprite from icon pack // TODO : refactor private long GetCharaIcon(uint unCharaFixID, System.Action <Sprite> callback = null, bool hipriority = false) { long requestId = 0; if (unCharaFixID == 0) { Call(m_DefaultIcon, callback); return(requestId); } requestId = getRequestId(); switch (m_loaderType) { case LoaderType.Atlus: { GetCharaIconAtlas(unCharaFixID, atlas => { var strSpriteName = UnitIconImageCache.GetCharaIconSpriteName(unCharaFixID); if (atlas == null) { Debug.LogError("Atlas None! - " + " , charaID:" + unCharaFixID); Call(m_DefaultIcon, callback); return; } var sprire = atlas.GetSprite(strSpriteName); if (sprire == null) { Debug.LogError("Atlas Inside None! - " + strSpriteName); } Call(sprire, callback); }); } break; case LoaderType.Sprite: { GetCharaIconSprite(unCharaFixID, callback); } break; case LoaderType.AssetBundle: { string spritename = UnitIconImageCache.GetCharaIconSpriteName(unCharaFixID); //すでにキャッシュされている SpriteCacheInfo cacheInfo = m_cache.GetSpriteInfo(spritename); if (cacheInfo != null) { if (hipriority) { cacheInfo.HiPriority = true; } if (cacheInfo.ready) { //準備完了 Sprite chashSprite = GetCharaIconFromChash(cacheInfo); if (chashSprite != null) { Call(chashSprite, callback); } } else { //まだリクエスト中 //リクエストにアクション追加 m_AtlusList[cacheInfo.atlusIndex].AddRequestCallBack(cacheInfo, callback); //デフォルトアイコンを設定 Call(m_DefaultIcon, callback); } return(0); } //デフォルトアイコンを設定 Call(m_DefaultIcon, callback); //アセットバンドルから読み込んで追加 GetCharaIconAssetBundle(unCharaFixID, assetbundle => { //アセットバンドルがない if (assetbundle == null) { Debug.LogError("AssetBundle None! - " + " , charaID:" + unCharaFixID); Call(m_DefaultIcon, callback); return; } //すでにキャッシュ済みになっていないか? SpriteCacheInfo nowInfo = GetCacheSpriteInfo(spritename); if (nowInfo != null) { if (hipriority) { nowInfo.HiPriority = true; } GetSprite(assetbundle, requestId, nowInfo, callback); return; } //アトラスに空きがあるかどうか SpriteCacheInfo freeInfo = GetFreeSpriteInfo(); if (freeInfo != null) { //ある場合は追加 freeInfo.chara_fix_id = unCharaFixID; freeInfo.name = spritename; freeInfo.HiPriority = hipriority; GetSprite(assetbundle, requestId, freeInfo, callback); return; } //ない場合はキャッシュから使用率が低いものを取得して置き換え SpriteCacheInfo replaceInfo = GetReplaceSpriteInfo(); if (replaceInfo != null) { replaceInfo.chara_fix_id = unCharaFixID; replaceInfo.name = spritename; replaceInfo.ready = false; replaceInfo.HiPriority = hipriority; GetSprite(assetbundle, requestId, replaceInfo, callback); return; } }); } break; } return(requestId); }