home *** CD-ROM | disk | FTP | other *** search
/ Amiga ACS 1998 #6 / amigaacscoverdisc1998-061998.iso / games / descent / source / main / songs.c < prev    next >
Text File  |  1998-06-08  |  3KB  |  107 lines

  1. /*
  2. THE COMPUTER CODE CONTAINED HEREIN IS THE SOLE PROPERTY OF PARALLAX
  3. SOFTWARE CORPORATION ("PARALLAX").  PARALLAX, IN DISTRIBUTING THE CODE TO
  4. END-USERS, AND SUBJECT TO ALL OF THE TERMS AND CONDITIONS HEREIN, GRANTS A
  5. ROYALTY-FREE, PERPETUAL LICENSE TO SUCH END-USERS FOR USE BY SUCH END-USERS
  6. IN USING, DISPLAYING,  AND CREATING DERIVATIVE WORKS THEREOF, SO LONG AS
  7. SUCH USE, DISPLAY OR CREATION IS FOR NON-COMMERCIAL, ROYALTY OR REVENUE
  8. FREE PURPOSES.  IN NO EVENT SHALL THE END-USER USE THE COMPUTER CODE
  9. CONTAINED HEREIN FOR REVENUE-BEARING PURPOSES.  THE END-USER UNDERSTANDS
  10. AND AGREES TO THE TERMS HEREIN AND ACCEPTS THE SAME BY USE OF THIS FILE.  
  11. COPYRIGHT 1993-1998 PARALLAX SOFTWARE CORPORATION.  ALL RIGHTS RESERVED.
  12. */
  13. /*
  14.  * $Source: f:/miner/source/main/rcs/songs.c $
  15.  * $Revision: 2.1 $
  16.  * $Author: john $
  17.  * $Date: 1995/05/02 16:15:21 $
  18.  * 
  19.  * Routines to manage the songs in Descent.
  20.  * 
  21.  * $Log: songs.c $
  22.  * Revision 2.1  1995/05/02  16:15:21  john
  23.  * Took out printf.
  24.  * 
  25.  * Revision 2.0  1995/02/27  11:27:13  john
  26.  * New version 2.0, which has no anonymous unions, builds with
  27.  * Watcom 10.0, and doesn't require parsing BITMAPS.TBL.
  28.  * 
  29.  * Revision 1.2  1995/02/11  12:42:12  john
  30.  * Added new song method, with FM bank switching..
  31.  * 
  32.  * Revision 1.1  1995/02/11  10:20:33  john
  33.  * Initial revision
  34.  * 
  35.  * 
  36.  */
  37.  
  38.  
  39. #pragma off (unreferenced)
  40. static char rcsid[] = "$Id: songs.c 2.1 1995/05/02 16:15:21 john Exp $";
  41. #pragma on (unreferenced)
  42.  
  43. #include <stdlib.h>
  44. #include <string.h>
  45.  
  46. #include "error.h"
  47. #include "types.h"
  48. #include "songs.h"
  49. #include "mono.h"
  50. #include "cfile.h"
  51. #include "digi.h"
  52.  
  53. song_info Songs[MAX_SONGS];
  54. int Songs_initialized = 0;
  55.  
  56. void songs_init()
  57. {
  58.     int i;
  59.     char inputline[80+1];
  60.     CFILE * fp;
  61.  
  62.     if ( Songs_initialized ) return;
  63.  
  64.     fp = cfopen( "descent.sng", "rb" );
  65.     if ( fp == NULL )    {
  66.         Error( "Couldn't open descent.sng" );
  67.     }
  68.  
  69.     i = 0;
  70.     while (cfgets(inputline, 80, fp )) {
  71.         char *p = strchr(inputline,'\n');
  72.         if (p) *p = '\0';
  73.         if ( strlen( inputline ) )    {
  74.             Assert( i < MAX_SONGS );
  75.             sscanf( inputline, "%s %s %s", Songs[i].filename, Songs[i].melodic_bank_file, Songs[i].drum_bank_file );
  76.             //printf( "%d. '%s' '%s' '%s'\n",i,  Songs[i].filename, Songs[i].melodic_bank_file, Songs[i].drum_bank_file );
  77.             i++;
  78.         }
  79.     }
  80.     Songs_initialized = 1;
  81.     cfclose(fp);
  82. }
  83.  
  84. void songs_play_song( int songnum, int repeat )
  85. {
  86.     if ( !Songs_initialized ) songs_init();
  87.     digi_play_midi_song( Songs[songnum].filename, Songs[songnum].melodic_bank_file, Songs[songnum].drum_bank_file, repeat );
  88. }
  89.  
  90. void songs_play_level_song( int levelnum )
  91. {
  92.     int songnum;
  93.  
  94.     Assert( levelnum != 0 );
  95.  
  96.     if ( !Songs_initialized ) songs_init();
  97.  
  98.     if (levelnum < 0)    
  99.         songnum = (-levelnum) % NUM_GAME_SONGS;
  100.     else 
  101.         songnum = (levelnum-1) % NUM_GAME_SONGS;
  102.     
  103.     songnum += SONG_LEVEL_MUSIC;
  104.     digi_play_midi_song( Songs[songnum].filename, Songs[songnum].melodic_bank_file, Songs[songnum].drum_bank_file, 1 );
  105. }
  106. 
  107.