Exemplo n.º 1
0
        public static Bitmap DrawFont(uint image)
        {
            if (!U.isPointer(image))
            {
                return(ImageUtil.BlankDummy(32));
            }
            uint palette = Program.ROM.p32(Program.ROM.RomInfo.op_class_font_palette_pointer);

            byte[] imageUZ = LZ77.decompress(Program.ROM.Data, U.toOffset(image));

            return(ImageUtil.ByteToImage16Tile(4 * 8, 4 * 8
                                               , imageUZ, 0
                                               , Program.ROM.Data, (int)U.toOffset(palette)
                                               ));
        }
Exemplo n.º 2
0
        public static Bitmap DrawIconWhereID_UsingWeaponPalette(uint id)
        {
            InputFormRef InputFormRef = Init(null);
            //現在のIDに対応するデータ
            uint addr = InputFormRef.IDToAddr(id);

            if (!U.isSafetyOffset(addr))
            {
                return(ImageUtil.BlankDummy(16));
            }

            uint palette = Program.ROM.u32(Program.ROM.RomInfo.system_weapon_icon_palette_pointer());

            return(DrawIcon(addr, palette));
        }
Exemplo n.º 3
0
        public static Bitmap Draw(uint image, uint palette)
        {
            if (!U.isPointer(image))
            {
                return(ImageUtil.BlankDummy());
            }
            if (!U.isPointer(palette))
            {
                return(ImageUtil.BlankDummy());
            }

            return(ImageUtil.ByteToImage16Tile(4 * 8, 4 * 8
                                               , Program.ROM.Data, (int)U.toOffset(image)
                                               , Program.ROM.Data, (int)U.toOffset(palette)
                                               ));
        }
Exemplo n.º 4
0
        public static Bitmap DrawBG(uint id)
        {
            InputFormRef InputFormRef = Init(null);
            uint         addr         = InputFormRef.IDToAddr(id);

            if (addr == U.NOT_FOUND)
            {
                return(ImageUtil.BlankDummy());
            }

            uint image   = Program.ROM.u32(addr);
            uint palette = Program.ROM.u32(addr + 8);
            uint tsa     = Program.ROM.u32(addr + 4);

            return(DrawBG(image, palette, tsa));
        }
Exemplo n.º 5
0
 //属性アイコン
 public static Bitmap Attribute(uint type)
 {//属性アイコンはアイテムアイコンと共有しているらしい。
  //7A=炎	        1
  //7B=稲妻	        2
  //7C=風	        3
  //7D=氷	        4
  //7E=闇	        5
  //7F=光	        6
  //80=理	        7
  //ただし、パレットは武器アイコンを参照していると思われる.
     if (type <= 0)
     {
         return(ImageUtil.BlankDummy());
     }
     return(ImageItemIconForm.DrawIconWhereID_UsingWeaponPalette(type + 0x7A - 1));
 }
Exemplo n.º 6
0
        static Bitmap DrawTSAAnime2Header(uint image, uint palette)
        {
            if (!U.isPointer(image))
            {
                return(ImageUtil.BlankDummy());
            }
            if (!U.isPointer(palette))
            {
                return(ImageUtil.BlankDummy());
            }

            byte[] imageUZ = LZ77.decompress(Program.ROM.Data, U.toOffset(image));
            int    height  = (int)ImageUtil.CalcHeight(30 * 8, imageUZ.Length);

            return(ImageUtil.ByteToImage16Tile(30 * 8, height, imageUZ, 0, Program.ROM.Data, (int)U.toOffset(palette)));
        }
Exemplo n.º 7
0
        public static Bitmap DrawIcon(uint addr, uint customPalette = 0)
        {
            if (!U.isSafetyOffset(addr))
            {
                return(ImageUtil.BlankDummy());
            }
            if (customPalette == 0)
            {//アイテムアイコンパレットを利用.
                customPalette = Program.ROM.u32(Program.ROM.RomInfo.icon_palette_pointer());
            }

            return(ImageUtil.ByteToImage16Tile(2 * 8, 2 * 8
                                               , Program.ROM.Data, (int)addr
                                               , Program.ROM.Data, (int)U.toOffset(customPalette)
                                               , 0
                                               ));
        }
