aboutsummaryrefslogtreecommitdiff
path: root/Source/Aircraft.c
diff options
context:
space:
mode:
authorXaviDCR92 <xavi.dcr@gmail.com>2017-09-23 01:32:26 +0200
committerXaviDCR92 <xavi.dcr@gmail.com>2017-09-23 01:32:26 +0200
commite6d41c59ffa15dee7f8bc9d7ea0e12ac682da595 (patch)
tree19a1b57479a66efe6f74c2eedfd4795554fa75b7 /Source/Aircraft.c
parent286d13d71d017003df4cb44fc4ef4822d9e39c03 (diff)
downloadairport-e6d41c59ffa15dee7f8bc9d7ea0e12ac682da595.tar.gz
Bugfix: ptrPlayer->SelectedAircraft was being substracted when == 0 and caused a game crash. Bugfix: aircraft did not stop when DIR_SOUTH.
Diffstat (limited to 'Source/Aircraft.c')
-rw-r--r--Source/Aircraft.c13
1 files changed, 6 insertions, 7 deletions
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;
}
}
}