Logo Search packages:      
Sourcecode: barrage version File versions  Download package

bfield.h

/***************************************************************************
    copyright            : (C) 2003 by Michael Speck
    email                : http://lgames.sf.net
 ***************************************************************************/

/***************************************************************************
 *                                                                         *
 *   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; either version 2 of the License, or     *
 *   (at your option) any later version.                                   *
 *                                                                         *
 ***************************************************************************/

#ifndef BFIELD_H
#define BFIELD_H

enum {
      BFIELD_DEMO = 0,
      BFIELD_GAME
};

typedef struct {
      SDL_Surface       *img; 
      int         img_x_offset, img_y_offset; /* position of the living tree img_y_offset+h
                                           is the position of the dead tree */
      int         x, y; /* battlefield position */
      int         w, h;
      int         hx, hy;     /* hotspot for impacts */
      int         burn_time; /* if >0 tree is burning down thus when this
                              becomes 0 the tree is dead */
      int         dead; /* hits doesn't start burning */
} Tree;

typedef struct {
      Vector      gun;              /* base point of gun */
      Vector  gun_img_offset;       /* offset added to base point to draw image */
      int   gun_dir;          /* 0 - 8 in 20 steps */
      int   img_gun_x_offset; /* offset in gun image indicating the looking direction */
      Tree  trees[MAX_TREES]; /* living and burned down trees */
      int   tree_count;
      int   gun_delay;        /* while > 0 gun is reloaded */
      int   demo;             /* wether bfield_update fires gun automatically */
      int   demo_delay;       /* demo does not shoot all the time */
      int     demo_hunt_soldiers;   /* while >0 decrease and fire at soldiers when 0
                                 decide 50-50 wether to fire at soldiers or tanks */
      int   delays[UT_LAST];  /* if any gets 0 this unit type enteres the playing field
                                 and the delay is reset to the settings below */
      Range delay_ranges[UT_LAST];  /* the time until next unit type will enter the battlefield */
      Range group_sizes[UT_LAST];   /* number of units that will enter the battlefield */
} BField;

void bfield_init( int type, Vector *gun, Vector *gun_img_offset );

void bfield_finalize();

void bfield_draw( SDL_Surface *dest, int camera_x, int camera_y );

void bfield_update( int ms );

int bfield_gun_is_ready();

void bfield_fire_gun( int type /* ST_... */, Vector *dest, double alpha, double power );

void bfield_reload_gun();

void bfield_handle_impact( Shot *shot );

void bfield_update_gun_dir( int mx, int my );

#endif


Generated by  Doxygen 1.6.0   Back to index