1 //============================================================================
2 //
3 //   SSSS    tt          lll  lll
4 //  SS  SS   tt           ll   ll
5 //  SS     tttttt  eeee   ll   ll   aaaa
6 //   SSSS    tt   ee  ee  ll   ll      aa
7 //      SS   tt   eeeeee  ll   ll   aaaaa  --  "An Atari 2600 VCS Emulator"
8 //  SS  SS   tt   ee      ll   ll  aa  aa
9 //   SSSS     ttt  eeeee llll llll  aaaaa
10 //
11 // Copyright (c) 1995-2021 by Bradford W. Mott, Stephen Anthony
12 // and the Stella Team
13 //
14 // See the file "License.txt" for information on usage and redistribution of
15 // this file, and for a DISCLAIMER OF ALL WARRANTIES.
16 //============================================================================
17 
18 #ifndef JOYSTICK_WIDGET_HXX
19 #define JOYSTICK_WIDGET_HXX
20 
21 #include "Control.hxx"
22 #include "ControllerWidget.hxx"
23 
24 class JoystickWidget : public ControllerWidget
25 {
26   public:
27     JoystickWidget(GuiObject* boss, const GUI::Font& font, int x, int y,
28                    Controller& controller, bool embedded = false);
29     ~JoystickWidget() override = default;
30 
31   private:
32     enum { kJUp = 0, kJDown, kJLeft, kJRight, kJFire };
33 
34     std::array<CheckboxWidget*, 5> myPins{nullptr};
35     static constexpr std::array<Controller::DigitalPin, 5> ourPinNo = {{
36       Controller::DigitalPin::One, Controller::DigitalPin::Two,
37       Controller::DigitalPin::Three, Controller::DigitalPin::Four,
38       Controller::DigitalPin::Six
39     }};
40 
41   private:
42     void loadConfig() override;
43     void handleCommand(CommandSender* sender, int cmd, int data, int id) override;
44 
45     // Following constructors and assignment operators not supported
46     JoystickWidget() = delete;
47     JoystickWidget(const JoystickWidget&) = delete;
48     JoystickWidget(JoystickWidget&&) = delete;
49     JoystickWidget& operator=(const JoystickWidget&) = delete;
50     JoystickWidget& operator=(JoystickWidget&&) = delete;
51 };
52 
53 #endif
54