~ubuntu-branches/debian/sid/astromenace/sid

« back to all changes in this revision

Viewing changes to AstroMenaceSource/Core/System/Keyboard.cpp

  • Committer: Package Import Robot
  • Author(s): Boris Pek
  • Date: 2013-04-09 02:04:25 UTC
  • Revision ID: package-import@ubuntu.com-20130409020425-a7fl9xk4diamw6di
Tags: upstream-1.3.1+repack
Import upstream version 1.3.1+repack

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/************************************************************************************
 
2
 
 
3
        AstroMenace (Hardcore 3D space shooter with spaceship upgrade possibilities)
 
4
        Copyright © 2006-2012 Michael Kurinnoy, Viewizard
 
5
 
 
6
 
 
7
        AstroMenace is free software: you can redistribute it and/or modify
 
8
        it under the terms of the GNU General Public License as published by
 
9
        the Free Software Foundation, either version 3 of the License, or
 
10
        (at your option) any later version.
 
11
 
 
12
        AstroMenace is distributed in the hope that it will be useful,
 
13
        but WITHOUT ANY WARRANTY; without even the implied warranty of
 
14
        MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 
15
        GNU General Public License for more details.
 
16
 
 
17
        You should have received a copy of the GNU General Public License
 
18
        along with AstroMenace. If not, see <http://www.gnu.org/licenses/>.
 
19
 
 
20
 
 
21
        Web Site: http://www.viewizard.com/
 
22
        Project: http://sourceforge.net/projects/openastromenace/
 
23
        E-mail: viewizard@viewizard.com
 
24
 
 
25
*************************************************************************************/
 
26
 
 
27
 
 
28
#include "System.h"
 
29
 
 
30
 
 
31
 
 
32
 
 
33
int MaxKeyCount = 0;
 
34
 
 
35
 
 
36
//------------------------------------------------------------------------------------
 
37
// установка-получение статуса нажатых кнопок на клавиатуре
 
38
//------------------------------------------------------------------------------------
 
39
bool vw_GetKeys(int Num)
 
40
{
 
41
        Uint8 *keystate = SDL_GetKeyState(&MaxKeyCount);
 
42
        if (keystate[Num]) return true;
 
43
        return false;
 
44
}
 
45
void vw_SetKeys(int Num, bool NewKeyStatus)
 
46
{
 
47
        Uint8 *keystate = SDL_GetKeyState(&MaxKeyCount);
 
48
        keystate[Num] = NewKeyStatus;
 
49
}
 
50
 
 
51
int GetMaxKeys()
 
52
{
 
53
        return MaxKeyCount;
 
54
}
 
55
 
 
56
 
 
57
 
 
58
 
 
59
 
 
60
 
 
61
 
 
62
 
 
63
// название кнопок
 
64
const char * vw_VirtualCodeNameEN(int Num);
 
65
const char * vw_VirtualCodeNameDE(int Num);
 
66
const char * vw_VirtualCodeNameRU(int Num);
 
67
 
 
68
 
 
69
const char * vw_VirtualCodeName(int Language, int Num)
 
70
{
 
71
        switch (Language)
 
72
        {
 
73
                case 1: return vw_VirtualCodeNameEN(Num);
 
74
                case 2: return vw_VirtualCodeNameDE(Num);
 
75
                case 3: return vw_VirtualCodeNameRU(Num);
 
76
        }
 
77
        return 0;
 
78
}
 
79
 
 
80
 
 
81
 
 
82
 
 
83
 
 
84
 
 
85
 
 
86
 
 
87
struct sKeyboardCodeName
 
88
{
 
89
        int Code;
 
90
        char Name[32];
 
91
};
 
92
 
 
93
const int KeyboardCodeNameDataCount = 99;
 
94
sKeyboardCodeName KeyboardCodeNameData[KeyboardCodeNameDataCount] =
 
