VirtualC64 v5.0 beta
Commodore 64 Emulator
Loading...
Searching...
No Matches
JoystickTypes.h
Go to the documentation of this file.
1// -----------------------------------------------------------------------------
2// This file is part of VirtualC64
3//
4// Copyright (C) Dirk W. Hoffmann. www.dirkwhoffmann.de
5// This FILE is dual-licensed. You are free to choose between:
6//
7// - The GNU General Public License v3 (or any later version)
8// - The Mozilla Public License v2
9//
10// SPDX-License-Identifier: GPL-3.0-or-later OR MPL-2.0
11// -----------------------------------------------------------------------------
13
14#pragma once
15
16#include "Reflection.h"
17
18namespace vc64 {
19
20//
21// Enumerations
22//
23
41typedef GAME_PAD_ACTION GamePadAction;
42
43struct GamePadActionEnum : util::Reflection<GamePadActionEnum, GamePadAction> {
44
45 static constexpr long minVal = 0;
46 static constexpr long maxVal = RELEASE_RIGHT;
47 static bool isValid(auto value) { return value >= minVal && value <= maxVal; }
48
49 static const char *prefix() { return nullptr; }
50 static const char *key(long value)
51 {
52 switch (value) {
53
54 case PULL_UP: return "PULL_UP";
55 case PULL_DOWN: return "PULL_DOWN";
56 case PULL_LEFT: return "PULL_LEFT";
57 case PULL_RIGHT: return "PULL_RIGHT";
58 case PRESS_FIRE: return "PRESS_FIRE";
59 case PRESS_LEFT: return "PRESS_LEFT";
60 case PRESS_RIGHT: return "PRESS_RIGHT";
61 case RELEASE_X: return "RELEASE_X";
62 case RELEASE_Y: return "RELEASE_Y";
63 case RELEASE_XY: return "RELEASE_XY";
64 case RELEASE_FIRE: return "RELEASE_FIRE";
65 case RELEASE_LEFT: return "RELEASE_LEFT";
66 case RELEASE_RIGHT: return "RELEASE_RIGHT";
67 }
68 return "???";
69 }
70};
71
72//
73// Structures
74//
75
76typedef struct
77{
78 bool autofire;
79 bool autofireBursts;
80 isize autofireBullets;
81 isize autofireDelay;
82}
83JoystickConfig;
84
85typedef struct
86{
87 bool button;
88 int axisX;
89 int axisY;
90}
91JoystickInfo;
92
93}
VirtualC64 project namespace.
Definition CmdQueue.cpp:16
GAME_PAD_ACTION
Gamepad / Joystick event.
Definition JoystickTypes.h:26
@ PULL_DOWN
Pull the joystick down.
Definition JoystickTypes.h:28
@ RELEASE_LEFT
Release the left mouse button.
Definition JoystickTypes.h:38
@ PRESS_FIRE
Press the joystick button.
Definition JoystickTypes.h:31
@ RELEASE_FIRE
Release the joystick button.
Definition JoystickTypes.h:37
@ PULL_UP
Pull the joystick up.
Definition JoystickTypes.h:27
@ PULL_RIGHT
Pull the joystick right.
Definition JoystickTypes.h:30
@ RELEASE_RIGHT
Release the right mouse button.
Definition JoystickTypes.h:39
@ PRESS_RIGHT
Press the right mouse button.
Definition JoystickTypes.h:33
@ PRESS_LEFT
Press the left mouse button.
Definition JoystickTypes.h:32
@ RELEASE_Y
Move back to neutral vertically.
Definition JoystickTypes.h:35
@ PULL_LEFT
Pull the joystick left.
Definition JoystickTypes.h:29
@ RELEASE_X
Move back to neutral horizontally.
Definition JoystickTypes.h:34
@ RELEASE_XY
Move back to neutral.
Definition JoystickTypes.h:36