17#include "SubComponent.h"
21class Joystick final :
public SubComponent,
public Inspectable<JoystickInfo> {
23 Descriptions descriptions = {
26 .description =
"Joystick in Port 1"
30 .description =
"Joystick in Port 2"
34 ConfigOptions options = {
46 JoystickConfig config = { };
64 Joystick(C64 &ref, ControlPort& pref);
66 Joystick& operator= (
const Joystick& other) {
84 template <
class T>
void serialize(T& worker) {
86 if (isResetter(worker))
return;
91 << config.autofireBursts
92 << config.autofireBullets
93 << config.autofireDelay;
95 void operator << (SerChecker &worker)
override { serialize(worker); }
96 void operator << (SerCounter &worker)
override { serialize(worker); }
97 void operator << (SerResetter &worker)
override;
98 void operator << (SerReader &worker)
override;
99 void operator << (SerWriter &worker)
override { serialize(worker); }
108 const Descriptions &getDescriptions()
const override {
return descriptions; }
112 void _dump(Category category, std::ostream& os)
const override;
121 void cacheInfo(JoystickInfo &result)
const override;
130 const JoystickConfig &getConfig()
const {
return config; }
131 const ConfigOptions &getOptions()
const override {
return options; }
132 i64 getOption(Option opt)
const override;
133 void checkOption(Option opt, i64 value)
override;
134 void setOption(Option opt, i64 value)
override;
144 u8 getControlPort()
const;
147 void trigger(GamePadAction event);
166 void reload(isize bullets);
167 template <EventSlot Slot>
void reload(isize bullets);
VirtualC64 project namespace.
Definition CmdQueue.cpp:16
@ OPT_AUTOFIRE_BURSTS
Burst mode (on/off)
Definition OptionTypes.h:162
@ OPT_AUTOFIRE
Autofire status [on/off].
Definition OptionTypes.h:161
@ OPT_AUTOFIRE_BULLETS
Number of bullets per burst.
Definition OptionTypes.h:163
@ OPT_AUTOFIRE_DELAY
Delay between two shots [frames].
Definition OptionTypes.h:164