Exemplo n.º 8
0
        public static Bitmap DrawImage(uint image, uint tsa)
        {
            if (!U.isPointer(image))
            {
                return(ImageUtil.BlankDummy());
            }
            if (!U.isPointer(tsa))
            {
                return(ImageUtil.BlankDummy());
            }
            uint palette =
                Program.ROM.p32(Program.ROM.RomInfo.op_prologue_palette_color_pointer);

            byte[] imageUZ = LZ77.decompress(Program.ROM.Data, U.toOffset(image));
            byte[] tsaUZ   = LZ77.decompress(Program.ROM.Data, U.toOffset(tsa));
            return(ImageUtil.ByteToImage16TileHeaderTSA(32 * 8, 20 * 8, imageUZ, 0, Program.ROM.Data, (int)U.toOffset(palette), tsaUZ, 0));
        }
Exemplo n.º 9
0
        //待機アイコン
        public static Bitmap DrawWaitIcon(uint cid, int palette_type = 0, bool height16_limit = false, bool centering = true)
        {
            if (cid <= 0)
            {
                return(ImageUtil.BlankDummy());
            }
            InputFormRef InputFormRef = Init(null);
            uint         addr         = InputFormRef.IDToAddr(cid);

            if (!U.isSafetyOffset(addr))
            {
                return(ImageUtil.BlankDummy());
            }
            uint icon_id = Program.ROM.u8(addr + 6);

            return(ImageUnitWaitIconFrom.DrawWaitUnitIconBitmap(icon_id, palette_type, height16_limit));
        }
Exemplo n.º 10
0
        //マップ顔
        public static Bitmap DrawPortraitFE6Map(uint id)
        {
            InputFormRef InputFormRef = Init(null);

            //現在のIDに対応するデータ
            uint addr = InputFormRef.IDToAddr(id);

            if (!U.isSafetyOffset(addr))
            {
                return(ImageUtil.BlankDummy());
            }

            uint map_face = Program.ROM.u32(addr + 4);
            uint palette  = Program.ROM.u32(addr + 8);

            return(DrawPortraitFE6Map(map_face, palette));
        }
Exemplo n.º 11
0
        public static Bitmap DrawMapStyle(uint id, MapAnimations anime = null)
        {
            InputFormRef InputFormRef = Init(null);
            uint         addr         = InputFormRef.IDToAddr(id);

            if (!U.isSafetyOffset(addr))
            {
                return(ImageUtil.BlankDummy(16));
            }

            uint obj_plist        = (uint)Program.ROM.u16(addr + 4);
            uint palette_plist    = (uint)Program.ROM.u8(addr + 6);
            uint config_plist     = (uint)Program.ROM.u8(addr + 7);
            uint mappointer_plist = (uint)Program.ROM.u8(addr + 8);

            return(ImageUtilMap.DrawMap(obj_plist, palette_plist, config_plist, mappointer_plist, anime));
        }