95
{
 
96
{SDLK_F1, "SDLK_F1"},
 
97
{SDLK_F2, "SDLK_F2"},
 
98
{SDLK_F3, "SDLK_F3"},
 
99
{SDLK_F4, "SDLK_F4"},
 
100
{SDLK_F5, "SDLK_F5"},
 
101
{SDLK_F6, "SDLK_F6"},
 
102
{SDLK_F7, "SDLK_F7"},
 
103
{SDLK_F8, "SDLK_F8"},
 
104
{SDLK_F9, "SDLK_F9"},
 
105
{SDLK_F10, "SDLK_F10"},
 
106
{SDLK_F11, "SDLK_F11"},
 
107
{SDLK_F12, "SDLK_F12"},
 
108
{SDLK_1, "SDLK_1"},
 
109
{SDLK_2, "SDLK_2"},
 
110
{SDLK_3, "SDLK_3"},
 
111
{SDLK_4, "SDLK_4"},
 
112
{SDLK_5, "SDLK_5"},
 
113
{SDLK_6, "SDLK_6"},
 
114
{SDLK_7, "SDLK_7"},
 
115
{SDLK_8, "SDLK_8"},
 
116
{SDLK_9, "SDLK_9"},
 
117
{SDLK_MINUS, "SDLK_MINUS"},
 
118
{SDLK_EQUALS, "SDLK_EQUALS"},
 
119
{SDLK_BACKSPACE, "SDLK_BACKSPACE"},
 
120
{SDLK_TAB, "SDLK_TAB"},
 
121
{SDLK_q, "SDLK_q"},
 
122
{SDLK_w, "SDLK_w"},
 
123
{SDLK_e, "SDLK_e"},
 
124
{SDLK_r, "SDLK_r"},
 
125
{SDLK_t, "SDLK_t"},
 
126
{SDLK_y, "SDLK_y"},
 
127
{SDLK_u, "SDLK_u"},
 
128
{SDLK_i, "SDLK_i"},
 
129
{SDLK_o, "SDLK_o"},
 
130
{SDLK_p, "SDLK_p"},
 
131
{SDLK_LEFTBRACKET, "SDLK_LEFTBRACKET"},
 
132
{SDLK_RIGHTBRACKET, "SDLK_RIGHTBRACKET"},
 
133
{SDLK_RETURN, "SDLK_RETURN"},
 
134
{SDLK_LCTRL, "SDLK_LCTRL"},
 
135
{SDLK_a, "SDLK_a"},
 
136
{SDLK_s, "SDLK_s"},
 
137
{SDLK_d, "SDLK_d"},
 
138
{SDLK_f, "SDLK_f"},
 
139
{SDLK_g, "SDLK_g"},
 
140
{SDLK_h, "SDLK_h"},
 
141
{SDLK_j, "SDLK_j"},
 
142
{SDLK_k, "SDLK_k"},
 
143
{SDLK_l, "SDLK_l"},
 
144
{SDLK_SEMICOLON, "SDLK_SEMICOLON"},
 
145
{SDLK_QUOTE, "SDLK_QUOTE"},
 
146
{SDLK_QUOTEDBL, "SDLK_QUOTEDBL"},
 
147
{SDLK_BACKQUOTE, "SDLK_BACKQUOTE"},
 
148
{SDLK_LSHIFT, "SDLK_LSHIFT"},
 
149
{SDLK_BACKSLASH, "SDLK_BACKSLASH"},
 
150
{SDLK_z, "SDLK_z"},
 
151
{SDLK_x, "SDLK_x"},
 
152
{SDLK_c, "SDLK_c"},
 
153
{SDLK_v, "SDLK_v"},
 
154
{SDLK_b, "SDLK_b"},
 
155
{SDLK_n, "SDLK_n"},
 
156
{SDLK_m, "SDLK_m"},
 
157
{SDLK_COMMA, "SDLK_COMMA"},
 
158
{SDLK_PERIOD, "SDLK_PERIOD"},
 
159
{SDLK_SLASH, "SDLK_SLASH"},
 
160
{SDLK_RSHIFT, "SDLK_RSHIFT"},
 
161
{SDLK_ASTERISK, "SDLK_ASTERISK"},
 
162
{SDLK_LALT, "SDLK_LALT"},
 
163
{SDLK_SPACE, "SDLK_SPACE"},
 
164
{SDLK_KP7, "SDLK_KP7"},
 
165
{SDLK_KP8, "SDLK_KP8"},
 
166
{SDLK_KP9, "SDLK_KP9"},
 
167
{SDLK_KP_MINUS, "SDLK_KP_MINUS"},
 
168
{SDLK_KP_MULTIPLY, "SDLK_KP_MULTIPLY"},
 
169
{SDLK_KP4, "SDLK_KP4"},
 
170
{SDLK_KP5, "SDLK_KP5"},
 
171
{SDLK_KP6, "SDLK_KP6"},
 
172
{SDLK_KP_PLUS, "SDLK_KP_PLUS"},
 
173
{SDLK_KP1, "SDLK_KP1"},
 
174
{SDLK_KP2, "SDLK_KP2"},
 
175
{SDLK_KP3, "SDLK_KP3"},
 
176
{SDLK_KP0, "SDLK_KP0"},
 
177
{SDLK_KP_PERIOD, "SDLK_KP_PERIOD"},
 
178
{SDLK_KP_ENTER, "SDLK_KP_ENTER"},
 
179
{SDLK_RCTRL, "SDLK_RCTRL"},
 
180
{SDLK_KP_DIVIDE, "SDLK_KP_DIVIDE"},
 
181
{SDLK_RALT, "SDLK_RALT"},
 
182
{SDLK_PAUSE, "SDLK_PAUSE"},
 
183
{SDLK_HOME, "SDLK_HOME"},
 
184
{SDLK_UP, "SDLK_UP"},
 
185
{SDLK_PAGEUP, "SDLK_PAGEUP"},
 
186
{SDLK_LEFT, "SDLK_LEFT"},
 
187
{SDLK_RIGHT, "SDLK_RIGHT"},
 
188
{SDLK_END, "SDLK_END"},
 
189
{SDLK_DOWN, "SDLK_DOWN"},
 
190
{SDLK_PAGEDOWN, "SDLK_PAGEDOWN"},
 
191
{SDLK_INSERT, "SDLK_INSERT"},
 
192
{SDLK_DELETE, "SDLK_DELETE"},
 
193
{SDLK_LSUPER, "SDLK_LSUPER"},
 
194
{SDLK_RSUPER, "SDLK_RSUPER"},
 
195
};
 
