aboutsummaryrefslogtreecommitdiff
path: root/Source/Aircraft.c
diff options
context:
space:
mode:
authorXaviDCR92 <xavi.dcr@gmail.com>2017-05-31 06:57:06 +0200
committerXaviDCR92 <xavi.dcr@gmail.com>2017-05-31 06:57:06 +0200
commitf5d1b4415c3bc8f145a84b8fd00d04629eb6e218 (patch)
tree7cc987e598a65f8f365ecc41ba4704b7b674e168 /Source/Aircraft.c
parent30b18fd262038f3ffaf24ad9884e1e121850019b (diff)
downloadairport-f5d1b4415c3bc8f145a84b8fd00d04629eb6e218.tar.gz
* Aircraft 0 was incorrectly being removed because indexes 0 to GAME_MAX_AIRCRAFT were being read instead of 0 to ptrPlayer->ActiveAircraft.
* Solved issues with linked list overflow. A detection mechanism has also been added. * New state STATE_ENTERING_RWY. * GameGuiActiveAircraftList has been moved from GameGui to Game module. * Active aircraft list for each player is now updated each time that a new flight either appears or disappears. * Other minor fixes.
Diffstat (limited to 'Source/Aircraft.c')
-rw-r--r--Source/Aircraft.c20
1 files changed, 15 insertions, 5 deletions
diff --git a/Source/Aircraft.c b/Source/Aircraft.c
index da8e03a..14b1ea2 100644
--- a/Source/Aircraft.c
+++ b/Source/Aircraft.c
@@ -194,7 +194,10 @@ bool AircraftRemove(uint8_t aircraftIdx)
{
if(ptrAircraft->FlightDataIdx == aircraftIdx)
{
+ DEBUG_PRINT_VAR(ptrAircraft->FlightDataIdx);
+ DEBUG_PRINT_VAR(aircraftIdx);
ptrAircraft->State = STATE_IDLE;
+ dprintf("Flight %d removed\n", ptrAircraft->FlightDataIdx);
return true;
}
}
@@ -240,18 +243,20 @@ void AircraftSpeed(TYPE_AIRCRAFT_DATA* ptrAircraft)
case STATE_TAXIING:
// Fall through
- case STATE_HOLDING_RWY:
- // Fall through
- case STATE_READY_FOR_TAKEOFF:
+ case STATE_ENTERING_RWY:
ptrAircraft->Speed = AircraftSpeedsTable[AIRCRAFT_SPEED_GROUND];
break;
+ case STATE_READY_FOR_TAKEOFF:
+ // Fall through
case STATE_UNBOARDING:
// Fall through
case STATE_IDLE:
// Fall through
case STATE_LANDED:
// Fall through
+ case STATE_HOLDING_RWY:
+ // Fall through
default:
ptrAircraft->Speed = 0;
break;
@@ -415,8 +420,6 @@ void AircraftDirection(TYPE_AIRCRAFT_DATA* ptrAircraft)
if(GameInsideLevelFromIsoPos(&ptrAircraft->IsoPos) == true)
{
- ptrAircraft->State = STATE_IDLE;
- dprintf("Flight %d removed\n", ptrAircraft->FlightDataIdx);
GameRemoveFlight(ptrAircraft->FlightDataIdx);
}
}
@@ -549,3 +552,10 @@ uint16_t* AircraftGetTargets(uint8_t index)
return ptrAircraft->Target;
}
+
+bool AircraftMoving(uint8_t index)
+{
+ TYPE_AIRCRAFT_DATA* ptrAircraft = AircraftFromFlightDataIndex(index);
+
+ return (bool)ptrAircraft->Speed;
+}