Exemplo n.º 12
0
        //顔画像
        public static Bitmap DrawClassFacePicture(uint cid)
        {
            if (cid <= 0)
            {
                return(ImageUtil.BlankDummy());
            }
            InputFormRef InputFormRef = Init(null);
            uint         addr         = InputFormRef.IDToAddr(cid);

            if (!U.isSafetyOffset(addr))
            {
                return(ImageUtil.BlankDummy());
            }
            uint face_id = Program.ROM.u16(addr + 8);

            return(ImagePortraitForm.DrawPortraitClass(face_id));
        }
        //Skill + テキストを書くルーチン
        public static Size DrawSkillAndText(ListBox lb, int index, Graphics g, Rectangle listbounds, bool isWithDraw)
        {
            if (index < 0 || index >= lb.Items.Count)
            {
                return(new Size(listbounds.X, listbounds.Y));
            }
            string text = lb.Items[index].ToString();

            SolidBrush brush      = new SolidBrush(lb.ForeColor);
            Font       normalFont = lb.Font;
            Rectangle  bounds     = listbounds;

            int  textmargineY = (ListBoxEx.OWNER_DRAW_ICON_SIZE - (int)lb.Font.Height) / 2;
            uint addr         = InputFormRef.SelectToAddr(lb, (int)index);

            Bitmap bitmap = null;

            if (addr != U.NOT_FOUND)
            {
                uint icon = Program.ROM.u16(addr + 0);
                bitmap = ImageItemIconForm.DrawIconWhereID_UsingWeaponPalette_SKILLFE8NVer2(icon);
            }
            else
            {
                bitmap = ImageUtil.BlankDummy();
            }
            U.MakeTransparent(bitmap);

            //アイコンを描く.
            Rectangle b = bounds;

            b.Width   = ListBoxEx.OWNER_DRAW_ICON_SIZE;
            b.Height  = ListBoxEx.OWNER_DRAW_ICON_SIZE;
            bounds.X += U.DrawPicture(bitmap, g, isWithDraw, b);
            bitmap.Dispose();

            //テキストを描く.
            b         = bounds;
            b.Y      += textmargineY;
            bounds.X += U.DrawText(text, g, normalFont, brush, isWithDraw, b);
            bounds.Y += ListBoxEx.OWNER_DRAW_ICON_SIZE;

            brush.Dispose();
            return(new Size(bounds.X, bounds.Y));
        }
Exemplo n.º 14
0
        public static Bitmap DrawSample(uint unitid, uint type)
        {
            InputFormRef InputFormRef   = Init(null);
            InputFormRef N_InputFormRef = N_Init(null);

            uint addr1 = InputFormRef.IDToAddr(unitid);
            uint addr2 = N_InputFormRef.IDToAddr(unitid);

            if (addr1 == U.NOT_FOUND || addr2 == U.NOT_FOUND)
            {
                return(ImageUtil.BlankDummy());
            }
            uint b   = Program.ROM.u8(addr1 + type);
            uint n_b = Program.ROM.u8(addr2 + type);

            return(ImageBattleAnimeForm.DrawBattleAnime(ImageBattleAnimeForm.GetAnimeIDByClassID(n_b)
                                                        , ImageBattleAnimeForm.ScaleTrim.SCALE_90, b));
        }
Exemplo n.º 15
0
        //クラスカード
        public static Bitmap DrawPortraitClassFE6(uint id)
        {
            InputFormRef InputFormRef = Init(null);
            uint         baseaddress  = InputFormRef.BaseAddress;
            uint         blocksize    = InputFormRef.BlockSize;
            //現在のIDに対応するデータ
            uint addr = baseaddress + (id * blocksize);

            uint unit_face = Program.ROM.u32(addr);
            uint map_face  = Program.ROM.u32(addr + 4);
            uint palette   = Program.ROM.u32(addr + 8);

            if (map_face == 0)
            {
                return(ImagePortraitForm.DrawPortraitClass(unit_face, palette));
            }
            return(ImageUtil.BlankDummy());
        }
Exemplo n.º 16
0
        //アイコンを画く.
        public static Bitmap DrawIcon(uint item_id)
        {
            if (item_id <= 0)
            {
                return(ImageUtil.BlankDummy(16));
            }

            InputFormRef InputFormRef = Init(null);
            uint         addr         = InputFormRef.IDToAddr(item_id);

            if (!U.isSafetyOffset(addr))
            {
                return(ImageUtil.BlankDummy(16));
            }
            uint iconid = Program.ROM.u8(addr + 29);

            return(ImageItemIconForm.DrawIconWhereID(iconid));
        }
