Пример #1
0
        public ResName GetResName(string assetName, string abName)
        {
            if (string.IsNullOrEmpty(assetName) && string.IsNullOrEmpty(abName))
            {
                return(null);
            }

            //file name should keep letter case
            if (!string.IsNullOrEmpty(assetName) && ResName.NotABAsset(assetName))
            {
                int index = assetName.LastIndexOf('.');
                if (index < 0)
                {
                    return(new ResName(null, assetName, null));
                }
                return(new ResName(null, assetName.Substring(0, index), assetName.Substring(index)));
            }

            if (!string.IsNullOrEmpty(assetName))
            {
                assetName = assetName.ToLower();
            }
            if (!string.IsNullOrEmpty(abName))
            {
                abName = abName.ToLower();
            }

            ResName resName = null;
            SearchResNameFailInfo failInfo = null;

            for (int i = 0; i < mResGroups.Count; i++)
            {
                resName = mResGroups[i].GetResName(assetName, abName, out failInfo);
                if (resName != null)
                {
                    return(resName);
                }

                if (failInfo.FailType == SearchResNameFailInfo.NAME_AMBIGUOUS)
                {
                    throw new Exception(string.Format(failInfo.ToString(), assetName));
                }
            }
            if (failInfo.FailType == SearchResNameFailInfo.NOTFOUND_AB)
            {
                throw new Exception(string.Format(failInfo.ToString(), abName));
            }
            if (failInfo.FailType == SearchResNameFailInfo.NOTFOUND_ASSET)
            {
                throw new Exception(string.Format(failInfo.ToString(), assetName));
            }
            return(null);
        }