diff --git a/source/units/unit_definitions.c b/source/units/unit_definitions.c index c5e0372f..b4d4bfa0 100644 --- a/source/units/unit_definitions.c +++ b/source/units/unit_definitions.c @@ -41,4 +41,25 @@ long unit_definition_get_active_hud_index( struct unit_hud_reference)->hud); } +long unit_definition_get_seat_active_hud_index( + struct unit_definition const *definition, + short seat_index, + boolean multiplayer) +{ + struct unit_seat *seat = TAG_BLOCK_GET_ELEMENT( + &definition->unit.seats, + seat_index, + struct unit_seat); + short hud_index = multiplayer != FALSE; + hud_index = MIN(hud_index, seat->seat_huds.count - 1); + + if (hud_index < 0) + return NONE; + + return verify_tag_reference(&TAG_BLOCK_GET_ELEMENT( + &seat->seat_huds, + hud_index, + struct unit_hud_reference)->hud); +} + /* ---------- private code */ diff --git a/source/units/unit_definitions.h b/source/units/unit_definitions.h index 95d62014..768f2d20 100644 --- a/source/units/unit_definitions.h +++ b/source/units/unit_definitions.h @@ -164,6 +164,7 @@ struct unit_definition /* ---------- prototypes/EXAMPLE.C */ long unit_definition_get_active_hud_index(struct unit_definition const *definition, boolean multiplayer); +long unit_definition_get_seat_active_hud_index(struct unit_definition const *definition, short seat_index, boolean multiplayer); /* ---------- globals */