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
int SoundOnMissionID = -1;
34
int CurrentMission = -1;
35
// всего доступно миссий
37
// начало и конец отображаемых миссий
40
// ограничение, сколько миссий может быть открыто (нужно для демо версии)
41
int MissionLimitation;
43
// списки с данными для каждой миссии
44
char **MissionTitle = 0;
45
char **MissionDescr = 0;
46
float *MissionTitleColorR = 0;
47
float *MissionTitleColorG = 0;
48
float *MissionTitleColorB = 0;
49
float *MissionDescrColorR = 0;
50
float *MissionDescrColorG = 0;
51
float *MissionDescrColorB = 0;
52
char **MissionIcon = 0;
53
int *MissionTitleType = 0;
54
int *MissionDescrType = 0;
55
char **MissionFile = 0;
60
// получаем имя файла миссии
61
char MissionFileName[MAX_PATH];
62
char *GetMissionFileName()
64
for(int i = 0; i<MAX_PATH; i++) MissionFileName[i] = 0;
68
if (MissionFile[CurrentMission] != 0)
69
strcpy(MissionFileName, MissionFile[CurrentMission]);
76
return MissionFileName;
92
//------------------------------------------------------------------------------------
93
// инициализация данных списка миссий
94
//------------------------------------------------------------------------------------
95
void MissionsListInit()
97
// по скрипту, смотрим что загружать + считаем сколько позиций
98
cXMLDocument *xmlDoc = new cXMLDocument;
101
if (!xmlDoc->Load("DATA/SCRIPT/list.xml"))
103
fprintf(stderr, "Can't find script file: %s\n", "DATA/SCRIPT/list.xml");
109
// проверяем корневой элемент
110
if (strcmp("AstroMenaceMissionsList", xmlDoc->RootXMLEntry->Name))
112
fprintf(stderr, "Can't find AstroMenaceMissionsList element in the: %s\n", "DATA/SCRIPT/list.xml");
119
cXMLEntry *xmlEntry = xmlDoc->RootXMLEntry->FirstChild;
122
// считаем, сколько миссий в файле
123
if (!strcmp(xmlEntry->Name, "Mission")) AllMission++;
125
// берем следующий элемент по порядку
126
xmlEntry = xmlEntry->Next;
129
// резервируем память
130
MissionTitle = new char*[AllMission];
131
MissionDescr = new char*[AllMission];
132
MissionIcon = new char*[AllMission];
133
MissionFile = new char*[AllMission];
134
MissionTitleColorR = new float[AllMission];
135
MissionTitleColorG = new float[AllMission];
136
MissionTitleColorB = new float[AllMission];
137
MissionDescrColorR = new float[AllMission];
138
MissionDescrColorG = new float[AllMission];
139
MissionDescrColorB = new float[AllMission];
140
MissionTitleType = new int[AllMission];
141
MissionDescrType = new int[AllMission];
142
// зануляем данные, на всякий случай
143
for (int i=0; i<AllMission; i++)
149
// установка типа, название (не ссылка)
150
MissionTitleType[i] = 0;
151
MissionDescrType[i] = 0;
153
MissionTitleColorR[i] = 1.0f;MissionTitleColorG[i] = 0.5f;MissionTitleColorB[i] = 0.0f;
154
MissionDescrColorR[i] = 1.0f;MissionDescrColorG[i] = 1.0f;MissionDescrColorB[i] = 1.0f;
160
// второй проход, заполняем массивы
161
xmlEntry = xmlDoc->RootXMLEntry->FirstChild;
165
// берем каждую миссию и смотрим настройки
166
if (!strcmp(xmlEntry->Name, "Mission"))
168
cXMLEntry *TMission = xmlEntry->FirstChild;
172
if (!strcmp(TMission->Name, "Title"))
174
if (xmlDoc->GetEntryAttribute(TMission, "color") != 0)
176
switch (xmlDoc->iGetEntryAttribute(TMission, "color"))
179
MissionTitleColorR[i]=1.0f;MissionTitleColorG[i]=1.0f;MissionTitleColorB[i]=1.0f;
182
MissionTitleColorR[i]=1.0f;MissionTitleColorG[i]=1.0f;MissionTitleColorB[i]=0.0f;
185
MissionTitleColorR[i]=1.0f;MissionTitleColorG[i]=0.0f;MissionTitleColorB[i]=0.0f;
188
MissionTitleColorR[i]=0.0f;MissionTitleColorG[i]=1.0f;MissionTitleColorB[i]=0.0f;
191
MissionTitleColorR[i]=1.0f;MissionTitleColorG[i]=0.5f;MissionTitleColorB[i]=0.0f;
194
MissionTitleColorR[i]=0.5f;MissionTitleColorG[i]=0.5f;MissionTitleColorB[i]=0.5f;
198
if (xmlDoc->GetEntryAttribute(TMission, "type") != 0) MissionTitleType[i] = xmlDoc->iGetEntryAttribute(TMission, "type");
200
if (TMission->Content != 0)
202
MissionTitle[i] = new char[strlen(TMission->Content)+1];
203
strcpy(MissionTitle[i], TMission->Content);
208
if (!strcmp(TMission->Name, "Descr"))
210
if (xmlDoc->GetEntryAttribute(TMission, "color") != 0)
212
switch (xmlDoc->iGetEntryAttribute(TMission, "color"))
215
MissionDescrColorR[i]=1.0f;MissionDescrColorG[i]=1.0f;MissionDescrColorB[i]=1.0f;
218
MissionDescrColorR[i]=1.0f;MissionDescrColorG[i]=1.0f;MissionDescrColorB[i]=0.0f;
221
MissionDescrColorR[i]=1.0f;MissionDescrColorG[i]=0.0f;MissionDescrColorB[i]=0.0f;
224
MissionDescrColorR[i]=0.0f;MissionDescrColorG[i]=1.0f;MissionDescrColorB[i]=0.0f;
227
MissionDescrColorR[i]=1.0f;MissionDescrColorG[i]=0.5f;MissionDescrColorB[i]=0.0f;
230
MissionDescrColorR[i]=0.5f;MissionDescrColorG[i]=0.5f;MissionDescrColorB[i]=0.5f;
234
if (xmlDoc->GetEntryAttribute(TMission, "type") != 0) MissionDescrType[i] = xmlDoc->iGetEntryAttribute(TMission, "type");
236
if (TMission->Content != 0)
238
MissionDescr[i] = new char[strlen(TMission->Content)+1];
239
strcpy(MissionDescr[i], TMission->Content);
244
if (!strcmp(TMission->Name, "Icon"))
246
if (TMission->Content != 0)
248
MissionIcon[i] = new char[strlen(TMission->Content)+1];
249
strcpy(MissionIcon[i], TMission->Content);
254
if (!strcmp(TMission->Name, "File"))
256
if (TMission->Content != 0)
258
MissionFile[i] = new char[strlen(TMission->Content)+1];
259
strcpy(MissionFile[i], TMission->Content);
264
// берем следующий элемент
265
TMission = TMission->Next;
271
// проверяем музыку, возможно есть необходимость что-то заменить
272
if (!strcmp(xmlEntry->Name, "GameMainMusic"))
275
file = vw_fopen(xmlEntry->Content);
278
strcpy(GameMainMusic, xmlEntry->Content);
279
GameMainMusicSet = true;
281
fprintf(stderr, "New GameMainMusic music file %s\n", xmlEntry->Content);
284
fprintf(stderr, "Unable to find music file %s\n", xmlEntry->Content);
287
if (!strcmp(xmlEntry->Name, "GameBossMusic"))
290
file = vw_fopen(xmlEntry->Content);
293
strcpy(GameBossMusic, xmlEntry->Content);
294
GameBossMusicSet = true;
296
fprintf(stderr, "New GameBossMusic music file %s\n", xmlEntry->Content);
299
fprintf(stderr, "Unable to find music file %s\n", xmlEntry->Content);
302
if (!strcmp(xmlEntry->Name, "GameDeathMusic"))
305
file = vw_fopen(xmlEntry->Content);
308
strcpy(GameDeathMusic, xmlEntry->Content);
309
GameDeathMusicSet = true;
311
fprintf(stderr, "New GameDeathMusic music file %s\n", xmlEntry->Content);
314
fprintf(stderr, "Unable to find music file %s\n", xmlEntry->Content);
318
// берем следующий элемент по порядку
319
xmlEntry = xmlEntry->Next;
323
// чистим память, со скриптом работать больше не надо
327
// на одну меньше, т.к. это номер миссии, а не кол-во
328
MissionLimitation = AllMission-1;
335
//------------------------------------------------------------------------------------
336
// удаление данных списка миссий
337
//------------------------------------------------------------------------------------
338
void MissionsListRelease()
340
if (MissionFile != 0)
342
for (int i=0; i<AllMission; i++)
344
delete [] MissionFile[i]; MissionFile[i] = 0;
346
delete [] MissionFile; MissionFile = 0;
349
if (MissionTitle != 0)
351
for (int i=0; i<AllMission; i++)
353
delete [] MissionTitle[i]; MissionTitle[i] = 0;
355
delete [] MissionTitle; MissionTitle = 0;
358
if (MissionDescr != 0)
360
for (int i=0; i<AllMission; i++)
362
delete [] MissionDescr[i]; MissionDescr[i] = 0;
364
delete [] MissionDescr; MissionDescr = 0;
367
if (MissionIcon != 0)
369
for (int i=0; i<AllMission; i++)
371
delete [] MissionIcon[i]; MissionIcon[i] = 0;
373
delete [] MissionIcon; MissionIcon = 0;
376
if (MissionTitleColorR != 0){delete [] MissionTitleColorR; MissionTitleColorR = 0;}
377
if (MissionTitleColorG != 0){delete [] MissionTitleColorG; MissionTitleColorG = 0;}
378
if (MissionTitleColorB != 0){delete [] MissionTitleColorB; MissionTitleColorB = 0;}
379
if (MissionDescrColorR != 0){delete [] MissionDescrColorR; MissionDescrColorR = 0;}
380
if (MissionDescrColorG != 0){delete [] MissionDescrColorG; MissionDescrColorG = 0;}
381
if (MissionDescrColorB != 0){delete [] MissionDescrColorB; MissionDescrColorB = 0;}
382
if (MissionTitleType != 0){delete [] MissionTitleType; MissionTitleType = 0;}
383
if (MissionDescrType != 0){delete [] MissionDescrType; MissionDescrType = 0;}
397
//------------------------------------------------------------------------------------
399
//------------------------------------------------------------------------------------
403
// проверка ограничения
404
if (Setup.Profile[CurrentProfile].OpenLevelNum > MissionLimitation)
405
Setup.Profile[CurrentProfile].OpenLevelNum = MissionLimitation;
409
RECT SrcRest, DstRest;
410
SetRect(&SrcRest,2,2,863-2,484-2);
411
SetRect(&DstRest,Setup.iAspectRatioWidth/2-427,175-15,Setup.iAspectRatioWidth/2-427+863-4,175-15+484-4);
412
vw_DrawTransparent(&DstRest, &SrcRest, vw_FindTextureByName("DATA/MENU/panel800_444_back.tga"), true, 0.9f*MenuContentTransp);
416
int X1 = Setup.iAspectRatioWidth/2 - 372;
421
SetRect(&SrcRest,0,0,2,2);
422
SetRect(&DstRest,X1-2,Y1-2,X1+2+750,Y1+2+320);
423
vw_DrawTransparent(&DstRest, &SrcRest, vw_FindTextureByName("DATA/MENU/blackpoint.tga"), true, 0.2f*MenuContentTransp);
424
SetRect(&DstRest,X1,Y1,X1+750,Y1+320);
425
vw_DrawTransparent(&DstRest, &SrcRest, vw_FindTextureByName("DATA/MENU/blackpoint.tga"), true, 0.5f*MenuContentTransp);
432
// подсвечиваем выбранный уровень
433
if (CurrentMission != -1)
434
if (StartMission<=CurrentMission && CurrentMission<=EndMission)
436
int ShowLine = CurrentMission;
437
while (ShowLine>4) ShowLine -= 5;
439
int Y1 = 215 + 64*ShowLine;
441
SetRect(&SrcRest,0,0,2,2);
442
SetRect(&DstRest,X1+1,Y1+1,X1+749,Y1+63);
443
vw_DrawTransparent(&DstRest, &SrcRest, vw_FindTextureByName("DATA/MENU/whitepoint.tga"), true, 0.1f*MenuContentTransp);
449
// выводим миссии текущего листа
450
int TMPSoundOnMissionID = -1;
451
for (int i=StartMission; i<=EndMission; i++)
452
if (AllMission > i) // на тот случай, если у нас кол-во миссий не делится на 5
454
// если не можем выбирать...
455
if (i > Setup.Profile[CurrentProfile].OpenLevelNum)
457
SetRect(&SrcRest,0,0,64,64);
458
SetRect(&DstRest,X1+2,Y1+2,X1+62,Y1+62);
460
if (MissionIcon[i] != 0)
461
vw_DrawTransparent(&DstRest, &SrcRest, vw_FindTextureByName(MissionIcon[i]), true, 0.3f*MenuContentTransp);
463
int SizeI = vw_FontSize(vw_GetText(MissionTitle[i]));
464
if (SizeI < 750-30-64)
466
if (MissionTitleType[i] == 1)
467
vw_DrawFont(X1+20+64, Y1+9, -650, 0, 1.0f, MissionTitleColorR[i],MissionTitleColorG[i],MissionTitleColorB[i], 0.3f*MenuContentTransp, vw_GetText(MissionTitle[i]));
469
vw_DrawFont(X1+20+64, Y1+9, -650, 0, 1.0f, MissionTitleColorR[i],MissionTitleColorG[i],MissionTitleColorB[i], 0.3f*MenuContentTransp, MissionTitle[i]);
473
if (MissionTitleType[i] == 1)
474
vw_DrawFont(X1+20+64, Y1+9, -650, 0, 1.0f, MissionTitleColorR[i],MissionTitleColorG[i],MissionTitleColorB[i], 0.3f*MenuContentTransp, vw_GetText(MissionTitle[i]));
476
vw_DrawFont(X1+20+64, Y1+9, -650, 0, 1.0f, MissionTitleColorR[i],MissionTitleColorG[i],MissionTitleColorB[i], 0.3f*MenuContentTransp, MissionTitle[i]);
479
SizeI = vw_FontSize(vw_GetText(MissionDescr[i]));
480
if (SizeI < 750-30-64)
482
if (MissionDescrType[i] == 1)
483
vw_DrawFont(X1+20+64, Y1+33, -650, 0, 1.0f, MissionDescrColorR[i],MissionDescrColorG[i],MissionDescrColorB[i], 0.3f*MenuContentTransp, vw_GetText(MissionDescr[i]));
485
vw_DrawFont(X1+20+64, Y1+33, -650, 0, 1.0f, MissionDescrColorR[i],MissionDescrColorG[i],MissionDescrColorB[i], 0.3f*MenuContentTransp, MissionDescr[i]);
489
if (MissionDescrType[i] == 1)
490
vw_DrawFont(X1+20+64, Y1+33, -650, 0, 1.0f, MissionDescrColorR[i],MissionDescrColorG[i],MissionDescrColorB[i], 0.3f*MenuContentTransp, vw_GetText(MissionDescr[i]));
492
vw_DrawFont(X1+20+64, Y1+33, -650, 0, 1.0f, MissionDescrColorR[i],MissionDescrColorG[i],MissionDescrColorB[i], 0.3f*MenuContentTransp, MissionDescr[i]);
497
SetRect(&DstRest,X1,Y1+1,X1+750,Y1+64);
498
if (i <= Setup.Profile[CurrentProfile].OpenLevelNum)
500
// работаем с клавиатурой
501
if ((MenuContentTransp >= 0.99f) && !isDialogBoxDrawing()) CurrentActiveMenuElement++;
502
bool InFocusByKeyboard = false;
503
if (CurrentKeyboardSelectMenuElement > 0)
505
if (CurrentKeyboardSelectMenuElement == CurrentActiveMenuElement)
507
InFocusByKeyboard = true;
512
if ((vw_OnRect(&DstRest) || InFocusByKeyboard) && !isDialogBoxDrawing())
514
TMPSoundOnMissionID = i;
515
CurrentCursorStatus = 1;
516
// если только встали - нужно звуком это показать
517
if (SoundOnMissionID != i)
519
SoundOnMissionID = i;
520
// если задействуем клавиатуру - неиграем тут звук
521
if (CurrentKeyboardSelectMenuElement == 0) Audio_PlaySound2D(5,1.0f);
524
// если стоим над ним...
525
SetRect(&SrcRest,0,0,64,64);
526
SetRect(&DstRest,X1,Y1,X1+64,Y1+64);
527
if (MissionIcon != 0)
528
vw_DrawTransparent(&DstRest, &SrcRest, vw_FindTextureByName(MissionIcon[i]), true, MenuContentTransp);
531
int SizeI = vw_FontSize(vw_GetText(MissionTitle[i]));
532
if (SizeI < 750-30-64)
534
if (MissionTitleType[i] == 1)
535
vw_DrawFont(X1+20+64, Y1+9, -650, 0, 1.0f, MissionTitleColorR[i],MissionTitleColorG[i],MissionTitleColorB[i], MenuContentTransp, vw_GetText(MissionTitle[i]));
537
vw_DrawFont(X1+20+64, Y1+9, -650, 0, 1.0f, MissionTitleColorR[i],MissionTitleColorG[i],MissionTitleColorB[i], MenuContentTransp, MissionTitle[i]);
541
if (MissionTitleType[i] == 1)
542
vw_DrawFont(X1+20+64, Y1+9, -650, 0, 1.0f, MissionTitleColorR[i],MissionTitleColorG[i],MissionTitleColorB[i], MenuContentTransp, vw_GetText(MissionTitle[i]));
544
vw_DrawFont(X1+20+64, Y1+9, -650, 0, 1.0f, MissionTitleColorR[i],MissionTitleColorG[i],MissionTitleColorB[i], MenuContentTransp, MissionTitle[i]);
546
SizeI = vw_FontSize(vw_GetText(MissionDescr[i]));
547
if (SizeI < 750-30-64)
549
if (MissionDescrType[i] == 1)
550
vw_DrawFont(X1+20+64, Y1+33, -650, 0, 1.0f, MissionDescrColorR[i],MissionDescrColorG[i],MissionDescrColorB[i], MenuContentTransp, vw_GetText(MissionDescr[i]));
552
vw_DrawFont(X1+20+64, Y1+33, -650, 0, 1.0f, MissionDescrColorR[i],MissionDescrColorG[i],MissionDescrColorB[i], MenuContentTransp, MissionDescr[i]);
557
if (MissionDescrType[i] == 1)
558
vw_DrawFont(X1+20+64, Y1+33, -650, 0, 1.0f, MissionDescrColorR[i],MissionDescrColorG[i],MissionDescrColorB[i], MenuContentTransp, vw_GetText(MissionDescr[i]));
560
vw_DrawFont(X1+20+64, Y1+33, -650, 0, 1.0f, MissionDescrColorR[i],MissionDescrColorG[i],MissionDescrColorB[i], MenuContentTransp, MissionDescr[i]);
565
if (CurrentMission != i)
567
SetRect(&SrcRest,0,0,2,2);
568
SetRect(&DstRest,X1+64,Y1+1,X1+749,Y1+63);
569
vw_DrawTransparent(&DstRest, &SrcRest, vw_FindTextureByName("DATA/MENU/whitepoint.tga"), true, 0.1f*MenuContentTransp);
571
if (vw_GetWindowLBMouse(true) || (InFocusByKeyboard && (vw_GetKeys(SDLK_KP_ENTER) || vw_GetKeys(SDLK_RETURN))))
575
Setup.Profile[CurrentProfile].LastMission = CurrentMission;
576
Audio_PlaySound2D(6,1.0f);
577
if (InFocusByKeyboard)
579
vw_SetKeys(SDLK_KP_ENTER, false);
580
vw_SetKeys(SDLK_RETURN, false);
584
if (vw_GetWindowLBDoubleMouse(true))
587
Setup.Profile[CurrentProfile].LastMission = CurrentMission;
588
// если уже играли в эту миссию
589
if (Setup.Profile[CurrentProfile].MissionReplayCount[CurrentMission] > 0)
591
if (Setup.NeedShowHint[5])
593
SetCurrentDialogBox(14);
597
ComBuffer = WORKSHOP;
604
ComBuffer = WORKSHOP;
612
// если не стоим над ним, но можем выбирать
613
SetRect(&SrcRest,0,0,64,64);
614
SetRect(&DstRest,X1+2,Y1+2,X1+62,Y1+62);
615
if (MissionIcon != 0)
616
vw_DrawTransparent(&DstRest, &SrcRest, vw_FindTextureByName(MissionIcon[i]), true, 0.8f*MenuContentTransp);
618
int SizeI = vw_FontSize(vw_GetText(MissionTitle[i]));
619
if (SizeI < 750-30-64)
621
if (MissionTitleType[i] == 1)
622
vw_DrawFont(X1+20+64, Y1+9, -650, 0, 1.0f, MissionTitleColorR[i],MissionTitleColorG[i],MissionTitleColorB[i], 0.8f*MenuContentTransp, vw_GetText(MissionTitle[i]));
624
vw_DrawFont(X1+20+64, Y1+9, -650, 0, 1.0f, MissionTitleColorR[i],MissionTitleColorG[i],MissionTitleColorB[i], 0.8f*MenuContentTransp, MissionTitle[i]);
628
if (MissionTitleType[i] == 1)
629
vw_DrawFont(X1+20+64, Y1+9, -650, 0, 1.0f, MissionTitleColorR[i],MissionTitleColorG[i],MissionTitleColorB[i], 0.8f*MenuContentTransp, vw_GetText(MissionTitle[i]));
631
vw_DrawFont(X1+20+64, Y1+9, -650, 0, 1.0f, MissionTitleColorR[i],MissionTitleColorG[i],MissionTitleColorB[i], 0.8f*MenuContentTransp, MissionTitle[i]);
634
SizeI = vw_FontSize(vw_GetText(MissionDescr[i]));
635
if (SizeI < 750-30-64)
637
if (MissionDescrType[i] == 1)
638
vw_DrawFont(X1+20+64, Y1+33, -650, 0, 1.0f, MissionDescrColorR[i],MissionDescrColorG[i],MissionDescrColorB[i], 0.8f*MenuContentTransp, vw_GetText(MissionDescr[i]));
640
vw_DrawFont(X1+20+64, Y1+33, -650, 0, 1.0f, MissionDescrColorR[i],MissionDescrColorG[i],MissionDescrColorB[i], 0.8f*MenuContentTransp, MissionDescr[i]);
645
if (MissionDescrType[i] == 1)
646
vw_DrawFont(X1+20+64, Y1+33, -650, 0, 1.0f, MissionDescrColorR[i],MissionDescrColorG[i],MissionDescrColorB[i], 0.8f*MenuContentTransp, vw_GetText(MissionDescr[i]));
648
vw_DrawFont(X1+20+64, Y1+33, -650, 0, 1.0f, MissionDescrColorR[i],MissionDescrColorG[i],MissionDescrColorB[i], 0.8f*MenuContentTransp, MissionDescr[i]);
655
// если не стоим над профайлами - нужно сбросить флаг
656
if (TMPSoundOnMissionID == -1) SoundOnMissionID = -1;
671
// чтобы не сбивать.. устанавливаем "железно"
673
int AllPagesQuant = AllMission/5;
674
if (AllMission/5 < (AllMission*1.0f)/5.0f) AllPagesQuant++;
676
int AllCurPage = StartMission/5 + 1;
677
vw_DrawFont(X1, Y1, 0, 0, 1.0f, 1.0f,1.0f,1.0f, 0.5f*MenuContentTransp, vw_GetText("3_Page_%i_of_%i"), AllCurPage, AllPagesQuant);
682
if (AllCurPage == 1) Off = true;
683
if (DrawButton200_2(X1+616-200-30-72, Y1-6, vw_GetText("1_Page_Up"), MenuContentTransp, Off))
689
if (AllCurPage == AllPagesQuant) Off = true;
690
if (DrawButton200_2(X1+616-72, Y1-6, vw_GetText("1_Page_Down"), MenuContentTransp, Off))
702
int X = Setup.iAspectRatioWidth/2 - 284;
704
if (DrawButton256(X,Y, vw_GetText("1_BACK"), MenuContentTransp, &Button10Transp, &LastButton10UpdateTime))
710
if (CurrentMission >= 0) Off = false;
711
X = Setup.iAspectRatioWidth/2 + 28;
712
if (DrawButton256(X,Y, vw_GetText("1_NEXT"), MenuContentTransp, &Button11Transp, &LastButton11UpdateTime, Off))
714
// если уже играли в эту миссию
715
if (Setup.Profile[CurrentProfile].MissionReplayCount[CurrentMission] > 0)
717
if (Setup.NeedShowHint[5])
719
SetCurrentDialogBox(14);
723
ComBuffer = WORKSHOP;
730
ComBuffer = WORKSHOP;