Exemplo n.º 17
0
        static Bitmap DrawSkillIconLow(uint id)
        {
            InputFormRef ifr  = Init(null);
            uint         addr = ifr.IDToAddr(id);

            if (addr == U.NOT_FOUND)
            {
                return(ImageUtil.BlankDummy());
            }
            uint pal = Program.ROM.u16(addr + 2);
            uint skillPaletteAddress = GetSkillPaletteAddress(pal);

            uint iconbaseaddr  = Program.ROM.p32(Program.ROM.RomInfo.icon_pointer());
            uint icondatacount = (2 * 8 * 2 * 8) / 2; // /2しているのは16色のため
            uint iconaddr      = iconbaseaddr + (icondatacount * (0x100 + id));

            return(ImageItemIconForm.DrawIcon(iconaddr, skillPaletteAddress));
        }
Exemplo n.º 18
0
        public static Bitmap DrawSample(uint id)
        {
            InputFormRef InputFormRef = Init(null);
            uint         addr         = InputFormRef.IDToAddr(id);

            if (addr == U.NOT_FOUND)
            {
                return(ImageUtil.BlankDummy());
            }
            uint saveimage_addr = Program.ROM.p32(addr);

            if (!U.isSafetyOffset(saveimage_addr))
            {
                return(ImageUtil.BlankDummy());
            }

            return(DrawPic(saveimage_addr, 8 * 32));
        }
        public static Bitmap DrawUnitsList(uint index, int iconSize, out string errorMessage)
        {
            InputFormRef InputFormRef = Init(null);
            uint         addr         = InputFormRef.IDToAddr(index);

            if (!U.isSafetyOffset(addr))
            {
                errorMessage = R._("範囲外のIDを指定しています。\r\n指定できるのは、最大{0}までです。", InputFormRef.DataCount);
                return(ImageUtil.BlankDummy());
            }
            errorMessage = "";

            Bitmap     bitmap = new Bitmap((iconSize * 2) * 5, iconSize);
            Rectangle  bounds = new Rectangle(0, 0, bitmap.Width, bitmap.Height);
            SolidBrush brush  = new SolidBrush(OptionForm.Color_Input_ForeColor());
            Font       font   = new Font("MS UI Gothic", 8);

            using (Graphics g = Graphics.FromImage(bitmap))
            {
                for (uint i = 0; i < 5; i++)
                {
                    uint classid = Program.ROM.u8(addr + i);
                    if (classid <= 0)
                    {
                        continue;
                    }
                    Bitmap icon = ClassForm.DrawWaitIcon(classid, 2);

                    U.MakeTransparent(icon);

                    Rectangle b = bounds;
                    b.Width  = iconSize;
                    b.Height = iconSize;

                    bounds.X += U.DrawPicture(icon, g, true, b);

                    uint probability = Program.ROM.u8(addr + 5 + i);
                    bounds.X += U.DrawText(probability + "", g, font, brush, true, bounds);
                }
            }
            brush.Dispose();
            font.Dispose();
            return(bitmap);
        }
Exemplo n.º 20
0
        public static Bitmap DrawFontString(string str, bool IsItemFont)
        {
            //フォントで描画した場合の幅と高さを求める.
            Size size = MeasureTextMultiLine(str, IsItemFont);

            if (size.Width <= 0 || size.Height <= 0)
            {
                return(ImageUtil.BlankDummy());
            }
            uint fontlist_pointer = GetFontPointer(IsItemFont);

            PatchUtil.PRIORITY_CODE priorityCode = PatchUtil.SearchPriorityCode();

            Bitmap bitmap = ImageUtil.Blank(size.Width, size.Height);

            string[] lines = str.Split(new string[] { "\r\n" }, StringSplitOptions.None);

            for (int n = 0; n < lines.Length; n++)
            {
                string line       = lines[n];
                int    totalwidth = 0;
                for (int i = 0; i < line.Length; i++)
                {
                    string one         = str[i].ToString();
                    uint   search_char = U.ConvertMojiCharToUnitFast(one, priorityCode);

                    int    width;
                    Bitmap oneBitmap = DrawFont(search_char, IsItemFont, out width, priorityCode);
                    if (oneBitmap == null)
                    {
                        continue;
                    }
                    if (n == 0)
                    {//最初ならパレット設定.
                        bitmap.Palette = oneBitmap.Palette;
                    }
                    ImageUtil.BitBlt(bitmap, totalwidth, n * 16, width, 16, oneBitmap, 0, 0, 0, 0);

                    totalwidth += width;
                }
            }
            return(bitmap);
        }
