mirror of
https://github.com/scp-fs2open/fs2open.github.com.git
synced 2026-11-11 04:31:35 -10:00
git-svn-id: svn://svn.icculus.org/fs2open/trunk/fs2_open@3869 387891d4-d844-0410-90c0-e4c51a9137d3
177 lines
5.2 KiB
C
177 lines
5.2 KiB
C
/*
|
|
* Copyright (C) Volition, Inc. 1999. All rights reserved.
|
|
*
|
|
* All source code herein is the property of Volition, Inc. You may not sell
|
|
* or otherwise commercially exploit the source or things you created based on the
|
|
* source.
|
|
*
|
|
*/
|
|
|
|
/*
|
|
* $Logfile: /Freespace2/code/Weapon/Shockwave.h $
|
|
* $Revision: 2.13 $
|
|
* $Date: 2007-01-07 12:57:36 $
|
|
* $Author: taylor $
|
|
*
|
|
* Header file for creating and managing shockwaves
|
|
*
|
|
* $Log: not supported by cvs2svn $
|
|
* Revision 2.12 2006/09/11 06:51:17 taylor
|
|
* fixes for stuff_string() bounds checking
|
|
*
|
|
* Revision 2.11 2005/12/04 19:02:36 wmcoolmon
|
|
* Better XMT beam section handling ("+Index:"); weapon shockwave armor support; countermeasures as weapons
|
|
*
|
|
* Revision 2.10 2005/10/30 06:44:59 wmcoolmon
|
|
* Codebase commit - nebula.tbl, scripting, new dinky explosion/shockwave stuff, moving muzzle flashes
|
|
*
|
|
* Revision 2.9 2005/08/05 15:33:45 taylor
|
|
* fix 3-D shockwave frame detection so that it will use the proper number of frames for the animation (not less, not more)
|
|
*
|
|
* Revision 2.8 2005/07/24 06:01:37 wmcoolmon
|
|
* Multiple shockwaves support.
|
|
*
|
|
* Revision 2.7 2005/07/24 00:32:45 wmcoolmon
|
|
* Synced 3D shockwaves' glowmaps with the model, tossed in some medals.tbl
|
|
* support for the demo/FS1
|
|
*
|
|
* Revision 2.6 2005/07/13 03:35:30 Goober5000
|
|
* remove PreProcDefine #includes in FS2
|
|
* --Goober5000
|
|
*
|
|
* Revision 2.5 2005/04/05 05:53:25 taylor
|
|
* s/vector/vec3d/g, better support for different compilers (Jens Granseuer)
|
|
*
|
|
* Revision 2.4 2004/08/11 05:06:36 Kazan
|
|
* added preprocdefines.h to prevent what happened with fred -- make sure to make all fred2 headers include this file as the _first_ include -- i have already modified fs2 files to do this
|
|
*
|
|
* Revision 2.3 2004/03/05 09:01:54 Goober5000
|
|
* Uber pass at reducing #includes
|
|
* --Goober5000
|
|
*
|
|
* Revision 2.2 2003/08/22 07:35:09 bobboau
|
|
* specular code should be bugless now,
|
|
* cell shadeing has been added activated via the comand line '-cell',
|
|
* 3D shockwave models, and a transparency method I'm calling edge and center alpha that could be usefull for other things, ask for details
|
|
*
|
|
* Revision 2.1 2002/08/01 01:41:11 penguin
|
|
* The big include file move
|
|
*
|
|
* Revision 2.0 2002/06/03 04:02:29 penguin
|
|
* Warpcore CVS sync
|
|
*
|
|
* Revision 1.1 2002/05/02 18:03:13 mharris
|
|
* Initial checkin - converted filenames and includes to lower case
|
|
*
|
|
*
|
|
* 7 8/27/99 1:34a Andsager
|
|
* Modify damage by shockwaves for BIG|HUGE ships. Modify shockwave damge
|
|
* when weapon blows up.
|
|
*
|
|
* 6 7/18/99 12:32p Dave
|
|
* Randomly oriented shockwaves.
|
|
*
|
|
* 5 3/23/99 2:29p Andsager
|
|
* Fix shockwaves for kamikazi and Fred defined. Collect together
|
|
* shockwave_create_info struct.
|
|
*
|
|
* 4 2/26/99 4:14p Dave
|
|
* Put in the ability to have multiple shockwaves for ships.
|
|
*
|
|
* 3 11/05/98 5:55p Dave
|
|
* Big pass at reducing #includes
|
|
*
|
|
* 2 10/07/98 10:54a Dave
|
|
* Initial checkin.
|
|
*
|
|
* 1 10/07/98 10:51a Dave
|
|
*
|
|
* 11 4/15/98 10:17p Mike
|
|
* Training mission #5.
|
|
* Fix application of subsystem damage.
|
|
*
|
|
* 10 2/26/98 10:08p Hoffoss
|
|
* Rewrote state saving and restoring to fix bugs and simplify the code.
|
|
*
|
|
* 9 2/20/98 8:33p Lawrance
|
|
* Add function to query shockwave max radius
|
|
*
|
|
* 8 2/14/98 4:43p Lawrance
|
|
* add shockwave_weapon_index() to interface
|
|
*
|
|
* 7 2/02/98 8:47a Andsager
|
|
* Ship death area damage applied as instantaneous damage for small ships
|
|
* and shockwaves for large (>50 radius) ships.
|
|
*
|
|
* 6 7/16/97 3:50p Lawrance
|
|
* render shockwaves first, to fake transparency
|
|
*
|
|
* 5 7/16/97 2:52p Lawrance
|
|
* make shockwaves objects
|
|
*
|
|
* 4 7/15/97 7:26p Lawrance
|
|
* make shockwave blast persist over time
|
|
*
|
|
* 3 7/09/97 1:56p Lawrance
|
|
* add savegame support for shockwaves
|
|
*
|
|
* 2 7/08/97 6:00p Lawrance
|
|
* implementing shockwaves
|
|
*
|
|
* 1 7/08/97 1:30p Lawrance
|
|
*
|
|
* $NoKeywords: $
|
|
*/
|
|
|
|
#ifndef __SHOCKWAVE_H__
|
|
#define __SHOCKWAVE_H__
|
|
|
|
#include "globalincs/pstypes.h"
|
|
#include "globalincs/globals.h"
|
|
|
|
struct object;
|
|
|
|
#define SW_USED (1<<0)
|
|
#define SW_WEAPON (1<<1)
|
|
#define SW_SHIP_DEATH (1<<2)
|
|
#define SW_WEAPON_KILL (1<<3) // Shockwave created when weapon destroyed by another
|
|
|
|
#define MAX_SHOCKWAVES 16
|
|
#define SW_MAX_OBJS_HIT 64
|
|
|
|
typedef struct shockwave_create_info {
|
|
char name[MAX_FILENAME_LEN];
|
|
char pof_name[MAX_FILENAME_LEN];
|
|
|
|
float inner_rad;
|
|
float outer_rad;
|
|
float damage;
|
|
float blast;
|
|
float speed;
|
|
angles rot_angles;
|
|
|
|
int damage_type_idx;
|
|
|
|
void load();
|
|
|
|
shockwave_create_info() { memset(this, 0, sizeof(shockwave_create_info)); damage_type_idx = -1; }
|
|
} shockwave_create_info;
|
|
|
|
void shockwave_close();
|
|
void shockwave_level_init();
|
|
void shockwave_level_close();
|
|
void shockwave_delete(object *objp);
|
|
void shockwave_move_all(float frametime);
|
|
int shockwave_create(int parent_objnum, vec3d *pos, shockwave_create_info *sci, int flag, int delay = -1);
|
|
void shockwave_render(object *objp);
|
|
|
|
int shockwave_get_weapon_index(int index);
|
|
float shockwave_get_min_radius(int index);
|
|
float shockwave_get_max_radius(int index);
|
|
float shockwave_get_damage(int index);
|
|
int shockwave_get_damage_type_idx(int index);
|
|
int shockwave_get_framenum(int index, int num_frames);
|
|
int shockwave_get_flags(int index);
|
|
|
|
#endif /* __SHOCKWAVE_H__ */
|