mirror of
https://github.com/kwsch/PKHeX
synced 2024-11-24 04:53:08 +00:00
b81a1e1e29
Increase abstraction for arbitrary slot get/set operations, and fracture SAV4 behavior for each game type. Adds: Undo/Redo of party slot changes Fixes: Fixed Gen5 daycare slot 2 reading, and EXP reading Fixes: Some slot color glitchiness Fixed: Box layout editor now hides the flag label if no flags are present Fixed: Gen7 box flags are now shown (unknown purpose lol) Changed: savefile objects are generally smaller (removed a few shared offset fields)
64 lines
2.2 KiB
C#
64 lines
2.2 KiB
C#
using System;
|
|
using System.Windows.Forms;
|
|
using PKHeX.Core;
|
|
using PKHeX.WinForms.Controls;
|
|
|
|
namespace PKHeX.WinForms
|
|
{
|
|
public sealed partial class SAV_BoxViewer : Form
|
|
{
|
|
private readonly SAVEditor parent;
|
|
|
|
public SAV_BoxViewer(SAVEditor p, SlotChangeManager m)
|
|
{
|
|
parent = p;
|
|
InitializeComponent();
|
|
Box.Editor = new BoxEdit(m.SE.SAV);
|
|
Box.Setup(m);
|
|
Box.Reset();
|
|
CenterToParent();
|
|
|
|
AllowDrop = true;
|
|
GiveFeedback += (sender, e) => e.UseDefaultCursors = false;
|
|
DragEnter += Main_DragEnter;
|
|
DragDrop += (sender, e) =>
|
|
{
|
|
Cursor = DefaultCursor;
|
|
System.Media.SystemSounds.Asterisk.Play();
|
|
};
|
|
Owner = p.ParentForm;
|
|
|
|
MouseWheel += (s, e) =>
|
|
{
|
|
if (parent.menu.mnuVSD.Visible)
|
|
return;
|
|
Box.CurrentBox = e.Delta > 1 ? Box.Editor.MoveLeft() : Box.Editor.MoveRight();
|
|
};
|
|
|
|
foreach (PictureBox pb in Box.SlotPictureBoxes)
|
|
pb.ContextMenuStrip = parent.SlotPictureBoxes[0].ContextMenuStrip;
|
|
Box.ResetBoxNames(); // fix box names
|
|
Box.ResetSlots(); // refresh box background
|
|
p.EditEnv.Slots.Publisher.Subscribers.Add(Box);
|
|
}
|
|
|
|
public int CurrentBox => Box.CurrentBox;
|
|
private void PB_BoxSwap_Click(object sender, EventArgs e) => Box.CurrentBox = parent.SwapBoxesViewer(Box.CurrentBox);
|
|
public void SetPKMBoxes() => Box.ResetSlots();
|
|
|
|
private static void Main_DragEnter(object sender, DragEventArgs e)
|
|
{
|
|
if (e.AllowedEffect == (DragDropEffects.Copy | DragDropEffects.Link)) // external file
|
|
e.Effect = DragDropEffects.Copy;
|
|
else if (e.Data != null) // within
|
|
e.Effect = DragDropEffects.Move;
|
|
}
|
|
|
|
private void SAV_BoxViewer_FormClosing(object sender, FormClosingEventArgs e)
|
|
{
|
|
// Remove viewer from manager list
|
|
Box.M.Boxes.Remove(Box);
|
|
parent.EditEnv.Slots.Publisher.Subscribers.Remove(Box);
|
|
}
|
|
}
|
|
}
|