You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

187 lines
4.5 KiB
C#

using System;
using System.Collections;
using System.Collections.Generic;
using Qoo.File;
using Qoo.Table;
using UnityEngine;
// Token: 0x02000156 RID: 342
public class ManTexture : MonoBehaviour
{
// Token: 0x060009A1 RID: 2465 RVA: 0x0002A914 File Offset: 0x00028B14
public UnityTexture Add(string name)
{
name = ManTexture.NormalizeName(name);
if (this.array.ContainsKey(name))
{
this.array[name].IncCount();
return this.array[name];
}
Texture2D texture_ = new Texture2D(1, 1, TextureFormat.ARGB32, false, false);
UnityFile file = Singleton<UnityFileLoader>.Instance.LoadImageFile(name);
SizeF size = DirScaleTable.GetSize(Nmb.GetFileInfo(name).DirName);
this.array.Add(name, new UnityTexture(name, texture_, file, size));
return this.array[name];
}
// Token: 0x060009A2 RID: 2466 RVA: 0x0002A9A4 File Offset: 0x00028BA4
public UnityTexture Add(string name, byte[] data)
{
name = ManTexture.NormalizeName(name);
if (this.array.ContainsKey(name))
{
this.array[name].IncCount();
return this.array[name];
}
Texture2D texture_ = new Texture2D(1, 1, TextureFormat.ARGB32, false, false);
this.array.Add(name, new UnityTexture(name, texture_, data, null));
return this.array[name];
}
// Token: 0x060009A3 RID: 2467 RVA: 0x0002AA14 File Offset: 0x00028C14
public UnityTexture Add(string name, Texture2D tex)
{
name = ManTexture.NormalizeName(name);
if (this.array.ContainsKey(name))
{
this.array[name].IncCount();
return this.array[name];
}
this.array.Add(name, new UnityTexture(name, tex));
return this.array[name];
}
// Token: 0x060009A4 RID: 2468 RVA: 0x0002AA78 File Offset: 0x00028C78
public bool Remove(UnityTexture tex, bool IsForce)
{
string name = tex.m_Name;
if (this.array.ContainsKey(tex.m_Name))
{
if (IsForce)
{
this.m_RemoveList.Add(tex);
this.array.Remove(name);
return true;
}
this.array[name].DecCount();
if (this.array[name].IsRelease())
{
this.m_RemoveList.Add(tex);
this.array.Remove(name);
return true;
}
}
return false;
}
// Token: 0x060009A5 RID: 2469 RVA: 0x0002AB0C File Offset: 0x00028D0C
public bool Remove(string name, bool IsForce)
{
name = ManTexture.NormalizeName(name);
if (this.array.ContainsKey(name))
{
if (IsForce)
{
this.m_RemoveList.Add(this.array[name]);
this.array.Remove(name);
return true;
}
this.array[name].DecCount();
if (this.array[name].IsRelease())
{
this.m_RemoveList.Add(this.array[name]);
this.array.Remove(name);
return true;
}
}
return false;
}
// Token: 0x060009A6 RID: 2470 RVA: 0x0002ABB4 File Offset: 0x00028DB4
private void Awake()
{
base.StartCoroutine("EndFrame");
}
// Token: 0x060009A7 RID: 2471 RVA: 0x0002ABC4 File Offset: 0x00028DC4
private void Update()
{
foreach (UnityTexture unityTexture in this.array.Values)
{
unityTexture.Update();
}
}
// Token: 0x060009A8 RID: 2472 RVA: 0x0002AC30 File Offset: 0x00028E30
private IEnumerator EndFrame()
{
for (;;)
{
yield return new WaitForEndOfFrame();
if (this.m_RemoveList == null)
{
break;
}
bool bDelete = this.m_RemoveList.Count > 0;
foreach (UnityTexture item in this.m_RemoveList)
{
UnityEngine.Object.Destroy(item.m_Texture);
item.m_Texture = null;
}
this.m_RemoveList.Clear();
if (bDelete)
{
yield return Resources.UnloadUnusedAssets();
GC.Collect();
}
}
yield break;
}
// Token: 0x060009A9 RID: 2473 RVA: 0x0002AC4C File Offset: 0x00028E4C
public bool IsFind(string name)
{
name = ManTexture.NormalizeName(name);
return this.array.ContainsKey(name);
}
// Token: 0x060009AA RID: 2474 RVA: 0x0002AC64 File Offset: 0x00028E64
internal bool IsUse(string name)
{
name = ManTexture.NormalizeName(name);
return this.array.ContainsKey(name) && this.array[name].IsInit;
}
// Token: 0x060009AB RID: 2475 RVA: 0x0002ACA0 File Offset: 0x00028EA0
public static string NormalizeName(string name)
{
name = name.ToLower();
int num = name.IndexOf('.');
if (num != -1)
{
name = name.Substring(0, num);
}
return name;
}
// Token: 0x060009AC RID: 2476 RVA: 0x0002ACD0 File Offset: 0x00028ED0
internal void Ready(string name, bool IsDec = true)
{
UnityTexture unityTexture = this.Add(name);
if (IsDec)
{
unityTexture.DecCount();
}
else
{
unityTexture.IncCount();
}
}
// Token: 0x040007E1 RID: 2017
private Dictionary<string, UnityTexture> array = new Dictionary<string, UnityTexture>();
// Token: 0x040007E2 RID: 2018
private List<UnityTexture> m_RemoveList = new List<UnityTexture>();
}