-
Notifications
You must be signed in to change notification settings - Fork 93
/
widget_controlgrab.h
139 lines (118 loc) · 2.45 KB
/
widget_controlgrab.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
135
136
137
138
139
#ifndef _WIDGET_CONTROLGRAB_H
#define _WIDGET_CONTROLGRAB_H
#include "widget.h"
#include "widget_label.h"
#include "widget_button.h"
#include <string>
#include <list>
#include <vector>
class SCENENODE;
class TEXTURE;
class CONFIG;
class FONT;
class WIDGET_CONTROLGRAB : public WIDGET
{
public:
WIDGET_CONTROLGRAB() {};
~WIDGET_CONTROLGRAB();
virtual WIDGET * clone() const;
virtual void SetAlpha(SCENENODE & scene, float newalpha);
virtual void SetVisible(SCENENODE & scene, bool newvis);
virtual std::string GetAction() const;
virtual std::string GetDescription() const;
virtual void SetDescription(const std::string & newdesc);
virtual bool ProcessInput(
SCENENODE & scene,
float cursorx, float cursory,
bool cursordown, bool cursorjustup);
void SetupDrawable(
SCENENODE & scene,
const CONFIG & c,
const std::string & newsetting,
const std::vector <std::tr1::shared_ptr<TEXTURE> > & textures,
const FONT & font,
const std::string & text,
float centerx,
float centery,
float scalex,
float scaley,
bool newanalog,
bool newonly_one,
float newz = 0);
void LoadControls(SCENENODE & parent, const CONFIG & c, const FONT & font);
keyed_container <SCENENODE>::handle GetNode()
{
return topnode;
}
enum CONTROLTEXTURE
{
ADD,
ADDSEL,
JOYAXIS,
JOYAXISSEL,
JOYBTN,
JOYBTNSEL,
KEY,
KEYSEL,
MOUSE,
MOUSESEL,
END
};
// awfull widget description hack
enum STRING
{
ADDNEW_STR,
EDIT_STR,
PRESS_STR,
RELEASE_STR,
ONCE_STR,
HELD_STR,
KEY_STR,
JOY_STR,
MOUSE_STR,
BUTTON_STR,
AXIS_STR,
MOTION_STR,
END_STR
};
static std::string Str[END_STR];
private:
struct CONTROLWIDGET
{
CONTROLWIDGET();
WIDGET_BUTTON widget;
std::string type;
std::string name;
bool once;
bool down;
std::string key;
std::string keycode;
std::string joy_type;
int joy_index;
int joy_button;
int joy_axis;
std::string joy_axis_type;
std::string mouse_type;
std::string mouse_motion;
int mouse_button;
float deadzone;
float exponent;
float gain;
};
WIDGET_LABEL label;
WIDGET_BUTTON addbutton;
std::list <CONTROLWIDGET> controlbuttons;
std::string setting;
std::string description;
std::string tempdescription;
std::string active_action;
keyed_container <SCENENODE>::handle topnode;
keyed_container <SCENENODE>::handle ctrlnode;
std::vector <std::tr1::shared_ptr<TEXTURE> > textures;
float scale_x, scale_y;
float x, y, z;
float w, h;
bool analog;
bool only_one;
};
#endif