X-Git-Url: https://deadsoftware.ru/gitweb?p=flatwaifu.git;a=blobdiff_plain;f=src%2Fweapons.c;h=624fc7e8ef8f862d07c32669e2928066b00b780a;hp=4a5a063d426b2e92e6695717ff50d0933f7032e9;hb=ef16dea09f87b15fc6d58fae0aa0832e0648c00e;hpb=da79be9b6a4134aa9cd19e6f5909fedb20d318cb diff --git a/src/weapons.c b/src/weapons.c index 4a5a063..624fc7e 100644 --- a/src/weapons.c +++ b/src/weapons.c @@ -1,24 +1,19 @@ -/* - 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 @@ -28,72 +23,22 @@ #include "smoke.h" #include "weapons.h" #include "misc.h" - -extern int hit_xv,hit_yv; - -void bfg_fly(int x,int y,int own); +#include "files.h" +#include "game.h" +#include "player.h" +#include "monster.h" +#include "switch.h" +#include "my.h" enum{NONE=0,ROCKET,PLASMA,APLASMA,BALL1,BALL2,BALL7,BFGBALL,BFGHIT, MANF,REVF,FIRE}; -#pragma pack(1) -typedef struct{ - obj_t o; - byte t,s; - int own; - short target; -}weapon_t; -#pragma pack() - -static void *snd[14],*spr[49*2]; -static char sprd[49*2]; -static weapon_t wp[MAXWPN]; +weapon_t wp[MAXWPN]; +static void *snd[14]; static void throw(int,int,int,int,int,int,int,int); -void WP_savegame (FILE *h) { - int i, n; - for (n = MAXWPN - 1; n >= 0 && wp[n].t == 0; n--) { - // empty - } - n += 1; - myfwrite32(n, h); - for (i = 0; i < n; i++) { - myfwrite32(wp[i].o.x, h); - myfwrite32(wp[i].o.y, h); - myfwrite32(wp[i].o.xv, h); - myfwrite32(wp[i].o.yv, h); - myfwrite32(wp[i].o.vx, h); - myfwrite32(wp[i].o.vy, h); - myfwrite32(wp[i].o.r, h); - myfwrite32(wp[i].o.h, h); - myfwrite8(wp[i].t, h); - myfwrite8(wp[i].s, h); - myfwrite32(wp[i].own, h); - myfwrite16(wp[i].target, h); - } -} - -void WP_loadgame (FILE *h) { - int i, n; - myfread32(&n, h); - for (i = 0; i < n; i++) { - myfread32(&wp[i].o.x, h); - myfread32(&wp[i].o.y, h); - myfread32(&wp[i].o.xv, h); - myfread32(&wp[i].o.yv, h); - myfread32(&wp[i].o.vx, h); - myfread32(&wp[i].o.vy, h); - myfread32(&wp[i].o.r, h); - myfread32(&wp[i].o.h, h); - myfread8(&wp[i].t, h); - myfread8(&wp[i].s, h); - myfread32(&wp[i].own, h); - myfread16(&wp[i].target, h); - } -} - -void WP_alloc(void) { +void WP_alloc (void) { int i; static char nm[14][6]={ "PISTOL", @@ -111,69 +56,16 @@ void WP_alloc(void) { "SPARK1", "SPARK2" }; - - for(i=0;i<4;++i) { - spr[i*2]=Z_getspr("MISL",i,1,sprd+i*2); - spr[i*2+1]=Z_getspr("MISL",i,2,sprd+i*2+1); - } - for(;i<6;++i) { - spr[i*2]=Z_getspr("PLSS",i-4,1,sprd+i*2); - spr[i*2+1]=Z_getspr("PLSS",i-4,2,sprd+i*2+1); - } - for(;i<11;++i) { - spr[i*2]=Z_getspr("PLSE",i-6,1,sprd+i*2); - spr[i*2+1]=Z_getspr("PLSE",i-6,2,sprd+i*2+1); - } - for(;i<13;++i) { - spr[i*2]=Z_getspr("APLS",i-11,1,sprd+i*2); - spr[i*2+1]=Z_getspr("APLS",i-11,2,sprd+i*2+1); - } - for(;i<18;++i) { - spr[i*2]=Z_getspr("APBX",i-13,1,sprd+i*2); - spr[i*2+1]=Z_getspr("APBX",i-13,2,sprd+i*2+1); - } - for(;i<20;++i) { - spr[i*2]=Z_getspr("BFS1",i-18,1,sprd+i*2); - spr[i*2+1]=Z_getspr("BFS1",i-18,2,sprd+i*2+1); - } - for(;i<26;++i) { - spr[i*2]=Z_getspr("BFE1",i-20,1,sprd+i*2); - spr[i*2+1]=Z_getspr("BFE1",i-20,2,sprd+i*2+1); - } - for(;i<30;++i) { - spr[i*2]=Z_getspr("BFE2",i-26,1,sprd+i*2); - spr[i*2+1]=Z_getspr("BFE2",i-26,2,sprd+i*2+1); - } - for(;i<32;++i) { - spr[i*2]=Z_getspr("MISL",i-30+4,1,sprd+i*2); - spr[i*2+1]=Z_getspr("MISL",i-30+4,2,sprd+i*2+1); - } - for(;i<37;++i) { - spr[i*2]=Z_getspr("BAL1",i-32,1,sprd+i*2); - spr[i*2+1]=Z_getspr("BAL1",i-32,2,sprd+i*2+1); - } - for(;i<42;++i) { - spr[i*2]=Z_getspr("BAL7",i-37,1,sprd+i*2); - spr[i*2+1]=Z_getspr("BAL7",i-37,2,sprd+i*2+1); - } - for(;i<47;++i) { - spr[i*2]=Z_getspr("BAL2",i-42,1,sprd+i*2); - spr[i*2+1]=Z_getspr("BAL2",i-42,2,sprd+i*2+1); - } - for(;i<49;++i) { - spr[i*2]=Z_getspr("MANF",i-47,1,sprd+i*2); - spr[i*2+1]=Z_getspr("MANF",i-47,2,sprd+i*2+1); - } for(i=0;i<14;++i) snd[i]=Z_getsnd(nm[i]); } -void WP_init(void) { +void WP_init (void) { int i; for(i=0;i0)?1:0; - x=abs(wp[i].o.xv);y=wp[i].o.yv;s=0; - if(y<0) {if(-y>=x) s=30;} - else if(y>0) if(y>=x/2) s=31; - }else {s=(d-2)/2+1;d=0;} - break; - case MANF: - if((s=wp[i].s)>=2) {s/=2;break;} - case PLASMA: - case APLASMA: - case BALL1: - case BALL7: - case BALL2: - if((s=wp[i].s)>=2) s=s/2+1; - switch(wp[i].t) { - case PLASMA: s+=4;break; - case APLASMA: s+=11;break; - case BALL1: s+=32;break; - case BALL2: s+=42;break; - case BALL7: s+=37;d=(wp[i].o.xv>=0)?1:0;break; - case MANF: s+=47;d=(wp[i].o.xv>=0)?1:0;break; - }break; - case BFGBALL: - if((s=wp[i].s)>=2) s=s/2+1; - s+=18;break; - case BFGHIT: - s=wp[i].s/2+26;break; - } - if(s>=0) Z_drawspr(wp[i].o.x,wp[i].o.y,spr[s*2+d],sprd[s*2+d]); - } -} - -void WP_gun(int x,int y,int xd,int yd,int o,int v) { +void WP_gun (int x, int y, int xd, int yd, int o, int v) { register dword d,m; int sx,sy,lx,ly; dword xe,ye,s; @@ -349,7 +199,7 @@ void WP_gun(int x,int y,int xd,int yd,int o,int v) { } } -void WP_punch(int x,int y,int d,int own) { +void WP_punch (int x, int y, int d, int own) { obj_t o; o.x=x;o.y=y;o.r=12;o.h=26; @@ -357,7 +207,7 @@ void WP_punch(int x,int y,int d,int own) { if(Z_hit(&o,d,own,HIT_SOME)) Z_sound(snd[9],128); } -int WP_chainsaw(int x,int y,int d,int own) { +int WP_chainsaw (int x, int y, int d, int own) { obj_t o; o.x=x;o.y=y;o.r=12;o.h=26; @@ -377,7 +227,7 @@ static void throw(int i,int x,int y,int xd,int yd,int r,int h,int s) { wp[i].o.vx=wp[i].o.vy=0; } -void WP_rocket(int x,int y,int xd,int yd,int o) { +void WP_rocket (int x, int y, int xd, int yd, int o) { int i; for(i=0;i