Beispiel #1
0
static void set_local_parent (entity *en, list_types type, entity *parent)
{
	sound_effect
		*raw;

	raw = get_local_entity_data (en);

	#include "entity/system/en_funcs/en_list/set_prnt.h"
}
Beispiel #2
0
static void set_local_child_pred (entity *en, list_types type, entity *child_pred)
{
	sound_effect
		*raw;

	raw = get_local_entity_data (en);

	#include "entity/system/en_funcs/en_list/set_pred.h"
}
Beispiel #3
0
static matrix3x3 *get_local_attitude_matrix_ptr (entity *en)
{
	camera
		*raw;

	raw = get_local_entity_data (en);

	return (&raw->attitude);
}
Beispiel #4
0
static void set_local_child_succ (entity *en, list_types type, entity *child_succ)
{
	weapon
		*raw;

	raw = get_local_entity_data (en);

	#include "entity/system/en_funcs/en_list/set_succ.h"
}
Beispiel #5
0
static void set_local_child_pred (entity *en, list_types type, entity *child_pred)
{
	crater
		*raw;

	raw = (crater *) get_local_entity_data (en);

	#include "entity/system/en_funcs/en_list/set_pred.h"
}
Beispiel #6
0
static void set_local_first_child (entity *en, list_types type, entity *first_child)
{
    fixed_wing
    *raw;

    raw = get_local_entity_data (en);

#include "entity/system/en_funcs/en_list/set_frst.h"
}
Beispiel #7
0
static void set_local_first_child (entity *en, list_types type, entity *first_child)
{
	helicopter
		*raw;

	raw = (helicopter *) get_local_entity_data (en);

	#include "entity/system/en_funcs/en_list/set_frst.h"
}
Beispiel #8
0
static void set_local_parent (entity *en, list_types type, entity *parent)
{
	crater
		*raw;

	raw = (crater *) get_local_entity_data (en);

	#include "entity/system/en_funcs/en_list/set_prnt.h"
}
Beispiel #9
0
static void set_local_int_value (entity *en, int_types type, int value)
{
	weapon
		*raw;

	#if DEBUG_MODULE

	debug_log_entity_args (ENTITY_DEBUG_LOCAL, ENTITY_DEBUG_INT_VALUE, en, type, value);

	#endif

	raw = (weapon *) get_local_entity_data (en);

	switch (type)
	{
		////////////////////////////////////////
		case INT_TYPE_WEAPON_BURST_SIZE:
		////////////////////////////////////////
		{
			raw->burst_size = value;

			break;
		}
		////////////////////////////////////////
		case INT_TYPE_WEAPON_KILL_CODE:
		////////////////////////////////////////
		{
			raw->kill_code = value;

			break;
		}
		////////////////////////////////////////
		case INT_TYPE_LOCK_ON_AFTER_LAUNCH:
		////////////////////////////////////////
		{
			raw->loal_mode = value;

			break;
		}
		////////////////////////////////////////
		case INT_TYPE_WEAPON_MISSILE_PHASE:
		////////////////////////////////////////
		{
			raw->missile_phase = value;

			break;
		}
		////////////////////////////////////////
		default:
		////////////////////////////////////////
		{
			debug_fatal_invalid_int_type (en, type);

			break;
		}
	}
}
Beispiel #10
0
static void set_local_int_value (entity *en, int_types type, int value)
{
    bridge
    *raw;

#if DEBUG_MODULE

    debug_log_entity_args (ENTITY_DEBUG_LOCAL, ENTITY_DEBUG_INT_VALUE, en, type, value);

#endif

    raw = get_local_entity_data (en);

    switch (type)
    {
    ////////////////////////////////////////
    case INT_TYPE_ALIVE:
        ////////////////////////////////////////
    {
        raw->alive = value;

        break;
    }
    ////////////////////////////////////////
    case INT_TYPE_ENTITY_SUB_TYPE:
        ////////////////////////////////////////
    {
        raw->sub_type = value;

        break;
    }
    ////////////////////////////////////////
    case INT_TYPE_START_NODE:
        ////////////////////////////////////////
    {
        raw->start_node = value;

        break;
    }
    ////////////////////////////////////////
    case INT_TYPE_END_NODE:
        ////////////////////////////////////////
    {
        raw->end_node = value;

        break;
    }
    ////////////////////////////////////////
    default:
        ////////////////////////////////////////
    {
        debug_fatal_invalid_int_type (en, type);

        break;
    }
    }
}
Beispiel #11
0
static void *get_local_ptr_value (entity *en, ptr_types type)
{
    vehicle
    *raw;

    void
    *ptr;

    raw = get_local_entity_data (en);

    switch (type)
    {
    ////////////////////////////////////////
    case PTR_TYPE_INSTANCE_3D_OBJECT:
        ////////////////////////////////////////
    {
        ptr = raw->inst3d;

        break;
    }
    ////////////////////////////////////////
    case PTR_TYPE_SOUND_EFFECT_DATA:
        ////////////////////////////////////////
    {
        ptr = raw->sound_effect_data;

        break;
    }
    ////////////////////////////////////////
    case PTR_TYPE_TERRAIN_FACE_NORMAL:
        ////////////////////////////////////////
    {
        ptr = get_3d_terrain_point_data_normal (&raw->terrain_info);

        break;
    }
    ////////////////////////////////////////
    case PTR_TYPE_WEAPON_PACKAGE_STATUS_ARRAY:
        ////////////////////////////////////////
    {
        ptr = raw->weapon_package_status_array;

        break;
    }
    ////////////////////////////////////////
    default:
        ////////////////////////////////////////
    {
        debug_fatal_invalid_ptr_type (en, type);

        break;
    }
    }

    return (ptr);
}
Beispiel #12
0
static vec3d *get_local_vec3d_ptr (entity *en, vec3d_types type)
{
	aircraft
		*raw;

	vec3d
		*v;

	raw = (aircraft *) get_local_entity_data (en);

	switch (type)
	{
		////////////////////////////////////////
		case VEC3D_TYPE_MOTION_VECTOR:
		////////////////////////////////////////
		{
			v = &raw->mob.motion_vector;

			break;
		}
		////////////////////////////////////////
		case VEC3D_TYPE_POSITION:
		////////////////////////////////////////
		{
			v = &raw->mob.position;

			break;
		}
		////////////////////////////////////////
		case VEC3D_TYPE_WEAPON_TO_TARGET_VECTOR:
		////////////////////////////////////////
		{
			v = &raw->weapon_to_target_vector;

			break;
		}
		////////////////////////////////////////
		case VEC3D_TYPE_WEAPON_VECTOR:
		////////////////////////////////////////
		{
			v = &raw->weapon_vector;

			break;
		}
		////////////////////////////////////////
		default:
		////////////////////////////////////////
		{
			debug_fatal_invalid_vec3d_type (en, type);

			break;
		}
	}

	return (v);
}
Beispiel #13
0
static int get_local_int_value (entity *en, int_types type)
{
    bridge
    *raw;

    int
    value;

    raw = get_local_entity_data (en);

    switch (type)
    {
    ////////////////////////////////////////
    case INT_TYPE_ALIVE:
        ////////////////////////////////////////
    {
        value = raw->alive;

        break;
    }
    ////////////////////////////////////////
    case INT_TYPE_ENTITY_SUB_TYPE:
        ////////////////////////////////////////
    {
        value = raw->sub_type;

        break;
    }
    ////////////////////////////////////////
    case INT_TYPE_START_NODE:
        ////////////////////////////////////////
    {
        value = raw->start_node;

        break;
    }
    ////////////////////////////////////////
    case INT_TYPE_END_NODE:
        ////////////////////////////////////////
    {
        value = raw->end_node;

        break;
    }
    ////////////////////////////////////////
    default:
        ////////////////////////////////////////
    {
        debug_fatal_invalid_int_type (en, type);

        break;
    }
    }

    return (value);
}
Beispiel #14
0
static void destroy_local (entity *en)
{
	regen
		*raw;

	////////////////////////////////////////
	//
	// PRE-AMBLE
	//
	////////////////////////////////////////

	#if DEBUG_MODULE

	debug_log_entity_args (ENTITY_DEBUG_LOCAL, ENTITY_DEBUG_DESTROY, en);

	#endif

	raw = (regen *) get_local_entity_data (en);

	////////////////////////////////////////
	//
	// VALIDATE
	//
	////////////////////////////////////////

	ASSERT (!raw->member_root.first_child);

	////////////////////////////////////////
	//
	// DESTROY COMPONENTS
	//
	////////////////////////////////////////

	////////////////////////////////////////
	//
	// UNLINK FROM SYSTEM
	//
	////////////////////////////////////////

	delete_local_entity_from_parents_child_list (en, LIST_TYPE_CURRENT_WAYPOINT);

	delete_local_entity_from_parents_child_list (en, LIST_TYPE_REGEN);

	delete_local_entity_from_parents_child_list (en, LIST_TYPE_UPDATE);

	////////////////////////////////////////
	//
	// FREE ENTITY DATA
	//
	////////////////////////////////////////

	free_mem (raw);

	set_free_entity (en);
}
Beispiel #15
0
static int response_to_unlink_child (entity_messages message, entity *receiver, entity *sender, va_list pargs)
{
	camera
		*raw;

	list_types
		list_type;

	#if DEBUG_MODULE

	debug_log_entity_message (message, receiver, sender, pargs);

	#endif

	raw = get_local_entity_data (receiver);

	list_type = va_arg (pargs, list_types);

	switch (list_type)
	{
		////////////////////////////////////////
		case LIST_TYPE_VIEW:
		////////////////////////////////////////
		{
			if (raw->external_view_entity == sender)
			{
				raw->external_view_entity = NULL;
			}

			notify_view_menu_of_view_list_change (sender);

			break;
		}
		////////////////////////////////////////
		case LIST_TYPE_VIEW_WEAPON:
		////////////////////////////////////////
		{
			ASSERT (sender);

			if (get_view_mode () == VIEW_MODE_EXTERNAL)
			{
				if (get_local_entity_int_value (get_camera_entity (), INT_TYPE_CAMERA_MODE) == CAMERA_MODE_WEAPON)
				{
					notify_local_entity (ENTITY_MESSAGE_SET_CAMERA_ACTION, get_camera_entity (), NULL, CAMERA_ACTION_WEAPON_EXPLOSION);

					reset_weapon_explosion_camera_position (get_local_entity_vec3d_ptr (sender, VEC3D_TYPE_POSITION));
				}
			}

			break;
		}
	}

	return (TRUE);
}
Beispiel #16
0
void add_group_type_to_force_info (entity *en, entity_sub_types group_type)
{
	force
		*raw;
		
	ASSERT (en);

	raw = (force *) get_local_entity_data (en);

	raw->group_count [group_type] ++;
}
Beispiel #17
0
static void get_local_attitude_matrix (entity *en, matrix3x3 attitude)
{
	camera
		*raw;

	ASSERT (attitude);

	raw = get_local_entity_data (en);

	memcpy (attitude, raw->attitude, sizeof (matrix3x3));
}
Beispiel #18
0
int get_local_force_entity_group_count (entity *en, entity_sub_types group_type)
{
	force
		*raw;
		
	ASSERT (en);

	raw = (force *) get_local_entity_data (en);

	return (raw->group_count [group_type]);
}
Beispiel #19
0
static void destroy_local (entity *en)
{
	sprite
		*raw;

	////////////////////////////////////////
	//
	// PRE-AMBLE
	//
	////////////////////////////////////////

	#if DEBUG_MODULE

	debug_log_entity_args (ENTITY_DEBUG_LOCAL, ENTITY_DEBUG_DESTROY, en);

	#endif

	raw = (sprite *) get_local_entity_data (en);

	////////////////////////////////////////
	//
	// VALIDATE
	//
	////////////////////////////////////////

	////////////////////////////////////////
	//
	// DESTROY COMPONENTS
	//
	////////////////////////////////////////

	////////////////////////////////////////
	//
	// UNLINK FROM SYSTEM
	//
	////////////////////////////////////////

	delete_local_entity_from_parents_child_list (en, LIST_TYPE_SECTOR);

	delete_local_entity_from_parents_child_list (en, LIST_TYPE_UPDATE);

	delete_local_entity_from_parents_child_list (en, LIST_TYPE_SPECIAL_EFFECT);

	////////////////////////////////////////
	//
	// FREE ENTITY DATA
	//
	////////////////////////////////////////

	free_mem (raw);

	set_free_entity (en);
}
Beispiel #20
0
static void destroy_local (entity *en)
{
	division
		*raw;

	////////////////////////////////////////
	//
	// PRE-AMBLE
	//
	////////////////////////////////////////

	#if DEBUG_MODULE

	debug_log_entity_args (ENTITY_DEBUG_LOCAL, ENTITY_DEBUG_DESTROY, en);

	#endif

	raw = (division *) get_local_entity_data (en);

	////////////////////////////////////////
	//
	// VALIDATE
	//
	////////////////////////////////////////

	////////////////////////////////////////
	//
	// DESTROY COMPONENTS
	//
	////////////////////////////////////////

	////////////////////////////////////////
	//
	// UNLINK FROM SYSTEM
	//
	////////////////////////////////////////

	unlink_local_entity_children (en, LIST_TYPE_DIVISION);

	delete_local_entity_from_parents_child_list (en, LIST_TYPE_DIVISION);

	delete_local_entity_from_parents_child_list (en, LIST_TYPE_DIVISION_HEADQUARTERS);

	////////////////////////////////////////
	//
	// FREE ENTITY DATA
	//
	////////////////////////////////////////

	free_mem (raw);

	set_free_entity (en);
}
Beispiel #21
0
static void destroy_local (entity *en)
{
	bridge
		*raw;

	////////////////////////////////////////
	//
	// PRE-AMBLE
	//
	////////////////////////////////////////

	#if DEBUG_MODULE

	debug_log_entity_args (ENTITY_DEBUG_LOCAL, ENTITY_DEBUG_DESTROY, en);

	debug_log ("BR_DSTRY: destroying bridge %d", get_local_entity_index (en));

	#endif

	raw = get_local_entity_data (en);

	////////////////////////////////////////
	//
	// VALIDATE
	//
	////////////////////////////////////////

	////////////////////////////////////////
	//
	// DESTROY COMPONENTS
	//
	////////////////////////////////////////

	////////////////////////////////////////
	//
	// UNLINK FROM SYSTEM
	//
	////////////////////////////////////////

	

	destroy_local_entity_children (en, LIST_TYPE_SEGMENT);

	////////////////////////////////////////
	//
	// FREE ENTITY DATA
	//
	////////////////////////////////////////

	free_mem (raw);

	set_free_entity (en);
}
Beispiel #22
0
static vec3d *get_local_vec3d_ptr (entity *en, vec3d_types type)
{
	group
		*raw;

	vec3d
		*v;

	raw = (group *) get_local_entity_data (en);

	switch (type)
	{
		////////////////////////////////////////
		case VEC3D_TYPE_POSITION:
		////////////////////////////////////////
		{
			entity
				*member;

			member = (entity *) get_local_entity_ptr_value (en, PTR_TYPE_GROUP_LEADER);

			if (member)
			{
				v = get_local_entity_vec3d_ptr (member, type);
			}
			else
			{
				v = NULL;
			}

			break;
		}
		////////////////////////////////////////
		case VEC3D_TYPE_LAST_KNOWN_POSITION:
		////////////////////////////////////////
		{
			v = &raw->last_known_position;

			break;
		}
		////////////////////////////////////////
		default:
		////////////////////////////////////////
		{
			debug_fatal_invalid_vec3d_type (en, type);

			break;
		}
	}

	return (v);
}
Beispiel #23
0
static float get_local_float_value (entity *en, float_types type)
{
	mobile
		*raw;

	float
		value;

	raw = (mobile *) get_local_entity_data (en);

	switch (type)
	{
		////////////////////////////////////////
		case FLOAT_TYPE_ALTITUDE:
		////////////////////////////////////////
		{
			value = raw->position.y;

			break;
		}
		////////////////////////////////////////
		case FLOAT_TYPE_HEADING:
		////////////////////////////////////////
		{
			value = get_heading_from_attitude_matrix (raw->attitude);

			break;
		}
		////////////////////////////////////////
		case FLOAT_TYPE_HIGH_VELOCITY:
		case FLOAT_TYPE_LOW_VELOCITY:
		case FLOAT_TYPE_MEDIUM_VELOCITY:
		case FLOAT_TYPE_VELOCITY:
		case FLOAT_TYPE_VERY_HIGH_VELOCITY:
		////////////////////////////////////////
		{
			value = raw->velocity;

			break;
		}
		////////////////////////////////////////
		default:
		////////////////////////////////////////
		{
			debug_fatal_invalid_float_type (en, type);

			break;
		}
	}

	return (value);
}
Beispiel #24
0
void remove_group_type_from_force_info (entity *en, entity_sub_types group_type)
{
	force
		*raw;
		
	ASSERT (en);

	raw = (force *) get_local_entity_data (en);

	ASSERT (raw->group_count [group_type] > 0);

	raw->group_count [group_type] --;
}
Beispiel #25
0
static void play_local_sound (entity *en, viewpoint *vp, float range)
{

	sound_sample_indices
		effect_type;

	int
		rate,
		looping,
		volume,
		panning;

	anti_aircraft
		*raw;

	raw = get_local_entity_data (en);

	if (!raw->vh.sound_effect_data)
	{

		effect_type = vehicle_database [raw->vh.mob.sub_type].continuous_sound_effect_index;

		if (effect_type != SOUND_SAMPLE_INDEX_NONE)
		{

			#if DEBUG_MODULE

			debug_log ("RV_SND: creating sound effect %d", effect_type);

			#endif

			panning = 0;

			rate = 0;

			volume = 0;

			looping = TRUE;
	
			raw->vh.sound_effect_data = create_single_system_sound_effect (effect_type, panning, rate, volume, looping, (void *) en, 0);

			if (raw->vh.sound_effect_data)
			{
	
				raw->vh.valid_sound_effect = TRUE;
	
				play_system_sound_effect (raw->vh.sound_effect_data);
			}
		}
	}
}
Beispiel #26
0
static entity *get_local_child_pred (entity *en, list_types type)
{
	group
		*raw;

	entity
		*child_pred;

	raw = get_local_entity_data (en);

	#include "entity/system/en_funcs/en_list/get_pred.h"

	return (child_pred);
}
Beispiel #27
0
static entity *get_local_parent (entity *en, list_types type)
{
	group
		*raw;

	entity
		*parent;

	raw = get_local_entity_data (en);

	#include "entity/system/en_funcs/en_list/get_prnt.h"

	return (parent);
}
Beispiel #28
0
static entity *get_local_child_succ (entity *en, list_types type)
{
	waypoint
		*raw;

	entity
		*child_succ;

	raw = (waypoint *) get_local_entity_data (en);

	#include "entity/system/en_funcs/en_list/get_succ.h"

	return (child_succ);
}
Beispiel #29
0
static entity *get_local_first_child (entity *en, list_types type)
{
	group
		*raw;

	entity
		*first_child;

	raw = get_local_entity_data (en);

	#include "entity/system/en_funcs/en_list/get_frst.h"

	return (first_child);
}
Beispiel #30
0
static entity *get_local_child_succ (entity *en, list_types type)
{
   routed_vehicle
      *raw;

   entity
      *child_succ;

   raw = get_local_entity_data (en);

   #include "entity/system/en_funcs/en_list/get_succ.h"

   return (child_succ);
}