Update gamebuino

This commit is contained in:
Miloslav Číž 2020-10-03 18:53:18 +02:00
parent fdbe6aa55f
commit 0405cd84d0
3 changed files with 46 additions and 9 deletions

View File

@ -256,9 +256,12 @@
#define SFG_WEAPON_IMAGE_POSITION_X \ #define SFG_WEAPON_IMAGE_POSITION_X \
(SFG_GAME_RESOLUTION_X / 2 - (SFG_WEAPON_IMAGE_SCALE * SFG_TEXTURE_SIZE) / 2) (SFG_GAME_RESOLUTION_X / 2 - (SFG_WEAPON_IMAGE_SCALE * SFG_TEXTURE_SIZE) / 2)
#if SFG_GAME_RESOLUTION_Y > 50 #if SFG_GAME_RESOLUTION_Y > 70
#define SFG_WEAPON_IMAGE_POSITION_Y \ #define SFG_WEAPON_IMAGE_POSITION_Y \
(SFG_GAME_RESOLUTION_Y - (SFG_WEAPON_IMAGE_SCALE * SFG_TEXTURE_SIZE)) (SFG_GAME_RESOLUTION_Y - (SFG_WEAPON_IMAGE_SCALE * SFG_TEXTURE_SIZE))
#elif SFG_GAME_RESOLUTION_Y > 50
#define SFG_WEAPON_IMAGE_POSITION_Y (SFG_GAME_RESOLUTION_Y \
- ((SFG_WEAPON_IMAGE_SCALE * 3 * SFG_TEXTURE_SIZE) / 4))
#else #else
#define SFG_WEAPON_IMAGE_POSITION_Y \ #define SFG_WEAPON_IMAGE_POSITION_Y \
(SFG_GAME_RESOLUTION_Y - SFG_TEXTURE_SIZE / 2) (SFG_GAME_RESOLUTION_Y - SFG_TEXTURE_SIZE / 2)
@ -559,7 +562,11 @@ SFG_PROGRAM_MEMORY uint8_t SFG_projectileAttributeTable[SFG_PROJECTILES_TOTAL] =
/* fireball */ SFG_PROJECTILE_ATTRIBUTE(10,1000), /* fireball */ SFG_PROJECTILE_ATTRIBUTE(10,1000),
/* plasma */ SFG_PROJECTILE_ATTRIBUTE(18,500), /* plasma */ SFG_PROJECTILE_ATTRIBUTE(18,500),
/* dust */ SFG_PROJECTILE_ATTRIBUTE(0,450), /* dust */ SFG_PROJECTILE_ATTRIBUTE(0,450),
#if SFG_FPS < 20
/* bullet */ SFG_PROJECTILE_ATTRIBUTE(20,1000) // high speed could miss things
#else
/* bullet */ SFG_PROJECTILE_ATTRIBUTE(28,1000) /* bullet */ SFG_PROJECTILE_ATTRIBUTE(28,1000)
#endif
}; };
#endif // guard #endif // guard

View File

@ -16,21 +16,28 @@
#define SFG_ARDUINO 1 #define SFG_ARDUINO 1
#define SFG_CAN_EXIT 0 #define SFG_CAN_EXIT 0
#define SFG_FPS 30 #define SFG_FPS 17
#define SFG_SCREEN_RESOLUTION_X 80 #define SFG_SCREEN_RESOLUTION_X 78
#define SFG_SCREEN_RESOLUTION_Y 64 #define SFG_SCREEN_RESOLUTION_Y 64
#define SFG_RESOLUTION_SCALEDOWN 1 #define SFG_RESOLUTION_SCALEDOWN 1
#define SFG_RAYCASTING_MAX_STEPS 20 #define SFG_RAYCASTING_MAX_STEPS 11
#define SFG_RAYCASTING_MAX_HITS 5 #define SFG_RAYCASTING_MAX_HITS 3
#define SFG_RAYCASTING_SUBSAMPLE 2 #define SFG_RAYCASTING_SUBSAMPLE 3
#define SFG_DIMINISH_SPRITES 0 #define SFG_DIMINISH_SPRITES 0
#define SFG_DITHERED_SHADOW 0 #define SFG_DITHERED_SHADOW 0
#include "game.h" #include "game.h"
Gamebuino_Meta::Color palette[256]; Gamebuino_Meta::Color palette[256];
uint8_t blinkFramesLeft;
void blinkLED(Gamebuino_Meta::Color color)
{
gb.lights.fill(color);
blinkFramesLeft = 5;
}
const Gamebuino_Meta::SaveDefault saveDefault[] = const Gamebuino_Meta::SaveDefault saveDefault[] =
{ { 0, SAVETYPE_BLOB, SFG_SAVE_SIZE, 0 } }; { { 0, SAVETYPE_BLOB, SFG_SAVE_SIZE, 0 } };
@ -63,6 +70,17 @@ int8_t SFG_keyPressed(uint8_t key)
return gb.buttons.timeHeld(button) > 0; return gb.buttons.timeHeld(button) > 0;
} }
void SFG_processEvent(uint8_t event, uint8_t value)
{
switch (event)
{
case SFG_EVENT_LEVEL_STARTS: blinkLED(BLUE); break;
case SFG_EVENT_PLAYER_HURT: blinkLED(RED); break;
case SFG_EVENT_LEVEL_WON: blinkLED(YELLOW); break;
default: break;
}
}
void SFG_getMouseOffset(int16_t *x, int16_t *y) void SFG_getMouseOffset(int16_t *x, int16_t *y)
{ {
} }
@ -118,6 +136,7 @@ void setup()
} }
SFG_init(); SFG_init();
blinkLED(RED);
} }
void loop() void loop()
@ -126,5 +145,16 @@ void loop()
{ {
} }
if (blinkFramesLeft != 0)
{
if (blinkFramesLeft == 1)
gb.lights.clear();
blinkFramesLeft--;
}
SFG_mainLoopBody(); SFG_mainLoopBody();
gb.display.setCursor(1,1);
gb.display.print(gb.getCpuLoad());
} }

View File

@ -105,7 +105,7 @@
CPU performance and memory). CPU performance and memory).
*/ */
#ifndef SFG_DITHERED_SHADOW #ifndef SFG_DITHERED_SHADOW
#define SFG_DITHERED_SHADOW 1 #define SFG_DITHERED_SHADOW 0
#endif #endif
/** /**
@ -135,7 +135,7 @@
/** /**
How many times rendering should be subsampled horizontally. Bigger number How many times rendering should be subsampled horizontally. Bigger number
can significantly improve performance (by casting fewer rays), but can look can significantly improve performance (by casting fewer rays), but can look
a little worse. a little worse. This number should be a divisor of SFG_SCREEN_RESOLUTION_X!
*/ */
#ifndef SFG_RAYCASTING_SUBSAMPLE #ifndef SFG_RAYCASTING_SUBSAMPLE
#define SFG_RAYCASTING_SUBSAMPLE 1 #define SFG_RAYCASTING_SUBSAMPLE 1