Exemplo n.º 1
0
        public void TestMethod3()
        {
            var dir = @"D:\avatar_new\image";

            foreach (var prof in pairs.Keys)
            {
                foreach (var part in part_array)
                {
                    var file = $@"{dir}\{prof}\{part}";

                    var path = $"d:/avatar_ex/image/{prof}/{part}";
                    if (!Directory.Exists(path))
                    {
                        Directory.CreateDirectory(path);
                    }
                    var list = Npks.Load(file);

                    foreach (var img in list)
                    {
                        var tables = img.Tables;
                        var match  = Regex.Match(img.Name, "\\d+");
                        if (match.Success)
                        {
                            var code = int.Parse(match.Value);
                            for (var i = 0; i < tables.Count; i++)
                            {
                                img.TableIndex = i;
                                var image = img[pairs[prof]];
                                ImageToJson(path, prof, part, img.Name, Npks.CompleteCode(code + i), image);
                            }
                        }
                    }
                }
            }
        }
Exemplo n.º 2
0
 public void Do(params object[] args)
 {
     Array = args as Album[];
     List  = new List <Album>();
     foreach (var al in Array)
     {
         var arr   = new Album[al.Tables.Count];
         var path  = al.Name;
         var regex = new Regex("\\d+");
         var match = regex.Match(path);
         if (!match.Success)
         {
             continue;
         }
         var prefix = path.Substring(0, match.Index);
         var suffix = path.Substring(match.Index + match.Length);
         var code   = int.Parse(match.Value);
         al.Adjust();
         var data = al.Data;
         var ms   = new MemoryStream(data);
         for (var i = 0; i < arr.Length; i++)
         {
             var name = prefix + Npks.CompleteCode(code + i) + suffix;
             arr[i]      = Npks.ReadNPK(ms, al.Name)[0];
             arr[i].Path = al.Path.Replace(al.Name, name);
             arr[i].Tables.Clear();
             arr[i].Tables.Add(al.Tables[i]);
             ms.Seek(0, SeekOrigin.Begin);
         }
         ms.Close();
         Connector.RemoveFile(al);
         Connector.AddFile(false, arr);
         List.AddRange(arr);
     }
 }
Exemplo n.º 3
0
 public override byte[] ConvertToByte(Sprite entity)
 {
     using (var ms = new MemoryStream()) {
         Npks.WriteImage(ms, entity);
         return(ms.ToArray());
     }
 }
Exemplo n.º 4
0
 public void Test()
 {
     foreach (string f in Directory.GetFiles(@"D:\地下城与勇士\ImagePacks2"))
     {
         Npks.Load(f);
     }
 }
Exemplo n.º 5
0
        public void Do(params object[] args)
        {
            Index       = (int)args[0];
            Clipboarder = Clipboarder.Default;
            var array = new Album[0];

            if (Clipboarder != null)
            {
                array = Clipboarder.Albums;
                if (Clipboarder.Mode == ClipMode.Cut)
                {
                    Clipboarder.Clear();
                    Clipboard.Clear();
                    Connector.RemoveFile(array);
                }
                for (var i = 0; i < array.Length; i++)
                {
                    array[i] = array[i].Clone();
                }
            }
            else if (Clipboard.ContainsFileDropList())
            {
                var collection = Clipboard.GetFileDropList();
                var file_arr   = new string[collection.Count];
                collection.CopyTo(file_arr, 0);
                array = Npks.Load(file_arr).ToArray();
                var builder = new LSBuilder();
                for (var i = 0; i < array.Length; i++)
                {
                    var name = file_arr[i].RemoveSuffix(".img");
                    name  = name.RemoveSuffix(".ogg");
                    name += ".json";
                    if (File.Exists(name))
                    {
                        var root = builder.Read(name)["path"];
                        var path = root.Value?.ToString();
                        if (path != null)
                        {
                            array[i].Path = path;
                        }
                    }
                }
            }
            Indexes = new int[array.Length];
            if (array.Length > 0)
            {
                if (Connector.FileCount > 0)
                {
                    Connector.SelectedFileIndex = Connector.FileCount - 1;
                }
                Index = Index > Connector.List.Count ? Connector.List.Count : Index;
                Index = Index < 0 ? 0 : Index;
                for (var i = 0; i < array.Length; i++)
                {
                    Indexes[i] = Index + i;
                }
                Connector.List.InsertRange(Index, array);
            }
        }
