diff --git a/Source/Aircraft.c b/Source/Aircraft.c index ee84fb2..f2727a4 100644 --- a/Source/Aircraft.c +++ b/Source/Aircraft.c @@ -466,8 +466,6 @@ void AircraftRender(TYPE_PLAYER* const ptrPlayer, uint8_t aircraftIdx) AircraftSpr.g = 0; AircraftSpr.b = 0; - AircraftSpr.attribute |= ENABLE_TRANS | TRANS_MODE(0); - GfxSortSprite(&AircraftSpr); } @@ -477,8 +475,6 @@ void AircraftRender(TYPE_PLAYER* const ptrPlayer, uint8_t aircraftIdx) AircraftSpr.x = cartPos.x - (AircraftSpr.w >> 1); AircraftSpr.y = cartPos.y - (AircraftSpr.h >> 1); - AircraftSpr.attribute &= ~(ENABLE_TRANS | TRANS_MODE(0)); - CameraApplyCoordinatesToSprite(ptrPlayer, &AircraftSpr); if ((ptrPlayer->FlightDataSelectedAircraft == aircraftIdx) @@ -864,7 +860,7 @@ DIRECTION AircraftGetDirection(TYPE_AIRCRAFT_DATA* const ptrAircraft) return ptrAircraft->Direction; } -uint16_t* AircraftGetTargets(uint8_t index) +const uint16_t* AircraftGetTargets(uint8_t index) { TYPE_AIRCRAFT_DATA* const ptrAircraft = AircraftFromFlightDataIndex(index); diff --git a/Source/Aircraft.h b/Source/Aircraft.h index 1da7346..239ec4c 100644 --- a/Source/Aircraft.h +++ b/Source/Aircraft.h @@ -21,7 +21,7 @@ void AircraftAddTargets(TYPE_AIRCRAFT_DATA* const ptrAircraft, uint16_t* targets TYPE_ISOMETRIC_POS AircraftGetIsoPos(const uint8_t FlightDataIdx); uint16_t AircraftGetTileFromFlightDataIndex(const uint8_t index); bool AircraftRemove(uint8_t aircraftIdx); -uint16_t* AircraftGetTargets(uint8_t index); +const uint16_t* AircraftGetTargets(uint8_t index); bool AircraftMoving(uint8_t index); uint8_t AircraftGetTargetIdx(uint8_t index); DIRECTION AircraftGetDirection(TYPE_AIRCRAFT_DATA* const ptrAircraft); diff --git a/Source/Airport.geany b/Source/Airport.geany index b54567e..7bf7129 100644 --- a/Source/Airport.geany +++ b/Source/Airport.geany @@ -29,14 +29,14 @@ long_line_column=120 [files] 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_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_4=9763;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_4=34311;C;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FAirport%2FSource%2FGame.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_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_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 @@ -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_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_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_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_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_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_26=2185;C++;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FAirport%2FSource%2FGameStructures.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=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_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_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 @@ -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_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_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] last_dir=/home/xavier/Airport/Bin diff --git a/Source/Exe/AIRPORT.elf b/Source/Exe/AIRPORT.elf index 64d1de6..bbb1129 100755 Binary files a/Source/Exe/AIRPORT.elf and b/Source/Exe/AIRPORT.elf differ diff --git a/Source/Exe/AIRPORT.iso b/Source/Exe/AIRPORT.iso index 50f20f1..c8b77bf 100644 Binary files a/Source/Exe/AIRPORT.iso and b/Source/Exe/AIRPORT.iso differ diff --git a/Source/Game.c b/Source/Game.c index 3eae43c..4a04a1b 100644 --- a/Source/Game.c +++ b/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_Ex(TYPE_PLAYER* const ptrPlayer, uint16_t tile); 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 GameClock(void); 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); GameStateShowAircraft(ptrPlayer, ptrFlightData); CameraHandler(ptrPlayer); - GameRenderTerrainPrecalculations(ptrPlayer); + GameRenderTerrainPrecalculations(ptrPlayer, ptrFlightData); GameGuiActiveAircraftPage(ptrPlayer, ptrFlightData); GameSelectAircraftFromList(ptrPlayer, ptrFlightData); } @@ -1495,7 +1495,7 @@ static void GameAircraftState(const uint8_t i) { if (AircraftFromFlightDataIndex(j)->State != STATE_IDLE) { - uint16_t* targets = AircraftGetTargets(j); + const uint16_t* const targets = AircraftGetTargets(j); if (targets != NULL) { @@ -1584,6 +1584,10 @@ static void GameInitTileUVTable(void) * TYPE_PLAYER* const ptrPlayer: * 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: * Reads current player states, precalculates RGB/XY/visibilty data and saves it into * lookup tables which will be then used on GameRenderTerrain(). @@ -1593,7 +1597,7 @@ static void GameInitTileUVTable(void) * 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; uint8_t rows = 0; @@ -1627,14 +1631,16 @@ void GameRenderTerrainPrecalculations(TYPE_PLAYER* const ptrPlayer) // V Building, bit 6 // Building, bit 7 uint8_t CurrentTile = (uint8_t)(levelBuffer[i] & 0x007F); // Remove building data - // and mirror flag. + // and mirror flag. // Isometric -> Cartesian conversion tileIsoPos.x = columns << (TILE_SIZE_BIT_SHIFT); tileIsoPos.y = rows << (TILE_SIZE_BIT_SHIFT); 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) ) { @@ -1647,86 +1653,119 @@ void GameRenderTerrainPrecalculations(TYPE_PLAYER* const ptrPlayer) } // 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, - ptrPlayer->TileData[i].CartPos.y, + if (GfxIsInsideScreenArea( tileData->CartPos.x, + tileData->CartPos.y, 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; - ptrPlayer->TileData[i].g = NORMAL_LUMINANCE; - ptrPlayer->TileData[i].b = NORMAL_LUMINANCE; - - if (i != 0) - { - if (ptrPlayer->SelectRunway) + if (i != 0) { - 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; - ptrPlayer->TileData[i].b = NORMAL_LUMINANCE >> 2; - ptrPlayer->TileData[i].g = NORMAL_LUMINANCE >> 2; + if (used_rwy) + { + 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) - && - ( (CurrentTile == TILE_PARKING) - || - (CurrentTile == TILE_PARKING_2) ) ) + || + (ptrPlayer->SelectTaxiwayRunway) ) { - ptrPlayer->TileData[i].r = NORMAL_LUMINANCE >> 2; - ptrPlayer->TileData[i].g = rwy_sine; - ptrPlayer->TileData[i].b = NORMAL_LUMINANCE >> 2; + if (( (SystemContains_u16(i, ptrPlayer->Waypoints, ptrPlayer->WaypointIdx)) + || + (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->LockedAircraft != FLIGHT_DATA_INVALID_IDX) + if ((ptrPlayer->LockedAircraft != FLIGHT_DATA_INVALID_IDX) + && + (ptrPlayer->LockedAircraft <= ptrPlayer->FlightDataSelectedAircraft)) { 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) - { - 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; + ptrPlayer->LockTarget = true; + ptrPlayer->LockedAircraft = AircraftIdx; } } - else if (ptrPlayer->PadDirectionKeyPressed_Callback()) + else { - if ( (ptrPlayer->LockTarget) - && - (ptrPlayer->ShowAircraftData == false) ) - { - ptrPlayer->LockTarget = false; - ptrPlayer->LockedAircraft = FLIGHT_DATA_INVALID_IDX; - } + 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) { uint8_t i; - bool success; TYPE_ISOMETRIC_POS IsoPos = { GameGetXFromTile_short(GameRwy[ptrPlayer->SelectedRunway]), GameGetYFromTile_short(GameRwy[ptrPlayer->SelectedRunway]), 0 }; @@ -2264,14 +2288,13 @@ static void GameStateSelectRunway(TYPE_PLAYER* const ptrPlayer, TYPE_FLIGHT_DATA else if (ptrPlayer->PadKeySinglePress_Callback(PAD_CROSS)) { ptrPlayer->SelectRunway = false; + bool success = false; if (SystemContains_u16(GameRwy[ptrPlayer->SelectedRunway], GameUsedRwy, GAME_MAX_RUNWAYS) == false) { ptrPlayer->SelectRunway = false; Serial_printf("Player selected runway %d!\n",GameRwy[ptrPlayer->SelectedRunway]); - success = false; - for (i = 0; i < GAME_MAX_RUNWAYS; i++) { 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) { - uint8_t AcceptedTiles[] = { TILE_ASPHALT_WITH_BORDERS, - TILE_PARKING, - TILE_RWY_MID, - TILE_RWY_EXIT, - TILE_TAXIWAY_CORNER_GRASS, - TILE_TAXIWAY_CORNER_GRASS_2, - TILE_TAXIWAY_GRASS, - TILE_TAXIWAY_INTERSECT_GRASS, - TILE_TAXIWAY_4WAY_CROSSING, - TILE_PARKING_2, - TILE_RWY_HOLDING_POINT, - TILE_RWY_HOLDING_POINT_2 }; + static const uint8_t AcceptedTiles[] = + { + TILE_ASPHALT_WITH_BORDERS, + TILE_PARKING, + TILE_RWY_MID, + TILE_RWY_EXIT, + TILE_TAXIWAY_CORNER_GRASS, + TILE_TAXIWAY_CORNER_GRASS_2, + TILE_TAXIWAY_GRASS, + TILE_TAXIWAY_INTERSECT_GRASS, + TILE_TAXIWAY_4WAY_CROSSING, + TILE_PARKING_2, + TILE_RWY_HOLDING_POINT, + TILE_RWY_HOLDING_POINT_2 + }; uint8_t i; - uint8_t j; uint16_t x_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; - x_diff = (uint16_t)abs( (ptrPlayer->SelectedTile % GameLevelColumns) - - (ptrPlayer->Waypoints[ptrPlayer->LastWaypointIdx] % GameLevelColumns) ); + x_diff = abs((ptrPlayer->SelectedTile % GameLevelColumns) - + (ptrPlayer->Waypoints[ptrPlayer->LastWaypointIdx] % GameLevelColumns)); - y_diff = (uint16_t)abs( (ptrPlayer->SelectedTile / GameLevelColumns) - - (ptrPlayer->Waypoints[ptrPlayer->LastWaypointIdx] / GameLevelColumns) ); + y_diff = abs((ptrPlayer->SelectedTile / GameLevelColumns) - + (ptrPlayer->Waypoints[ptrPlayer->LastWaypointIdx] / GameLevelColumns)); // At this point, we have to update current waypoints list. // 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) { // Now try again with mirrored tiles, just in case! - - for (j = 0; j < (sizeof (AcceptedTiles) * sizeof (uint8_t) ); j++) + static const uint8_t AcceptedMirroredTiles[] = { - 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]], - AcceptedTiles, + AcceptedMirroredTiles, sizeof (AcceptedTiles) ) == false) { // Both cases have failed. Return from function. 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) ) { @@ -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) { @@ -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; 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); @@ -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 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++) { - uint16_t* targets = AircraftGetTargets(idx); + const uint16_t* const targets = AircraftGetTargets(idx); uint16_t rwyArray[GAME_MAX_RWY_LENGTH] = {0}; if (SystemContains_u16(GameUsedRwy[k], targets, AIRCRAFT_MAX_TARGETS)) diff --git a/Source/GameGui.c b/Source/GameGui.c index 2d63cd1..df76051 100644 --- a/Source/GameGui.c +++ b/Source/GameGui.c @@ -31,6 +31,29 @@ enum 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 { AIRCRAFT_DATA_GSGPOLY4_R0 = 0, @@ -69,14 +92,6 @@ enum 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 { AIRCRAFT_DATA_FLIGHT_GSGPOLY4_R0 = NORMAL_LUMINANCE, @@ -193,8 +208,56 @@ static void GameGuiBubbleStopVibration(void); static GsSprite BubbleSpr; static GsGPoly4 AircraftDataGPoly4; -static GsGPoly4 SelectedAircraftGPoly4; -static GsGPoly4 PauseRect; +static GsGPoly4 SelectedAircraftGPoly4 = +{ + .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 DepArrSpr; static GsSprite PageUpDownSpr; @@ -208,7 +271,7 @@ static const char* GameFileList[] = { "DATA\\SPRITES\\BUBBLE.TIM" , "DATA\\SPRITES\\DEPARR.TIM" , "DATA\\SPRITES\\PAGEUPDN.TIM" }; -static void* GameFileDest[] = { (GsSprite*)&BubbleSpr , +static void* GameFileDest[] = { (GsSprite*)&BubbleSpr , (TYPE_FONT*)&RadioFont , (GsSprite*)&DepArrSpr , (GsSprite*)&PageUpDownSpr }; @@ -227,29 +290,6 @@ static uint32_t slowScore; // It will update slowly to actual score value * ***************************************************************************************/ 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 { RADIO_FONT_SPACING = 12 @@ -262,39 +302,11 @@ void GameGuiInit(void) initialised = true; 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; - ShowAircraftPassengersTimer = TimerCreate( 20, true, GameGuiClearPassengersLeft); - // Prepare RGB data and (X,Y) coordinates for aircraft // data list request rectangle. AircraftDataGPoly4.r[0] = AIRCRAFT_DATA_GSGPOLY4_R0; @@ -350,7 +362,7 @@ bool GameGuiPauseDialog(const TYPE_PLAYER* const ptrPlayer) GfxSortSprite(&SecondDisplay); - GsSortGPoly4(&PauseRect); + GsSortGPoly4((GsGPoly4*)&PauseRect); GfxDrawScene_Slow(); @@ -510,9 +522,9 @@ void GameGuiAircraftList(TYPE_PLAYER* const ptrPlayer, TYPE_FLIGHT_DATA* const p enum { - AIRCRAFT_STOP_X = 128, + 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 }; @@ -547,54 +559,52 @@ void GameGuiAircraftList(TYPE_PLAYER* const ptrPlayer, TYPE_FLIGHT_DATA* const p GsSortGPoly4(&AircraftDataGPoly4); - if (GameTwoPlayersActive()) + const struct { - FontPrintText( &SmallFont, - GAME_GUI_REMAINING_AIRCRAFT_X_2PLAYER, - GAME_GUI_REMAINING_AIRCRAFT_Y_2PLAYER, - "Rem. aircraft: %d", - ptrFlightData->nRemainingAircraft ); + struct pos + { + short x; + short y; + } remainingTime; - FontPrintText( &SmallFont, - GAME_GUI_NEXT_AIRCRAFT_TIME_X_2PLAYER, - GAME_GUI_NEXT_AIRCRAFT_TIME_Y_2PLAYER, - "Next aircraft: %d sec", - ptrPlayer->NextAircraftTime ); - } - else + struct pos aircraftTime; + } posData = { - FontPrintText( &SmallFont, - GAME_GUI_REMAINING_AIRCRAFT_X, - GAME_GUI_REMAINING_AIRCRAFT_Y, - "Remaining aircraft: %d", - ptrFlightData->nRemainingAircraft ); + .remainingTime = + { + .x = GameTwoPlayersActive() ? + GAME_GUI_REMAINING_AIRCRAFT_X_2PLAYER + : GAME_GUI_REMAINING_AIRCRAFT_X, + .y = GameTwoPlayersActive() ? + GAME_GUI_REMAINING_AIRCRAFT_Y_2PLAYER + :GAME_GUI_REMAINING_AIRCRAFT_Y + }, - FontPrintText( &SmallFont, - GAME_GUI_NEXT_AIRCRAFT_TIME_X, - GAME_GUI_NEXT_AIRCRAFT_TIME_Y, - "Next aircraft: %d sec", - ptrPlayer->NextAircraftTime ); - } + .aircraftTime = + { + .x = GameTwoPlayersActive() ? + GAME_GUI_NEXT_AIRCRAFT_TIME_X_2PLAYER + : 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) { - 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()) { 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); - 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) { GfxDrawButton(AIRCRAFT_STOP_X, AIRCRAFT_STOP_Y, PAD_L1); @@ -794,8 +793,8 @@ void GameGuiBubble(TYPE_FLIGHT_DATA* const ptrFlightData) if (bubbleVibration) { - BubbleSpr.x += SystemRand(BUBBLE_SPRITE_RAND_MIN,BUBBLE_SPRITE_RAND_MAX); - BubbleSpr.y += 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); } GfxSortSprite(&BubbleSpr); @@ -927,17 +926,20 @@ void GameGuiShowAircraftData(TYPE_PLAYER* const ptrPlayer, TYPE_FLIGHT_DATA* con for (i = init_flight ; i < ptrPlayer->ActiveAircraft ; i++) { - const char* const strAircraftArray[MAX_STATES] = { [STATE_APPROACH] = "Approach", - [STATE_READY_FOR_TAKEOFF] = "Takeoff", - [STATE_LANDED] = "Landed", - [STATE_PARKED] = "Parked", - [STATE_UNBOARDING] = "Unboard", - [STATE_HOLDING_RWY] = "Holding", - [STATE_USER_STOPPED] = "Stopped", - [STATE_AUTO_STOPPED] = "Stopped" }; + static const char* const strAircraftArray[MAX_STATES] = + { + [STATE_APPROACH] = "Approach", + [STATE_READY_FOR_TAKEOFF] = "Takeoff", + [STATE_LANDED] = "Landed", + [STATE_PARKED] = "Parked", + [STATE_UNBOARDING] = "Unboard", + [STATE_HOLDING_RWY] = "Holding", + [STATE_USER_STOPPED] = "Stopped", + [STATE_AUTO_STOPPED] = "Stopped" + }; - FL_STATE aircraftState; - const char* strState; + FL_STATE aircraftState; + const char* strState; j = i - init_flight; @@ -980,11 +982,11 @@ void GameGuiShowAircraftData(TYPE_PLAYER* const ptrPlayer, TYPE_FLIGHT_DATA* con if (strState != NULL) { - FontPrintText( &SmallFont, - AircraftDataDirection_X + AircraftDataState_X_Offset, - AircraftDataDirection_Y + (AIRCRAFT_DATA_FLIGHT_GSGPOLY4_H * j), - (char*)strState ); - } + FontPrintText( &SmallFont, + AircraftDataDirection_X + AircraftDataState_X_Offset, + AircraftDataDirection_Y + (AIRCRAFT_DATA_FLIGHT_GSGPOLY4_H * j), + (char*)strState ); + } FontSetFlags(&SmallFont, FONT_NOFLAGS); @@ -1168,7 +1170,7 @@ bool GameGuiFinishedDialog(TYPE_PLAYER* const ptrPlayer) GfxSortSprite(&SecondDisplay); - GsSortGPoly4(&PauseRect); + GsSortGPoly4((GsGPoly4*)&PauseRect); FontPrintText( &SmallFont, AIRCRAFT_DATA_GSGPOLY4_X0 + @@ -1208,7 +1210,7 @@ void GameGuiAircraftCollision(TYPE_PLAYER* const ptrPlayer) { GfxSortSprite(&SecondDisplay); - GsSortGPoly4(&PauseRect); + GsSortGPoly4((GsGPoly4*)&PauseRect); FontPrintText( &SmallFont, AIRCRAFT_DATA_GSGPOLY4_X0 + 8, diff --git a/Source/System.c b/Source/System.c index 5295e46..1b35de6 100644 --- a/Source/System.c +++ b/Source/System.c @@ -703,7 +703,7 @@ volatile bool SystemIsBusy(void) * @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; @@ -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. * * ****************************************************************************/ -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; @@ -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. * * ****************************************************************************************/ -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; @@ -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; diff --git a/Source/System.h b/Source/System.h index 12c0079..90c1969 100644 --- a/Source/System.h +++ b/Source/System.h @@ -75,10 +75,10 @@ volatile uint64_t SystemGetGlobalTimer(void); volatile bool SystemIsBusy(void); // 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 -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. 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); // 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. -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. volatile uint8_t SystemGetFPS(void);