From e6d41c59ffa15dee7f8bc9d7ea0e12ac682da595 Mon Sep 17 00:00:00 2001 From: XaviDCR92 Date: Sat, 23 Sep 2017 01:32:26 +0200 Subject: Bugfix: ptrPlayer->SelectedAircraft was being substracted when == 0 and caused a game crash. Bugfix: aircraft did not stop when DIR_SOUTH. --- Source/Aircraft.c | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) (limited to 'Source/Aircraft.c') diff --git a/Source/Aircraft.c b/Source/Aircraft.c index 7d7c799..057f7e8 100644 --- a/Source/Aircraft.c +++ b/Source/Aircraft.c @@ -57,7 +57,7 @@ static TYPE_CARTESIAN_POS AircraftCenterPos; static char* AircraftLiveryNamesTable[] = {"PHX", NULL}; static AIRCRAFT_LIVERY AircraftLiveryTable[] = {AIRCRAFT_LIVERY_0, AIRCRAFT_LIVERY_UNKNOWN}; -static char* GameFileList[] = { "cdrom:\\DATA\\SPRITES\\ARROW.TIM;1" }; +static const char* GameFileList[] = { "cdrom:\\DATA\\SPRITES\\ARROW.TIM;1" }; static void* GameFileDest[] = { (GsSprite*)&ArrowSpr }; @@ -216,8 +216,6 @@ bool AircraftRemove(uint8_t aircraftIdx) { if (ptrAircraft->FlightDataIdx == aircraftIdx) { - DEBUG_PRINT_VAR(ptrAircraft->FlightDataIdx); - DEBUG_PRINT_VAR(aircraftIdx); ptrAircraft->State = STATE_IDLE; Serial_printf("Flight %d removed\n", ptrAircraft->FlightDataIdx); return true; @@ -247,7 +245,6 @@ void AircraftHandler(void) AircraftSpeed(ptrAircraft); // Check collision against all other aircraft. - for (j = 0; j < GAME_MAX_AIRCRAFT; j++) { TYPE_AIRCRAFT_DATA* ptrOtherAircraft = &AircraftData[j]; @@ -293,7 +290,6 @@ void AircraftHandler(void) { GameResumeFlightFromAutoStop(ptrAircraft->FlightDataIdx); } - ptrAircraft->State = GameGetFlightDataStateFromIdx(ptrAircraft->FlightDataIdx); } @@ -320,7 +316,7 @@ bool AircraftCheckPath(TYPE_AIRCRAFT_DATA* ptrAircraft, TYPE_AIRCRAFT_DATA* ptrO break; case AIRCRAFT_DIR_SOUTH: - nextTile = currentTile - GameGetLevelColumns(); + nextTile = currentTile + GameGetLevelColumns(); break; case AIRCRAFT_DIR_NO_DIRECTION: @@ -639,9 +635,12 @@ void AircraftDirection(TYPE_AIRCRAFT_DATA* ptrAircraft) ptrAircraft->IsoPos.z += AircraftSpeedsTable[AIRCRAFT_SPEED_FINAL_Z]; - if (GameInsideLevelFromIsoPos(&ptrAircraft->IsoPos) == true) + if (GameInsideLevelFromIsoPos(&ptrAircraft->IsoPos) == false) { GameRemoveFlight(ptrAircraft->FlightDataIdx, true); + + // Deactivate TYPE_AIRCRAFT instance. + ptrAircraft->State = STATE_IDLE; } } } -- cgit v1.2.3