* Split screen is now working. Yay!!
* New prototypes for Gfx. Still preliminar, but make split screen work.
This commit is contained in:
parent
83b4684d7c
commit
6a90ed354f
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
|
@ -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__
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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__
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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__
|
||||
|
|
|
@ -34,6 +34,7 @@ typedef enum t_flstate
|
|||
{
|
||||
STATE_IDLE = 0,
|
||||
STATE_PARKED,
|
||||
STATE_UNBOARDING,
|
||||
STATE_TAXIING,
|
||||
STATE_TAKEOFF,
|
||||
STATE_APPROACH,
|
||||
|
|
17
Source/Gfx.c
17
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);
|
||||
}
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
|
Loading…
Reference in New Issue