1
/************************************************************************************
3
AstroMenace (Hardcore 3D space shooter with spaceship upgrade possibilities)
4
Copyright Ā© 2006-2012 Michael Kurinnoy, Viewizard
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.
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.
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/>.
21
Web Site: http://www.viewizard.com/
22
Project: http://sourceforge.net/projects/openastromenace/
23
E-mail: viewizard@viewizard.com
25
*************************************************************************************/
32
const char * MouseCodeName(char Num)
34
switch (Setup.MenuLanguage)
39
case 1: return "Mouse1";
40
case 2: return "Mouse3";
41
case 3: return "Mouse2";
42
case 4: return "Mouse4";
43
case 5: return "Mouse5";
44
case 6: return "Mouse6";
45
case 7: return "Mouse7";
46
case 8: return "Mouse8";
54
case 1: return "Maus1";
55
case 2: return "Maus3";
56
case 3: return "Maus2";
57
case 4: return "Maus4";
58
case 5: return "Maus5";
59
case 6: return "Maus6";
60
case 7: return "Maus7";
61
case 8: return "Maus8";
69
case 1: return "Mouse1";
70
case 2: return "Mouse3";
71
case 3: return "Mouse2";
72
case 4: return "Mouse4";
73
case 5: return "Mouse5";
74
case 6: return "Mouse6";
75
case 7: return "Mouse7";
76
case 8: return "Mouse8";
87
char JoystickCodeNameText[12];/*"JoystickXXX"*/
88
const char * JoystickCodeName(char Num)
90
// ŠŗŠ½Š¾ŠæŠŗŠø ŠµŃŠµ Š½ŠµŃ
91
if (Num == -1) return "?";
93
// Num+1 Ń.Šŗ. Š½Š°ŃŠøŠ½Š°ŠµŃŃŃ ŃŃŠµŃ Ń 0
94
sprintf(JoystickCodeNameText,"Joystick%i",Num+1);
95
return JoystickCodeNameText;
103
{1.0f,1.0f,1.0f,1.0f,1.0f,1.0f,1.0f,1.0f,1.0f,1.0f};
106
float LastTimeBut = 0.0f;
110
// ŠæŃŠ¾Š²ŠµŃŠŗŠ°, Š²ŃŠ±ŃŠ°Š»Šø ŃŃŠ¾-ŃŠ¾ ŠøŠ»Šø Š½ŠµŃ
111
void CheckMouseKeybJState()
113
// ŠæŃŠ¾Š²ŠµŃŃŠµŠ¼, Š½ŃŠ¶Š½Š¾ Š»Šø Š²ŃŃŃŠ³ŠøŠ²Š°ŃŃ ŃŃŠ¾-ŃŠ¾ ŠøŠ»Šø Š½ŠµŃ...
114
if (!isDialogBoxDrawing())
118
// ŠŗŠ»Š°Š²ŠøŠ°ŃŃŃŠ°
119
if ((NeedCheck > 0 && NeedCheck <= 6) || NeedCheck == 100)
120
for (int i=0; i<GetMaxKeys(); i++)
123
if (vw_VirtualCodeName(Setup.MenuLanguage, i) != 0) // ŠµŃŠ»Šø Š¼Ń ŠøŠ³ŃŠ°ŠµŠ¼ Ń ŃŃŠ¾Š¹ ŠŗŠ½Š¾ŠæŠŗŠ¾Š¹
127
case 1: Setup.KeyBoardUp = i; break;
128
case 2: Setup.KeyBoardDown = i; break;
129
case 3: Setup.KeyBoardLeft = i; break;
130
case 4: Setup.KeyBoardRight = i; break;
131
case 5: Setup.KeyBoardPrimary = i; break;
132
case 6: Setup.KeyBoardSecondary = i; break;
134
NewWeaponControlType = 1;
135
NewWeaponControlTypeData = i;
145
if ((NeedCheck >= 7 && NeedCheck <= 8) || NeedCheck == 100)
147
for (int i=0; i<8; i++)
148
if (SDL_MouseCurrentStatus[i])
152
case 7: Setup.MousePrimary = i; break;
153
case 8: Setup.MouseSecondary = i; break;
155
NewWeaponControlType = 2;
156
NewWeaponControlTypeData = i;
160
vw_GetWindowLBMouse(true);
167
if (Joystick != NULL)
168
if ((NeedCheck >= 9 && NeedCheck <= 10) || NeedCheck == 100)
170
for (int i=0; i<SDL_JoystickNumButtons(Joystick); i++)
171
if (JoysticButtons[i])
175
case 9: Setup.JoystickPrimary = i; break;
176
case 10: Setup.JoystickSecondary = i; break;
178
NewWeaponControlType = 3;
179
NewWeaponControlTypeData = i;
183
JoysticButtons[i] = false;
184
vw_GetWindowLBMouse(true);
190
// Š¼ŠµŃŃŠ°Š½ŠøŠµ ŠŗŠ½Š¾ŠæŠ¾Šŗ, ŃŃŠ°Š²ŠøŠ¼ ŃŃŠ“Š°, ŃŃŠ¾Š±Ń Š½Šµ ŃŃŠ³Š°ŃŃ ŠµŠ³Š¾ Š²ŠµŠ·Š“Šµ
191
float Delta = vw_GetTime() - LastTimeBut;
192
for (int i=0; i<ButQuant; i++)
194
if (But[i] > 0.3f) But[i] -= 2.0f*Delta;
195
if (But[i] < 0.3f) But[i] = 1.0f;
197
LastTimeBut = vw_GetTime();
205
void ConfControlMenu()
207
// ŠæŃŠ¾Š²ŠµŃŃŠµŠ¼, Š½ŃŠ¶Š½Š¾ Š»Šø Š²ŃŃŃŠ³ŠøŠ²Š°ŃŃ ŃŃŠ¾-ŃŠ¾ ŠøŠ»Šø Š½ŠµŃ...
208
CheckMouseKeybJState();
211
RECT SrcRest, DstRest;
212
SetRect(&SrcRest,0,0,2,2);
213
SetRect(&DstRest,0,0,Setup.iAspectRatioWidth,768);
214
vw_DrawTransparent(&DstRest, &SrcRest, vw_FindTextureByName("DATA/MENU/blackpoint.tga"), true, 0.5f*MenuContentTransp);
222
int X1 = Setup.iAspectRatioWidth/2 - 375;
231
vw_DrawFont(X1, Y1, -280, 0, 1.0f, 1.0f,1.0f,1.0f, MenuContentTransp, vw_GetText("3_Mouse_Control"));
232
if (DrawButton128_2(X1+300, Y1-6, vw_GetText("1_Prev"), MenuContentTransp, false) || DrawButton128_2(X1+616, Y1-6, vw_GetText("1_Next"), MenuContentTransp, false))
235
Setup.MouseControl = !Setup.MouseControl;
237
int Size = vw_FontSize(Setup.MouseControl ? vw_GetText("1_On") : vw_GetText("1_Off"));
238
int SizeI = (170-Size)/2;
239
vw_DrawFont(X1+438+SizeI, Y1, 0, 0, 1.0f, 1.0f,1.0f,1.0f, MenuContentTransp, Setup.MouseControl ? vw_GetText("1_On") : vw_GetText("1_Off"));
248
vw_DrawFont(X1, Y1, -280, 0, 1.0f, 1.0f,1.0f,1.0f, MenuContentTransp, vw_GetText("3_Control_Sensitivity"));
249
if (DrawButton128_2(X1+300, Y1-6, vw_GetText("1_Decrease"), MenuContentTransp, Setup.ControlSensivity == 1))
251
Setup.ControlSensivity --;
252
if (Setup.ControlSensivity<1) Setup.ControlSensivity = 1;
254
if (DrawButton128_2(X1+616, Y1-6, vw_GetText("1_Increase"), MenuContentTransp, Setup.ControlSensivity == 10))
256
Setup.ControlSensivity++;
257
if (Setup.ControlSensivity>10) Setup.ControlSensivity = 10;
259
for (int i=0; i<10; i++)
261
SetRect(&SrcRest,0,0,16,32);
262
SetRect(&DstRest,X1+443+16*i,Y1-4,X1+443+16+16*i,Y1+32-4);
263
if (Setup.ControlSensivity > i)
264
vw_DrawTransparent(&DstRest, &SrcRest, vw_FindTextureByName("DATA/MENU/perc.tga"), true, MenuContentTransp);
266
vw_DrawTransparent(&DstRest, &SrcRest, vw_FindTextureByName("DATA/MENU/perc_none.tga"), true, MenuContentTransp);
282
SizeI = (100-vw_FontSize(vw_GetText("3_MOUSE")))/2;
283
vw_DrawFont(X1+315+SizeI, Y1, 0, 0, 1.0f, 1.0f,0.5f,0.0f, MenuContentTransp, vw_GetText("3_MOUSE"));
284
SizeI = (150-vw_FontSize(vw_GetText("3_KEYBOARD")))/2;
285
vw_DrawFont(X1+446+SizeI, Y1, 0, 0, 1.0f, 1.0f,0.5f,0.0f, MenuContentTransp, vw_GetText("3_KEYBOARD"));
286
SizeI = (150-vw_FontSize(vw_GetText("3_JOYSTICK")))/2;
287
vw_DrawFont(X1+605+SizeI, Y1, 0, 0, 1.0f, 1.0f,0.5f,0.0f, MenuContentTransp, vw_GetText("3_JOYSTICK"));
291
vw_DrawFont(X1, Y1, -280, 0, 1.0f, 1.0f,1.0f,1.0f, MenuContentTransp, vw_GetText("3_Primary_Attack"));
294
if (NeedCheck == 7) {Transp = But[6]; Off = true;};
295
if (DrawButton128_2((int)X1+300, (int)Y1-6, MouseCodeName(Setup.MousePrimary), Transp*MenuContentTransp, Off))
298
Setup.MousePrimary = 0;
300
for (int i=0; i<8; i++) SDL_MouseCurrentStatus[i] = false;
305
if (NeedCheck == 5) {Transp = But[4]; Off = true;};
306
if (DrawButton128_2((int)X1+458, (int)Y1-6, vw_VirtualCodeName(Setup.MenuLanguage, Setup.KeyBoardPrimary), Transp*MenuContentTransp, Off))
309
Setup.KeyBoardPrimary = 0;
315
if (NeedCheck == 9) {Transp = But[8]; Off = true;};
316
if (DrawButton128_2((int)X1+616, (int)Y1-6, JoystickCodeName(Setup.JoystickPrimary), Transp*MenuContentTransp, !(Joystick != NULL) || Off))
319
Setup.JoystickPrimary = -1;
321
for (int i=0; i<100; i++) JoysticButtons[i] = false;
327
vw_DrawFont(X1, Y1, -280, 0, 1.0f, 1.0f,1.0f,1.0f, MenuContentTransp, vw_GetText("3_Secondary_Attack"));
330
if (NeedCheck == 8) {Transp = But[7]; Off = true;};
331
if (DrawButton128_2((int)X1+300, (int)Y1-6, MouseCodeName(Setup.MouseSecondary), Transp*MenuContentTransp, Off))
334
Setup.MouseSecondary = 0;
336
for (int i=0; i<8; i++) SDL_MouseCurrentStatus[i] = false;//MouseCurrentStatus[i] = vw_MouseIsBJustDown(i);
340
if (NeedCheck == 6) {Transp = But[5]; Off = true;};
341
if (DrawButton128_2((int)X1+458, (int)Y1-6, vw_VirtualCodeName(Setup.MenuLanguage, Setup.KeyBoardSecondary), Transp*MenuContentTransp, Off))
344
Setup.KeyBoardSecondary = 0;
350
if (NeedCheck == 10) {Transp = But[9]; Off = true;};
351
if (DrawButton128_2((int)X1+616, (int)Y1-6, JoystickCodeName(Setup.JoystickSecondary), Transp*MenuContentTransp, !(Joystick != NULL) || Off))
354
Setup.JoystickSecondary = -1;
356
for (int i=0; i<100; i++) JoysticButtons[i] = false;
363
vw_DrawFont(X1, Y1, -280, 0, 1.0f, 1.0f,1.0f,1.0f, MenuContentTransp, vw_GetText("3_Move_Forward"));
366
if (NeedCheck == 1) {Transp = But[0]; Off = true;};
367
if (DrawButton128_2((int)X1+458, (int)Y1-6, vw_VirtualCodeName(Setup.MenuLanguage, Setup.KeyBoardUp), Transp*MenuContentTransp, Off))
370
Setup.KeyBoardUp = 0;
375
vw_DrawFont(X1, Y1, -280, 0, 1.0f, 1.0f,1.0f,1.0f, MenuContentTransp, vw_GetText("3_Move_Backward"));
378
if (NeedCheck == 2) {Transp = But[1]; Off = true;};
379
if (DrawButton128_2((int)X1+458, (int)Y1-6, vw_VirtualCodeName(Setup.MenuLanguage, Setup.KeyBoardDown), Transp*MenuContentTransp, Off))
382
Setup.KeyBoardDown = 0;
387
vw_DrawFont(X1, Y1, -280, 0, 1.0f, 1.0f,1.0f,1.0f, MenuContentTransp, vw_GetText("3_Move_Left"));
390
if (NeedCheck == 3) {Transp = But[2]; Off = true;};
391
if (DrawButton128_2((int)X1+458, (int)Y1-6, vw_VirtualCodeName(Setup.MenuLanguage, Setup.KeyBoardLeft), Transp*MenuContentTransp, Off))
394
Setup.KeyBoardLeft = 0;
399
vw_DrawFont(X1, Y1, -280, 0,1.0f, 1.0f,1.0f,1.0f, MenuContentTransp, vw_GetText("3_Move_Right"));
402
if (NeedCheck == 4) {Transp = But[3]; Off = true;};
403
if (DrawButton128_2((int)X1+458, (int)Y1-6, vw_VirtualCodeName(Setup.MenuLanguage, Setup.KeyBoardRight), Transp*MenuContentTransp, Off))
406
Setup.KeyBoardRight = 0;
421
X = Setup.iAspectRatioWidth/2 - 366;
422
if (DrawButton200_2(X,Y+28, vw_GetText("1_Advanced"), MenuContentTransp, false))
424
ComBuffer = OPTIONS_ADVANCED;
425
if (Setup.KeyBoardUp == 0) Setup.KeyBoardUp = SDLK_UP;
426
if (Setup.KeyBoardDown == 0) Setup.KeyBoardDown = SDLK_DOWN;
427
if (Setup.KeyBoardLeft == 0) Setup.KeyBoardLeft = SDLK_LEFT;
428
if (Setup.KeyBoardRight == 0) Setup.KeyBoardRight = SDLK_RIGHT;
429
if (Setup.KeyBoardPrimary == 0) Setup.KeyBoardPrimary = SDLK_LCTRL;
430
if (Setup.KeyBoardSecondary == 0) Setup.KeyBoardSecondary = SDLK_SPACE;
431
if (Setup.MousePrimary == 0) Setup.MousePrimary = SDL_BUTTON_LEFT;
432
if (Setup.MouseSecondary == 0) Setup.MouseSecondary = SDL_BUTTON_RIGHT;
433
if (Setup.JoystickPrimary == -1) Setup.JoystickPrimary = 0;
434
if (Setup.JoystickSecondary == -1) Setup.JoystickSecondary = 1;
436
for (int i=0; i<ButQuant; i++) But[i] = 1.0f;
440
X = Setup.iAspectRatioWidth/2 - 100;
441
if (DrawButton200_2(X,Y+28, vw_GetText("1_Video_&_Audio"), MenuContentTransp, false))
444
if (Setup.KeyBoardUp == 0) Setup.KeyBoardUp = SDLK_UP;
445
if (Setup.KeyBoardDown == 0) Setup.KeyBoardDown = SDLK_DOWN;
446
if (Setup.KeyBoardLeft == 0) Setup.KeyBoardLeft = SDLK_LEFT;
447
if (Setup.KeyBoardRight == 0) Setup.KeyBoardRight = SDLK_RIGHT;
448
if (Setup.KeyBoardPrimary == 0) Setup.KeyBoardPrimary = SDLK_LCTRL;
449
if (Setup.KeyBoardSecondary == 0) Setup.KeyBoardSecondary = SDLK_SPACE;
450
if (Setup.MousePrimary == 0) Setup.MousePrimary = SDL_BUTTON_LEFT;
451
if (Setup.MouseSecondary == 0) Setup.MouseSecondary = SDL_BUTTON_RIGHT;
452
if (Setup.JoystickPrimary == -1) Setup.JoystickPrimary = 0;
453
if (Setup.JoystickSecondary == -1) Setup.JoystickSecondary = 1;
455
for (int i=0; i<ButQuant; i++) But[i] = 1.0f;
459
X = Setup.iAspectRatioWidth/2 + 166;
460
if (DrawButton200_2(X,Y+28, vw_GetText("1_Interface"), MenuContentTransp, false))
462
ComBuffer = INTERFACE;
463
if (Setup.KeyBoardUp == 0) Setup.KeyBoardUp = SDLK_UP;
464
if (Setup.KeyBoardDown == 0) Setup.KeyBoardDown = SDLK_DOWN;
465
if (Setup.KeyBoardLeft == 0) Setup.KeyBoardLeft = SDLK_LEFT;
466
if (Setup.KeyBoardRight == 0) Setup.KeyBoardRight = SDLK_RIGHT;
467
if (Setup.KeyBoardPrimary == 0) Setup.KeyBoardPrimary = SDLK_LCTRL;
468
if (Setup.KeyBoardSecondary == 0) Setup.KeyBoardSecondary = SDLK_SPACE;
469
if (Setup.MousePrimary == 0) Setup.MousePrimary = SDL_BUTTON_LEFT;
470
if (Setup.MouseSecondary == 0) Setup.MouseSecondary = SDL_BUTTON_RIGHT;
471
if (Setup.JoystickPrimary == -1) Setup.JoystickPrimary = 0;
472
if (Setup.JoystickSecondary == -1) Setup.JoystickSecondary = 1;
474
for (int i=0; i<ButQuant; i++) But[i] = 1.0f;
480
X = (Setup.iAspectRatioWidth - 384)/2;
482
if (DrawButton384(X,Y, vw_GetText("1_MAIN_MENU"), MenuContentTransp, &Button10Transp, &LastButton10UpdateTime))
484
ComBuffer = MAIN_MENU;
485
if (Setup.KeyBoardUp == 0) Setup.KeyBoardUp = SDLK_UP;
486
if (Setup.KeyBoardDown == 0) Setup.KeyBoardDown = SDLK_DOWN;
487
if (Setup.KeyBoardLeft == 0) Setup.KeyBoardLeft = SDLK_LEFT;
488
if (Setup.KeyBoardRight == 0) Setup.KeyBoardRight = SDLK_RIGHT;
489
if (Setup.KeyBoardPrimary == 0) Setup.KeyBoardPrimary = SDLK_LCTRL;
490
if (Setup.KeyBoardSecondary == 0) Setup.KeyBoardSecondary = SDLK_SPACE;
491
if (Setup.MousePrimary == 0) Setup.MousePrimary = SDL_BUTTON_LEFT;
492
if (Setup.MouseSecondary == 0) Setup.MouseSecondary = SDL_BUTTON_RIGHT;
494
for (int i=0; i<ButQuant; i++) But[i] = 1.0f;