diff options
| author | XaviDCR92 <xavi.dcr@gmail.com> | 2017-03-07 20:57:09 +0100 |
|---|---|---|
| committer | XaviDCR92 <xavi.dcr@gmail.com> | 2017-03-07 20:57:09 +0100 |
| commit | 8ec41b4410aba535008daf991ea59a8740951d44 (patch) | |
| tree | 01ee0846f579d9d139ee46a6a43f67ba522c7196 /Camera.c | |
| download | pocketempires-8ec41b4410aba535008daf991ea59a8740951d44.tar.gz | |
+ Initial commit. Added source, sprites and final executable.
Diffstat (limited to 'Camera.c')
| -rw-r--r-- | Camera.c | 150 |
1 files changed, 150 insertions, 0 deletions
diff --git a/Camera.c b/Camera.c new file mode 100644 index 0000000..ba99741 --- /dev/null +++ b/Camera.c @@ -0,0 +1,150 @@ +/* ************************************* + * Includes + * *************************************/ + +#include "Camera.h" + +/* ************************************* + * Defines + * *************************************/ + +#define SPEED_CALCULATION_TIME 3 +#define MAX_CAMERA_SPEED 5 +#define MIN_CAMERA_SPEED 1 + +/* ************************************* + * Local Prototypes + * *************************************/ + +static void CameraUpdateSpeed(TYPE_CAMERA * ptrCamera); +static bool CameraSpecialConditions(TYPE_CAMERA * ptrCamera); + +void CameraInit(TYPE_CAMERA * ptrCamera) +{ + ptrCamera->X_Offset = 0; + ptrCamera->Y_Offset = 0; + ptrCamera->X_Speed = 0; + ptrCamera->Y_Speed = 0; + ptrCamera->Speed_Timer = SPEED_CALCULATION_TIME; +} + +void CameraApplyCoordinatesToSprite(TYPE_CAMERA * ptrCamera, + TYPE_SPRITE * spr, + uint16_t x, + uint16_t y ) +{ + spr->x = (uint8_t)(x + ptrCamera->X_Offset); + spr->y = (uint8_t)(y + ptrCamera->Y_Offset); +} + +void CameraUpdateSpeed(TYPE_CAMERA * ptrCamera) +{ + if(PadDirectionKeyPressed() == true) + { + if(PadButtonPressed(PAD_LEFT) == true) + { + if(ptrCamera->X_Speed < 0) + { + ptrCamera->X_Speed += 2; + } + else if(ptrCamera->X_Speed < MAX_CAMERA_SPEED) + { + ptrCamera->X_Speed++; + } + } + + if(PadButtonPressed(PAD_UP) == true) + { + if(ptrCamera->Y_Speed < 0) + { + ptrCamera->Y_Speed += 2; + } + else if(ptrCamera->Y_Speed < MAX_CAMERA_SPEED) + { + ptrCamera->Y_Speed++; + } + } + + if(PadButtonPressed(PAD_DOWN) == true) + { + if(ptrCamera->Y_Speed > 0) + { + ptrCamera->Y_Speed -= 2; + } + else if(ptrCamera->Y_Speed > -MAX_CAMERA_SPEED) + { + ptrCamera->Y_Speed--; + } + } + + if(PadButtonPressed(PAD_RIGHT) == true) + { + if(ptrCamera->X_Speed > 0) + { + ptrCamera->X_Speed -= 2; + } + else if(ptrCamera->X_Speed > -MAX_CAMERA_SPEED) + { + ptrCamera->X_Speed--; + } + } + } + + if( (PadButtonPressed(PAD_LEFT) == false) + && + (PadButtonPressed(PAD_RIGHT) == false) ) + { + if(ptrCamera->X_Speed > 0) + { + ptrCamera->X_Speed--; + } + else if(ptrCamera->X_Speed < 0) + { + ptrCamera->X_Speed++; + } + } + + if( (PadButtonPressed(PAD_UP) == false) + && + (PadButtonPressed(PAD_DOWN) == false) ) + { + if(ptrCamera->Y_Speed > 0) + { + ptrCamera->Y_Speed--; + } + else if(ptrCamera->Y_Speed < 0) + { + ptrCamera->Y_Speed++; + } + } +} + +void CameraHandler(TYPE_CAMERA * ptrCamera) +{ + + if(CameraSpecialConditions(ptrCamera) == true) + { + ptrCamera->X_Speed = 0; + ptrCamera->Y_Speed = 0; + return; + } + + if(ptrCamera->Speed_Timer < SPEED_CALCULATION_TIME) + { + ptrCamera->Speed_Timer++; + } + else + { + ptrCamera->Speed_Timer = 0; + CameraUpdateSpeed(ptrCamera); + } + + ptrCamera->X_Offset += ptrCamera->X_Speed; + ptrCamera->Y_Offset += ptrCamera->Y_Speed; +} + +bool CameraSpecialConditions(TYPE_CAMERA * ptrCamera) +{ + + return false; +} |
