X-Git-Url: http://deadsoftware.ru/gitweb?a=blobdiff_plain;f=src%2Ffiles.c;h=e470830be662a62216d3daac74cda57eec157d4a;hb=5ffa796498caf6ade53096515965d5eec272799e;hp=47aaa71eb1a65a2b2997471566b3fa3795f5456d;hpb=563dffaf02ff36da4054f937fcc9f99a072e15bf;p=flatwaifu.git diff --git a/src/files.c b/src/files.c index 47aaa71..e470830 100644 --- a/src/files.c +++ b/src/files.c @@ -1,30 +1,27 @@ -/* - Copyright (C) Prikol Software 1996-1997 - Copyright (C) Aleksey Volynskov 1996-1997 - Copyright (C) 2011 - - This file is part of the Doom2D:Rembo project. - - Doom2D:Rembo is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License version 2 as - published by the Free Software Foundation. - - Doom2D:Rembo is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, see or - write to the Free Software Foundation, Inc., - 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -*/ +/* Copyright (C) 1996-1997 Aleksey Volynskov + * Copyright (C) 2011 Rambo + * Copyright (C) 2020 SovietPony + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, version 3 of the License ONLY. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ #include "glob.h" #include #include #include -#include +#ifdef UNIX +# include +#endif #include "files.h" #include "map.h" #include "my.h" @@ -47,7 +44,8 @@ typedef struct { int d_start, d_end; mwad_t wad[MAX_WAD]; -map_block_t blk; +char wads[MAX_WADS][__MAX_PATH]; +FILE* wadh[MAX_WADS]; static byte seq[255]; static byte seqn; @@ -60,16 +58,13 @@ static int m_start, m_end; static int s_start, s_end; static int wad_num; -static char wads[MAX_WADS][__MAX_PATH]; -static FILE* wadh[MAX_WADS]; - 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) { - logo("F_startup: настройка файловой системы\n"); + logo("F_startup: setup file system\n"); memset(wads,0,sizeof(wads)); } @@ -79,7 +74,7 @@ void F_addwad (const char *fn) { for(i=0;i= MAX_WAD) { - ERR_failinit("Слишком много элементов WAD'а"); + ERR_failinit("Too many entries in the WAD"); } wad[p].o = w.o; wad[p].l = w.l; @@ -136,9 +131,9 @@ void F_initwads (void) { for (i = 1; i < MAX_WADS; ++i) { if (wads[i][0] != 0) { - logo(" подключается %s\n", wads[i]); + logo(" add %s\n", wads[i]); if ((wadh[i] = h = fopen(wads[i], "rb")) == NULL) { - ERR_failinit("Не могу открыть файл2: %s", wads[i]); + ERR_failinit("Unable to open file (2): %s", wads[i]); } mysplitpath(wads[i], f_drive, f_dir, f_name, f_ext); if (cp866_strcasecmp(f_ext, ".lmp") == 0) { @@ -151,7 +146,7 @@ void F_initwads (void) { } if (k >= MAX_WAD) { if (p >= MAX_WAD) { - ERR_failinit("Слишком много элементов WAD'а"); + ERR_failinit("Too many entries in the WAD"); } memset(wad[p].n, 0, 8); strncpy(wad[p].n, f_name, 8); @@ -165,7 +160,7 @@ void F_initwads (void) { s[0] = '\0'; myfread(s, 1, 4, h); if (strncmp(s, "IWAD", 4) != 0 && strncmp(s, "PWAD", 4) != 0) { - ERR_failinit("Нет подписи IWAD или PWAD (2)"); + ERR_failinit("Not IWAD or PWAD (2)"); } n = myfread32(h); // num o = myfread32(h); // offset @@ -183,7 +178,7 @@ void F_initwads (void) { } if (k >= MAX_WAD) { if (p >= MAX_WAD) { - ERR_failinit("Слишком много элементов WAD'а"); + ERR_failinit("Too many entries in the WAD"); } memcpy(wad[p].n, w.n, 8); wad[p].o = w.o; @@ -221,10 +216,10 @@ void F_loadres (int r, void *p, dword o, dword l) { oo=ftell(fh=wadh[wad[r].f]); if(fseek(fh,wad[r].o+o,SEEK_SET)!=0) - ERR_fatal("Ошибка при чтении файла"); + ERR_fatal("Error while file reading"); if((dword)myfreadc(p,1,l,fh)!=l) - ERR_fatal("Ошибка при загрузке ресурса %.8s",wad[r].n); + ERR_fatal("Error while loading resource %.8s", wad[r].n); fseek(fh,oo,SEEK_SET); @@ -236,7 +231,7 @@ void F_saveres(int r, void *p, dword o, dword l) { FILE* fh = wadh[wad[r].f]; int oo = ftell(fh); if (fseek(fh, wad[r].o + o, SEEK_SET) != 0) { - ERR_fatal("Ошибка при чтении файла"); + ERR_fatal("Error while reading file"); } myfwrite(p, l, 1, fh); fseek(fh, oo, SEEK_SET); @@ -258,7 +253,7 @@ int F_findres (const char n[8]) { int F_getresid (const char n[8]) { int i = F_findres(n); if (i == -1) { - ERR_fatal("F_getresid: ресурс %.8s не найден", n); + ERR_fatal("F_getresid: resource %.8s not found", n); } return i; } @@ -355,44 +350,6 @@ void F_readstrz (FILE* h,char *s,int m) { } */ -void F_loadmap (char n[8]) { - int r, o; - FILE *h; - map_header_t hdr; - W_init(); - r = F_getresid(n); - h = wadh[wad[r].f]; - fseek(h, wad[r].o, SEEK_SET); - myfread(hdr.id, 8, 1, h); - hdr.ver = myfread16(h); - if (memcmp(hdr.id, "Doom2D\x1A", 8) != 0) { - ERR_fatal("%.8s не является уровнем", n); - } - for(;;) { - blk.t = myfread16(h); - blk.st = myfread16(h); - blk.sz = myfread32(h); - if(blk.t == MB_END) { - break; - } - if(blk.t == MB_COMMENT) { - fseek(h, blk.sz, SEEK_CUR); - continue; - } - o = ftell(h) + blk.sz; - if(!G_load(h)) { - if(!W_load(h)) { - if(!IT_load(h)) { - if(!SW_load(h)) { - ERR_fatal("Неизвестный блок %d(%d) в уровне %.8s", blk.t, blk.st, n); - } - } - } - } - fseek(h, o, SEEK_SET); - } -} - /*void F_freemus(void) { int i;