Difference for main/gamefont.c from version 1.1 to 1.2


version 1.1 version 1.2
Line 19
 
Line 19
  * Fonts for the game.   * Fonts for the game.
  *    *
  * $Log$   * $Log$
  * Revision 1.1  1999/06/14 22:06:59  donut   * Revision 1.2  1999/10/08 00:57:03  donut
  * Initial revision   * variable GAME_FONT
    *
    * Revision 1.1.1.1  1999/06/14 22:06:59  donut
    * Import of d1x 1.37 source.
  *   *
  * Revision 2.0  1995/02/27  11:30:14  john   * Revision 2.0  1995/02/27  11:30:14  john
  * New version 2.0, which has no anonymous unions, builds with   * New version 2.0, which has no anonymous unions, builds with
Line 62
 
Line 65
 #endif  #endif
   
 #include <stdlib.h>  #include <stdlib.h>
   #include <stdio.h>
   
 #include "gr.h"  #include "gr.h"
   #include "error.h"
   #include "strutil.h"
   #include "mono.h"
   #include "args.h"
 #include "gamefont.h"  #include "gamefont.h"
   
 char * Gamefont_filenames[] = { "font1-1.fnt", // Font 0  char * Gamefont_filenames[] = { "font1-1.fnt", // Font 0
  "font2-1.fnt", // Font 1   "font2-1.fnt", // Font 1
  "font2-2.fnt", // Font 2   "font2-2.fnt", // Font 2
  "font2-3.fnt", // Font 3   "font2-3.fnt", // Font 3
  "font3-1.fnt", // Font 4   "font3-1.fnt" // Font 4
  };   };
   
 grs_font *Gamefonts[MAX_FONTS];  grs_font *Gamefonts[MAX_FONTS];
   
 int Gamefont_installed=0;  int Gamefont_installed=0;
   
   //code to allow variable GAME_FONT, added 10/7/99 Matt Mueller
   // take scry into account? how/when?
   typedef struct _gamefont_conf{
    int x;
    int builtin;
    union{
    char name[64];//hrm.
    grs_font *ptr;
    } f;
   }gamefont_conf;
   
   gamefont_conf font_conf[10];
   int num_font_conf=0,cur_font_conf=-1;
   grs_font *game_font=NULL;
   
   void gamefont_unloadfont(void){
    if (game_font){
    if (!font_conf[cur_font_conf].builtin)
    gr_close_font(game_font);
    game_font=NULL;
    }
   }
   void gamefont_loadfont(int fi){
    gamefont_unloadfont();
    if (font_conf[fi].builtin)
    game_font=font_conf[fi].f.ptr;
    else
    game_font=gr_init_font(font_conf[fi].f.name);
    cur_font_conf=fi;
   }
   void gamefont_choose_game_font(int scrx,int scry){
    int i,close=-1,m=-1;
    if (!Gamefont_installed) return;
   
    for (i=0;i<num_font_conf;i++)
    if (scrx>=font_conf[i].x && close<font_conf[i].x){
    close=font_conf[i].x;
    m=i;
    }
    if (m<0)
    Error("no gamefont found for %ix%i\n",scrx,scry);
   
    gamefont_loadfont(m);
   }
   
   void addfontconf(int x,char * fn){
    int i,b=0;
    grs_font *ptr=NULL;
    for (i=0; i<MAX_FONTS; i++ )
    if (stricmp(fn,Gamefont_filenames[i])==0){
    b=1;
    ptr=Gamefonts[i];
    }
    mprintf((0,"adding font %s at %i, %i: ",fn,x,b));
    for (i=0;i<num_font_conf;i++){
    if (font_conf[i].x==x){
    mprintf((0,"replaced %i\n",i));
    if (i==cur_font_conf)
    gamefont_unloadfont();
    font_conf[i].builtin=b;
    if (b)
    font_conf[i].f.ptr=ptr;
    else
    strcpy(font_conf[i].f.name,fn);
    if (i==cur_font_conf)
    gamefont_loadfont(i);
    return;
    }
    }
    mprintf((0,"added %i\n",num_font_conf));
    font_conf[num_font_conf].x=x;
    font_conf[num_font_conf].builtin=b;
    if (b)
    font_conf[num_font_conf].f.ptr=ptr;
    else
    strcpy(font_conf[num_font_conf].f.name,fn);
    num_font_conf++;
   }
   
 void gamefont_init()  void gamefont_init()
 {  {
  int i;   int i;
Line 86
 
Line 173
   
  for (i=0; i<MAX_FONTS; i++ )   for (i=0; i<MAX_FONTS; i++ )
  Gamefonts[i] = gr_init_font(Gamefont_filenames[i]);   Gamefonts[i] = gr_init_font(Gamefont_filenames[i]);
   
    addfontconf(0,"font3-1.fnt");//default font.
   // addfontconf(800,"pc6x8.fnt");
   // addfontconf(1024,"pc8x16.fnt");
    if ((i=FindArg("-font320")))
    addfontconf(320,Args[i+1]);
    if ((i=FindArg("-font640")))
    addfontconf(640,Args[i+1]);
    if ((i=FindArg("-font800")))
    addfontconf(800,Args[i+1]);
    if ((i=FindArg("-font1024")))
    addfontconf(1024,Args[i+1]);
    gamefont_choose_game_font(320,200);
   
    for (i=0; i<MAX_FONTS; i++ )
    printf ("font %i: %ix%i\n",i,Gamefonts[i]->ft_w,Gamefonts[i]->ft_h);
   
  atexit( gamefont_close );   atexit( gamefont_close );
 }  }

Legend:
line(s) removed in v.1.1 
line(s) changed
 line(s) added in v.1.2