Exemplo n.º 6
0
 protected override void OnDragDrop(DragEventArgs e)
 {
     if (e.Data.GetDataPresent(DataFormats.FileDrop))
     {
         var args  = e.Data.GetData(DataFormats.FileDrop, false) as string[];
         var array = Npks.Load(args).ToArray();
         Connector.Do("addMerge", array);
     }
 }
Exemplo n.º 7
0
        public void Priview(int index, Graphics g)
        {
            var array = Queues.ToArray();

            Array.Reverse(array);
            var bmp = Npks.Preview(array, index);

            g.DrawImage(bmp, new Point(20, 20));
        }
Exemplo n.º 8
0
 public void Action(params Album[] array)
 {
     Npks.Compare(Program.Config["GamePath"].Value, (a1, a2) => {
         var count = a1.List.Count - a2.List.Count;
         if (count > 0)
         {
             a2.List.AddRange(a1.List.GetRange(a2.List.Count, count));
         }
     }, array);
 }
Exemplo n.º 9
0
        public List <Album> Load(string filename)
        {
            var fs   = File.Open(filename, FileMode.Open);
            var data = Spks.Decompress(fs);

            fs.Close();
            using (var ms = new MemoryStream(data)) {
                return(Npks.ReadNPK(ms, filename.RemoveSuffix(".spk")));
            }
        }
Exemplo n.º 10
0
        private void AddOutside(object sender, EventArgs e)
        {
            var dialog = new OpenFileDialog();

            dialog.Filter      = $"{Language["ImageResources"]}| *.NPK; *.img";
            dialog.Multiselect = true;
            if (dialog.ShowDialog() == DialogResult.OK)
            {
                var array = Npks.Load(dialog.FileNames).ToArray();
                Connector.Do("addMerge", array);
            }
        }
Exemplo n.º 11
0
 public void Do(params object[] args)
 {
     Array = args as Album[];
     List  = new List <Album>();
     foreach (var al in Array)
     {
         var arr = Npks.SplitFile(al);
         Connector.RemoveFile(al);
         Connector.AddFile(false, arr);
         List.AddRange(arr);
     }
 }
Exemplo n.º 12
0
 public void Action(params Album[] array)
 {
     Npks.Compare(Program.Config["GamePath"].Value, (a1, a2) => {
         var count = a1.List.Count - a2.List.Count;
         if (count > 0)
         {
             var source = a1.List.GetRange(a2.List.Count, count);
             source.ForEach(e => {
                 e.Load();
                 e.Parent = a2;
             });
             a2.List.AddRange(source);
         }
     }, array);
 }
Exemplo n.º 13
0
        public void Test() {
            foreach(var f in Directory.GetFiles(@"D:\地下城与勇士\ImagePacks2")) {
                var list=Npks.Load(f);
                foreach (var e in list) {
                    if (e.Version == Img_Version.Ver5) {
                        var handler = e.Handler as FifthHandler;
                        foreach (var a in handler.List) {
                            var image = a.Pictrue;
                        }
                    }

                    GC.Collect();
                }
            }
        }
