Exemplo n.º 1
0
 //public Vector2 seedorient = new Vector2(0, 0);
 //public Vector2 seedsize = new Vector2(0, 0);
 public void InitWithSeed(Seed seed, Texture.TextureMgr tmgr)
 {
     //seedorient = seed.orient;
     //seedsize = seed.size;
     this.Size = seed.size;
     this.Orient = seed.orient;
     drawblock = tmgr.GetTexture(seed.texname);
 }
Exemplo n.º 2
0
 public void InitWithSeed(Seed seed, Texture.TextureMgr tmgr)
 {
     var block = tmgr.GetTexture(seed.texname);
     tex = block.parent.texture;
     srcuv = block.uv;
     seedsize = seed.size;
     seedorient = seed.orient;
 }
Exemplo n.º 3
0
            public tpos(Seed seed, clgf.Texture.TexturePacket.TextureBlock block)
            {
                this.block = block;
                this.size = new Size((int)seed.size.X, (int)seed.size.Y);

                if (seed.size.X - size.Width > 0) this.size.Width++;
                if (seed.size.Y - size.Height > 0) this.size.Height++;
                this.orientY = seed.orient.Y;
            }
Exemplo n.º 4
0
        public static Sprite Load(string inpath)
        {
            Sprite spr = new Sprite(inpath);

            if (inpath == null) return spr;
            spr.seeds.Clear();//LoadSeeds
            {
                if (System.IO.Path.DirectorySeparatorChar == '\\')
                    inpath = inpath.Replace("/", "\\");
                else
                    inpath = inpath.Replace("\\", "/");
                string file = System.IO.Path.Combine(inpath, "seeds.bin.bytes");
                using (System.IO.Stream os = TitleContainer.OpenStream(file))
                {
            #if USECompression
                    using (GZipStream s = new GZipStream(os, CompressionMode.Decompress))
            #else
                    var s = os;
            #endif
                    {
                        byte[] bb = new byte[256];

                        s.Read(bb, 0, 2);
                        UInt16 len = BitConverter.ToUInt16(bb, 0);
                        for (int i = 0; i < len; i++)
                        {
                            int slen = s.ReadByte();
                            s.Read(bb, 0, slen);
                            Seed seed = new Seed();
                            seed.Read(s);
                            string name = System.Text.Encoding.UTF8.GetString(bb, 0, slen);
                            spr.seeds[name] = seed;
                        }
                    }
                }
            }
            string[] files = null;
            {
                using (System.IO.Stream s = TitleContainer.OpenStream(System.IO.Path.Combine( inpath , "anims.txt")))
                {
                    byte[] buf = new byte[65536];
                    int buflen = (int)s.Read(buf, 0, 65536);
                    //byte[] b = new byte[s.Length];
                    //s.Read(b, 0, b.Length);
                    string txt = System.Text.Encoding.UTF8.GetString(buf,0,buflen);
                    files = txt.Split(new char[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries);
                    while(!char.IsLetter(files[0][0]))
                    {
                        files[0]=files[0].Substring(1);
                    }
                }
            }
            //string[] files = System.IO.Directory.GetFiles(inpath, "*.anim.bin");
            foreach (var _f in files)
            {
                string f =_f;
                if(System.IO.Path.DirectorySeparatorChar=='/')
                {
                    f=f.Replace('\\','/');
                }
                string fname =System.IO.Path.GetFileName(f);
                fname = System.IO.Path.Combine(inpath,fname);
                using (System.IO.Stream ss = TitleContainer.OpenStream(fname))
                {
                    Anim ani = new Anim(spr);
                    ani.Read(ss);
                    string name = System.IO.Path.GetFileNameWithoutExtension(f);
                    name = System.IO.Path.GetFileNameWithoutExtension(name);
                    spr.anims[name] = ani;
                }
            }
            return spr;
        }
Exemplo n.º 5
0
 public Seed Copy()
 {
     Seed seed = new Seed();
     seed.texname = texname;
     seed.size = size;
     seed.orient = orient;
     return seed;
 }
Exemplo n.º 6
0
        void GenSeed_R(string filename, string _path)
        {
            string seedoname = System.IO.Path.GetFileNameWithoutExtension(filename);
            string seedname = seedoname + "_b";
            if (cursprite.seeds.ContainsKey(seedname))
            {
                return;
            }
            else
            {
                Seed seed = new Seed();

                string bestfile = GetBestFile(_path, filename);
                if (string.IsNullOrEmpty(bestfile))
                {
                    throw new Exception(filename + ":少了张图");
                }
                seed.texname = bestfile.Substring(resourcepath.Length + 1);

                var image = Image.FromFile(bestfile);
                seed.size.X = image.Width;
                seed.size.Y = image.Height;
                image.Dispose();

                cursprite.seeds[seedname] = seed;

            }
        }
Exemplo n.º 7
0
 void GenSeed(DOMSymbolItem item, string _path)
 {
     if (cursprite.seeds.ContainsKey(item.name))
     {
         return;
     }
     else
     {
         Seed seed = new Seed();
         aniconv.xfl.DOMSymbolItem.DOMTimeline.DOMLayer.DOMFrame.DOMBitmapInstance binst = item.m_timeline.m_DOMTimeline.layers[0].frames[0].elements[0];
         string bestfile = GetBestFile(_path, binst.libraryItemName);
         if (string.IsNullOrEmpty(bestfile))
         {
             throw new Exception(binst.libraryItemName + ":少了张图");
         }
         seed.texname = bestfile.Substring(resourcepath.Length + 1);
         string seedname = System.IO.Path.GetFileNameWithoutExtension(seed.texname);
         var image = Image.FromFile(bestfile);
         seed.size.X = image.Width;
         seed.size.Y = image.Height;
         image.Dispose();
         if (binst.matrix.Count > 0)
         {
             seed.orient.X = -binst.matrix[0].tx;
             seed.orient.Y = -binst.matrix[0].ty;
         }
         cursprite.seeds[seedname] = seed;
         seedchange[item.name] = seedname;
     }
 }
Exemplo n.º 8
0
        public Anim FillAni()
        {
            Anim anim = new Anim(cursprite);
            if (this.datadom.listTimeLine.Count == 0)
            {
                logger.Log(LogLevel.Error, "this.datadom.listTimeLine.Count == 0");
                return null;
            }
            anim.size.X = datadom.width;
            anim.size.Y = datadom.height;
            int maxframe = 0;

            //Dictionary<string, string> part2bone = new Dictionary<string, string>();
            //foreach (var p in data.Parts)
            //{
            //    part2bone[p.type] = p.bone;
            //}

            foreach (var l in this.datadom.listTimeLine[0].layers)//不使用层名称
            {
                int frameid = 0;
                // List<aniconv.xfl.data_domdoc.DOMTimeline.DOMLayer.DOMFrame> framesneedcopy = new List<data_domdoc.DOMTimeline.DOMLayer.DOMFrame>();
                foreach (var f in l.frames)
                {
                    if (f.duration > 1)
                    {
                        frameid = f.index + f.duration - 1;
                        //framesneedcopy.Add(f);
                    }
                    frameid = Math.Max(f.index, frameid);
                }
                maxframe = Math.Max(frameid, maxframe);
            }

            anim.frames.Clear();
            while (anim.frames.Count <= maxframe)
            {
                anim.frames.Add(new Frame());
            }

            // anim.ResetFrameCount(maxframe);

            foreach (var l in this.datadom.listTimeLine[0].layers)
            {
                foreach (var f in l.frames)
                {
                    if (f.element.listbelements.Count > 0)
                    {
                        Element elem = new Element();
                        anim.frames[f.index].elems.Add(elem);

                        Matrix mat;
                        if (f.__elements[0].matrix.Count > 0)
                            mat = f.__elements[0].matrix[0];
                        else
                            mat = new Matrix();
                        elem.pos.X = mat.tx;// +f.elements[0].transformationPoint.;// -data.SizeX / 2;
                        elem.pos.Y = mat.ty;// +data.SizeY;

                        var s = mat.GetScale();
                        elem.scale.X = s.X;
                        elem.scale.Y = s.Y;
                        if (s.Y < 0)
                        {

                        }
                        elem.rotate = -mat.GetRotate();// / (float)Math.PI * -180.0f;

                        //f.elements[0].libraryItemName 类型
                        string seedoname = System.IO.Path.GetFileNameWithoutExtension(f.__elements[0].libraryItemName);
                        string seedname = seedoname + "_b";
                        GenSeed_R(f.__elements[0].libraryItemName, mainpath);
                        if (cursprite.seeds.ContainsKey(seedname)==false)
                        {
                            Seed seed = new Seed();
                            seed.size = cursprite.seeds[seedoname].size;
                            seed.orient = new Microsoft.Xna.Framework.Vector2();
                            seed.texname = cursprite.seeds[seedoname].texname;
                            cursprite.seeds[seedname] = seed;
                        }
                        elem.seed = seedname;
                        elem.seednow = elem.seed;
                        elem.sound = f.soundName;
                        elem.tag = f.name;
                        //if (f._elements[0].color.Count > 0)
                        //{
                        //    elem.color.A = (byte)(f.__elements[0].color[0].alphaMultiplier * 255);
                        //    elem.color.R = (byte)(f.__elements[0].color[0].redMultiplier * 255);
                        //    elem.color.G = (byte)(f.__elements[0].color[0].greenMultiplier * 255);
                        //    elem.color.B = (byte)(f.__elements[0].color[0].blueMultiplier * 255);
                        //    int i = f._elements[0].color[0].redOffset;
                        //    if (i > 255) i = 255;
                        //    elem.coloradd.R = (byte)i;
                        //    i = f._elements[0].color[0].greenOffset;
                        //    if (i > 255) i = 255;
                        //    elem.coloradd.G = (byte)i;
                        //    i = f._elements[0].color[0].blueOffset;
                        //    if (i > 255) i = 255;
                        //    elem.coloradd.B = (byte)i;

                        //}
                        if (f.duration > 0)
                        {
                            for (int i = 1; i < f.duration; i++)
                            {
                                anim.frames[f.index + i].elems.Add(elem.Copy());
                            }
                        }
                    }
                    else if (f._elements.Count > 0)
                    {
                        Element elem = new Element();
                        anim.frames[f.index].elems.Add(elem);

                        Matrix mat;
                        if (f._elements[0].matrix.Count > 0)
                            mat = f._elements[0].matrix[0];
                        else
                            mat = new Matrix();
                        elem.pos.X = mat.tx;// +f.elements[0].transformationPoint.;// -data.SizeX / 2;
                        elem.pos.Y = mat.ty;// +data.SizeY;

                        var s = mat.GetScale();
                        elem.scale.X = s.X;
                        elem.scale.Y = s.Y;
                        if (s.Y < 0)
                        {

                        }
                        elem.rotate = -mat.GetRotate();// / (float)Math.PI * -180.0f;

                        //f.elements[0].libraryItemName 类型
                        elem.seed = seedchange[f._elements[0].libraryItemName];// cursprite.seeds[f.elements[0].libraryItemName];
                        elem.seednow = elem.seed;
                        elem.sound = f.soundName;
                        elem.tag = f.name;
                        if (f._elements[0].color.Count > 0)
                        {
                            elem.color.A = (byte)(f._elements[0].color[0].alphaMultiplier * 255);
                            elem.color.R = (byte)(f._elements[0].color[0].redMultiplier * 255);
                            elem.color.G = (byte)(f._elements[0].color[0].greenMultiplier * 255);
                            elem.color.B = (byte)(f._elements[0].color[0].blueMultiplier * 255);
                            int i = f._elements[0].color[0].redOffset;
                            if (i > 255) i = 255;
                            elem.coloradd.R = (byte)i;
                            i = f._elements[0].color[0].greenOffset;
                            if (i > 255) i = 255;
                            elem.coloradd.G = (byte)i;
                            i = f._elements[0].color[0].blueOffset;
                            if (i > 255) i = 255;
                            elem.coloradd.B = (byte)i;

                        }
                        if (f.duration > 0)
                        {
                            for (int i = 1; i < f.duration; i++)
                            {
                                anim.frames[f.index + i].elems.Add(elem.Copy());
                            }
                        }
                    }

                    if(string.IsNullOrEmpty( f.name)==false)
                    {
                        anim.frames[f.index].AddTag(f.name);
                        for (int i = 1; i < f.duration; i++)
                        {
                            anim.frames[f.index+i].AddTag(f.name);
                        }
                    }

                }

            }
            return anim;
        }
Exemplo n.º 9
0
 public void InitWithSeed(Seed seed,Texture.TextureMgr tmgr)
 {
     block=tmgr.GetTexture(seed.texname);
     seedsize=seed.size;
     seedorient =seed.orient;
 }
Exemplo n.º 10
0
        void GenSeed(DOMSymbolItem item, string _path)
        {
            //if (cursprite.seeds.ContainsKey(item.name))
            //{
            //    return;
            //}
            //else
            {
                Seed seed = new Seed();
                aniconv.xfl.DOMSymbolItem.DOMTimeline.DOMLayer.DOMFrame.DOMBitmapInstance binst = item.m_timeline.m_DOMTimeline.layers[0].frames[0].elements[0];
                string bestfile = GetBestFile(_path, binst.libraryItemName);
                if (string.IsNullOrEmpty(bestfile))
                {
                    throw new Exception(binst.libraryItemName + ":少了张图");
                }
                seed.texname = bestfile.Substring(resourcepath.Length + 1);
                string seedname = System.IO.Path.GetFileNameWithoutExtension(seed.texname);

                if (seedname.IndexOf("_dummy") == 0)
                {
                    //dummyseed 不导出
                    return;
                }
                var image = Image.FromFile(bestfile);
                seed.size.X = image.Width;
                seed.size.Y = image.Height;
                image.Dispose();
                if (binst.matrix.Count > 0)
                {
                    seed.orient.X = -binst.matrix[0].tx;
                    seed.orient.Y = -binst.matrix[0].ty;
                }

                if (cursprite.seeds.ContainsKey(seedname))
                {
                    //
                    Console.WriteLine("Seed以有,对比");
                    var oldseed = cursprite.seeds[seedname];

                    if (System.IO.Path.GetFileName(oldseed.texname) != System.IO.Path.GetFileName(seed.texname))
                    {
                        throw new Exception(seed.texname + ":seed源图冲突");
                    }
                    else if (oldseed.size.Equals(seed.size) == false)
                    {
                        throw new Exception(System.IO.Path.GetFileName(seed.texname) + ":seed尺寸冲突");
                    }
                    else if (oldseed.orient.Equals(seed.orient) == false)
                    {

                        //seed 锚点冲突
                        //Console.WriteLine("Seed冲突,需要新建");
                        string subname = System.IO.Path.GetFileName(_path);
                        seedname += "_" + subname;
                        logger.Log(LogLevel.Waring, seedname +":Seed 冲突,已解决");
                        cursprite.seeds[seedname] = seed;
                        seedchange[item.name+"_"+subname] = seedname;
                    }
                    else
                    {
                        return;
                    }

                }
                cursprite.seeds[seedname] = seed;
                seedchange[item.name] = seedname;
            }
        }
Exemplo n.º 11
0
        public static Sprite Load(string inpath)
        {
            Sprite spr = new Sprite(inpath);

            if (inpath == null)
            {
                return(spr);
            }
            spr.seeds.Clear();//LoadSeeds
            {
                if (System.IO.Path.DirectorySeparatorChar == '\\')
                {
                    inpath = inpath.Replace("/", "\\");
                }
                else
                {
                    inpath = inpath.Replace("\\", "/");
                }
                string file = System.IO.Path.Combine(inpath, "seeds.bin.bytes");
                using (System.IO.Stream os = TitleContainer.OpenStream(file))
                {
#if USECompression
                    using (GZipStream s = new GZipStream(os, CompressionMode.Decompress))
#else
                    var s = os;
#endif
                    {
                        byte[] bb = new byte[256];

                        s.Read(bb, 0, 2);
                        UInt16 len = BitConverter.ToUInt16(bb, 0);
                        for (int i = 0; i < len; i++)
                        {
                            int slen = s.ReadByte();
                            s.Read(bb, 0, slen);
                            Seed seed = new Seed();
                            seed.Read(s);
                            string name = System.Text.Encoding.UTF8.GetString(bb, 0, slen);
                            spr.seeds[name] = seed;
                        }
                    }
                }
            }
            string[] files = null;
            {
                using (System.IO.Stream s = TitleContainer.OpenStream(System.IO.Path.Combine(inpath, "anims.txt")))
                {
                    byte[] buf    = new byte[65536];
                    int    buflen = (int)s.Read(buf, 0, 65536);
                    //byte[] b = new byte[s.Length];
                    //s.Read(b, 0, b.Length);
                    string txt = System.Text.Encoding.UTF8.GetString(buf, 0, buflen);
                    files = txt.Split(new char[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries);
                    while (!char.IsLetter(files[0][0]))
                    {
                        files[0] = files[0].Substring(1);
                    }
                }
            }
            //string[] files = System.IO.Directory.GetFiles(inpath, "*.anim.bin");
            foreach (var _f in files)
            {
                string f = _f;
                if (System.IO.Path.DirectorySeparatorChar == '/')
                {
                    f = f.Replace('\\', '/');
                }
                string fname = System.IO.Path.GetFileName(f);
                fname = System.IO.Path.Combine(inpath, fname);
                using (System.IO.Stream ss = TitleContainer.OpenStream(fname))
                {
                    Anim ani = new Anim(spr);
                    ani.Read(ss);
                    string name = System.IO.Path.GetFileNameWithoutExtension(f);
                    name            = System.IO.Path.GetFileNameWithoutExtension(name);
                    spr.anims[name] = ani;
                }
            }
            return(spr);
        }