X-Git-Url: https://deadsoftware.ru/gitweb?p=flatwaifu.git;a=blobdiff_plain;f=src%2Fview.c;h=80e753f17b5eaf68d2bb01c95534434dbb796b0f;hp=f902e23648dbe7727678f94a702feda84f22d4d9;hb=efb17348438f10c929e2e9807013969f71802661;hpb=2b481ae25adcf3bebf37be182eafc8bfa0acb4c1 diff --git a/src/view.c b/src/view.c index f902e23..80e753f 100644 --- a/src/view.c +++ b/src/view.c @@ -47,49 +47,6 @@ byte fldb[FLDH][FLDW]; byte fldf[FLDH][FLDW]; byte fld[FLDH][FLDW]; -void W_savegame (FILE* h) { - char s[8]; - int i; - myfwrite32(sky_type, h); - for(i = 1; i < 256; ++i) { - R_get_name(i, s); - myfwrite(s, 8, 1, h); - } - for (i = 0; i < 256; i++) { - myfwrite32(walf[i], h); - } - for (i = 0; i < 256; i++) { - myfwrite8(R_get_swp(i), h); - } - myfwrite(fldb, FLDW*FLDH, 1, h); - myfwrite(fld, FLDW*FLDH, 1, h); - myfwrite(fldf, FLDW*FLDH, 1, h); -} - -void W_loadgame (FILE* h) { - int i; - char s[8]; - sky_type = myfread32(h); - R_loadsky(sky_type); - R_begin_load(); - for (i = 1; i < 256; ++i) { - myfread(s, 8, 1, h); - if (s[0]) { - R_load(s); - } - } - R_end_load(); - for (i = 0; i < 256; i++) { - myfread32(h); // useless - } - for (i = 0; i < 256; i++) { - walf[i] = myfread8(h); - } - myfread(fldb, FLDW*FLDH, 1, h); - myfread(fld, FLDW*FLDH, 1, h); - myfread(fldf, FLDW*FLDH, 1, h); -} - void W_init (void) { DOT_init(); SMK_init(); @@ -101,74 +58,3 @@ void W_init (void) { MN_init(); R_loadsky(1); } - -static void unpack (void *buf, int len, void *obuf) { - int i = 0; - int j = 0; - unsigned char *p = buf; - unsigned char *q = obuf; - while (i < len) { - int id = p[i]; - int step = 1; - i += 1; - if (id == 0xff) { - step = p[i] | p[i + 1] << 8; - id = p[i + 2]; - i += 3; - } - memset(&q[j], id, step); - j += step; - } -} - -int W_load (FILE *h) { - int i; - char s[8]; - void *p, *buf; - switch (blk.t) { - case MB_WALLNAMES: - R_begin_load(); - memset(walf, 0, sizeof(walf)); - for (i = 1; i < 256 && blk.sz > 0; i++, blk.sz -= 9) { - myfread(s, 8, 1, h); - walf[i] = myfread8(h) ? 1 : 0; // ??? - R_load(s); - if (strncasecmp(s, "VTRAP01", 8) == 0) { - walf[i] |= 2; - } - } - R_end_load(); - return 1; - case MB_BACK: - p = fldb; - goto unp; - case MB_WTYPE: - p = fld; - goto unp; - case MB_FRONT: - p = fldf; - unp: - switch (blk.st) { - case 0: - myfread(p, FLDW * FLDH, 1, h); - break; - case 1: - buf = malloc(blk.sz); - if (buf == NULL) { - ERR_fatal("Не хватает памяти"); - } - myfread(buf, blk.sz, 1, h); - unpack(buf, blk.sz, p); - free(buf); - break; - default: - return 0; - } - return 1; - case MB_SKY: - sky_type = myfread16(h); - R_loadsky(sky_type); - return 1; - } - return 0; -}