mirror of
https://github.com/TomHarte/CLK.git
synced 2026-04-20 10:17:05 +00:00
Improve option naming, add one for dynamic crop.
This commit is contained in:
@@ -25,10 +25,12 @@ ReflectableEnum(Display,
|
||||
// ensure unified property naming.
|
||||
//===
|
||||
|
||||
template <typename Owner> class DisplayOption {
|
||||
namespace Options {
|
||||
|
||||
template <typename Owner> class Display {
|
||||
public:
|
||||
Configurable::Display output;
|
||||
DisplayOption(Configurable::Display output) : output(output) {}
|
||||
Display(const Configurable::Display output) noexcept : output(output) {}
|
||||
|
||||
protected:
|
||||
void declare_display_option() {
|
||||
@@ -37,26 +39,38 @@ protected:
|
||||
}
|
||||
};
|
||||
|
||||
template <typename Owner> class QuickloadOption {
|
||||
template <typename Owner> class QuickLoad {
|
||||
public:
|
||||
bool quickload;
|
||||
QuickloadOption(bool quickload) : quickload(quickload) {}
|
||||
bool quick_load;
|
||||
QuickLoad(const bool quick_load) noexcept : quick_load(quick_load) {}
|
||||
|
||||
protected:
|
||||
void declare_quickload_option() {
|
||||
static_cast<Owner *>(this)->declare(&quickload, "quickload");
|
||||
static_cast<Owner *>(this)->declare(&quick_load, "quickload");
|
||||
}
|
||||
};
|
||||
|
||||
template <typename Owner> class QuickbootOption {
|
||||
template <typename Owner> class QuickBoot {
|
||||
public:
|
||||
bool quickboot;
|
||||
QuickbootOption(bool quickboot) : quickboot(quickboot) {}
|
||||
bool quick_boot;
|
||||
QuickBoot(const bool quick_boot) noexcept : quick_boot(quick_boot) {}
|
||||
|
||||
protected:
|
||||
void declare_quickboot_option() {
|
||||
static_cast<Owner *>(this)->declare(&quickboot, "quickboot");
|
||||
static_cast<Owner *>(this)->declare(&quick_boot, "quickboot");
|
||||
}
|
||||
};
|
||||
|
||||
template <typename Owner> class DynamicCrop {
|
||||
public:
|
||||
bool dynamic_crop;
|
||||
DynamicCrop(const bool dynamic_crop) noexcept : dynamic_crop(dynamic_crop) {}
|
||||
|
||||
protected:
|
||||
void declare_quickboot_option() {
|
||||
static_cast<Owner *>(this)->declare(&dynamic_crop, "dynamiccrop");
|
||||
}
|
||||
};
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -509,13 +509,13 @@ private:
|
||||
// MARK: - Configuration options.
|
||||
std::unique_ptr<Reflection::Struct> get_options() const final {
|
||||
auto options = std::make_unique<Options>(Configurable::OptionsType::UserFriendly);
|
||||
options->quickload = accelerate_loading_;
|
||||
options->quick_load = accelerate_loading_;
|
||||
return options;
|
||||
}
|
||||
|
||||
void set_options(const std::unique_ptr<Reflection::Struct> &str) final {
|
||||
const auto options = dynamic_cast<Options *>(str.get());
|
||||
accelerate_loading_ = options->quickload;
|
||||
accelerate_loading_ = options->quick_load;
|
||||
}
|
||||
|
||||
// MARK: - AudioProducer
|
||||
|
||||
@@ -24,13 +24,13 @@ struct Machine {
|
||||
const ROMMachine::ROMFetcher &rom_fetcher
|
||||
);
|
||||
|
||||
class Options: public Reflection::StructImpl<Options>, public Configurable::QuickloadOption<Options> {
|
||||
friend Configurable::QuickloadOption<Options>;
|
||||
class Options: public Reflection::StructImpl<Options>, public Configurable::Options::QuickLoad<Options> {
|
||||
friend Configurable::Options::QuickLoad<Options>;
|
||||
public:
|
||||
Options(Configurable::OptionsType type) :
|
||||
Configurable::QuickloadOption<Options>(type == Configurable::OptionsType::UserFriendly) {}
|
||||
Options(const Configurable::OptionsType type) :
|
||||
Configurable::Options::QuickLoad<Options>(type == Configurable::OptionsType::UserFriendly) {}
|
||||
private:
|
||||
Options() : Options(Configurable::OptionsType::UserFriendly) {}
|
||||
Options() : Options( Configurable::OptionsType::UserFriendly) {}
|
||||
friend Reflection::StructImpl<Options>;
|
||||
void declare_fields() {
|
||||
declare_quickload_option();
|
||||
|
||||
@@ -599,7 +599,7 @@ public:
|
||||
std::unique_ptr<Reflection::Struct> get_options() const final {
|
||||
auto options = std::make_unique<Options>(Configurable::OptionsType::UserFriendly);
|
||||
options->output = get_video_signal_configurable();
|
||||
options->quickload = allow_fast_tape_hack_;
|
||||
options->quick_load = allow_fast_tape_hack_;
|
||||
return options;
|
||||
}
|
||||
|
||||
@@ -607,7 +607,7 @@ public:
|
||||
const auto options = dynamic_cast<Options *>(str.get());
|
||||
|
||||
set_video_signal_configurable(options->output);
|
||||
allow_fast_tape_hack_ = options->quickload;
|
||||
allow_fast_tape_hack_ = options->quick_load;
|
||||
set_use_fast_tape_hack();
|
||||
}
|
||||
|
||||
|
||||
@@ -35,22 +35,22 @@ struct Machine {
|
||||
/// Defines the runtime options available for an Electron.
|
||||
class Options:
|
||||
public Reflection::StructImpl<Options>,
|
||||
public Configurable::DisplayOption<Options>,
|
||||
public Configurable::QuickloadOption<Options>
|
||||
public Configurable::Options::Display<Options>,
|
||||
public Configurable::Options::QuickLoad<Options>
|
||||
{
|
||||
friend Configurable::DisplayOption<Options>;
|
||||
friend Configurable::QuickloadOption<Options>;
|
||||
friend Configurable::Options::Display<Options>;
|
||||
friend Configurable::Options::QuickLoad<Options>;
|
||||
public:
|
||||
Options(const Configurable::OptionsType type) :
|
||||
Configurable::DisplayOption<Options>(
|
||||
Configurable::Options::Display<Options>(
|
||||
type == Configurable::OptionsType::UserFriendly ?
|
||||
Configurable::Display::RGB : Configurable::Display::CompositeColour
|
||||
),
|
||||
Configurable::QuickloadOption<Options>(
|
||||
Configurable::Options::QuickLoad<Options>(
|
||||
type == Configurable::OptionsType::UserFriendly) {}
|
||||
|
||||
private:
|
||||
Options() : Options(Configurable::OptionsType::UserFriendly) {}
|
||||
Options() : Options( Configurable::OptionsType::UserFriendly) {}
|
||||
|
||||
friend Reflection::StructImpl<Options>;
|
||||
void declare_fields() {
|
||||
|
||||
@@ -1191,14 +1191,14 @@ public:
|
||||
std::unique_ptr<Reflection::Struct> get_options() const final {
|
||||
auto options = std::make_unique<Options>(Configurable::OptionsType::UserFriendly);
|
||||
options->output = get_video_signal_configurable();
|
||||
options->quickload = allow_fast_tape_hack_;
|
||||
options->quick_load = allow_fast_tape_hack_;
|
||||
return options;
|
||||
}
|
||||
|
||||
void set_options(const std::unique_ptr<Reflection::Struct> &str) {
|
||||
const auto options = dynamic_cast<Options *>(str.get());
|
||||
set_video_signal_configurable(options->output);
|
||||
allow_fast_tape_hack_ = options->quickload;
|
||||
allow_fast_tape_hack_ = options->quick_load;
|
||||
set_use_fast_tape_hack();
|
||||
}
|
||||
|
||||
|
||||
@@ -32,19 +32,19 @@ struct Machine {
|
||||
/// Defines the runtime options available for an Amstrad CPC.
|
||||
class Options:
|
||||
public Reflection::StructImpl<Options>,
|
||||
public Configurable::DisplayOption<Options>,
|
||||
public Configurable::QuickloadOption<Options>
|
||||
public Configurable::Options::Display<Options>,
|
||||
public Configurable::Options::QuickLoad<Options>
|
||||
{
|
||||
public:
|
||||
Options(const Configurable::OptionsType type) :
|
||||
Configurable::DisplayOption<Options>(Configurable::Display::RGB),
|
||||
Configurable::QuickloadOption<Options>(type == Configurable::OptionsType::UserFriendly) {}
|
||||
Configurable::Options::Display<Options>(Configurable::Display::RGB),
|
||||
Configurable::Options::QuickLoad<Options>(type == Configurable::OptionsType::UserFriendly) {}
|
||||
|
||||
private:
|
||||
friend Configurable::DisplayOption<Options>;
|
||||
friend Configurable::QuickloadOption<Options>;
|
||||
friend Configurable::Options::Display<Options>;
|
||||
friend Configurable::Options::QuickLoad<Options>;
|
||||
|
||||
Options() : Options(Configurable::OptionsType::UserFriendly) {}
|
||||
Options() : Options( Configurable::OptionsType::UserFriendly) {}
|
||||
|
||||
friend Reflection::StructImpl<Options>;
|
||||
void declare_fields() {
|
||||
|
||||
@@ -24,15 +24,15 @@ struct Machine {
|
||||
static std::unique_ptr<Machine> AppleII(const Analyser::Static::Target *, const ROMMachine::ROMFetcher &);
|
||||
|
||||
/// Defines the runtime options available for an Apple II.
|
||||
class Options: public Reflection::StructImpl<Options>, public Configurable::DisplayOption<Options> {
|
||||
friend Configurable::DisplayOption<Options>;
|
||||
class Options: public Reflection::StructImpl<Options>, public Configurable::Options::Display<Options> {
|
||||
friend Configurable::Options::Display<Options>;
|
||||
public:
|
||||
bool use_square_pixels = false;
|
||||
|
||||
Options(Configurable::OptionsType) :
|
||||
Configurable::DisplayOption<Options>(Configurable::Display::CompositeColour) {}
|
||||
Options(const Configurable::OptionsType) :
|
||||
Configurable::Options::Display<Options>(Configurable::Display::CompositeColour) {}
|
||||
private:
|
||||
Options() : Options(Configurable::OptionsType::UserFriendly) {}
|
||||
Options() : Options( Configurable::OptionsType::UserFriendly) {}
|
||||
|
||||
friend Reflection::StructImpl<Options>;
|
||||
void declare_fields() {
|
||||
|
||||
@@ -506,7 +506,7 @@ public:
|
||||
// MARK: - Configuration options.
|
||||
std::unique_ptr<Reflection::Struct> get_options() const final {
|
||||
auto options = std::make_unique<Options>(Configurable::OptionsType::UserFriendly);
|
||||
options->quickboot = quickboot_;
|
||||
options->quick_boot = quickboot_;
|
||||
return options;
|
||||
}
|
||||
|
||||
@@ -515,7 +515,7 @@ public:
|
||||
// It should probably be a construction option.
|
||||
|
||||
const auto options = dynamic_cast<Options *>(str.get());
|
||||
quickboot_ = options->quickboot;
|
||||
quickboot_ = options->quick_boot;
|
||||
|
||||
using Model = Analyser::Static::Macintosh::Target::Model;
|
||||
const bool is_plus_rom = model == Model::Mac512ke || model == Model::MacPlus;
|
||||
|
||||
@@ -21,11 +21,11 @@ struct Machine {
|
||||
/// Creates and returns a Macintosh.
|
||||
static std::unique_ptr<Machine> Macintosh(const Analyser::Static::Target *, const ROMMachine::ROMFetcher &);
|
||||
|
||||
class Options: public Reflection::StructImpl<Options>, public Configurable::QuickbootOption<Options> {
|
||||
friend Configurable::QuickbootOption<Options>;
|
||||
class Options: public Reflection::StructImpl<Options>, public Configurable::Options::QuickBoot<Options> {
|
||||
friend Configurable::Options::QuickBoot<Options>;
|
||||
public:
|
||||
Options(Configurable::OptionsType type) :
|
||||
Configurable::QuickbootOption<Options>(type == Configurable::OptionsType::UserFriendly) {}
|
||||
Options(const Configurable::OptionsType type) :
|
||||
Configurable::Options::QuickBoot<Options>(type == Configurable::OptionsType::UserFriendly) {}
|
||||
private:
|
||||
Options() : Options(Configurable::OptionsType::UserFriendly) {}
|
||||
|
||||
|
||||
@@ -22,15 +22,15 @@ struct Machine {
|
||||
|
||||
static std::unique_ptr<Machine> AtariST(const Analyser::Static::Target *, const ROMMachine::ROMFetcher &);
|
||||
|
||||
class Options: public Reflection::StructImpl<Options>, public Configurable::DisplayOption<Options> {
|
||||
friend Configurable::DisplayOption<Options>;
|
||||
class Options: public Reflection::StructImpl<Options>, public Configurable::Options::Display<Options> {
|
||||
friend Configurable::Options::Display<Options>;
|
||||
public:
|
||||
Options(Configurable::OptionsType type) : Configurable::DisplayOption<Options>(
|
||||
Options(const Configurable::OptionsType type) : Configurable::Options::Display<Options>(
|
||||
type == Configurable::OptionsType::UserFriendly ?
|
||||
Configurable::Display::RGB : Configurable::Display::CompositeColour) {}
|
||||
|
||||
private:
|
||||
Options() : Options(Configurable::OptionsType::UserFriendly) {}
|
||||
Options() : Options( Configurable::OptionsType::UserFriendly) {}
|
||||
|
||||
friend Reflection::StructImpl<Options>;
|
||||
void declare_fields() {
|
||||
|
||||
@@ -21,15 +21,15 @@ struct Machine {
|
||||
virtual ~Machine() = default;
|
||||
static std::unique_ptr<Machine> ColecoVision(const Analyser::Static::Target *, const ROMMachine::ROMFetcher &);
|
||||
|
||||
class Options: public Reflection::StructImpl<Options>, public Configurable::DisplayOption<Options> {
|
||||
friend Configurable::DisplayOption<Options>;
|
||||
class Options: public Reflection::StructImpl<Options>, public Configurable::Options::Display<Options> {
|
||||
friend Configurable::Options::Display<Options>;
|
||||
public:
|
||||
Options(Configurable::OptionsType type) :
|
||||
Configurable::DisplayOption<Options>(type == Configurable::OptionsType::UserFriendly ?
|
||||
Options(const Configurable::OptionsType type) :
|
||||
Configurable::Options::Display<Options>(type == Configurable::OptionsType::UserFriendly ?
|
||||
Configurable::Display::SVideo : Configurable::Display::CompositeColour) {}
|
||||
|
||||
private:
|
||||
Options() : Options(Configurable::OptionsType::UserFriendly) {}
|
||||
Options() : Options( Configurable::OptionsType::UserFriendly) {}
|
||||
|
||||
friend Reflection::StructImpl<Options>;
|
||||
void declare_fields() {
|
||||
|
||||
@@ -1173,7 +1173,7 @@ private:
|
||||
std::unique_ptr<Reflection::Struct> get_options() const final {
|
||||
auto options = std::make_unique<Options>(Configurable::OptionsType::UserFriendly);
|
||||
options->output = get_video_signal_configurable();
|
||||
options->quickload = allow_fast_tape_hack_;
|
||||
options->quick_load = allow_fast_tape_hack_;
|
||||
return options;
|
||||
}
|
||||
|
||||
@@ -1181,7 +1181,7 @@ private:
|
||||
const auto options = dynamic_cast<Options *>(str.get());
|
||||
|
||||
set_video_signal_configurable(options->output);
|
||||
allow_fast_tape_hack_ = options->quickload;
|
||||
allow_fast_tape_hack_ = options->quick_load;
|
||||
set_use_fast_tape();
|
||||
}
|
||||
};
|
||||
|
||||
@@ -26,19 +26,19 @@ struct Machine {
|
||||
|
||||
class Options:
|
||||
public Reflection::StructImpl<Options>,
|
||||
public Configurable::DisplayOption<Options>,
|
||||
public Configurable::QuickloadOption<Options>
|
||||
public Configurable::Options::Display<Options>,
|
||||
public Configurable::Options::QuickLoad<Options>
|
||||
{
|
||||
friend Configurable::DisplayOption<Options>;
|
||||
friend Configurable::QuickloadOption<Options>;
|
||||
friend Configurable::Options::Display<Options>;
|
||||
friend Configurable::Options::QuickLoad<Options>;
|
||||
public:
|
||||
Options(Configurable::OptionsType type) :
|
||||
Configurable::DisplayOption<Options>(type == Configurable::OptionsType::UserFriendly ?
|
||||
Options(const Configurable::OptionsType type) :
|
||||
Configurable::Options::Display<Options>(type == Configurable::OptionsType::UserFriendly ?
|
||||
Configurable::Display::SVideo : Configurable::Display::CompositeColour),
|
||||
Configurable::QuickloadOption<Options>(type == Configurable::OptionsType::UserFriendly) {
|
||||
Configurable::Options::QuickLoad<Options>(type == Configurable::OptionsType::UserFriendly) {
|
||||
}
|
||||
private:
|
||||
Options() : Options(Configurable::OptionsType::UserFriendly) {}
|
||||
Options() : Options( Configurable::OptionsType::UserFriendly) {}
|
||||
|
||||
friend Reflection::StructImpl<Options>;
|
||||
void declare_fields() {
|
||||
|
||||
@@ -696,14 +696,14 @@ public:
|
||||
std::unique_ptr<Reflection::Struct> get_options() const final {
|
||||
auto options = std::make_unique<Options>(Configurable::OptionsType::UserFriendly);
|
||||
options->output = get_video_signal_configurable();
|
||||
options->quickload = allow_fast_tape_hack_;
|
||||
options->quick_load = allow_fast_tape_hack_;
|
||||
return options;
|
||||
}
|
||||
|
||||
void set_options(const std::unique_ptr<Reflection::Struct> &str) final {
|
||||
const auto options = dynamic_cast<Options *>(str.get());
|
||||
set_video_signal_configurable(options->output);
|
||||
allow_fast_tape_hack_ = options->quickload;
|
||||
allow_fast_tape_hack_ = options->quick_load;
|
||||
set_use_fast_tape();
|
||||
}
|
||||
|
||||
|
||||
@@ -28,16 +28,16 @@ struct Machine {
|
||||
|
||||
class Options:
|
||||
public Reflection::StructImpl<Options>,
|
||||
public Configurable::DisplayOption<Options>,
|
||||
public Configurable::QuickloadOption<Options>
|
||||
public Configurable::Options::Display<Options>,
|
||||
public Configurable::Options::QuickLoad<Options>
|
||||
{
|
||||
friend Configurable::DisplayOption<Options>;
|
||||
friend Configurable::QuickloadOption<Options>;
|
||||
friend Configurable::Options::Display<Options>;
|
||||
friend Configurable::Options::QuickLoad<Options>;
|
||||
public:
|
||||
Options(Configurable::OptionsType type) :
|
||||
Configurable::DisplayOption<Options>(type == Configurable::OptionsType::UserFriendly ?
|
||||
Options(const Configurable::OptionsType type) :
|
||||
Configurable::Options::Display<Options>(type == Configurable::OptionsType::UserFriendly ?
|
||||
Configurable::Display::SVideo : Configurable::Display::CompositeColour),
|
||||
Configurable::QuickloadOption<Options>(type == Configurable::OptionsType::UserFriendly) {
|
||||
Configurable::Options::QuickLoad<Options>(type == Configurable::OptionsType::UserFriendly) {
|
||||
}
|
||||
private:
|
||||
Options() : Options(Configurable::OptionsType::UserFriendly) {}
|
||||
|
||||
@@ -28,16 +28,16 @@ struct Machine {
|
||||
static std::unique_ptr<Machine> Enterprise(const Analyser::Static::Target *, const ROMMachine::ROMFetcher &);
|
||||
|
||||
/// Defines the runtime options available for an Enterprise.
|
||||
class Options: public Reflection::StructImpl<Options>, public Configurable::DisplayOption<Options> {
|
||||
friend Configurable::DisplayOption<Options>;
|
||||
class Options: public Reflection::StructImpl<Options>, public Configurable::Options::Display<Options> {
|
||||
friend Configurable::Options::Display<Options>;
|
||||
public:
|
||||
Options(Configurable::OptionsType type) :
|
||||
Configurable::DisplayOption<Options>(
|
||||
Options(const Configurable::OptionsType type) :
|
||||
Configurable::Options::Display<Options>(
|
||||
type == Configurable::OptionsType::UserFriendly ?
|
||||
Configurable::Display::RGB : Configurable::Display::CompositeColour) {}
|
||||
|
||||
private:
|
||||
Options() : Options(Configurable::OptionsType::UserFriendly) {}
|
||||
Options() : Options( Configurable::OptionsType::UserFriendly) {}
|
||||
|
||||
friend Reflection::StructImpl<Options>;
|
||||
void declare_fields() {
|
||||
|
||||
@@ -815,14 +815,14 @@ public:
|
||||
std::unique_ptr<Reflection::Struct> get_options() const final {
|
||||
auto options = std::make_unique<Options>(Configurable::OptionsType::UserFriendly);
|
||||
options->output = get_video_signal_configurable();
|
||||
options->quickload = allow_fast_tape_;
|
||||
options->quick_load = allow_fast_tape_;
|
||||
return options;
|
||||
}
|
||||
|
||||
void set_options(const std::unique_ptr<Reflection::Struct> &str) final {
|
||||
const auto options = dynamic_cast<Options *>(str.get());
|
||||
set_video_signal_configurable(options->output);
|
||||
allow_fast_tape_ = options->quickload;
|
||||
allow_fast_tape_ = options->quick_load;
|
||||
set_use_fast_tape();
|
||||
}
|
||||
|
||||
|
||||
@@ -23,18 +23,18 @@ struct Machine {
|
||||
|
||||
class Options:
|
||||
public Reflection::StructImpl<Options>,
|
||||
public Configurable::DisplayOption<Options>,
|
||||
public Configurable::QuickloadOption<Options>
|
||||
public Configurable::Options::Display<Options>,
|
||||
public Configurable::Options::QuickLoad<Options>
|
||||
{
|
||||
friend Configurable::DisplayOption<Options>;
|
||||
friend Configurable::QuickloadOption<Options>;
|
||||
friend Configurable::Options::Display<Options>;
|
||||
friend Configurable::Options::QuickLoad<Options>;
|
||||
public:
|
||||
Options(Configurable::OptionsType type) :
|
||||
Configurable::DisplayOption<Options>(type == Configurable::OptionsType::UserFriendly ? Configurable::Display::RGB : Configurable::Display::CompositeColour),
|
||||
Configurable::QuickloadOption<Options>(type == Configurable::OptionsType::UserFriendly) {}
|
||||
Options(const Configurable::OptionsType type) :
|
||||
Configurable::Options::Display<Options>(type == Configurable::OptionsType::UserFriendly ? Configurable::Display::RGB : Configurable::Display::CompositeColour),
|
||||
Configurable::Options::QuickLoad<Options>(type == Configurable::OptionsType::UserFriendly) {}
|
||||
|
||||
private:
|
||||
Options() : Options(Configurable::OptionsType::UserFriendly) {}
|
||||
Options() : Options( Configurable::OptionsType::UserFriendly) {}
|
||||
|
||||
friend Reflection::StructImpl<Options>;
|
||||
void declare_fields() {
|
||||
|
||||
@@ -21,15 +21,15 @@ struct Machine {
|
||||
virtual ~Machine() = default;
|
||||
static std::unique_ptr<Machine> MasterSystem(const Analyser::Static::Target *, const ROMMachine::ROMFetcher &);
|
||||
|
||||
class Options: public Reflection::StructImpl<Options>, public Configurable::DisplayOption<Options> {
|
||||
friend Configurable::DisplayOption<Options>;
|
||||
class Options: public Reflection::StructImpl<Options>, public Configurable::Options::Display<Options> {
|
||||
friend Configurable::Options::Display<Options>;
|
||||
public:
|
||||
Options(Configurable::OptionsType type) :
|
||||
Configurable::DisplayOption<Options>(type == Configurable::OptionsType::UserFriendly ?
|
||||
Options(const Configurable::OptionsType type) :
|
||||
Configurable::Options::Display<Options>(type == Configurable::OptionsType::UserFriendly ?
|
||||
Configurable::Display::RGB : Configurable::Display::CompositeColour) {}
|
||||
|
||||
private:
|
||||
Options() : Options(Configurable::OptionsType::UserFriendly) {}
|
||||
Options() : Options( Configurable::OptionsType::UserFriendly) {}
|
||||
|
||||
friend Reflection::StructImpl<Options>;
|
||||
void declare_fields() {
|
||||
|
||||
@@ -679,14 +679,14 @@ public:
|
||||
std::unique_ptr<Reflection::Struct> get_options() const final {
|
||||
auto options = std::make_unique<Options>(Configurable::OptionsType::UserFriendly);
|
||||
options->output = get_video_signal_configurable();
|
||||
options->quickload = use_fast_tape_hack_;
|
||||
options->quick_load = use_fast_tape_hack_;
|
||||
return options;
|
||||
}
|
||||
|
||||
void set_options(const std::unique_ptr<Reflection::Struct> &str) final {
|
||||
const auto options = dynamic_cast<Options *>(str.get());
|
||||
set_video_signal_configurable(options->output);
|
||||
set_use_fast_tape_hack(options->quickload);
|
||||
set_use_fast_tape_hack(options->quick_load);
|
||||
}
|
||||
|
||||
void set_activity_observer(Activity::Observer *observer) final {
|
||||
|
||||
@@ -26,19 +26,19 @@ struct Machine {
|
||||
|
||||
class Options:
|
||||
public Reflection::StructImpl<Options>,
|
||||
public Configurable::DisplayOption<Options>,
|
||||
public Configurable::QuickloadOption<Options>
|
||||
public Configurable::Options::Display<Options>,
|
||||
public Configurable::Options::QuickLoad<Options>
|
||||
{
|
||||
friend Configurable::DisplayOption<Options>;
|
||||
friend Configurable::QuickloadOption<Options>;
|
||||
friend Configurable::Options::Display<Options>;
|
||||
friend Configurable::Options::QuickLoad<Options>;
|
||||
public:
|
||||
Options(Configurable::OptionsType type) :
|
||||
Configurable::DisplayOption<Options>(type == Configurable::OptionsType::UserFriendly ?
|
||||
Options(const Configurable::OptionsType type) :
|
||||
Configurable::Options::Display<Options>(type == Configurable::OptionsType::UserFriendly ?
|
||||
Configurable::Display::RGB : Configurable::Display::CompositeColour),
|
||||
Configurable::QuickloadOption<Options>(type == Configurable::OptionsType::UserFriendly) {}
|
||||
Configurable::Options::QuickLoad<Options>(type == Configurable::OptionsType::UserFriendly) {}
|
||||
|
||||
private:
|
||||
Options() : Options(Configurable::OptionsType::UserFriendly) {}
|
||||
Options() : Options( Configurable::OptionsType::UserFriendly) {}
|
||||
|
||||
friend Reflection::StructImpl<Options>;
|
||||
void declare_fields() {
|
||||
|
||||
@@ -30,15 +30,15 @@ struct Machine {
|
||||
/// Defines the runtime options [sometimes] available for a PC.
|
||||
class Options:
|
||||
public Reflection::StructImpl<Options>,
|
||||
public Configurable::DisplayOption<Options>
|
||||
public Configurable::Options::Display<Options>
|
||||
{
|
||||
friend Configurable::DisplayOption<Options>;
|
||||
friend Configurable::Options::Display<Options>;
|
||||
public:
|
||||
Options(Configurable::OptionsType) :
|
||||
Configurable::DisplayOption<Options>(Configurable::Display::RGB) {}
|
||||
Options(const Configurable::OptionsType) :
|
||||
Configurable::Options::Display<Options>(Configurable::Display::RGB) {}
|
||||
|
||||
private:
|
||||
Options() : Options(Configurable::OptionsType::UserFriendly) {}
|
||||
Options() : Options( Configurable::OptionsType::UserFriendly) {}
|
||||
|
||||
friend Reflection::StructImpl<Options>;
|
||||
void declare_fields() {
|
||||
|
||||
@@ -386,14 +386,14 @@ public:
|
||||
std::unique_ptr<Reflection::Struct> get_options() const final {
|
||||
auto options = std::make_unique<Options>(Configurable::OptionsType::UserFriendly); // OptionsType is arbitrary, but not optional.
|
||||
options->automatic_tape_motor_control = use_automatic_tape_motor_control_;
|
||||
options->quickload = allow_fast_tape_hack_;
|
||||
options->quick_load = allow_fast_tape_hack_;
|
||||
return options;
|
||||
}
|
||||
|
||||
void set_options(const std::unique_ptr<Reflection::Struct> &str) {
|
||||
const auto options = dynamic_cast<Options *>(str.get());
|
||||
set_use_automatic_tape_motor_control(options->automatic_tape_motor_control);
|
||||
allow_fast_tape_hack_ = options->quickload;
|
||||
allow_fast_tape_hack_ = options->quick_load;
|
||||
set_use_fast_tape();
|
||||
}
|
||||
|
||||
|
||||
@@ -26,17 +26,17 @@ struct Machine {
|
||||
virtual bool get_tape_is_playing() = 0;
|
||||
|
||||
/// Defines the runtime options available for a ZX80/81.
|
||||
class Options: public Reflection::StructImpl<Options>, public Configurable::QuickloadOption<Options> {
|
||||
friend Configurable::QuickloadOption<Options>;
|
||||
class Options: public Reflection::StructImpl<Options>, public Configurable::Options::QuickLoad<Options> {
|
||||
friend Configurable::Options::QuickLoad<Options>;
|
||||
public:
|
||||
bool automatic_tape_motor_control = true;
|
||||
|
||||
Options(Configurable::OptionsType type):
|
||||
Configurable::QuickloadOption<Options>(type == Configurable::OptionsType::UserFriendly),
|
||||
Options(const Configurable::OptionsType type):
|
||||
Configurable::Options::QuickLoad<Options>(type == Configurable::OptionsType::UserFriendly),
|
||||
automatic_tape_motor_control(type == Configurable::OptionsType::UserFriendly) {}
|
||||
|
||||
private:
|
||||
Options() : Options(Configurable::OptionsType::UserFriendly) {}
|
||||
Options() : Options( Configurable::OptionsType::UserFriendly) {}
|
||||
|
||||
friend Reflection::StructImpl<Options>;
|
||||
void declare_fields() {
|
||||
|
||||
@@ -731,7 +731,7 @@ public:
|
||||
std::unique_ptr<Reflection::Struct> get_options() const override {
|
||||
auto options = std::make_unique<Options>(Configurable::OptionsType::UserFriendly); // OptionsType is arbitrary, but not optional.
|
||||
options->automatic_tape_motor_control = use_automatic_tape_motor_control_;
|
||||
options->quickload = allow_fast_tape_hack_;
|
||||
options->quick_load = allow_fast_tape_hack_;
|
||||
options->output = get_video_signal_configurable();
|
||||
return options;
|
||||
}
|
||||
@@ -740,7 +740,7 @@ public:
|
||||
const auto options = dynamic_cast<Options *>(str.get());
|
||||
set_video_signal_configurable(options->output);
|
||||
set_use_automatic_tape_motor_control(options->automatic_tape_motor_control);
|
||||
allow_fast_tape_hack_ = options->quickload;
|
||||
allow_fast_tape_hack_ = options->quick_load;
|
||||
set_use_fast_tape();
|
||||
}
|
||||
|
||||
|
||||
@@ -26,21 +26,21 @@ struct Machine {
|
||||
|
||||
class Options:
|
||||
public Reflection::StructImpl<Options>,
|
||||
public Configurable::DisplayOption<Options>,
|
||||
public Configurable::QuickloadOption<Options>
|
||||
public Configurable::Options::Display<Options>,
|
||||
public Configurable::Options::QuickLoad<Options>
|
||||
{
|
||||
friend Configurable::DisplayOption<Options>;
|
||||
friend Configurable::QuickloadOption<Options>;
|
||||
friend Configurable::Options::Display<Options>;
|
||||
friend Configurable::Options::QuickLoad<Options>;
|
||||
public:
|
||||
bool automatic_tape_motor_control = true;
|
||||
|
||||
Options(Configurable::OptionsType type) :
|
||||
Configurable::DisplayOption<Options>(type == Configurable::OptionsType::UserFriendly ? Configurable::Display::RGB : Configurable::Display::CompositeColour),
|
||||
Configurable::QuickloadOption<Options>(type == Configurable::OptionsType::UserFriendly),
|
||||
Options(const Configurable::OptionsType type) :
|
||||
Configurable::Options::Display<Options>(type == Configurable::OptionsType::UserFriendly ? Configurable::Display::RGB : Configurable::Display::CompositeColour),
|
||||
Configurable::Options::QuickLoad<Options>(type == Configurable::OptionsType::UserFriendly),
|
||||
automatic_tape_motor_control(type == Configurable::OptionsType::UserFriendly) {}
|
||||
|
||||
private:
|
||||
Options() : Options(Configurable::OptionsType::UserFriendly) {}
|
||||
Options() : Options( Configurable::OptionsType::UserFriendly) {}
|
||||
|
||||
friend Reflection::StructImpl<Options>;
|
||||
void declare_fields() {
|
||||
|
||||
Reference in New Issue
Block a user