Exemplo n.º 14
0
        public void Test01()
        {
            var prof_list = GetProfession();

            foreach (var prof in prof_list)
            {
                var dir = $"{SAVE_DIR}/image/{prof}";
                if (Directory.Exists(dir))
                {
                    Directory.Delete(dir, true);
                }
                Directory.CreateDirectory(dir);
                foreach (var part in part_array)
                {
                    var file    = $"{GAME_DIR}/ImagePacks2/sprite_character_{prof}{(prof.EndsWith("_at") ? "" : "_")}equipment_avatar_{part}.NPK";
                    var avatars = GetAvatar(prof, part);
                    var list    = Npks.Load(file);
                    var arr     = new List <Album>();
                    list = list.Where(item => {
                        var name = item.Name;
                        if (name.Contains("(tn)") || name.Contains("_mask"))
                        {
                            return(false);
                        }
                        var regex = new Regex("\\d+");
                        var match = regex.Match(name);
                        if (match.Success)
                        {
                            var codeStr = match.Value;
                            var code    = int.Parse(codeStr);
                            var rs      = false;
                            for (var i = 0; i < item.Tables.Count; i++)
                            {
                                rs = rs || !avatars.Contains((code + i).ToString());
                            }
                            return(rs);
                        }
                        return(false);
                    }).ToList();
                    var target = $"{dir}/{part}/";
                    if (!Directory.Exists(target))
                    {
                        Directory.CreateDirectory(target);
                    }
                    Npks.SaveToDirectory($"{dir}/{part}/", list);
                }
            }
        }
Exemplo n.º 15
0
        public void Do(params object[] args)
        {
            Array  = args as Album[];
            Counts = new int[Array.Length];
            var i = 0;

            Npks.Compare(Program.Config["GamePath"].Value, (a1, a2) => {
                Counts[i] = a1.List.Count - a2.List.Count;
                if (Counts[i] > 0)
                {
                    var source = a1.List.GetRange(a2.List.Count, Counts[i]); //获得源文件比当前文件多的贴图集合
                    a2.List.AddRange(source);                                //加入到当前文件中,不修改原贴图。
                    a2.List.ForEach(item => item.Parent = a2);
                }
                i++;
            }, Array);
        }
Exemplo n.º 16
0
        public void TestSaveImg()
        {
            var list = Npks.Load(@"D:\地下城与勇士\ImagePacks2\sprite_character_swordman_equipment_avatar_coat.NPK");

            Assert.IsTrue(list.Count > 0);
            var img = list[0];

            Assert.IsNotNull(img);
            var target = @"d:\test\v6\01.img";

            img.Save(target);
            Assert.IsTrue(File.Exists(target));
            list = Npks.Load(target);
            Assert.IsTrue(list.Count > 0);
            img = list[0];
            Assert.IsNotNull(img);
        }
Exemplo n.º 17
0
        public void TestSaveImage()
        {
            var list = Npks.Load(@"D:\test\v6\01.img");

            Assert.IsTrue(list.Count > 0);
            var img = list[0];

            Assert.IsNotNull(img);
            var dir = @"D:\test\v6\image\";

            if (Directory.Exists(dir))
            {
                Directory.Delete(dir, true);
                Directory.CreateDirectory(dir);
            }
            img.List.ForEach(e => e.Picture.Save(dir + e.Index + ".png"));
            Assert.IsTrue(Directory.GetFiles(dir, "*.png").Length == img.Count);
        }
Exemplo n.º 18
0
        public override byte[] ConvertToByte(Sprite entity)
        {
            if (entity.Compress == Compress.ZLIB && entity.Type < ColorBits.LINK)
            {
                using (var ms = new MemoryStream()){
                    Npks.WriteImage(ms, entity);
                    return(ms.ToArray());
                }
            }
            var dds = DDS.CreateFromBitmap(entity.Picture, entity.Compress);

            Map[entity] = new DDS_Info()
            {
                DDS       = dds,
                RightDown = new Point(entity.Width, entity.Height)
            };
            return(dds.Data);
        }
