Update of /cvsroot/netrek/client/netrekxp/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28867/src Modified Files: newwin.c sound.c Log Message: Added simplified version of sound window for SDL (can toggle sound on or off). Index: newwin.c =================================================================== RCS file: /cvsroot/netrek/client/netrekxp/src/newwin.c,v retrieving revision 1.13 retrieving revision 1.14 diff -u -d -r1.13 -r1.14 --- newwin.c 29 Apr 2006 19:22:38 -0000 1.13 +++ newwin.c 29 Apr 2006 22:48:07 -0000 1.14 @@ -742,7 +742,13 @@ char *progname) { if (newSound) - soundWin = W_MakeMenu("sound", WINSIDE + 20, -BORDER + 10, 40, 1, NULL, 2); + { + soundWin = W_MakeMenu("sound", WINSIDE + 20, -BORDER + 10, 30, + 2, NULL, 2); + W_SetWindowKeyDownHandler(soundWin, sdlsoundaction); + W_SetWindowButtonHandler(soundWin, sdlsoundaction); + W_DefineArrowCursor(soundWin); + } else { soundWin = W_MakeMenu("sound", WINSIDE + 20, -BORDER + 10, 30, Index: sound.c =================================================================== RCS file: /cvsroot/netrek/client/netrekxp/src/sound.c,v retrieving revision 1.9 retrieving revision 1.10 diff -u -d -r1.9 -r1.10 --- sound.c 29 Apr 2006 21:00:43 -0000 1.9 +++ sound.c 29 Apr 2006 22:48:07 -0000 1.10 @@ -158,8 +158,8 @@ sounddir = "./sounds"; } - if (newSound) - { + if (newSound) + { #ifdef DEBUG LineToConsole ("Init_Sound using SDL\n"); #endif @@ -182,6 +182,7 @@ if (Mix_PlayChannel(-1, newsounds[INTRO_WAV], 0) < 0) LineToConsole("Mix_PlayChannel: %s\n", Mix_GetError()); } + sound_toggle = 1; /* Default of 8 channels not enough */ Mix_AllocateChannels(16); } @@ -217,7 +218,7 @@ { int channel; - if (!sound_init) + if (!sound_init || !sound_toggle) return; if ((type >= NUM_WAVES) || (type < 0)) @@ -260,7 +261,7 @@ { int channel; - if (!sound_init) + if (!sound_init || !sound_toggle) return; if ((type >= NUM_WAVES) || (type < 0)) @@ -353,19 +354,21 @@ #define SOUND_INIT MESSAGE_SOUND + 2 #define SOUND_DONE MESSAGE_SOUND + 3 +#define SDL_SOUND_DONE 1 + static void soundrefresh (int i); +static void sdlsoundrefresh (int i); extern void soundwindow (void) { + int i; if (newSound) { - char *buf="All or nothing with SDL sound. Sorry"; - W_WriteText(soundWin, 0, 0, textColor, buf, strlen(buf), 0); + for (i = 0; i <= SDL_SOUND_DONE; i++) + sdlsoundrefresh (i); } else { - int i; - for (i = 0; i <= SOUND_DONE; i++) soundrefresh (i); } @@ -373,6 +376,28 @@ W_MapWindow (soundWin); } + +static void sdlsoundrefresh (int i) +{ + char buf[BUFSIZ]; + + if (i == SOUND_TOGGLE) + { + sprintf (buf, "Sound is turned %s", + (sound_toggle == 1) ? "ON" : "OFF"); + } + else if (i == SDL_SOUND_DONE) + { + strcpy (buf, "Done"); + } + else + { + LineToConsole ("Uh oh, bogus refresh number in sdlsoundrefresh\n"); + } + + W_WriteText (soundWin, 0, i, textColor, buf, strlen (buf), 0); +} + static void soundrefresh (int i) { char buf[BUFSIZ], *flag; @@ -428,7 +453,7 @@ sprintf (buf, "Red alert sound is %s", flag); break; case SHIELD_DOWN_SOUND: - sprintf (buf, "Shield down sound is %s", flag); + sprintf (buf, "Shield down sound is %s", flag); break; case SHIELD_UP_SOUND: sprintf (buf, "Shield up sound is %s", flag); @@ -473,10 +498,27 @@ W_WriteText (soundWin, 0, i, textColor, buf, strlen (buf), 0); } +void sdlsoundaction (W_Event * data) +{ + int i; + + i = data->y; + + if (i == SOUND_TOGGLE) + { + if (sound_init) + sound_toggle = (sound_toggle == 1) ? 0 : 1; + soundrefresh (SOUND_TOGGLE); + } + else + { + sounddone (); + } +} + + void soundaction (W_Event * data) { - if (!newSound) - { int i, j; i = data->y; @@ -530,7 +572,6 @@ { sounddone (); } - } } extern void sounddone (void)