summaryrefslogtreecommitdiff
path: root/Camera.c
diff options
context:
space:
mode:
authorXaviDCR92 <xavi.dcr@gmail.com>2017-03-12 21:09:29 +0100
committerXaviDCR92 <xavi.dcr@gmail.com>2017-03-12 21:09:29 +0100
commit6628e7de58425b3e93da9ae6fcb7347137d96096 (patch)
tree336d1f74961187aad7c85ba06dcdd0684c003282 /Camera.c
parentf416816883545433ea33ca410983371e657dba18 (diff)
downloadpocketempires-6628e7de58425b3e93da9ae6fcb7347137d96096.tar.gz
* Player can now select nearest unit or building. Multiple buildings and units can be selected at the same time.
* Unit module moved from C++ to C (only extension change - and compiler - was needed). * GfxGetHeightFromSpriteData and GfxGetWidthFromSpriteData were getting incorrect data! Incorrect memory address was being read when calling pgm_read_byte, and caused unexpected behaviour under real hw.
Diffstat (limited to 'Camera.c')
-rw-r--r--Camera.c37
1 files changed, 35 insertions, 2 deletions
diff --git a/Camera.c b/Camera.c
index ab1d62d..6127ed4 100644
--- a/Camera.c
+++ b/Camera.c
@@ -153,8 +153,41 @@ void CameraHandler(TYPE_CAMERA * ptrCamera)
CameraUpdateSpeed(ptrCamera);
}
- ptrCamera->X_Offset += ptrCamera->X_Speed;
- ptrCamera->Y_Offset += ptrCamera->Y_Speed;
+ 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;
+ }
+
+ /*char str[8];
+
+ snprintf(str, 8, "%u", ptrCamera->Y_Offset);
+
+ GfxPrintText(str, 40, 40);*/
+
+ 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;
+ }
}
bool CameraSpecialConditions(TYPE_CAMERA * ptrCamera)