Exemplo n.º 19
0
        public void GetWeapon()
        {
            var dir = "d:/avatar/new";

            foreach (var prof in pairs.Keys)
            {
                foreach (var typed in Directory.GetDirectories($"{dir}/{prof.Replace("_at", "")}/weapon"))
                {
                    var type = typed.GetSuffix();
                    var file = $"{GAME_PATH}/sprite_character_{prof}{(prof.EndsWith("_at") ? "" : "_")}equipment_weapon_{GetType(prof, type)}.npk";
                    var list = Npks.Load(file);
                    var ps   = $"{dir}/{prof}/weapon/{type}";
                    if (!Directory.Exists(ps))
                    {
                        continue;
                    }
                    var images = Directory.GetFiles(ps);

                    var path = $"d:/avatar/new_image/{prof}/weapon/{type}";
                    if (!Directory.Exists(path))
                    {
                        Directory.CreateDirectory(path);
                    }
                    for (var i = 0; i < images.Length; i++)
                    {
                        var regex = new Regex("\\d+");
                        var match = regex.Match(images[i]);
                        if (match.Success)
                        {
                            var code = match.Value;
                            var arr  = list.Where(item => Npks.MatchCode(item.Name, code)).ToList();
                            var rs   = FindImg(arr, int.Parse(code), type);
                            if (rs.Count() > 0)
                            {
                                var img     = rs.ElementAt(0);
                                var builder = new LSBuilder();
                                var image   = img[pairs[prof]];
                                ImageToJson(path, prof, type, img.Name, match.Value, image);
                            }
                        }
                    }
                }
            }
        }
Exemplo n.º 20
0
        public void TestMethod1()
        {
            var dir = @"D:\avatar_ex\icon";

            foreach (var prof in pairs.Keys)
            {
                foreach (var part in part_array)
                {
                    var file = $"{GAME_PATH}/sprite_character_{prof}{(prof.EndsWith("_at") ? "" : "_")}equipment_avatar_{part}.NPK";
                    var list = Npks.Load(file);
                    var ps   = $"{dir}/{prof}/{part}";
                    if (!Directory.Exists(ps))
                    {
                        continue;
                    }
                    var images = Directory.GetFiles(ps);

                    var path = $"d:/avatar_ex/image/{prof}/{part}";
                    if (!Directory.Exists(path))
                    {
                        Directory.CreateDirectory(path);
                    }
                    for (var i = 0; i < images.Length; i++)
                    {
                        var regex = new Regex("\\d+");
                        var match = regex.Match(images[i]);
                        if (match.Success)
                        {
                            var code    = match.Value;
                            var arr     = Npks.FindByCode(list, code);
                            var rs      = FindImg(arr, int.Parse(code), part.Equals("skin") ? "body" : part);
                            var builder = new LSBuilder();
                            foreach (var img in rs)
                            {
                                var image = img[pairs[prof]];
                                ImageToJson(path, prof, part, img.Name, match.Value, image);
                            }
                        }
                    }
                }
            }
        }
Exemplo n.º 21
0
        public void Action(params Album[] array)
        {
            switch (Type)
            {
            case SAVE_TO_DIR:
                Npks.SaveToDirectory(Path, array);
                break;

            case SAVE_TO_IMG:
                if (array.Length > 0)
                {
                    array[0].Save(Path);
                }
                break;

            case SAVE_TO_NPK:
                Npks.Save(Path, new List <Album>(array));
                break;
            }
        }
Exemplo n.º 22
0
 public void Do(params object[] args)
 {
     Array = args as Album[];
     if (Array.Length > 0)
     {
         var regex = new Regex("\\d+");
         var match = regex.Match(Array[0].Name);
         if (match.Success)
         {
             var code     = int.Parse(match.Value);
             var code_str = Npks.CompleteCode(code / 100 * 100);
             Album = Array[0].Clone();
             Album.ConvertTo(Handle.Img_Version.Ver6);
             Album.Adjust();
             Album.Tables.Clear();
             Album.Path = Array[0].Path.Replace(match.Value, code_str);
             var max   = 0;
             var table = new List <Color>();
             foreach (var al in Array)
             {
                 if (al.CurrentTable.Count > max)
                 {
                     max   = al.CurrentTable.Count;
                     table = al.CurrentTable;
                 }
                 Album.Tables.Add(al.CurrentTable);
             }
             foreach (var tl in Album.Tables)
             {
                 if (tl.Count < max)
                 {
                     tl.AddRange(table.GetRange(tl.Count, max - tl.Count));
                 }
             }
             Connector.RemoveFile(Array);
             Connector.AddFile(false, Album);
         }
     }
 }
