diff --git a/src/player.c b/src/player.c
index 5a8a80ebb361689b65c3dcd5a8d79e971177e49f..f593f3071d19b0fa691ed3302f4b12d3a17a6c76 100644 (file)
--- a/src/player.c
+++ b/src/player.c
#include "glob.h"
#include <stdlib.h>
#include <string.h>
#include "glob.h"
#include <stdlib.h>
#include <string.h>
-#include "vga.h"
#include "keyb.h"
#include "view.h"
#include "dots.h"
#include "keyb.h"
#include "view.h"
#include "dots.h"
#include "switch.h"
#include "player.h"
#include "misc.h"
#include "switch.h"
#include "player.h"
#include "misc.h"
-
-extern int hit_xv,hit_yv;
+#include "my.h"
+#include "game.h"
#define PL_RAD 8
#define PL_HT 26
#define PL_RAD 8
#define PL_HT 26
#define PL_SWUP 4
#define PL_FLYUP 4
#define PL_SWUP 4
#define PL_FLYUP 4
-#define PL_AIR 360
#define PL_AQUA_AIR 1091
#define PL_AQUA_AIR 1091
-byte p_immortal=0,p_fly=0;
+byte p_immortal;
+byte p_fly;
-int PL_JUMP=10,PL_RUN=8;
+int PL_JUMP=10;
+int PL_RUN=8;
-int wp_it[11]={0,I_CSAW,0,I_SGUN,I_SGUN2,I_MGUN,I_LAUN,I_PLAS,I_BFG,I_GUN2,0};
+static int wp_it[11]={0,I_CSAW,0,I_SGUN,I_SGUN2,I_MGUN,I_LAUN,I_PLAS,I_BFG,I_GUN2,0};
enum{STAND,GO,DIE,SLOP,DEAD,MESS,OUT,FALL};
typedef void fire_f(int,int,int,int,int);
enum{STAND,GO,DIE,SLOP,DEAD,MESS,OUT,FALL};
typedef void fire_f(int,int,int,int,int);
-player_t pl1,pl2;
+player_t pl1;
+player_t pl2;
static int aitime;
static void *aisnd[3];
static void *pdsnd[5];
static int aitime;
static void *aisnd[3];
static void *pdsnd[5];
-static void *spr[27*2],*snd[11];
-static char sprd[27*2];
-static void *wpn[11][6];
-static byte goanim[]="BDACDA",
- dieanim[]="HHHHIIIIJJJJKKKKLLLLMMMM",
- slopanim[]="OOPPQQRRSSTTUUVVWW";
+static void *snd[11];
+byte plr_goanim[]="BDACDA";
+byte plr_dieanim[]="HHHHIIIIJJJJKKKKLLLLMMMM";
+byte plr_slopanim[]="OOPPQQRRSSTTUUVVWW";
#pragma pack(1)
#pragma pack(1)
} _keys;
#pragma pack()
} _keys;
#pragma pack()
-void PL_save_player (player_t *p, FILE *h) {
+static void PL_save_player (player_t *p, FILE *h) {
myfwrite32(p->o.x, h);
myfwrite32(p->o.y, h);
myfwrite32(p->o.xv, h);
myfwrite32(p->o.x, h);
myfwrite32(p->o.y, h);
myfwrite32(p->o.xv, h);
myfwrite8(p_immortal, h);
}
myfwrite8(p_immortal, h);
}
-void PL_load_player (player_t *p, FILE *h) {
- myfread32(&p->o.x, h);
- myfread32(&p->o.y, h);
- myfread32(&p->o.xv, h);
- myfread32(&p->o.yv, h);
- myfread32(&p->o.vx, h);
- myfread32(&p->o.vy, h);
- myfread32(&p->o.r, h);
- myfread32(&p->o.h, h);
- myfread32(&p->looky, h);
- myfread32(&p->st, h);
- myfread32(&p->s, h);
- myfread32(&p->life, h);
- myfread32(&p->armor, h);
- myfread32(&p->hit, h);
- myfread32(&p->hito, h);
- myfread32(&p->pain, h);
- myfread32(&p->air, h);
- myfread32(&p->invl, h);
- myfread32(&p->suit, h);
- myfread8(&p->d, h);
- myfread32(&p->frag, h);
- myfread32(&p->ammo, h);
- myfread32(&p->shel, h);
- myfread32(&p->rock, h);
- myfread32(&p->cell, h);
- myfread32(&p->fuel, h);
- myfread32(&p->kills, h);
- myfread32(&p->secrets, h);
- myfread8(&p->fire, h);
- myfread8(&p->cwpn, h);
- myfread8(&p->csnd, h);
- myfread8(&p->amul, h);
- myfread16(&p->wpns, h);
- myfread8(&p->wpn, h);
- myfread8(&p->f, h);
- myfread8(&p->drawst, h);
- myfread8(&p->color, h);
- myfread32(&p->id, h);
- myfread8(&p->keys, h);
- myfread8(&p->lives, h);
+static void PL_load_player (player_t *p, FILE *h) {
+ p->o.x = myfread32(h);
+ p->o.y = myfread32(h);
+ p->o.xv = myfread32(h);
+ p->o.yv = myfread32(h);
+ p->o.vx = myfread32(h);
+ p->o.vy = myfread32(h);
+ p->o.r = myfread32(h);
+ p->o.h = myfread32(h);
+ p->looky = myfread32(h);
+ p->st = myfread32(h);
+ p->s = myfread32(h);
+ p->life = myfread32(h);
+ p->armor = myfread32(h);
+ p->hit = myfread32(h);
+ p->hito = myfread32(h);
+ p->pain = myfread32(h);
+ p->air = myfread32(h);
+ p->invl = myfread32(h);
+ p->suit = myfread32(h);
+ p->d = myfread8(h);
+ p->frag = myfread32(h);
+ p->ammo = myfread32(h);
+ p->shel = myfread32(h);
+ p->rock = myfread32(h);
+ p->cell = myfread32(h);
+ p->fuel = myfread32(h);
+ p->kills = myfread32(h);
+ p->secrets = myfread32(h);
+ p->fire = myfread8(h);
+ p->cwpn = myfread8(h);
+ p->csnd = myfread8(h);
+ p->amul = myfread8(h);
+ p->wpns = myfread16(h);
+ p->wpn = myfread8(h);
+ p->f = myfread8(h);
+ p->drawst = myfread8(h);
+ p->color = myfread8(h);
+ p->id = myfread32(h);
+ p->keys = myfread8(h);
+ p->lives = myfread8(h);
// k* not saved
}
// k* not saved
}
if (_2pl) {
PL_load_player(&pl2, h);
}
if (_2pl) {
PL_load_player(&pl2, h);
}
- myfread32(&PL_JUMP, h);
- myfread32(&PL_RUN, h);
- myfread8(&p_immortal, h);
+ PL_JUMP = myfread32(h);
+ PL_RUN = myfread32(h);
+ p_immortal = myfread8(h);
}
}
-static int nonz(int a) {return (a)?a:1;}
+static int nonz (int a) {
+ return a ? a : 1;
+}
static int firediry(player_t *p) {
if(p->f&PLF_UP) return -42;
static int firediry(player_t *p) {
if(p->f&PLF_UP) return -42;
}
}
}
}
-int PL_isdead(player_t *p) {
+int PL_isdead (player_t *p) {
switch(p->st) {
case DEAD: case MESS:
case OUT:
switch(p->st) {
case DEAD: case MESS:
case OUT:
return 0;
}
return 0;
}
-void PL_init(void) {
+void PL_init (void) {
p_immortal=0;
PL_JUMP=10;PL_RUN=8;
aitime=0;
p_immortal=0;
PL_JUMP=10;PL_RUN=8;
aitime=0;
"SAWHIT",
"PLFALL"
};
"SAWHIT",
"PLFALL"
};
- static char s[6];
-
- for(i=0;i<27;++i) {
- spr[i*2]=Z_getspr("PLAY",i,1,sprd+i*2);
- spr[i*2+1]=Z_getspr("PLAY",i,2,sprd+i*2+1);
- }
- memcpy(s,"PWPx",4);
- for(i=1;i<11;++i) {
- s[3]=((i<10)?'0':('A'-10))+i;
- for(j=0;j<6;++j) wpn[i][j]=Z_getspr(s,j,1,NULL);
- }
+ char s[6];
for(i=0;i<11;++i) snd[i]=Z_getsnd(nm[i]);
memcpy(s,"AIx",4);
for(i=0;i<3;++i) {
for(i=0;i<11;++i) snd[i]=Z_getsnd(nm[i]);
memcpy(s,"AIx",4);
for(i=0;i<3;++i) {
}
}
}
}
-void PL_restore(player_t *p) {
+static void PL_restore(player_t *p) {
p->o.xv=p->o.yv=p->o.vx=p->o.vy=0;
p->o.r=PL_RAD;p->o.h=PL_HT;
p->pain=0;
p->o.xv=p->o.yv=p->o.vx=p->o.vy=0;
p->o.r=PL_RAD;p->o.h=PL_HT;
p->pain=0;
p->keys=(g_dm)?0x70:0;
}
p->keys=(g_dm)?0x70:0;
}
-void PL_reset(void) {
+void PL_reset (void) {
pl1.st=pl2.st=DEAD;
pl1.frag=pl2.frag=0;
}
pl1.st=pl2.st=DEAD;
pl1.frag=pl2.frag=0;
}
-void PL_spawn(player_t *p,int x,int y,char d) {
+void PL_spawn (player_t *p,int x,int y,char d) {
PL_restore(p);
p->o.x=x;p->o.y=y;p->d=d;
p->kills=p->secrets=0;
}
PL_restore(p);
p->o.x=x;p->o.y=y;p->d=d;
p->kills=p->secrets=0;
}
-int PL_hit(player_t *p,int d,int o,int t) {
+int PL_hit (player_t *p,int d,int o,int t) {
if(!d) return 0;
switch(p->st) {
case DIE: case SLOP:
if(!d) return 0;
switch(p->st) {
case DIE: case SLOP:
return 1;
}
return 1;
}
-void PL_damage(player_t *p) {
+void PL_damage (player_t *p) {
int i;
if(!p->hit && p->life>0) return;
int i;
if(!p->hit && p->life>0) return;
return;
}
return;
}
-void PL_cry(player_t *p) {
+void PL_cry (player_t *p) {
Z_sound(snd[(p->pain>20)?1:0],128);
p->f|=PLF_PNSND;
}
Z_sound(snd[(p->pain>20)?1:0],128);
p->f|=PLF_PNSND;
}
-int PL_give(player_t *p,int t) {
+int PL_give (player_t *p, int t) {
int i;
switch(p->st) {
int i;
switch(p->st) {
}
}
}
}
-void PL_act(player_t *p) {
+void PL_act (player_t *p) {
int st;
if(--aitime<0) aitime=0;
int st;
if(--aitime<0) aitime=0;
switch(p->st) {
case DIE:
p->o.h=7;
switch(p->st) {
case DIE:
p->o.h=7;
- if(!dieanim[++p->s]) {p->st=DEAD;MN_killedp();}
+ if(!plr_dieanim[++p->s]) {p->st=DEAD;MN_killedp();}
p->o.xv=Z_dec(p->o.xv,1);
break;
case SLOP:
p->o.h=6;
p->o.xv=Z_dec(p->o.xv,1);
break;
case SLOP:
p->o.h=6;
- if(!slopanim[++p->s]) {p->st=MESS;MN_killedp();}
+ if(!plr_slopanim[++p->s]) {p->st=MESS;MN_killedp();}
p->o.xv=Z_dec(p->o.xv,1);
break;
case GO:
p->o.xv=Z_dec(p->o.xv,1);
break;
case GO:
}
}
}
}
-static int standspr(player_t *p) {
- if(p->f&PLF_UP) return 'X';
- if(p->f&PLF_DOWN) return 'Z';
- return 'E';
-}
-
-static int wpnspr(player_t *p) {
- if(p->f&PLF_UP) return 'C';
- if(p->f&PLF_DOWN) return 'E';
- return 'A';
-}
-
-void PL_draw(player_t *p) {
- int s,w,wx,wy;
- static int wytab[]={-1,-2,-1,0};
-
- s='A';w=0;wx=wy=0;
- switch(p->st) {
- case STAND:
- if(p->f&PLF_FIRE) {s=standspr(p)+1;w=wpnspr(p)+1;}
- else if(p->pain) {s='G';w='A';wx=p->d?2:-2;wy=1;}
- else {s=standspr(p);w=wpnspr(p);}
- break;
- case DEAD:
- s='N';break;
- case MESS:
- s='W';break;
- case GO:
- if(p->pain) {s='G';w='A';wx=p->d?2:-2;wy=1;}
- else {
- s=goanim[p->s/8];w=(p->f&PLF_FIRE)?'B':'A';
- wx=p->d?2:-2;wy=1+wytab[s-'A'];
- }
- break;
- case DIE:
- s=dieanim[p->s];break;
- case SLOP:
- s=slopanim[p->s];break;
- case OUT:
- s=0;break;
- }
- if(p->wpn==0) w=0;
- if(w) Z_drawspr(p->o.x+wx,p->o.y+wy,wpn[p->wpn][w-'A'],p->d);
- if(s) Z_drawmanspr(p->o.x,p->o.y,spr[(s-'A')*2+p->d],sprd[(s-'A')*2+p->d],p->color);
-}
-
-void *PL_getspr(int s,int d) {
- return spr[(s-'A')*2+d];
-}
-
static void chk_bfg(player_t *p,int x,int y) {
int dx,dy;
static void chk_bfg(player_t *p,int x,int y) {
int dx,dy;
}
}
}
}
-void bfg_fly(int x,int y,int o) {
+void bfg_fly (int x,int y,int o) {
// if(!g_dm) return;
if(o!=-1) chk_bfg(&pl1,x,y);
if(_2pl) if(o!=-2) chk_bfg(&pl2,x,y);
if(o==-1 || o==-2) MN_warning(x-50,y-50,x+50,y+50);
}
// if(!g_dm) return;
if(o!=-1) chk_bfg(&pl1,x,y);
if(_2pl) if(o!=-2) chk_bfg(&pl2,x,y);
if(o==-1 || o==-2) MN_warning(x-50,y-50,x+50,y+50);
}
-
-void PL_drawst(player_t *p) {
- V_setrect(WD,120,w_o,HT);Z_clrst();
- int i;
-
- if(p->drawst&PL_DRAWAIR)
- if (p->air<PL_AIR)//
- Z_drawstair(p->air);
- if(p->drawst&PL_DRAWLIFE)
- Z_drawstprcnt(0,p->life);
- if(p->drawst&PL_DRAWARMOR)
- Z_drawstprcnt(1,p->armor);
- if(p->drawst&PL_DRAWWPN) {
- switch(p->wpn) {
- case 2: case 5:
- i=p->ammo;break;
- case 3: case 4: case 9:
- i=p->shel;break;
- case 6:
- i=p->rock;break;
- case 10:
- i=p->fuel;break;
- case 7: case 8:
- i=p->cell;break;
- }
- Z_drawstwpn(p->wpn,i);
- }
- if(p->drawst&PL_DRAWFRAG) Z_drawstnum(p->frag);
- if(p->drawst&PL_DRAWKEYS) Z_drawstkeys(p->keys);
- if(!_2pl) if(p->drawst&PL_DRAWLIVES) Z_drawstlives(p->lives);
-}