Update of /cvsroot/netrek/client/netrekxp/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv12047/src Modified Files: beeplite.c local.c map.c sound.c Log Message: 2 new sounds for enter/exiting transwarp, and observer support for hearing these as well Fixed beeplite observer bug Fixed up viewbox so map refreshes properly when toggled Index: beeplite.c =================================================================== RCS file: /cvsroot/netrek/client/netrekxp/src/beeplite.c,v retrieving revision 1.6 retrieving revision 1.7 diff -u -d -r1.6 -r1.7 --- beeplite.c 26 Apr 2006 02:04:24 -0000 1.6 +++ beeplite.c 26 Apr 2006 23:18:14 -0000 1.7 @@ -68,7 +68,7 @@ void liteplayer(struct player *j) { - if (!j || (j->p_flags & PFCLOAK)) + if (!j || (j->p_flags & PFCLOAK) || (j->p_flags & PFOBSERV)) return; redrawPlayer[j->p_no] = 1; Index: local.c =================================================================== RCS file: /cvsroot/netrek/client/netrekxp/src/local.c,v retrieving revision 1.10 retrieving revision 1.11 diff -u -d -r1.10 -r1.11 --- local.c 26 Apr 2006 15:54:04 -0000 1.10 +++ local.c 26 Apr 2006 23:18:14 -0000 1.11 @@ -56,6 +56,8 @@ static int new_other_plasma_dist = 0; static int other_plasma_angle = 0; static int old_pt_fuse = 0; +static int warpchange = 0; +static unsigned int twarpflag = 0; #endif /* Background Stars Definitions */ @@ -467,6 +469,50 @@ if ((j->p_status != PALIVE) && (j->p_status != PEXPLODE)) continue; +/* Twarp sounds put up here so observers can hear them */ +#ifdef SOUND + + /* Have to use me->p_flags because server doesn't send us twarp flag info + on other players. Current Vanilla does not let observer change players + if the player they are observing is transwarping. */ + if (twarpflag != (me->p_flags & PFTWARP)) + { + /* change in warp state */ + warpchange = 1; + twarpflag = (me->p_flags & PFTWARP); + } + + if (myPlayer(j) || isObsLockPlayer(j)) + { + if (warpchange && (j->p_flags & PFTWARP)) + { + + if (newSound) // Kill any channels with ENTER_WARP_WAV or EXIT_WARP_WAV (group 3) + { + Mix_HaltGroup(3); + Play_Sound(ENTER_WARP_WAV); + } + else + Play_Sound(ENTER_WARP_SOUND); + + warpchange = 0; + + } + if (warpchange && !(j->p_flags & PFTWARP)) + { + if (newSound) // Kill any channels with ENTER_WARP_WAV or EXIT_WARP_WAV (group 3) + { + Mix_HaltGroup(3); + Play_Sound(EXIT_WARP_WAV); + } + else + Play_Sound(EXIT_WARP_SOUND); + + warpchange = 0; + } + } +#endif + if (j->p_flags & PFOBSERV) { /* observer and NOT locked onto a player (ie. locked onto planet or @@ -2097,12 +2143,8 @@ W_ChangeBorder (baseWin, gColor); #if defined(SOUND) - if (newSound) - { // Kill any channels with WARNING_WAV on them (group 2) - // or RED_ALERT_WAV (group 3) + if (newSound) // Kill any channels with WARNING_WAV or RED_ALERT_WAV (group 2) Mix_HaltGroup(2); - Mix_HaltGroup(3); - } else { Abort_Sound(WARNING_SOUND); @@ -2124,9 +2166,9 @@ #if defined(SOUND) - if (newSound) // Kill any channels with RED_ALERT_WAV on them (group 3) + if (newSound) // Kill any channels with RED_ALERT_WAV (group 2) { - Mix_HaltGroup(3); + Mix_HaltGroup(2); Play_Sound(WARNING_WAV); } else Index: map.c =================================================================== RCS file: /cvsroot/netrek/client/netrekxp/src/map.c,v retrieving revision 1.4 retrieving revision 1.5 diff -u -d -r1.4 -r1.5 --- map.c 21 Apr 2006 12:00:07 -0000 1.4 +++ map.c 26 Apr 2006 23:18:14 -0000 1.5 @@ -549,6 +549,7 @@ static int viewx = 0, viewy = 0; static char clearviewbox = 0; + static char viewboxcleared = 0; int viewdist = (WINSIDE / 2 * SCALE) / (GWIDTH / WINSIDE); int view = WINSIDE * SCALE / 2; int mvx, mvy; @@ -577,6 +578,7 @@ //W_ClearWindowDB (mapSDB); clearlock = 0; clearviewbox = 0; + viewboxcleared = 0; for (i = 0; i < MAXPLAYER; i++) { @@ -603,41 +605,29 @@ if (clearviewbox) { - if (viewBox) - { - if (viewx != dx || viewy != dy) - { - /* clear old dots - placed here for less flicker */ - if (viewx + viewdist < WINSIDE && viewy + viewdist < WINSIDE) - W_MakePoint (mapw, viewx + viewdist, viewy + viewdist, backColor); - /*W_MakeLine (mapw, viewx + viewdist, viewy + viewdist, - viewx - viewdist, viewy + viewdist, backColor);*/ - //W_MakePointDB (mapSDB, viewx + viewdist, viewy + viewdist, backColor); - if (viewx + viewdist < WINSIDE && viewy - viewdist > 0) - W_MakePoint (mapw, viewx + viewdist, viewy - viewdist, backColor); - /*W_MakeLine (mapw, viewx + viewdist, viewy - viewdist, - viewx + viewdist, viewy + viewdist, backColor);*/ - //W_MakePointDB (mapSDB, viewx + viewdist, viewy - viewdist, backColor); - if (viewx - viewdist > 0 && viewy + viewdist < WINSIDE) - W_MakePoint (mapw, viewx - viewdist, viewy + viewdist, backColor); - /*W_MakeLine (mapw, viewx - viewdist, viewy + viewdist, - viewx - viewdist, viewy - viewdist, backColor);*/ - //W_MakePointDB (mapSDB, viewx - viewdist, viewy + viewdist, backColor); - if (viewx - viewdist > 0 && viewy - viewdist > 0) - W_MakePoint (mapw, viewx - viewdist, viewy - viewdist, backColor); - /*W_MakeLine (mapw, viewx - viewdist, viewy - viewdist, - viewx + viewdist, viewy - viewdist, backColor);*/ - //W_MakePointDB (mapSDB, viewx - viewdist, viewy - viewdist, backColor); + clearviewbox = 0; + /* clear old dots - placed here for less flicker */ + if (viewx + viewdist < WINSIDE && viewy + viewdist < WINSIDE) + W_MakePoint (mapw, viewx + viewdist, viewy + viewdist, backColor); + + if (viewx + viewdist < WINSIDE && viewy - viewdist > 0) + W_MakePoint (mapw, viewx + viewdist, viewy - viewdist, backColor); - /* redraw any planets they overwrote */ - mvx = viewx * (GWIDTH / WINSIDE); /* correct from view scale */ - mvy = viewy * (GWIDTH / WINSIDE); - checkRedraw(mvx + view, mvy + view); - checkRedraw(mvx + view, mvy - view); - checkRedraw(mvx - view, mvy + view); - checkRedraw(mvx - view, mvy - view); - } - } + if (viewx - viewdist > 0 && viewy + viewdist < WINSIDE) + W_MakePoint (mapw, viewx - viewdist, viewy + viewdist, backColor); + + if (viewx - viewdist > 0 && viewy - viewdist > 0) + W_MakePoint (mapw, viewx - viewdist, viewy - viewdist, backColor); + + + /* redraw any planets they overwrote */ + mvx = viewx * (GWIDTH / WINSIDE); /* correct from view scale */ + mvy = viewy * (GWIDTH / WINSIDE); + checkRedraw(mvx + view, mvy + view); + checkRedraw(mvx + view, mvy - view); + checkRedraw(mvx - view, mvy + view); + checkRedraw(mvx - view, mvy - view); + viewboxcleared = 1; } /* Erase the ships */ @@ -691,7 +681,7 @@ /* draw viewBox */ if (viewBox) { - if (viewx != dx || viewy != dy) + if (viewboxcleared || viewx != dx || viewy != dy) { /* draw the new points */ if (dx + viewdist < WINSIDE && dy + viewdist < WINSIDE) Index: sound.c =================================================================== RCS file: /cvsroot/netrek/client/netrekxp/src/sound.c,v retrieving revision 1.6 retrieving revision 1.7 diff -u -d -r1.6 -r1.7 --- sound.c 26 Apr 2006 15:54:04 -0000 1.6 +++ sound.c 26 Apr 2006 23:18:14 -0000 1.7 @@ -58,6 +58,8 @@ {"nt_enter_ship", 4, 1}, {"nt_self_destruct", 6, 1}, {"nt_plasma_hit", 8, 1}, + {"nt_enter_warp", 4, 1}, + {"nt_exit_warp", 4, 1}, {"nt_message", 4, 1}, {"nt_message1", 4, 1}, {"nt_message2", 4, 1}, @@ -95,6 +97,8 @@ newsounds[CLOAKED_WAV] = Mix_LoadWAV(DATAFILE("nt_cloaked.wav")); newsounds[ENGINE_WAV] = Mix_LoadWAV(DATAFILE("nt_engine.wav")); newsounds[ENTER_SHIP_WAV] = Mix_LoadWAV(DATAFILE("nt_enter_ship.wav")); + newsounds[ENTER_WARP_WAV] = Mix_LoadWAV(DATAFILE("nt_enter_warp.wav")); + newsounds[EXIT_WARP_WAV] = Mix_LoadWAV(DATAFILE("nt_exit_warp.wav")); newsounds[EXPLOSION_WAV] = Mix_LoadWAV(DATAFILE("nt_explosion.wav")); newsounds[EXPLOSION_OTHER_WAV] = Mix_LoadWAV(DATAFILE("nt_explosion_other.wav")); newsounds[FIRE_PLASMA_WAV] = Mix_LoadWAV(DATAFILE("nt_fire_plasma.wav")); @@ -290,8 +294,8 @@ // at a later time // Current designations: // group 1 = cloaked_wav - // group 2 = warning_wav - // group 3 = red_alert_wav + // group 2 = warning_wav and red_alert_wav + // group 3 = enter_warp_wav and exit_warp_wav // group 4 = shield_down_wav and shield_up_wav switch(type) { @@ -300,10 +304,12 @@ LineToConsole("Mix_GroupChannel: %s\n", Mix_GetError()); break; case WARNING_WAV: + case RED_ALERT_WAV: if(!Mix_GroupChannel(channel,2)) LineToConsole("Mix_GroupChannel: %s\n", Mix_GetError()); break; - case RED_ALERT_WAV: + case ENTER_WARP_WAV: + case EXIT_WARP_WAV: if(!Mix_GroupChannel(channel,3)) LineToConsole("Mix_GroupChannel: %s\n", Mix_GetError()); break; @@ -380,6 +386,12 @@ case ENTER_SHIP_SOUND: sprintf (buf, "Enter ship sound is %s", flag); break; + case ENTER_WARP_SOUND: + sprintf (buf, "Enter warp sound is %s", flag); + break; + case EXIT_WARP_SOUND: + sprintf (buf, "Exit warp sound is %s", flag); + break; case EXPLOSION_SOUND: sprintf (buf, "Explosion sound is %s", flag); break;