/* * 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. * */ #ifndef __FREESPACE_EMP_MISSILE_HEADER_FILE_ #define __FREESPACE_EMP_MISSILE_HEADER_FILE_ // ---------------------------------------------------------------------------------------------------- // EMP EFFECT DEFINES/VARS // struct vec3d; // default EMP effect values for weapons which do not specify them // NOTE : anything aboce intensity max or time max will be capped #define EMP_INTENSITY_MAX (500.0f) #define EMP_TIME_MAX (30.0f) #define EMP_DEFAULT_INTENSITY (300.0f) #define EMP_DEFAULT_TIME (10.0f) // for identifying specific text gauges when messing text up #define NUM_TEXT_STAMPS 36 #define EG_NULL -1 // meaning, always make the string empty #define EG_WEAPON_TITLE 0 // title bar of the weapon gauge #define EG_WEAPON_P1 1 // first primary weapon slot #define EG_WEAPON_P2 2 // second primary weapon slot #define EG_WEAPON_P3 3 // third primary weapon slot #define EG_WEAPON_S1 4 // first secondary weapon slot #define EG_WEAPON_S2 5 // second secondary weapon slot #define EG_ESCORT1 6 // first item on escort list #define EG_ESCORT2 7 // second item on escort list #define EG_ESCORT3 8 // third item on escort list #define EG_OBJ_TITLE 9 // titlebar of the directives gauge #define EG_OBJ1 10 // line 1 of the directives display #define EG_OBJ2 11 // line 2 #define EG_OBJ3 12 // line 3 #define EG_OBJ4 13 // line 4 #define EG_OBJ5 14 // line 5 #define EG_TBOX_EXTRA1 15 // extra target info line 1 #define EG_TBOX_EXTRA2 16 // extra target info line 2 #define EG_TBOX_EXTRA3 17 // extra target info line 3 #define EG_TBOX_CLASS 18 // target class #define EG_TBOX_DIST 20 // target dist #define EG_TBOX_SPEED 21 // target speed #define EG_TBOX_CARGO 22 // target cargo #define EG_TBOX_HULL 23 // target hull #define EG_TBOX_NAME 24 // target name #define EG_TBOX_INTEG 25 // target integrity #define EG_SQ1 26 // squadmsg 1 #define EG_SQ2 27 // squadmsg 2 #define EG_SQ3 28 // squadmsg 3 #define EG_SQ4 29 // squadmsg 4 #define EG_SQ5 30 // squadmsg 5 #define EG_SQ6 31 // squadmsg 6 #define EG_SQ7 32 // squadmsg 7 #define EG_SQ8 33 // squadmsg 8 #define EG_SQ9 34 // squadmsg 9 #define EG_SQ10 35 // squadmsg 10 class object; class ship; struct weapon_info; // ---------------------------------------------------------------------------------------------------- // EMP EFFECT FUNCTIONS // // initialize the EMP effect for the mission void emp_level_init(); // apply the EMP effect to all relevant ships void emp_apply(vec3d *pos, float inner_radius, float outer_radius, float emp_intensity, float emp_time, bool use_emp_time_for_capship_turrets = false); // start the emp effect for the passed ship (setup lightning arcs, timestamp, etc) // NOTE : if this ship is also me, I should call emp_start_local() as well void emp_start_ship(object *ship_obj, float intensity, float time); // process a ship for this frame void emp_process_ship(ship *shipp); // start the emp effect for MYSELF (intensity == arbitrary intensity variable, time == time the effect will last) // NOTE : time should be in seconds void emp_start_local(float intensity, float time, const SCP_string &text); void emp_start_local(float intensity, float time); // stop the emp effect cold void emp_stop_local(); // if the EMP effect is active int emp_active_local(); // process some stuff every frame (before frame is rendered) void emp_process_local(); // randomly say yes or no to a gauge, if emp is not active, always say yes int emp_should_blit_gauge(); // emp hud string void emp_hud_string(int x, int y, int gauge_id, const char *str, size_t len, int resize_mode, float scale = 1.0f); // throw some jitter into HUD x and y coords void emp_hud_jitter(int *x, int *y); // current intensity of the EMP effect (0.0 - 1.0) float emp_current_intensity(); #endif