X-Git-Url: https://deadsoftware.ru/gitweb?p=flatwaifu.git;a=blobdiff_plain;f=src%2Ffiles.c;h=47aaa71eb1a65a2b2997471566b3fa3795f5456d;hp=f6ef6b5303dd1e740d4875a436ee075581ecdf14;hb=563dffaf02ff36da4054f937fcc9f99a072e15bf;hpb=c46b82f5794be555af272740e67ead316b9b1f90 diff --git a/src/files.c b/src/files.c index f6ef6b5..47aaa71 100644 --- a/src/files.c +++ b/src/files.c @@ -25,150 +25,55 @@ #include #include #include -#include "error.h" -#include "view.h" -#include "items.h" -#include "switch.h" #include "files.h" #include "map.h" #include "my.h" +#include "game.h" +#include "view.h" +#include "dots.h" +#include "smoke.h" +#include "fx.h" +#include "items.h" +#include "monster.h" +#include "player.h" +#include "switch.h" +#include "weapons.h" +#include "error.h" +#include "cp866.h" -char *S_getinfo(void); - -extern void *snd_drv; - -typedef struct{ - byte n,i,v,d; -}dmv; +typedef struct { + byte n, i, v, d; +} dmv; -byte seq[255],seqn; -dmv *pat=NULL; -unsigned *patp; -void **dmi; +int d_start, d_end; +mwad_t wad[MAX_WAD]; +map_block_t blk; +static byte seq[255]; +static byte seqn; static int inum=0; +static dmv *pat=NULL; +static unsigned *patp; +static void **dmi; -void G_savegame(FILE*); -void W_savegame(FILE*); -void DOT_savegame(FILE*); -void SMK_savegame(FILE*); -void FX_savegame(FILE*); -void IT_savegame(FILE*); -void MN_savegame(FILE*); -void PL_savegame(FILE*); -void SW_savegame(FILE*); -void WP_savegame(FILE*); - -void G_loadgame(FILE*); -void W_loadgame(FILE*); -void DOT_loadgame(FILE*); -void SMK_loadgame(FILE*); -void FX_loadgame(FILE*); -void IT_loadgame(FILE*); -void MN_loadgame(FILE*); -void PL_loadgame(FILE*); -void SW_loadgame(FILE*); -void WP_loadgame(FILE*); - -byte savname[7][24],savok[7]; - -int d_start,d_end,m_start,m_end,s_start,s_end,wad_num; -mwad_t wad[MAX_WAD]; +static int m_start, m_end; +static int s_start, s_end; +static int wad_num; -char wads[MAX_WADS][__MAX_PATH]; +static char wads[MAX_WADS][__MAX_PATH]; static FILE* wadh[MAX_WADS]; -char f_drive[__MAX_DRIVE],f_dir[__MAX_DIR],f_name[__MAX_FNAME],f_ext[__MAX_EXT], - f_path[__MAX_PATH]; +static char f_drive[__MAX_DRIVE]; +static char f_dir[__MAX_DIR]; +static char f_name[__MAX_FNAME]; +static char f_ext[__MAX_EXT]; -void F_startup(void) { +void F_startup (void) { logo("F_startup: настройка файловой системы\n"); memset(wads,0,sizeof(wads)); } -char *getsavfpname(int n, int ro) -{ - static char fn[]="savgame0.dat"; - fn[7]=n+'0'; -#ifndef WIN32 - static char p[100]; - char *e = getenv("HOME"); - strncpy(p,e,60); - strcat(p,"/.doom2d-rembo"); - if (!ro) mkdir(p, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH); - strcat(p,"/"); - strcat(p,fn); -#else - strcpy(p,fn); -#endif - return p; -} - -void F_getsavnames (void) { - int i; - FILE *h; - short ver; - char *p; - for (i = 0; i < 7; ++i) { - p = getsavfpname(i, 1); - memset(savname[i], 0, 24); - savok[i] = 0; - h = fopen(p, "rb"); - if (h != NULL) { - ver = -1; - myfread(savname[i], 24, 1, h); - ver = myfread16(h); - savname[i][23] = 0; - savok[i] = (ver == 3) ? 1 : 0; - fclose(h); - } - } -} - -void F_savegame (int n, char *s) { - char *p = getsavfpname(n, 0); - FILE *h = fopen(p, "wb"); - if (h != NULL) { - myfwrite(s, 24, 1, h); // slot name - myfwrite16(3, h); // version - G_savegame(h); - W_savegame(h); - DOT_savegame(h); - SMK_savegame(h); - FX_savegame(h); - IT_savegame(h); - MN_savegame(h); - PL_savegame(h); - SW_savegame(h); - WP_savegame(h); - fclose(h); - } -} - -void F_loadgame (int n) { - short ver; - char *p = getsavfpname(n, 1); - FILE *h = fopen(p, "rb"); - if (h != NULL) { - fseek(h, 24, SEEK_SET); // skip name - ver = myfread16(h); // version - if (ver == 3) { - G_loadgame(h); - W_loadgame(h); - DOT_loadgame(h); - SMK_loadgame(h); - FX_loadgame(h); - IT_loadgame(h); - MN_loadgame(h); - PL_loadgame(h); - SW_loadgame(h); - WP_loadgame(h); - } - fclose(h); - } -} - -void F_addwad(char *fn) { +void F_addwad (const char *fn) { int i; for(i=0;i=m_end) i=m_start; for(++i;;++i) { if(i>=m_end) i=m_start+1; - if (strcasecmp(wad[i].n,"MENU") == 0 || - strcasecmp(wad[i].n,"INTERMUS") == 0 || - strcasecmp(wad[i].n,"\x8a\x8e\x8d\x85\x96\x0") == 0) + if (cp866_strcasecmp(wad[i].n,"MENU") == 0 || + cp866_strcasecmp(wad[i].n,"INTERMUS") == 0 || + cp866_strcasecmp(wad[i].n,"\x8a\x8e\x8d\x85\x96\x0") == 0) continue; - if(strncasecmp(wad[i].n,"DMI",3)!=0) break; + if(cp866_strncasecmp(wad[i].n,"DMI",3)!=0) break; } memcpy(s,wad[i].n,8); } -void F_randmus(char *s) { - int n = myrand(10); - int i; - for (i=0; i