BizHawk/BizHawk.Emulation.Cores/Consoles/Coleco/ColecoVision.ISettable.cs

103 lines
2.1 KiB
C#
Raw Normal View History

2017-03-01 02:44:05 +00:00
using System;
using Newtonsoft.Json;
using BizHawk.Common;
using BizHawk.Emulation.Common;
namespace BizHawk.Emulation.Cores.ColecoVision
{
2017-03-01 02:44:05 +00:00
public partial class ColecoVision : IEmulator, IStatable, ISettable<ColecoVision.ColecoSettings, ColecoVision.ColecoSyncSettings>
{
2017-03-01 02:44:05 +00:00
public ColecoSettings GetSettings()
{
return _settings.Clone();
}
public ColecoSyncSettings GetSyncSettings()
{
return _syncSettings.Clone();
}
2017-03-01 02:44:05 +00:00
public bool PutSettings(ColecoSettings o)
{
_settings = o;
return false;
}
public bool PutSyncSettings(ColecoSyncSettings o)
{
bool ret = o.SkipBiosIntro != _syncSettings.SkipBiosIntro;
2017-03-01 02:44:05 +00:00
ret |= ColecoSyncSettings.NeedsReboot(_syncSettings, o);
_syncSettings = o;
return ret;
}
2017-03-01 02:44:05 +00:00
public class ColecoSettings
{
public ColecoSettings Clone()
{
return (ColecoSettings)MemberwiseClone();
}
}
private ColecoSettings _settings = new ColecoSettings();
private ColecoSyncSettings _syncSettings = new ColecoSyncSettings();
public class ColecoSyncSettings
{
public bool SkipBiosIntro { get; set; }
2017-03-01 02:44:05 +00:00
private string _port1 = ColecoVisionControllerDeck.DefaultControllerName;
private string _port2 = ColecoVisionControllerDeck.DefaultControllerName;
[JsonIgnore]
public string Port1
{
get
{
return _port1;
}
2017-03-01 02:44:05 +00:00
set
{
if (!ColecoVisionControllerDeck.ValidControllerTypes.ContainsKey(value))
{
throw new InvalidOperationException("Invalid controller type: " + value);
}
_port1 = value;
}
}
[JsonIgnore]
public string Port2
{
get
{
return _port2;
}
2017-03-01 02:44:05 +00:00
set
{
if (!ColecoVisionControllerDeck.ValidControllerTypes.ContainsKey(value))
{
throw new InvalidOperationException("Invalid controller type: " + value);
}
_port2 = value;
}
}
public ColecoSyncSettings Clone()
{
return (ColecoSyncSettings)MemberwiseClone();
}
2017-03-01 02:44:05 +00:00
public static bool NeedsReboot(ColecoSyncSettings x, ColecoSyncSettings y)
{
return !DeepEquality.DeepEquals(x, y);
}
}
}
}