diff --git a/src/smoke.c b/src/smoke.c
index 6b012610b2eb64487d85602e9dc595bf65a50e19..19bf714fb4f5393a7bdd4c5081dc026d6fcdcfc5 100644 (file)
--- a/src/smoke.c
+++ b/src/smoke.c
#include "glob.h"
#include <stdlib.h>
-#include "vga.h"
#include "view.h"
#include "smoke.h"
+#include "game.h"
#include "fx.h"
#include "misc.h"
+#include "my.h"
+#include "monster.h"
#define MAXSR 20
-#define SMSN 10
-#define FLSN 8
+smoke_t sm[MAXSMOK];
-#pragma pack(1)
-typedef struct{
- int x,y,xv,yv;
- byte t,s;
- short o;
-}smoke_t;
-#pragma pack()
-
-static smoke_t sm[MAXSMOK];
static int sr_r,sxr[MAXSR],syr[MAXSR];
static int lsm;
-static void *spr[SMSN],*fspr[FLSN];
static void *burnsnd;
static int burntm=0;
-byte flametab[16]={
-0xBC,0xBA,0xB8,0xB6,0xB4,0xB2,0xB0,0xD5,0xD6,0xD7,0xA1,0xA0,0xE3,0xE2,0xE1,0xE0
-};
-
void SMK_savegame (FILE *h) {
int i, n;
for (i = n = 0; i < MAXSMOK; ++i) {
void SMK_loadgame (FILE *h) {
int i, n;
- myfread32(&n, h);
+ n = myfread32(h);
for (i = 0; i < n; ++i) {
- myfread32(&sm[i].x, h);
- myfread32(&sm[i].y, h);
- myfread32(&sm[i].xv, h);
- myfread32(&sm[i].xv, h);
- myfread8(&sm[i].t, h);
- myfread8(&sm[i].s, h);
- myfread16(&sm[i].o, h);
+ sm[i].x = myfread32(h);
+ sm[i].y = myfread32(h);
+ sm[i].xv = myfread32(h);
+ sm[i].xv = myfread32(h);
+ sm[i].t = myfread8(h);
+ sm[i].s = myfread8(h);
+ sm[i].o = myfread16(h);
}
}
-void SMK_init(void) {
+void SMK_init (void) {
int i;
for(i=0;i<MAXSMOK;++i) {sm[i].t=0;}
burntm=0;
}
-void SMK_alloc(void) {
+void SMK_alloc (void) {
int i;
-
burnsnd=Z_getsnd("BURN");
- for(i=0;i<SMSN;++i) spr[i]=Z_getspr("SMOK",i,0,NULL);
- for(i=0;i<FLSN;++i) fspr[i]=Z_getspr("FLAM",i,0,NULL);
for(i=0;i<MAXSR;++i) {
sxr[i]=myrand(256*2+1)-256;
syr[i]=myrand(256*2+1)-256;
if(++lsm>=MAXSMOK) lsm=0;
}
-void SMK_act(void) {
+void SMK_act (void) {
int i,ox,oy;
static obj_t o;
}
}
-void SMK_draw(void) {
- int i,s;
-
- for(i=0;i<MAXSMOK;++i) if(sm[i].t) switch(sm[i].s) {
- case 0:
- if((s=sm[i].t)>=(SMSN-1)*3) s=0; else s=SMSN-1-s/3;
- V_sprf((sm[i].x>>8)-w_x+WD/2,(sm[i].y>>8)-w_y+HT/2+1+w_o,spr[s],&smoke_sprf);//V_sprf((sm[i].x>>8)-w_x+100,(sm[i].y>>8)-w_y+50+w_o,spr[s],&smoke_sprf);
- break;
- case 1:
- if((s=sm[i].t)>=(FLSN-1)) s=0; else s=FLSN-1-s;
- V_sprf((sm[i].x>>8)-w_x+WD/2,(sm[i].y>>8)-w_y+HT/2+1+w_o,fspr[s],&flame_sprf);//V_sprf((sm[i].x>>8)-w_x+100,(sm[i].y>>8)-w_y+50+w_o,fspr[s],&flame_sprf);
- break;
- }
-}
-
-void SMK_add(int x,int y,int xv,int yv,byte t,byte s,short o) {
+static void SMK_add (int x, int y, int xv, int yv, byte t, byte s, short o) {
int i;
if(!Z_canfit(x>>8,(y>>8)+3,3,7)) return;
inclast();
}
-void SMK_gas(int x0,int y0,int xr,int yr,int xv,int yv,int k) {
+void SMK_gas (int x0, int y0, int xr, int yr, int xv, int yv, int k) {
int i,x,y;
static int sxv,syv;
}
}
-void SMK_flame(int x0,int y0,int ox,int oy,int xr,int yr,int xv,int yv,int k,int o) {
+void SMK_flame (int x0, int y0, int ox, int oy, int xr, int yr, int xv, int yv, int k, int o) {
int i,x,y;
static int sxv,syv;