Fold calls to hud_printf_vulcan_ammo
The conditional is a bit ugly due to the D1 test.
--------
#include <cstdio>
void hud_printf_vulcan_ammo(int mline, int x, int y, int line = __builtin_LINE())
{
printf("mline=%2i line=%2i x=%2i y=%2i\n", mline, line, x, y);
}
void expanded_form(int full, int vertical, int mline = __builtin_LINE())
{
const int x = 10, y = 20, line_spacing = 5;
if (full)
{
if (!vertical)
hud_printf_vulcan_ammo(mline, x, y - line_spacing);
#if defined(DXX_BUILD_DESCENT_I)
else
hud_printf_vulcan_ammo(mline, x, y);
#endif
}
else
hud_printf_vulcan_ammo(mline, x - 2, y - 3);
}
void folded_form(int full, int vertical, int mline = __builtin_LINE())
{
const int x = 10, y = 20, line_spacing = 5;
int vx, vy;
if (full ? (
vertical ?
#if defined(DXX_BUILD_DESCENT_I)
(vx = x, vy = y, true)
#else
false
#endif
: (vx = x, vy = y - line_spacing, true)
) : (vx = x - 2, vy = y - 3, true))
hud_printf_vulcan_ammo(mline, vx, vy);
}
int main()
{
#define run(f) \
f(0, 0); \
f(1, 0); \
f(0, 1); \
f(1, 1)
run(expanded_form);
run(folded_form);
}
--------