예제 #1
0
        private static void ListBoxChanged(Event <HTMLSelectElement> arg)
        {
            ImageInputSenderID = arg.CurrentTarget.Id;
            ImageInputSenderID = ImageInputSenderID.Substring(0, ImageInputSenderID.Length - 4);

            var tex = t.GetTexture(ImageInputSenderID);

            t.TopScreenFrameType = (uint)TopFrameType.SelectedIndex;
            t.BotScreenFrameType = (uint)BotFrameType.SelectedIndex;

            if (t.TopScreenFrameType == 2)
            {
                t.TopScreenFrameType = 1;                            //Invalid value fix
            }
            if (ImageInputSenderID == Theme.Name_TopScr && !(tex.tex.Width == t.TopImageType.s.x && tex.tex.Height == t.TopImageType.s.y))
            {
                tex.tex = ImageEncoding.WhiteImage(t.TopScreenImageID);
                UpdateShownImg(t.TopImageType, ImageInputSenderID, tex.tex);
                Document.GetElementById <HTMLLabelElement>(ImageInputSenderID + "-LBL").TextContent = ImageInputSenderID.Replace('-', ' ') + " (" + t.TopImageType.s.x.ToString() + "x" + t.TopImageType.s.y.ToString() + ")";
            }
            else if (ImageInputSenderID == Theme.Name_BotScr && !(tex.tex.Width == t.BotImageType.s.x && tex.tex.Height == t.BotImageType.s.y))
            {
                tex.tex = ImageEncoding.WhiteImage(t.BotScreenImageID);
                UpdateShownImg(t.BotImageType, ImageInputSenderID, tex.tex);
                Document.GetElementById <HTMLLabelElement>(ImageInputSenderID + "-LBL").TextContent = ImageInputSenderID.Replace('-', ' ') + " (" + t.BotImageType.s.x.ToString() + "x" + t.BotImageType.s.y.ToString() + ")";
            }
            OnResized(null);
        }
예제 #2
0
        public static Theme EmptyTheme()
        {
            Theme t = new Theme();

            t.TopScreenDrawType  = 3;
            t.TopScreenFrameType = 1;
            t.BotScreenDrawType  = 3;
            t.BotScreenFrameType = 1;
            t.textures[0].tex    = ImageEncoding.WhiteImage(t.TopScreenImageID);
            t.textures[1].tex    = ImageEncoding.WhiteImage(t.BotScreenImageID);
            return(t);
        }
예제 #3
0
        public static Theme ReadTheme(Stream s)
        {
            Theme t = new Theme();

            BinaryReader bin = new BinaryReader(s);

            bin.BaseStream.Position = 0x5;

            t.BGM = bin.ReadByte() != 0;
            #region ReadImages
            bin.BaseStream.Position = 0xC;
            t.TopScreenDrawType     = bin.ReadUInt32();
            t.TopScreenFrameType    = bin.ReadUInt32();
            if (t.TopScreenDrawType == 3)
            {
                bin.BaseStream.Position = 0x18;
                uint offset = bin.ReadUInt32();
                bin.BaseStream.Position       = offset;
                t.GetTexture(Name_TopScr).tex = ImageEncoding.getImage(bin, t.TopScreenImageID);
            }

            bin.BaseStream.Position = 0x20;
            t.BotScreenDrawType     = bin.ReadUInt32();
            t.BotScreenFrameType    = bin.ReadUInt32();
            if (t.BotScreenDrawType == 3)
            {
                bin.BaseStream.Position = 0x28;
                uint offset = bin.ReadUInt32();
                bin.BaseStream.Position       = offset;
                t.GetTexture(Name_BotScr).tex = ImageEncoding.getImage(bin, t.BotScreenImageID);
            }

            bin.BaseStream.Position = 0x3C;
            if (bin.ReadUInt32() != 0)
            {
                uint offs1 = bin.ReadUInt32();
                uint offs2 = bin.ReadUInt32();
                bin.BaseStream.Position          = offs1;
                t.GetTexture(Name_Folder).tex    = ImageEncoding.getImage(bin, 7);
                bin.BaseStream.Position          = offs2;
                t.GetTexture(Name_FolderOpn).tex = ImageEncoding.getImage(bin, 8);
            }

            bin.BaseStream.Position = 0x50;
            if (bin.ReadUInt32() != 0)
            {
                uint offs1 = bin.ReadUInt32();
                uint offs2 = bin.ReadUInt32();
                bin.BaseStream.Position         = offs1;
                t.GetTexture(Name_IcnBig).tex   = ImageEncoding.getImage(bin, 9);
                bin.BaseStream.Position         = offs2;
                t.GetTexture(Name_IcnSmall).tex = ImageEncoding.getImage(bin, 10);
            }
            #endregion
            #region ReadColorData
            for (int i = 0; i < ColorFieldsOffsets.Length; i++)
            {
                int off = ColorFieldsOffsets[i];
                if (off == 0x00)
                {
                    continue;              //ignore if 0x00 because it's second part of 0x6C
                }
                bin.BaseStream.Position = off;
                if (bin.ReadInt32() != 1)
                {
                    continue;
                }
                t.ColorFields[i].ReadFromStream(bin);
                if (off == 0x6C)
                {
                    t.ColorFields[i + 1].ReadFromStream(bin);
                }
            }
            #endregion

            return(t);
        }
