From fb3ccca04e771dea52616f4e58a82f200188fcbf Mon Sep 17 00:00:00 2001 From: TimeServ Date: Mon, 28 Nov 2005 02:37:17 +0000 Subject: [PATCH] generic stat number elements a bunch of TODOs added... git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@1614 fc73d0e0-1445-4013-8a0c-d673dee63da5 --- plugins/hud/ui_sbar.c | 103 ++++++++++++++++++++++++++---------------- 1 file changed, 64 insertions(+), 39 deletions(-) diff --git a/plugins/hud/ui_sbar.c b/plugins/hud/ui_sbar.c index 476d0d3d3..c6beb28ea 100644 --- a/plugins/hud/ui_sbar.c +++ b/plugins/hud/ui_sbar.c @@ -159,12 +159,11 @@ typedef struct { drawelementfnc_t Hud_SBar; +drawelementfnc_t Hud_StatSmall; +drawelementfnc_t Hud_StatBig; drawelementfnc_t Hud_ArmourPic; -drawelementfnc_t Hud_ArmourBig; drawelementfnc_t Hud_HealthPic; -drawelementfnc_t Hud_HealthBig; drawelementfnc_t Hud_CurrentAmmoPic; -drawelementfnc_t Hud_CurrentAmmoBig; drawelementfnc_t Hud_IBar; drawelementfnc_t Hud_Weapon; drawelementfnc_t Hud_W_Lightning; @@ -173,29 +172,45 @@ drawelementfnc_t Hud_Rune; drawelementfnc_t Hud_Ammo; drawelementfnc_t Hud_ScoreCard; drawelementfnc_t Hud_Blackness; +// TODO: more elements +// - generalized graphic elements +// - cvar controlled small and big numbers +// - alias controlled graphic elements (both +/-showscores like and alias calling?) +// - Q2-style current weapon icon + +int statsremap[] = +{ + STAT_HEALTH, + STAT_ARMOR, + STAT_AMMO, + STAT_SHELLS, + STAT_NAILS, + STAT_ROCKETS, + STAT_NAILS +}; typedef struct { drawelementfnc_t *draw; + char *name; int width, height; int maxsubtype; } drawelement_t; drawelement_t drawelement[] = { - {Hud_SBar, 320, 24, 0}, - {Hud_ArmourPic, 24, 24, 0}, - {Hud_ArmourBig, 24*3, 24, 0}, - {Hud_HealthPic, 24, 24, 0}, - {Hud_HealthBig, 24*3, 24, 0}, - {Hud_CurrentAmmoPic, 24, 24, 0}, - {Hud_CurrentAmmoBig, 24*3, 24, 0}, - {Hud_IBar, 320, 24, 0}, - {Hud_Weapon, 24, 16, 0}, - {Hud_W_Lightning, 24, 16, 0}, - {Hud_Powerup, 16, 16, 5}, - {Hud_Rune, 8, 16, 3}, - {Hud_Ammo, 42, 11, 3}, - {Hud_Blackness, 16, 16, 0}, - {Hud_ScoreCard, 0, 0, 16} + {Hud_SBar, "Status bar", 320, 24, 0}, + {Hud_StatSmall, "Stat (small)", 8*3, 8, 6}, // equal to sizeof(statsremap)/sizeof(statsremap[0])-1 + {Hud_StatBig, "Stat (big)", 24*3, 24, 6}, // equal to sizeof(statsremap)/sizeof(statsremap[0])-1 + {Hud_ArmourPic, "Armor pic", 24, 24, 0}, + {Hud_HealthPic, "Health pic", 24, 24, 0}, + {Hud_CurrentAmmoPic, "Ammo pic", 24, 24, 0}, + {Hud_IBar, "Info bar", 320, 24, 0}, + {Hud_Weapon, "Weapon pic", 24, 16, 0}, + {Hud_W_Lightning, "Shaft pic", 24, 16, 0}, + {Hud_Powerup, "Powerup pic", 16, 16, 5}, + {Hud_Rune, "Rune pic", 8, 16, 3}, + {Hud_Ammo, "Ammo display", 42, 11, 3}, + {Hud_Blackness, "Blackness", 16, 16, 0}, + {Hud_ScoreCard, "Scorecard", 0, 0, 16} }; huddefaultelement_t hedefaulttype[] = { @@ -213,7 +228,8 @@ huddefaultelement_t hedefaulttype[] = { { 24, -24, DZ_BOTTOMLEFT, 1, - Hud_ArmourBig + Hud_StatBig, + 1 }, { @@ -224,7 +240,8 @@ huddefaultelement_t hedefaulttype[] = { { 24*6, -24, DZ_BOTTOMLEFT, 1, - Hud_HealthBig + Hud_StatBig, + 0 }, { @@ -235,7 +252,8 @@ huddefaultelement_t hedefaulttype[] = { { 248, -24, DZ_BOTTOMLEFT, 1, - Hud_CurrentAmmoBig + Hud_StatBig, + 2 }, { @@ -574,6 +592,7 @@ void Hud_SBar(void) { UI_DrawPic(sbarback, 0, 0, 320, 24); } + void Hud_ArmourPic(void) { if (stats[STAT_ITEMS] & IT_ARMOR3) @@ -583,14 +602,7 @@ void Hud_ArmourPic(void) else if (stats[STAT_ITEMS] & IT_ARMOR1 || hudedit) UI_DrawPic(pic_armour[0], 0, 0, 24, 24); } -void Hud_ArmourBig(void) -{ - int i = stats[STAT_ARMOR]; - if (hudedit) - i = 999; - UI_DrawBigNumber(i, 0, 0, i < 25); -} void Hud_HealthPic(void) { int hl; @@ -628,15 +640,28 @@ void Hud_HealthPic(void) // else UI_DrawPic(pic_face[4-hl], 0, 0, 24, 24); } -void Hud_HealthBig(void) + +void Hud_StatBig(void) { - int i = stats[STAT_HEALTH]; - if (hudedit) - i = 999; + int i = stats[statsremap[sbartype]]; UI_DrawBigNumber(i, 0, 0, i < 25); } +void Hud_StatSmall(void) +{ + int i = stats[statsremap[sbartype]]; + + // TODO: need some sort of options thing to change between brown/white/gold text + UI_DrawChar(i%10+18, 19, 0); + i/=10; + if (i) + UI_DrawChar(i%10+18, 11, 0); + i/=10; + if (i) + UI_DrawChar(i%10+18, 3, 0); +} + void Hud_CurrentAmmoPic(void) { if ((stats[STAT_ITEMS] & IT_AMMO1)) @@ -648,14 +673,7 @@ void Hud_CurrentAmmoPic(void) else if (stats[STAT_ITEMS] & IT_AMMO4 || hudedit) UI_DrawPic(pic_ammo[3], 0, 0, 24, 24); } -void Hud_CurrentAmmoBig(void) -{ - int i = stats[STAT_AMMO]; - if (hudedit) - i = 999; - UI_DrawBigNumber(i, 0, 0, i < 25); -} void Hud_IBar(void) { UI_DrawPic(ibarback, 0, 0, 320, 24); @@ -1108,6 +1126,11 @@ void UI_KeyPress(int key, int mx, int my) return; } + // TODO: extra buttons + // - toggle clip to edges and clip to other controls + // - raise to front + // - maybe toggle snap to grid instead of holding shift with mouse? + if (key == 'n') { currentitem++; @@ -1210,6 +1233,8 @@ int Plug_MenuEvent(int *args) { case 0: //draw + // TODO: some sort of element property display + if (mousedown) { element[currentitem].x = args[2] - mouseofsx;