diff options
| author | Xavier ASUS <xavi92psx@gmail.com> | 2018-11-25 18:02:18 +0100 |
|---|---|---|
| committer | Xavier ASUS <xavi92psx@gmail.com> | 2018-11-25 18:02:18 +0100 |
| commit | 64dbf5cdd5c16ab6ccdadcfd66949aba5b8fa1e2 (patch) | |
| tree | d408c06ac5573c35eaee8fd451114fd73acde2f8 /Source/Camera.c | |
| parent | 135a1e93cb9b3a859c4269a94ababe33b3558f9a (diff) | |
| download | airport-64dbf5cdd5c16ab6ccdadcfd66949aba5b8fa1e2.tar.gz | |
Bugfix: minutes were not being retrieved from PLT files.
Game.c: parking slots cannot be selected if an aircraft in STATE_PARKED state is on it.
Other fixes and improvements.
Added some tiles from TILESET2.TIM
Diffstat (limited to 'Source/Camera.c')
| -rw-r--r-- | Source/Camera.c | 45 |
1 files changed, 42 insertions, 3 deletions
diff --git a/Source/Camera.c b/Source/Camera.c index 9c05f27..e23a54f 100644 --- a/Source/Camera.c +++ b/Source/Camera.c @@ -21,6 +21,11 @@ static int32_t Camera_Max_X_Offset; static int32_t Camera_Max_Y_Offset; +static int32_t Camera_Max_X_Limit; +static int32_t Camera_Min_X_Limit; +//~ static int32_t Camera_Min_Y_Limit; +//~ static int32_t Camera_Max_Y_Limit; + /* ************************************* * Local Prototypes * *************************************/ @@ -38,6 +43,13 @@ void CameraInit(TYPE_PLAYER* const ptrPlayer) Camera_Max_X_Offset = GameGetLevelColumns() << TILE_SIZE_BIT_SHIFT; Camera_Max_Y_Offset = GameGetLevelColumns() * TILE_SIZE_H; + + Camera_Min_X_Limit = -Camera_Max_X_Offset; + Camera_Max_X_Limit = GameGetLevelColumns() << (TILE_SIZE_BIT_SHIFT - 1); + Camera_Max_X_Limit += Camera_Max_X_Limit >> 1; + + DEBUG_PRINT_VAR(Camera_Min_X_Limit); + DEBUG_PRINT_VAR(Camera_Max_X_Limit); } void CameraApplyCoordinatesToSprite(TYPE_PLAYER* const ptrPlayer, GsSprite* spr) @@ -167,11 +179,38 @@ void CameraHandler(TYPE_PLAYER* const ptrPlayer) CameraUpdateSpeed(ptrPlayer); } - ptrPlayer->Camera.X_Offset += ptrPlayer->Camera.X_Speed; + bool limitAchieved = false; + + if (ptrPlayer->Camera.X_Offset < 0) + { + if ((ptrPlayer->Camera.X_Offset + ptrPlayer->Camera.X_Speed) <= Camera_Min_X_Limit) + { + DEBUG_PRINT_VAR(ptrPlayer->Camera.X_Offset); + if (ptrPlayer->Camera.X_Speed < 0) + { + limitAchieved = true; + ptrPlayer->Camera.X_Speed = 0; + } + } + } + else if ((ptrPlayer->Camera.X_Offset + ptrPlayer->Camera.X_Speed) >= Camera_Max_X_Limit) + { + if (ptrPlayer->Camera.X_Speed > 0) + { + limitAchieved = true; + ptrPlayer->Camera.X_Speed = 0; + } + } + + if (limitAchieved == false) + { + ptrPlayer->Camera.X_Offset += ptrPlayer->Camera.X_Speed; + } + ptrPlayer->Camera.Y_Offset += ptrPlayer->Camera.Y_Speed; - //DEBUG_PRINT_VAR(ptrPlayer->Camera.X_Offset); - //DEBUG_PRINT_VAR(ptrPlayer->Camera.Y_Offset); + //~ DEBUG_PRINT_VAR(ptrPlayer->Camera.X_Offset); + //~ DEBUG_PRINT_VAR(ptrPlayer->Camera.Y_Offset); } bool CameraSpecialConditions(TYPE_PLAYER* const ptrPlayer) |
