private void UpdateEffectImage() { animationTimer.Stop(); Settings.Default.VerifyRohLocation(); animationTimer.Start(); using (var archive = DataArchive.Open(Settings.Default.RohLocation)) { if (_selectedFileName.EndsWith(".epf", StringComparison.CurrentCultureIgnoreCase)) { var epf = new EPFFile(archive.GetEntry(_selectedFileName)); if (_animationFrame >= epf.Frames.Count) { _animationFrame = 0; } var frame = epf.Frames[_animationFrame]; int paletteNumber = _paletteTable.GetPaletteNumber(_selectedFileNumber); bool useBlending = false; if (paletteNumber >= 1000) { paletteNumber -= 1000; useBlending = true; } var palette = new Palette(archive.GetEntry($"eff{paletteNumber:d3}.pal")); _effectImage = new Bitmap(epf.Width, epf.Height); using (var g = Graphics.FromImage(_effectImage)) { if (useBlending) { // temporary solution g.Clear(Color.Black); } g.DrawImage(frame.Render(palette), frame.Left, frame.Top); } } else { var efa = new EFAFile(archive.GetEntry(_selectedFileName)); if (_animationFrame >= efa.Frames.Count) { _animationFrame = 0; } var frame = efa.Frames[_animationFrame]; _effectImage = frame.Render(); } } effectPanel.Refresh(); }
private void SkillsForm_Load(object sender, EventArgs e) { Settings.Default.VerifySetoaLocation(); using (var archive = DataArchive.Open(Settings.Default.SetoaLocation)) using (var g = Graphics.FromImage(_skillTilesImage)) { var epf = new EPFFile(archive.GetEntry(_fileName)); var pal = new Palette(archive.GetEntry("gui06.pal")); for (int col = 0; col < columns; ++col) { for (int row = 0; row < rows; ++row) { int frameIndex = columns * row + col; if (frameIndex < epf.Frames.Count) { var frame = epf.Frames[frameIndex]; var frameImage = frame.Render(pal); g.DrawImage(frameImage, col * tileWidth + frame.Left, row * tileHeight + frame.Top); } } } } }
private void UpdateItemTilesImage() { Settings.Default.VerifyLegendLocation(); using (var archive = DataArchive.Open(Settings.Default.LegendLocation)) using (var g = Graphics.FromImage(_itemTilesImage)) { g.Clear(itemTilesPanel.BackColor); var epf = new EPFFile(archive.GetEntry(_selectedFileName)); for (int col = 0; col < columns; ++col) { for (int row = 0; row < rows; ++row) { int frameIndex = columns * row + col; if (frameIndex < epf.Frames.Count) { var frame = epf.Frames[frameIndex]; int tileNumber = (_selectedFileNumber - 1) * 266 + frameIndex + 1; int paletteNumber = _paletteTable.GetPaletteNumber(tileNumber); var palette = new Palette(archive.GetEntry($"item{paletteNumber:d3}.pal")); var frameImage = frame.Render(palette); g.DrawImage(frameImage, col * tileWidth + frame.Left, row * tileHeight + frame.Top); } } } } itemTilesPanel.Refresh(); }
private void UpdateMotionTilesImage() { string archiveFileName, idleFileName, motionFileName; if (genderListBox.SelectedIndex == 0) { animationTimer.Stop(); Settings.Default.VerifyKhanmadLocation(); animationTimer.Start(); archiveFileName = Settings.Default.KhanmadLocation; idleFileName = "mb00101.epf"; if (_selectedMotion.Number == 1) { motionFileName = "mb00102.epf"; } else if (_selectedMotion.Number == 6) { motionFileName = "mb00103.epf"; } else { motionFileName = $"mb001{(char)('a' + _selectedMotion.FileNumber)}.epf"; } } else { animationTimer.Stop(); Settings.Default.VerifyKhanwadLocation(); animationTimer.Start(); archiveFileName = Settings.Default.KhanwadLocation; idleFileName = "wb00101.epf"; if (_selectedMotion.Number == 1) { motionFileName = "wb00102.epf"; } else if (_selectedMotion.Number == 6) { motionFileName = "wb00103.epf"; } else { motionFileName = $"wb001{(char)('a' + _selectedMotion.FileNumber)}.epf"; } } animationTimer.Stop(); Settings.Default.VerifyKhanpalLocation(); animationTimer.Start(); using (var epfArchive = DataArchive.Open(archiveFileName)) using (var palArchive = DataArchive.Open(Settings.Default.KhanpalLocation)) { var idleEpf = new EPFFile(epfArchive.GetEntry(idleFileName)); var motionEpf = new EPFFile(epfArchive.GetEntry(motionFileName)); var pal = new Palette(palArchive.GetEntry("palb000.pal")); EPFFrame frame; if (_animationFrame >= _selectedMotion.FrameCount) { _animationFrame = -1; } if (_animationFrame == -1) { frame = idleEpf.Frames[5]; } else { frame = motionEpf.Frames[_selectedMotion.StartIndex + _selectedMotion.FrameCount + _animationFrame]; } using (var g = Graphics.FromImage(_motionTilesImage)) { g.Clear(motionTilesPanel.BackColor); g.DrawImage(frame.Render(pal), frame.Left, frame.Top); } } motionTilesPanel.Refresh(); }