using System; using System.Collections.Generic; using Qoo; using UnityEngine; // Token: 0x0200014B RID: 331 [Serializable] public class BMFont { // Token: 0x17000115 RID: 277 // (get) Token: 0x0600092B RID: 2347 RVA: 0x00027CB0 File Offset: 0x00025EB0 public bool isValid { get { return this.mSaved.Count > 0 || this.LegacyCheck(); } } // Token: 0x17000116 RID: 278 // (get) Token: 0x0600092C RID: 2348 RVA: 0x00027CCC File Offset: 0x00025ECC // (set) Token: 0x0600092D RID: 2349 RVA: 0x00027CD4 File Offset: 0x00025ED4 public int charSize { get { return this.mSize; } set { this.mSize = value; } } // Token: 0x17000117 RID: 279 // (get) Token: 0x0600092E RID: 2350 RVA: 0x00027CE0 File Offset: 0x00025EE0 // (set) Token: 0x0600092F RID: 2351 RVA: 0x00027CE8 File Offset: 0x00025EE8 public int baseOffset { get { return this.mBase; } set { this.mBase = value; } } // Token: 0x17000118 RID: 280 // (get) Token: 0x06000930 RID: 2352 RVA: 0x00027CF4 File Offset: 0x00025EF4 // (set) Token: 0x06000931 RID: 2353 RVA: 0x00027CFC File Offset: 0x00025EFC public int texWidth { get { return this.mWidth; } set { this.mWidth = value; } } // Token: 0x17000119 RID: 281 // (get) Token: 0x06000932 RID: 2354 RVA: 0x00027D08 File Offset: 0x00025F08 // (set) Token: 0x06000933 RID: 2355 RVA: 0x00027D10 File Offset: 0x00025F10 public int texHeight { get { return this.mHeight; } set { this.mHeight = value; } } // Token: 0x1700011A RID: 282 // (get) Token: 0x06000934 RID: 2356 RVA: 0x00027D1C File Offset: 0x00025F1C public int glyphCount { get { return (!this.isValid) ? 0 : this.mSaved.Count; } } // Token: 0x1700011B RID: 283 // (get) Token: 0x06000935 RID: 2357 RVA: 0x00027D3C File Offset: 0x00025F3C // (set) Token: 0x06000936 RID: 2358 RVA: 0x00027D44 File Offset: 0x00025F44 public string spriteName { get { return this.mSpriteName; } set { this.mSpriteName = value; } } // Token: 0x1700011C RID: 284 // (get) Token: 0x06000937 RID: 2359 RVA: 0x00027D50 File Offset: 0x00025F50 public List symbols { get { return this.mSymbols; } } // Token: 0x06000938 RID: 2360 RVA: 0x00027D58 File Offset: 0x00025F58 public bool LegacyCheck() { if (this.mGlyphs != null && this.mGlyphs.Length > 0) { int i = 0; int num = this.mGlyphs.Length; while (i < num) { BMGlyph bmglyph = this.mGlyphs[i]; if (bmglyph != null) { bmglyph.index = i; this.mSaved.Add(bmglyph); this.mDict.Add(i, bmglyph); } i++; } this.mGlyphs = null; return true; } return false; } // Token: 0x06000939 RID: 2361 RVA: 0x00027DD4 File Offset: 0x00025FD4 private int GetArraySize(int index) { if (index < 256) { return 256; } if (index < 65536) { return 65536; } if (index < 262144) { return 262144; } return 0; } // Token: 0x0600093A RID: 2362 RVA: 0x00027E18 File Offset: 0x00026018 public BMGlyph GetGlyph(int index, bool createIfMissing) { BMGlyph bmglyph = null; if (this.mDict.Count == 0) { if (this.mSaved.Count == 0) { this.LegacyCheck(); } else { int i = 0; int count = this.mSaved.Count; while (i < count) { BMGlyph bmglyph2 = this.mSaved[i]; this.mDict.Add(bmglyph2.index, bmglyph2); i++; } } } if (!this.mDict.TryGetValue(index, out bmglyph) && createIfMissing) { bmglyph = new BMGlyph(); bmglyph.index = index; this.mSaved.Add(bmglyph); this.mDict.Add(index, bmglyph); } return bmglyph; } // Token: 0x0600093B RID: 2363 RVA: 0x00027ED0 File Offset: 0x000260D0 public BMGlyph GetGlyph(int index) { return this.GetGlyph(index, false); } // Token: 0x0600093C RID: 2364 RVA: 0x00027EDC File Offset: 0x000260DC public BMSymbol GetSymbol(string sequence, bool createIfMissing) { int i = 0; int count = this.mSymbols.Count; while (i < count) { BMSymbol bmsymbol = this.mSymbols[i]; if (bmsymbol.sequence == sequence) { return bmsymbol; } i++; } if (createIfMissing) { BMSymbol bmsymbol2 = new BMSymbol(); bmsymbol2.sequence = sequence; this.mSymbols.Add(bmsymbol2); return bmsymbol2; } return null; } // Token: 0x0600093D RID: 2365 RVA: 0x00027F4C File Offset: 0x0002614C public BMSymbol MatchSymbol(string text, int offset, int textLength) { int count = this.mSymbols.Count; if (count == 0) { return null; } textLength -= offset; for (int i = 0; i < count; i++) { BMSymbol bmsymbol = this.mSymbols[i]; int length = bmsymbol.length; if (length != 0 && textLength >= length) { bool flag = true; for (int j = 0; j < length; j++) { if (text[offset + j] != bmsymbol.sequence[j]) { flag = false; break; } } if (flag) { return bmsymbol; } } } return null; } // Token: 0x0600093E RID: 2366 RVA: 0x00027FF4 File Offset: 0x000261F4 public void Clear() { this.mGlyphs = null; this.mDict.Clear(); this.mSaved.Clear(); } // Token: 0x0600093F RID: 2367 RVA: 0x00028014 File Offset: 0x00026214 public void Trim(int xMin, int yMin, int xMax, int yMax) { if (this.isValid) { int i = 0; int count = this.mSaved.Count; while (i < count) { BMGlyph bmglyph = this.mSaved[i]; if (bmglyph != null) { bmglyph.Trim(xMin, yMin, xMax, yMax); } i++; } } } // Token: 0x06000940 RID: 2368 RVA: 0x00028068 File Offset: 0x00026268 public void Build() { BMGlyph glyph = this.GetGlyph(9633); if (glyph != null) { int advance = glyph.advance; int baseOffset = this.baseOffset; foreach (KeyValuePair keyValuePair in this.mDict) { keyValuePair.Value.offsetY -= baseOffset - advance; } this.baseOffset = advance; this.charSize = advance; } foreach (BMGlyph bmglyph in this.mDict.Values) { if (bmglyph.kerning != null && bmglyph.kerning.Count > 0) { string text = string.Empty; for (int num = 0; num != bmglyph.kerning.Count; num += 2) { text += (char)bmglyph.kerning[num]; text += ' '; } char c = (char)bmglyph.index; Qoo.Debug.Print(string.Format("Kerning:BASE={0}:PAIR:{1}", c, text)); } } } // Token: 0x06000941 RID: 2369 RVA: 0x000281F8 File Offset: 0x000263F8 public bool CheckGlyph(string str) { foreach (char index in str) { if (this.GetGlyph((int)index) == null) { return false; } } return true; } // Token: 0x040007A7 RID: 1959 [HideInInspector] [SerializeField] private BMGlyph[] mGlyphs; // Token: 0x040007A8 RID: 1960 [HideInInspector] [SerializeField] private int mSize; // Token: 0x040007A9 RID: 1961 [SerializeField] [HideInInspector] private int mBase; // Token: 0x040007AA RID: 1962 [HideInInspector] [SerializeField] private int mWidth; // Token: 0x040007AB RID: 1963 [SerializeField] [HideInInspector] private int mHeight; // Token: 0x040007AC RID: 1964 [HideInInspector] [SerializeField] private string mSpriteName; // Token: 0x040007AD RID: 1965 [SerializeField] [HideInInspector] private List mSaved = new List(); // Token: 0x040007AE RID: 1966 [SerializeField] [HideInInspector] private List mSymbols = new List(); // Token: 0x040007AF RID: 1967 private Dictionary mDict = new Dictionary(); }