summaryrefslogtreecommitdiff
path: root/CameraOld.c
diff options
context:
space:
mode:
authorXaviDCR92 <xavi.dcr@gmail.com>2018-07-09 19:26:13 +0200
committerXaviDCR92 <xavi.dcr@gmail.com>2018-07-09 19:26:13 +0200
commitf0b654b9bf3bc2a93c1f89d4cc3edcf77b948555 (patch)
tree91b7404dca0b6eb136cb7f9b144435419144b777 /CameraOld.c
parentd85464781580796bbcc744ae732e56d1920e3b0f (diff)
downloadpocketempires-f0b654b9bf3bc2a93c1f89d4cc3edcf77b948555.tar.gz
Game has been restructured in favor of OOP
Diffstat (limited to 'CameraOld.c')
-rw-r--r--CameraOld.c175
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;
+}