예제 #1
0
        public void AddOrUpdate(ScriptID id)
        {
            var n0 = Search(id.Name);
            var n1 = Search(id.FileID, id.GUID);

            if (n1 != null && n0 != n1)
            {
                throw new System.Exception($"查询到冲突:\nname:{id.Name},fileID:{id.FileID},guid:{id.GUID}\nname:{n1.Name},fileID:{n1.FileID},guid:{n1.GUID}");
            }

            if (n0 != null)
            {
                n0.FileID = id.FileID;
                n0.GUID   = id.GUID;
                if (Log)
                {
                    Debug.Log($"update {n0.Name} from fileID:{n0.FileID},guid:{n0.GUID} to fileID:{id.FileID},guid:{id.GUID}");
                }
            }
            else
            {
                _all.Add(id);
                if (Log)
                {
                    Debug.Log($"add name:{id.Name},fileID:{id.FileID},guid:{id.GUID}");
                }
            }
        }
예제 #2
0
        public bool Add(ScriptID id)
        {
            var n0 = Search(id.Name);

            if (n0 != null)
            {
                return(false);
            }
            else
            {
                _all.Add(id);
                return(true);
            }
        }
예제 #3
0
 /// <summary>
 /// Returns true if specified script is Indic.
 /// </summary>
 private static bool IsScriptIndic(ScriptID scriptId)
 {
     if (scriptId == ScriptID.Bengali ||
         scriptId == ScriptID.Devanagari ||
         scriptId == ScriptID.Gurmukhi ||
         scriptId == ScriptID.Gujarati ||
         scriptId == ScriptID.Kannada ||
         scriptId == ScriptID.Malayalam ||
         scriptId == ScriptID.Oriya ||
         scriptId == ScriptID.Tamil ||
         scriptId == ScriptID.Telugu)
     {
         return(true);
     }
     else
     {
         return(false);
     }
 }
예제 #4
0
        public void GetCharAttribute(
            int unicodeScalar,
            out bool isCombining,
            out bool needsCaretInfo,
            out bool isIndic,
            out bool isDigit,
            out bool isLatin,
            out bool isStrong
            )
        {
            CharacterAttribute charAttribute = Classification.CharAttributeOf((int)Classification.GetUnicodeClass(unicodeScalar));

            byte itemClass = charAttribute.ItemClass;

            isCombining = (itemClass == (byte)ItemClass.SimpleMarkClass ||
                           itemClass == (byte)ItemClass.ComplexMarkClass ||
                           Classification.IsIVS(unicodeScalar));

            isStrong = (itemClass == (byte)ItemClass.StrongClass);

            int script = charAttribute.Script;

            needsCaretInfo = ScriptCaretInfo[script];

            ScriptID scriptId = (ScriptID)script;

            isDigit = scriptId == ScriptID.Digit;
            isLatin = scriptId == ScriptID.Latin;
            if (isLatin)
            {
                isIndic = false;
            }
            else
            {
                isIndic = IsScriptIndic(scriptId);
            }
        }
예제 #5
0
        public void Write(SerializedWriter writer)
        {
            if (HasScriptTypeIndex(writer.Generation))
            {
                writer.Write((int)TypeID);
            }
            else
            {
                writer.Write(OriginalTypeID);
            }
            if (HasIsStrippedType(writer.Generation))
            {
                writer.Write(IsStrippedType);
            }
            if (HasScriptTypeIndex(writer.Generation))
            {
                writer.Write(ScriptTypeIndex);
            }

            if (HasHash(writer.Generation))
            {
                if (TypeID == ClassIDType.MonoBehaviour)
                {
                    ScriptID.Write(writer);
                }
                OldTypeHash.Write(writer);
            }

            if (OldType != null)
            {
                OldType.Write(writer);
                if (HasTypeDependencies(writer.Generation))
                {
                    writer.WriteArray(TypeDependencies);
                }
            }
        }
예제 #6
0
        public void Read(SerializedReader reader)
        {
            if (HasScriptTypeIndex(reader.Generation))
            {
                TypeID = (ClassIDType)reader.ReadInt32();
            }
            else
            {
                OriginalTypeID = reader.ReadInt32();
            }
            if (HasIsStrippedType(reader.Generation))
            {
                IsStrippedType = reader.ReadBoolean();
            }
            if (HasScriptTypeIndex(reader.Generation))
            {
                ScriptTypeIndex = reader.ReadInt16();
            }

            if (HasHash(reader.Generation))
            {
                if (TypeID == ClassIDType.MonoBehaviour)
                {
                    ScriptID.Read(reader);
                }
                OldTypeHash.Read(reader);
            }

            if (OldType != null)
            {
                OldType.Read(reader);
                if (HasTypeDependencies(reader.Generation))
                {
                    TypeDependencies = reader.ReadInt32Array();
                }
            }
        }
예제 #7
0
 /// <summary>
 /// Returns true if specified script is Indic.
 /// </summary> 
 private static bool IsScriptIndic(ScriptID scriptId)
 { 
     if (scriptId == ScriptID.Bengali 
          || scriptId == ScriptID.Devanagari
          || scriptId == ScriptID.Gurmukhi 
          || scriptId == ScriptID.Gujarati
          || scriptId == ScriptID.Kannada
          || scriptId == ScriptID.Malayalam
          || scriptId == ScriptID.Oriya 
          || scriptId == ScriptID.Tamil
          || scriptId == ScriptID.Telugu) 
     { 
         return true;
     } 
     else
     {
         return false;
     } 
 }