aboutsummaryrefslogtreecommitdiff
path: root/Source
diff options
context:
space:
mode:
authorXaviDCR92 <xavi.dcr@gmail.com>2017-05-05 23:55:15 +0200
committerXaviDCR92 <xavi.dcr@gmail.com>2017-05-05 23:55:15 +0200
commit6a90ed354fcf4871aa7ce1d0b599ff69787f1d5f (patch)
treedce9d108c63173c403a3a9c979021589ceb41640 /Source
parent83b4684d7cb9934371909b522d6daa0f16cc0396 (diff)
downloadairport-6a90ed354fcf4871aa7ce1d0b599ff69787f1d5f.tar.gz
* Split screen is now working. Yay!!
* New prototypes for Gfx. Still preliminar, but make split screen work.
Diffstat (limited to 'Source')
-rw-r--r--Source/Aircraft.c33
-rw-r--r--Source/Aircraft.h2
-rw-r--r--Source/Camera.c20
-rw-r--r--Source/Camera.h12
-rw-r--r--Source/Game.c98
-rw-r--r--Source/Game.h3
-rw-r--r--Source/GameGui.c82
-rw-r--r--Source/GameGui.h8
-rw-r--r--Source/GameStructures.h1
-rw-r--r--Source/Gfx.c17
-rw-r--r--Source/Gfx.h4
11 files changed, 179 insertions, 101 deletions
diff --git a/Source/Aircraft.c b/Source/Aircraft.c
index 5ddc4b8..3936f35 100644
--- a/Source/Aircraft.c
+++ b/Source/Aircraft.c
@@ -62,6 +62,7 @@ static void AircraftDirection(TYPE_AIRCRAFT_DATA* ptrAircraft);
static AIRCRAFT_LIVERY AircraftLiveryFromFlightNumber(char * strFlightNumber);
static void AircraftAttitude(TYPE_AIRCRAFT_DATA* ptrAircraft);
static void AircraftUpdateSpriteFromData(TYPE_AIRCRAFT_DATA* ptrAircraft);
+static void AircraftSpeed(TYPE_AIRCRAFT_DATA* ptrAircraft);
void AircraftInit(void)
{
@@ -125,8 +126,6 @@ bool AircraftAddNew( TYPE_FLIGHT_DATA * ptrFlightData,
ptrAircraft->IsoPos.z = targets[0] % level_columns;
ptrAircraft->IsoPos.z <<= TILE_SIZE_BIT_SHIFT - 1;
ptrAircraft->IsoPos.z = fix16_from_int(ptrAircraft->IsoPos.z);
-
- ptrAircraft->Speed = AircraftSpeedsTable[AIRCRAFT_SPEED_APPROACH];
}
else if(ptrFlightData->FlightDirection[FlightDataIndex] == DEPARTURE)
{
@@ -197,10 +196,36 @@ void AircraftHandler(void)
AircraftDirection(ptrAircraft);
AircraftAttitude(ptrAircraft);
+ AircraftSpeed(ptrAircraft);
}
}
-void AircraftRender(TYPE_PLAYER * ptrPlayer)
+void AircraftSpeed(TYPE_AIRCRAFT_DATA* ptrAircraft)
+{
+ switch(ptrAircraft->State)
+ {
+ case STATE_FINAL:
+ ptrAircraft->Speed = AircraftSpeedsTable[AIRCRAFT_SPEED_DESCENT];
+ break;
+
+ case STATE_TAKEOFF:
+ ptrAircraft->Speed = AircraftSpeedsTable[AIRCRAFT_SPEED_TAKEOFF];
+ break;
+
+ case STATE_TAXIING:
+ ptrAircraft->Speed = AircraftSpeedsTable[AIRCRAFT_SPEED_TAXIING];
+ break;
+
+ case STATE_UNBOARDING:
+ case STATE_IDLE:
+ case STATE_LANDED:
+ default:
+ ptrAircraft->Speed = 0;
+ break;
+ }
+}
+
+void AircraftRender(TYPE_PLAYER* ptrPlayer)
{
TYPE_AIRCRAFT_DATA* ptrAircraft;
TYPE_CARTESIAN_POS cartPos;
@@ -291,7 +316,7 @@ void AircraftDirection(TYPE_AIRCRAFT_DATA* ptrAircraft)
if(ptrAircraft->Target[++ptrAircraft->TargetIdx] == 0)
{
dprintf("All targets reached!\n");
- GameTargetsReached(ptrAircraft->FlightDataIdx);
+ ptrAircraft->State = GameTargetsReached(ptrAircraft->FlightDataIdx);
}
}
}
diff --git a/Source/Aircraft.h b/Source/Aircraft.h
index d941a13..e32a64a 100644
--- a/Source/Aircraft.h
+++ b/Source/Aircraft.h
@@ -16,7 +16,7 @@
void AircraftInit(void);
void AircraftHandler(void);
-void AircraftRender(TYPE_PLAYER * ptrPlayer);
+void AircraftRender(TYPE_PLAYER* ptrPlayer);
TYPE_AIRCRAFT_DATA* AircraftFromFlightDataIndex(uint8_t index);
void AircraftFromFlightDataIndexAddTargets(uint8_t index, uint16_t * targets);
void AircraftAddTargets(TYPE_AIRCRAFT_DATA* ptrAircraft, uint16_t * targets);
diff --git a/Source/Camera.c b/Source/Camera.c
index 9241455..f0f637f 100644
--- a/Source/Camera.c
+++ b/Source/Camera.c
@@ -17,10 +17,10 @@
* Local Prototypes
* *************************************/
-static void CameraUpdateSpeed(TYPE_PLAYER * ptrPlayer);
-static bool CameraSpecialConditions(TYPE_PLAYER * ptrPlayer);
+static void CameraUpdateSpeed(TYPE_PLAYER* ptrPlayer);
+static bool CameraSpecialConditions(TYPE_PLAYER* ptrPlayer);
-void CameraInit(TYPE_PLAYER * ptrPlayer)
+void CameraInit(TYPE_PLAYER* ptrPlayer)
{
// Center camera on screen
ptrPlayer->Camera.X_Offset = CAMERA_INITIAL_X_OFFSET;
@@ -30,13 +30,13 @@ void CameraInit(TYPE_PLAYER * ptrPlayer)
ptrPlayer->Camera.Speed_Timer = SPEED_CALCULATION_TIME;
}
-void CameraApplyCoordinatesToSprite(TYPE_PLAYER * ptrPlayer, GsSprite * spr)
+void CameraApplyCoordinatesToSprite(TYPE_PLAYER* ptrPlayer, GsSprite * spr)
{
spr->x += (short)ptrPlayer->Camera.X_Offset;
spr->y += (short)ptrPlayer->Camera.Y_Offset;
}
-void CameraApplyCoordinatesToRectangle(TYPE_PLAYER * ptrPlayer, GsRectangle * rect)
+void CameraApplyCoordinatesToRectangle(TYPE_PLAYER* ptrPlayer, GsRectangle * rect)
{
dprintf("Rectangle {%d, %d}\n",
rect->x,
@@ -46,7 +46,7 @@ void CameraApplyCoordinatesToRectangle(TYPE_PLAYER * ptrPlayer, GsRectangle * re
rect->y += (short)ptrPlayer->Camera.Y_Offset;
}
-void CameraUpdateSpeed(TYPE_PLAYER * ptrPlayer)
+void CameraUpdateSpeed(TYPE_PLAYER* ptrPlayer)
{
if(ptrPlayer->PadDirectionKeyPressed_Callback() == true)
{
@@ -128,7 +128,7 @@ void CameraUpdateSpeed(TYPE_PLAYER * ptrPlayer)
}
}
-void CameraHandler(TYPE_PLAYER * ptrPlayer)
+void CameraHandler(TYPE_PLAYER* ptrPlayer)
{
if(CameraSpecialConditions(ptrPlayer) == true)
{
@@ -151,7 +151,7 @@ void CameraHandler(TYPE_PLAYER * ptrPlayer)
ptrPlayer->Camera.Y_Offset += ptrPlayer->Camera.Y_Speed;
}
-bool CameraSpecialConditions(TYPE_PLAYER * ptrPlayer)
+bool CameraSpecialConditions(TYPE_PLAYER* ptrPlayer)
{
if( (ptrPlayer->ShowAircraftData == true)
||
@@ -165,7 +165,7 @@ bool CameraSpecialConditions(TYPE_PLAYER * ptrPlayer)
return false;
}
-TYPE_ISOMETRIC_POS CameraGetIsoPos(TYPE_PLAYER * ptrPlayer)
+TYPE_ISOMETRIC_POS CameraGetIsoPos(TYPE_PLAYER* ptrPlayer)
{
TYPE_ISOMETRIC_POS IsoPos;
TYPE_CARTESIAN_POS CartPos;
@@ -180,7 +180,7 @@ TYPE_ISOMETRIC_POS CameraGetIsoPos(TYPE_PLAYER * ptrPlayer)
return IsoPos;
}
-void CameraMoveToIsoPos(TYPE_PLAYER * ptrPlayer, TYPE_ISOMETRIC_POS IsoPos)
+void CameraMoveToIsoPos(TYPE_PLAYER* ptrPlayer, TYPE_ISOMETRIC_POS IsoPos)
{
TYPE_CARTESIAN_POS CartPos = GfxIsometricToCartesian(&IsoPos);
diff --git a/Source/Camera.h b/Source/Camera.h
index 8e6866f..887113d 100644
--- a/Source/Camera.h
+++ b/Source/Camera.h
@@ -18,11 +18,11 @@
* Global prototypes
* *************************************/
-void CameraInit(TYPE_PLAYER * ptrPlayer);
-void CameraHandler(TYPE_PLAYER * ptrPlayer);
-void CameraApplyCoordinatesToSprite(TYPE_PLAYER * ptrPlayer, GsSprite * spr);
-void CameraApplyCoordinatesToRectangle(TYPE_PLAYER * ptrPlayer, GsRectangle * rect);
-TYPE_ISOMETRIC_POS CameraGetIsoPos(TYPE_PLAYER * ptrPlayer);
-void CameraMoveToIsoPos(TYPE_PLAYER * ptrPlayer, TYPE_ISOMETRIC_POS ptrIsoPos);
+void CameraInit(TYPE_PLAYER* ptrPlayer);
+void CameraHandler(TYPE_PLAYER* ptrPlayer);
+void CameraApplyCoordinatesToSprite(TYPE_PLAYER* ptrPlayer, GsSprite * spr);
+void CameraApplyCoordinatesToRectangle(TYPE_PLAYER* ptrPlayer, GsRectangle * rect);
+TYPE_ISOMETRIC_POS CameraGetIsoPos(TYPE_PLAYER* ptrPlayer);
+void CameraMoveToIsoPos(TYPE_PLAYER* ptrPlayer, TYPE_ISOMETRIC_POS ptrIsoPos);
#endif //__CAM_HEADER__
diff --git a/Source/Game.c b/Source/Game.c
index bb7e6c3..dd5f00e 100644
--- a/Source/Game.c
+++ b/Source/Game.c
@@ -89,29 +89,29 @@ static void GameLoadLevel(void);
static bool GamePause(void);
static void GameEmergencyMode(void);
static void GameCalculations(void);
-static void GamePlayerHandler(TYPE_PLAYER * ptrPlayer, TYPE_FLIGHT_DATA * ptrFlightData);
-static void GamePlayerAddWaypoint(TYPE_PLAYER * ptrPlayer);
-static void GamePlayerAddWaypoint_Ex(TYPE_PLAYER * ptrPlayer, uint16_t tile);
+static void GamePlayerHandler(TYPE_PLAYER* ptrPlayer, TYPE_FLIGHT_DATA * ptrFlightData);
+static void GamePlayerAddWaypoint(TYPE_PLAYER* ptrPlayer);
+static void GamePlayerAddWaypoint_Ex(TYPE_PLAYER* ptrPlayer, uint16_t tile);
static void GameGraphics(void);
-static void GameRenderLevel(TYPE_PLAYER * ptrPlayer);
+static void GameRenderLevel(TYPE_PLAYER* ptrPlayer);
//static void GameLoadPilots(char * strPath);
static void GameClock(void);
static void GameClockFlights(void);
static void GameAircraftState(void);
static void GameActiveAircraft(void);
-static void GameStateShowAircraft(TYPE_PLAYER * ptrPlayer, TYPE_FLIGHT_DATA * ptrFlightData);
+static void GameStateShowAircraft(TYPE_PLAYER* ptrPlayer, TYPE_FLIGHT_DATA * ptrFlightData);
static void GameFirstLastAircraftIndex(void);
-static void GameSelectAircraftFromList(TYPE_PLAYER * ptrPlayer, TYPE_FLIGHT_DATA * ptrFlightData);
-static void GameStateSelectRunway(TYPE_PLAYER * ptrPlayer, TYPE_FLIGHT_DATA * ptrFlightData);
-static void GameStateSelectTaxiwayRunway(TYPE_PLAYER * ptrPlayer, TYPE_FLIGHT_DATA * ptrFlightData);
-static void GameStateSelectTaxiwayParking(TYPE_PLAYER * ptrPlayer, TYPE_FLIGHT_DATA * ptrFlightData);
-static void GameStateLockTarget(TYPE_PLAYER * ptrPlayer);
-static void GameSelectAircraft(TYPE_PLAYER * ptrPlayer);
+static void GameSelectAircraftFromList(TYPE_PLAYER* ptrPlayer, TYPE_FLIGHT_DATA * ptrFlightData);
+static void GameStateSelectRunway(TYPE_PLAYER* ptrPlayer, TYPE_FLIGHT_DATA * ptrFlightData);
+static void GameStateSelectTaxiwayRunway(TYPE_PLAYER* ptrPlayer, TYPE_FLIGHT_DATA * ptrFlightData);
+static void GameStateSelectTaxiwayParking(TYPE_PLAYER* ptrPlayer, TYPE_FLIGHT_DATA * ptrFlightData);
+static void GameStateLockTarget(TYPE_PLAYER* ptrPlayer);
+static void GameSelectAircraft(TYPE_PLAYER* ptrPlayer);
static void GameGetRunwayArray(void);
static void GameGetSelectedRunwayArray(uint16_t rwyHeader);
-static void GameAssignRunwaytoAircraft(TYPE_PLAYER * ptrPlayer, TYPE_FLIGHT_DATA * ptrFlightData);
-static bool GameGuiShowAircraftDataSpecialConditions(TYPE_PLAYER * ptrPlayer);
-static bool GamePathToTile(TYPE_PLAYER * ptrPlayer);
+static void GameAssignRunwaytoAircraft(TYPE_PLAYER* ptrPlayer, TYPE_FLIGHT_DATA * ptrFlightData);
+static bool GameGuiShowAircraftDataSpecialConditions(TYPE_PLAYER* ptrPlayer);
+static bool GamePathToTile(TYPE_PLAYER* ptrPlayer);
/* *************************************
* Global Variables
@@ -203,7 +203,7 @@ void Game(bool two_players)
bool GamePause(void)
{
- TYPE_PLAYER * ptrPlayer;
+ TYPE_PLAYER* ptrPlayer;
uint8_t i;
bool pause_flag = false;
@@ -487,7 +487,7 @@ uint8_t GameGetLastActiveAircraft(void)
return lastActiveAircraft;
}
-void GamePlayerHandler(TYPE_PLAYER * ptrPlayer, TYPE_FLIGHT_DATA * ptrFlightData)
+void GamePlayerHandler(TYPE_PLAYER* ptrPlayer, TYPE_FLIGHT_DATA * ptrFlightData)
{
ptrPlayer->SelectedTile = 0; // Reset selected tile if no states
// which use this are currently active.
@@ -558,9 +558,7 @@ void GameGraphics(void)
||
(SystemRefreshNeeded() == false) );
- if( (PlayerData[PLAYER_ONE].Active == true)
- &&
- (PlayerData[PLAYER_TWO].Active == true) )
+ if(TwoPlayersActive == true)
{
split_screen = true;
}
@@ -584,22 +582,31 @@ void GameGraphics(void)
GameRenderLevel(&PlayerData[i]);
AircraftRender(&PlayerData[i]);
- GameGuiAircraftNotificationRequest(&FlightData);
-
- GameGuiBubble(&FlightData);
-
- GameGuiClock(GameHour,GameMinutes);
-
/*for(i = 0; i < MAX_PLAYERS ; i++)
{*/
GameGuiAircraftList(&PlayerData[i], &FlightData);
//}
- GfxDrawScene_Fast();
+ GfxDrawScene_NoSwap();
+
while(GfxIsGPUBusy() == true);
}
}
+ GfxDisableSplitScreen();
+
+ GameGuiAircraftNotificationRequest(&FlightData);
+
+ GameGuiBubble(&FlightData);
+
+ GameGuiClock(GameHour,GameMinutes);
+
+ GfxDrawScene_NoSwap();
+
+ while(GfxIsGPUBusy() == true);
+
+ GfxSwapBuffers();
+
SystemCyclicHandler();
}
@@ -717,7 +724,7 @@ void GameAircraftState(void)
}
-void GameRenderLevel(TYPE_PLAYER * ptrPlayer)
+void GameRenderLevel(TYPE_PLAYER* ptrPlayer)
{
uint16_t i;
uint16_t j;
@@ -977,7 +984,7 @@ void GameActiveAircraft(void)
}
}
-void GameStateShowAircraft(TYPE_PLAYER * ptrPlayer, TYPE_FLIGHT_DATA * ptrFlightData)
+void GameStateShowAircraft(TYPE_PLAYER* ptrPlayer, TYPE_FLIGHT_DATA * ptrFlightData)
{
if(ptrPlayer->ShowAircraftData == true)
{
@@ -1009,7 +1016,7 @@ void GameStateShowAircraft(TYPE_PLAYER * ptrPlayer, TYPE_FLIGHT_DATA * ptrFlight
}
}
-void GameStateLockTarget(TYPE_PLAYER * ptrPlayer)
+void GameStateLockTarget(TYPE_PLAYER* ptrPlayer)
{
if(ptrPlayer->LockTarget == true)
{
@@ -1023,7 +1030,7 @@ void GameStateLockTarget(TYPE_PLAYER * ptrPlayer)
}
}
-void GameStateSelectTaxiwayRunway(TYPE_PLAYER * ptrPlayer, TYPE_FLIGHT_DATA * ptrFlightData)
+void GameStateSelectTaxiwayRunway(TYPE_PLAYER* ptrPlayer, TYPE_FLIGHT_DATA * ptrFlightData)
{
TYPE_ISOMETRIC_POS IsoPos = CameraGetIsoPos(ptrPlayer);
uint8_t i;
@@ -1105,7 +1112,7 @@ void GameStateSelectTaxiwayRunway(TYPE_PLAYER * ptrPlayer, TYPE_FLIGHT_DATA * pt
}
}
-void GameStateSelectTaxiwayParking(TYPE_PLAYER * ptrPlayer, TYPE_FLIGHT_DATA * ptrFlightData)
+void GameStateSelectTaxiwayParking(TYPE_PLAYER* ptrPlayer, TYPE_FLIGHT_DATA * ptrFlightData)
{
TYPE_ISOMETRIC_POS IsoPos = CameraGetIsoPos(ptrPlayer);
uint8_t i;
@@ -1185,7 +1192,7 @@ void GameStateSelectTaxiwayParking(TYPE_PLAYER * ptrPlayer, TYPE_FLIGHT_DATA * p
}
}
-void GameStateSelectRunway(TYPE_PLAYER * ptrPlayer, TYPE_FLIGHT_DATA * ptrFlightData)
+void GameStateSelectRunway(TYPE_PLAYER* ptrPlayer, TYPE_FLIGHT_DATA * ptrFlightData)
{
uint8_t i;
bool success;
@@ -1280,7 +1287,7 @@ void GameGetRunwayArray(void)
dprintf("\n");
}
-void GameSelectAircraftFromList(TYPE_PLAYER * ptrPlayer, TYPE_FLIGHT_DATA * ptrFlightData)
+void GameSelectAircraftFromList(TYPE_PLAYER* ptrPlayer, TYPE_FLIGHT_DATA * ptrFlightData)
{
FL_STATE aircraftState = ptrFlightData->State[ptrPlayer->SelectedAircraft];
@@ -1398,7 +1405,7 @@ void GameGetSelectedRunwayArray(uint16_t rwyHeader)
GameGetSelectedRunwayArray(0);
}
-void GameAssignRunwaytoAircraft(TYPE_PLAYER * ptrPlayer, TYPE_FLIGHT_DATA * ptrFlightData)
+void GameAssignRunwaytoAircraft(TYPE_PLAYER* ptrPlayer, TYPE_FLIGHT_DATA * ptrFlightData)
{
uint16_t assignedRwy = GameRwy[ptrPlayer->SelectedRunway];
uint8_t aircraftIndex = ptrPlayer->SelectedAircraft;
@@ -1497,8 +1504,10 @@ fix16_t GameGetYFromTile(uint16_t tile)
return retVal;
}
-void GameTargetsReached(uint8_t index)
+FL_STATE GameTargetsReached(uint8_t index)
{
+ FL_STATE retState = STATE_IDLE;
+
switch(FlightData.State[index])
{
case STATE_FINAL:
@@ -1506,15 +1515,17 @@ void GameTargetsReached(uint8_t index)
break;
case STATE_TAXIING:
- FlightData.State[index] = STATE_PARKED;
+ FlightData.State[index] = STATE_UNBOARDING;
break;
default:
break;
}
+
+ return retState;
}
-bool GameGuiShowAircraftDataSpecialConditions(TYPE_PLAYER * ptrPlayer)
+bool GameGuiShowAircraftDataSpecialConditions(TYPE_PLAYER* ptrPlayer)
{
// Aircraft list data cannot be shown under these conditions.
@@ -1561,12 +1572,12 @@ uint8_t GameGetLevelColumns(void)
return GameLevelColumns;
}
-void GamePlayerAddWaypoint(TYPE_PLAYER * ptrPlayer)
+void GamePlayerAddWaypoint(TYPE_PLAYER* ptrPlayer)
{
GamePlayerAddWaypoint_Ex(ptrPlayer, ptrPlayer->SelectedTile);
}
-void GamePlayerAddWaypoint_Ex(TYPE_PLAYER * ptrPlayer, uint16_t tile)
+void GamePlayerAddWaypoint_Ex(TYPE_PLAYER* ptrPlayer, uint16_t tile)
{
// "_Ex" function allow selecting a certain tile, whereas the other one
// is a particulare case of "_Ex" for tile = ptrPlayer->SelectedTIle.
@@ -1584,7 +1595,7 @@ void GamePlayerAddWaypoint_Ex(TYPE_PLAYER * ptrPlayer, uint16_t tile)
ptrPlayer->Waypoints[ptrPlayer->WaypointIdx++] = tile;
}
-bool GamePathToTile(TYPE_PLAYER * ptrPlayer)
+bool GamePathToTile(TYPE_PLAYER* ptrPlayer)
{
// Given an input TYPE_PLAYER structure and a selected tile,
// it updates current Waypoints array with all tiles between two points.
@@ -1813,7 +1824,7 @@ bool GamePathToTile(TYPE_PLAYER * ptrPlayer)
return true;
}
-void GameSelectAircraft(TYPE_PLAYER * ptrPlayer)
+void GameSelectAircraft(TYPE_PLAYER* ptrPlayer)
{
TYPE_ISOMETRIC_POS IsoPos = AircraftGetIsoPos(ptrPlayer->SelectedAircraft);
@@ -1823,3 +1834,8 @@ void GameSelectAircraft(TYPE_PLAYER * ptrPlayer)
GamePlayerAddWaypoint(ptrPlayer);
}
+
+bool GameTwoPlayersActive(void)
+{
+ return TwoPlayersActive;
+}
diff --git a/Source/Game.h b/Source/Game.h
index 712c404..6e74aee 100644
--- a/Source/Game.h
+++ b/Source/Game.h
@@ -38,12 +38,13 @@ extern TYPE_PLAYER PlayerData[];
void Game(bool two_players);
char * GetGameLevelTitle(void);
void GameSetTime(uint8_t hour, uint8_t minutes);
+bool GameTwoPlayersActive(void);
uint8_t GameGetFirstActiveAircraft(void);
uint8_t GameGetLastActiveAircraft(void);
uint8_t GameGetLevelColumns(void);
fix16_t GameGetXFromTile(uint16_t tile);
fix16_t GameGetYFromTile(uint16_t tile);
-void GameTargetsReached(uint8_t index);
+FL_STATE GameTargetsReached(uint8_t index);
uint16_t GameGetTileFromIsoPosition(TYPE_ISOMETRIC_POS * IsoPos);
#endif //__GAME_HEADER__
diff --git a/Source/GameGui.c b/Source/GameGui.c
index dc13e6c..8a6323f 100644
--- a/Source/GameGui.c
+++ b/Source/GameGui.c
@@ -111,6 +111,16 @@ enum
AIRCRAFT_DATA_GSGPOLY4_Y1 = AIRCRAFT_DATA_GSGPOLY4_Y0,
AIRCRAFT_DATA_GSGPOLY4_Y2 = (Y_SCREEN_RESOLUTION >> 1) + 96,
AIRCRAFT_DATA_GSGPOLY4_Y3 = AIRCRAFT_DATA_GSGPOLY4_Y2,
+
+ AIRCRAFT_DATA_GSGPOLY4_X0_2PLAYER = (X_SCREEN_RESOLUTION >> 2) - (96 >> 1),
+ AIRCRAFT_DATA_GSGPOLY4_X1_2PLAYER = (X_SCREEN_RESOLUTION >> 2) + (96 >> 1),
+ AIRCRAFT_DATA_GSGPOLY4_X2_2PLAYER = AIRCRAFT_DATA_GSGPOLY4_X0,
+ AIRCRAFT_DATA_GSGPOLY4_X3_2PLAYER = AIRCRAFT_DATA_GSGPOLY4_X1,
+
+ AIRCRAFT_DATA_GSGPOLY4_Y0_2PLAYER = (Y_SCREEN_RESOLUTION >> 2) - (96 >> 1),
+ AIRCRAFT_DATA_GSGPOLY4_Y1_2PLAYER = AIRCRAFT_DATA_GSGPOLY4_Y0,
+ AIRCRAFT_DATA_GSGPOLY4_Y2_2PLAYER = (Y_SCREEN_RESOLUTION >> 2) + (96 >> 1),
+ AIRCRAFT_DATA_GSGPOLY4_Y3_2PLAYER = AIRCRAFT_DATA_GSGPOLY4_Y2,
};
enum
@@ -184,7 +194,7 @@ enum
* *************************************/
static void GameGuiPrepareNotificationString(TYPE_FLIGHT_DATA * ptrFlightData, uint8_t offset);
-static void GameGuiShowAircraftData(TYPE_PLAYER * ptrPlayer, TYPE_FLIGHT_DATA * ptrFlightData);
+static void GameGuiShowAircraftData(TYPE_PLAYER* ptrPlayer, TYPE_FLIGHT_DATA * ptrFlightData);
/* **************************************
* Local variables *
@@ -326,7 +336,7 @@ void GameGuiAircraftNotificationRequest(TYPE_FLIGHT_DATA * ptrFlightData)
}
}
-bool GameGuiPauseDialog(TYPE_PLAYER * ptrPlayer)
+bool GameGuiPauseDialog(TYPE_PLAYER* ptrPlayer)
{
GfxSaveDisplayData(&SecondDisplay);
@@ -352,7 +362,7 @@ bool GameGuiPauseDialog(TYPE_PLAYER * ptrPlayer)
return false;
}
-void GameGuiActiveAircraftList(TYPE_PLAYER * ptrPlayer, TYPE_FLIGHT_DATA * ptrFlightData)
+void GameGuiActiveAircraftList(TYPE_PLAYER* ptrPlayer, TYPE_FLIGHT_DATA * ptrFlightData)
{
uint8_t i;
uint8_t j = 0;
@@ -374,7 +384,7 @@ void GameGuiActiveAircraftList(TYPE_PLAYER * ptrPlayer, TYPE_FLIGHT_DATA * ptrFl
}
}
-void GameGuiActiveAircraftPage(TYPE_PLAYER * ptrPlayer, TYPE_FLIGHT_DATA * ptrFlightData)
+void GameGuiActiveAircraftPage(TYPE_PLAYER* ptrPlayer, TYPE_FLIGHT_DATA * ptrFlightData)
{
while(ptrPlayer->ActiveAircraft < ptrPlayer->SelectedAircraft)
{
@@ -428,32 +438,34 @@ void GameGuiActiveAircraftPage(TYPE_PLAYER * ptrPlayer, TYPE_FLIGHT_DATA * ptrFl
}
}
-void GameGuiAircraftList(TYPE_PLAYER * ptrPlayer, TYPE_FLIGHT_DATA * ptrFlightData)
+void GameGuiAircraftList(TYPE_PLAYER* ptrPlayer, TYPE_FLIGHT_DATA * ptrFlightData)
{
short y_offset;
uint8_t page_aircraft;
if(ptrPlayer->ShowAircraftData == true)
{
- // Prepare RGB data and (X,Y) coordinates for aircraft
- // data list request rectangle.
- AircraftDataGPoly4.r[0] = AIRCRAFT_DATA_GSGPOLY4_R0;
- AircraftDataGPoly4.r[1] = AIRCRAFT_DATA_GSGPOLY4_R1;
- AircraftDataGPoly4.r[2] = AIRCRAFT_DATA_GSGPOLY4_R2;
- AircraftDataGPoly4.r[3] = AIRCRAFT_DATA_GSGPOLY4_R3;
-
- AircraftDataGPoly4.g[0] = AIRCRAFT_DATA_GSGPOLY4_G0;
- AircraftDataGPoly4.g[1] = AIRCRAFT_DATA_GSGPOLY4_G1;
- AircraftDataGPoly4.g[2] = AIRCRAFT_DATA_GSGPOLY4_G2;
- AircraftDataGPoly4.g[3] = AIRCRAFT_DATA_GSGPOLY4_G3;
-
- AircraftDataGPoly4.b[0] = AIRCRAFT_DATA_GSGPOLY4_B0;
- AircraftDataGPoly4.b[1] = AIRCRAFT_DATA_GSGPOLY4_B1;
- AircraftDataGPoly4.b[2] = AIRCRAFT_DATA_GSGPOLY4_B2;
- AircraftDataGPoly4.b[3] = AIRCRAFT_DATA_GSGPOLY4_B3;
-
- AircraftDataGPoly4.attribute |= ENABLE_TRANS | TRANS_MODE(0);
+ // Prepare RGB data and (X,Y) coordinates for aircraft
+ // data list request rectangle.
+ AircraftDataGPoly4.r[0] = AIRCRAFT_DATA_GSGPOLY4_R0;
+ AircraftDataGPoly4.r[1] = AIRCRAFT_DATA_GSGPOLY4_R1;
+ AircraftDataGPoly4.r[2] = AIRCRAFT_DATA_GSGPOLY4_R2;
+ AircraftDataGPoly4.r[3] = AIRCRAFT_DATA_GSGPOLY4_R3;
+
+ AircraftDataGPoly4.g[0] = AIRCRAFT_DATA_GSGPOLY4_G0;
+ AircraftDataGPoly4.g[1] = AIRCRAFT_DATA_GSGPOLY4_G1;
+ AircraftDataGPoly4.g[2] = AIRCRAFT_DATA_GSGPOLY4_G2;
+ AircraftDataGPoly4.g[3] = AIRCRAFT_DATA_GSGPOLY4_G3;
+
+ AircraftDataGPoly4.b[0] = AIRCRAFT_DATA_GSGPOLY4_B0;
+ AircraftDataGPoly4.b[1] = AIRCRAFT_DATA_GSGPOLY4_B1;
+ AircraftDataGPoly4.b[2] = AIRCRAFT_DATA_GSGPOLY4_B2;
+ AircraftDataGPoly4.b[3] = AIRCRAFT_DATA_GSGPOLY4_B3;
+
+ AircraftDataGPoly4.attribute |= ENABLE_TRANS | TRANS_MODE(0);
+ if(GameTwoPlayersActive() == true)
+ {
AircraftDataGPoly4.x[0] = AIRCRAFT_DATA_GSGPOLY4_X0;
AircraftDataGPoly4.x[1] = AIRCRAFT_DATA_GSGPOLY4_X1;
AircraftDataGPoly4.x[2] = AIRCRAFT_DATA_GSGPOLY4_X2;
@@ -463,8 +475,21 @@ void GameGuiAircraftList(TYPE_PLAYER * ptrPlayer, TYPE_FLIGHT_DATA * ptrFlightDa
AircraftDataGPoly4.y[1] = AIRCRAFT_DATA_GSGPOLY4_Y1;
AircraftDataGPoly4.y[2] = AIRCRAFT_DATA_GSGPOLY4_Y2;
AircraftDataGPoly4.y[3] = AIRCRAFT_DATA_GSGPOLY4_Y3;
+ }
+ else
+ {
+ AircraftDataGPoly4.x[0] = AIRCRAFT_DATA_GSGPOLY4_X0_2PLAYER;
+ AircraftDataGPoly4.x[1] = AIRCRAFT_DATA_GSGPOLY4_X1_2PLAYER;
+ AircraftDataGPoly4.x[2] = AIRCRAFT_DATA_GSGPOLY4_X2_2PLAYER;
+ AircraftDataGPoly4.x[3] = AIRCRAFT_DATA_GSGPOLY4_X3_2PLAYER;
- GsSortGPoly4(&AircraftDataGPoly4);
+ AircraftDataGPoly4.y[0] = AIRCRAFT_DATA_GSGPOLY4_Y0_2PLAYER;
+ AircraftDataGPoly4.y[1] = AIRCRAFT_DATA_GSGPOLY4_Y1_2PLAYER;
+ AircraftDataGPoly4.y[2] = AIRCRAFT_DATA_GSGPOLY4_Y2_2PLAYER;
+ AircraftDataGPoly4.y[3] = AIRCRAFT_DATA_GSGPOLY4_Y3_2PLAYER;
+ }
+
+ GsSortGPoly4(&AircraftDataGPoly4);
if(ptrPlayer->ActiveAircraft != 0)
{
@@ -650,7 +675,7 @@ void GameGuiClock(uint8_t hour, uint8_t min)
FontPrintText(&RadioFont,CLOCK_X,CLOCK_Y,strClock);
}
-void GameGuiShowAircraftData(TYPE_PLAYER * ptrPlayer, TYPE_FLIGHT_DATA * ptrFlightData)
+void GameGuiShowAircraftData(TYPE_PLAYER* ptrPlayer, TYPE_FLIGHT_DATA * ptrFlightData)
{
uint8_t init_flight = ptrPlayer->FlightDataPage * GAME_GUI_AIRCRAFT_DATA_MAX_PAGE;
uint8_t i;
@@ -722,6 +747,13 @@ void GameGuiShowAircraftData(TYPE_PLAYER * ptrPlayer, TYPE_FLIGHT_DATA * ptrFlig
"Parked" );
break;
+ case STATE_UNBOARDING:
+ FontPrintText( &SmallFont,
+ AIRCRAFT_DATA_DIRECTION_X + 88,
+ AIRCRAFT_DATA_DIRECTION_Y + (AIRCRAFT_DATA_FLIGHT_GSGPOLY4_H * j),
+ "Unboarding" );
+ break;
+
default:
break;
}
diff --git a/Source/GameGui.h b/Source/GameGui.h
index fdd2181..0f0a223 100644
--- a/Source/GameGui.h
+++ b/Source/GameGui.h
@@ -27,12 +27,12 @@
* *************************************/
void GameGuiInit(void);
-bool GameGuiPauseDialog(TYPE_PLAYER * ptrPlayer);
+bool GameGuiPauseDialog(TYPE_PLAYER* ptrPlayer);
void GameGuiAircraftNotificationRequest(TYPE_FLIGHT_DATA * ptrFlightData);
void GameGuiBubble(TYPE_FLIGHT_DATA * ptrFlightData);
-void GameGuiAircraftList(TYPE_PLAYER * ptrPlayer, TYPE_FLIGHT_DATA * ptrFlightData);
+void GameGuiAircraftList(TYPE_PLAYER* ptrPlayer, TYPE_FLIGHT_DATA * ptrFlightData);
void GameGuiClock(uint8_t hour, uint8_t min);
-void GameGuiActiveAircraftList(TYPE_PLAYER * ptrPlayer, TYPE_FLIGHT_DATA * ptrFlightData);
-void GameGuiActiveAircraftPage(TYPE_PLAYER * ptrPlayer, TYPE_FLIGHT_DATA * ptrFlightData);
+void GameGuiActiveAircraftList(TYPE_PLAYER* ptrPlayer, TYPE_FLIGHT_DATA * ptrFlightData);
+void GameGuiActiveAircraftPage(TYPE_PLAYER* ptrPlayer, TYPE_FLIGHT_DATA * ptrFlightData);
#endif //__GAME_GUI_HEADER__
diff --git a/Source/GameStructures.h b/Source/GameStructures.h
index 3efe573..797fc91 100644
--- a/Source/GameStructures.h
+++ b/Source/GameStructures.h
@@ -34,6 +34,7 @@ typedef enum t_flstate
{
STATE_IDLE = 0,
STATE_PARKED,
+ STATE_UNBOARDING,
STATE_TAXIING,
STATE_TAKEOFF,
STATE_APPROACH,
diff --git a/Source/Gfx.c b/Source/Gfx.c
index 329ba19..27646ee 100644
--- a/Source/Gfx.c
+++ b/Source/Gfx.c
@@ -53,7 +53,7 @@ GsSprite PSXButtons;
* Local Prototypes
* *************************************/
-static void GfxSwapBuffers(void);
+
/* *************************************
* Local Variables
@@ -122,6 +122,11 @@ void GfxDrawScene_Fast(void)
GsDrawList();
}
+void GfxDrawScene_NoSwap(void)
+{
+ GsDrawList();
+}
+
bool GfxReadyForDMATransfer(void)
{
return (GPUSTAT & 1<<28);
@@ -319,11 +324,11 @@ bool GfxIsInsideScreenArea(short x, short y, short w, short h)
{
if( ( (x + w) >= 0)
&&
- (x < X_SCREEN_RESOLUTION)
+ (x < DrawEnv.w)
&&
( (y + h) >= 0)
&&
- (y < Y_SCREEN_RESOLUTION) )
+ (y < DrawEnv.h) )
{
return true;
}
@@ -515,7 +520,6 @@ TYPE_ISOMETRIC_POS GfxCartesianToIsometric(TYPE_CARTESIAN_POS * ptrCartPos)
void GfxSetSplitScreen(uint8_t playerIndex)
{
-
switch(playerIndex)
{
case 0:
@@ -534,11 +538,6 @@ void GfxSetSplitScreen(uint8_t playerIndex)
break;
}
- dprintf("Player idx = %d, x = %d, w = %d\n",
- playerIndex,
- DrawEnv.x,
- DrawEnv.w);
-
GsSetDrawEnv(&DrawEnv);
}
diff --git a/Source/Gfx.h b/Source/Gfx.h
index 68c0f5b..bbd041f 100644
--- a/Source/Gfx.h
+++ b/Source/Gfx.h
@@ -40,6 +40,10 @@ void GfxDrawScene(void);
// after it.
void GfxDrawScene_Slow(void);
+void GfxDrawScene_NoSwap(void);
+
+void GfxSwapBuffers(void);
+
// Only renders screen and does not update any pad data or timer data.
// To be used in ISR!
void GfxDrawScene_Fast(void);