From 6628e7de58425b3e93da9ae6fcb7347137d96096 Mon Sep 17 00:00:00 2001 From: XaviDCR92 Date: Sun, 12 Mar 2017 21:09:29 +0100 Subject: * 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. --- Camera.c | 37 +++++++++++++++++++++++++++++++++++-- 1 file changed, 35 insertions(+), 2 deletions(-) (limited to 'Camera.c') 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) -- cgit v1.2.3