X-Git-Url: https://deadsoftware.ru/gitweb?p=flatwaifu.git;a=blobdiff_plain;f=src%2Fitems.c;h=32c4af541068073301894fc022b12ef018dcd8aa;hp=8918203274c4155ec9123ccd700ead1c0176ad05;hb=efb17348438f10c929e2e9807013969f71802661;hpb=534310c1f131bb9a53be865c32d90342ed026734 diff --git a/src/items.c b/src/items.c index 8918203..32c4af5 100644 --- a/src/items.c +++ b/src/items.c @@ -32,55 +32,14 @@ #include "misc.h" #include "map.h" #include "my.h" - -extern map_block_t blk; - +#include "files.h" +#include "game.h" item_t it[MAXITEM]; static void *snd[4]; -static int tsndtm,rsndtm; - -int itm_rtime=1092; - -void IT_savegame (FILE *h) { - int i, n; - for (n = MAXITEM - 1; n >= 0 && it[n].t == 0; n--) { - // empty - } - n += 1; - myfwrite32(n, h); - for (i = 0; i < n; i++) { - myfwrite32(it[i].o.x, h); - myfwrite32(it[i].o.y, h); - myfwrite32(it[i].o.xv, h); - myfwrite32(it[i].o.yv, h); - myfwrite32(it[i].o.vx, h); - myfwrite32(it[i].o.vy, h); - myfwrite32(it[i].o.r, h); - myfwrite32(it[i].o.h, h); - myfwrite32(it[i].t, h); - myfwrite32(it[i].s, h); - } - myfwrite32(itm_rtime, h); -} +static int tsndtm, rsndtm; -void IT_loadgame (FILE *h) { - int i, n; - n = myfread32(h); - for (i = 0; i < n; i++) { - it[i].o.x = myfread32(h); - it[i].o.y = myfread32(h); - it[i].o.xv = myfread32(h); - it[i].o.yv = myfread32(h); - it[i].o.vx = myfread32(h); - it[i].o.vy = myfread32(h); - it[i].o.r = myfread32(h); - it[i].o.h = myfread32(h); - it[i].t = myfread32(h); - it[i].s = myfread32(h); - } - itm_rtime = myfread32(h); -} +int itm_rtime = 1092; void IT_alloc (void) { int i, j, n; @@ -96,120 +55,30 @@ void IT_alloc (void) { } } -void IT_init(void) { +void IT_init (void) { int i; - - for(i=0;i 0; ++i, blk.sz -= 8) { - t.x = myfread16(h); - t.y = myfread16(h); - t.t = myfread16(h); - t.f = myfread16(h); - it[i].o.x = t.x; - it[i].o.y = t.y; - it[i].t = t.t; - it[i].s = t.f; - if (it[i].t && (it[i].s & THF_DM) && !g_dm) { - it[i].t=0; - } - } - m = i; - for (i = 0, j = -1; i < m; ++i) { - if (it[i].t == TH_PLR1) { - j = i; - it[i].t = 0; - } - } - if (!g_dm) { - if (j == -1) { - ERR_fatal("Предмет игрок_1 не найден"); - } - dm_pos[0].x = it[j].o.x; - dm_pos[0].y = it[j].o.y; - dm_pos[0].d = it[j].s & THF_DIR; - } - for (i = 0, j = -1; i < m; ++i) { - if (it[i].t == TH_PLR2) { - j = i; - it[i].t = 0; - } - } - if (!g_dm && _2pl) { - if (j == -1) { - ERR_fatal("Предмет игрок_2 не найден"); - } - dm_pos[1].x = it[j].o.x; - dm_pos[1].y = it[j].o.y; - dm_pos[1].d = it[j].s & THF_DIR; - } - for (i = 0, j = 0; i < m; ++i) { - if (it[i].t == TH_DMSTART) { - if (g_dm) { - dm_pos[j].x = it[i].o.x; - dm_pos[j].y = it[i].o.y; - dm_pos[j].d = it[i].s & THF_DIR; - } - it[i].t = 0; - ++j; - } - } - if (g_dm && j < 2) { - ERR_fatal("Меньше 2-ух точек DM"); - } - if (g_dm) { - dm_pnum = j; - dm_pl1p = myrand(dm_pnum); - do { - dm_pl2p = myrand(dm_pnum); - } while (dm_pl2p == dm_pl1p); - } else { - dm_pl1p = 0; - dm_pl2p = 1; - dm_pnum = 2; - } - PL_spawn(&pl1, dm_pos[dm_pl1p].x, dm_pos[dm_pl1p].y, dm_pos[dm_pl1p].d); - if (_2pl) { - PL_spawn(&pl2, dm_pos[dm_pl2p].x, dm_pos[dm_pl2p].y, dm_pos[dm_pl2p].d); - } - for (i = 0; i < m; ++i) { - if (it[i].t >= TH_CLIP && it[i].t < TH_DEMON) { - it[i].s = 0; - it[i].t = it[i].t - TH_CLIP + I_CLIP; - if (it[i].t >= I_KEYR && it[i].t <= I_KEYB) { - it[i].t |= 0x8000; - } - } else if (it[i].t >= TH_DEMON) { - MN_spawn(it[i].o.x, it[i].o.y, it[i].s & THF_DIR, it[i].t - TH_DEMON + MN_DEMON); - it[i].t = 0; - } - } - return 1; + for (i = 0; i < MAXITEM; ++i) { + it[i].t = I_NONE; + it[i].o.xv = 0; + it[i].o.yv = 0; + it[i].o.vx = 0; + it[i].o.vy = 0; } - return 0; + tsndtm = 0; + rsndtm = 0; } -static void takesnd(int t) { +static void takesnd (int t) { if(tsndtm) return; t&=0x7FFF; if(t<=I_CELP || (t>=I_BPACK && t<=I_BFG) || t==I_GUN2) {tsndtm=Z_sound(snd[1],128);return;} if(t==I_MEGA || t==I_INVL || t==I_SUPER) {tsndtm=Z_sound(snd[2],192);return;} - tsndtm=Z_sound(snd[0],256); + tsndtm=Z_sound(snd[0], 255); } -void IT_act(void) { +void IT_act (void) { int i,j; if(tsndtm) --tsndtm; @@ -251,7 +120,7 @@ void IT_act(void) { } } -void IT_spawn(int x,int y,int t) { +void IT_spawn (int x,int y,int t) { int i; for(i=0;i