예제 #4
0
        public byte[] MakeTheme()
        {
            MemoryStream mem = new MemoryStream();
            BinaryWriter bin = new BinaryWriter(mem);

            #region WriteHeader
            bin.Write(1);
            bin.Write((byte)0);
            bin.Write((byte)(BGM ? 1 : 0));
            bin.Write(0);
            bin.Write((short)0);
            bin.Write(TopScreenDrawType);
            bin.Write(TopScreenFrameType);
            bin.Write(0);
            bin.Write(0);
            bin.Write(0);
            bin.Write(BotScreenDrawType);
            bin.Write(BotScreenFrameType); //0x24
            bin.Write(0);
            bin.Write(0);
            bin.Write(0);
            bin.Write(0);
            bin.Write(0);
            bool writeTex78 = textures[2].tex != null && textures[3].tex != null;
            bin.Write((int)(writeTex78 ? 1 : 0));
            bin.Write(0);
            bin.Write(0);
            bin.Write(0);
            bin.Write(0);
            bool writeTex910 = textures[4].tex != null && textures[5].tex != null;
            bin.Write((int)(writeTex910 ? 1 : 0));
            bin.Write(0);
            bin.Write(0);
            for (int i = 0; i < 27; i++)
            {
                bin.Write(0);
            }
            #endregion

            #region WriteColors
            for (int i = 0; i < ColorFieldsOffsets.Length; i++)
            {
                if (!ColorFields[i].IsEnabled || ColorFieldsOffsets[i] == 0)
                {
                    continue;
                }
                uint offset = (uint)bin.BaseStream.Position;
                bin.Write(ColorFields[i].GetData());
                uint NextOffset = (uint)bin.BaseStream.Position;
                bin.BaseStream.Position = ColorFieldsOffsets[i];
                bin.Write(1); //flag enabled
                bin.Write(offset);
                if (ColorFieldsOffsets[i] == 0x6C)
                {
                    bin.Write(NextOffset);                                //the second block will be written here
                }
                bin.BaseStream.Position = NextOffset;
                if (ColorFieldsOffsets[i] == 0x6C)
                {
                    bin.Write(ColorFields[i + 1].GetData());
                }
            }
            #endregion
            #region writeImages
            //top
            {
                if (textures[0].tex == null)
                {
                    textures[0].tex = ImageEncoding.WhiteImage(TopScreenImageID);
                }
                uint offset = (uint)bin.BaseStream.Position;
                bin.Write(ImageEncoding.bitmapToRawImg(textures[0].tex, TopScreenImageID));
                uint NextOffset = (uint)bin.BaseStream.Position;
                bin.BaseStream.Position = 0x18;
                bin.Write(offset);
                bin.BaseStream.Position = NextOffset;
            }

            {
                //bottom screen
                if (textures[1].tex == null)
                {
                    textures[1].tex = ImageEncoding.WhiteImage(BotScreenImageID);
                }
                uint offset = (uint)bin.BaseStream.Position;
                bin.Write(ImageEncoding.bitmapToRawImg(textures[1].tex, BotScreenImageID));
                uint NextOffset = (uint)bin.BaseStream.Position;
                bin.BaseStream.Position = 0x28;
                bin.Write(offset);
                bin.BaseStream.Position = NextOffset;
            }

            if (writeTex78)
            {
                //FolderTextures
                uint offset = (uint)bin.BaseStream.Position;
                bin.Write(ImageEncoding.bitmapToRawImg(textures[2].tex, 7));
                uint NextOffset = (uint)bin.BaseStream.Position;
                bin.BaseStream.Position = 0x40;
                bin.Write(offset);
                bin.BaseStream.Position = NextOffset;

                offset = (uint)bin.BaseStream.Position;
                bin.Write(ImageEncoding.bitmapToRawImg(textures[3].tex, 8));
                NextOffset = (uint)bin.BaseStream.Position;
                bin.BaseStream.Position = 0x44;
                bin.Write(offset);
                bin.BaseStream.Position = NextOffset;
            }

            if (writeTex910)
            {
                //Icon textures
                uint offset = (uint)bin.BaseStream.Position;
                bin.Write(ImageEncoding.bitmapToRawImg(textures[4].tex, 9));
                uint NextOffset = (uint)bin.BaseStream.Position;
                bin.BaseStream.Position = 0x54;
                bin.Write(offset);
                bin.BaseStream.Position = NextOffset;

                offset = (uint)bin.BaseStream.Position;
                bin.Write(ImageEncoding.bitmapToRawImg(textures[5].tex, 10));
                NextOffset = (uint)bin.BaseStream.Position;
                bin.BaseStream.Position = 0x58;
                bin.Write(offset);
                bin.BaseStream.Position = NextOffset;
            }
            #endregion

            while ((bin.BaseStream.Position % 8) != 0)
            {
                bin.Write((byte)0x00);                                        //padding
            }
            return(mem.ToArray());
        }