コード例 #1
0
ファイル: list.cs プロジェクト: bsv798/p3fes
 public ImgListItem FindMd5(ImgListItem item)
 {
     foreach (var li in list)
         if (item == li)
             return li;
     return null;
 }
コード例 #2
0
ファイル: list.cs プロジェクト: bsv798/p3fes
 public bool ExistsMd5(ImgListItem item)
 {
     foreach (var li in list)
         if (item == li)
             return true;
     return false;
 }
コード例 #3
0
ファイル: list.cs プロジェクト: bsv798/p3fes
        public void RemoveItemAndSimilar(ImgListItem item)
        {
            int i, j;

            for (i = 0; i < Count; i++)
                if (this[i] == item)
                    break;

            if (i == Count)
                return;

            list.RemoveAt(i);

            for (j = i; j < Count; j++)
                if (this[j] == item)
                    list.RemoveAt(j);
                else
                    break;
        }
コード例 #4
0
ファイル: list.cs プロジェクト: bsv798/p3fes
 public void AddUnsorted(ImgListItem item)
 {
     list.Add(item);
 }
コード例 #5
0
ファイル: list.cs プロジェクト: bsv798/p3fes
 public void Add(ImgListItem item)
 {
     AddUnsorted(item);
     list.Sort(CompareImgListItemsMd5Name);
 }
コード例 #6
0
ファイル: list.cs プロジェクト: bsv798/p3fes
 public void AddUnique(ImgListItem item)
 {
     if (!ExistsMd5(item))
         Add(item);
 }
コード例 #7
0
ファイル: list.cs プロジェクト: bsv798/p3fes
        private void CheckRenamedFiles()
        {
            ImgListItem newItem, oldItem;
            string[] files;

            files = sio.Directory.GetFiles(extractDir, "*.png", sio.SearchOption.AllDirectories);
            foreach (var file in files)
            {
                newItem = new ImgListItem(file);
                if (rList.ExistsMd5(newItem))
                {
                    oldItem = rList.FindMd5(newItem);
                    newItem.CopyValues(oldItem);
                    newItem.pngAlias = file.Remove(0, extractDir.Length);
                    if (newItem.pngAlias.Length == oldItem.pngAlias.Length)
                        if (newItem.pngAlias.ToLower() == oldItem.pngAlias.ToLower())
                            continue;

                    if (sio.File.Exists(extractDir + oldItem.pngAlias))
                        sio.File.Delete(extractDir + newItem.pngAlias);
                    else
                    {
                        Console.WriteLine("File '{0}' was renamed to '{1}'", oldItem.pngAlias, newItem.pngAlias);
                        rList.UpdateItemAndSimilar(newItem);
                    }
                }
            }
        }
コード例 #8
0
ファイル: list.cs プロジェクト: bsv798/p3fes
        private void ExtractImg(string parentDir)
        {
            string[] files;
            string[] dirs;
            ImgListItem item;
            RawImgClass img;
            RawImgTypes type;

            img = null;

            files = sio.Directory.GetFiles(parentDir, "*.tmx");
            if (files.Length > 0)
                Console.WriteLine("Extracting directory '{0}'", parentDir);
            foreach (var file in files)
            {
                switch (type = RawImgClass.GetImgType(file))
                {
                    case RawImgTypes.p3tmx:
                        img = new TmxClass(file);
                        break;
                }
                if (type != RawImgTypes.unknown)
                {
                    item = new ImgListItem(imgDir, file, img);
                    item.type = (int)type;
                    if (!gList.ExistsMd5(item))
                    {
                        item.pngAlias = string.Format("{0:x4}.{1}", globalCounter++, item.pngAlias);
                        img.ToPng(extractDir + item.pngAlias);
                        item.md5png = img.png.md5string;
                        gList.AddUnique(item);
                    }
                    else
                    {
                        item.md5png = gList.FindMd5(item).md5png;
                        item.pngAlias = gList.FindMd5(item).pngAlias;
                        gList.Add(item);
                    }
                }
            }

            dirs = sio.Directory.GetDirectories(parentDir);
            foreach (var dir in dirs)
            {
                ExtractImg(dir);
            }
        }
コード例 #9
0
ファイル: list.cs プロジェクト: bsv798/p3fes
        private void CheckChangedFiles()
        {
            ImgListItem item;
            string[] files;
            string fileName;
            int i;

            files = sio.Directory.GetFiles(extractDir, "*.png", sio.SearchOption.AllDirectories);

            foreach (var file in files)
            {
                item = new ImgListItem(file);
                if (!rList.ExistsMd5(item))
                {
                    fileName = file.Remove(0, extractDir.Length);
                    for (i = 0; i < rList.Count; i++)
                        if (rList[i].pngAlias.Length == fileName.Length)
                            if (rList[i].pngAlias == fileName)
                            {
                                rList[i].SetMd5(item.md5string);
                                rList[i].md5png = item.md5string;
                                rList.UpdateItemAndSimilar(rList[i]);
                                Console.WriteLine("File '{0}' was changed", rList[i].pngAlias);
                            }
                }
            }
        }
コード例 #10
0
ファイル: list.cs プロジェクト: bsv798/p3fes
 public void CopyValues(ImgListItem item)
 {
     type = item.type;
     bitCount = item.bitCount;
     width = item.width;
     height = item.height;
     name = item.name;
     pngAlias = item.pngAlias;
     //fullName = item.fullName;
     SetMd5(item.md5string);
     md5png = item.md5string;
 }
コード例 #11
0
ファイル: list.cs プロジェクト: bsv798/p3fes
        private static int CompareImgListItemsMd5Name(ImgListItem a, ImgListItem b)
        {
            for (int i = 0; i < ImgListItem.hashLength; i++)
                if (a.md5bytes[i] > b.md5bytes[i])
                    return 1;
                else if (a.md5bytes[i] < b.md5bytes[i])
                    return -1;

            return a.fullName.CompareTo(b.fullName);
        }
コード例 #12
0
ファイル: list.cs プロジェクト: bsv798/p3fes
        private static int CompareImgListItemsMd5(ImgListItem a, ImgListItem b)
        {
            for (int i = 0; i < ImgListItem.hashLength; i++)
                if (a.md5bytes[i] > b.md5bytes[i])
                    return 1;
                else if (a.md5bytes[i] < b.md5bytes[i])
                    return -1;

            return 0;
        }
コード例 #13
0
ファイル: list.cs プロジェクト: bsv798/p3fes
        public void UpdateItemAndSimilar(ImgListItem item)
        {
            int i, j;

            for (i = 0; i < Count; i++)
                if (this[i] == item)
                    break;

            for (j = i; j < Count; j++)
                if (this[j] == item)
                    this[j].CopyValues(item);
                else
                    break;
        }