diff options
| author | XaviDCR92 <xavi.dcr@gmail.com> | 2018-07-09 19:26:13 +0200 |
|---|---|---|
| committer | XaviDCR92 <xavi.dcr@gmail.com> | 2018-07-09 19:26:13 +0200 |
| commit | f0b654b9bf3bc2a93c1f89d4cc3edcf77b948555 (patch) | |
| tree | 91b7404dca0b6eb136cb7f9b144435419144b777 /CameraOld.c | |
| parent | d85464781580796bbcc744ae732e56d1920e3b0f (diff) | |
| download | pocketempires-f0b654b9bf3bc2a93c1f89d4cc3edcf77b948555.tar.gz | |
Game has been restructured in favor of OOP
Diffstat (limited to 'CameraOld.c')
| -rw-r--r-- | CameraOld.c | 175 |
1 files changed, 175 insertions, 0 deletions
diff --git a/CameraOld.c b/CameraOld.c new file mode 100644 index 0000000..e2e392e --- /dev/null +++ b/CameraOld.c @@ -0,0 +1,175 @@ +/* ************************************* + * Includes + * *************************************/ + +#include "Camera.h" +#include "Gfx.h" +#include "Pad.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); + +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; + ptrCamera->locked = false; +} + +TYPE_COLLISION_BLOCK CameraApplyCoordinatesToCoordinates( TYPE_CAMERA* ptrCamera, + uint16_t x, + uint16_t y ) +{ + TYPE_COLLISION_BLOCK cb = {0}; + + cb.x = x + ptrCamera->X_Offset; + cb.y = y + ptrCamera->Y_Offset; + + return cb; +} + +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() != false) + { + if (PadButtonPressed(PAD_LEFT) != false) + { + if (ptrCamera->X_Speed < 0) + { + ptrCamera->X_Speed += 2; + } + else if (ptrCamera->X_Speed < MAX_CAMERA_SPEED) + { + ptrCamera->X_Speed++; + } + } + + if (PadButtonPressed(PAD_UP) != false) + { + if (ptrCamera->Y_Speed < 0) + { + ptrCamera->Y_Speed += 2; + } + else if (ptrCamera->Y_Speed < MAX_CAMERA_SPEED) + { + ptrCamera->Y_Speed++; + } + } + + if (PadButtonPressed(PAD_DOWN) != false) + { + if (ptrCamera->Y_Speed > 0) + { + ptrCamera->Y_Speed -= 2; + } + else if (ptrCamera->Y_Speed > -MAX_CAMERA_SPEED) + { + ptrCamera->Y_Speed--; + } + } + + if (PadButtonPressed(PAD_RIGHT) != false) + { + 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) ) + { + ptrCamera->X_Speed = 0; + } + + if ( (PadButtonPressed(PAD_UP) == false) + && + (PadButtonPressed(PAD_DOWN) == false) ) + { + ptrCamera->Y_Speed = 0; + } +} + +void CameraHandler(TYPE_CAMERA* ptrCamera) +{ + if (ptrCamera->locked != false) + { + 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); + } + + if ((ptrCamera->X_Offset + ptrCamera->X_Speed) < 0) + { + ptrCamera->X_Offset += ptrCamera->X_Speed; + + if (ptrCamera->X_Offset == 0) + { + ptrCamera->X_Speed = 0; + } + } + else + { + ptrCamera->X_Offset = 0; + ptrCamera->X_Speed = 0; + } + + if ((ptrCamera->Y_Offset + ptrCamera->Y_Speed) < 0) + { + ptrCamera->Y_Offset += ptrCamera->Y_Speed; + + if (ptrCamera->Y_Offset == 0) + { + ptrCamera->Y_Speed = 0; + } + } + else + { + ptrCamera->Y_Offset = 0; + ptrCamera->Y_Speed = 0; + } +} + +void CameraSetLock(TYPE_CAMERA* ptrCamera, bool value) +{ + ptrCamera->locked = value; +} |
