namespace BizHawk.Client.EmuHawk
{
public enum ToolFormUpdateType
{
//reserved
Legacy, LegacyFast,
//reserved concept: we can run other events through here (should probably rename then)
Reset,
///
/// Called before a frame emulates
///
PreFrame,
///
/// Called after a frame emulates
///
PostFrame
}
public interface IToolForm
{
///
/// Will be called by the client anytime an Update needs to occur, such as after an emulated frame, a loadstate, or a related dialog has made a relevant change
///
void UpdateValues();
///
/// A new extensible update method
///
void NewUpdate(ToolFormUpdateType type);
///
/// Will be called by the client when performance is critical,
/// The tool should only do the minimum to still function,
/// Drawing should not occur if possible, during a fast update
///
void FastUpdate();
///
/// Will be called anytime the dialog needs to be restarted, such as when a new ROM is loaded
/// The tool implementing this needs to account for a Game and Core change
///
void Restart();
///
/// This gives the opportunity for the tool dialog to ask the user to save changes (such is necessary when
/// This tool dialog edits a file. Returning false will tell the client the user wants to cancel the given action,
/// Return false to tell the client to back out of an action (such as closing the emulator)
///
///
bool AskSaveChanges();
///
/// Indicates whether the tool should be updated before a frame loop or after.
/// In general, tools that draw graphics from the core should update before the loop,
/// Information tools such as those that display core ram values should be after.
/// AWESOME! no separate preupdate and postupdate hooks. seriously?
///
bool UpdateBefore { get; }
//Necessary winform calls
bool Focus();
bool ContainsFocus { get; }
void Show();
void Close();
bool IsDisposed { get; }
bool IsHandleCreated { get; }
}
}