mirror of
https://gitlab.com/drummyfish/anarch.git
synced 2025-02-17 15:40:19 -05:00
Improve border indicators
This commit is contained in:
parent
464e61160c
commit
9d3ae365c6
12
constants.h
12
constants.h
@ -279,14 +279,14 @@
|
|||||||
|
|
||||||
#define SFG_HUD_MARGIN (SFG_GAME_RESOLUTION_X / 40)
|
#define SFG_HUD_MARGIN (SFG_GAME_RESOLUTION_X / 40)
|
||||||
|
|
||||||
#define SFG_HUD_HEALTH_INDICATOR_WIDTH_PIXELS \
|
#define SFG_HUD_BORDER_INDICATOR_WIDTH_PIXELS \
|
||||||
(SFG_GAME_RESOLUTION_Y / SFG_HUD_HEALTH_INDICATOR_WIDTH)
|
(SFG_GAME_RESOLUTION_Y / SFG_HUD_BORDER_INDICATOR_WIDTH)
|
||||||
|
|
||||||
#define SFG_HUD_HEALTH_INDICATOR_DURATION_FRAMES \
|
#define SFG_HUD_BORDER_INDICATOR_DURATION_FRAMES \
|
||||||
(SFG_HUD_HEALTH_INDICATOR_DURATION / SFG_MS_PER_FRAME)
|
(SFG_HUD_BORDER_INDICATOR_DURATION / SFG_MS_PER_FRAME)
|
||||||
|
|
||||||
#if SFG_HUD_HEALTH_INDICATOR_DURATION_FRAMES == 0
|
#if SFG_HUD_BORDER_INDICATOR_DURATION_FRAMES == 0
|
||||||
#define SFG_HUD_HEALTH_INDICATOR_DURATION_FRAMES 1
|
#define SFG_HUD_BORDER_INDICATOR_DURATION_FRAMES 1
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define SFG_HUD_BAR_HEIGHT \
|
#define SFG_HUD_BAR_HEIGHT \
|
||||||
|
45
main.c
45
main.c
@ -219,6 +219,7 @@ struct
|
|||||||
uint32_t weaponCooldownStartFrame; /**< frame from which weapon cooldown is
|
uint32_t weaponCooldownStartFrame; /**< frame from which weapon cooldown is
|
||||||
counted */
|
counted */
|
||||||
uint32_t lastHurtFrame;
|
uint32_t lastHurtFrame;
|
||||||
|
uint32_t lastItemTakenFrame;
|
||||||
} SFG_player;
|
} SFG_player;
|
||||||
|
|
||||||
RCL_RayConstraints SFG_rayConstraints;
|
RCL_RayConstraints SFG_rayConstraints;
|
||||||
@ -905,6 +906,7 @@ void SFG_initPlayer()
|
|||||||
|
|
||||||
SFG_player.weaponCooldownStartFrame = SFG_gameFrame;
|
SFG_player.weaponCooldownStartFrame = SFG_gameFrame;
|
||||||
SFG_player.lastHurtFrame = SFG_gameFrame;
|
SFG_player.lastHurtFrame = SFG_gameFrame;
|
||||||
|
SFG_player.lastItemTakenFrame = SFG_gameFrame;
|
||||||
|
|
||||||
SFG_player.health = SFG_PLAYER_MAX_HEALTH;
|
SFG_player.health = SFG_PLAYER_MAX_HEALTH;
|
||||||
}
|
}
|
||||||
@ -2018,22 +2020,42 @@ void SFG_gameStep()
|
|||||||
)
|
)
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
if (e->type == SFG_LEVEL_ELEMENT_HEALTH)
|
uint8_t eliminate = 1;
|
||||||
|
|
||||||
|
switch (e->type)
|
||||||
{
|
{
|
||||||
|
case SFG_LEVEL_ELEMENT_HEALTH:
|
||||||
SFG_playerChangeHealth(SFG_HEALTH_KIT_VALUE);
|
SFG_playerChangeHealth(SFG_HEALTH_KIT_VALUE);
|
||||||
|
break;
|
||||||
|
|
||||||
// take, eliminate the item
|
case SFG_LEVEL_ELEMENT_BULLETS:
|
||||||
|
break;
|
||||||
|
|
||||||
|
case SFG_LEVEL_ELEMENT_ROCKETS:
|
||||||
|
break;
|
||||||
|
|
||||||
|
case SFG_LEVEL_ELEMENT_PLASMA:
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
eliminate = 0;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (eliminate)
|
||||||
|
{
|
||||||
SFG_removeItem(i);
|
SFG_removeItem(i);
|
||||||
|
SFG_player.lastItemTakenFrame = SFG_gameFrame;
|
||||||
i--;
|
i--;
|
||||||
}
|
}
|
||||||
else // collide
|
else // collide
|
||||||
|
{
|
||||||
moveOffset = SFG_resolveCollisionWithElement(
|
moveOffset = SFG_resolveCollisionWithElement(
|
||||||
SFG_player.camera.position,moveOffset,ePos);
|
SFG_player.camera.position,moveOffset,ePos);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#if SFG_PREVIEW_MODE
|
#if SFG_PREVIEW_MODE
|
||||||
SFG_player.camera.position.x +=
|
SFG_player.camera.position.x +=
|
||||||
@ -2555,7 +2577,11 @@ uint8_t SFG_drawNumber(
|
|||||||
return 5 - position;
|
return 5 - position;
|
||||||
}
|
}
|
||||||
|
|
||||||
void SFG_drawHealthChangeBorder(uint16_t width, uint8_t color)
|
/**
|
||||||
|
Draws a border that indicates something is happening, e.g. being hurt or
|
||||||
|
taking an item.
|
||||||
|
*/
|
||||||
|
void SFG_drawIndicationBorder(uint16_t width, uint8_t color)
|
||||||
{
|
{
|
||||||
for (uint16_t j = 0; j < width; ++j)
|
for (uint16_t j = 0; j < width; ++j)
|
||||||
{
|
{
|
||||||
@ -2832,9 +2858,16 @@ void SFG_draw()
|
|||||||
SFG_FONT_SIZE_MEDIUM,
|
SFG_FONT_SIZE_MEDIUM,
|
||||||
4);
|
4);
|
||||||
|
|
||||||
|
// border indicator
|
||||||
|
|
||||||
if (SFG_gameFrame - SFG_player.lastHurtFrame
|
if (SFG_gameFrame - SFG_player.lastHurtFrame
|
||||||
<= SFG_HUD_HEALTH_INDICATOR_DURATION_FRAMES)
|
<= SFG_HUD_BORDER_INDICATOR_DURATION_FRAMES)
|
||||||
SFG_drawHealthChangeBorder(SFG_HUD_HEALTH_INDICATOR_WIDTH_PIXELS,175);
|
SFG_drawIndicationBorder(SFG_HUD_BORDER_INDICATOR_WIDTH_PIXELS,
|
||||||
|
SFG_HUD_HURT_INDICATION_COLOR);
|
||||||
|
else if (SFG_gameFrame - SFG_player.lastItemTakenFrame
|
||||||
|
<= SFG_HUD_BORDER_INDICATOR_DURATION_FRAMES)
|
||||||
|
SFG_drawIndicationBorder(SFG_HUD_BORDER_INDICATOR_WIDTH_PIXELS,
|
||||||
|
SFG_HUD_ITEM_TAKEN_INDICATION_COLOR);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
21
settings.h
21
settings.h
@ -50,7 +50,7 @@
|
|||||||
/**
|
/**
|
||||||
Turn on for previes mode for map editing (flying, noclip, fast movement etc.).
|
Turn on for previes mode for map editing (flying, noclip, fast movement etc.).
|
||||||
*/
|
*/
|
||||||
#define SFG_PREVIEW_MODE 1
|
#define SFG_PREVIEW_MODE 0
|
||||||
|
|
||||||
/**
|
/**
|
||||||
How much faster movement is in the preview mode.
|
How much faster movement is in the preview mode.
|
||||||
@ -131,15 +131,24 @@
|
|||||||
#define SFG_SPRITE_ANIMATION_SPEED 4
|
#define SFG_SPRITE_ANIMATION_SPEED 4
|
||||||
|
|
||||||
/**
|
/**
|
||||||
How wide the health indicator (screen border) is, in fractions of screen
|
How wide the border indicator is, in fractions of screen width.
|
||||||
width.
|
|
||||||
*/
|
*/
|
||||||
#define SFG_HUD_HEALTH_INDICATOR_WIDTH 32
|
#define SFG_HUD_BORDER_INDICATOR_WIDTH 32
|
||||||
|
|
||||||
/**
|
/**
|
||||||
For how long health indicator stays shown, in ms.
|
For how long border indication (being hurt etc.) stays shown, in ms.
|
||||||
*/
|
*/
|
||||||
#define SFG_HUD_HEALTH_INDICATOR_DURATION 500
|
#define SFG_HUD_BORDER_INDICATOR_DURATION 500
|
||||||
|
|
||||||
|
/**
|
||||||
|
Color (palette index) by which being hurt is indicated.
|
||||||
|
*/
|
||||||
|
#define SFG_HUD_HURT_INDICATION_COLOR 175
|
||||||
|
|
||||||
|
/**
|
||||||
|
Color (palette index) by which taking an item is indicated.
|
||||||
|
*/
|
||||||
|
#define SFG_HUD_ITEM_TAKEN_INDICATION_COLOR 207
|
||||||
|
|
||||||
/**
|
/**
|
||||||
How many element (items, monsters, ...) distances will be checked per frame
|
How many element (items, monsters, ...) distances will be checked per frame
|
||||||
|
Loading…
Reference in New Issue
Block a user