aboutsummaryrefslogtreecommitdiff
path: root/Source/PltParser.c
diff options
context:
space:
mode:
Diffstat (limited to 'Source/PltParser.c')
-rw-r--r--Source/PltParser.c89
1 files changed, 83 insertions, 6 deletions
diff --git a/Source/PltParser.c b/Source/PltParser.c
index f88964c..61f066d 100644
--- a/Source/PltParser.c
+++ b/Source/PltParser.c
@@ -38,18 +38,18 @@ enum
/* *************************************
* Local Prototypes
* *************************************/
-static void PltParserResetBuffers(TYPE_FLIGHT_DATA * ptrFlightData);
+static void PltParserResetBuffers(TYPE_FLIGHT_DATA* ptrFlightData);
-bool PltParserLoadFile(char * strPath, TYPE_FLIGHT_DATA * ptrFlightData)
+bool PltParserLoadFile(char* strPath, TYPE_FLIGHT_DATA* ptrFlightData)
{
uint8_t i;
uint8_t j;
uint8_t aircraftIndex;
bool first_line_read = false;
- char * buffer;
+ char* buffer;
char lineBuffer[LINE_MAX_CHARACTERS];
- char * lineBufferPtr;
- char * pltBufferSavePtr;
+ char* lineBufferPtr;
+ char* pltBufferSavePtr;
char strHour[PLT_HOUR_MINUTE_CHARACTERS];
char strMinutes[PLT_HOUR_MINUTE_CHARACTERS];
uint8_t* strPltBuffer;
@@ -239,7 +239,7 @@ bool PltParserLoadFile(char * strPath, TYPE_FLIGHT_DATA * ptrFlightData)
return true;
}
-void PltParserResetBuffers(TYPE_FLIGHT_DATA * ptrFlightData)
+void PltParserResetBuffers(TYPE_FLIGHT_DATA* ptrFlightData)
{
uint8_t i;
@@ -257,3 +257,80 @@ void PltParserResetBuffers(TYPE_FLIGHT_DATA * ptrFlightData)
memset(ptrFlightData->Parking,0,GAME_MAX_AIRCRAFT);
memset(ptrFlightData->Finished,0,GAME_MAX_AIRCRAFT);
}
+
+uint8_t* PltParserGenerateFile(TYPE_PLT_CONFIG* ptrPltConfig)
+{
+ enum
+ {
+ MIN_AIRCRAFT_TIMELAPSE_MIN_SECONDS_EASY = 30,
+ MIN_AIRCRAFT_TIMELAPSE_MAX_SECONDS_EASY = 45,
+ MIN_AIRCRAFT_TIMELAPSE_MIN_SECONDS_MEDIUM = 20,
+ MIN_AIRCRAFT_TIMELAPSE_MAX_SECONDS_MEDIUM = 30,
+ MIN_AIRCRAFT_TIMELAPSE_MIN_SECONDS_HARD = 10,
+ MIN_AIRCRAFT_TIMELAPSE_MAX_SECONDS_HARD = 20,
+ };
+
+ enum
+ {
+ MIN_AIRCRAFT_EASY = 5,
+ MAX_AIRCRAFT_EASY = 10,
+ MIN_AIRCRAFT_MEDIUM = 10,
+ MAX_AIRCRAFT_MEDIUM = GAME_MAX_AIRCRAFT >> 1,
+ MIN_AIRCRAFT_HARD = 20,
+ MAX_AIRCRAFT_HARD = GAME_MAX_AIRCRAFT,
+ };
+
+ typedef enum t_Hour
+ {
+ MIN_HOUR = 0,
+ MAX_HOUR = 23
+ }TYPE_HOUR;
+
+ typedef enum t_Minute
+ {
+ MIN_MINUTE = 0,
+ MAX_MINUTE = 59
+ }TYPE_MINUTE;
+
+ uint8_t* PltBuffer = SystemGetBufferAddress();
+ uint8_t minAircraftTime;
+ uint8_t maxAircraftTime;
+ uint8_t nAircraft;
+ uint8_t i;
+ TYPE_HOUR InitialHour;
+ TYPE_MINUTE InitialMinutes;
+ char auxBuffer[32] = {0};
+
+ switch(ptrPltConfig->Level)
+ {
+ case LEVEL_DIFFICULTY_EASY:
+ minAircraftTime = MIN_AIRCRAFT_TIMELAPSE_MIN_SECONDS_EASY;
+ maxAircraftTime = MIN_AIRCRAFT_TIMELAPSE_MAX_SECONDS_EASY;
+ nAircraft = SystemRand(MIN_AIRCRAFT_EASY, MAX_AIRCRAFT_EASY);
+ break;
+
+ case LEVEL_DIFFICULTY_MEDIUM:
+ minAircraftTime = MIN_AIRCRAFT_TIMELAPSE_MIN_SECONDS_MEDIUM;
+ maxAircraftTime = MIN_AIRCRAFT_TIMELAPSE_MAX_SECONDS_MEDIUM;
+ nAircraft = SystemRand(MIN_AIRCRAFT_MEDIUM, MAX_AIRCRAFT_MEDIUM);
+ break;
+
+ case LEVEL_DIFFICULTY_HARD:
+ minAircraftTime = MIN_AIRCRAFT_TIMELAPSE_MIN_SECONDS_HARD;
+ maxAircraftTime = MIN_AIRCRAFT_TIMELAPSE_MAX_SECONDS_HARD;
+ nAircraft = SystemRand(MIN_AIRCRAFT_HARD, MAX_AIRCRAFT_HARD);
+ break;
+ }
+
+ SystemClearBuffer();
+
+ // At this point, PltBuffer is filled with zeros. Start generating PLT file.
+
+ InitialHour = SystemRand(MIN_HOUR, MAX_HOUR);
+
+ InitialMinutes = SystemRand(MIN_MINUTE, MAX_MINUTE);
+
+ snprintf(auxBuffer, 32, "%d:%d\n", InitialHour, InitialMinutes);
+
+ return PltBuffer;
+}