unit particles; interface var bubble:image; pr_1:array [0..7] of image; none1:image; pr_2:array [0..7] of image; none2:image; pr_3:array [0..7] of image; none3:image; pr_4:array [0..7] of image; none4:image; pr_5:array [0..7] of image; none5:image; pr_boom:array [0..15] of image; none6:image; max_particles:integer; s_particles:boolean; gb_up_pa:integer; procedure create_particle(tp,ix,iy:integer); procedure update_particle; procedure draw_particle; implementation uses vars,maps,particles_store; procedure create_particle(tp,ix,iy:integer); var i:integer; begin if s_particles=true then for i:=0 to max_particles do if get_particle_type(i)=0 then begin set_particle(i,tp,0,ix,iy); exit; end; end; procedure null_particle(i:integer); begin set_particle(i,0,0,0,0); end; procedure pr_ai_1(i,maxani:integer); begin set_particle_y(i,get_particle_y(i)-1); set_particle_ani(i,get_particle_ani(i)+1); if get_particle_ani(i)>maxani then null_particle(i); end; procedure pr_ai_bubble(i:integer); var xx,yy:integer; begin set_particle_y(i,get_particle_y(i)-1); xx:=get_particle_x(i) div 16; yy:=get_particle_y(i) div 16; if getmap(xx,yy)<>50 then null_particle(i); end; procedure pr_ai_boom(i:integer); begin set_particle_ani(i,get_particle_ani(i)+1); if get_particle_ani(i)>15 then null_particle(i); end; procedure update_particle; var i:integer; begin if s_particles=true then begin for i:=0 to max_particles do if get_particle_type(i)>0 then begin if get_particle_type(i)=1 then pr_ai_1(i,5); else if get_particle_type(i)=2 then pr_ai_1(i,5); else if get_particle_type(i)=3 then pr_ai_1(i,5); else if get_particle_type(i)=4 then pr_ai_1(i,5); else if get_particle_type(i)=5 then pr_ai_1(i,5); else if get_particle_type(i)=6 then pr_ai_bubble(i); else if get_particle_type(i)=7 then pr_ai_boom(i); else null_particle(i); end; gb_up_pa:=gb_up_pa+1; if gb_up_pa>=2 then gb_up_pa:=0; end; end; procedure draw_particle; var i:integer; begin for i:=0 to max_particles do if get_particle_type(i)>0 then begin if get_particle_type(i)=1 then begin if (get_particle_x(i)-camx>-8) and (get_particle_x(i)-camx-8) and (get_particle_y(i)-camy-8) and (get_particle_x(i)-camx-8) and (get_particle_y(i)-camy-8) and (get_particle_x(i)-camx-8) and (get_particle_y(i)-camy-8) and (get_particle_x(i)-camx-8) and (get_particle_y(i)-camy-8) and (get_particle_x(i)-camx-8) and (get_particle_y(i)-camy-8) and (get_particle_x(i)-camx-8) and (get_particle_y(i)-camy-32) and (get_particle_x(i)-camx-32) and (get_particle_y(i)-camy