Aircraft are now auto-locked when entering "ShowAircraftData" menu.
Minor fixes and improvements. Path is shown when selecting a moving aircraft.
This commit is contained in:
parent
d224f1c458
commit
ce0027e87f
|
@ -466,8 +466,6 @@ void AircraftRender(TYPE_PLAYER* const ptrPlayer, uint8_t aircraftIdx)
|
||||||
AircraftSpr.g = 0;
|
AircraftSpr.g = 0;
|
||||||
AircraftSpr.b = 0;
|
AircraftSpr.b = 0;
|
||||||
|
|
||||||
AircraftSpr.attribute |= ENABLE_TRANS | TRANS_MODE(0);
|
|
||||||
|
|
||||||
GfxSortSprite(&AircraftSpr);
|
GfxSortSprite(&AircraftSpr);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -477,8 +475,6 @@ void AircraftRender(TYPE_PLAYER* const ptrPlayer, uint8_t aircraftIdx)
|
||||||
AircraftSpr.x = cartPos.x - (AircraftSpr.w >> 1);
|
AircraftSpr.x = cartPos.x - (AircraftSpr.w >> 1);
|
||||||
AircraftSpr.y = cartPos.y - (AircraftSpr.h >> 1);
|
AircraftSpr.y = cartPos.y - (AircraftSpr.h >> 1);
|
||||||
|
|
||||||
AircraftSpr.attribute &= ~(ENABLE_TRANS | TRANS_MODE(0));
|
|
||||||
|
|
||||||
CameraApplyCoordinatesToSprite(ptrPlayer, &AircraftSpr);
|
CameraApplyCoordinatesToSprite(ptrPlayer, &AircraftSpr);
|
||||||
|
|
||||||
if ((ptrPlayer->FlightDataSelectedAircraft == aircraftIdx)
|
if ((ptrPlayer->FlightDataSelectedAircraft == aircraftIdx)
|
||||||
|
@ -864,7 +860,7 @@ DIRECTION AircraftGetDirection(TYPE_AIRCRAFT_DATA* const ptrAircraft)
|
||||||
return ptrAircraft->Direction;
|
return ptrAircraft->Direction;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint16_t* AircraftGetTargets(uint8_t index)
|
const uint16_t* AircraftGetTargets(uint8_t index)
|
||||||
{
|
{
|
||||||
TYPE_AIRCRAFT_DATA* const ptrAircraft = AircraftFromFlightDataIndex(index);
|
TYPE_AIRCRAFT_DATA* const ptrAircraft = AircraftFromFlightDataIndex(index);
|
||||||
|
|
||||||
|
|
|
@ -21,7 +21,7 @@ void AircraftAddTargets(TYPE_AIRCRAFT_DATA* const ptrAircraft, uint16_t* targets
|
||||||
TYPE_ISOMETRIC_POS AircraftGetIsoPos(const uint8_t FlightDataIdx);
|
TYPE_ISOMETRIC_POS AircraftGetIsoPos(const uint8_t FlightDataIdx);
|
||||||
uint16_t AircraftGetTileFromFlightDataIndex(const uint8_t index);
|
uint16_t AircraftGetTileFromFlightDataIndex(const uint8_t index);
|
||||||
bool AircraftRemove(uint8_t aircraftIdx);
|
bool AircraftRemove(uint8_t aircraftIdx);
|
||||||
uint16_t* AircraftGetTargets(uint8_t index);
|
const uint16_t* AircraftGetTargets(uint8_t index);
|
||||||
bool AircraftMoving(uint8_t index);
|
bool AircraftMoving(uint8_t index);
|
||||||
uint8_t AircraftGetTargetIdx(uint8_t index);
|
uint8_t AircraftGetTargetIdx(uint8_t index);
|
||||||
DIRECTION AircraftGetDirection(TYPE_AIRCRAFT_DATA* const ptrAircraft);
|
DIRECTION AircraftGetDirection(TYPE_AIRCRAFT_DATA* const ptrAircraft);
|
||||||
|
|
|
@ -29,14 +29,14 @@ long_line_column=120
|
||||||
|
|
||||||
[files]
|
[files]
|
||||||
current_page=41
|
current_page=41
|
||||||
FILE_NAME_0=4282;C;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FAirport%2FSource%2FAircraft.c;0;4
|
FILE_NAME_0=9500;C;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FAirport%2FSource%2FAircraft.c;0;4
|
||||||
FILE_NAME_1=5298;C;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FAirport%2FSource%2FCamera.c;0;4
|
FILE_NAME_1=5298;C;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FAirport%2FSource%2FCamera.c;0;4
|
||||||
FILE_NAME_2=4018;C;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FAirport%2FSource%2FEndAnimation.c;0;4
|
FILE_NAME_2=4018;C;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FAirport%2FSource%2FEndAnimation.c;0;4
|
||||||
FILE_NAME_3=6782;C;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FAirport%2FSource%2FFont.c;0;4
|
FILE_NAME_3=6782;C;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FAirport%2FSource%2FFont.c;0;4
|
||||||
FILE_NAME_4=9763;C;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FAirport%2FSource%2FGame.c;0;4
|
FILE_NAME_4=34311;C;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FAirport%2FSource%2FGame.c;0;4
|
||||||
FILE_NAME_5=32887;C;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FAirport%2FSource%2FGameGui.c;0;4
|
FILE_NAME_5=9784;C;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FAirport%2FSource%2FGameGui.c;0;4
|
||||||
FILE_NAME_6=17638;C;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FAirport%2FSource%2FGfx.c;0;4
|
FILE_NAME_6=17638;C;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FAirport%2FSource%2FGfx.c;0;4
|
||||||
FILE_NAME_7=9154;C;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FAirport%2FSource%2FLoadMenu.c;0;4
|
FILE_NAME_7=11629;C;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FAirport%2FSource%2FLoadMenu.c;0;4
|
||||||
FILE_NAME_8=746;C;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FAirport%2FSource%2Fmain.c;0;4
|
FILE_NAME_8=746;C;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FAirport%2FSource%2Fmain.c;0;4
|
||||||
FILE_NAME_9=745;C;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FAirport%2FSource%2FMainMenuBtnAni.c;0;4
|
FILE_NAME_9=745;C;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FAirport%2FSource%2FMainMenuBtnAni.c;0;4
|
||||||
FILE_NAME_10=26018;C;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FAirport%2FSource%2FMemCard.c;0;4
|
FILE_NAME_10=26018;C;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FAirport%2FSource%2FMemCard.c;0;4
|
||||||
|
@ -47,18 +47,18 @@ FILE_NAME_14=10669;C;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FAirport%2FSource%2FPltPar
|
||||||
FILE_NAME_15=8394;C;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FAirport%2FSource%2FPSXSDKIntro.c;0;4
|
FILE_NAME_15=8394;C;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FAirport%2FSource%2FPSXSDKIntro.c;0;4
|
||||||
FILE_NAME_16=1758;C;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FAirport%2FSource%2FSerial.c;0;4
|
FILE_NAME_16=1758;C;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FAirport%2FSource%2FSerial.c;0;4
|
||||||
FILE_NAME_17=1221;C;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FAirport%2FSource%2FSfx.c;0;4
|
FILE_NAME_17=1221;C;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FAirport%2FSource%2FSfx.c;0;4
|
||||||
FILE_NAME_18=16275;C;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FAirport%2FSource%2FSystem.c;0;4
|
FILE_NAME_18=22173;C;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FAirport%2FSource%2FSystem.c;0;4
|
||||||
FILE_NAME_19=2698;C;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FAirport%2FSource%2FTimer.c;0;4
|
FILE_NAME_19=2698;C;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FAirport%2FSource%2FTimer.c;0;4
|
||||||
FILE_NAME_20=1055;C++;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FAirport%2FSource%2FAircraft.h;0;4
|
FILE_NAME_20=714;C++;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FAirport%2FSource%2FAircraft.h;0;4
|
||||||
FILE_NAME_21=848;C++;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FAirport%2FSource%2FCamera.h;0;4
|
FILE_NAME_21=848;C++;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FAirport%2FSource%2FCamera.h;0;4
|
||||||
FILE_NAME_22=529;C++;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FAirport%2FSource%2FEndAnimation.h;0;4
|
FILE_NAME_22=529;C++;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FAirport%2FSource%2FEndAnimation.h;0;4
|
||||||
FILE_NAME_23=1133;C++;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FAirport%2FSource%2FFont.h;0;4
|
FILE_NAME_23=1133;C++;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FAirport%2FSource%2FFont.h;0;4
|
||||||
FILE_NAME_24=1633;C++;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FAirport%2FSource%2FGameGui.h;0;4
|
FILE_NAME_24=1633;C++;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FAirport%2FSource%2FGameGui.h;0;4
|
||||||
FILE_NAME_25=936;C++;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FAirport%2FSource%2FGame.h;0;4
|
FILE_NAME_25=658;C++;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FAirport%2FSource%2FGame.h;0;4
|
||||||
FILE_NAME_26=2185;C++;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FAirport%2FSource%2FGameStructures.h;0;4
|
FILE_NAME_26=172;C++;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FAirport%2FSource%2FGameStructures.h;0;4
|
||||||
FILE_NAME_27=3564;C++;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FAirport%2FSource%2FGfx.h;0;4
|
FILE_NAME_27=3564;C++;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FAirport%2FSource%2FGfx.h;0;4
|
||||||
FILE_NAME_28=406;C++;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FAirport%2FSource%2FGlobal_Inc.h;0;4
|
FILE_NAME_28=406;C++;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FAirport%2FSource%2FGlobal_Inc.h;0;4
|
||||||
FILE_NAME_29=514;C++;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FAirport%2FSource%2FLoadMenu.h;0;4
|
FILE_NAME_29=273;C++;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FAirport%2FSource%2FLoadMenu.h;0;4
|
||||||
FILE_NAME_30=559;C++;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FAirport%2FSource%2FMainMenuBtnAni.h;0;4
|
FILE_NAME_30=559;C++;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FAirport%2FSource%2FMainMenuBtnAni.h;0;4
|
||||||
FILE_NAME_31=4622;C++;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FAirport%2FSource%2FMemCard.h;0;4
|
FILE_NAME_31=4622;C++;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FAirport%2FSource%2FMemCard.h;0;4
|
||||||
FILE_NAME_32=387;C++;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FAirport%2FSource%2FMenu.h;0;4
|
FILE_NAME_32=387;C++;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FAirport%2FSource%2FMenu.h;0;4
|
||||||
|
@ -70,7 +70,7 @@ FILE_NAME_37=752;C++;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FAirport%2FSource%2FSerial
|
||||||
FILE_NAME_38=831;C++;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FAirport%2FSource%2FSfx.h;0;4
|
FILE_NAME_38=831;C++;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FAirport%2FSource%2FSfx.h;0;4
|
||||||
FILE_NAME_39=421;C++;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FAirport%2FSource%2FSystem.h;0;4
|
FILE_NAME_39=421;C++;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FAirport%2FSource%2FSystem.h;0;4
|
||||||
FILE_NAME_40=1066;C++;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FAirport%2FSource%2FTimer.h;0;4
|
FILE_NAME_40=1066;C++;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FAirport%2FSource%2FTimer.h;0;4
|
||||||
FILE_NAME_41=283;Make;0;EUTF-8;1;1;0;%2Fhome%2Fxavier%2FAirport%2FSource%2FMakefile;0;4
|
FILE_NAME_41=3393;Make;0;EUTF-8;1;1;0;%2Fhome%2Fxavier%2FAirport%2FSource%2FMakefile;0;4
|
||||||
|
|
||||||
[VTE]
|
[VTE]
|
||||||
last_dir=/home/xavier/Airport/Bin
|
last_dir=/home/xavier/Airport/Bin
|
||||||
|
|
Binary file not shown.
Binary file not shown.
304
Source/Game.c
304
Source/Game.c
|
@ -168,7 +168,7 @@ static void GamePlayerHandler(TYPE_PLAYER* const ptrPlayer, TYPE_FLIGHT_DATA* co
|
||||||
static void GamePlayerAddWaypoint(TYPE_PLAYER* const ptrPlayer);
|
static void GamePlayerAddWaypoint(TYPE_PLAYER* const ptrPlayer);
|
||||||
static void GamePlayerAddWaypoint_Ex(TYPE_PLAYER* const ptrPlayer, uint16_t tile);
|
static void GamePlayerAddWaypoint_Ex(TYPE_PLAYER* const ptrPlayer, uint16_t tile);
|
||||||
static void GameGraphics(void);
|
static void GameGraphics(void);
|
||||||
static void GameRenderTerrainPrecalculations(TYPE_PLAYER* const ptrPlayer);
|
static void GameRenderTerrainPrecalculations(TYPE_PLAYER* const ptrPlayer, const TYPE_FLIGHT_DATA* const ptrFlightData);
|
||||||
static void GameRenderTerrain(TYPE_PLAYER* const ptrPlayer);
|
static void GameRenderTerrain(TYPE_PLAYER* const ptrPlayer);
|
||||||
static void GameClock(void);
|
static void GameClock(void);
|
||||||
static void GameClockFlights(const uint8_t i);
|
static void GameClockFlights(const uint8_t i);
|
||||||
|
@ -951,7 +951,7 @@ void GamePlayerHandler(TYPE_PLAYER* const ptrPlayer, TYPE_FLIGHT_DATA* const ptr
|
||||||
GameStateSelectTaxiwayParking(ptrPlayer, ptrFlightData);
|
GameStateSelectTaxiwayParking(ptrPlayer, ptrFlightData);
|
||||||
GameStateShowAircraft(ptrPlayer, ptrFlightData);
|
GameStateShowAircraft(ptrPlayer, ptrFlightData);
|
||||||
CameraHandler(ptrPlayer);
|
CameraHandler(ptrPlayer);
|
||||||
GameRenderTerrainPrecalculations(ptrPlayer);
|
GameRenderTerrainPrecalculations(ptrPlayer, ptrFlightData);
|
||||||
GameGuiActiveAircraftPage(ptrPlayer, ptrFlightData);
|
GameGuiActiveAircraftPage(ptrPlayer, ptrFlightData);
|
||||||
GameSelectAircraftFromList(ptrPlayer, ptrFlightData);
|
GameSelectAircraftFromList(ptrPlayer, ptrFlightData);
|
||||||
}
|
}
|
||||||
|
@ -1495,7 +1495,7 @@ static void GameAircraftState(const uint8_t i)
|
||||||
{
|
{
|
||||||
if (AircraftFromFlightDataIndex(j)->State != STATE_IDLE)
|
if (AircraftFromFlightDataIndex(j)->State != STATE_IDLE)
|
||||||
{
|
{
|
||||||
uint16_t* targets = AircraftGetTargets(j);
|
const uint16_t* const targets = AircraftGetTargets(j);
|
||||||
|
|
||||||
if (targets != NULL)
|
if (targets != NULL)
|
||||||
{
|
{
|
||||||
|
@ -1584,6 +1584,10 @@ static void GameInitTileUVTable(void)
|
||||||
* TYPE_PLAYER* const ptrPlayer:
|
* TYPE_PLAYER* const ptrPlayer:
|
||||||
* Pointer to a player structure
|
* Pointer to a player structure
|
||||||
*
|
*
|
||||||
|
* TYPE_FLIGHT_DATA* const ptrFlightData:
|
||||||
|
* In the end, pointer to FlightData data table, which contains
|
||||||
|
* information about all available flights.
|
||||||
|
*
|
||||||
* @brief:
|
* @brief:
|
||||||
* Reads current player states, precalculates RGB/XY/visibilty data and saves it into
|
* Reads current player states, precalculates RGB/XY/visibilty data and saves it into
|
||||||
* lookup tables which will be then used on GameRenderTerrain().
|
* lookup tables which will be then used on GameRenderTerrain().
|
||||||
|
@ -1593,7 +1597,7 @@ static void GameInitTileUVTable(void)
|
||||||
* or ptrPlayer->InvalidPath.
|
* or ptrPlayer->InvalidPath.
|
||||||
*
|
*
|
||||||
* ******************************************************************************************/
|
* ******************************************************************************************/
|
||||||
void GameRenderTerrainPrecalculations(TYPE_PLAYER* const ptrPlayer)
|
static void GameRenderTerrainPrecalculations(TYPE_PLAYER* const ptrPlayer, const TYPE_FLIGHT_DATA* const ptrFlightData)
|
||||||
{
|
{
|
||||||
uint16_t i;
|
uint16_t i;
|
||||||
uint8_t rows = 0;
|
uint8_t rows = 0;
|
||||||
|
@ -1627,14 +1631,16 @@ void GameRenderTerrainPrecalculations(TYPE_PLAYER* const ptrPlayer)
|
||||||
// V Building, bit 6
|
// V Building, bit 6
|
||||||
// Building, bit 7
|
// Building, bit 7
|
||||||
uint8_t CurrentTile = (uint8_t)(levelBuffer[i] & 0x007F); // Remove building data
|
uint8_t CurrentTile = (uint8_t)(levelBuffer[i] & 0x007F); // Remove building data
|
||||||
// and mirror flag.
|
// and mirror flag.
|
||||||
|
|
||||||
// Isometric -> Cartesian conversion
|
// Isometric -> Cartesian conversion
|
||||||
tileIsoPos.x = columns << (TILE_SIZE_BIT_SHIFT);
|
tileIsoPos.x = columns << (TILE_SIZE_BIT_SHIFT);
|
||||||
tileIsoPos.y = rows << (TILE_SIZE_BIT_SHIFT);
|
tileIsoPos.y = rows << (TILE_SIZE_BIT_SHIFT);
|
||||||
tileIsoPos.z = 0;
|
tileIsoPos.z = 0;
|
||||||
|
|
||||||
ptrPlayer->TileData[i].CartPos = GfxIsometricToCartesian(&tileIsoPos);
|
TYPE_TILE_DATA* const tileData = &ptrPlayer->TileData[i];
|
||||||
|
|
||||||
|
tileData->CartPos = GfxIsometricToCartesian(&tileIsoPos);
|
||||||
|
|
||||||
if (columns < (GameLevelColumns - 1) )
|
if (columns < (GameLevelColumns - 1) )
|
||||||
{
|
{
|
||||||
|
@ -1647,86 +1653,119 @@ void GameRenderTerrainPrecalculations(TYPE_PLAYER* const ptrPlayer)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Set coordinate origin to left upper corner.
|
// Set coordinate origin to left upper corner.
|
||||||
ptrPlayer->TileData[i].CartPos.x -= TILE_SIZE >> 1;
|
tileData->CartPos.x -= TILE_SIZE >> 1;
|
||||||
|
|
||||||
CameraApplyCoordinatesToCartesianPos(ptrPlayer, &ptrPlayer->TileData[i].CartPos);
|
CameraApplyCoordinatesToCartesianPos(ptrPlayer, &tileData->CartPos);
|
||||||
|
|
||||||
if (GfxIsInsideScreenArea( ptrPlayer->TileData[i].CartPos.x,
|
if (GfxIsInsideScreenArea( tileData->CartPos.x,
|
||||||
ptrPlayer->TileData[i].CartPos.y,
|
tileData->CartPos.y,
|
||||||
TILE_SIZE,
|
TILE_SIZE,
|
||||||
TILE_SIZE_H ) == false)
|
TILE_SIZE_H ))
|
||||||
{
|
{
|
||||||
continue;
|
tileData->ShowTile = true;
|
||||||
}
|
|
||||||
|
|
||||||
ptrPlayer->TileData[i].ShowTile = true;
|
tileData->r = NORMAL_LUMINANCE;
|
||||||
|
tileData->g = NORMAL_LUMINANCE;
|
||||||
|
tileData->b = NORMAL_LUMINANCE;
|
||||||
|
|
||||||
ptrPlayer->TileData[i].r = NORMAL_LUMINANCE;
|
if (i != 0)
|
||||||
ptrPlayer->TileData[i].g = NORMAL_LUMINANCE;
|
|
||||||
ptrPlayer->TileData[i].b = NORMAL_LUMINANCE;
|
|
||||||
|
|
||||||
if (i != 0)
|
|
||||||
{
|
|
||||||
if (ptrPlayer->SelectRunway)
|
|
||||||
{
|
{
|
||||||
if (SystemContains_u16(i, ptrPlayer->RwyArray, GAME_MAX_RWY_LENGTH))
|
if (ptrPlayer->SelectRunway)
|
||||||
{
|
{
|
||||||
if (used_rwy)
|
if (SystemContains_u16(i, ptrPlayer->RwyArray, GAME_MAX_RWY_LENGTH))
|
||||||
{
|
{
|
||||||
ptrPlayer->TileData[i].r = rwy_sine;
|
if (used_rwy)
|
||||||
ptrPlayer->TileData[i].b = NORMAL_LUMINANCE >> 2;
|
{
|
||||||
ptrPlayer->TileData[i].g = NORMAL_LUMINANCE >> 2;
|
tileData->r = rwy_sine;
|
||||||
|
tileData->b = NORMAL_LUMINANCE >> 2;
|
||||||
|
tileData->g = NORMAL_LUMINANCE >> 2;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
tileData->r = NORMAL_LUMINANCE >> 2;
|
||||||
|
tileData->g = NORMAL_LUMINANCE >> 2;
|
||||||
|
tileData->b = rwy_sine;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
|
||||||
ptrPlayer->TileData[i].r = NORMAL_LUMINANCE >> 2;
|
|
||||||
ptrPlayer->TileData[i].g = NORMAL_LUMINANCE >> 2;
|
|
||||||
ptrPlayer->TileData[i].b = rwy_sine;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if ( (ptrPlayer->SelectTaxiwayParking)
|
|
||||||
||
|
|
||||||
(ptrPlayer->SelectTaxiwayRunway) )
|
|
||||||
{
|
|
||||||
if (( (SystemContains_u16(i, ptrPlayer->Waypoints, ptrPlayer->WaypointIdx))
|
|
||||||
||
|
|
||||||
(i == ptrPlayer->SelectedTile) )
|
|
||||||
&&
|
|
||||||
(ptrPlayer->SelectedTile != GAME_INVALID_TILE_SELECTION) )
|
|
||||||
{
|
|
||||||
if (ptrPlayer->InvalidPath)
|
|
||||||
{
|
|
||||||
ptrPlayer->TileData[i].r = rwy_sine;
|
|
||||||
ptrPlayer->TileData[i].b = NORMAL_LUMINANCE >> 2;
|
|
||||||
ptrPlayer->TileData[i].g = NORMAL_LUMINANCE >> 2;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
ptrPlayer->TileData[i].r = NORMAL_LUMINANCE >> 2;
|
|
||||||
ptrPlayer->TileData[i].g = NORMAL_LUMINANCE >> 2;
|
|
||||||
ptrPlayer->TileData[i].b = rwy_sine;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if ( (ptrPlayer->SelectTaxiwayRunway)
|
|
||||||
&&
|
|
||||||
( (CurrentTile == TILE_RWY_HOLDING_POINT)
|
|
||||||
||
|
|
||||||
(CurrentTile == TILE_RWY_HOLDING_POINT_2) ) )
|
|
||||||
{
|
|
||||||
ptrPlayer->TileData[i].r = NORMAL_LUMINANCE >> 2;
|
|
||||||
ptrPlayer->TileData[i].g = rwy_sine;
|
|
||||||
ptrPlayer->TileData[i].b = NORMAL_LUMINANCE >> 2;
|
|
||||||
}
|
}
|
||||||
else if ( (ptrPlayer->SelectTaxiwayParking)
|
else if ( (ptrPlayer->SelectTaxiwayParking)
|
||||||
&&
|
||
|
||||||
( (CurrentTile == TILE_PARKING)
|
(ptrPlayer->SelectTaxiwayRunway) )
|
||||||
||
|
|
||||||
(CurrentTile == TILE_PARKING_2) ) )
|
|
||||||
{
|
{
|
||||||
ptrPlayer->TileData[i].r = NORMAL_LUMINANCE >> 2;
|
if (( (SystemContains_u16(i, ptrPlayer->Waypoints, ptrPlayer->WaypointIdx))
|
||||||
ptrPlayer->TileData[i].g = rwy_sine;
|
||
|
||||||
ptrPlayer->TileData[i].b = NORMAL_LUMINANCE >> 2;
|
(i == ptrPlayer->SelectedTile) )
|
||||||
|
&&
|
||||||
|
(ptrPlayer->SelectedTile != GAME_INVALID_TILE_SELECTION) )
|
||||||
|
{
|
||||||
|
if (ptrPlayer->InvalidPath)
|
||||||
|
{
|
||||||
|
tileData->r = rwy_sine;
|
||||||
|
tileData->b = NORMAL_LUMINANCE >> 2;
|
||||||
|
tileData->g = NORMAL_LUMINANCE >> 2;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
tileData->r = NORMAL_LUMINANCE >> 2;
|
||||||
|
tileData->g = NORMAL_LUMINANCE >> 2;
|
||||||
|
tileData->b = rwy_sine;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if ( (ptrPlayer->SelectTaxiwayRunway)
|
||||||
|
&&
|
||||||
|
( (CurrentTile == TILE_RWY_HOLDING_POINT)
|
||||||
|
||
|
||||||
|
(CurrentTile == TILE_RWY_HOLDING_POINT_2) ) )
|
||||||
|
{
|
||||||
|
tileData->r = NORMAL_LUMINANCE >> 2;
|
||||||
|
tileData->g = rwy_sine;
|
||||||
|
tileData->b = NORMAL_LUMINANCE >> 2;
|
||||||
|
}
|
||||||
|
else if ( (ptrPlayer->SelectTaxiwayParking)
|
||||||
|
&&
|
||||||
|
( (CurrentTile == TILE_PARKING)
|
||||||
|
||
|
||||||
|
(CurrentTile == TILE_PARKING_2) ) )
|
||||||
|
{
|
||||||
|
tileData->r = NORMAL_LUMINANCE >> 2;
|
||||||
|
tileData->g = rwy_sine;
|
||||||
|
tileData->b = NORMAL_LUMINANCE >> 2;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (ptrPlayer->ShowAircraftData)
|
||||||
|
{
|
||||||
|
const uint8_t aircraftIndex = ptrPlayer->FlightDataSelectedAircraft;
|
||||||
|
|
||||||
|
switch (ptrFlightData->State[aircraftIndex])
|
||||||
|
{
|
||||||
|
case STATE_TAXIING:
|
||||||
|
// Fall through.
|
||||||
|
case STATE_USER_STOPPED:
|
||||||
|
// Fall through.
|
||||||
|
case STATE_AUTO_STOPPED:
|
||||||
|
// Fall through.
|
||||||
|
{
|
||||||
|
const uint16_t* const targets = AircraftGetTargets(aircraftIndex);
|
||||||
|
|
||||||
|
if (targets != NULL)
|
||||||
|
{
|
||||||
|
if (SystemContains_u16(i, targets, AIRCRAFT_MAX_TARGETS))
|
||||||
|
{
|
||||||
|
if (SystemIndexOf_U16(i, targets, AIRCRAFT_MAX_TARGETS) >=
|
||||||
|
AircraftGetTargetIdx(aircraftIndex))
|
||||||
|
{
|
||||||
|
tileData->r = NORMAL_LUMINANCE >> 2;
|
||||||
|
tileData->g = NORMAL_LUMINANCE >> 2;
|
||||||
|
tileData->b = rwy_sine;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1961,42 +2000,28 @@ static void GameStateLockTarget(TYPE_PLAYER* const ptrPlayer, TYPE_FLIGHT_DATA*
|
||||||
|
|
||||||
if (ptrPlayer->LockTarget)
|
if (ptrPlayer->LockTarget)
|
||||||
{
|
{
|
||||||
if (ptrPlayer->LockedAircraft != FLIGHT_DATA_INVALID_IDX)
|
if ((ptrPlayer->LockedAircraft != FLIGHT_DATA_INVALID_IDX)
|
||||||
|
&&
|
||||||
|
(ptrPlayer->LockedAircraft <= ptrPlayer->FlightDataSelectedAircraft))
|
||||||
{
|
{
|
||||||
CameraMoveToIsoPos(ptrPlayer, AircraftGetIsoPos(ptrPlayer->LockedAircraft) );
|
CameraMoveToIsoPos(ptrPlayer, AircraftGetIsoPos(ptrPlayer->LockedAircraft) );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ptrPlayer->PadKeySinglePress_Callback(PAD_SQUARE))
|
if (ptrPlayer->ShowAircraftData)
|
||||||
{
|
{
|
||||||
if (ptrPlayer->LockTarget == false)
|
if ( (ptrFlightData->State[AircraftIdx] != STATE_IDLE)
|
||||||
|
&&
|
||||||
|
(ptrFlightData->State[AircraftIdx] != STATE_APPROACH) )
|
||||||
{
|
{
|
||||||
if (ptrPlayer->ShowAircraftData)
|
ptrPlayer->LockTarget = true;
|
||||||
{
|
ptrPlayer->LockedAircraft = AircraftIdx;
|
||||||
if ( (ptrFlightData->State[AircraftIdx] != STATE_IDLE)
|
|
||||||
&&
|
|
||||||
(ptrFlightData->State[AircraftIdx] != STATE_APPROACH) )
|
|
||||||
{
|
|
||||||
ptrPlayer->LockTarget = true;
|
|
||||||
ptrPlayer->LockedAircraft = AircraftIdx;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
ptrPlayer->LockTarget = false;
|
|
||||||
ptrPlayer->LockedAircraft = FLIGHT_DATA_INVALID_IDX;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (ptrPlayer->PadDirectionKeyPressed_Callback())
|
else
|
||||||
{
|
{
|
||||||
if ( (ptrPlayer->LockTarget)
|
ptrPlayer->LockTarget = false;
|
||||||
&&
|
ptrPlayer->LockedAircraft = FLIGHT_DATA_INVALID_IDX;
|
||||||
(ptrPlayer->ShowAircraftData == false) )
|
|
||||||
{
|
|
||||||
ptrPlayer->LockTarget = false;
|
|
||||||
ptrPlayer->LockedAircraft = FLIGHT_DATA_INVALID_IDX;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2242,7 +2267,6 @@ static void GameStateSelectTaxiwayParking(TYPE_PLAYER* const ptrPlayer, TYPE_FLI
|
||||||
static void GameStateSelectRunway(TYPE_PLAYER* const ptrPlayer, TYPE_FLIGHT_DATA* const ptrFlightData)
|
static void GameStateSelectRunway(TYPE_PLAYER* const ptrPlayer, TYPE_FLIGHT_DATA* const ptrFlightData)
|
||||||
{
|
{
|
||||||
uint8_t i;
|
uint8_t i;
|
||||||
bool success;
|
|
||||||
TYPE_ISOMETRIC_POS IsoPos = { GameGetXFromTile_short(GameRwy[ptrPlayer->SelectedRunway]),
|
TYPE_ISOMETRIC_POS IsoPos = { GameGetXFromTile_short(GameRwy[ptrPlayer->SelectedRunway]),
|
||||||
GameGetYFromTile_short(GameRwy[ptrPlayer->SelectedRunway]),
|
GameGetYFromTile_short(GameRwy[ptrPlayer->SelectedRunway]),
|
||||||
0 };
|
0 };
|
||||||
|
@ -2264,14 +2288,13 @@ static void GameStateSelectRunway(TYPE_PLAYER* const ptrPlayer, TYPE_FLIGHT_DATA
|
||||||
else if (ptrPlayer->PadKeySinglePress_Callback(PAD_CROSS))
|
else if (ptrPlayer->PadKeySinglePress_Callback(PAD_CROSS))
|
||||||
{
|
{
|
||||||
ptrPlayer->SelectRunway = false;
|
ptrPlayer->SelectRunway = false;
|
||||||
|
bool success = false;
|
||||||
|
|
||||||
if (SystemContains_u16(GameRwy[ptrPlayer->SelectedRunway], GameUsedRwy, GAME_MAX_RUNWAYS) == false)
|
if (SystemContains_u16(GameRwy[ptrPlayer->SelectedRunway], GameUsedRwy, GAME_MAX_RUNWAYS) == false)
|
||||||
{
|
{
|
||||||
ptrPlayer->SelectRunway = false;
|
ptrPlayer->SelectRunway = false;
|
||||||
Serial_printf("Player selected runway %d!\n",GameRwy[ptrPlayer->SelectedRunway]);
|
Serial_printf("Player selected runway %d!\n",GameRwy[ptrPlayer->SelectedRunway]);
|
||||||
|
|
||||||
success = false;
|
|
||||||
|
|
||||||
for (i = 0; i < GAME_MAX_RUNWAYS; i++)
|
for (i = 0; i < GAME_MAX_RUNWAYS; i++)
|
||||||
{
|
{
|
||||||
if (GameUsedRwy[i] == 0)
|
if (GameUsedRwy[i] == 0)
|
||||||
|
@ -3148,21 +3171,23 @@ bool GameWaypointCheckExisting(TYPE_PLAYER* const ptrPlayer, uint16_t temp_tile)
|
||||||
|
|
||||||
bool GamePathToTile(TYPE_PLAYER* const ptrPlayer, TYPE_FLIGHT_DATA* const ptrFlightData)
|
bool GamePathToTile(TYPE_PLAYER* const ptrPlayer, TYPE_FLIGHT_DATA* const ptrFlightData)
|
||||||
{
|
{
|
||||||
uint8_t AcceptedTiles[] = { TILE_ASPHALT_WITH_BORDERS,
|
static const uint8_t AcceptedTiles[] =
|
||||||
TILE_PARKING,
|
{
|
||||||
TILE_RWY_MID,
|
TILE_ASPHALT_WITH_BORDERS,
|
||||||
TILE_RWY_EXIT,
|
TILE_PARKING,
|
||||||
TILE_TAXIWAY_CORNER_GRASS,
|
TILE_RWY_MID,
|
||||||
TILE_TAXIWAY_CORNER_GRASS_2,
|
TILE_RWY_EXIT,
|
||||||
TILE_TAXIWAY_GRASS,
|
TILE_TAXIWAY_CORNER_GRASS,
|
||||||
TILE_TAXIWAY_INTERSECT_GRASS,
|
TILE_TAXIWAY_CORNER_GRASS_2,
|
||||||
TILE_TAXIWAY_4WAY_CROSSING,
|
TILE_TAXIWAY_GRASS,
|
||||||
TILE_PARKING_2,
|
TILE_TAXIWAY_INTERSECT_GRASS,
|
||||||
TILE_RWY_HOLDING_POINT,
|
TILE_TAXIWAY_4WAY_CROSSING,
|
||||||
TILE_RWY_HOLDING_POINT_2 };
|
TILE_PARKING_2,
|
||||||
|
TILE_RWY_HOLDING_POINT,
|
||||||
|
TILE_RWY_HOLDING_POINT_2
|
||||||
|
};
|
||||||
|
|
||||||
uint8_t i;
|
uint8_t i;
|
||||||
uint8_t j;
|
|
||||||
|
|
||||||
uint16_t x_diff;
|
uint16_t x_diff;
|
||||||
uint16_t y_diff;
|
uint16_t y_diff;
|
||||||
|
@ -3180,11 +3205,11 @@ bool GamePathToTile(TYPE_PLAYER* const ptrPlayer, TYPE_FLIGHT_DATA* const ptrFli
|
||||||
|
|
||||||
ptrPlayer->WaypointIdx = ptrPlayer->LastWaypointIdx + 1;
|
ptrPlayer->WaypointIdx = ptrPlayer->LastWaypointIdx + 1;
|
||||||
|
|
||||||
x_diff = (uint16_t)abs( (ptrPlayer->SelectedTile % GameLevelColumns) -
|
x_diff = abs((ptrPlayer->SelectedTile % GameLevelColumns) -
|
||||||
(ptrPlayer->Waypoints[ptrPlayer->LastWaypointIdx] % GameLevelColumns) );
|
(ptrPlayer->Waypoints[ptrPlayer->LastWaypointIdx] % GameLevelColumns));
|
||||||
|
|
||||||
y_diff = (uint16_t)abs( (ptrPlayer->SelectedTile / GameLevelColumns) -
|
y_diff = abs((ptrPlayer->SelectedTile / GameLevelColumns) -
|
||||||
(ptrPlayer->Waypoints[ptrPlayer->LastWaypointIdx] / GameLevelColumns) );
|
(ptrPlayer->Waypoints[ptrPlayer->LastWaypointIdx] / GameLevelColumns));
|
||||||
|
|
||||||
// At this point, we have to update current waypoints list.
|
// At this point, we have to update current waypoints list.
|
||||||
// ptrPlayer->Waypoints[ptrPlayer->WaypointIdx - 1] points to the last inserted point,
|
// ptrPlayer->Waypoints[ptrPlayer->WaypointIdx - 1] points to the last inserted point,
|
||||||
|
@ -3284,26 +3309,29 @@ bool GamePathToTile(TYPE_PLAYER* const ptrPlayer, TYPE_FLIGHT_DATA* const ptrFli
|
||||||
sizeof (AcceptedTiles) ) == false)
|
sizeof (AcceptedTiles) ) == false)
|
||||||
{
|
{
|
||||||
// Now try again with mirrored tiles, just in case!
|
// Now try again with mirrored tiles, just in case!
|
||||||
|
static const uint8_t AcceptedMirroredTiles[] =
|
||||||
for (j = 0; j < (sizeof (AcceptedTiles) * sizeof (uint8_t) ); j++)
|
|
||||||
{
|
{
|
||||||
AcceptedTiles[j] |= TILE_MIRROR_FLAG;
|
TILE_ASPHALT_WITH_BORDERS | TILE_MIRROR_FLAG,
|
||||||
}
|
TILE_PARKING | TILE_MIRROR_FLAG,
|
||||||
|
TILE_RWY_MID | TILE_MIRROR_FLAG,
|
||||||
|
TILE_RWY_EXIT | TILE_MIRROR_FLAG,
|
||||||
|
TILE_TAXIWAY_CORNER_GRASS | TILE_MIRROR_FLAG,
|
||||||
|
TILE_TAXIWAY_CORNER_GRASS_2 | TILE_MIRROR_FLAG,
|
||||||
|
TILE_TAXIWAY_GRASS | TILE_MIRROR_FLAG,
|
||||||
|
TILE_TAXIWAY_INTERSECT_GRASS | TILE_MIRROR_FLAG,
|
||||||
|
TILE_TAXIWAY_4WAY_CROSSING | TILE_MIRROR_FLAG,
|
||||||
|
TILE_PARKING_2 | TILE_MIRROR_FLAG,
|
||||||
|
TILE_RWY_HOLDING_POINT | TILE_MIRROR_FLAG,
|
||||||
|
TILE_RWY_HOLDING_POINT_2 | TILE_MIRROR_FLAG,
|
||||||
|
};
|
||||||
|
|
||||||
if (SystemContains_u8( levelBuffer[ptrPlayer->Waypoints[i]],
|
if (SystemContains_u8( levelBuffer[ptrPlayer->Waypoints[i]],
|
||||||
AcceptedTiles,
|
AcceptedMirroredTiles,
|
||||||
sizeof (AcceptedTiles) ) == false)
|
sizeof (AcceptedTiles) ) == false)
|
||||||
{
|
{
|
||||||
// Both cases have failed. Return from function.
|
// Both cases have failed. Return from function.
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Reverse mirror flag.
|
|
||||||
|
|
||||||
for (j = 0; j < (sizeof (AcceptedTiles) * sizeof (uint8_t) ); j++)
|
|
||||||
{
|
|
||||||
AcceptedTiles[j] &= ~(TILE_MIRROR_FLAG);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3394,9 +3422,9 @@ bool GameTwoPlayersActive(void)
|
||||||
*
|
*
|
||||||
* *****************************************************************/
|
* *****************************************************************/
|
||||||
|
|
||||||
void GameDrawMouse(TYPE_PLAYER* const ptrPlayer)
|
static void GameDrawMouse(TYPE_PLAYER* const ptrPlayer)
|
||||||
{
|
{
|
||||||
if ( (ptrPlayer->SelectTaxiwayParking)
|
if ((ptrPlayer->SelectTaxiwayParking)
|
||||||
||
|
||
|
||||||
(ptrPlayer->SelectTaxiwayRunway) )
|
(ptrPlayer->SelectTaxiwayRunway) )
|
||||||
{
|
{
|
||||||
|
@ -3464,7 +3492,7 @@ uint32_t GameGetScore(void)
|
||||||
*
|
*
|
||||||
* *******************************************************************************************/
|
* *******************************************************************************************/
|
||||||
|
|
||||||
void GameStateUnboarding(TYPE_PLAYER* const ptrPlayer, TYPE_FLIGHT_DATA* const ptrFlightData)
|
static void GameStateUnboarding(TYPE_PLAYER* const ptrPlayer, TYPE_FLIGHT_DATA* const ptrFlightData)
|
||||||
{
|
{
|
||||||
if (ptrPlayer->Unboarding)
|
if (ptrPlayer->Unboarding)
|
||||||
{
|
{
|
||||||
|
@ -3533,7 +3561,7 @@ void GameStateUnboarding(TYPE_PLAYER* const ptrPlayer, TYPE_FLIGHT_DATA* const p
|
||||||
*
|
*
|
||||||
* *******************************************************************************************/
|
* *******************************************************************************************/
|
||||||
|
|
||||||
void GameGenerateUnboardingSequence(TYPE_PLAYER* const ptrPlayer)
|
static void GameGenerateUnboardingSequence(TYPE_PLAYER* const ptrPlayer)
|
||||||
{
|
{
|
||||||
uint8_t i;
|
uint8_t i;
|
||||||
unsigned short keyTable[] = { PAD_CROSS, PAD_SQUARE, PAD_TRIANGLE };
|
unsigned short keyTable[] = { PAD_CROSS, PAD_SQUARE, PAD_TRIANGLE };
|
||||||
|
@ -3580,7 +3608,7 @@ void GameGenerateUnboardingSequence(TYPE_PLAYER* const ptrPlayer)
|
||||||
*
|
*
|
||||||
* *********************************************************************************************************************/
|
* *********************************************************************************************************************/
|
||||||
|
|
||||||
void GameCreateTakeoffWaypoints(TYPE_PLAYER* const ptrPlayer, TYPE_FLIGHT_DATA* const ptrFlightData, uint8_t aircraftIdx)
|
static void GameCreateTakeoffWaypoints(TYPE_PLAYER* const ptrPlayer, TYPE_FLIGHT_DATA* const ptrFlightData, uint8_t aircraftIdx)
|
||||||
{
|
{
|
||||||
TYPE_AIRCRAFT_DATA* const ptrAircraft = AircraftFromFlightDataIndex(aircraftIdx);
|
TYPE_AIRCRAFT_DATA* const ptrAircraft = AircraftFromFlightDataIndex(aircraftIdx);
|
||||||
|
|
||||||
|
@ -3667,7 +3695,7 @@ void GameCreateTakeoffWaypoints(TYPE_PLAYER* const ptrPlayer, TYPE_FLIGHT_DATA*
|
||||||
*
|
*
|
||||||
* *******************************************************************************************/
|
* *******************************************************************************************/
|
||||||
|
|
||||||
void GameGetRunwayEntryTile(uint8_t aircraftIdx, TYPE_RWY_ENTRY_DATA* ptrRwyEntry)
|
static void GameGetRunwayEntryTile(uint8_t aircraftIdx, TYPE_RWY_ENTRY_DATA* ptrRwyEntry)
|
||||||
{
|
{
|
||||||
// Look for aircraft direction by searching TILE_RWY_EXIT
|
// Look for aircraft direction by searching TILE_RWY_EXIT
|
||||||
uint16_t currentTile = AircraftGetTileFromFlightDataIndex(aircraftIdx) & (uint16_t)~(TILE_MIRROR_FLAG);
|
uint16_t currentTile = AircraftGetTileFromFlightDataIndex(aircraftIdx) & (uint16_t)~(TILE_MIRROR_FLAG);
|
||||||
|
@ -3846,7 +3874,7 @@ void GameRemoveFlight(uint8_t idx, bool successful)
|
||||||
|
|
||||||
for (k = 0; k < GAME_MAX_RUNWAYS; k++)
|
for (k = 0; k < GAME_MAX_RUNWAYS; k++)
|
||||||
{
|
{
|
||||||
uint16_t* targets = AircraftGetTargets(idx);
|
const uint16_t* const targets = AircraftGetTargets(idx);
|
||||||
uint16_t rwyArray[GAME_MAX_RWY_LENGTH] = {0};
|
uint16_t rwyArray[GAME_MAX_RWY_LENGTH] = {0};
|
||||||
|
|
||||||
if (SystemContains_u16(GameUsedRwy[k], targets, AIRCRAFT_MAX_TARGETS))
|
if (SystemContains_u16(GameUsedRwy[k], targets, AIRCRAFT_MAX_TARGETS))
|
||||||
|
|
276
Source/GameGui.c
276
Source/GameGui.c
|
@ -31,6 +31,29 @@ enum
|
||||||
NOTIFICATION_BUTTON_Y = BUBBLE_SPRITE_Y + 16
|
NOTIFICATION_BUTTON_Y = BUBBLE_SPRITE_Y + 16
|
||||||
};
|
};
|
||||||
|
|
||||||
|
enum
|
||||||
|
{
|
||||||
|
PAUSE_DIALOG_X = 92,
|
||||||
|
PAUSE_DIALOG_Y = 28,
|
||||||
|
PAUSE_DIALOG_W = 200,
|
||||||
|
PAUSE_DIALOG_H = 184,
|
||||||
|
|
||||||
|
PAUSE_DIALOG_R0 = 0,
|
||||||
|
PAUSE_DIALOG_R1 = PAUSE_DIALOG_R0,
|
||||||
|
PAUSE_DIALOG_R2 = 0,
|
||||||
|
PAUSE_DIALOG_R3 = PAUSE_DIALOG_R2,
|
||||||
|
|
||||||
|
PAUSE_DIALOG_G0 = NORMAL_LUMINANCE,
|
||||||
|
PAUSE_DIALOG_G1 = PAUSE_DIALOG_G0,
|
||||||
|
PAUSE_DIALOG_G2 = 0,
|
||||||
|
PAUSE_DIALOG_G3 = PAUSE_DIALOG_G2,
|
||||||
|
|
||||||
|
PAUSE_DIALOG_B0 = 40,
|
||||||
|
PAUSE_DIALOG_B1 = PAUSE_DIALOG_B0,
|
||||||
|
PAUSE_DIALOG_B2 = 0,
|
||||||
|
PAUSE_DIALOG_B3 = PAUSE_DIALOG_B2,
|
||||||
|
};
|
||||||
|
|
||||||
enum
|
enum
|
||||||
{
|
{
|
||||||
AIRCRAFT_DATA_GSGPOLY4_R0 = 0,
|
AIRCRAFT_DATA_GSGPOLY4_R0 = 0,
|
||||||
|
@ -69,14 +92,6 @@ enum
|
||||||
AIRCRAFT_DATA_GSGPOLY4_Y3_2PLAYER = AIRCRAFT_DATA_GSGPOLY4_Y2_2PLAYER,
|
AIRCRAFT_DATA_GSGPOLY4_Y3_2PLAYER = AIRCRAFT_DATA_GSGPOLY4_Y2_2PLAYER,
|
||||||
};
|
};
|
||||||
|
|
||||||
enum
|
|
||||||
{
|
|
||||||
AIRCRAFT_LOCK_TARGET_X = 32,
|
|
||||||
AIRCRAFT_LOCK_TARGET_TEXT_X = AIRCRAFT_LOCK_TARGET_X + 16,
|
|
||||||
AIRCRAFT_LOCK_TARGET_Y = 224,
|
|
||||||
AIRCRAFT_LOCK_TARGET_TEXT_Y = AIRCRAFT_LOCK_TARGET_Y + 4,
|
|
||||||
};
|
|
||||||
|
|
||||||
enum
|
enum
|
||||||
{
|
{
|
||||||
AIRCRAFT_DATA_FLIGHT_GSGPOLY4_R0 = NORMAL_LUMINANCE,
|
AIRCRAFT_DATA_FLIGHT_GSGPOLY4_R0 = NORMAL_LUMINANCE,
|
||||||
|
@ -193,8 +208,56 @@ static void GameGuiBubbleStopVibration(void);
|
||||||
|
|
||||||
static GsSprite BubbleSpr;
|
static GsSprite BubbleSpr;
|
||||||
static GsGPoly4 AircraftDataGPoly4;
|
static GsGPoly4 AircraftDataGPoly4;
|
||||||
static GsGPoly4 SelectedAircraftGPoly4;
|
static GsGPoly4 SelectedAircraftGPoly4 =
|
||||||
static GsGPoly4 PauseRect;
|
{
|
||||||
|
.r[0] = AIRCRAFT_DATA_FLIGHT_GSGPOLY4_R0,
|
||||||
|
.r[1] = AIRCRAFT_DATA_FLIGHT_GSGPOLY4_R1,
|
||||||
|
.r[2] = AIRCRAFT_DATA_FLIGHT_GSGPOLY4_R2,
|
||||||
|
.r[3] = AIRCRAFT_DATA_FLIGHT_GSGPOLY4_R3,
|
||||||
|
|
||||||
|
.g[0] = AIRCRAFT_DATA_FLIGHT_GSGPOLY4_G0,
|
||||||
|
.g[1] = AIRCRAFT_DATA_FLIGHT_GSGPOLY4_G1,
|
||||||
|
.g[2] = AIRCRAFT_DATA_FLIGHT_GSGPOLY4_G2,
|
||||||
|
.g[3] = AIRCRAFT_DATA_FLIGHT_GSGPOLY4_G3,
|
||||||
|
|
||||||
|
.b[0] = AIRCRAFT_DATA_FLIGHT_GSGPOLY4_B0,
|
||||||
|
.b[1] = AIRCRAFT_DATA_FLIGHT_GSGPOLY4_B1,
|
||||||
|
.b[2] = AIRCRAFT_DATA_FLIGHT_GSGPOLY4_B2,
|
||||||
|
.b[3] = AIRCRAFT_DATA_FLIGHT_GSGPOLY4_B3,
|
||||||
|
|
||||||
|
.attribute = ENABLE_TRANS | TRANS_MODE(0)
|
||||||
|
};
|
||||||
|
|
||||||
|
static const GsGPoly4 PauseRect =
|
||||||
|
{
|
||||||
|
.x[0] = PAUSE_DIALOG_X,
|
||||||
|
.x[1] = PAUSE_DIALOG_X + PAUSE_DIALOG_W,
|
||||||
|
.x[2] = PAUSE_DIALOG_X,
|
||||||
|
.x[3] = PAUSE_DIALOG_X + PAUSE_DIALOG_W,
|
||||||
|
|
||||||
|
.y[0] = PAUSE_DIALOG_Y,
|
||||||
|
.y[1] = PAUSE_DIALOG_Y,
|
||||||
|
.y[2] = PAUSE_DIALOG_Y + PAUSE_DIALOG_H,
|
||||||
|
.y[3] = PAUSE_DIALOG_Y + PAUSE_DIALOG_H,
|
||||||
|
|
||||||
|
.r[0] = PAUSE_DIALOG_R0,
|
||||||
|
.r[1] = PAUSE_DIALOG_R1,
|
||||||
|
.r[2] = PAUSE_DIALOG_R2,
|
||||||
|
.r[3] = PAUSE_DIALOG_R3,
|
||||||
|
|
||||||
|
.b[0] = PAUSE_DIALOG_B0,
|
||||||
|
.b[1] = PAUSE_DIALOG_B1,
|
||||||
|
.b[2] = PAUSE_DIALOG_B2,
|
||||||
|
.b[3] = PAUSE_DIALOG_B3,
|
||||||
|
|
||||||
|
.g[0] = PAUSE_DIALOG_G0,
|
||||||
|
.g[1] = PAUSE_DIALOG_G1,
|
||||||
|
.g[2] = PAUSE_DIALOG_G2,
|
||||||
|
.g[3] = PAUSE_DIALOG_G3,
|
||||||
|
|
||||||
|
.attribute = ENABLE_TRANS | TRANS_MODE(0)
|
||||||
|
};
|
||||||
|
|
||||||
static GsSprite SecondDisplay;
|
static GsSprite SecondDisplay;
|
||||||
static GsSprite DepArrSpr;
|
static GsSprite DepArrSpr;
|
||||||
static GsSprite PageUpDownSpr;
|
static GsSprite PageUpDownSpr;
|
||||||
|
@ -208,7 +271,7 @@ static const char* GameFileList[] = { "DATA\\SPRITES\\BUBBLE.TIM" ,
|
||||||
"DATA\\SPRITES\\DEPARR.TIM" ,
|
"DATA\\SPRITES\\DEPARR.TIM" ,
|
||||||
"DATA\\SPRITES\\PAGEUPDN.TIM" };
|
"DATA\\SPRITES\\PAGEUPDN.TIM" };
|
||||||
|
|
||||||
static void* GameFileDest[] = { (GsSprite*)&BubbleSpr ,
|
static void* GameFileDest[] = { (GsSprite*)&BubbleSpr ,
|
||||||
(TYPE_FONT*)&RadioFont ,
|
(TYPE_FONT*)&RadioFont ,
|
||||||
(GsSprite*)&DepArrSpr ,
|
(GsSprite*)&DepArrSpr ,
|
||||||
(GsSprite*)&PageUpDownSpr };
|
(GsSprite*)&PageUpDownSpr };
|
||||||
|
@ -227,29 +290,6 @@ static uint32_t slowScore; // It will update slowly to actual score value
|
||||||
* ***************************************************************************************/
|
* ***************************************************************************************/
|
||||||
void GameGuiInit(void)
|
void GameGuiInit(void)
|
||||||
{
|
{
|
||||||
enum
|
|
||||||
{
|
|
||||||
PAUSE_DIALOG_X = 92,
|
|
||||||
PAUSE_DIALOG_Y = 28,
|
|
||||||
PAUSE_DIALOG_W = 200,
|
|
||||||
PAUSE_DIALOG_H = 184,
|
|
||||||
|
|
||||||
PAUSE_DIALOG_R0 = 0,
|
|
||||||
PAUSE_DIALOG_R1 = PAUSE_DIALOG_R0,
|
|
||||||
PAUSE_DIALOG_R2 = 0,
|
|
||||||
PAUSE_DIALOG_R3 = PAUSE_DIALOG_R2,
|
|
||||||
|
|
||||||
PAUSE_DIALOG_G0 = NORMAL_LUMINANCE,
|
|
||||||
PAUSE_DIALOG_G1 = PAUSE_DIALOG_G0,
|
|
||||||
PAUSE_DIALOG_G2 = 0,
|
|
||||||
PAUSE_DIALOG_G3 = PAUSE_DIALOG_G2,
|
|
||||||
|
|
||||||
PAUSE_DIALOG_B0 = 40,
|
|
||||||
PAUSE_DIALOG_B1 = PAUSE_DIALOG_B0,
|
|
||||||
PAUSE_DIALOG_B2 = 0,
|
|
||||||
PAUSE_DIALOG_B3 = PAUSE_DIALOG_B2,
|
|
||||||
};
|
|
||||||
|
|
||||||
enum
|
enum
|
||||||
{
|
{
|
||||||
RADIO_FONT_SPACING = 12
|
RADIO_FONT_SPACING = 12
|
||||||
|
@ -262,39 +302,11 @@ void GameGuiInit(void)
|
||||||
initialised = true;
|
initialised = true;
|
||||||
|
|
||||||
LOAD_FILES(GameFileList, GameFileDest);
|
LOAD_FILES(GameFileList, GameFileDest);
|
||||||
|
ShowAircraftPassengersTimer = TimerCreate(20, true, GameGuiClearPassengersLeft);
|
||||||
}
|
}
|
||||||
|
|
||||||
PauseRect.x[0] = PAUSE_DIALOG_X;
|
|
||||||
PauseRect.x[1] = PAUSE_DIALOG_X + PAUSE_DIALOG_W;
|
|
||||||
PauseRect.x[2] = PAUSE_DIALOG_X;
|
|
||||||
PauseRect.x[3] = PAUSE_DIALOG_X + PAUSE_DIALOG_W;
|
|
||||||
|
|
||||||
PauseRect.y[0] = PAUSE_DIALOG_Y;
|
|
||||||
PauseRect.y[1] = PAUSE_DIALOG_Y;
|
|
||||||
PauseRect.y[2] = PAUSE_DIALOG_Y + PAUSE_DIALOG_H;
|
|
||||||
PauseRect.y[3] = PAUSE_DIALOG_Y + PAUSE_DIALOG_H;
|
|
||||||
|
|
||||||
PauseRect.r[0] = PAUSE_DIALOG_R0;
|
|
||||||
PauseRect.r[1] = PAUSE_DIALOG_R1;
|
|
||||||
PauseRect.r[2] = PAUSE_DIALOG_R2;
|
|
||||||
PauseRect.r[3] = PAUSE_DIALOG_R3;
|
|
||||||
|
|
||||||
PauseRect.b[0] = PAUSE_DIALOG_B0;
|
|
||||||
PauseRect.b[1] = PAUSE_DIALOG_B1;
|
|
||||||
PauseRect.b[2] = PAUSE_DIALOG_B2;
|
|
||||||
PauseRect.b[3] = PAUSE_DIALOG_B3;
|
|
||||||
|
|
||||||
PauseRect.g[0] = PAUSE_DIALOG_G0;
|
|
||||||
PauseRect.g[1] = PAUSE_DIALOG_G1;
|
|
||||||
PauseRect.g[2] = PAUSE_DIALOG_G2;
|
|
||||||
PauseRect.g[3] = PAUSE_DIALOG_G3;
|
|
||||||
|
|
||||||
PauseRect.attribute |= ENABLE_TRANS | TRANS_MODE(0);
|
|
||||||
|
|
||||||
PageUpDownSpr.w = AIRCRAFT_DATA_FLIGHT_PAGEUPDN_SIZE;
|
PageUpDownSpr.w = AIRCRAFT_DATA_FLIGHT_PAGEUPDN_SIZE;
|
||||||
|
|
||||||
ShowAircraftPassengersTimer = TimerCreate( 20, true, GameGuiClearPassengersLeft);
|
|
||||||
|
|
||||||
// Prepare RGB data and (X,Y) coordinates for aircraft
|
// Prepare RGB data and (X,Y) coordinates for aircraft
|
||||||
// data list request rectangle.
|
// data list request rectangle.
|
||||||
AircraftDataGPoly4.r[0] = AIRCRAFT_DATA_GSGPOLY4_R0;
|
AircraftDataGPoly4.r[0] = AIRCRAFT_DATA_GSGPOLY4_R0;
|
||||||
|
@ -350,7 +362,7 @@ bool GameGuiPauseDialog(const TYPE_PLAYER* const ptrPlayer)
|
||||||
|
|
||||||
GfxSortSprite(&SecondDisplay);
|
GfxSortSprite(&SecondDisplay);
|
||||||
|
|
||||||
GsSortGPoly4(&PauseRect);
|
GsSortGPoly4((GsGPoly4*)&PauseRect);
|
||||||
|
|
||||||
GfxDrawScene_Slow();
|
GfxDrawScene_Slow();
|
||||||
|
|
||||||
|
@ -510,9 +522,9 @@ void GameGuiAircraftList(TYPE_PLAYER* const ptrPlayer, TYPE_FLIGHT_DATA* const p
|
||||||
|
|
||||||
enum
|
enum
|
||||||
{
|
{
|
||||||
AIRCRAFT_STOP_X = 128,
|
AIRCRAFT_STOP_X = 32,
|
||||||
AIRCRAFT_STOP_TEXT_X = AIRCRAFT_STOP_X + 32,
|
AIRCRAFT_STOP_TEXT_X = AIRCRAFT_STOP_X + 32,
|
||||||
AIRCRAFT_STOP_Y = AIRCRAFT_LOCK_TARGET_Y,
|
AIRCRAFT_STOP_Y = 224,
|
||||||
AIRCRAFT_STOP_TEXT_Y = AIRCRAFT_STOP_Y + 4
|
AIRCRAFT_STOP_TEXT_Y = AIRCRAFT_STOP_Y + 4
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -547,54 +559,52 @@ void GameGuiAircraftList(TYPE_PLAYER* const ptrPlayer, TYPE_FLIGHT_DATA* const p
|
||||||
|
|
||||||
GsSortGPoly4(&AircraftDataGPoly4);
|
GsSortGPoly4(&AircraftDataGPoly4);
|
||||||
|
|
||||||
if (GameTwoPlayersActive())
|
const struct
|
||||||
{
|
{
|
||||||
FontPrintText( &SmallFont,
|
struct pos
|
||||||
GAME_GUI_REMAINING_AIRCRAFT_X_2PLAYER,
|
{
|
||||||
GAME_GUI_REMAINING_AIRCRAFT_Y_2PLAYER,
|
short x;
|
||||||
"Rem. aircraft: %d",
|
short y;
|
||||||
ptrFlightData->nRemainingAircraft );
|
} remainingTime;
|
||||||
|
|
||||||
FontPrintText( &SmallFont,
|
struct pos aircraftTime;
|
||||||
GAME_GUI_NEXT_AIRCRAFT_TIME_X_2PLAYER,
|
} posData =
|
||||||
GAME_GUI_NEXT_AIRCRAFT_TIME_Y_2PLAYER,
|
|
||||||
"Next aircraft: %d sec",
|
|
||||||
ptrPlayer->NextAircraftTime );
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
{
|
||||||
FontPrintText( &SmallFont,
|
.remainingTime =
|
||||||
GAME_GUI_REMAINING_AIRCRAFT_X,
|
{
|
||||||
GAME_GUI_REMAINING_AIRCRAFT_Y,
|
.x = GameTwoPlayersActive() ?
|
||||||
"Remaining aircraft: %d",
|
GAME_GUI_REMAINING_AIRCRAFT_X_2PLAYER
|
||||||
ptrFlightData->nRemainingAircraft );
|
: GAME_GUI_REMAINING_AIRCRAFT_X,
|
||||||
|
.y = GameTwoPlayersActive() ?
|
||||||
|
GAME_GUI_REMAINING_AIRCRAFT_Y_2PLAYER
|
||||||
|
:GAME_GUI_REMAINING_AIRCRAFT_Y
|
||||||
|
},
|
||||||
|
|
||||||
FontPrintText( &SmallFont,
|
.aircraftTime =
|
||||||
GAME_GUI_NEXT_AIRCRAFT_TIME_X,
|
{
|
||||||
GAME_GUI_NEXT_AIRCRAFT_TIME_Y,
|
.x = GameTwoPlayersActive() ?
|
||||||
"Next aircraft: %d sec",
|
GAME_GUI_NEXT_AIRCRAFT_TIME_X_2PLAYER
|
||||||
ptrPlayer->NextAircraftTime );
|
: GAME_GUI_NEXT_AIRCRAFT_TIME_X,
|
||||||
}
|
.y = GameTwoPlayersActive() ?
|
||||||
|
GAME_GUI_NEXT_AIRCRAFT_TIME_Y_2PLAYER
|
||||||
|
: GAME_GUI_NEXT_AIRCRAFT_TIME_Y
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
FontPrintText(&SmallFont,
|
||||||
|
posData.remainingTime.x,
|
||||||
|
posData.remainingTime.y,
|
||||||
|
"Remaining aircraft: %d",
|
||||||
|
ptrFlightData->nRemainingAircraft);
|
||||||
|
|
||||||
|
FontPrintText(&SmallFont,
|
||||||
|
posData.aircraftTime.x,
|
||||||
|
posData.aircraftTime.y,
|
||||||
|
"Next aircraft: %d sec",
|
||||||
|
ptrPlayer->NextAircraftTime);
|
||||||
|
|
||||||
if (ptrPlayer->ActiveAircraft != 0)
|
if (ptrPlayer->ActiveAircraft != 0)
|
||||||
{
|
{
|
||||||
SelectedAircraftGPoly4.r[0] = AIRCRAFT_DATA_FLIGHT_GSGPOLY4_R0;
|
|
||||||
SelectedAircraftGPoly4.r[1] = AIRCRAFT_DATA_FLIGHT_GSGPOLY4_R1;
|
|
||||||
SelectedAircraftGPoly4.r[2] = AIRCRAFT_DATA_FLIGHT_GSGPOLY4_R2;
|
|
||||||
SelectedAircraftGPoly4.r[3] = AIRCRAFT_DATA_FLIGHT_GSGPOLY4_R3;
|
|
||||||
|
|
||||||
SelectedAircraftGPoly4.g[0] = AIRCRAFT_DATA_FLIGHT_GSGPOLY4_G0;
|
|
||||||
SelectedAircraftGPoly4.g[1] = AIRCRAFT_DATA_FLIGHT_GSGPOLY4_G1;
|
|
||||||
SelectedAircraftGPoly4.g[2] = AIRCRAFT_DATA_FLIGHT_GSGPOLY4_G2;
|
|
||||||
SelectedAircraftGPoly4.g[3] = AIRCRAFT_DATA_FLIGHT_GSGPOLY4_G3;
|
|
||||||
|
|
||||||
SelectedAircraftGPoly4.b[0] = AIRCRAFT_DATA_FLIGHT_GSGPOLY4_B0;
|
|
||||||
SelectedAircraftGPoly4.b[1] = AIRCRAFT_DATA_FLIGHT_GSGPOLY4_B1;
|
|
||||||
SelectedAircraftGPoly4.b[2] = AIRCRAFT_DATA_FLIGHT_GSGPOLY4_B2;
|
|
||||||
SelectedAircraftGPoly4.b[3] = AIRCRAFT_DATA_FLIGHT_GSGPOLY4_B3;
|
|
||||||
|
|
||||||
SelectedAircraftGPoly4.attribute |= ENABLE_TRANS | TRANS_MODE(0);
|
|
||||||
|
|
||||||
if (GameTwoPlayersActive())
|
if (GameTwoPlayersActive())
|
||||||
{
|
{
|
||||||
SelectedAircraftGPoly4.x[0] = AIRCRAFT_DATA_FLIGHT_GSGPOLY4_X0_2PLAYER;
|
SelectedAircraftGPoly4.x[0] = AIRCRAFT_DATA_FLIGHT_GSGPOLY4_X0_2PLAYER;
|
||||||
|
@ -684,17 +694,6 @@ void GameGuiAircraftList(TYPE_PLAYER* const ptrPlayer, TYPE_FLIGHT_DATA* const p
|
||||||
|
|
||||||
GameGuiShowAircraftData(ptrPlayer, ptrFlightData);
|
GameGuiShowAircraftData(ptrPlayer, ptrFlightData);
|
||||||
|
|
||||||
GfxDrawButton(AIRCRAFT_LOCK_TARGET_X, AIRCRAFT_LOCK_TARGET_Y, PAD_SQUARE);
|
|
||||||
|
|
||||||
if (ptrPlayer->LockTarget)
|
|
||||||
{
|
|
||||||
FontPrintText(&SmallFont, AIRCRAFT_LOCK_TARGET_TEXT_X, AIRCRAFT_LOCK_TARGET_TEXT_Y, "Unlock target");
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
FontPrintText(&SmallFont, AIRCRAFT_LOCK_TARGET_TEXT_X, AIRCRAFT_LOCK_TARGET_TEXT_Y, "Lock target");
|
|
||||||
}
|
|
||||||
|
|
||||||
if (ptrFlightData->State[ptrPlayer->FlightDataSelectedAircraft] == STATE_USER_STOPPED)
|
if (ptrFlightData->State[ptrPlayer->FlightDataSelectedAircraft] == STATE_USER_STOPPED)
|
||||||
{
|
{
|
||||||
GfxDrawButton(AIRCRAFT_STOP_X, AIRCRAFT_STOP_Y, PAD_L1);
|
GfxDrawButton(AIRCRAFT_STOP_X, AIRCRAFT_STOP_Y, PAD_L1);
|
||||||
|
@ -794,8 +793,8 @@ void GameGuiBubble(TYPE_FLIGHT_DATA* const ptrFlightData)
|
||||||
|
|
||||||
if (bubbleVibration)
|
if (bubbleVibration)
|
||||||
{
|
{
|
||||||
BubbleSpr.x += SystemRand(BUBBLE_SPRITE_RAND_MIN,BUBBLE_SPRITE_RAND_MAX);
|
BubbleSpr.x += SystemRand(BUBBLE_SPRITE_RAND_MIN, BUBBLE_SPRITE_RAND_MAX);
|
||||||
BubbleSpr.y += SystemRand(BUBBLE_SPRITE_RAND_MIN,BUBBLE_SPRITE_RAND_MAX);
|
BubbleSpr.y += SystemRand(BUBBLE_SPRITE_RAND_MIN, BUBBLE_SPRITE_RAND_MAX);
|
||||||
}
|
}
|
||||||
|
|
||||||
GfxSortSprite(&BubbleSpr);
|
GfxSortSprite(&BubbleSpr);
|
||||||
|
@ -927,17 +926,20 @@ void GameGuiShowAircraftData(TYPE_PLAYER* const ptrPlayer, TYPE_FLIGHT_DATA* con
|
||||||
|
|
||||||
for (i = init_flight ; i < ptrPlayer->ActiveAircraft ; i++)
|
for (i = init_flight ; i < ptrPlayer->ActiveAircraft ; i++)
|
||||||
{
|
{
|
||||||
const char* const strAircraftArray[MAX_STATES] = { [STATE_APPROACH] = "Approach",
|
static const char* const strAircraftArray[MAX_STATES] =
|
||||||
[STATE_READY_FOR_TAKEOFF] = "Takeoff",
|
{
|
||||||
[STATE_LANDED] = "Landed",
|
[STATE_APPROACH] = "Approach",
|
||||||
[STATE_PARKED] = "Parked",
|
[STATE_READY_FOR_TAKEOFF] = "Takeoff",
|
||||||
[STATE_UNBOARDING] = "Unboard",
|
[STATE_LANDED] = "Landed",
|
||||||
[STATE_HOLDING_RWY] = "Holding",
|
[STATE_PARKED] = "Parked",
|
||||||
[STATE_USER_STOPPED] = "Stopped",
|
[STATE_UNBOARDING] = "Unboard",
|
||||||
[STATE_AUTO_STOPPED] = "Stopped" };
|
[STATE_HOLDING_RWY] = "Holding",
|
||||||
|
[STATE_USER_STOPPED] = "Stopped",
|
||||||
|
[STATE_AUTO_STOPPED] = "Stopped"
|
||||||
|
};
|
||||||
|
|
||||||
FL_STATE aircraftState;
|
FL_STATE aircraftState;
|
||||||
const char* strState;
|
const char* strState;
|
||||||
|
|
||||||
j = i - init_flight;
|
j = i - init_flight;
|
||||||
|
|
||||||
|
@ -980,11 +982,11 @@ void GameGuiShowAircraftData(TYPE_PLAYER* const ptrPlayer, TYPE_FLIGHT_DATA* con
|
||||||
|
|
||||||
if (strState != NULL)
|
if (strState != NULL)
|
||||||
{
|
{
|
||||||
FontPrintText( &SmallFont,
|
FontPrintText( &SmallFont,
|
||||||
AircraftDataDirection_X + AircraftDataState_X_Offset,
|
AircraftDataDirection_X + AircraftDataState_X_Offset,
|
||||||
AircraftDataDirection_Y + (AIRCRAFT_DATA_FLIGHT_GSGPOLY4_H * j),
|
AircraftDataDirection_Y + (AIRCRAFT_DATA_FLIGHT_GSGPOLY4_H * j),
|
||||||
(char*)strState );
|
(char*)strState );
|
||||||
}
|
}
|
||||||
|
|
||||||
FontSetFlags(&SmallFont, FONT_NOFLAGS);
|
FontSetFlags(&SmallFont, FONT_NOFLAGS);
|
||||||
|
|
||||||
|
@ -1168,7 +1170,7 @@ bool GameGuiFinishedDialog(TYPE_PLAYER* const ptrPlayer)
|
||||||
|
|
||||||
GfxSortSprite(&SecondDisplay);
|
GfxSortSprite(&SecondDisplay);
|
||||||
|
|
||||||
GsSortGPoly4(&PauseRect);
|
GsSortGPoly4((GsGPoly4*)&PauseRect);
|
||||||
|
|
||||||
FontPrintText( &SmallFont,
|
FontPrintText( &SmallFont,
|
||||||
AIRCRAFT_DATA_GSGPOLY4_X0 +
|
AIRCRAFT_DATA_GSGPOLY4_X0 +
|
||||||
|
@ -1208,7 +1210,7 @@ void GameGuiAircraftCollision(TYPE_PLAYER* const ptrPlayer)
|
||||||
{
|
{
|
||||||
GfxSortSprite(&SecondDisplay);
|
GfxSortSprite(&SecondDisplay);
|
||||||
|
|
||||||
GsSortGPoly4(&PauseRect);
|
GsSortGPoly4((GsGPoly4*)&PauseRect);
|
||||||
|
|
||||||
FontPrintText( &SmallFont,
|
FontPrintText( &SmallFont,
|
||||||
AIRCRAFT_DATA_GSGPOLY4_X0 + 8,
|
AIRCRAFT_DATA_GSGPOLY4_X0 + 8,
|
||||||
|
|
|
@ -703,7 +703,7 @@ volatile bool SystemIsBusy(void)
|
||||||
* @return: true if value is contained inside buffer, false otherwise.
|
* @return: true if value is contained inside buffer, false otherwise.
|
||||||
*
|
*
|
||||||
* ****************************************************************************/
|
* ****************************************************************************/
|
||||||
bool SystemContains_u8(uint8_t value, uint8_t* buffer, size_t sz)
|
bool SystemContains_u8(const uint8_t value, const uint8_t* const buffer, const size_t sz)
|
||||||
{
|
{
|
||||||
size_t i = 0;
|
size_t i = 0;
|
||||||
|
|
||||||
|
@ -730,7 +730,7 @@ bool SystemContains_u8(uint8_t value, uint8_t* buffer, size_t sz)
|
||||||
* @return: true if value is contained inside buffer, false otherwise.
|
* @return: true if value is contained inside buffer, false otherwise.
|
||||||
*
|
*
|
||||||
* ****************************************************************************/
|
* ****************************************************************************/
|
||||||
bool SystemContains_u16(uint16_t value, uint16_t* buffer, size_t sz)
|
bool SystemContains_u16(const uint16_t value, const uint16_t* const buffer, const size_t sz)
|
||||||
{
|
{
|
||||||
size_t i = 0;
|
size_t i = 0;
|
||||||
|
|
||||||
|
@ -889,7 +889,7 @@ int32_t SystemIndexOfStringArray(char* str, char** array)
|
||||||
* @return Index for a variable "value" inside "array". -1 if it could not be found.
|
* @return Index for a variable "value" inside "array". -1 if it could not be found.
|
||||||
*
|
*
|
||||||
* ****************************************************************************************/
|
* ****************************************************************************************/
|
||||||
int32_t SystemIndexOf_U16(uint16_t value, uint16_t* array, uint32_t sz)
|
int32_t SystemIndexOf_U16(const uint16_t value, const uint16_t* const array, const uint32_t sz)
|
||||||
{
|
{
|
||||||
int32_t i;
|
int32_t i;
|
||||||
|
|
||||||
|
@ -917,7 +917,7 @@ int32_t SystemIndexOf_U16(uint16_t value, uint16_t* array, uint32_t sz)
|
||||||
*
|
*
|
||||||
* ****************************************************************************************/
|
* ****************************************************************************************/
|
||||||
|
|
||||||
int32_t SystemIndexOf_U8(uint8_t value, uint8_t* array, uint32_t from, uint32_t sz)
|
int32_t SystemIndexOf_U8(const uint8_t value, const uint8_t* const array, const uint32_t from, const uint32_t sz)
|
||||||
{
|
{
|
||||||
int32_t i;
|
int32_t i;
|
||||||
|
|
||||||
|
|
|
@ -75,10 +75,10 @@ volatile uint64_t SystemGetGlobalTimer(void);
|
||||||
volatile bool SystemIsBusy(void);
|
volatile bool SystemIsBusy(void);
|
||||||
|
|
||||||
// Returns whether indicated value is contained inside buffer
|
// Returns whether indicated value is contained inside buffer
|
||||||
bool SystemContains_u8(uint8_t value, uint8_t* buffer, size_t sz);
|
bool SystemContains_u8(const uint8_t value, const uint8_t* const buffer, const size_t sz);
|
||||||
|
|
||||||
// Overload for uint16_t
|
// Overload for uint16_t
|
||||||
bool SystemContains_u16(uint16_t value, uint16_t* buffer, size_t sz);
|
bool SystemContains_u16(const uint16_t value, const uint16_t* const buffer, const size_t sz);
|
||||||
|
|
||||||
// Compares two arrays of unsigned short type.
|
// Compares two arrays of unsigned short type.
|
||||||
bool SystemArrayCompare(unsigned short* arr1, unsigned short* arr2, size_t sz);
|
bool SystemArrayCompare(unsigned short* arr1, unsigned short* arr2, size_t sz);
|
||||||
|
@ -95,10 +95,10 @@ void SystemCheckStack(void);
|
||||||
int32_t SystemIndexOfStringArray(char* str, char** array);
|
int32_t SystemIndexOfStringArray(char* str, char** array);
|
||||||
|
|
||||||
// Function overload for uint16_t data type.
|
// Function overload for uint16_t data type.
|
||||||
int32_t SystemIndexOf_U16(uint16_t value, uint16_t* array, uint32_t sz);
|
int32_t SystemIndexOf_U16(const uint16_t value, const uint16_t* array, const uint32_t sz);
|
||||||
|
|
||||||
// Function overload for uint8_t data type.
|
// Function overload for uint8_t data type.
|
||||||
int32_t SystemIndexOf_U8(uint8_t value, uint8_t* array, uint32_t from, uint32_t sz);
|
int32_t SystemIndexOf_U8(const uint8_t value, const uint8_t* const array, const uint32_t from, const uint32_t sz);
|
||||||
|
|
||||||
// Returns frames per second.
|
// Returns frames per second.
|
||||||
volatile uint8_t SystemGetFPS(void);
|
volatile uint8_t SystemGetFPS(void);
|
||||||
|
|
Loading…
Reference in New Issue