Files
fs2open.github.com/code/model/model_flags.h
wookieejedi fff19927e7 Add Subsystem Flag to Hide Turrets from Ship Loadout Stats (#4235)
* Add Subsystem Flag to Hide Turrets from Ship Loadout Stats

The statistics summary window in the ship loadout editor shows various aspects and stats of the selected ship. These can be toggled and customized through the ships table, but one line is actually autogenerated, `+Turrets`. This is unideal for certain ships, especially those which use turrets on ships in non-standard ways (for example having an AI controlled turret which shoots bombs). In these cases, the turrets are not actual turrets, and it is confusing for players seeing that there is a turret on the ship in the loadout editor. (I can give more detailed examples using FotG if needed).

This PR adds a subsystem flag which allows the modders to hide a turret subsystem so it is not counted in the auto generation of the `Turrets` summary line. (As a slight cleanup I also removed cleaned up the whitespace formatting on a nearby, but unrelated line).

* sync names

* fix renaming
2022-05-01 17:10:56 -04:00

112 lines
7.0 KiB
C++

#ifndef MODEL_FLAGS_H
#define MODEL_FLAGS_H
#include "globalincs/flagset.h"
namespace Model {
FLAG_LIST(Submodel_flags) {
Can_move, // If true, the position and/or orientation of this submodel can change due to rotation of itself OR a parent
Is_live_debris, // whether current submodel is a live debris model
Is_thruster, // is an engine thruster submodel
Is_damaged, // is a submodel that represents a damaged submodel (e.g. a -destroyed version of some other submodel)
Do_not_scale_detail_distances, // if set should not scale boxes or spheres based on 'model detail' settings
Gun_rotation, // for animated weapon models
Instant_rotate_accel, // rotating submodels instantly reach their desired velocity
No_collisions, // for $no_collisions property - kazan
Nocollide_this_only, //SUSHI: Like no_collisions, but not recursive. For the "replacement" collision model scheme.
Collide_invisible, //SUSHI: If set, this submodel should allow collisions for invisible textures. For the "replacement" collision model scheme.
Use_render_box_offset, // whether an offset has been defined; needed because one can't tell just by looking at render_box_offset
Use_render_sphere_offset, // whether an offset has been defined; needed because one can't tell just by looking at render_sphere_offset
Attach_thrusters, //zookeeper: If set and this submodel or any of its parents rotates, also rotates associated thrusters.
NUM_VALUES
};
FLAG_LIST(Subsystem_Flags) {
Rotates, // This means the object rotates automatically
Stepped_rotate, // This means that the rotation occurs in steps
Ai_rotate, // This means that the rotation is controlled by ai
Crewpoint, // If set, this is a crew point.
Awacs, // If set, this subsystem has AWACS capability
Artillery, // if this rotates when weapons are fired - Goober5000
Triggered, // rotates when triggered by something
Untargetable, // Goober5000
Carry_no_damage, // WMC
Use_multiple_guns, // WMC
Fire_on_normal, // forces a turret to fire down its normal vecs
Turret_hull_check, // makes the turret check to see if it's going to shoot through it's own hull before fireing - Bobboau
Turret_fixed_fp, // forces turret (when defined with multiple weapons) to prevent the firepoints from alternating
Turret_salvo, // forces turret to fire salvos (all guns simultaneously) - independent targeting
Fire_on_target, // prevents turret from firing unless it is pointing at the firingpoints are pointing at the target
No_ss_targeting, // toggles the subsystem targeting for the turret
Turret_reset_idle, // makes turret reset to their initial position if the target is out of field of view
Turret_restricted_fov, // tells the game to use additional calculations should turret have a limited base fov or elevation
Carry_shockwave, // subsystem - even with 'carry no damage' flag - will carry shockwave damage to the hull
Allow_landing, // This subsystem can be landed on
Fov_edge_check, // Tells the game to use better FOV edge checking with this turret
Fov_required, // Tells game not to allow this turret to attempt targeting objects out of FOV
No_replace, // set the subsys not to draw replacement ('destroyed') model
No_live_debris, // sets the subsys not to release live debris
Ignore_if_dead, // tells homing missiles to ignore the subsys if its dead and home on to hull instead of earlier subsys pos
Allow_vanishing, // allows subsystem to vanish (prevents explosions & sounds effects from being played)
Damage_as_hull, // applies armor damage to subsystem instead of subsystem damage - FUBAR
Turret_locked, // Turret starts locked by default - Sushi
No_aggregate, // Don't include with aggregate subsystem types - Goober5000
Turret_anim_wait, // Turret won't fire until animation is complete - Sushi
Player_turret_sound,
Turret_only_target_if_can_fire,// Turrets only target things they're allowed to shoot at (e.g. if check-hull fails, won't keep targeting)
No_disappear, // Submodel won't disappear when subsystem destroyed
Collide_submodel, // subsystem takes damage only from hits which impact the associated submodel
Destroyed_rotation, // allows subobjects to continue to rotate even if they have been destroyed
Turret_use_ammo, // enables ammo consumption for turrets (DahBlount)
Autorepair_if_disabled, // Allows the subsystem to repair itself even if disabled (MageKing17)
No_autorepair_if_disabled, // Inversion of the previous; disallows this particular subsystem if the ship-wide flag is set (MageKing17)
Share_fire_direction, // (DahBlount) Whenever the turret fires, make all firing points fire in the same direction.
No_sparks, // Subsystem does not generate sparks if hit - m!m
No_impact_debris, // Don't spawn the small debris on impact - m!m
Hide_turret_from_loadout_stats, // Turret is not accounted for in auto-generated "Turrets" line in the ship loadout window --wookieejedi
NUM_VALUES
};
FLAG_LIST(Render_Flags) {
Normal, // Draw a normal object
Show_outline, // Draw the object in outline mode. Color specified by model_set_outline_color
Show_pivots, // Show the pivot points
Show_paths, // Show the paths associated with a model
Show_radius, // Show the radius around the object
Show_shields, // Show the shield mesh
Show_thrusters, // Show the engine thrusters. See model_set_thrust for how long it draws.
Lock_detail, // Only draw the detail level defined in model_set_detail_level
No_polys, // Don't draw the polygons.
No_lighting, // Don't perform any lighting on the model.
No_texturing, // Draw textures as flat-shaded polygons.
No_correct, // Don't to correct texture mapping
No_smoothing, // Don't perform smoothing on vertices.
Is_asteroid, // When set, treat this as an asteroid.
Is_missile, // When set, treat this as a missilie. No lighting, small thrusters.
Show_outline_preset, // Draw the object in outline mode. Color assumed to be set already.
Show_invisible_faces, // Show invisible faces as green...
Autocenter, // Always use the center of the hull bounding box as the center, instead of the pivot point
Bay_paths, // draw bay paths
All_xparent, // render it fully transparent
No_zbuffer, // switch z-buffering off completely
No_cull, // don't cull backfacing poly's
Force_texture, // force a given texture to always be used
Force_lower_detail, // force the model to draw 1 LOD lower, if possible
Edge_alpha, // makes norms that are faceing away from you render more transparent -Bobboau
Center_alpha, // oposite of above -Bobboau
No_fogging, // Don't fog - taylor
Show_outline_htl, // Show outlines (wireframe view) using HTL method
No_glowmaps, // disable rendering of glowmaps - taylor
Full_detail, // render all valid objects, particularly ones that are otherwise in/out of render boxes - taylor
Force_clamp, // force clamp - Hery
Animated_shader, // Use a animated Shader - Valathil
NUM_VALUES
};
}
#endif