using System;
namespace BizHawk.Emulation.Common
{
///
/// This object facilitates communications between client and core
/// and is used by the IEmulator interface
/// The primary use is to provide a client => core communication, such as providing client-side callbacks for a core to use
/// Any communications that can be described as purely a Core -> Client system, should be provided as an instead
///
///
public class CoreComm
{
public CoreComm(Action showMessage, Action notifyMessage)
{
ShowMessage = showMessage;
Notify = notifyMessage;
}
public ICoreFileProvider CoreFileProvider { get; set; }
// a core should set these if you wish to provide rom status information yourself. otherwise it will be calculated by the frontend in a way you may not like, using RomGame-related concepts.
public string RomStatusAnnotation { get; set; }
public string RomStatusDetails { get; set; }
public int ScreenLogicalOffsetX { get; set; }
public int ScreenLogicalOffsetY { get; set; }
// size hint to a/v out resizer. this probably belongs in VideoProvider? but it's somewhat different than VirtualWidth...
public int NominalWidth { get; set; } = 640;
public int NominalHeight { get; set; } = 480;
// I know we want to get rid of CoreComm, but while it's still here, I'll use it for this
public string LaunchLibretroCore { get; set; }
///
/// Gets a message to show. reasonably annoying (dialog box), shouldn't be used most of the time
///
public Action ShowMessage { get; }
///
/// Gets a message to show. less annoying (OSD message). Should be used for ignorable helpful messages
///
public Action Notify { get; }
public Func RequestGLContext { get; set; }
public Action