Exemplo n.º 23
0
        public void GetImage(string source, string target, string prof)
        {
            foreach (var part in part_array)
            {
                var file = $"{GAME_PATH}/sprite_character_{prof}{(prof.EndsWith("_at") ? "" : "_")}equipment_avatar_{part}.NPK";
                var list = Npks.Load(file);
                var ps   = $"{source}/icon/{prof}/{part}";
                if (!Directory.Exists(ps))
                {
                    continue;
                }
                var images = Directory.GetFiles(ps);

                var path = $"{target}/image/{prof}/{part}";
                if (!Directory.Exists(path))
                {
                    Directory.CreateDirectory(path);
                }
                for (var i = 0; i < images.Length; i++)
                {
                    var regex = new Regex("\\d+");
                    var match = regex.Match(images[i].GetSuffix());
                    if (match.Success)
                    {
                        var code = match.Value;
                        var arr  = list.Where(item => Npks.MatchCode(item.Name, code)).ToList();
                        var rs   = FindImg(arr, int.Parse(code), part.Equals("skin") ? "body" : part);
                        foreach (var img in rs)
                        {
                            var builder = new LSBuilder();
                            var image   = img[pairs[prof]];
                            ImageToJson(path, prof, part, img.Name, match.Value, image);
                        }
                    }
                }
            }
        }
Exemplo n.º 24
0
            public void AddFile(bool clear, params string[] args)
            {
                if (clear)
                {
                    SavePath = string.Empty;
                    IsSave   = true;
                }
                if (SavePath.Length == 0)
                {
                    SavePath = args.Find(item => item.ToLower().EndsWith(".npk")) ?? string.Empty;
                }
                if (args.Length < 1)
                {
                    return;
                }
                var list = new List <Album>();

                for (var i = 0; i < args.Length; i++)
                {
                    var index  = args[i].LastIndexOf(".") + 1;
                    var suffix = args[i].Substring(index);
                    var arr    = new List <Album>();
                    if (FileConverters.ContainsKey(suffix))
                    {
                        arr = FileConverters[suffix].Load(args[i]);
                    }
                    else
                    {
                        arr = Npks.Load(args[i]);
                    }
                    list.AddRange(arr);
                }
                if (args.Length > 0)
                {
                    MainForm.Controller.Do("addImg", list.ToArray(), clear);
                }
            }
Exemplo n.º 25
0
        public void Test01()
        {
            var prof_list = GetProfession();

            foreach (var prof in prof_list)
            {
                var dir = $"{SAVE_DIR}/image/{prof}";
                if (Directory.Exists(dir))
                {
                    Directory.Delete(dir, true);
                }
                Directory.CreateDirectory(dir);
                foreach (var part in part_array)
                {
                    var file    = $"{GAME_DIR}/ImagePacks2/sprite_character_{prof}{(prof.EndsWith("_at") ? "" : "_")}equipment_avatar_{part}.NPK";
                    var avatars = GetAvatar(prof, part);
                    var list    = Npks.Load(file);
                    list = list.Where(item => {
                        var name = item.Name;
                        if (name.Contains("(tn)") || name.Contains("_mask"))
                        {
                            return(false);
                        }
                        var regex = new Regex("\\d+");
                        var match = regex.Match(name);
                        if (match.Success)
                        {
                            var code = match.Value;
                            return(!avatars.Contains(code));
                        }
                        return(false);
                    }).ToList();
                    Npks.Save($"{dir}/{part}.NPK", list);
                }
            }
        }
Exemplo n.º 26
0
 public void Save(string file)
 {
     Npks.Save(file, List);
     IsSave = true;
     SendSuccess("SaveFile");
 }