Exemplo n.º 21
0
 public static Bitmap DrawIcon(uint skillid)
 {
     if (Program.ROM.RomInfo.version() != 8)
     {
         return(ImageUtil.BlankDummy());
     }
     PatchUtil.skill_system_enum skillsystem = PatchUtil.SearchSkillSystem();
     if (skillsystem == PatchUtil.skill_system_enum.SkillSystem)
     {
         Bitmap bitmap = SkillConfigSkillSystemForm.DrawSkillIcon(skillid);
         return(bitmap);
     }
     else if (skillsystem == PatchUtil.skill_system_enum.FE8N_ver2)
     {
         Bitmap bitmap = SkillConfigFE8NVer2SkillForm.DrawSkillIcon(skillid);
         return(bitmap);
     }
     return(ImageUtil.BlankDummy());
 }
Exemplo n.º 22
0
        static Bitmap DrawOneImage(uint image, uint tsa, uint palette)
        {
            if (!U.isPointer(image))
            {
                return(ImageUtil.BlankDummy());
            }
            if (!U.isPointer(palette))
            {
                return(ImageUtil.BlankDummy());
            }
            if (!U.isPointer(tsa))
            {
                return(ImageUtil.BlankDummy());
            }

            byte[] imageUZ = LZ77.decompress(Program.ROM.Data, U.toOffset(image));

            return(ImageUtil.ByteToImage16TileHeaderTSA(32 * 8, 20 * 8, imageUZ, 0, Program.ROM.Data, (int)U.toOffset(palette), Program.ROM.Data, (int)U.toOffset(tsa)));
        }
Exemplo n.º 23
0
        //マップ顔画像
        public static Bitmap DrawUnitMapFacePicture(uint uid)
        {
            if (uid == 0)
            {
                return(ImageUtil.BlankDummy());
            }
            uid--;

            InputFormRef InputFormRef = Init(null);
            uint         addr         = InputFormRef.IDToAddr(uid);

            if (!U.isSafetyOffset(addr))
            {
                return(ImagePortraitForm.DrawPortraitMap(0));
            }
            uint face_id = Program.ROM.u16(addr + 6);

            return(ImagePortraitForm.DrawPortraitMap(face_id));
        }
Exemplo n.º 24
0
        public static Bitmap DrawMapChange(uint id, int width, int height, uint change_address, MapAnimations anime = null)
        {
            InputFormRef InputFormRef = Init(null);
            uint         addr         = InputFormRef.IDToAddr(id);

            if (!U.isSafetyOffset(addr))
            {
                return(ImageUtil.BlankDummy());
            }
            if (width <= 0 || height <= 0)
            {
                return(ImageUtil.BlankDummy());
            }

            uint obj_plist     = (uint)Program.ROM.u16(addr + 4);
            uint palette_plist = (uint)Program.ROM.u8(addr + 6);
            uint config_plist  = (uint)Program.ROM.u8(addr + 7);

            return(ImageUtilMap.DrawChangeMap(obj_plist, palette_plist, config_plist, width, height, change_address, anime));
        }
Exemplo n.º 25
0
        public static Bitmap DrawIconWhereID_UsingWeaponPalette_SKILLFE8NVer2(uint id)
        {
            if (id == U.NOT_FOUND)
            {
                return(ImageUtil.BlankDummy(16));
            }

            InputFormRef InputFormRef = Init(null);
            //現在のIDに対応するデータ(FE8NVer2はスキルアイコンのさらに下の領域に書き込まれる)
            uint addr = InputFormRef.BaseAddress + (InputFormRef.BlockSize * id);

            if (!U.isSafetyOffset(addr))
            {
                return(ImageUtil.BlankDummy(16));
            }

            uint palette = Program.ROM.u32(Program.ROM.RomInfo.system_weapon_icon_palette_pointer());

            return(DrawIcon(addr, palette));
        }
