-
Notifications
You must be signed in to change notification settings - Fork 14
/
Copy pathvirtualcontrollerinput.h
134 lines (107 loc) · 3.07 KB
/
virtualcontrollerinput.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
#pragma once
#include "EmulatorInput.h"
#include <collection.h>
using namespace Windows::UI::Input;
using namespace Platform::Collections;
#define ARRAY_SIZE 1009
#define SMALL_ARRAY_SIZE 10
namespace VBA10
{
class EmulatorGame;
struct PointerInfo
{
Windows::UI::Input::PointerPoint^ point;
bool IsMoved;
Platform::String^ description;
};
class VirtualControllerInput
: public EmulatorInput
{
public:
static VirtualControllerInput *GetInstance(void);
VirtualControllerInput(void);
~VirtualControllerInput(void);
const ControllerState *GetControllerState(void);
void GetStickRectangle(RECT *rect);
void GetStickCenterRectangle(RECT *rect);
bool StickFingerDown(void);
void Reset(void);
void PointerPressed(PointerPoint ^point);
void PointerMoved(PointerPoint ^point);
void PointerReleased(PointerPoint ^point);
void UpdateVirtualControllerRectangles(void);
void GetCrossRectangle(RECT *rect);
void GetARectangle(RECT *rect);
void GetBRectangle(RECT *rect);
void GetStartRectangle(RECT *rect);
void GetSelectRectangle(RECT *rect);
void GetTurboRectangle(RECT *rect);
void GetComboRectangle(RECT *rect);
void GetLRectangle(RECT *rect);
void GetRRectangle(RECT *rect);
void Update(void);
void EnterEditMode();
bool IsEditMode();
void LeaveEditMode(bool accept);
private:
static VirtualControllerInput *instance;
float physicalWidth, physicalHeight; //in inch
std::map<unsigned int, PointerInfo*> *pointers;
bool stickFingerDown;
int stickFingerID;
Windows::Foundation::Point stickPos;
Windows::Foundation::Point stickOffset;
Windows::Foundation::Point ptest;
POINT visibleStickPos;
POINT visibleStickOffset;
Windows::Foundation::Rect stickBoundaries;
CRITICAL_SECTION cs;
EmulatorGame *emulator;
ControllerState state;
RECT padCrossRectangle;
RECT startRectangle;
RECT selectRectangle;
RECT turboRectangle;
RECT comboRectangle;
RECT aRectangle;
RECT bRectangle;
RECT lRectangle;
RECT rRectangle;
Windows::Foundation::Rect leftRect;
Windows::Foundation::Rect upRect;
Windows::Foundation::Rect rightRect;
Windows::Foundation::Rect downRect;
Windows::Foundation::Rect startRect;
Windows::Foundation::Rect selectRect;
Windows::Foundation::Rect turboRect;
Windows::Foundation::Rect comboRect;
Windows::Foundation::Rect lRect;
Windows::Foundation::Rect rRect;
Windows::Foundation::Rect aRect;
Windows::Foundation::Rect bRect;
int PadLeft;
int PadBottom;
int ACenterX;
int ACenterY;
int BCenterX;
int BCenterY;
int startCenterX;
int startBottom;
int selectCenterX;
int selectBottom;
int TurboCenterX;
int TurboCenterY;
int ComboCenterX;
int ComboCenterY;
int lLeft;
int LCenterY;
int rRight;
int RCenterY;
float hscale, vscale;
void SaveControllerPositionSettings();
void SetControllerPositionFromSettings();
void CreateRenderRectangles(void);
void CreateTouchRectangles(void);
bool isEditMode;
};
}