* Bugfix: index for selectedAircraft is recalculated when a new aircraft is spawned.
* Initial implementation for minimum spawn time in parkings. * GfxIsGPUBusy() check added for MemCard.
This commit is contained in:
parent
219d958538
commit
c43347edb7
|
@ -6,16 +6,25 @@
|
||||||
#For example:
|
#For example:
|
||||||
14:55
|
14:55
|
||||||
#Aircraft arrival (or departure) must be set relative to initial time, in HH:MM format.
|
#Aircraft arrival (or departure) must be set relative to initial time, in HH:MM format.
|
||||||
ARRIVAL;PHX1002;40;00:05;0;8
|
ARRIVAL;PHX1802;100;01:00;0;180
|
||||||
ARRIVAL;PHX1802;100;01:00;0;120
|
ARRIVAL;PHX2015;180;00:10;0;180
|
||||||
ARRIVAL;PHX2015;120;00:10;0;120
|
ARRIVAL;PHX2016;140;00:30;0;180
|
||||||
ARRIVAL;PHX2016;140;00:30;0;120
|
ARRIVAL;PHX2017;140;00:40;0;180
|
||||||
ARRIVAL;PHX2017;140;00:40;0;120
|
ARRIVAL;PHX2018;140;00:55;0;180
|
||||||
ARRIVAL;PHX2018;140;00:55;0;120
|
ARRIVAL;PHX2018;160;01:20;0;180
|
||||||
ARRIVAL;PHX2019;140;01:30;0;120
|
ARRIVAL;PHX2020;160;01:45;0;180
|
||||||
DEPARTURE;PHX1000;100;00:05;19;120
|
ARRIVAL;PHX2019;140;01:30;0;180
|
||||||
DEPARTURE;PHX1280;100;00:30;19;120
|
ARRIVAL;PHX2021;140;02:00;0;180
|
||||||
DEPARTURE;PHX1332;100;00:45;21;120
|
ARRIVAL;PHX2022;140;02:30;0;180
|
||||||
DEPARTURE;PHX1333;100;01:00;19;120
|
ARRIVAL;PHX2023;140;02:15;0;180
|
||||||
DEPARTURE;PHX1334;100;01:15;21;120
|
DEPARTURE;PHX1000;100;00:05;19;180
|
||||||
DEPARTURE;PHX1335;100;01:30;19;120
|
DEPARTURE;PHX1280;100;00:30;19;180
|
||||||
|
DEPARTURE;PHX1332;100;00:45;21;180
|
||||||
|
DEPARTURE;PHX1333;100;01:00;19;180
|
||||||
|
DEPARTURE;PHX1334;100;01:15;21;180
|
||||||
|
DEPARTURE;PHX1336;100;01:20;21;180
|
||||||
|
DEPARTURE;PHX1335;100;01:30;19;180
|
||||||
|
DEPARTURE;PHX1335;100;01:40;19;180
|
||||||
|
DEPARTURE;PHX1335;100;02:00;19;180
|
||||||
|
DEPARTURE;PHX1335;100;02:15;19;180
|
||||||
|
DEPARTURE;PHX1335;100;02:30;19;180
|
||||||
|
|
|
@ -25,6 +25,8 @@
|
||||||
|
|
||||||
#define GAME_INVALID_TILE_SELECTION ( (uint16_t)0xFFFF )
|
#define GAME_INVALID_TILE_SELECTION ( (uint16_t)0xFFFF )
|
||||||
|
|
||||||
|
#define GAME_MINIMUM_PARKING_SPAWN_TIME 20 // 2 seconds
|
||||||
|
|
||||||
/* **************************************
|
/* **************************************
|
||||||
* Structs and enums *
|
* Structs and enums *
|
||||||
* *************************************/
|
* *************************************/
|
||||||
|
@ -147,6 +149,8 @@ static void GameGenerateUnboardingSequence(TYPE_PLAYER* ptrPlayer);
|
||||||
static void GameCreateTakeoffWaypoints(TYPE_PLAYER* ptrPlayer, TYPE_FLIGHT_DATA* ptrFlightData, uint8_t aircraftIdx);
|
static void GameCreateTakeoffWaypoints(TYPE_PLAYER* ptrPlayer, TYPE_FLIGHT_DATA* ptrFlightData, uint8_t aircraftIdx);
|
||||||
static void GameGetRunwayEntryTile(uint8_t aircraftIdx, TYPE_RWY_ENTRY_DATA* ptrRwyEntry);
|
static void GameGetRunwayEntryTile(uint8_t aircraftIdx, TYPE_RWY_ENTRY_DATA* ptrRwyEntry);
|
||||||
static void GameActiveAircraftList(TYPE_PLAYER* ptrPlayer, TYPE_FLIGHT_DATA * ptrFlightData);
|
static void GameActiveAircraftList(TYPE_PLAYER* ptrPlayer, TYPE_FLIGHT_DATA * ptrFlightData);
|
||||||
|
static void GameRemainingAircraft(void);
|
||||||
|
static void GameMinimumSpawnTimeout(void);
|
||||||
|
|
||||||
/* *************************************
|
/* *************************************
|
||||||
* Global Variables
|
* Global Variables
|
||||||
|
@ -168,7 +172,10 @@ static TYPE_FLIGHT_DATA FlightData;
|
||||||
static uint16_t GameRwyArray[GAME_MAX_RWY_LENGTH];
|
static uint16_t GameRwyArray[GAME_MAX_RWY_LENGTH];
|
||||||
static uint16_t GameUsedRwy[GAME_MAX_RUNWAYS];
|
static uint16_t GameUsedRwy[GAME_MAX_RUNWAYS];
|
||||||
static uint16_t GameSelectedTile;
|
static uint16_t GameSelectedTile;
|
||||||
static bool firstLevelRender; // Used to avoid reentrance on GameRenderLevel()
|
static bool firstLevelRender; // Used to avoid reentrance issues on GameRenderLevel()
|
||||||
|
static TYPE_TIMER* GameSpawnMinTime;
|
||||||
|
static bool spawnMinTimeFlag;
|
||||||
|
static bool GameAircraftCreatedFlag;
|
||||||
|
|
||||||
// Instances for player-specific data
|
// Instances for player-specific data
|
||||||
TYPE_PLAYER PlayerData[MAX_PLAYERS];
|
TYPE_PLAYER PlayerData[MAX_PLAYERS];
|
||||||
|
@ -352,6 +359,7 @@ void GameInit(void)
|
||||||
|
|
||||||
firstActiveAircraft = 0;
|
firstActiveAircraft = 0;
|
||||||
lastActiveAircraft = 0;
|
lastActiveAircraft = 0;
|
||||||
|
GameAircraftCreatedFlag = false;
|
||||||
|
|
||||||
if(GameTwoPlayersActive() == true)
|
if(GameTwoPlayersActive() == true)
|
||||||
{
|
{
|
||||||
|
@ -371,6 +379,10 @@ void GameInit(void)
|
||||||
GameMouseSpr.g = NORMAL_LUMINANCE;
|
GameMouseSpr.g = NORMAL_LUMINANCE;
|
||||||
GameMouseSpr.b = NORMAL_LUMINANCE;
|
GameMouseSpr.b = NORMAL_LUMINANCE;
|
||||||
|
|
||||||
|
GameSpawnMinTime = SystemCreateTimer(GAME_MINIMUM_PARKING_SPAWN_TIME, false, &GameMinimumSpawnTimeout);
|
||||||
|
|
||||||
|
spawnMinTimeFlag = true;
|
||||||
|
|
||||||
GameScore = 0;
|
GameScore = 0;
|
||||||
|
|
||||||
GameGetRunwayArray();
|
GameGetRunwayArray();
|
||||||
|
@ -383,7 +395,7 @@ void GameInit(void)
|
||||||
|
|
||||||
GfxSetGlobalLuminance(0);
|
GfxSetGlobalLuminance(0);
|
||||||
|
|
||||||
track = SystemRand(GAMEPLAY_FIRST_TRACK,GAMEPLAY_LAST_TRACK);
|
track = SystemRand(GAMEPLAY_FIRST_TRACK, GAMEPLAY_LAST_TRACK);
|
||||||
|
|
||||||
SfxPlayTrack(track);
|
SfxPlayTrack(track);
|
||||||
}
|
}
|
||||||
|
@ -437,6 +449,7 @@ void GameCalculations(void)
|
||||||
GameActiveAircraft();
|
GameActiveAircraft();
|
||||||
GameFirstLastAircraftIndex();
|
GameFirstLastAircraftIndex();
|
||||||
GameGuiCalculateSlowScore();
|
GameGuiCalculateSlowScore();
|
||||||
|
GameRemainingAircraft();
|
||||||
AircraftHandler();
|
AircraftHandler();
|
||||||
|
|
||||||
for(i = 0 ; i < MAX_PLAYERS ; i++)
|
for(i = 0 ; i < MAX_PLAYERS ; i++)
|
||||||
|
@ -770,7 +783,9 @@ void GameAircraftState(void)
|
||||||
&&
|
&&
|
||||||
(FlightData.State[i] == STATE_IDLE)
|
(FlightData.State[i] == STATE_IDLE)
|
||||||
&&
|
&&
|
||||||
(FlightData.RemainingTime[i] > 0) )
|
(FlightData.RemainingTime[i] > 0)
|
||||||
|
/* &&
|
||||||
|
(spawnMinTimeFlag == true) */)
|
||||||
{
|
{
|
||||||
if( (FlightData.FlightDirection[i] == DEPARTURE)
|
if( (FlightData.FlightDirection[i] == DEPARTURE)
|
||||||
&&
|
&&
|
||||||
|
@ -802,6 +817,8 @@ void GameAircraftState(void)
|
||||||
{
|
{
|
||||||
FlightData.State[i] = STATE_PARKED;
|
FlightData.State[i] = STATE_PARKED;
|
||||||
|
|
||||||
|
GameAircraftCreatedFlag = true;
|
||||||
|
|
||||||
// Create notification request for incoming aircraft
|
// Create notification request for incoming aircraft
|
||||||
FlightData.NotificationRequest[i] = true;
|
FlightData.NotificationRequest[i] = true;
|
||||||
|
|
||||||
|
@ -822,6 +839,7 @@ void GameAircraftState(void)
|
||||||
{
|
{
|
||||||
dprintf("Flight %d set to STATE_APPROACH.\n", i);
|
dprintf("Flight %d set to STATE_APPROACH.\n", i);
|
||||||
FlightData.State[i] = STATE_APPROACH;
|
FlightData.State[i] = STATE_APPROACH;
|
||||||
|
GameAircraftCreatedFlag = true;
|
||||||
// Create notification request for incoming aircraft
|
// Create notification request for incoming aircraft
|
||||||
FlightData.NotificationRequest[i] = true;
|
FlightData.NotificationRequest[i] = true;
|
||||||
}
|
}
|
||||||
|
@ -832,9 +850,6 @@ void GameAircraftState(void)
|
||||||
(FlightData.RemainingTime[i] == 0) )
|
(FlightData.RemainingTime[i] == 0) )
|
||||||
{
|
{
|
||||||
// Player(s) lost a flight!
|
// Player(s) lost a flight!
|
||||||
DEBUG_PRINT_VAR(i);
|
|
||||||
DEBUG_PRINT_VAR(FlightData.State[i]);
|
|
||||||
DEBUG_PRINT_VAR(FlightData.RemainingTime[i]);
|
|
||||||
GameRemoveFlight(i, false);
|
GameRemoveFlight(i, false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2518,10 +2533,18 @@ void GameRemoveFlight(uint8_t idx, bool successful)
|
||||||
GameScore = (GameScore < LOST_FLIGHT_PENALTY)? 0 : (GameScore - LOST_FLIGHT_PENALTY);
|
GameScore = (GameScore < LOST_FLIGHT_PENALTY)? 0 : (GameScore - LOST_FLIGHT_PENALTY);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(ptrPlayer->SelectedAircraft >= j)
|
||||||
|
{
|
||||||
|
ptrPlayer->SelectedAircraft--; // Check pending
|
||||||
|
}
|
||||||
|
|
||||||
FlightData.Passengers[ptrPlayer->ActiveAircraftList[j]] = 0;
|
FlightData.Passengers[ptrPlayer->ActiveAircraftList[j]] = 0;
|
||||||
FlightData.State[ptrPlayer->ActiveAircraftList[j]] = STATE_IDLE;
|
FlightData.State[ptrPlayer->ActiveAircraftList[j]] = STATE_IDLE;
|
||||||
FlightData.Finished[ptrPlayer->ActiveAircraftList[j]] = true;
|
FlightData.Finished[ptrPlayer->ActiveAircraftList[j]] = true;
|
||||||
|
|
||||||
|
spawnMinTimeFlag = false;
|
||||||
|
SystemTimerRestart(GameSpawnMinTime);
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2537,9 +2560,15 @@ void GameActiveAircraftList(TYPE_PLAYER* ptrPlayer, TYPE_FLIGHT_DATA * ptrFlight
|
||||||
{
|
{
|
||||||
uint8_t i;
|
uint8_t i;
|
||||||
uint8_t j = 0;
|
uint8_t j = 0;
|
||||||
|
|
||||||
|
uint8_t currentFlightDataIdx;
|
||||||
|
uint8_t lastFlightDataIdx;
|
||||||
|
|
||||||
// Clear all pointers for aircraft data first.
|
// Clear all pointers for aircraft data first.
|
||||||
// Then, rebuild aircraft list for player.
|
// Then, rebuild aircraft list for player.
|
||||||
|
|
||||||
|
lastFlightDataIdx = ptrPlayer->ActiveAircraftList[ptrPlayer->SelectedAircraft];
|
||||||
|
|
||||||
memset(ptrPlayer->ActiveAircraftList, 0, GAME_MAX_AIRCRAFT);
|
memset(ptrPlayer->ActiveAircraftList, 0, GAME_MAX_AIRCRAFT);
|
||||||
ptrPlayer->ActiveAircraft = 0;
|
ptrPlayer->ActiveAircraft = 0;
|
||||||
|
|
||||||
|
@ -2553,6 +2582,41 @@ void GameActiveAircraftList(TYPE_PLAYER* ptrPlayer, TYPE_FLIGHT_DATA * ptrFlight
|
||||||
ptrPlayer->ActiveAircraft++;
|
ptrPlayer->ActiveAircraft++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
currentFlightDataIdx = ptrPlayer->ActiveAircraftList[ptrPlayer->SelectedAircraft];
|
||||||
|
|
||||||
|
if(GameAircraftCreatedFlag == true)
|
||||||
|
{
|
||||||
|
GameAircraftCreatedFlag = false;
|
||||||
|
|
||||||
|
if(ptrPlayer->ActiveAircraft > 1)
|
||||||
|
{
|
||||||
|
if(currentFlightDataIdx != lastFlightDataIdx)
|
||||||
|
{
|
||||||
|
for(ptrPlayer->SelectedAircraft = 0; ptrPlayer->SelectedAircraft < GAME_MAX_AIRCRAFT; ptrPlayer->SelectedAircraft++)
|
||||||
|
{
|
||||||
|
if(ptrPlayer->ActiveAircraftList[ptrPlayer->SelectedAircraft] == lastFlightDataIdx)
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void GameRemainingAircraft(void)
|
||||||
|
{
|
||||||
|
uint8_t i;
|
||||||
|
FlightData.nRemainingAircraft = FlightData.nAircraft;
|
||||||
|
|
||||||
|
for(i = 0; i < FlightData.nAircraft; i++)
|
||||||
|
{
|
||||||
|
if(FlightData.Finished[i] == true)
|
||||||
|
{
|
||||||
|
FlightData.nRemainingAircraft--;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool GameFinished(void)
|
bool GameFinished(void)
|
||||||
|
@ -2570,3 +2634,8 @@ bool GameFinished(void)
|
||||||
|
|
||||||
return GameGuiFinishedDialog(&PlayerData[PLAYER_ONE]);
|
return GameGuiFinishedDialog(&PlayerData[PLAYER_ONE]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void GameMinimumSpawnTimeout(void)
|
||||||
|
{
|
||||||
|
spawnMinTimeFlag = true;
|
||||||
|
}
|
||||||
|
|
|
@ -52,4 +52,5 @@ FL_STATE GameGetFlightDataStateFromIdx(uint8_t FlightDataIdx);
|
||||||
uint32_t GameGetScore(void);
|
uint32_t GameGetScore(void);
|
||||||
bool GameInsideLevelFromIsoPos(TYPE_ISOMETRIC_FIX16_POS* ptrIsoPos);
|
bool GameInsideLevelFromIsoPos(TYPE_ISOMETRIC_FIX16_POS* ptrIsoPos);
|
||||||
void GameRemoveFlight(uint8_t idx, bool successful);
|
void GameRemoveFlight(uint8_t idx, bool successful);
|
||||||
|
void GameCalculateRemainingAircraft(void);
|
||||||
#endif //__GAME_HEADER__
|
#endif //__GAME_HEADER__
|
||||||
|
|
|
@ -346,6 +346,14 @@ void GameGuiAircraftList(TYPE_PLAYER* ptrPlayer, TYPE_FLIGHT_DATA * ptrFlightDat
|
||||||
{
|
{
|
||||||
short y_offset;
|
short y_offset;
|
||||||
uint8_t page_aircraft;
|
uint8_t page_aircraft;
|
||||||
|
|
||||||
|
enum
|
||||||
|
{
|
||||||
|
GAME_GUI_REMAINING_AIRCRAFT_X = AIRCRAFT_DATA_GSGPOLY4_X0 + 8,
|
||||||
|
GAME_GUI_REMAINING_AIRCRAFT_Y = AIRCRAFT_DATA_GSGPOLY4_Y2 - 16,
|
||||||
|
GAME_GUI_REMAINING_AIRCRAFT_X_2PLAYER = AIRCRAFT_DATA_GSGPOLY4_X0_2PLAYER + 8,
|
||||||
|
GAME_GUI_REMAINING_AIRCRAFT_Y_2PLAYER = AIRCRAFT_DATA_GSGPOLY4_Y2_2PLAYER - 16
|
||||||
|
};
|
||||||
|
|
||||||
if(ptrPlayer->ShowAircraftData == true)
|
if(ptrPlayer->ShowAircraftData == true)
|
||||||
{
|
{
|
||||||
|
@ -394,6 +402,23 @@ void GameGuiAircraftList(TYPE_PLAYER* ptrPlayer, TYPE_FLIGHT_DATA * ptrFlightDat
|
||||||
}
|
}
|
||||||
|
|
||||||
GsSortGPoly4(&AircraftDataGPoly4);
|
GsSortGPoly4(&AircraftDataGPoly4);
|
||||||
|
|
||||||
|
if(GameTwoPlayersActive() == true)
|
||||||
|
{
|
||||||
|
FontPrintText( &SmallFont,
|
||||||
|
GAME_GUI_REMAINING_AIRCRAFT_X_2PLAYER,
|
||||||
|
GAME_GUI_REMAINING_AIRCRAFT_Y_2PLAYER,
|
||||||
|
"Rem. aircraft: %d",
|
||||||
|
ptrFlightData->nRemainingAircraft );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
FontPrintText( &SmallFont,
|
||||||
|
GAME_GUI_REMAINING_AIRCRAFT_X,
|
||||||
|
GAME_GUI_REMAINING_AIRCRAFT_Y,
|
||||||
|
"Remaining aircraft: %d",
|
||||||
|
ptrFlightData->nRemainingAircraft );
|
||||||
|
}
|
||||||
|
|
||||||
if(ptrPlayer->ActiveAircraft != 0)
|
if(ptrPlayer->ActiveAircraft != 0)
|
||||||
{
|
{
|
||||||
|
@ -504,7 +529,7 @@ void GameGuiAircraftList(TYPE_PLAYER* ptrPlayer, TYPE_FLIGHT_DATA * ptrFlightDat
|
||||||
{
|
{
|
||||||
FontPrintText(&SmallFont, AIRCRAFT_LOCK_TARGET_TEXT_X, AIRCRAFT_LOCK_TARGET_TEXT_Y, "Lock target");
|
FontPrintText(&SmallFont, AIRCRAFT_LOCK_TARGET_TEXT_X, AIRCRAFT_LOCK_TARGET_TEXT_Y, "Lock target");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if(GameTwoPlayersActive() == true)
|
if(GameTwoPlayersActive() == true)
|
||||||
|
@ -889,11 +914,11 @@ bool GameGuiFinishedDialog(TYPE_PLAYER* ptrPlayer)
|
||||||
GsSortGPoly4(&PauseRect);
|
GsSortGPoly4(&PauseRect);
|
||||||
|
|
||||||
FontPrintText( &SmallFont,
|
FontPrintText( &SmallFont,
|
||||||
AIRCRAFT_DATA_GSGPOLY4_X0_2PLAYER +
|
AIRCRAFT_DATA_GSGPOLY4_X0 +
|
||||||
( (AIRCRAFT_DATA_GSGPOLY4_X1_2PLAYER - AIRCRAFT_DATA_GSGPOLY4_X0_2PLAYER) >> 2),
|
( (AIRCRAFT_DATA_GSGPOLY4_X1 - AIRCRAFT_DATA_GSGPOLY4_X0) >> 2),
|
||||||
AIRCRAFT_DATA_GSGPOLY4_Y0_2PLAYER +
|
AIRCRAFT_DATA_GSGPOLY4_Y0 +
|
||||||
( (AIRCRAFT_DATA_GSGPOLY4_Y2_2PLAYER - AIRCRAFT_DATA_GSGPOLY4_Y0_2PLAYER) >> 1),
|
( (AIRCRAFT_DATA_GSGPOLY4_Y2 - AIRCRAFT_DATA_GSGPOLY4_Y0) >> 1),
|
||||||
"All flights finished!" );
|
"Level finished!" );
|
||||||
|
|
||||||
GfxDrawScene_Slow();
|
GfxDrawScene_Slow();
|
||||||
|
|
||||||
|
|
|
@ -77,6 +77,7 @@ typedef struct t_flightData
|
||||||
uint8_t Parking[GAME_MAX_AIRCRAFT];
|
uint8_t Parking[GAME_MAX_AIRCRAFT];
|
||||||
uint16_t RemainingTime[GAME_MAX_AIRCRAFT];
|
uint16_t RemainingTime[GAME_MAX_AIRCRAFT];
|
||||||
uint8_t nAircraft;
|
uint8_t nAircraft;
|
||||||
|
uint8_t nRemainingAircraft;
|
||||||
uint8_t ActiveAircraft;
|
uint8_t ActiveAircraft;
|
||||||
FL_STATE State[GAME_MAX_AIRCRAFT];
|
FL_STATE State[GAME_MAX_AIRCRAFT];
|
||||||
bool NotificationRequest[GAME_MAX_AIRCRAFT];
|
bool NotificationRequest[GAME_MAX_AIRCRAFT];
|
||||||
|
|
|
@ -708,6 +708,8 @@ bool MemCardReadSector(TYPE_BLOCK_DATA * ptrBlockData, int sector)
|
||||||
" 0 and 511 are allowed!\n", sector);
|
" 0 and 511 are allowed!\n", sector);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
while(GfxIsGPUBusy() == true);
|
||||||
|
|
||||||
result = McReadSector(ptrBlockData->Slot, sector, DataBuffer);
|
result = McReadSector(ptrBlockData->Slot, sector, DataBuffer);
|
||||||
|
|
||||||
|
|
|
@ -6,18 +6,25 @@
|
||||||
#For example:
|
#For example:
|
||||||
14:55
|
14:55
|
||||||
#Aircraft arrival (or departure) must be set relative to initial time, in HH:MM format.
|
#Aircraft arrival (or departure) must be set relative to initial time, in HH:MM format.
|
||||||
ARRIVAL;PHX1802;100;01:00;0;120
|
ARRIVAL;PHX1802;100;01:00;0;180
|
||||||
#ARRIVAL;PHX2015;120;00:10;0;120
|
ARRIVAL;PHX2015;180;00:10;0;180
|
||||||
#ARRIVAL;PHX2016;140;00:30;0;120
|
ARRIVAL;PHX2016;140;00:30;0;180
|
||||||
#ARRIVAL;PHX2017;140;00:40;0;120
|
ARRIVAL;PHX2017;140;00:40;0;180
|
||||||
#ARRIVAL;PHX2018;140;00:55;0;120
|
ARRIVAL;PHX2018;140;00:55;0;180
|
||||||
#ARRIVAL;PHX2018;160;01:20;0;120
|
ARRIVAL;PHX2018;160;01:20;0;180
|
||||||
#ARRIVAL;PHX2020;160;01:45;0;100
|
ARRIVAL;PHX2020;160;01:45;0;180
|
||||||
#ARRIVAL;PHX2019;140;01:30;0;120
|
ARRIVAL;PHX2019;140;01:30;0;180
|
||||||
#DEPARTURE;PHX1000;100;00:05;19;120
|
ARRIVAL;PHX2021;140;02:00;0;180
|
||||||
#DEPARTURE;PHX1280;100;00:30;19;120
|
ARRIVAL;PHX2022;140;02:30;0;180
|
||||||
#DEPARTURE;PHX1332;100;00:45;21;120
|
ARRIVAL;PHX2023;140;02:15;0;180
|
||||||
#DEPARTURE;PHX1333;100;01:00;19;120
|
DEPARTURE;PHX1000;100;00:05;19;180
|
||||||
#DEPARTURE;PHX1334;100;01:15;21;120
|
DEPARTURE;PHX1280;100;00:30;19;180
|
||||||
#DEPARTURE;PHX1336;100;01:20;21;120
|
DEPARTURE;PHX1332;100;00:45;21;180
|
||||||
#DEPARTURE;PHX1335;100;01:30;19;120
|
DEPARTURE;PHX1333;100;01:00;19;180
|
||||||
|
DEPARTURE;PHX1334;100;01:15;21;180
|
||||||
|
DEPARTURE;PHX1336;100;01:20;21;180
|
||||||
|
DEPARTURE;PHX1335;100;01:30;19;180
|
||||||
|
DEPARTURE;PHX1335;100;01:40;19;180
|
||||||
|
DEPARTURE;PHX1335;100;02:00;19;180
|
||||||
|
DEPARTURE;PHX1335;100;02:15;19;180
|
||||||
|
DEPARTURE;PHX1335;100;02:30;19;180
|
||||||
|
|
Loading…
Reference in New Issue
Block a user