Exemplo n.º 26
0
        public static Bitmap Draw(uint id)
        {
            if (id <= 0)
            {
                return(ImageUtil.BlankDummy());
            }

            InputFormRef InputFormRef = Init(null);
            uint         addr         = InputFormRef.IDToAddr(id - 1);

            if (addr == U.NOT_FOUND)
            {
                return(ImageUtil.BlankDummy());
            }

            uint image   = Program.ROM.u32(addr + 12);
            uint palette = Program.ROM.u32(addr + 16);

            return(Draw(image, palette));
        }
Exemplo n.º 27
0
        static Bitmap DrawTSAAnime2(uint image, uint palette, uint tsa)
        {
            if (!U.isPointer(image))
            {
                return(ImageUtil.BlankDummy());
            }
            if (!U.isPointer(palette))
            {
                return(ImageUtil.BlankDummy());
            }
            if (!U.isPointer(tsa))
            {
                return(ImageUtil.BlankDummy());
            }

            byte[] imageUZ = LZ77.decompress(Program.ROM.Data, U.toOffset(image));
            int    height  = (int)ImageUtil.CalcByteLengthForHeaderTSAData(Program.ROM.Data, (int)U.toOffset(tsa));

            return(ImageUtil.ByteToImage16TileHeaderTSA(32 * 8, height, imageUZ, 0, Program.ROM.Data, (int)U.toOffset(palette), Program.ROM.Data, (int)U.toOffset(tsa)));
        }
        public static Bitmap Draw(uint anime_address, uint showFrameData, out string log)
        {
            anime_address = U.toOffset(anime_address);
            if (!U.isSafetyOffset(anime_address))
            {
                log = "";
                return(ImageUtil.BlankDummy());
            }

            uint frame = FindFrame(showFrameData, anime_address, Program.ROM.Data);

            if (frame == U.NOT_FOUND)
            {
                log = "";
                return(ImageUtil.BlankDummy());
            }
            //フレームを発見したので描画する.
            Bitmap retImage = DrawFrameImage(frame, out log);

            return(retImage);
        }
Exemplo n.º 29
0
        public static Bitmap DrawMoveUnitIconBitmap(uint icon_id, int palette_type, int step)
        {
            if (icon_id == 0)
            {
                return ImageUtil.BlankDummy();
            }
            else
            {
                icon_id = icon_id - 1;
            }

            InputFormRef InputFormRef = Init(null);
            uint addr = InputFormRef.IDToAddr(icon_id);
            if (!U.isSafetyOffset(addr))
            {
                return ImageUtil.Blank(2 * 8, 2 * 8);
            }
            uint pic_address = (uint)Program.ROM.u32(addr + 0);

            return DrawMoveUnitIcon(pic_address, palette_type,step);
        }
Exemplo n.º 30
0
        private void PaletteImportButton_Click(object sender, EventArgs e)
        {
            if (this.MapStyle.SelectedIndex < 0)
            {
                return;
            }
            uint palette_plist = this.MapEditConf[this.MapStyle.SelectedIndex].palette_plist;
            uint obj_plist     = this.MapEditConf[this.MapStyle.SelectedIndex].obj_plist;

            Bitmap bitmap = ImageFormRef.ImportFilenameDialog(this);

            if (bitmap == null)
            {
                return;
            }

            bool r = MapPaletteImport(bitmap, palette_plist);

            if (!r)
            {
                return;
            }

            //パレットの交換
            this.MapObjImage = ImageUtilMap.DrawMapChipOnly(obj_plist, palette_plist);
            if (this.MapObjImage == null)
            {
                this.MapObjImage = ImageUtil.BlankDummy();
            }
            U.ForceUpdate(this.PaletteCombo, 0);

            //チップセットの更新.
            Chipset_Update();
            SelectedChipset_Update();
            MapStyle_SelectedIndexChanged(sender, e);
            InputFormRef.WriteButtonToYellow(this.PaletteWriteButton, false);

            //マップエディタが開いていれば更新する
            MapEditorForm.UpdateMapStyleIfOpen();
        }