mirror of
https://gitlab.com/drummyfish/anarch.git
synced 2024-12-21 23:08:49 -05:00
Limit ammo and health
This commit is contained in:
parent
71fad5e114
commit
1e586ce7ab
30
TODO.txt
30
TODO.txt
@ -1,21 +1,8 @@
|
||||
general:
|
||||
|
||||
- try to make z-buffer 3 line instead of 1D, possibly like this (to keep
|
||||
performance):
|
||||
- at compile time selct X = power of 2 closest to vertical resolution
|
||||
(or something like that)
|
||||
- in pixel funct do something like
|
||||
if (pixel->y % X == 0 && pixel->y != 0)
|
||||
write to z-buffer
|
||||
- let player start with 100 HP, but allow for collecting a higher amount, e.g.
|
||||
up to 150.
|
||||
- Add blinking:
|
||||
- In menu, the selected level number should blink to indicate it can be
|
||||
changed.
|
||||
- Near locked door the specific unlocking card should blink on the HUD bar.
|
||||
- Add setting SFG_BLINK_PERIOD to control blinking speed.
|
||||
- try to remove the debug flag (-g1) from compiler and see if it decreases size
|
||||
- port to GB Meta
|
||||
- add enemy moving/dying sound
|
||||
- sounds (music?)
|
||||
- level 2D map (with revealing, bitmap), special key for quick displaying map
|
||||
- save/load (optional)
|
||||
@ -64,6 +51,9 @@ level ideas:
|
||||
has to slowly kill, which means he has to first get rid of the other
|
||||
monsters.
|
||||
|
||||
- ceiling with "holes" through which sky (background) can be seen -- can be done
|
||||
by having the ceiling texture set transparent and then alternating ceiling and
|
||||
no ceiling
|
||||
- boss level: skyscraper top, player goes upwards in a spiral along the OUTSIDE
|
||||
side of the skyscraper
|
||||
- two levels could partially overlap, e.g. level one, a city, could overlap
|
||||
@ -141,6 +131,7 @@ bugs:
|
||||
done:
|
||||
|
||||
- add headbob
|
||||
- add blinking
|
||||
- make zBuffer 8bit only?
|
||||
- texture coords of floor walls should start from the floor? NO, CAUSES ISSUES
|
||||
- vertical visual noise when standing on elevator
|
||||
@ -161,4 +152,15 @@ done:
|
||||
check collisions for both player and monsters against this array (elevate
|
||||
these squares for collisions only) -- will also be faster
|
||||
- more level prop items
|
||||
- let player start with 100 HP, but allow for collecting a higher amount, e.g.
|
||||
up to 150.
|
||||
- limit maximum ammo amounts
|
||||
|
||||
scratched:
|
||||
- try to make z-buffer 3 line instead of 1D, possibly like this (to keep
|
||||
performance):
|
||||
- at compile time selct X = power of 2 closest to vertical resolution
|
||||
(or something like that)
|
||||
- in pixel funct do something like
|
||||
if (pixel->y % X == 0 && pixel->y != 0)
|
||||
write to z-buffer
|
||||
|
BIN
assets/levelY.gif
Normal file
BIN
assets/levelY.gif
Normal file
Binary file not shown.
After Width: | Height: | Size: 2.8 KiB |
13
constants.h
13
constants.h
@ -114,7 +114,12 @@
|
||||
/**
|
||||
Maximum player health.
|
||||
*/
|
||||
#define SFG_PLAYER_MAX_HEALTH 100
|
||||
#define SFG_PLAYER_MAX_HEALTH 150
|
||||
|
||||
/**
|
||||
Start health of player.
|
||||
*/
|
||||
#define SFG_PLAYER_START_HEALTH 100
|
||||
|
||||
/**
|
||||
At which value health indicator shows a warning (red color).
|
||||
@ -166,6 +171,10 @@
|
||||
#define SFG_AMMO_INCREASE_ROCKETS 5
|
||||
#define SFG_AMMO_INCREASE_PLASMA 8
|
||||
|
||||
#define SFG_AMMO_MAX_BULLETS 200
|
||||
#define SFG_AMMO_MAX_ROCKETS 100
|
||||
#define SFG_AMMO_MAX_PLASMA 150
|
||||
|
||||
/**
|
||||
Duration of story text (intro/outro) in ms.
|
||||
*/
|
||||
@ -355,6 +364,8 @@
|
||||
#define SFG_HUD_BORDER_INDICATOR_DURATION_FRAMES 1
|
||||
#endif
|
||||
|
||||
#define SFG_BLINK_PERIOD_FRAMES (SFG_BLINK_PERIOD / SFG_MS_PER_FRAME)
|
||||
|
||||
#define SFG_HUD_BAR_HEIGHT \
|
||||
(SFG_FONT_CHARACTER_SIZE * SFG_FONT_SIZE_MEDIUM + SFG_HUD_MARGIN * 2 + 1)
|
||||
|
||||
|
30
main.c
30
main.c
@ -1119,7 +1119,7 @@ void SFG_initPlayer()
|
||||
SFG_player.lastHurtFrame = SFG_game.frame;
|
||||
SFG_player.lastItemTakenFrame = SFG_game.frame;
|
||||
|
||||
SFG_player.health = SFG_PLAYER_MAX_HEALTH;
|
||||
SFG_player.health = SFG_PLAYER_START_HEALTH;
|
||||
|
||||
SFG_player.cards = 0;
|
||||
|
||||
@ -2479,7 +2479,7 @@ void SFG_gameStepPlaying()
|
||||
return;
|
||||
}
|
||||
|
||||
int8_t recomputeDirection = 0;
|
||||
int8_t recomputeDirection = SFG_currentLevel.frameStart == SFG_game.frame;
|
||||
|
||||
RCL_Vector2D moveOffset;
|
||||
|
||||
@ -2877,21 +2877,33 @@ void SFG_gameStepPlaying()
|
||||
switch (e->type)
|
||||
{
|
||||
case SFG_LEVEL_ELEMENT_HEALTH:
|
||||
SFG_playerChangeHealth(SFG_HEALTH_KIT_VALUE);
|
||||
if (SFG_player.health < SFG_PLAYER_MAX_HEALTH)
|
||||
SFG_playerChangeHealth(SFG_HEALTH_KIT_VALUE);
|
||||
else
|
||||
eliminate = 0;
|
||||
break;
|
||||
|
||||
|
||||
#define addAmmo(type) \
|
||||
if (SFG_player.ammo[SFG_AMMO_##type] < SFG_AMMO_MAX_##type) \
|
||||
SFG_player.ammo[SFG_AMMO_##type] = RCL_min(SFG_AMMO_MAX_##type,\
|
||||
SFG_player.ammo[SFG_AMMO_##type] + SFG_AMMO_INCREASE_##type);\
|
||||
else\
|
||||
eliminate = 0;
|
||||
|
||||
case SFG_LEVEL_ELEMENT_BULLETS:
|
||||
SFG_player.ammo[SFG_AMMO_BULLETS] += SFG_AMMO_INCREASE_BULLETS;
|
||||
addAmmo(BULLETS)
|
||||
break;
|
||||
|
||||
case SFG_LEVEL_ELEMENT_ROCKETS:
|
||||
SFG_player.ammo[SFG_AMMO_ROCKETS] += SFG_AMMO_INCREASE_ROCKETS;
|
||||
addAmmo(ROCKETS)
|
||||
break;
|
||||
|
||||
case SFG_LEVEL_ELEMENT_PLASMA:
|
||||
SFG_player.ammo[SFG_AMMO_PLASMA] += SFG_AMMO_INCREASE_PLASMA;
|
||||
addAmmo(PLASMA)
|
||||
break;
|
||||
|
||||
#undef addAmmo
|
||||
|
||||
case SFG_LEVEL_ELEMENT_CARD0:
|
||||
case SFG_LEVEL_ELEMENT_CARD1:
|
||||
case SFG_LEVEL_ELEMENT_CARD2:
|
||||
@ -3562,7 +3574,9 @@ void SFG_drawMenu()
|
||||
|
||||
SFG_drawText(text,drawX,y,SFG_FONT_SIZE_MEDIUM,textColor,0,0);
|
||||
|
||||
if (item == SFG_MENU_ITEM_PLAY)
|
||||
if (item == SFG_MENU_ITEM_PLAY &&
|
||||
(((i != SFG_game.selectedMenuItem) ||
|
||||
(SFG_game.frame / SFG_BLINK_PERIOD_FRAMES) % 2)))
|
||||
SFG_drawNumber((SFG_game.selectedLevel + 1),
|
||||
drawX + SFG_characterSize(SFG_FONT_SIZE_MEDIUM) * (textLen + 1),
|
||||
y,SFG_FONT_SIZE_MEDIUM,93);
|
||||
|
@ -189,12 +189,17 @@
|
||||
*/
|
||||
#define SFG_BACKGROUND_BLUR 0
|
||||
|
||||
/**
|
||||
Defines the period, in ms, of things that blink, such as text.
|
||||
*/
|
||||
#define SFG_BLINK_PERIOD 500
|
||||
|
||||
//------ developer/debug settings ------
|
||||
|
||||
/**
|
||||
Developer cheat for having infinite ammo in all weapons.
|
||||
*/
|
||||
#define SFG_INFINITE_AMMO 1
|
||||
#define SFG_INFINITE_AMMO 0
|
||||
|
||||
/**
|
||||
Developer cheat for immortality.
|
||||
|
Loading…
Reference in New Issue
Block a user