1 /****************************************************************************
2 **
3 ** Menu.cpp Stefan Disch, Tobias Nopper, Martina Welte 2001
4 **
5 *****************************************************************************/
6
7 #include <math.h>
8 #include <stdlib.h>
9 #include <stdio.h> //2CHANGE wieder raus wenn kein printf mehr drin
10 #include <GL/glut.h>
11
12 #include "LA.h" // Zum Handling von .bmp-Files bzw. Matrix-Bildern
13 #include "bmp.h"
14 #include "Kamera.h"
15 #include "Kugel.h"
16 #include "Tisch.h"
17 #include "Anzeige.h"
18 #include "Schiedsrichter.h"
19 #include "Schild.h"
20 #include "Textfeld.h"
21 #include "Beleuchtung.h"
22
23 #include "SpielfeldAufbau.h"
24 #include "KommandoZeilenParameter.h"
25 #include "Einsetzen.h"
26 #include "kugeltabellen.h"
27 #include "Benutzerschnittstelle.h"
28 #include "BillardGL.h"
29
30 #include "Menu.h"
31
32 #include "Namen.h"
33
34 //#include "createTexture.h" // Funktion zum Generieren einer Textur aus einem
35 // Matrix-Bild (aus "Ubungen)
36
37
38 /* --------- Konstruktor ---------- */
Menu()39 Menu::Menu() {
40 //
41 for (GLint TextfeldNr=0; TextfeldNr < 1000 ; TextfeldNr++ ) {
42 TextfeldArray[TextfeldNr] = 0;
43 }
44
45 TDL=0;
46 }
47
Update(GLint Faktor)48 void Menu::Update(GLint Faktor) {
49
50 if (!InAnimation) {
51 return;
52 } else {
53
54 Animationszeit+=Faktor;
55 if (Animationszeit>=ANIMATIONSDAUER) {
56 Animationszeit=ANIMATIONSDAUER;
57 InAnimation=0;
58 }
59
60 for (GLint SchildNr=0;SchildNr<SchildAnzahl;SchildNr++) {
61 SchildArray[SchildNr]->Animiere(Faktor);
62 }
63
64 for (GLint TextfeldNr=0;TextfeldNr<1000;TextfeldNr++) {
65 if( TextfeldArray[TextfeldNr] )
66 TextfeldArray[TextfeldNr]->Animiere(Faktor);
67 }
68
69 }
70 }
71
male()72 void Menu::male() {
73
74 glMatrixMode(GL_PROJECTION);
75 glLoadIdentity();
76 gluOrtho2D(0.0,16.0,0.0,12.0);
77 glMatrixMode(GL_MODELVIEW);
78 glLoadIdentity();
79
80 for (GLint SchildNr=0;SchildNr<SchildAnzahl;SchildNr++) {
81 SchildArray[SchildNr]->male();
82 }
83
84 for (GLint TextfeldNr=0;TextfeldNr<1000;TextfeldNr++) {
85 if( TextfeldArray[TextfeldNr] )
86 TextfeldArray[TextfeldNr]->male();
87 }
88
89 }
90
ladeSprache(GLint Sprache)91 void Menu::ladeSprache(GLint Sprache) {
92 char wort[2000];
93 char temp[2000];
94 int index;
95
96 FILE *f;
97 char dateiname[1000];
98 #ifndef _WIN32
99 sprintf(dateiname,"%slang/%i.lang",PFAD,Sprache);
100 f=fopen(dateiname,"r");
101 #endif
102 #ifdef _WIN32
103 sprintf(dateiname,"lang/%i.lang",Sprache);
104 f=fopen(dateiname,"rb");
105 #endif
106 if (f) {
107 GLint nummer;
108 while (!feof(f)) {
109 for (int j=0 ; j<2000 ; j++ ) {
110 temp[j]=0;
111 wort[j]=0;
112 }
113 fgets(temp,2000,f);
114 int i=0;
115 while (temp[i]) i++;
116 while ((temp[--i]==10 || temp[i]==13 || temp[i]==32) && i) temp[i]=0;
117 if (sscanf(temp,"%d %n",&nummer,&index)<1) continue;
118
119 //printf("."); fflush(stdout);
120
121 i=0;
122 while (temp[index+i]) {
123 wort[i]=temp[index+i];
124 i++;
125 }
126 wort[index+i]=0;
127
128 if (temp[0]) {
129 if (TextfeldArray[nummer]) {
130 TextfeldArray[nummer]->SetzeTextKDL(wort);
131 } else {
132 TextfeldArray[nummer] = new Textfeld();
133 TextfeldArray[nummer]->InitialisiereKDL(TDL,wort);
134 }
135 }
136 }
137 fclose(f);
138 }
139 }
140
Initialisiere(GLint Texturgroesse)141 void Menu::Initialisiere(GLint Texturgroesse) {
142
143 if (!TDL) {
144 TDL=dummyTextfeld.dummyInitialisiere(Texturgroesse);
145 return;
146 }
147
148 //printf(" Loading languages\n");
149 ladeSprache(900); //Deutsch zuerst
150 ladeSprache(901); //drueber Englisch als default
151 ladeSprache(999); //Sprachenuebersicht
152
153 if (Sprache) ladeSprache(Sprache);
154
155 //Tutorial-Texta auf Breite 31.2
156 for (GLint tf=640 ; tf < 700 ; tf++ ) {
157 if (!TextfeldArray[tf]) continue;
158 TextfeldArray[tf]->SetzeMaxBreite(31.2);
159 }
160
161 //Regeln-Text auf Breite 24
162 for (GLint tf2=700 ; tf2 < 800 ; tf2++ ) {
163 if (!TextfeldArray[tf2]) continue;
164 TextfeldArray[tf2]->SetzeMaxBreite(26);
165 }
166
167 //printf("\n\n Generating Menu Display Lists\n");
168
169 for (GLint dl=0 ; dl < 1000 ; dl++ ) {
170 if (!TextfeldArray[dl]) continue;
171 TextfeldArray[dl]->GeneriereDisplayList();
172 //printf("."); fflush(stdout);
173 }
174
175 //printf("\n\n");
176
177 TextfeldArray[T_SPIELER1NAME]->SetzeText(Spieler1);
178
179 TextfeldArray[T_SPIELER2NAME]->SetzeText(Spieler2);
180
181 if (TextfeldArray[T_FPS])
182 TextfeldArray[T_FPS]->SetzeText("0 fps");
183 else {
184 TextfeldArray[T_FPS] = new Textfeld();
185 TextfeldArray[T_FPS]->Initialisiere(TDL,"0 fps");
186 }
187
188 SchildAnzahl=0;
189
190 menuhintergrund.Initialisiere();
191 SchildArray[SchildAnzahl++]=&menuhintergrund;
192
193 logo.InitialisiereLogo();
194 SchildArray[SchildAnzahl++]=&logo;
195
196 ball[0].Initialisiere(1,"a00","aalpha");
197 SchildArray[SchildAnzahl++]=&ball[0];
198 ball[1].Initialisiere(1,"a1","aalpha");
199 SchildArray[SchildAnzahl++]=&ball[1];
200 ball[2].Initialisiere(1,"a2","aalpha");
201 SchildArray[SchildAnzahl++]=&ball[2];
202 ball[3].Initialisiere(1,"a3","aalpha");
203 SchildArray[SchildAnzahl++]=&ball[3];
204 ball[4].Initialisiere(1,"a4","aalpha");
205 SchildArray[SchildAnzahl++]=&ball[4];
206 ball[5].Initialisiere(1,"a5","aalpha");
207 SchildArray[SchildAnzahl++]=&ball[5];
208 ball[6].Initialisiere(1,"a6","aalpha");
209 SchildArray[SchildAnzahl++]=&ball[6];
210 ball[7].Initialisiere(1,"a7","aalpha");
211 SchildArray[SchildAnzahl++]=&ball[7];
212 ball[8].Initialisiere(1,"a8","aalpha");
213 SchildArray[SchildAnzahl++]=&ball[8];
214 ball[9].Initialisiere(1,"a9","aalpha");
215 SchildArray[SchildAnzahl++]=&ball[9];
216 ball[10].Initialisiere(1,"a10","aalpha");
217 SchildArray[SchildAnzahl++]=&ball[10];
218 ball[11].Initialisiere(1,"a11","aalpha");
219 SchildArray[SchildAnzahl++]=&ball[11];
220 ball[12].Initialisiere(1,"a12","aalpha");
221 SchildArray[SchildAnzahl++]=&ball[12];
222 ball[13].Initialisiere(1,"a13","aalpha");
223 SchildArray[SchildAnzahl++]=&ball[13];
224 ball[14].Initialisiere(1,"a14","aalpha");
225 SchildArray[SchildAnzahl++]=&ball[14];
226 ball[15].Initialisiere(1,"a15","aalpha");
227 SchildArray[SchildAnzahl++]=&ball[15];
228
229 volle.Initialisiere(Texturgroesse,"volle","aalpha2");
230 SchildArray[SchildAnzahl++]=&volle;
231 halbe.Initialisiere(Texturgroesse,"halbe","aalpha2");
232 SchildArray[SchildAnzahl++]=&halbe;
233
234 //GameStar.Initialisiere(1,"gamestar",1); //Gamestar
235 //SchildArray[SchildAnzahl++]=&GameStar;
236
237
238 if (!MenuZustand) {MenuZustand=STARTBILDSCHIRM;}
239
240 NeuerMenuZustand();
241 StarteAnimation();
242
243 MenuGesperrt=0;
244
245 }
246
Maustaste(int Taste,int Richtung,int x,int y)247 GLint Menu::Maustaste(int Taste,int Richtung,int x,int y){
248
249 StarteAnimation();
250
251 GLint Signal=0;
252 GLint SchildNr=0;
253 GLint TextfeldNr=0;
254
255 while (!Signal && SchildNr<SchildAnzahl) {
256 Signal=SchildArray[SchildNr++]->Maustaste(Taste,Richtung,x,y);
257 }
258
259 for (TextfeldNr=0 ; TextfeldNr<1000; TextfeldNr++) {
260 if (Signal) break;
261 if (TextfeldArray[TextfeldNr])
262 Signal=TextfeldArray[TextfeldNr]->Maustaste(Taste,Richtung,x,y);
263 }
264
265 if (Signal>0) {
266 SignalAusfuehrung(Signal);
267 }
268
269 if (MenuZustand==STARTBILDSCHIRM &&
270 Richtung==GLUT_UP) {
271 if (Sprache) SetzeMenuZustand(HAUPTMENU);
272 else SetzeMenuZustand(SPRACHAUSWAHL);
273 return 1;
274 }
275
276 if (MenuGesperrt ||
277 MenuZustand!=SPIEL) {
278 return 1;
279 }
280
281 return Signal;
282 }
283
StarteAnimation()284 void Menu::StarteAnimation() {
285 InAnimation=1;
286 Animationszeit=0;
287 }
288
SetzeMenuZustand(GLint NeuerZustand)289 void Menu::SetzeMenuZustand(GLint NeuerZustand) {
290 MenuZustand=NeuerZustand;
291 NeuerMenuZustand();
292 }
293
NeuerMenuZustand()294 void Menu::NeuerMenuZustand(){
295
296 for (GLint SchildNr=0;SchildNr<SchildAnzahl;SchildNr++) {
297 SchildArray[SchildNr]->Desaktiviere();
298 }
299
300 for (GLint TextfeldNr=0;TextfeldNr<1000;TextfeldNr++) {
301 if( TextfeldArray[TextfeldNr] )
302 TextfeldArray[TextfeldNr]->Desaktiviere();
303 }
304
305 if (ZeigeFPS) TextfeldArray[T_FPS]->Positioniere(0,11.7,.3,A_LINKS);
306
307 switch (MenuZustand) {
308
309 case STARTBILDSCHIRM: {
310
311 //GameStar.Positioniere(6,5,10,6);
312 //GameStar.Positioniere(6,5,10,6);
313
314 logo.PositioniereFix(4,6,12,8);
315 //logo.Positioniere(4,6,12,8);
316
317 //TextfeldArray[790]->Positioniere(3.8,5,1,A_RECHTS);
318 //TextfeldArray[790]->Positioniere(3.8,5,1,A_RECHTS);
319 //TextfeldArray[791]->Positioniere(10.2,5,1,A_LINKS);
320 //TextfeldArray[791]->Positioniere(10.2,5,1,A_LINKS);
321
322 TextfeldArray[T_NAMEN1]->Positioniere(8,1.4,.5,A_MITTE);
323 TextfeldArray[T_NAMEN2]->Positioniere(8,1.0,.5,A_MITTE);
324 TextfeldArray[T_NOWARRANTY]->Positioniere(8,0,.5,A_MITTE);
325 TextfeldArray[T_HOMEPAGE]->Positioniere(15.9,0,.5,A_RECHTS);
326 TextfeldArray[T_VERSION]->Positioniere(.1,0,.5,A_LINKS);
327
328 } break;
329
330 case SPRACHAUSWAHL: {
331
332 menuhintergrund.Positioniere(2,2.5,14,8.5);
333 logo.Positioniere(5,9,11,11);
334 logo.VollSichtbar();
335
336 TextfeldArray[T_SPRACHAUSWAHL]->Positioniere(8,8,1,A_MITTE);
337 TextfeldArray[T_SPRACHAUSWAHL]->VollSichtbar();
338 GLfloat Pos_y=7;
339 for (GLint TextfeldNr=900;TextfeldNr<1000;TextfeldNr++) {
340 if ( TextfeldArray[TextfeldNr] ) {
341 TextfeldArray[TextfeldNr]->Positioniere(8,Pos_y,.71,A_MITTE);
342 TextfeldArray[TextfeldNr]->SetzeSignal(TextfeldNr);
343 Pos_y-=.5;
344 }
345 }
346
347 if (Sprache) {
348 TextfeldArray[T_ZURUECK]->Positioniere(8,1,1,A_MITTE);
349 TextfeldArray[T_ZURUECK]->SetzeSignal(S_HM_EINSTELLUNGEN);
350 }
351 TextfeldArray[T_HOMEPAGE]->Positioniere(15.9,0,.5,A_RECHTS);
352 TextfeldArray[T_VERSION]->Positioniere(.1,0,.5,A_LINKS);
353 } break;
354
355 case HAUPTMENU: {
356
357 menuhintergrund.Positioniere(2,2.5,14,8.5);
358
359 logo.Positioniere(5,9,11,11);
360 logo.VollSichtbar();
361 logo.SetzeSignal(S_LOGO);
362
363 TextfeldArray[T_HAUPTMENU]->Positioniere(8,8,1,A_MITTE);
364 TextfeldArray[T_HAUPTMENU]->VollSichtbar();
365
366 TextfeldArray[T_TRAINING]->Positioniere(5.5,6,1,A_MITTE);
367 TextfeldArray[T_TRAINING]->SetzeSignal(S_HM_TRAINING);
368
369 TextfeldArray[T_ZWEISPIELER]->Positioniere(10.5,6,1,A_MITTE);
370 TextfeldArray[T_ZWEISPIELER]->SetzeSignal(S_HM_ZWEISPIELER);
371
372 TextfeldArray[T_HILFE]->Positioniere(5.5,4,1,A_MITTE);
373 TextfeldArray[T_HILFE]->SetzeSignal(S_HM_HILFE);
374
375 TextfeldArray[T_EINSTELLUNGEN]->Positioniere(10.5,4,1,A_MITTE);
376 TextfeldArray[T_EINSTELLUNGEN]->SetzeSignal(S_HM_EINSTELLUNGEN);
377
378 TextfeldArray[T_BEENDEN]->Positioniere(8,1,1,A_MITTE);
379 TextfeldArray[T_BEENDEN]->SetzeSignal(S_HM_BEENDEN);
380
381 TextfeldArray[T_HOMEPAGE]->Positioniere(15.9,0,.5,A_RECHTS);
382 TextfeldArray[T_VERSION]->Positioniere(.1,0,.5,A_LINKS);
383 } break;
384
385 case TRAINING: {
386
387 menuhintergrund.Positioniere(4,5,12,8.5);
388
389 logo.Positioniere(4,9,12,11);
390 logo.VollSichtbar();
391
392 TextfeldArray[T_TRAINING]->Positioniere(8,8,1,A_MITTE);
393 TextfeldArray[T_TRAINING]->VollSichtbar();
394
395 TextfeldArray[T_ACHTBALL]->Positioniere(6.5,6,1,A_MITTE);
396 TextfeldArray[T_ACHTBALL]->SetzeSignal(S_TR_ACHTBALL);
397
398 TextfeldArray[T_NEUNBALL]->Positioniere(9.5,6,1,A_MITTE);
399 TextfeldArray[T_NEUNBALL]->SetzeSignal(S_TR_NEUNBALL);
400
401 TextfeldArray[T_ZURUECK]->Positioniere(8,1,1,A_MITTE);
402 TextfeldArray[T_ZURUECK]->SetzeSignal(S_TR_ZURUECK);
403
404 TextfeldArray[T_HOMEPAGE]->Positioniere(15.9,0,.5,A_RECHTS);
405 TextfeldArray[T_VERSION]->Positioniere(.1,0,.5,A_LINKS);
406 } break;
407
408 case ZWEISPIELER: {
409 menuhintergrund.Positioniere(3,2.5,13,8.5);
410 logo.Positioniere(4,9,12,11);
411 logo.VollSichtbar();
412 TextfeldArray[T_ZWEISPIELER]->Positioniere(8,8,1,A_MITTE);
413 TextfeldArray[T_ZWEISPIELER]->VollSichtbar();
414 TextfeldArray[T_SPIELER1]->Positioniere(8,6,1,A_RECHTS);
415 TextfeldArray[T_SPIELER1]->SetzeSignal(S_SPIELER1HERHOEREN);
416 TextfeldArray[T_SPIELER1NAME]->Positioniere(8.2,6,1,A_LINKS);
417 TextfeldArray[T_SPIELER1NAME]->SetzeSignal(S_SPIELER1HERHOEREN);
418 TextfeldArray[T_SPIELER2]->Positioniere(8,5,1,A_RECHTS);
419 TextfeldArray[T_SPIELER2]->SetzeSignal(S_SPIELER2HERHOEREN);
420 TextfeldArray[T_SPIELER2NAME]->Positioniere(8.2,5,1,A_LINKS);
421 TextfeldArray[T_SPIELER2NAME]->SetzeSignal(S_SPIELER2HERHOEREN);
422 TextfeldArray[T_ACHTBALL]->Positioniere(5,3,1,A_MITTE);
423 TextfeldArray[T_ACHTBALL]->SetzeSignal(S_ZW_ACHTBALL);
424 TextfeldArray[T_NEUNBALL]->Positioniere(11,3,1,A_MITTE);
425 TextfeldArray[T_NEUNBALL]->SetzeSignal(S_ZW_NEUNBALL);
426 TextfeldArray[T_ZURUECK]->Positioniere(8,1,1,A_MITTE);
427 TextfeldArray[T_ZURUECK]->SetzeSignal(S_ZW_ZURUECK);
428
429 TextfeldArray[T_HOMEPAGE]->Positioniere(15.9,0,.5,A_RECHTS);
430 TextfeldArray[T_VERSION]->Positioniere(.1,0,.5,A_LINKS);
431 } break;
432
433 case EINSTELLUNGEN: {
434 menuhintergrund.Positioniere(4,2.5,12,8.5);
435 logo.Positioniere(4,9,12,11);
436 logo.VollSichtbar();
437 TextfeldArray[T_EINSTELLUNGEN]->Positioniere(8,8,1,A_MITTE);
438 TextfeldArray[T_EINSTELLUNGEN]->VollSichtbar();
439 TextfeldArray[T_STEUERUNG]->Positioniere(8,6.5,1,A_MITTE);
440 TextfeldArray[T_STEUERUNG]->SetzeSignal(S_EI_STEUERUNG);
441 TextfeldArray[T_GRAFIK]->Positioniere(8,5.5,1,A_MITTE);
442 TextfeldArray[T_GRAFIK]->SetzeSignal(S_EI_GRAFIK);
443 TextfeldArray[T_AUDIO]->Positioniere(8,4.5,1,A_MITTE);
444 TextfeldArray[T_SPRACHE]->Positioniere(8,3.5,1,A_MITTE);
445 TextfeldArray[T_SPRACHE]->SetzeSignal(S_EI_SPRACHE);
446 TextfeldArray[T_ZURUECK]->Positioniere(8,1,1,A_MITTE);
447 if (AusSpiel) {
448 TextfeldArray[T_ZURUECK]->SetzeSignal(S_EI_ZURUECK_AS);
449 } else {
450 TextfeldArray[T_ZURUECK]->SetzeSignal(S_EI_ZURUECK);
451 }
452
453 TextfeldArray[T_HOMEPAGE]->Positioniere(15.9,0,.5,A_RECHTS);
454 TextfeldArray[T_VERSION]->Positioniere(.1,0,.5,A_LINKS);
455
456 } break;
457
458 case EINSTELLUNGENSTEUERUNG: {
459 menuhintergrund.Positioniere(2,3.5,14,8.5);
460 logo.Positioniere(4,9,12,11);
461 logo.VollSichtbar();
462 TextfeldArray[T_EINSTELLUNGEN]->Positioniere(4,8,1,A_LINKS);
463 TextfeldArray[T_EINSTELLUNGEN]->VollSichtbar();
464 TextfeldArray[T_STEUERUNG]->Positioniere(12,8,1,A_RECHTS);
465 TextfeldArray[T_STEUERUNG]->VollSichtbar();
466
467 TextfeldArray[T_MAUSGESCHWINDIGKEIT]->Positioniere(8,6,.71,A_RECHTS);
468 TextfeldArray[T_MAUSGESCHWINDIGKEIT]->SetzeSignal(S_EI_MOUSESPEED);
469 TextfeldArray[T_XACHSEINVERTIERT]->Positioniere(8,5.5,.71,A_RECHTS);
470 TextfeldArray[T_XACHSEINVERTIERT]->SetzeSignal(S_EI_XINVERT);
471 TextfeldArray[T_YACHSEINVERTIERT]->Positioniere(8,5,.71,A_RECHTS);
472 TextfeldArray[T_YACHSEINVERTIERT]->SetzeSignal(S_EI_YINVERT);
473
474 if (E_InvertX) {
475 TextfeldArray[T_X_AN]->Positioniere(8.2,5.5,.71,A_LINKS);
476 TextfeldArray[T_X_AN]->SetzeSignal(S_EI_XINVERT);
477 } else {
478 TextfeldArray[T_X_AUS]->Positioniere(8.2,5.5,.71,A_LINKS);
479 TextfeldArray[T_X_AUS]->SetzeSignal(S_EI_XINVERT);
480 }
481 if (E_InvertY) {
482 TextfeldArray[T_Y_AN]->Positioniere(8.2,5,.71,A_LINKS);
483 TextfeldArray[T_Y_AN]->SetzeSignal(S_EI_YINVERT);
484 } else {
485 TextfeldArray[T_Y_AUS]->Positioniere(8.2,5,.71,A_LINKS);
486 TextfeldArray[T_Y_AUS]->SetzeSignal(S_EI_YINVERT);
487 }
488 if (E_MouseSpeed<=.293) {
489 TextfeldArray[T_MG_LANGSAM]->Positioniere(8.2,6,.71,A_LINKS);
490 TextfeldArray[T_MG_LANGSAM]->SetzeSignal(S_EI_MOUSESPEED);
491 } else if (E_MouseSpeed<=.41) {
492 TextfeldArray[T_MG_NORMAL]->Positioniere(8.2,6,.71,A_LINKS);
493 TextfeldArray[T_MG_NORMAL]->SetzeSignal(S_EI_MOUSESPEED);
494 } else if (E_MouseSpeed<=.575) {
495 TextfeldArray[T_MG_SCHNELL]->Positioniere(8.2,6,.71,A_LINKS);
496 TextfeldArray[T_MG_SCHNELL]->SetzeSignal(S_EI_MOUSESPEED);
497 } else {
498 TextfeldArray[T_MG_SEHRSCHNELL]->Positioniere(8.2,6,.71,A_LINKS);
499 TextfeldArray[T_MG_SEHRSCHNELL]->SetzeSignal(S_EI_MOUSESPEED);
500 }
501 if( E_MouseSpeed==MouseSpeed &&
502 E_InvertX==InvertX &&
503 E_InvertY==InvertY) {
504 TextfeldArray[T_ZURUECK]->Positioniere(8,1,1,A_MITTE);
505 TextfeldArray[T_ZURUECK]->SetzeSignal(S_EI_STEUERUNGZURUECK);
506 } else {
507 TextfeldArray[T_UEBERNEHMEN]->Positioniere(12,1,1,A_RECHTS);
508 TextfeldArray[T_UEBERNEHMEN]->SetzeSignal(S_EI_STEUERUNGUEBERNEHMEN);
509 TextfeldArray[T_ABBRECHEN]->Positioniere(4,1,1,A_LINKS);
510 TextfeldArray[T_ABBRECHEN]->SetzeSignal(S_EI_STEUERUNGZURUECK);
511 }
512
513 TextfeldArray[T_HOMEPAGE]->Positioniere(15.9,0,.5,A_RECHTS);
514 TextfeldArray[T_VERSION]->Positioniere(.1,0,.5,A_LINKS);
515 } break;
516
517 case EINSTELLUNGENGRAFIK: {
518 if (E_KugelAufloesung==3 &&
519 E_Texturgroesse==8 &&
520 E_TischTexturgroesse==0 &&
521 E_AnzeigeTexturgroesse==2 &&
522 E_Reflektionen==0 &&
523 E_BildschirmAufloesung==640 &&
524 E_Farbtiefe==16 &&
525 E_Schatten==0 &&
526 E_TischLampen==1 &&
527 E_TexMMM==0 &&
528 E_GrueneLampe==0) {Qualitaet=1;}
529 else if (E_KugelAufloesung==5 &&
530 E_Texturgroesse==4 &&
531 E_TischTexturgroesse==4 &&
532 E_AnzeigeTexturgroesse==2 &&
533 E_Reflektionen==0 &&
534 E_BildschirmAufloesung==640 &&
535 E_Farbtiefe==16 &&
536 E_Schatten==1 &&
537 E_TischLampen==1 &&
538 E_TexMMM==2 &&
539 E_GrueneLampe==0) {Qualitaet=2;}
540 else if (E_KugelAufloesung==7 &&
541 E_Texturgroesse==2 &&
542 E_TischTexturgroesse==2 &&
543 E_AnzeigeTexturgroesse==1 &&
544 E_Reflektionen==0 &&
545 E_BildschirmAufloesung==800 &&
546 E_Farbtiefe==16 &&
547 E_Schatten==1 &&
548 E_TischLampen==2 &&
549 E_TexMMM==3 &&
550 E_GrueneLampe==0) {Qualitaet=3;}
551 else if (E_KugelAufloesung==7 &&
552 E_Texturgroesse==2 &&
553 E_TischTexturgroesse==1 &&
554 E_AnzeigeTexturgroesse==1 &&
555 E_Reflektionen==1 &&
556 E_BildschirmAufloesung==1024 &&
557 E_Farbtiefe==16 &&
558 E_Schatten==1 &&
559 E_TischLampen==2 &&
560 E_TexMMM==7 &&
561 E_GrueneLampe==1) {Qualitaet=4;}
562 else if (E_KugelAufloesung==11 &&
563 E_Texturgroesse==1 &&
564 E_TischTexturgroesse==1 &&
565 E_AnzeigeTexturgroesse==1 &&
566 E_Reflektionen==1 &&
567 E_BildschirmAufloesung==1024 &&
568 E_Farbtiefe==32 &&
569 E_Schatten==1 &&
570 E_TischLampen==3 &&
571 E_TexMMM==7 &&
572 E_GrueneLampe==1) {Qualitaet=5;}
573 else Qualitaet=0;
574
575 menuhintergrund.Positioniere(2,1.7,14,8.5);
576 logo.Positioniere(4,9,12,11);
577 logo.VollSichtbar();
578 TextfeldArray[T_EINSTELLUNGEN]->Positioniere(4,8,1,A_LINKS);
579 TextfeldArray[T_EINSTELLUNGEN]->VollSichtbar();
580 TextfeldArray[T_GRAFIK]->Positioniere(12,8,1,A_RECHTS);
581 TextfeldArray[T_GRAFIK]->VollSichtbar();
582
583 TextfeldArray[T_QUALITAET]->Positioniere(8,7,1,A_RECHTS);
584 TextfeldArray[T_QUALITAET]->SetzeSignal(S_EI_QUALITAET);
585
586 TextfeldArray[T_BALLGEOMETRIE]->Positioniere(8,6.5,.6,A_RECHTS);
587 TextfeldArray[T_BALLGEOMETRIE]->SetzeSignal(S_EI_BALLGEOMETRIE);
588 TextfeldArray[T_BALLTEXTUREN]->Positioniere(8,6.1,.6,A_RECHTS);
589 TextfeldArray[T_BALLTEXTUREN]->SetzeSignal(S_EI_BALLTEXTUREN);
590 TextfeldArray[T_TISCHTEXTUREN]->Positioniere(8,5.7,.6,A_RECHTS);
591 TextfeldArray[T_TISCHTEXTUREN]->SetzeSignal(S_EI_TISCHTEXTUREN);
592 TextfeldArray[T_MENUTEXTUREN]->Positioniere(8,5.3,.6,A_RECHTS);
593 TextfeldArray[T_MENUTEXTUREN]->SetzeSignal(S_EI_ANZEIGETEXTUREN);
594 TextfeldArray[T_REFLEKTIONEN]->Positioniere(8,4.9,.6,A_RECHTS);
595 TextfeldArray[T_REFLEKTIONEN]->SetzeSignal(S_EI_REFLEKTIONEN);
596 TextfeldArray[T_AUFLOESUNG]->Positioniere(8,4.5,.6,A_RECHTS);
597 TextfeldArray[T_AUFLOESUNG]->SetzeSignal(S_EI_AUFLOESUNG);
598 TextfeldArray[T_FARBTIEFE]->Positioniere(8,4.1,.6,A_RECHTS);
599 TextfeldArray[T_FARBTIEFE]->SetzeSignal(S_EI_FARBTIEFE);
600 TextfeldArray[T_SCHATTEN]->Positioniere(8,3.7,.6,A_RECHTS);
601 TextfeldArray[T_SCHATTEN]->SetzeSignal(S_EI_SCHATTEN);
602 TextfeldArray[T_TEXTURINTERPOLATION]->Positioniere(8,3.3,.6,A_RECHTS);
603 TextfeldArray[T_TEXTURINTERPOLATION]->SetzeSignal(S_EI_TEXTURINTERPOLATION);
604 //TextfeldArray[T_AMBIENTESLICHT]->Positioniere(8,2.9,.6,A_RECHTS);
605 //TextfeldArray[T_AMBIENTESLICHT]->SetzeSignal(S_EI_AMBIENTESLICHT);
606 TextfeldArray[T_TISCHLAMPEN]->Positioniere(8,2.9,.6,A_RECHTS);
607 TextfeldArray[T_TISCHLAMPEN]->SetzeSignal(S_EI_TISCHLAMPEN);
608 TextfeldArray[T_TISCHCOLORBLEEDING]->Positioniere(8,2.5,.6,A_RECHTS);
609 TextfeldArray[T_TISCHCOLORBLEEDING]->SetzeSignal(S_EI_GRUENELAMPE);
610 TextfeldArray[T_FRAMERATE]->Positioniere(8,2.1,.6,A_RECHTS);
611 TextfeldArray[T_FRAMERATE]->SetzeSignal(S_EI_FPS);
612
613 //switch (E_AmbientesLicht) {
614 //case 1: {
615 // TextfeldArray[T_AMBIENTESLICHTEIN]->Positioniere(8.2,2.9,.6,A_LINKS);
616 // TextfeldArray[T_AMBIENTESLICHTEIN]->SetzeSignal(S_EI_AMBIENTESLICHT);
617 //} break;
618 //case 0: {
619 // TextfeldArray[T_AMBIENTESLICHTAUS]->Positioniere(8.2,2.9,.6,A_LINKS);
620 // TextfeldArray[T_AMBIENTESLICHTAUS]->SetzeSignal(S_EI_AMBIENTESLICHT);
621 //} break;
622 //}
623
624 switch (E_TischLampen) {
625 case 1: {
626 TextfeldArray[T_TISCHLAMPEN1]->Positioniere(8.2,2.9,.6,A_LINKS);
627 TextfeldArray[T_TISCHLAMPEN1]->SetzeSignal(S_EI_TISCHLAMPEN);
628 } break;
629 case 2: {
630 TextfeldArray[T_TISCHLAMPEN2]->Positioniere(8.2,2.9,.6,A_LINKS);
631 TextfeldArray[T_TISCHLAMPEN2]->SetzeSignal(S_EI_TISCHLAMPEN);
632 } break;
633 case 3: {
634 TextfeldArray[T_TISCHLAMPEN3]->Positioniere(8.2,2.9,.6,A_LINKS);
635 TextfeldArray[T_TISCHLAMPEN3]->SetzeSignal(S_EI_TISCHLAMPEN);
636 } break;
637 }
638
639 switch (E_GrueneLampe) {
640 case 1: {
641 TextfeldArray[T_TISCHCOLORBLEEDINGEIN]->Positioniere(8.2,2.5,.6,A_LINKS);
642 TextfeldArray[T_TISCHCOLORBLEEDINGEIN]->SetzeSignal(S_EI_GRUENELAMPE);
643 } break;
644 case 0: {
645 TextfeldArray[T_TISCHCOLORBLEEDINGAUS]->Positioniere(8.2,2.5,.6,A_LINKS);
646 TextfeldArray[T_TISCHCOLORBLEEDINGAUS]->SetzeSignal(S_EI_GRUENELAMPE);
647 } break;
648 }
649
650 switch (E_ZeigeFPS) {
651 case 1: {
652 TextfeldArray[T_FRAMERATEEIN]->Positioniere(8.2,2.1,.6,A_LINKS);
653 TextfeldArray[T_FRAMERATEEIN]->SetzeSignal(S_EI_FPS);
654 } break;
655 case 0: {
656 TextfeldArray[T_FRAMERATEAUS]->Positioniere(8.2,2.1,.6,A_LINKS);
657 TextfeldArray[T_FRAMERATEAUS]->SetzeSignal(S_EI_FPS);
658 } break;
659 }
660
661 switch (E_Schatten) {
662 case 1: {
663 TextfeldArray[T_S_EIN]->Positioniere(8.2,3.7,.6,A_LINKS);
664 TextfeldArray[T_S_EIN]->SetzeSignal(S_EI_SCHATTEN);
665 } break;
666 case 0: {
667 TextfeldArray[T_S_AUS]->Positioniere(8.2,3.7,.6,A_LINKS);
668 TextfeldArray[T_S_AUS]->SetzeSignal(S_EI_SCHATTEN);
669 } break;
670 }
671
672
673 switch (E_TexMMM) {
674 case 0: {
675 TextfeldArray[T_TI_AUS]->Positioniere(8.2,3.3,.6,A_LINKS);
676 TextfeldArray[T_TI_AUS]->SetzeSignal(S_EI_TEXTURINTERPOLATION);
677 } break;
678 case 2: {
679 TextfeldArray[T_TI_NIEDRIG]->Positioniere(8.2,3.3,.6,A_LINKS);
680 TextfeldArray[T_TI_NIEDRIG]->SetzeSignal(S_EI_TEXTURINTERPOLATION);
681 } break;
682 case 7: {
683 TextfeldArray[T_TI_HOCH]->Positioniere(8.2,3.3,.6,A_LINKS);
684 TextfeldArray[T_TI_HOCH]->SetzeSignal(S_EI_TEXTURINTERPOLATION);
685 } break;
686 default: {
687 TextfeldArray[T_TI_NORMAL]->Positioniere(8.2,3.3,.6,A_LINKS);
688 TextfeldArray[T_TI_NORMAL]->SetzeSignal(S_EI_TEXTURINTERPOLATION);
689 } break;
690 }
691
692 switch (Qualitaet) {
693 case 1: {
694 TextfeldArray[T_Q_SEHRSCHNELL]->Positioniere(8.2,7,1,A_LINKS);
695 TextfeldArray[T_Q_SEHRSCHNELL]->SetzeSignal(S_EI_QUALITAET);
696 }break;
697 case 2: {
698 TextfeldArray[T_Q_SCHNELL]->Positioniere(8.2,7,1,A_LINKS);
699 TextfeldArray[T_Q_SCHNELL]->SetzeSignal(S_EI_QUALITAET);
700 }break;
701 case 3: {
702 TextfeldArray[T_Q_NORMAL]->Positioniere(8.2,7,1,A_LINKS);
703 TextfeldArray[T_Q_NORMAL]->SetzeSignal(S_EI_QUALITAET);
704 }break;
705 case 4: {
706 TextfeldArray[T_Q_HOCH]->Positioniere(8.2,7,1,A_LINKS);
707 TextfeldArray[T_Q_HOCH]->SetzeSignal(S_EI_QUALITAET);
708 }break;
709 case 5: {
710 TextfeldArray[T_Q_SEHRHOCH]->Positioniere(8.2,7,1,A_LINKS);
711 TextfeldArray[T_Q_SEHRHOCH]->SetzeSignal(S_EI_QUALITAET);
712 }break;
713 default: {
714 TextfeldArray[T_Q_BENUTZER]->Positioniere(8.2,7,1,A_LINKS);
715 TextfeldArray[T_Q_BENUTZER]->SetzeSignal(S_EI_QUALITAET);
716 }break;
717 }
718
719 switch (E_BildschirmAufloesung) {
720 case 640: {
721 TextfeldArray[T_AUF_640x480]->Positioniere(8.2,4.5,.6,A_LINKS);
722 TextfeldArray[T_AUF_640x480]->SetzeSignal(S_EI_AUFLOESUNG);
723 }break;
724 case 1024: {
725 TextfeldArray[T_AUF_1024x768]->Positioniere(8.2,4.5,.6,A_LINKS);
726 TextfeldArray[T_AUF_1024x768]->SetzeSignal(S_EI_AUFLOESUNG);
727 }break;
728 case 1280: {
729 TextfeldArray[T_AUF_1280x960]->Positioniere(8.2,4.5,.6,A_LINKS);
730 TextfeldArray[T_AUF_1280x960]->SetzeSignal(S_EI_AUFLOESUNG);
731 }break;
732 case 1600: {
733 TextfeldArray[T_AUF_1600x1200]->Positioniere(8.2,4.5,.6,A_LINKS);
734 TextfeldArray[T_AUF_1600x1200]->SetzeSignal(S_EI_AUFLOESUNG);
735 }break;
736 default: {
737 TextfeldArray[T_AUF_800x600]->Positioniere(8.2,4.5,.6,A_LINKS);
738 TextfeldArray[T_AUF_800x600]->SetzeSignal(S_EI_AUFLOESUNG);
739 }break;
740 }
741
742 switch (E_Reflektionen) {
743 case 1: {
744 TextfeldArray[T_REF_EIN]->Positioniere(8.2,4.9,.6,A_LINKS);
745 TextfeldArray[T_REF_EIN]->SetzeSignal(S_EI_REFLEKTIONEN);
746 }break;
747 default: {
748 TextfeldArray[T_REF_AUS]->Positioniere(8.2,4.9,.6,A_LINKS);
749 TextfeldArray[T_REF_AUS]->SetzeSignal(S_EI_REFLEKTIONEN);
750 }break;
751 }
752
753 switch (E_Farbtiefe) {
754 case 32: {
755 TextfeldArray[T_FT_32]->Positioniere(8.2,4.1,.6,A_LINKS);
756 TextfeldArray[T_FT_32]->SetzeSignal(S_EI_FARBTIEFE);
757 }break;
758 default: {
759 TextfeldArray[T_FT_16]->Positioniere(8.2,4.1,.6,A_LINKS);
760 TextfeldArray[T_FT_16]->SetzeSignal(S_EI_FARBTIEFE);
761 }break;
762 }
763 switch (E_AnzeigeTexturgroesse) {
764 case 1: {
765 TextfeldArray[T_MT_NORMAL]->Positioniere(8.2,5.3,.6,A_LINKS);
766 TextfeldArray[T_MT_NORMAL]->SetzeSignal(S_EI_ANZEIGETEXTUREN);
767 }break;
768 case 2: {
769 TextfeldArray[T_MT_NIEDRIG]->Positioniere(8.2,5.3,.6,A_LINKS);
770 TextfeldArray[T_MT_NIEDRIG]->SetzeSignal(S_EI_ANZEIGETEXTUREN);
771 }break;
772 }
773 switch (E_Texturgroesse) {
774 case 1: {
775 TextfeldArray[T_BT_HOCH]->Positioniere(8.2,6.1,.6,A_LINKS);
776 TextfeldArray[T_BT_HOCH]->SetzeSignal(S_EI_BALLTEXTUREN);
777 }break;
778 case 2: {
779 TextfeldArray[T_BT_NORMAL]->Positioniere(8.2,6.1,.6,A_LINKS);
780 TextfeldArray[T_BT_NORMAL]->SetzeSignal(S_EI_BALLTEXTUREN);
781 }break;
782 case 4: {
783 TextfeldArray[T_BT_NIEDRIG]->Positioniere(8.2,6.1,.6,A_LINKS);
784 TextfeldArray[T_BT_NIEDRIG]->SetzeSignal(S_EI_BALLTEXTUREN);
785 }break;
786 case 8: {
787 TextfeldArray[T_BT_SEHRNIEDRIG]->Positioniere(8.2,6.1,.6,A_LINKS);
788 TextfeldArray[T_BT_SEHRNIEDRIG]->SetzeSignal(S_EI_BALLTEXTUREN);
789 }break;
790 }
791 switch (E_TischTexturgroesse) {
792 case 1: {
793 TextfeldArray[T_TT_HOCH]->Positioniere(8.2,5.7,.6,A_LINKS);
794 TextfeldArray[T_TT_HOCH]->SetzeSignal(S_EI_TISCHTEXTUREN);
795 }break;
796 case 2: {
797 TextfeldArray[T_TT_NORMAL]->Positioniere(8.2,5.7,.6,A_LINKS);
798 TextfeldArray[T_TT_NORMAL]->SetzeSignal(S_EI_TISCHTEXTUREN);
799 }break;
800 case 4: {
801 TextfeldArray[T_TT_NIEDRIG]->Positioniere(8.2,5.7,.6,A_LINKS);
802 TextfeldArray[T_TT_NIEDRIG]->SetzeSignal(S_EI_TISCHTEXTUREN);
803 }break;
804 case 8: {
805 TextfeldArray[T_TT_SEHRNIEDRIG]->Positioniere(8.2,5.7,.6,A_LINKS);
806 TextfeldArray[T_TT_SEHRNIEDRIG]->SetzeSignal(S_EI_TISCHTEXTUREN);
807 }break;
808 case 0: {
809 TextfeldArray[T_TT_AUS]->Positioniere(8.2,5.7,.6,A_LINKS);
810 TextfeldArray[T_TT_AUS]->SetzeSignal(S_EI_TISCHTEXTUREN);
811 }break;
812 }
813
814 switch (E_KugelAufloesung) {
815 case 3: {
816 TextfeldArray[T_BG_SEHRNIEDRIG]->Positioniere(8.2,6.5,.6,A_LINKS);
817 TextfeldArray[T_BG_SEHRNIEDRIG]->SetzeSignal(S_EI_BALLGEOMETRIE);
818 }break;
819 case 5: {
820 TextfeldArray[T_BG_NIEDRIG]->Positioniere(8.2,6.5,.6,A_LINKS);
821 TextfeldArray[T_BG_NIEDRIG]->SetzeSignal(S_EI_BALLGEOMETRIE);
822 }break;
823 case 7: {
824 TextfeldArray[T_BG_NORMAL]->Positioniere(8.2,6.5,.6,A_LINKS);
825 TextfeldArray[T_BG_NORMAL]->SetzeSignal(S_EI_BALLGEOMETRIE);
826 }break;
827 case 11: {
828 TextfeldArray[T_BG_HOCH]->Positioniere(8.2,6.5,.6,A_LINKS);
829 TextfeldArray[T_BG_HOCH]->SetzeSignal(S_EI_BALLGEOMETRIE);
830 }break;
831 }
832
833 if( E_Texturgroesse==Texturgroesse &&
834 E_AnzeigeTexturgroesse==AnzeigeTexturgroesse &&
835 E_TischTexturgroesse==TischTexturgroesse &&
836 E_KugelAufloesung==KugelAufloesung &&
837 E_BildschirmAufloesung==BildschirmAufloesung &&
838 E_Farbtiefe==Farbtiefe &&
839 E_Reflektionen==Reflektionen &&
840 E_Schatten==Schatten &&
841 E_AmbientesLicht==AmbientesLicht &&
842 E_TischLampen==TischLampen &&
843 E_TexMMM==TexMMM &&
844 E_GrueneLampe==GrueneLampe) {
845 TextfeldArray[T_ZURUECK]->Positioniere(8,.7,1,A_MITTE);
846 TextfeldArray[T_ZURUECK]->SetzeSignal(S_EI_GRAFIKZURUECK);
847 } else {
848 TextfeldArray[T_UEBERNEHMEN]->Positioniere(4,0.7,1,A_LINKS);
849 TextfeldArray[T_UEBERNEHMEN]->SetzeSignal(S_EI_GRAFIKUEBERNEHMEN);
850 TextfeldArray[T_ABBRECHEN]->Positioniere(12,0.7,1,A_RECHTS);
851 TextfeldArray[T_ABBRECHEN]->SetzeSignal(S_EI_GRAFIKZURUECK);
852 }
853 TextfeldArray[T_HOMEPAGE]->Positioniere(15.9,0,.5,A_RECHTS);
854 TextfeldArray[T_VERSION]->Positioniere(.1,0,.5,A_LINKS);
855 } break;
856
857 case EINSTELLUNGENGRAFIKHINWEIS: {
858 menuhintergrund.Positioniere(2,3.5,14,8.5);
859 logo.Positioniere(4,9,12,11);
860 logo.VollSichtbar();
861 TextfeldArray[T_HINWEIS]->Positioniere(8,8,1,A_MITTE);
862 TextfeldArray[T_HINWEIS]->VollSichtbar();
863
864 TextfeldArray[T_HINWEIS1]->Positioniere(8,6,.7,A_MITTE);
865 TextfeldArray[T_HINWEIS2]->Positioniere(8,5.5,.7,A_MITTE);
866
867 TextfeldArray[T_OK]->Positioniere(8,1,1,A_MITTE);
868 TextfeldArray[T_OK]->SetzeSignal(S_EI_GRAFIKUEBERNEHMEN);
869
870 TextfeldArray[T_HOMEPAGE]->Positioniere(15.9,0,.5,A_RECHTS);
871 TextfeldArray[T_VERSION]->Positioniere(.1,0,.5,A_LINKS);
872 } break;
873
874 case HILFE: {
875 menuhintergrund.Positioniere(4.5,3.5,11.5,8.5);
876 logo.Positioniere(4,9,12,11);
877 logo.VollSichtbar();
878 TextfeldArray[T_HILFE]->Positioniere(8,8,1,A_MITTE);
879 TextfeldArray[T_HILFE]->VollSichtbar();
880
881 TextfeldArray[T_H_TUTORIAL]->Positioniere(8,6.5,1,A_MITTE);
882 TextfeldArray[T_H_TUTORIAL]->SetzeSignal(S_H_TUTORIAL);
883
884 TextfeldArray[T_H_TASTENBELEGUNGEN]->Positioniere(8,5.5,1,A_MITTE);
885 TextfeldArray[T_H_TASTENBELEGUNGEN]->SetzeSignal(S_H_TASTENBELEGUNGEN);
886
887 TextfeldArray[T_H_BILLARDREGELN]->Positioniere(8,4.5,1,A_MITTE);
888 TextfeldArray[T_H_BILLARDREGELN]->SetzeSignal(S_H_BILLARDREGELN);
889
890 TextfeldArray[T_ZURUECK]->Positioniere(8,1,1,A_MITTE);
891 if (AusSpiel) {
892 TextfeldArray[T_ZURUECK]->SetzeSignal(S_BE_ZURUECK_AS);
893 } else {
894 TextfeldArray[T_ZURUECK]->SetzeSignal(S_BE_ZURUECK);
895 }
896
897 TextfeldArray[T_HOMEPAGE]->Positioniere(15.9,0,.5,A_RECHTS);
898 TextfeldArray[T_VERSION]->Positioniere(.1,0,.5,A_LINKS);
899
900 } break;
901
902 case HILFETASTENBELEGUNGEN: {
903 menuhintergrund.Positioniere(.5,1,15.5,10.5);
904 logo.Positioniere(0,11,4,12);
905 logo.VollSichtbar();
906 TextfeldArray[T_HILFE]->Positioniere(4,11.4,.6,A_LINKS);
907 TextfeldArray[T_HILFE]->VollSichtbar();
908 TextfeldArray[T_H_TASTENBELEGUNGEN]->Positioniere(4,11,.6,A_LINKS);
909 TextfeldArray[T_H_TASTENBELEGUNGEN]->VollSichtbar();
910
911 TextfeldArray[600]->Positioniere(1.25,9.5,.7,A_LINKS);
912 TextfeldArray[601]->Positioniere(1.5,9.166666,.5,A_LINKS);
913 TextfeldArray[602]->Positioniere(1.25,8.5,.7,A_LINKS);
914 TextfeldArray[603]->Positioniere(1.5,8.166666,.5,A_LINKS);
915 TextfeldArray[604]->Positioniere(1.25,7.5,.7,A_LINKS);
916 TextfeldArray[605]->Positioniere(1.5,7.166666,.5,A_LINKS);
917
918 TextfeldArray[606]->Positioniere(1.25,5.5,.7,A_LINKS);
919 TextfeldArray[607]->Positioniere(1.5,5.166666,.5,A_LINKS);
920 TextfeldArray[608]->Positioniere(1.25,4.5,.7,A_LINKS);
921 TextfeldArray[609]->Positioniere(1.5,4.166666,.5,A_LINKS);
922 TextfeldArray[610]->Positioniere(1.25,3.5,.7,A_LINKS);
923 TextfeldArray[611]->Positioniere(1.5,3.166666,.5,A_LINKS);
924 TextfeldArray[612]->Positioniere(1.25,2.5,.7,A_LINKS);
925 TextfeldArray[613]->Positioniere(1.5,2.166666,.5,A_LINKS);
926
927 TextfeldArray[614]->Positioniere(8.25,5.5,.7,A_LINKS);
928 TextfeldArray[615]->Positioniere(8.5,5.166666,.5,A_LINKS);
929 TextfeldArray[616]->Positioniere(8.25,4.5,.7,A_LINKS);
930 TextfeldArray[617]->Positioniere(8.5,4.166666,.5,A_LINKS);
931 TextfeldArray[618]->Positioniere(8.25,3.5,.7,A_LINKS);
932 TextfeldArray[619]->Positioniere(8.5,3.166666,.5,A_LINKS);
933 TextfeldArray[620]->Positioniere(8.25,2.5,.7,A_LINKS);
934 TextfeldArray[621]->Positioniere(8.5,2.166666,.5,A_LINKS);
935
936 TextfeldArray[T_ZURUECK]->Positioniere(8,.1,1,A_MITTE);
937 TextfeldArray[T_ZURUECK]->SetzeSignal(S_H_ZUHILFE);
938 } break;
939
940 case HILFEREGELN1: {
941 menuhintergrund.Positioniere(.5,.7,15.5,11);
942 logo.Positioniere(0,11,4,12);
943 logo.VollSichtbar();
944 TextfeldArray[T_HILFE]->Positioniere(4,11.4,.6,A_LINKS);
945 TextfeldArray[T_HILFE]->VollSichtbar();
946 TextfeldArray[T_H_BILLARDREGELN]->Positioniere(4,11,.6,A_LINKS);
947 TextfeldArray[T_H_BILLARDREGELN]->VollSichtbar();
948
949 TextfeldArray[710]->Positioniere(1,10,1,A_LINKS);
950
951 TextfeldArray[711]->Positioniere(1.25,9.5,.7,A_LINKS);
952 TextfeldArray[712]->Positioniere(1.5,9.166666,.5,A_LINKS);
953 TextfeldArray[713]->Positioniere(1.25,8.5,.7,A_LINKS);
954 TextfeldArray[714]->Positioniere(1.5,8.166666,.5,A_LINKS);
955 TextfeldArray[715]->Positioniere(1.25,7.5,.7,A_LINKS);
956 TextfeldArray[716]->Positioniere(1.5,7.166666,.5,A_LINKS);
957 TextfeldArray[717]->Positioniere(1.25,6.5,.7,A_LINKS);
958 TextfeldArray[718]->Positioniere(1.5,6.166666,.5,A_LINKS);
959 TextfeldArray[719]->Positioniere(1.25,5.5,.7,A_LINKS);
960 TextfeldArray[720]->Positioniere(1.5,5.166666,.5,A_LINKS);
961 TextfeldArray[721]->Positioniere(1.25,4.5,.7,A_LINKS);
962 TextfeldArray[722]->Positioniere(1.5,4.166666,.5,A_LINKS);
963 TextfeldArray[723]->Positioniere(1.25,3.5,.7,A_LINKS);
964 TextfeldArray[724]->Positioniere(1.5,3.166666,.5,A_LINKS);
965 TextfeldArray[725]->Positioniere(1.25,2.5,.7,A_LINKS);
966 TextfeldArray[726]->Positioniere(1.5,2.166666,.5,A_LINKS);
967 TextfeldArray[727]->Positioniere(1.25,1.5,.7,A_LINKS);
968 TextfeldArray[728]->Positioniere(1.5,1.166666,.5,A_LINKS);
969
970 TextfeldArray[T_ZURUECK]->Positioniere(8,0,.7,A_MITTE);
971 TextfeldArray[T_ZURUECK]->SetzeSignal(S_H_ZUHILFE);
972 TextfeldArray[T_H_NAECHSTESEITE]->Positioniere(15.8,0,.7,A_RECHTS);
973 TextfeldArray[T_H_NAECHSTESEITE]->SetzeSignal(S_H_R1_N);
974 //TextfeldArray[T_H_LETZTESEITE]->Positioniere(.2,0,.7,A_LINKS);
975 //TextfeldArray[T_H_LETZTESEITE]->SetzeSignal(S_H_R1_L);
976 } break;
977
978 case HILFEREGELN2: {
979 menuhintergrund.Positioniere(.5,.7,15.5,11);
980 logo.Positioniere(0,11,4,12);
981 logo.VollSichtbar();
982 TextfeldArray[T_HILFE]->Positioniere(4,11.4,.6,A_LINKS);
983 TextfeldArray[T_HILFE]->VollSichtbar();
984 TextfeldArray[T_H_BILLARDREGELN]->Positioniere(4,11,.6,A_LINKS);
985 TextfeldArray[T_H_BILLARDREGELN]->VollSichtbar();
986
987 GLfloat ypos=10;
988 TextfeldArray[740]->Positioniere(1,ypos,1,A_LINKS);
989 ypos-=.7*TextfeldArray[740]->TextfeldHoehe();
990 TextfeldArray[741]->Positioniere(1.25,ypos,.7,A_LINKS);
991 ypos-=.5*TextfeldArray[741]->TextfeldHoehe();
992 TextfeldArray[742]->Positioniere(1.5,ypos,.5,A_LINKS);
993 ypos-=.5*TextfeldArray[742]->TextfeldHoehe()+.5;
994 TextfeldArray[743]->Positioniere(1.25,ypos,.7,A_LINKS);
995 ypos-=.5*TextfeldArray[743]->TextfeldHoehe();
996 TextfeldArray[744]->Positioniere(1.5,ypos,.5,A_LINKS);
997 ypos-=.5*TextfeldArray[744]->TextfeldHoehe()+.5;
998 TextfeldArray[745]->Positioniere(1.25,ypos,.7,A_LINKS);
999 ypos-=.5*TextfeldArray[745]->TextfeldHoehe();
1000 TextfeldArray[746]->Positioniere(1.5,ypos,.5,A_LINKS);
1001 ypos-=.5*TextfeldArray[746]->TextfeldHoehe()+.5;
1002
1003 TextfeldArray[T_ZURUECK]->Positioniere(8,0,.7,A_MITTE);
1004 TextfeldArray[T_ZURUECK]->SetzeSignal(S_H_ZUHILFE);
1005 TextfeldArray[T_H_NAECHSTESEITE]->Positioniere(15.8,0,.7,A_RECHTS);
1006 TextfeldArray[T_H_NAECHSTESEITE]->SetzeSignal(S_H_R2_N);
1007 TextfeldArray[T_H_LETZTESEITE]->Positioniere(.2,0,.7,A_LINKS);
1008 TextfeldArray[T_H_LETZTESEITE]->SetzeSignal(S_H_R2_L);
1009 } break;
1010
1011 case HILFEREGELN3: {
1012 menuhintergrund.Positioniere(.5,.7,15.5,11);
1013 logo.Positioniere(0,11,4,12);
1014 logo.VollSichtbar();
1015 TextfeldArray[T_HILFE]->Positioniere(4,11.4,.6,A_LINKS);
1016 TextfeldArray[T_HILFE]->VollSichtbar();
1017 TextfeldArray[T_H_BILLARDREGELN]->Positioniere(4,11,.6,A_LINKS);
1018 TextfeldArray[T_H_BILLARDREGELN]->VollSichtbar();
1019
1020 GLfloat ypos=10;
1021 TextfeldArray[747]->Positioniere(1,ypos,1,A_LINKS);
1022 ypos-=.7*TextfeldArray[747]->TextfeldHoehe();
1023 TextfeldArray[748]->Positioniere(1.25,ypos,.7,A_LINKS);
1024 ypos-=.5*TextfeldArray[748]->TextfeldHoehe();
1025 TextfeldArray[749]->Positioniere(1.5,ypos,.5,A_LINKS);
1026 ypos-=.5*TextfeldArray[749]->TextfeldHoehe()+.5;
1027 TextfeldArray[750]->Positioniere(1.25,ypos,.7,A_LINKS);
1028 ypos-=.5*TextfeldArray[750]->TextfeldHoehe();
1029 TextfeldArray[751]->Positioniere(1.5,ypos,.5,A_LINKS);
1030 ypos-=.5*TextfeldArray[751]->TextfeldHoehe()+.2;
1031 TextfeldArray[752]->Positioniere(1.5,ypos,.5,A_LINKS);
1032 ypos-=.5*TextfeldArray[752]->TextfeldHoehe()+.2;
1033 TextfeldArray[753]->Positioniere(1.5,ypos,.5,A_LINKS);
1034 ypos-=.5*TextfeldArray[753]->TextfeldHoehe()+.2;
1035 TextfeldArray[754]->Positioniere(1.5,ypos,.5,A_LINKS);
1036 ypos-=.5*TextfeldArray[754]->TextfeldHoehe()+.5;
1037
1038 TextfeldArray[T_ZURUECK]->Positioniere(8,0,.7,A_MITTE);
1039 TextfeldArray[T_ZURUECK]->SetzeSignal(S_H_ZUHILFE);
1040 TextfeldArray[T_H_NAECHSTESEITE]->Positioniere(15.8,0,.7,A_RECHTS);
1041 TextfeldArray[T_H_NAECHSTESEITE]->SetzeSignal(S_H_R3_N);
1042 TextfeldArray[T_H_LETZTESEITE]->Positioniere(.2,0,.7,A_LINKS);
1043 TextfeldArray[T_H_LETZTESEITE]->SetzeSignal(S_H_R3_L);
1044 } break;
1045
1046 case HILFEREGELN4: {
1047 menuhintergrund.Positioniere(.5,.7,15.5,11);
1048 logo.Positioniere(0,11,4,12);
1049 logo.VollSichtbar();
1050 TextfeldArray[T_HILFE]->Positioniere(4,11.4,.6,A_LINKS);
1051 TextfeldArray[T_HILFE]->VollSichtbar();
1052 TextfeldArray[T_H_BILLARDREGELN]->Positioniere(4,11,.6,A_LINKS);
1053 TextfeldArray[T_H_BILLARDREGELN]->VollSichtbar();
1054
1055 GLfloat ypos=10;
1056 TextfeldArray[747]->Positioniere(1,ypos,1,A_LINKS);
1057 ypos-=.7*TextfeldArray[747]->TextfeldHoehe();
1058 TextfeldArray[755]->Positioniere(1.25,ypos,.7,A_LINKS);
1059 ypos-=.5*TextfeldArray[755]->TextfeldHoehe();
1060 TextfeldArray[756]->Positioniere(1.5,ypos,.5,A_LINKS);
1061 ypos-=.5*TextfeldArray[756]->TextfeldHoehe()+.5;
1062 TextfeldArray[757]->Positioniere(1.25,ypos,.7,A_LINKS);
1063 ypos-=.5*TextfeldArray[757]->TextfeldHoehe();
1064 TextfeldArray[758]->Positioniere(1.5,ypos,.5,A_LINKS);
1065 ypos-=.5*TextfeldArray[758]->TextfeldHoehe()+.5;
1066 TextfeldArray[759]->Positioniere(1.25,ypos,.7,A_LINKS);
1067 ypos-=.5*TextfeldArray[759]->TextfeldHoehe();
1068 TextfeldArray[760]->Positioniere(1.5,ypos,.5,A_LINKS);
1069 ypos-=.5*TextfeldArray[760]->TextfeldHoehe()+.5;
1070 TextfeldArray[761]->Positioniere(1.25,ypos,.7,A_LINKS);
1071 ypos-=.5*TextfeldArray[761]->TextfeldHoehe();
1072 TextfeldArray[762]->Positioniere(1.5,ypos,.5,A_LINKS);
1073 ypos-=.5*TextfeldArray[762]->TextfeldHoehe()+.5;
1074
1075 TextfeldArray[T_ZURUECK]->Positioniere(8,0,.7,A_MITTE);
1076 TextfeldArray[T_ZURUECK]->SetzeSignal(S_H_ZUHILFE);
1077 TextfeldArray[T_H_NAECHSTESEITE]->Positioniere(15.8,0,.7,A_RECHTS);
1078 TextfeldArray[T_H_NAECHSTESEITE]->SetzeSignal(S_H_R4_N);
1079 TextfeldArray[T_H_LETZTESEITE]->Positioniere(.2,0,.7,A_LINKS);
1080 TextfeldArray[T_H_LETZTESEITE]->SetzeSignal(S_H_R4_L);
1081 } break;
1082
1083 case HILFEREGELN5: {
1084 menuhintergrund.Positioniere(.5,.7,15.5,11);
1085 logo.Positioniere(0,11,4,12);
1086 logo.VollSichtbar();
1087 TextfeldArray[T_HILFE]->Positioniere(4,11.4,.6,A_LINKS);
1088 TextfeldArray[T_HILFE]->VollSichtbar();
1089 TextfeldArray[T_H_BILLARDREGELN]->Positioniere(4,11,.6,A_LINKS);
1090 TextfeldArray[T_H_BILLARDREGELN]->VollSichtbar();
1091
1092 GLfloat ypos=10;
1093 TextfeldArray[770]->Positioniere(1,ypos,1,A_LINKS);
1094 ypos-=.7*TextfeldArray[770]->TextfeldHoehe();
1095 TextfeldArray[771]->Positioniere(1.25,ypos,.7,A_LINKS);
1096 ypos-=.5*TextfeldArray[771]->TextfeldHoehe();
1097 TextfeldArray[772]->Positioniere(1.5,ypos,.5,A_LINKS);
1098 ypos-=.5*TextfeldArray[772]->TextfeldHoehe()+.5;
1099 TextfeldArray[773]->Positioniere(1.25,ypos,.7,A_LINKS);
1100 ypos-=.5*TextfeldArray[773]->TextfeldHoehe();
1101 TextfeldArray[774]->Positioniere(1.5,ypos,.5,A_LINKS);
1102 ypos-=.5*TextfeldArray[774]->TextfeldHoehe()+.2;
1103 TextfeldArray[775]->Positioniere(1.5,ypos,.5,A_LINKS);
1104 ypos-=.5*TextfeldArray[775]->TextfeldHoehe();
1105
1106
1107 TextfeldArray[T_ZURUECK]->Positioniere(8,0,.7,A_MITTE);
1108 TextfeldArray[T_ZURUECK]->SetzeSignal(S_H_ZUHILFE);
1109 TextfeldArray[T_H_NAECHSTESEITE]->Positioniere(15.8,0,.7,A_RECHTS);
1110 TextfeldArray[T_H_NAECHSTESEITE]->SetzeSignal(S_H_R5_N);
1111 TextfeldArray[T_H_LETZTESEITE]->Positioniere(.2,0,.7,A_LINKS);
1112 TextfeldArray[T_H_LETZTESEITE]->SetzeSignal(S_H_R5_L);
1113 } break;
1114
1115 case HILFEREGELN6: {
1116 menuhintergrund.Positioniere(.5,.7,15.5,11);
1117 logo.Positioniere(0,11,4,12);
1118 logo.VollSichtbar();
1119 TextfeldArray[T_HILFE]->Positioniere(4,11.4,.6,A_LINKS);
1120 TextfeldArray[T_HILFE]->VollSichtbar();
1121 TextfeldArray[T_H_BILLARDREGELN]->Positioniere(4,11,.6,A_LINKS);
1122 TextfeldArray[T_H_BILLARDREGELN]->VollSichtbar();
1123
1124 GLfloat ypos=10;
1125 TextfeldArray[770]->Positioniere(1,ypos,1,A_LINKS);
1126 ypos-=.7*TextfeldArray[770]->TextfeldHoehe();
1127 TextfeldArray[776]->Positioniere(1.25,ypos,.7,A_LINKS);
1128 ypos-=.5*TextfeldArray[776]->TextfeldHoehe();
1129 TextfeldArray[777]->Positioniere(1.5,ypos,.5,A_LINKS);
1130 ypos-=.5*TextfeldArray[777]->TextfeldHoehe()+.5;
1131 TextfeldArray[778]->Positioniere(1.25,ypos,.7,A_LINKS);
1132 ypos-=.5*TextfeldArray[778]->TextfeldHoehe();
1133 TextfeldArray[779]->Positioniere(1.5,ypos,.5,A_LINKS);
1134 ypos-=.5*TextfeldArray[779]->TextfeldHoehe()+.5;
1135 TextfeldArray[780]->Positioniere(1.25,ypos,.7,A_LINKS);
1136 ypos-=.5*TextfeldArray[780]->TextfeldHoehe();
1137 TextfeldArray[781]->Positioniere(1.5,ypos,.5,A_LINKS);
1138 ypos-=.5*TextfeldArray[781]->TextfeldHoehe()+.5;
1139 TextfeldArray[782]->Positioniere(1.25,ypos,.7,A_LINKS);
1140 ypos-=.5*TextfeldArray[782]->TextfeldHoehe();
1141 TextfeldArray[783]->Positioniere(1.5,ypos,.5,A_LINKS);
1142 ypos-=.5*TextfeldArray[783]->TextfeldHoehe()+.5;
1143
1144 TextfeldArray[T_ZURUECK]->Positioniere(8,0,.7,A_MITTE);
1145 TextfeldArray[T_ZURUECK]->SetzeSignal(S_H_ZUHILFE);
1146 //TextfeldArray[T_H_NAECHSTESEITE]->Positioniere(15.8,0,.7,A_RECHTS);
1147 //TextfeldArray[T_H_NAECHSTESEITE]->SetzeSignal(S_H_R5_N);
1148 TextfeldArray[T_H_LETZTESEITE]->Positioniere(.2,0,.7,A_LINKS);
1149 TextfeldArray[T_H_LETZTESEITE]->SetzeSignal(S_H_R6_L);
1150 } break;
1151
1152 case BEENDEN: {
1153 menuhintergrund.Positioniere(4.5,4.5,11.5,8.5);
1154 logo.Positioniere(4,9,12,11);
1155 logo.VollSichtbar();
1156 TextfeldArray[T_BEENDEN]->Positioniere(8,8,1,A_MITTE);
1157 TextfeldArray[T_BEENDEN]->VollSichtbar();
1158 TextfeldArray[T_JABEENDEN]->Positioniere(8,6,1,A_MITTE);
1159 TextfeldArray[T_JABEENDEN]->SetzeSignal(S_BE_JABEENDEN);
1160 TextfeldArray[T_ZURUECK]->Positioniere(8,1,1,A_MITTE);
1161 if (AusSpiel) {
1162 TextfeldArray[T_ZURUECK]->SetzeSignal(S_BE_ZURUECK_AS);
1163 } else {
1164 TextfeldArray[T_ZURUECK]->SetzeSignal(S_BE_ZURUECK);
1165 }
1166
1167 TextfeldArray[T_HOMEPAGE]->Positioniere(15.9,0,.5,A_RECHTS);
1168 TextfeldArray[T_VERSION]->Positioniere(.1,0,.5,A_LINKS);
1169
1170 } break;
1171
1172 case AUSSPIEL: {
1173 menuhintergrund.Positioniere(3.5,0.5,12.5,8.5);
1174 logo.Positioniere(4,9,12,11);
1175 logo.VollSichtbar();
1176 TextfeldArray[T_WEITERSPIELEN]->Positioniere(8,7,1,A_MITTE);
1177 TextfeldArray[T_WEITERSPIELEN]->SetzeSignal(S_AS_WEITERSPIELEN);
1178 TextfeldArray[T_HILFE]->Positioniere(8,5.5,1,A_MITTE);
1179 TextfeldArray[T_HILFE]->SetzeSignal(S_AS_HILFE);
1180 TextfeldArray[T_TISCHVERLASSEN]->Positioniere(8,4,1,A_MITTE);
1181 TextfeldArray[T_TISCHVERLASSEN]->SetzeSignal(S_AS_HAUPTMENU);
1182 TextfeldArray[T_EINSTELLUNGEN]->Positioniere(8,2.5,1,A_MITTE);
1183 TextfeldArray[T_EINSTELLUNGEN]->SetzeSignal(S_AS_EINSTELLUNGEN);
1184 TextfeldArray[T_BEENDEN]->Positioniere(8,1,1,A_MITTE);
1185 TextfeldArray[T_BEENDEN]->SetzeSignal(S_AS_BEENDEN);
1186
1187 TextfeldArray[T_HOMEPAGE]->Positioniere(15.9,0,.5,A_RECHTS);
1188 TextfeldArray[T_VERSION]->Positioniere(.1,0,.5,A_LINKS);
1189
1190 } break;
1191
1192 case SPIEL: {
1193 // menuhintergrund.Positioniere(0,11,16,12);
1194
1195 if (SpielModus==TRAININGSSPIEL) {
1196 logo.Positioniere(0,11,4,12);
1197 } else if (SpielModus==TUTORIAL) {
1198 logo.Positioniere(12,0,16,1);
1199 } else {
1200 logo.Positioniere(6,11,10,12);
1201 }
1202 logo.SetzeSignal(S_SP_LOGO);
1203
1204 switch (SpielModus) {
1205 case TUTORIAL: {
1206 GLfloat posy=11.5;
1207 GLint Bereich=0;
1208 //TextfeldArray[T_H_TUTORIAL]->Positioniere(15.75,0,1,A_RECHTS);//
1209 switch (StateMaschin) {
1210 case BETRACHTEN: {
1211 if (AllerersterStoss)
1212 Bereich=640;
1213 else
1214 Bereich=690;
1215 } break;
1216 case ZIELEN: {
1217 Bereich=650;
1218 } break;
1219 case AUSHOLEN: {
1220 Bereich=660;
1221 } break;
1222 case STOSS: {
1223 Bereich=670;
1224 } break;
1225 case WEISSNEU: {
1226 Bereich=680;
1227 } break;
1228 }
1229 for (GLint i=Bereich;i<Bereich+10;i++) {
1230 if (TextfeldArray[i]) {
1231 TextfeldArray[i]->Positioniere(0.2,posy,.5,A_LINKS);
1232 TextfeldArray[i]->VollSichtbar();
1233 posy-=.5*TextfeldArray[i]->TextfeldHoehe()+.2;
1234 }
1235 }
1236 menuhintergrund.Positioniere(0,posy+.5,16,12);
1237 } break;
1238
1239 case TRAININGSSPIEL: {
1240 TextfeldArray[T_TRAINING]->Positioniere(15.75,0,1,A_RECHTS);//
1241 TextfeldArray[T_NEUEACHTBALLAUFSTELLUNG]->Positioniere(15.75,11.5,.5,A_RECHTS);
1242 TextfeldArray[T_NEUEACHTBALLAUFSTELLUNG]->SetzeSignal(S_SP_NEUEACHTBALLAUFSTELLUNG);
1243 TextfeldArray[T_NEUENEUNBALLAUFSTELLUNG]->Positioniere(15.75,11.2,.5,A_RECHTS);
1244 TextfeldArray[T_NEUENEUNBALLAUFSTELLUNG]->SetzeSignal(S_SP_NEUENEUNBALLAUFSTELLUNG);
1245 } break;
1246 case ZWEISPIELERSPIEL: {
1247 TextfeldArray[T_ZWEISPIELER]->Positioniere(15.75,0,1,A_RECHTS);//12,11,16,12);
1248 if (Schiedsrichter.FrageNachSpielerAmStoss()==0) {
1249 TextfeldArray[T_SPIELER1NAME]->Positioniere(0.2,11,1,A_LINKS);
1250 TextfeldArray[T_SPIELER2NAME]->Positioniere(15.9,11.5,.5,A_RECHTS);
1251 if (Spiel==ACHTBALL) {
1252 if (Schiedsrichter.FrageNachGruppenVerteilung()==1) {
1253 volle.Positioniere(0.2,10,1.2,11);
1254 halbe.Positioniere(15.4,11,15.9,11.5);
1255 }
1256 if (Schiedsrichter.FrageNachGruppenVerteilung()==2) {
1257 halbe.Positioniere(0.2,10,1.2,11);
1258 volle.Positioniere(15.4,11,15.9,11.5);
1259 }
1260 }
1261 if (Spiel==NEUNBALL) {
1262 if (Schiedsrichter.FrageNachFouls(0)==1) {
1263 TextfeldArray[T_ZUSATZTEXTLINKS]->SetzeText("1 Foul");
1264 TextfeldArray[T_ZUSATZTEXTLINKS]->Positioniere(.2,10,1,A_LINKS);
1265 }
1266 if (Schiedsrichter.FrageNachFouls(0)==2) {
1267 TextfeldArray[T_ZUSATZTEXTLINKS]->SetzeText("2 Fouls");
1268 TextfeldArray[T_ZUSATZTEXTLINKS]->Positioniere(.2,10,1,A_LINKS);
1269 }
1270 if (Schiedsrichter.FrageNachFouls(0)==3) {
1271 TextfeldArray[T_ZUSATZTEXTLINKS]->SetzeText("3 Fouls");
1272 TextfeldArray[T_ZUSATZTEXTLINKS]->Positioniere(.2,10,1,A_LINKS);
1273 }
1274 if (Schiedsrichter.FrageNachFouls(1)==1) {
1275 TextfeldArray[T_ZUSATZTEXTRECHTS]->SetzeText("1 Foul");
1276 TextfeldArray[T_ZUSATZTEXTRECHTS]->Positioniere(15.9,11,.5,A_RECHTS);
1277 }
1278 if (Schiedsrichter.FrageNachFouls(1)==2) {
1279 TextfeldArray[T_ZUSATZTEXTRECHTS]->SetzeText("2 Fouls");
1280 TextfeldArray[T_ZUSATZTEXTRECHTS]->Positioniere(15.9,11,.5,A_RECHTS);
1281 }
1282 if (Schiedsrichter.FrageNachFouls(1)==3) {
1283 TextfeldArray[T_ZUSATZTEXTRECHTS]->SetzeText("3 Fouls");
1284 TextfeldArray[T_ZUSATZTEXTRECHTS]->Positioniere(15.9,11,.5,A_RECHTS);
1285 }
1286 }
1287 } else {
1288 TextfeldArray[T_SPIELER1NAME]->Positioniere(0.1,11.5,.5,A_LINKS);
1289 TextfeldArray[T_SPIELER2NAME]->Positioniere(15.8,11,1,A_RECHTS);
1290 if (Spiel==ACHTBALL) {
1291 if (Schiedsrichter.FrageNachGruppenVerteilung()==1) {
1292 volle.Positioniere(0.1,11,.5,11.5);
1293 halbe.Positioniere(14.8,10,15.8,11);
1294 }
1295 if (Schiedsrichter.FrageNachGruppenVerteilung()==2) {
1296 halbe.Positioniere(0.1,11,.5,11.5);
1297 volle.Positioniere(14.8,10,15.8,11);
1298 }
1299 }
1300 if (Spiel==NEUNBALL) {
1301 if (Schiedsrichter.FrageNachFouls(0)==1) {
1302 TextfeldArray[T_ZUSATZTEXTLINKS]->SetzeText("1 Foul");
1303 TextfeldArray[T_ZUSATZTEXTLINKS]->Positioniere(.1,11,.5,A_LINKS);
1304 }
1305 if (Schiedsrichter.FrageNachFouls(0)==2) {
1306 TextfeldArray[T_ZUSATZTEXTLINKS]->SetzeText("2 Fouls");
1307 TextfeldArray[T_ZUSATZTEXTLINKS]->Positioniere(.1,11,.5,A_LINKS);
1308 }
1309 if (Schiedsrichter.FrageNachFouls(0)==3) {
1310 TextfeldArray[T_ZUSATZTEXTLINKS]->SetzeText("3 Fouls");
1311 TextfeldArray[T_ZUSATZTEXTLINKS]->Positioniere(.1,11,.5,A_LINKS);
1312 }
1313 if (Schiedsrichter.FrageNachFouls(1)==1) {
1314 TextfeldArray[T_ZUSATZTEXTRECHTS]->SetzeText("1 Foul");
1315 TextfeldArray[T_ZUSATZTEXTRECHTS]->Positioniere(15.8,10,1,A_RECHTS);
1316 }
1317 if (Schiedsrichter.FrageNachFouls(1)==2) {
1318 TextfeldArray[T_ZUSATZTEXTRECHTS]->SetzeText("2 Fouls");
1319 TextfeldArray[T_ZUSATZTEXTRECHTS]->Positioniere(15.8,10,1,A_RECHTS);
1320 }
1321 if (Schiedsrichter.FrageNachFouls(1)==3) {
1322 TextfeldArray[T_ZUSATZTEXTRECHTS]->SetzeText("3 Fouls");
1323 TextfeldArray[T_ZUSATZTEXTRECHTS]->Positioniere(15.8,10,1,A_RECHTS);
1324 }
1325 }
1326 }
1327 } break;
1328
1329 /*
1330 case NETZWERKSPIEL: {
1331 netzwerkspiel.Positioniere(12,0,16,1);//12,11,16,12);
1332 if (Schiedsrichter.FrageNachSpielerAmStoss()==0) {
1333 spieler1.Positioniere(0,11,4,12);
1334 spieler2.Positioniere(14,11.25,16,11.75);
1335 } else {
1336 spieler1.Positioniere(0,11.25,2,11.75);
1337 spieler2.Positioniere(12,11,16,12);
1338 }
1339 } break;
1340 */
1341 }
1342
1343
1344 switch (StateMaschin) {
1345 case BETRACHTEN: {
1346 TextfeldArray[T_BETRACHTEN]->Positioniere(0.25,0,1,A_LINKS);
1347 } break;
1348 case ZIELEN: {
1349 TextfeldArray[T_ZIELEN]->Positioniere(0.25,0,1,A_LINKS);
1350 } break;
1351 case AUSHOLEN: {
1352 TextfeldArray[T_AUSHOLEN]->Positioniere(0.25,0,1,A_LINKS);
1353 } break;
1354 case STOSS: {
1355 TextfeldArray[T_STOSS]->Positioniere(0.25,0,1,A_LINKS);
1356 } break;
1357 case WEISSNEU: {
1358 TextfeldArray[T_WEISSENEUSETZEN]->Positioniere(0.25,0,1,A_LINKS);
1359 } break;
1360 case SCHIEDSRICHTER: {
1361 TextfeldArray[T_STOSS]->Positioniere(0.25,0,1,A_LINKS);
1362 if (Foul) {
1363 TextfeldArray[T_FOUL]->Positioniere(8,9,1.5,A_MITTE);
1364 if (Schiedsrichter.FrageNachBegruendung())
1365 TextfeldArray[Schiedsrichter.FrageNachBegruendung()]->Positioniere(8,8.5,.75,A_MITTE);
1366 }
1367 if (!Spieler1Gewonnen && !Spieler2Gewonnen) {
1368 TextfeldArray[T_ISTAMTISCH]->Positioniere(8,5,1,A_MITTE);
1369 if (Schiedsrichter.FrageNachSpielerAmStoss()==0) {
1370 TextfeldArray[T_SPIELER1NAME]->Positioniere(8,6,1.5,A_MITTE);
1371 TextfeldArray[T_SPIELER1NAME]->VollSichtbar();
1372 } else {
1373 TextfeldArray[T_SPIELER2NAME]->Positioniere(8,6,1.5,A_MITTE);
1374 TextfeldArray[T_SPIELER2NAME]->VollSichtbar();
1375 }
1376 if (!NeuAufbauenOderWeiterspielen &&
1377 !NeuAufbauenOderAchtEinsetzen) {
1378 if (LageVerbesserungKopffeld) {
1379 TextfeldArray[T_IMKOPFFELD]->Positioniere(8,3,1,A_MITTE);
1380 }
1381 if (LageVerbesserung|LageVerbesserungKopffeld) {
1382 TextfeldArray[T_UNDHATLAGEVERBESSERUNG]->Positioniere(8,4,1,A_MITTE);
1383 }
1384 } else if (NeuAufbauenOderAchtEinsetzen) {
1385 MenuGesperrt=1;
1386 if (Foul) {
1387 TextfeldArray[T_FOUL]->Positioniere(8,9,1.5,A_MITTE);
1388 if (Schiedsrichter.FrageNachBegruendung())
1389 TextfeldArray[Schiedsrichter.FrageNachBegruendung()]->Positioniere(8,8.5,.75,A_MITTE);
1390 }
1391 TextfeldArray[T_ISTAMTISCH]->Positioniere(8,6,1,A_MITTE);
1392 if (Schiedsrichter.FrageNachSpielerAmStoss()==0) {
1393 TextfeldArray[T_SPIELER1NAME]->Positioniere(8,7,1.5,A_MITTE);
1394 TextfeldArray[T_SPIELER1NAME]->VollSichtbar();
1395 } else {
1396 TextfeldArray[T_SPIELER2NAME]->Positioniere(8,7,1.5,A_MITTE);
1397 TextfeldArray[T_SPIELER2NAME]->VollSichtbar();
1398 }
1399 TextfeldArray[T_WOLLENSIE]->Positioniere(8,4,1,A_MITTE);
1400 TextfeldArray[T_NEUAUFBAUEN]->Positioniere(5.5,2.5,1,A_MITTE);
1401 TextfeldArray[T_NEUAUFBAUEN]->SetzeSignal(S_SP_NEUAUFBAUEN);
1402 TextfeldArray[T_DIEACHTEINSETZEN]->Positioniere(10.5,2.5,1,A_MITTE);
1403 TextfeldArray[T_DIEACHTEINSETZEN]->SetzeSignal(S_SP_ACHTEINSETZEN);
1404 } else if (NeuAufbauenOderWeiterspielen) {
1405 MenuGesperrt=1;
1406 if (Foul) {
1407 TextfeldArray[T_FOUL]->Positioniere(8,9,1.5,A_MITTE);
1408 if (Schiedsrichter.FrageNachBegruendung())
1409 TextfeldArray[Schiedsrichter.FrageNachBegruendung()]->Positioniere(8,8.5,.75,A_MITTE);
1410 }
1411 TextfeldArray[T_ISTAMTISCH]->Positioniere(8,6,1,A_MITTE);
1412 if (Schiedsrichter.FrageNachSpielerAmStoss()==0) {
1413 TextfeldArray[T_SPIELER1NAME]->Positioniere(8,7,1.5,A_MITTE);
1414 TextfeldArray[T_SPIELER1NAME]->VollSichtbar();
1415 } else {
1416 TextfeldArray[T_SPIELER2NAME]->Positioniere(8,7,1.5,A_MITTE);
1417 TextfeldArray[T_SPIELER2NAME]->VollSichtbar();
1418 }
1419 TextfeldArray[T_WOLLENSIE]->Positioniere(8,4,1,A_MITTE);
1420 TextfeldArray[T_NEUAUFBAUEN]->Positioniere(5.5,2.5,1,A_MITTE);
1421 TextfeldArray[T_NEUAUFBAUEN]->SetzeSignal(S_SP_NEUAUFBAUEN);
1422 TextfeldArray[T_WEITERSPIELEN]->Positioniere(10.5,2.5,1,A_MITTE);
1423 TextfeldArray[T_WEITERSPIELEN]->SetzeSignal(S_SP_WEITERSPIELEN);
1424 }
1425 }
1426 if (Spieler1Gewonnen||Spieler2Gewonnen) {
1427 MenuGesperrt=1;
1428 TextfeldArray[T_HATGEWONNEN]->Positioniere(8,5,1,A_MITTE);
1429
1430 TextfeldArray[T_NEUESSPIEL]->Positioniere(5.5,3,1,A_MITTE);
1431 TextfeldArray[T_NEUESSPIEL]->SetzeSignal(S_SP_NEUESSPIEL);
1432 TextfeldArray[T_TISCHVERLASSEN]->Positioniere(10.5,3,1,A_MITTE);
1433 TextfeldArray[T_TISCHVERLASSEN]->SetzeSignal(S_SP_HAUPTMENU);
1434
1435 if (Spieler1Gewonnen) {
1436 TextfeldArray[T_SPIELER1NAME]->Positioniere(8,6,1.5,A_MITTE);
1437 TextfeldArray[T_SPIELER1NAME]->VollSichtbar();
1438 }
1439 if (Spieler2Gewonnen) {
1440 TextfeldArray[T_SPIELER2NAME]->Positioniere(8,6,1.5,A_MITTE);
1441 TextfeldArray[T_SPIELER2NAME]->VollSichtbar();
1442 }
1443 }
1444 } break;
1445 }
1446
1447 GLint i;
1448 if (Spiel==ACHTBALL) {
1449 for (i=0;i<8;i++) {
1450 if (!KugelnVersenkt[i]&&KugelnImSpiel[i]) {
1451 ball[i].Positioniere(6+.5*i,.5,6+.5*(i+1),1);
1452 ball[i].SetzeSignal(S_SP_BALL+i);
1453 }
1454 }
1455 for (i=8;i<16;i++) {
1456 if (!KugelnVersenkt[i]&&KugelnImSpiel[i]) {
1457 ball[i].Positioniere(6+.5*(i-8),0,6+.5*(i-7),.5);
1458 ball[i].SetzeSignal(S_SP_BALL+i);
1459 }
1460 }
1461 } else {
1462 for (i=0;i<5;i++) {
1463 if (!KugelnVersenkt[i]&&KugelnImSpiel[i]) {
1464 ball[i].Positioniere(6.75+.5*i,.5,6.75+.5*(i+1),1);
1465 ball[i].SetzeSignal(S_SP_BALL+i);
1466 }
1467 }
1468 for (i=5;i<10;i++) {
1469 if (!KugelnVersenkt[i]&&KugelnImSpiel[i]) {
1470 ball[i].Positioniere(6.75+.5*(i-5),0,6.75+.5*(i-4),.5);
1471 ball[i].SetzeSignal(S_SP_BALL+i);
1472 }
1473 }
1474 }
1475 } break;
1476
1477 }
1478 StarteAnimation();
1479 }
1480
SignalAusfuehrung(GLint Signal)1481 void Menu::SignalAusfuehrung(GLint Signal) {
1482 DelayAusgleich=1;
1483 switch (Signal) {
1484 case S_LOGO: {
1485 SetzeMenuZustand(STARTBILDSCHIRM);
1486 } break;
1487 case S_HM_TRAINING: {
1488 SetzeMenuZustand(TRAINING);
1489 } break;
1490 case S_HM_ZWEISPIELER: {
1491 SetzeMenuZustand(ZWEISPIELER);
1492 } break;
1493 case S_HM_NETZWERKSPIEL: {
1494 SetzeMenuZustand(NETZWERKHAUPT);
1495 } break;
1496 case S_HM_EINSTELLUNGEN: {
1497 AusSpiel=0;
1498 SetzeMenuZustand(EINSTELLUNGEN);
1499 } break;
1500 case S_HM_HILFE: {
1501 AusSpiel=0;
1502 SetzeMenuZustand(HILFE);
1503 } break;
1504 case S_HM_BEENDEN: {
1505 AusSpiel=0;
1506 SetzeMenuZustand(BEENDEN);
1507 } break;
1508 case S_TR_ACHTBALL: {
1509 Foul=0;
1510 LageVerbesserungKopffeld=1;
1511 LageVerbesserung=0;
1512 NeuAufbauenOderWeiterspielen=0;
1513 NeuAufbauenOderAchtEinsetzen=0;
1514 Spieler1Gewonnen=0;
1515 Spieler2Gewonnen=0;
1516 MenuGesperrt=0;
1517 SpielModus=TRAININGSSPIEL;
1518 StateMaschin=WEISSNEU;
1519 Spiel=ACHTBALL;
1520 SpielfeldAufbau();
1521 Schiedsrichter.NeuesSpiel(Spiel);
1522 SchiedsrichterEntscheidung=0;
1523 Kamera.ladePosition(4);
1524 SetzeMenuZustand(SPIEL);
1525 } break;
1526 case S_TR_NEUNBALL: {
1527 Foul=0;
1528 LageVerbesserungKopffeld=1;
1529 LageVerbesserung=0;
1530 NeuAufbauenOderWeiterspielen=0;
1531 NeuAufbauenOderAchtEinsetzen=0;
1532 Spieler1Gewonnen=0;
1533 Spieler2Gewonnen=0;
1534 MenuGesperrt=0;
1535 SpielModus=TRAININGSSPIEL;
1536 StateMaschin=WEISSNEU;
1537 Spiel=NEUNBALL;
1538 SpielfeldAufbau();
1539 Schiedsrichter.NeuesSpiel(Spiel);
1540 SchiedsrichterEntscheidung=0;
1541 Kamera.ladePosition(4);
1542 SetzeMenuZustand(SPIEL);
1543 } break;
1544 case S_TR_VIERZEHNPLUSEINS: {
1545 } break;
1546 case S_TR_ZURUECK: {
1547 SetzeMenuZustand(HAUPTMENU);
1548 } break;
1549 case S_ZW_ACHTBALL: {
1550 sprintf(Spieler1,"%s",TextfeldArray[T_SPIELER1NAME]->Text());
1551 sprintf(Spieler2,"%s",TextfeldArray[T_SPIELER2NAME]->Text());
1552 SchreibeKonfiguration();
1553 Foul=0;
1554 LageVerbesserungKopffeld=1;
1555 LageVerbesserung=0;
1556 NeuAufbauenOderWeiterspielen=0;
1557 NeuAufbauenOderAchtEinsetzen=0;
1558 Spieler1Gewonnen=0;
1559 Spieler2Gewonnen=0;
1560 MenuGesperrt=0;
1561 SpielModus=ZWEISPIELERSPIEL;
1562 StateMaschin=SCHIEDSRICHTER;
1563 Spiel=ACHTBALL;
1564 SpielfeldAufbau();
1565 Schiedsrichter.NeuesSpiel(Spiel);
1566 SchiedsrichterEntscheidung=0;
1567 Kamera.ladePosition(4);
1568 SetzeMenuZustand(SPIEL);
1569 } break;
1570 case S_ZW_NEUNBALL: {
1571 sprintf(Spieler1,"%s",TextfeldArray[T_SPIELER1NAME]->Text());
1572 sprintf(Spieler2,"%s",TextfeldArray[T_SPIELER2NAME]->Text());
1573 SchreibeKonfiguration();
1574 Foul=0;
1575 LageVerbesserungKopffeld=1;
1576 LageVerbesserung=0;
1577 NeuAufbauenOderWeiterspielen=0;
1578 NeuAufbauenOderAchtEinsetzen=0;
1579 Spieler1Gewonnen=0;
1580 Spieler2Gewonnen=0;
1581 MenuGesperrt=0;
1582 SpielModus=ZWEISPIELERSPIEL;
1583 StateMaschin=SCHIEDSRICHTER;
1584 Spiel=NEUNBALL;
1585 SpielfeldAufbau();
1586 Schiedsrichter.NeuesSpiel(Spiel);
1587 SchiedsrichterEntscheidung=0;
1588 Kamera.ladePosition(4);
1589 SetzeMenuZustand(SPIEL);
1590 } break;
1591 case S_ZW_VIERZEHNPLUSEINS: {
1592 } break;
1593 case S_ZW_ZURUECK: {
1594 SetzeMenuZustand(HAUPTMENU);
1595 } break;
1596 case S_NE_BEGINNEN: {
1597 SetzeMenuZustand(NETZWERKNEU);
1598 } break;
1599 case S_NE_TEILNEHMEN: {
1600 SetzeMenuZustand(NETZWERKBEITRETEN);
1601 } break;
1602 case S_NE_ZURUECK: {
1603 SetzeMenuZustand(HAUPTMENU);
1604 } break;
1605 case S_NB_ACHTBALL: {
1606 } break;
1607 case S_NB_NEUNBALL: {
1608 } break;
1609 case S_NB_VIERZEHNPLUSEINS: {
1610 } break;
1611 case S_NB_ZURUECK: {
1612 } break;
1613 case S_NT_IPADRESSE: {
1614 } break;
1615 case S_NT_VERBINDEN: {
1616 } break;
1617 case S_NT_ZURUECK: {
1618 } break;
1619 case S_EI_STEUERUNG: {
1620 E_MouseSpeed=MouseSpeed;
1621 E_InvertX=InvertX;
1622 E_InvertY=InvertY;
1623 SetzeMenuZustand(EINSTELLUNGENSTEUERUNG);
1624 } break;
1625 case S_EI_SPRACHE: {
1626 SetzeMenuZustand(SPRACHAUSWAHL);
1627 } break;
1628 case S_EI_GRAFIK: {
1629 E_Texturgroesse=Texturgroesse;
1630 E_AnzeigeTexturgroesse=AnzeigeTexturgroesse;
1631 E_TischTexturgroesse=TischTexturgroesse;
1632 E_KugelAufloesung=KugelAufloesung;
1633 E_BildschirmAufloesung=BildschirmAufloesung;
1634 E_Farbtiefe=Farbtiefe;
1635 E_Reflektionen=Reflektionen;
1636 E_Schatten=Schatten;
1637 E_AmbientesLicht=AmbientesLicht;
1638 E_TischLampen=TischLampen;
1639 E_GrueneLampe=GrueneLampe;
1640 E_ZeigeFPS=ZeigeFPS;
1641 E_TexMMM=TexMMM;
1642 SetzeMenuZustand(EINSTELLUNGENGRAFIK);
1643 } break;
1644 case S_EI_BALLTEXTUREN: {
1645 switch (E_Texturgroesse) {
1646 case 1: E_Texturgroesse=2; break;
1647 case 2: E_Texturgroesse=4; break;
1648 case 4: E_Texturgroesse=8; break;
1649 case 8: E_Texturgroesse=1; break;
1650 }
1651 SetzeMenuZustand(EINSTELLUNGENGRAFIK);
1652 } break;
1653 case S_EI_TISCHTEXTUREN: {
1654 switch (E_TischTexturgroesse) {
1655 case 1: E_TischTexturgroesse=2; break;
1656 case 2: E_TischTexturgroesse=4; break;
1657 case 4: E_TischTexturgroesse=8; break;
1658 case 8: E_TischTexturgroesse=0; break;
1659 case 0: E_TischTexturgroesse=1; break;
1660 default: E_TischTexturgroesse=4; break;
1661 }
1662 SetzeMenuZustand(EINSTELLUNGENGRAFIK);
1663 } break;
1664 case S_EI_ANZEIGETEXTUREN: {
1665 switch (E_AnzeigeTexturgroesse) {
1666 case 1: E_AnzeigeTexturgroesse=2; break;
1667 case 2: E_AnzeigeTexturgroesse=1; break;
1668 default: E_AnzeigeTexturgroesse=1; break;
1669 }
1670 SetzeMenuZustand(EINSTELLUNGENGRAFIK);
1671 } break;
1672 case S_EI_AUFLOESUNG: {
1673 switch (E_BildschirmAufloesung) {
1674 case 640: E_BildschirmAufloesung=1600; break;
1675 case 800: E_BildschirmAufloesung=640; break;
1676 case 1024: E_BildschirmAufloesung=800; break;
1677 case 1280: E_BildschirmAufloesung=1024; break;
1678 case 1600: E_BildschirmAufloesung=1280; break;
1679 default: E_BildschirmAufloesung=800; break;
1680 }
1681 SetzeMenuZustand(EINSTELLUNGENGRAFIK);
1682 } break;
1683 case S_EI_FARBTIEFE: {
1684 switch (E_Farbtiefe) {
1685 case 16: E_Farbtiefe=32; break;
1686 default: E_Farbtiefe=16; break;
1687 }
1688 SetzeMenuZustand(EINSTELLUNGENGRAFIK);
1689 } break;
1690 case S_EI_REFLEKTIONEN: {
1691 switch (E_Reflektionen) {
1692 case 0: E_Reflektionen=1; break;
1693 default: E_Reflektionen=0; break;
1694 }
1695 SetzeMenuZustand(EINSTELLUNGENGRAFIK);
1696 } break;
1697 case S_EI_SCHATTEN: {
1698 switch (E_Schatten) {
1699 case 0: E_Schatten=1; break;
1700 default: E_Schatten=0; break;
1701 }
1702 SetzeMenuZustand(EINSTELLUNGENGRAFIK);
1703 } break;
1704 case S_EI_TEXTURINTERPOLATION: {
1705 switch (E_TexMMM) {
1706 case 0: E_TexMMM=7; break;
1707 case 2: E_TexMMM=0; break;
1708 case 3: E_TexMMM=2; break;
1709 default: E_TexMMM=3; break;
1710 }
1711 SetzeMenuZustand(EINSTELLUNGENGRAFIK);
1712 } break;
1713 case S_EI_AMBIENTESLICHT: {
1714 switch (E_AmbientesLicht) {
1715 case 1: E_AmbientesLicht=0; break;
1716 default: E_AmbientesLicht=1; break;
1717 }
1718 SetzeMenuZustand(EINSTELLUNGENGRAFIK);
1719 } break;
1720 case S_EI_TISCHLAMPEN: {
1721 switch (E_TischLampen) {
1722 case 1: E_TischLampen=2; break;
1723 case 2: E_TischLampen=3; break;
1724 case 3: E_TischLampen=1; break;
1725 default: E_TischLampen=1; break;
1726 }
1727 SetzeMenuZustand(EINSTELLUNGENGRAFIK);
1728 } break;
1729 case S_EI_GRUENELAMPE: {
1730 switch (E_GrueneLampe) {
1731 case 1: E_GrueneLampe=0; break;
1732 default: E_GrueneLampe=1; break;
1733 }
1734 SetzeMenuZustand(EINSTELLUNGENGRAFIK);
1735 } break;
1736 case S_EI_FPS: {
1737 switch (E_ZeigeFPS) {
1738 case 1: ZeigeFPS=E_ZeigeFPS=0; break;
1739 default: ZeigeFPS=E_ZeigeFPS=1; break;
1740 }
1741 SetzeMenuZustand(EINSTELLUNGENGRAFIK);
1742 } break;
1743 case S_EI_BALLGEOMETRIE: {
1744 switch (E_KugelAufloesung) {
1745 case 1: {
1746 E_KugelAufloesung=7;
1747 } break;
1748 case 2: {
1749 E_KugelAufloesung=7;
1750 } break;
1751 case 3: {
1752 E_KugelAufloesung=11;
1753 } break;
1754 case 5: {
1755 E_KugelAufloesung=3;
1756 } break;
1757 case 7: {
1758 E_KugelAufloesung=5;
1759 } break;
1760 case 9: {
1761 E_KugelAufloesung=7;
1762 } break;
1763 case 11: {
1764 E_KugelAufloesung=7;
1765 } break;
1766 default: {
1767 E_KugelAufloesung=7;
1768 } break;
1769 }
1770 SetzeMenuZustand(EINSTELLUNGENGRAFIK);
1771 } break;
1772 case S_EI_MOUSESPEED: {
1773 if (E_MouseSpeed<=.21) {
1774 E_MouseSpeed=.8;
1775 } else if (E_MouseSpeed<=.29) {
1776 E_MouseSpeed=.8;
1777 } else if (E_MouseSpeed<=.41) {
1778 E_MouseSpeed=.28;
1779 } else if (E_MouseSpeed<=.575) {
1780 E_MouseSpeed=.4;
1781 } else {
1782 E_MouseSpeed=.565;
1783 }
1784 SetzeMenuZustand(EINSTELLUNGENSTEUERUNG);
1785 } break;
1786 case S_EI_XINVERT: {
1787 if (E_InvertX) {
1788 E_InvertX=0;
1789 } else {
1790 E_InvertX=1;
1791 }
1792 SetzeMenuZustand(EINSTELLUNGENSTEUERUNG);
1793 } break;
1794 case S_EI_YINVERT: {
1795 if (E_InvertY) {
1796 E_InvertY=0;
1797 } else {
1798 E_InvertY=1;
1799 }
1800 SetzeMenuZustand(EINSTELLUNGENSTEUERUNG);
1801 } break;
1802
1803
1804 case S_EI_QUALITAET: {
1805 switch(Qualitaet) {
1806 case 1: {
1807 E_KugelAufloesung=11;
1808 E_Texturgroesse=1;
1809 E_TischTexturgroesse=1;
1810 E_AnzeigeTexturgroesse=1;
1811 E_Reflektionen=1;
1812 E_BildschirmAufloesung=1024;
1813 E_Farbtiefe=32;
1814 E_Schatten=1;
1815 E_TischLampen=3;
1816 E_GrueneLampe=1;
1817 E_TexMMM=7;
1818 } break;
1819 case 2: {
1820 E_KugelAufloesung=3;
1821 E_Texturgroesse=8;
1822 E_TischTexturgroesse=0;
1823 E_AnzeigeTexturgroesse=2;
1824 E_Reflektionen=0;
1825 E_BildschirmAufloesung=640;
1826 E_Farbtiefe=16;
1827 E_Schatten=0;
1828 E_TischLampen=1;
1829 E_GrueneLampe=0;
1830 E_TexMMM=0;
1831 } break;
1832 case 3: {
1833 E_KugelAufloesung=5;
1834 E_Texturgroesse=4;
1835 E_TischTexturgroesse=4;
1836 E_AnzeigeTexturgroesse=2;
1837 E_Reflektionen=0;
1838 E_BildschirmAufloesung=640;
1839 E_Farbtiefe=16;
1840 E_Schatten=1;
1841 E_TischLampen=1;
1842 E_GrueneLampe=0;
1843 E_TexMMM=2;
1844 } break;
1845 case 4: {
1846 E_KugelAufloesung=7;
1847 E_Texturgroesse=2;
1848 E_TischTexturgroesse=2;
1849 E_AnzeigeTexturgroesse=1;
1850 E_Reflektionen=0;
1851 E_BildschirmAufloesung=800;
1852 E_Farbtiefe=16;
1853 E_Schatten=1;
1854 E_TischLampen=2;
1855 E_GrueneLampe=0;
1856 E_TexMMM=3;
1857 } break;
1858 case 5: {
1859 E_KugelAufloesung=7;
1860 E_Texturgroesse=2;
1861 E_TischTexturgroesse=1;
1862 E_AnzeigeTexturgroesse=1;
1863 E_Reflektionen=1;
1864 E_BildschirmAufloesung=1024;
1865 E_Farbtiefe=16;
1866 E_Schatten=1;
1867 E_TischLampen=2;
1868 E_GrueneLampe=1;
1869 E_TexMMM=7;
1870 } break;
1871 default: {
1872 E_KugelAufloesung=7;
1873 E_Texturgroesse=2;
1874 E_TischTexturgroesse=2;
1875 E_AnzeigeTexturgroesse=1;
1876 E_Reflektionen=0;
1877 E_BildschirmAufloesung=800;
1878 E_Farbtiefe=16;
1879 E_Schatten=1;
1880 E_TischLampen=2;
1881 E_GrueneLampe=0;
1882 E_TexMMM=3;
1883 } break;
1884 }
1885 SetzeMenuZustand(EINSTELLUNGENGRAFIK);
1886 } break;
1887
1888 case S_EI_GRAFIKUEBERNEHMEN: {
1889
1890 GLint TexMMMgeaendert=0;
1891
1892 if (TexMMM!=E_TexMMM) {
1893 TexMMMgeaendert=1;
1894 TexMMM=E_TexMMM;
1895 }
1896
1897 if (Texturgroesse!=E_Texturgroesse ||
1898 KugelAufloesung!=E_KugelAufloesung ||
1899 TexMMMgeaendert ||
1900 Schatten!=E_Schatten) {
1901
1902 initialisiereKugelTabellen(E_KugelAufloesung);
1903
1904 for (GLint j=0;j<16;j++) { // Initialisierung der Baelle + Laden der Texturen
1905 Kugel[j].Initialisiere(j,E_Texturgroesse,E_KugelAufloesung,E_Schatten);
1906 }
1907 }
1908
1909 if (TischTexturgroesse!=E_TischTexturgroesse ||
1910 TexMMMgeaendert){
1911 Tisch.Initialisiere(E_TischTexturgroesse);
1912 }
1913
1914 if (Reflektionen!=E_Reflektionen ||
1915 AmbientesLicht!=E_AmbientesLicht ||
1916 TischLampen!=E_TischLampen ||
1917 GrueneLampe!=E_GrueneLampe) {
1918 Beleuchtung.Initialisiere(E_AmbientesLicht,E_TischLampen,E_GrueneLampe,E_Reflektionen);
1919 }
1920
1921 if (AnzeigeTexturgroesse!=E_AnzeigeTexturgroesse||
1922 TexMMMgeaendert){
1923 Initialisiere(E_AnzeigeTexturgroesse);
1924 }
1925
1926 GLint NeueAufloesung=0;
1927 if (Farbtiefe!=E_Farbtiefe || BildschirmAufloesung!=E_BildschirmAufloesung)
1928 NeueAufloesung=1;
1929
1930 KugelAufloesung=E_KugelAufloesung;
1931 Texturgroesse=E_Texturgroesse;
1932 AnzeigeTexturgroesse=E_AnzeigeTexturgroesse;
1933 TischTexturgroesse=E_TischTexturgroesse;
1934 Reflektionen=E_Reflektionen;
1935 BildschirmAufloesung=E_BildschirmAufloesung;
1936 Farbtiefe=E_Farbtiefe;
1937 Schatten=E_Schatten;
1938 TischTexturgroesse=E_TischTexturgroesse;
1939 AmbientesLicht=E_AmbientesLicht;
1940 TischLampen=E_TischLampen;
1941 GrueneLampe=E_GrueneLampe;
1942 ZeigeFPS=E_ZeigeFPS;
1943
1944 SchreibeKonfiguration();
1945
1946 if (NeueAufloesung)
1947 SetzeMenuZustand(EINSTELLUNGENGRAFIKHINWEIS);
1948 else
1949 SetzeMenuZustand(EINSTELLUNGENGRAFIK);
1950
1951 } break;
1952 case S_EI_GRAFIKZURUECK: {
1953 SetzeMenuZustand(EINSTELLUNGEN);
1954 } break;
1955 case S_EI_STEUERUNGUEBERNEHMEN: {
1956 InvertX=E_InvertX;
1957 InvertY=E_InvertY;
1958 MouseSpeed=E_MouseSpeed;
1959 SchreibeKonfiguration();
1960 SetzeMenuZustand(EINSTELLUNGEN);
1961 } break;
1962 case S_EI_STEUERUNGZURUECK: {
1963 SetzeMenuZustand(EINSTELLUNGEN);
1964 } break;
1965 case S_EI_ZURUECK: {
1966 SetzeMenuZustand(HAUPTMENU);
1967 } break;
1968 case S_EI_ZURUECK_AS: {
1969 SetzeMenuZustand(AUSSPIEL);
1970 } break;
1971 case S_BE_JABEENDEN: {
1972 exit(0);
1973 } break;
1974 case S_BE_ZURUECK: {
1975 SetzeMenuZustand(HAUPTMENU);
1976 } break;
1977 case S_BE_ZURUECK_AS: {
1978 SetzeMenuZustand(AUSSPIEL);
1979 } break;
1980 case S_AS_WEITERSPIELEN: {
1981 SetzeMenuZustand(SPIEL);
1982 } break;
1983 case S_AS_HAUPTMENU: {
1984 AusSpiel=0;
1985 StateMaschin=START;
1986 SetzeMenuZustand(HAUPTMENU);
1987 } break;
1988 case S_AS_HILFE: {
1989 AusSpiel=1;
1990 SetzeMenuZustand(HILFE);
1991 } break;
1992 case S_AS_EINSTELLUNGEN: {
1993 AusSpiel=1;
1994 SetzeMenuZustand(EINSTELLUNGEN);
1995 } break;
1996 case S_AS_BEENDEN: {
1997 AusSpiel=1;
1998 SetzeMenuZustand(BEENDEN);
1999 } break;
2000 case S_SP_LOGO: {
2001 AusSpiel=1;
2002 SetzeMenuZustand(AUSSPIEL);
2003 } break;
2004 case S_SP_BALL+0: {
2005 if (StateMaschin==BETRACHTEN ||
2006 StateMaschin==WEISSNEU) {
2007 Kamera.BlickeAuf3(Kugel[0].Pos_xCM(),Kugel[0].Pos_yCM());
2008 } else if (StateMaschin==STOSS) {
2009 Kamera.Verfolge(0);
2010 }
2011 } break;
2012 case S_SP_BALL+1: {
2013 if (StateMaschin==BETRACHTEN ||
2014 StateMaschin==WEISSNEU) {
2015 Kamera.BlickeAuf3(Kugel[1].Pos_xCM(),Kugel[1].Pos_yCM());
2016 } else if (StateMaschin==STOSS) {
2017 Kamera.Verfolge(1);
2018 }
2019 } break;
2020 case S_SP_BALL+2: {
2021 if (StateMaschin==BETRACHTEN ||
2022 StateMaschin==WEISSNEU) {
2023 Kamera.BlickeAuf3(Kugel[2].Pos_xCM(),Kugel[2].Pos_yCM());
2024 } else if (StateMaschin==STOSS) {
2025 Kamera.Verfolge(2);
2026 }
2027 } break;
2028 case S_SP_BALL+3: {
2029 if (StateMaschin==BETRACHTEN ||
2030 StateMaschin==WEISSNEU) {
2031 Kamera.BlickeAuf3(Kugel[3].Pos_xCM(),Kugel[3].Pos_yCM());
2032 } else if (StateMaschin==STOSS) {
2033 Kamera.Verfolge(3);
2034 }
2035 } break;
2036 case S_SP_BALL+4: {
2037 if (StateMaschin==BETRACHTEN ||
2038 StateMaschin==WEISSNEU) {
2039 Kamera.BlickeAuf3(Kugel[4].Pos_xCM(),Kugel[4].Pos_yCM());
2040 } else if (StateMaschin==STOSS) {
2041 Kamera.Verfolge(4);
2042 }
2043 } break;
2044 case S_SP_BALL+5: {
2045 if (StateMaschin==BETRACHTEN ||
2046 StateMaschin==WEISSNEU) {
2047 Kamera.BlickeAuf3(Kugel[5].Pos_xCM(),Kugel[5].Pos_yCM());
2048 } else if (StateMaschin==STOSS) {
2049 Kamera.Verfolge(5);
2050 }
2051 } break;
2052 case S_SP_BALL+6: {
2053 if (StateMaschin==BETRACHTEN ||
2054 StateMaschin==WEISSNEU) {
2055 Kamera.BlickeAuf3(Kugel[6].Pos_xCM(),Kugel[6].Pos_yCM());
2056 } else if (StateMaschin==STOSS) {
2057 Kamera.Verfolge(6);
2058 }
2059 } break;
2060 case S_SP_BALL+7: {
2061 if (StateMaschin==BETRACHTEN ||
2062 StateMaschin==WEISSNEU) {
2063 Kamera.BlickeAuf3(Kugel[7].Pos_xCM(),Kugel[7].Pos_yCM());
2064 } else if (StateMaschin==STOSS) {
2065 Kamera.Verfolge(7);
2066 }
2067 } break;
2068 case S_SP_BALL+8: {
2069 if (StateMaschin==BETRACHTEN ||
2070 StateMaschin==WEISSNEU) {
2071 Kamera.BlickeAuf3(Kugel[8].Pos_xCM(),Kugel[8].Pos_yCM());
2072 } else if (StateMaschin==STOSS) {
2073 Kamera.Verfolge(8);
2074 }
2075 } break;
2076 case S_SP_BALL+9: {
2077 if (StateMaschin==BETRACHTEN ||
2078 StateMaschin==WEISSNEU) {
2079 Kamera.BlickeAuf3(Kugel[9].Pos_xCM(),Kugel[9].Pos_yCM());
2080 } else if (StateMaschin==STOSS) {
2081 Kamera.Verfolge(9);
2082 }
2083 } break;
2084 case S_SP_BALL+10: {
2085 if (StateMaschin==BETRACHTEN ||
2086 StateMaschin==WEISSNEU) {
2087 Kamera.BlickeAuf3(Kugel[10].Pos_xCM(),Kugel[10].Pos_yCM());
2088 } else if (StateMaschin==STOSS) {
2089 Kamera.Verfolge(10);
2090 }
2091 } break;
2092 case S_SP_BALL+11: {
2093 if (StateMaschin==BETRACHTEN ||
2094 StateMaschin==WEISSNEU) {
2095 Kamera.BlickeAuf3(Kugel[11].Pos_xCM(),Kugel[11].Pos_yCM());
2096 } else if (StateMaschin==STOSS) {
2097 Kamera.Verfolge(11);
2098 }
2099 } break;
2100 case S_SP_BALL+12: {
2101 if (StateMaschin==BETRACHTEN ||
2102 StateMaschin==WEISSNEU) {
2103 Kamera.BlickeAuf3(Kugel[12].Pos_xCM(),Kugel[12].Pos_yCM());
2104 } else if (StateMaschin==STOSS) {
2105 Kamera.Verfolge(12);
2106 }
2107 } break;
2108 case S_SP_BALL+13: {
2109 if (StateMaschin==BETRACHTEN ||
2110 StateMaschin==WEISSNEU) {
2111 Kamera.BlickeAuf3(Kugel[13].Pos_xCM(),Kugel[13].Pos_yCM());
2112 } else if (StateMaschin==STOSS) {
2113 Kamera.Verfolge(13);
2114 }
2115 } break;
2116 case S_SP_BALL+14: {
2117 if (StateMaschin==BETRACHTEN ||
2118 StateMaschin==WEISSNEU) {
2119 Kamera.BlickeAuf3(Kugel[14].Pos_xCM(),Kugel[14].Pos_yCM());
2120 } else if (StateMaschin==STOSS) {
2121 Kamera.Verfolge(14);
2122 }
2123 } break;
2124 case S_SP_BALL+15: {
2125 if (StateMaschin==BETRACHTEN ||
2126 StateMaschin==WEISSNEU) {
2127 Kamera.BlickeAuf3(Kugel[15].Pos_xCM(),Kugel[15].Pos_yCM());
2128 } else if (StateMaschin==STOSS) {
2129 Kamera.Verfolge(15);
2130 }
2131 } break;
2132 case S_SP_WEITERSPIELEN: {
2133 NeuAufbauenOderWeiterspielen=0;
2134 NeuAufbauenOderAchtEinsetzen=0;
2135 MenuGesperrt=0;
2136 NeuerMenuZustand();
2137 } break;
2138 case S_SP_ACHTEINSETZEN: {
2139 NeuAufbauenOderWeiterspielen=0;
2140 NeuAufbauenOderAchtEinsetzen=0;
2141 MenuGesperrt=0;
2142 AchtEinsetzen();
2143 NeuerMenuZustand();
2144 } break;
2145 case S_SP_NEUAUFBAUEN: {
2146 Foul=0;
2147 LageVerbesserungKopffeld=1;
2148 LageVerbesserung=0;
2149 NeuAufbauenOderWeiterspielen=0;
2150 NeuAufbauenOderAchtEinsetzen=0;
2151 Spieler1Gewonnen=0;
2152 Spieler2Gewonnen=0;
2153 MenuGesperrt=0;
2154 StateMaschin=SCHIEDSRICHTER;
2155 GLint Spieler=Schiedsrichter.FrageNachSpielerAmStoss();
2156 GLint Fouls0=Schiedsrichter.FrageNachFouls(0);
2157 GLint Fouls1=Schiedsrichter.FrageNachFouls(1);
2158 Schiedsrichter.NeuesSpiel(Spiel);
2159 //SchiedsrichterEntscheidung=0; nur nicht!
2160 Schiedsrichter.SetzeSpielerAmStoss(Spieler);
2161 Schiedsrichter.SetzeFouls(0,Fouls0);
2162 Schiedsrichter.SetzeFouls(1,Fouls1);
2163 SpielfeldAufbau();
2164 Kamera.ladePosition(4);
2165 NeuerMenuZustand();
2166 } break;
2167 case S_SP_HAUPTMENU:{
2168 AusSpiel=0;
2169 StateMaschin=START;
2170 SetzeMenuZustand(HAUPTMENU);
2171 } break;
2172 case S_SP_NEUESSPIEL:{
2173 Foul=0;
2174 LageVerbesserungKopffeld=1;
2175 LageVerbesserung=0;
2176 NeuAufbauenOderWeiterspielen=0;
2177 NeuAufbauenOderAchtEinsetzen=0;
2178 Spieler1Gewonnen=0;
2179 Spieler2Gewonnen=0;
2180 NeuAufbauenOderWeiterspielen=0;
2181 NeuAufbauenOderAchtEinsetzen=0;
2182 MenuGesperrt=0;
2183 StateMaschin=SCHIEDSRICHTER;
2184 GLint Spieler=Schiedsrichter.FrageNachSpielerAmStoss();
2185 Schiedsrichter.NeuesSpiel(Spiel);
2186 SchiedsrichterEntscheidung=0;
2187 Schiedsrichter.SetzeSpielerAmStoss(1-Spieler);
2188 SpielfeldAufbau();
2189 Kamera.ladePosition(4);
2190 NeuerMenuZustand();
2191 } break;
2192 case S_SP_NEUEACHTBALLAUFSTELLUNG:{
2193 if (StateMaschin==BETRACHTEN||
2194 StateMaschin==WEISSNEU) {
2195 Spiel=ACHTBALL;
2196 SpielfeldAufbau();
2197 }
2198 } break;
2199 case S_SP_NEUENEUNBALLAUFSTELLUNG:{
2200 if (StateMaschin==BETRACHTEN||
2201 StateMaschin==WEISSNEU) {
2202 Spiel=NEUNBALL;
2203 SpielfeldAufbau();
2204 }
2205 } break;
2206 case S_SPIELER1HERHOEREN:{
2207 for (GLint TextfeldNr=0;TextfeldNr<1000;TextfeldNr++) {
2208 if (TextfeldArray[TextfeldNr])
2209 TextfeldArray[TextfeldNr]->Weghoeren();
2210 }
2211 TextfeldArray[T_SPIELER1NAME]->Herhoeren();
2212 } break;
2213 case S_SPIELER2HERHOEREN:{
2214 for (GLint TextfeldNr=0;TextfeldNr<1000;TextfeldNr++) {
2215 if (TextfeldArray[TextfeldNr])
2216 TextfeldArray[TextfeldNr]->Weghoeren();
2217 }
2218 TextfeldArray[T_SPIELER2NAME]->Herhoeren();
2219 } break;
2220 case S_NETZWERKSPIELERHERHOEREN:{
2221 //for (GLint TextfeldNr=0;TextfeldNr<TextfeldAnzahl;TextfeldNr++) {
2222 // TextfeldArray[TextfeldNr]->Weghoeren();
2223 //}
2224 //T_NetzwerkSpielerName.Herhoeren();
2225 } break;
2226 case S_H_TASTENBELEGUNGEN: {
2227 SetzeMenuZustand(HILFETASTENBELEGUNGEN);
2228 } break;
2229 case S_H_BILLARDREGELN: {
2230 SetzeMenuZustand(HILFEREGELN1);
2231 } break;
2232 case S_H_TUTORIAL: {
2233 Foul=0;
2234 LageVerbesserungKopffeld=0;
2235 LageVerbesserung=0;
2236 NeuAufbauenOderWeiterspielen=0;
2237 NeuAufbauenOderAchtEinsetzen=0;
2238 Spieler1Gewonnen=0;
2239 Spieler2Gewonnen=0;
2240 MenuGesperrt=0;
2241 SpielModus=TUTORIAL;
2242 StateMaschin=BETRACHTEN;
2243 Spiel=ACHTBALL;
2244 SpielfeldAufbau();
2245 Schiedsrichter.NeuesSpiel(Spiel);
2246 SchiedsrichterEntscheidung=0;
2247 Kamera.ladePosition(4);
2248 SetzeMenuZustand(SPIEL);
2249 } break;
2250 case S_H_ZUHILFE: {
2251 SetzeMenuZustand(HILFE);
2252 } break;
2253 case S_H_E1_N: {
2254 SetzeMenuZustand(HILFEEINFUEHRUNG2);
2255 } break;
2256 case S_H_E2_N: {
2257 SetzeMenuZustand(HILFEEINFUEHRUNG3);
2258 } break;
2259 case S_H_E2_L: {
2260 SetzeMenuZustand(HILFEEINFUEHRUNG1);
2261 } break;
2262 case S_H_E3_N: {
2263 SetzeMenuZustand(HILFEEINFUEHRUNG4);
2264 } break;
2265 case S_H_E3_L: {
2266 SetzeMenuZustand(HILFEEINFUEHRUNG2);
2267 } break;
2268 case S_H_E4_N: {
2269 SetzeMenuZustand(HILFEEINFUEHRUNG5);
2270 } break;
2271 case S_H_E4_L: {
2272 SetzeMenuZustand(HILFEEINFUEHRUNG3);
2273 } break;
2274 case S_H_E5_N: {
2275 SetzeMenuZustand(HILFEEINFUEHRUNG6);
2276 } break;
2277 case S_H_E5_L: {
2278 SetzeMenuZustand(HILFEEINFUEHRUNG4);
2279 } break;
2280 case S_H_E6_N: {
2281 SetzeMenuZustand(HILFEEINFUEHRUNG7);
2282 } break;
2283 case S_H_E6_L: {
2284 SetzeMenuZustand(HILFEEINFUEHRUNG5);
2285 } break;
2286 case S_H_R1_N: {
2287 SetzeMenuZustand(HILFEREGELN2);
2288 } break;
2289 case S_H_R2_N: {
2290 SetzeMenuZustand(HILFEREGELN3);
2291 } break;
2292 case S_H_R2_L: {
2293 SetzeMenuZustand(HILFEREGELN1);
2294 } break;
2295 case S_H_R3_N: {
2296 SetzeMenuZustand(HILFEREGELN4);
2297 } break;
2298 case S_H_R3_L: {
2299 SetzeMenuZustand(HILFEREGELN2);
2300 } break;
2301 case S_H_R4_N: {
2302 SetzeMenuZustand(HILFEREGELN5);
2303 } break;
2304 case S_H_R4_L: {
2305 SetzeMenuZustand(HILFEREGELN3);
2306 } break;
2307 case S_H_R5_N: {
2308 SetzeMenuZustand(HILFEREGELN6);
2309 } break;
2310 case S_H_R5_L: {
2311 SetzeMenuZustand(HILFEREGELN4);
2312 } break;
2313 case S_H_R6_N: {
2314 SetzeMenuZustand(HILFEREGELN7);
2315 } break;
2316 case S_H_R6_L: {
2317 SetzeMenuZustand(HILFEREGELN5);
2318 } break;
2319
2320 default:{
2321 if (Signal>=900 && Signal<990) {
2322 ladeSprache(Signal);
2323 for (GLint dl=0 ; dl < 1000 ; dl++ ) {
2324 if (!TextfeldArray[dl]) continue;
2325 TextfeldArray[dl]->GeneriereDisplayList();
2326 printf("."); fflush(stdout);
2327 }
2328 if (Sprache) SetzeMenuZustand(EINSTELLUNGEN);
2329 else SignalAusfuehrung(S_H_TUTORIAL);
2330 //SetzeMenuZustand(HAUPTMENU);
2331 Sprache=Signal;
2332 SchreibeKonfiguration();
2333 }
2334 } break;
2335 }
2336 }
2337
KeyboardTaste(unsigned char Taste,int,int)2338 GLint Menu::KeyboardTaste (unsigned char Taste,int,int){
2339
2340 GLint Reaktion=0;
2341 GLint TextfeldNr=0;
2342
2343 while (!Reaktion && TextfeldNr<1000) {
2344 if( TextfeldArray[TextfeldNr] )
2345 Reaktion = TextfeldArray[TextfeldNr]->Zeichen(Taste);
2346
2347 //if (Reaktion) {
2348 // printf("\nReaktion von %i\n",TextfeldNr);
2349 // printf("%s",TextfeldArray[TextfeldNr]->Text());
2350 //}
2351
2352 TextfeldNr++;
2353 }
2354
2355 if (Reaktion) return 1;
2356
2357 if (MenuGesperrt ||
2358 MenuZustand!=SPIEL) {
2359 return 1;
2360 }
2361
2362 //Esc-Sequenzen ;)
2363
2364 switch (MenuZustand) {
2365
2366 case STARTBILDSCHIRM: {
2367 switch (Taste) {
2368 case 27: {
2369 MenuZustand=HAUPTMENU;
2370 NeuerMenuZustand();
2371 return 1;
2372 } break;
2373 }
2374 } break;
2375
2376 case HAUPTMENU:{
2377 switch (Taste) {
2378 case 27: {
2379 MenuZustand=BEENDEN;
2380 NeuerMenuZustand();
2381 return 1;
2382 } break;
2383 }
2384 } break;
2385
2386 case TRAINING:{
2387 switch (Taste) {
2388 case 27: {
2389 MenuZustand=HAUPTMENU;
2390 NeuerMenuZustand();
2391 return 1;
2392 } break;
2393 }
2394 } break;
2395
2396 case ZWEISPIELER:{
2397 switch (Taste) {
2398 case 27: {
2399 MenuZustand=HAUPTMENU;
2400 NeuerMenuZustand();
2401 return 1;
2402 } break;
2403 }
2404 } break;
2405
2406 case NETZWERKHAUPT:{
2407 switch (Taste) {
2408 case 27: {
2409 MenuZustand=HAUPTMENU;
2410 NeuerMenuZustand();
2411 return 1;
2412 } break;
2413 }
2414 } break;
2415
2416 case NETZWERKNEU:{
2417 switch (Taste) {
2418 case 27: {
2419 MenuZustand=NETZWERKHAUPT;
2420 NeuerMenuZustand();
2421 return 1;
2422 } break;
2423 }
2424 } break;
2425
2426 case NETZWERKBEITRETEN:{
2427 switch (Taste) {
2428 case 27: {
2429 MenuZustand=NETZWERKHAUPT;
2430 NeuerMenuZustand();
2431 return 1;
2432 } break;
2433 }
2434 } break;
2435
2436 case BEENDEN:{
2437 switch (Taste) {
2438 case 27: {
2439 MenuZustand=HAUPTMENU;
2440 NeuerMenuZustand();
2441 return 1;
2442 } break;
2443 }
2444 } break;
2445
2446 case AUSSPIEL:{
2447 } break;
2448
2449 case EINSTELLUNGEN:{
2450 } break;
2451
2452 }
2453
2454 return 0;
2455 }
2456
SetzeFPS(GLint fps)2457 void Menu::SetzeFPS(GLint fps) {
2458 char temp[]={0,0,0,0,0,0,0,0,0,0};
2459 sprintf(temp,"%i fps",fps);
2460 TextfeldArray[T_FPS]->SetzeText(temp);
2461 }
2462