diff --git a/src/items.c b/src/items.c
index 8918203274c4155ec9123ccd700ead1c0176ad05..18b83722793511a096f1c61798f48da3c2acd38a 100644 (file)
--- a/src/items.c
+++ b/src/items.c
-/*
- Copyright (C) Prikol Software 1996-1997
- Copyright (C) Aleksey Volynskov 1996-1997
- Copyright (C) <ARembo@gmail.com> 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 <http://www.gnu.org/licenses/> 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 <http://www.gnu.org/licenses/>.
+ */
#include "glob.h"
#include <stdlib.h>
#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;
+static int tsndtm, rsndtm;
-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);
-}
-
-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;
}
}
-void IT_init(void) {
+void IT_init (void) {
int i;
-
- for(i=0;i<MAXITEM;++i) {
- it[i].t=I_NONE;
- it[i].o.xv=it[i].o.yv=it[i].o.vx=it[i].o.vy=0;
- }
- tsndtm=rsndtm=0;
-}
-
-int IT_load (FILE *h) {
- int m, i, j;
- old_thing_t t;
- switch (blk.t) {
- case MB_THING:
- for (i = 0; blk.sz > 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;
}
}
-void IT_spawn(int x,int y,int t) {
+void IT_spawn (int x,int y,int t) {
int i;
for(i=0;i<MAXITEM;++i) if(!it[i].t) {
}
}
-void IT_drop_ammo(int t,int n,int x,int y) {
+void IT_drop_ammo (int t, int n, int x, int y) {
static int an[8]={10,4,1,40,50,25,5,100};
int a;