196
 
 
197
 
 
198
 
 
199
// название кнопок
 
200
const char * vw_KeyboardCodeName(int Num)
 
201
{
 
202
        for (int i=0; i<KeyboardCodeNameDataCount; i++)
 
203
                if (KeyboardCodeNameData[i].Code == Num) return KeyboardCodeNameData[i].Name;
 
204
 
 
205
        return "?";
 
206
}
 
207
// номер кнопок
 
208
int vw_KeyboardNameCode(const char * Name)
 
209
{
 
210
        for (int i=0; i<KeyboardCodeNameDataCount; i++)
 
211
                if (!strcmp(KeyboardCodeNameData[i].Name, Name)) return KeyboardCodeNameData[i].Code;
 
212
 
 
213
        return -1;
 
214
}
 
215
 
 
216
 
 
217
 
 
218
 
 
219
// текущий юникод нажатой клавиши
 
220
Uint16 CurrentKeyUnicode = 0;
 
221
// установка
 
222
void vw_SetCurrentKeyUnicode(Uint16 NewKeyUnicode)
 
223
{
 
224
        CurrentKeyUnicode = NewKeyUnicode;
 
225
}
 
226
// получение
 
227
Uint16 vw_GetCurrentKeyUnicode()
 
228
{
 
229
        return CurrentKeyUnicode;
 
230
}
 
231