diff --git a/Bin/AIRPORT.bin b/Bin/AIRPORT.bin index 147a91e..0c5a18c 100644 Binary files a/Bin/AIRPORT.bin and b/Bin/AIRPORT.bin differ diff --git a/Levels/LEVEL3.LVL b/Levels/LEVEL3.LVL new file mode 100644 index 0000000..dffa05e Binary files /dev/null and b/Levels/LEVEL3.LVL differ diff --git a/Levels/LEVEL3.PLT b/Levels/LEVEL3.PLT new file mode 100644 index 0000000..b15dbde --- /dev/null +++ b/Levels/LEVEL3.PLT @@ -0,0 +1,17 @@ +#DEPARTURE/ARRIVAL;Flight number;Passengers;HH:MM;Parking (departure only);Remaining time +#This is a comment example. +#If DEPARTURE, parking must be set +#If ARRIVAL, set parking to zero +#First line must set initial time +#For example: +14:55 +#Aircraft arrival (or departure) must be set relative to initial time, in HH:MM format. +ARRIVAL;PHX1802;100;00:10;0;360 +ARRIVAL;PHX1805;125;00:10;0;360 +ARRIVAL;PHX1806;125;00:30;0;360 +ARRIVAL;PHX1807;125;00:50;0;360 +ARRIVAL;PHX1808;125;01:30;0;360 +DEPARTURE;PHX1000;53;00:05;152;360 +DEPARTURE;PHX1001;53;00:15;153;360 +DEPARTURE;PHX1002;53;00:30;154;360 +DEPARTURE;PHX1003;53;00:45;155;360 diff --git a/Source/Aircraft.c b/Source/Aircraft.c index f2727a4..211f57e 100644 --- a/Source/Aircraft.c +++ b/Source/Aircraft.c @@ -58,20 +58,17 @@ static TYPE_CARTESIAN_POS AircraftCenterPos; static char* AircraftLiveryNamesTable[] = {"PHX", NULL}; static AIRCRAFT_LIVERY AircraftLiveryTable[] = {AIRCRAFT_LIVERY_0, AIRCRAFT_LIVERY_UNKNOWN}; -static const char* GameFileList[] = { "DATA\\SPRITES\\UDNARROW.TIM", - "DATA\\SPRITES\\LFRARROW.TIM" }; - -static void* GameFileDest[] = { (GsSprite*)&UpDownArrowSpr, - (GsSprite*)&LeftRightArrowSpr }; - // Used to quickly link FlightData indexes against AircraftData indexes. static uint8_t flightDataIdxTable[GAME_MAX_AIRCRAFT]; -static const fix16_t AircraftSpeedsTable[] = { [AIRCRAFT_SPEED_IDLE] = 0, - [AIRCRAFT_SPEED_GROUND] = 0x9999, - [AIRCRAFT_SPEED_TAKEOFF] = 0x20000, - [AIRCRAFT_SPEED_FINAL] = 0x10000, - [AIRCRAFT_SPEED_FINAL_Z] = 0x4000 }; +static const fix16_t AircraftSpeedsTable[] = +{ + [AIRCRAFT_SPEED_IDLE] = 0, + [AIRCRAFT_SPEED_GROUND] = 0x9999, + [AIRCRAFT_SPEED_TAKEOFF] = 0x20000, + [AIRCRAFT_SPEED_FINAL] = 0x10000, + [AIRCRAFT_SPEED_FINAL_Z] = 0x3000 +}; /* ************************************* * Local prototypes @@ -115,12 +112,21 @@ void AircraftInit(void) if (initialised == false) { + static const char* const GameFileList[] = + { + "DATA\\SPRITES\\UDNARROW.TIM", + "DATA\\SPRITES\\LFRARROW.TIM" + }; + + static void* const GameFileDest[] = + { + &UpDownArrowSpr, + &LeftRightArrowSpr + }; + initialised = true; - LoadMenu( GameFileList, - GameFileDest, - sizeof (GameFileList) / sizeof (GameFileList[0]), - sizeof (GameFileDest) / sizeof (GameFileDest[0]) ); + LOAD_FILES(GameFileList, GameFileDest); } } @@ -157,7 +163,7 @@ bool AircraftAddNew( TYPE_FLIGHT_DATA* const ptrFlightData, ptrAircraft->IsoPos.y = fix16_from_int(ptrAircraft->IsoPos.y); ptrAircraft->IsoPos.z = targets[0] % level_columns; - ptrAircraft->IsoPos.z <<= TILE_SIZE_BIT_SHIFT - 1; + ptrAircraft->IsoPos.z <<= TILE_SIZE_BIT_SHIFT - 2; ptrAircraft->IsoPos.z = fix16_from_int(ptrAircraft->IsoPos.z); break; @@ -170,7 +176,7 @@ bool AircraftAddNew( TYPE_FLIGHT_DATA* const ptrFlightData, ptrAircraft->IsoPos.y = 0; ptrAircraft->IsoPos.z = targets[0] / level_columns; - ptrAircraft->IsoPos.z <<= TILE_SIZE_BIT_SHIFT - 1; + ptrAircraft->IsoPos.z <<= TILE_SIZE_BIT_SHIFT - 2; ptrAircraft->IsoPos.z = fix16_from_int(ptrAircraft->IsoPos.z); break; diff --git a/Source/Airport.geany b/Source/Airport.geany index 7bf7129..bed0171 100644 --- a/Source/Airport.geany +++ b/Source/Airport.geany @@ -28,34 +28,34 @@ long_line_behaviour=1 long_line_column=120 [files] -current_page=41 -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 +current_page=4 +FILE_NAME_0=6076;C;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FAirport%2FSource%2FAircraft.c;0;4 +FILE_NAME_1=266;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=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_4=108515;C;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FAirport%2FSource%2FGame.c;0;4 +FILE_NAME_5=20231;C;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FAirport%2FSource%2FGameGui.c;0;4 +FILE_NAME_6=18939;C;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FAirport%2FSource%2FGfx.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 -FILE_NAME_11=22534;C;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FAirport%2FSource%2FMenu.c;0;4 +FILE_NAME_11=3987;C;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FAirport%2FSource%2FMenu.c;0;4 FILE_NAME_12=1486;C;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FAirport%2FSource%2FMessage.c;0;4 -FILE_NAME_13=9847;C;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FAirport%2FSource%2FPad.c;0;4 +FILE_NAME_13=7435;C;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FAirport%2FSource%2FPad.c;0;4 FILE_NAME_14=10669;C;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FAirport%2FSource%2FPltParser.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_17=1221;C;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FAirport%2FSource%2FSfx.c;0;4 -FILE_NAME_18=22173;C;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FAirport%2FSource%2FSystem.c;0;4 +FILE_NAME_18=23798;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=714;C++;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FAirport%2FSource%2FAircraft.h;0;4 +FILE_NAME_20=451;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=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_25=413;C++;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FAirport%2FSource%2FGame.h;0;4 +FILE_NAME_26=3831;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=273;C++;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FAirport%2FSource%2FLoadMenu.h;0;4 @@ -68,9 +68,10 @@ FILE_NAME_35=548;C++;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FAirport%2FSource%2FPltPar FILE_NAME_36=684;C++;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FAirport%2FSource%2FPSXSDKIntro.h;0;4 FILE_NAME_37=752;C++;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FAirport%2FSource%2FSerial.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=3384;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=3393;Make;0;EUTF-8;1;1;0;%2Fhome%2Fxavier%2FAirport%2FSource%2FMakefile;0;4 +FILE_NAME_41=2364;Make;0;EUTF-8;1;1;0;%2Fhome%2Fxavier%2FAirport%2FSource%2FMakefile;0;4 +FILE_NAME_42=623;None;0;EUTF-8;0;1;0;%2Fhome%2Fxavier%2FAirport%2FLevels%2FLEVEL3.PLT;0;4 [VTE] last_dir=/home/xavier/Airport/Bin diff --git a/Source/Exe/AIRPORT.elf b/Source/Exe/AIRPORT.elf index bbb1129..405858e 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 c8b77bf..003f98b 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 4a04a1b..26bfb21 100644 --- a/Source/Game.c +++ b/Source/Game.c @@ -247,34 +247,6 @@ static SsVag BeepSnd; // Instances for player-specific data static TYPE_PLAYER PlayerData[MAX_PLAYERS]; -static const char* const GameFileList[] = -{ - "DATA\\SPRITES\\TILESET1.TIM", - "DATA\\SPRITES\\GAMEPLN.TIM", - "DATA\\SPRITES\\PLNBLUE.CLT", - "DATA\\SPRITES\\MOUSE.TIM", - "DATA\\SPRITES\\BLDNGS1.TIM", - "DATA\\SOUNDS\\RCPW1A1.VAG", - "DATA\\SOUNDS\\RCPM1A1.VAG", - "DATA\\SOUNDS\\RCTM1F1.VAG", - "DATA\\SOUNDS\\TAKEOFF1.VAG", - "DATA\\SOUNDS\\BEEP.VAG" -}; - -static void* GameFileDest[] = -{ - &GameTilesetSpr, - &GamePlaneSpr, - NULL, // CLT files must use NULL pointers - &GameMouseSpr, - &GameBuildingSpr, - &ApproachSnds[SOUND_M1_INDEX], - &ApproachSnds[SOUND_W1_INDEX], - &TowerFinalSnds[SOUND_M1_INDEX], - &TakeoffSnd, - &BeepSnd -}; - static void* GamePltDest[] = {(TYPE_FLIGHT_DATA*)&FlightData }; static uint16_t levelBuffer[GAME_MAX_MAP_SIZE]; @@ -433,6 +405,34 @@ static bool GamePause(void) * ***************************************************************************************/ void GameInit(const TYPE_GAME_CONFIGURATION* const pGameCfg) { + static const char* const GameFileList[] = + { + "DATA\\SPRITES\\TILESET1.TIM", + "DATA\\SPRITES\\GAMEPLN.TIM", + "DATA\\SPRITES\\PLNBLUE.CLT", + "DATA\\SPRITES\\MOUSE.TIM", + "DATA\\SPRITES\\BLDNGS1.TIM", + "DATA\\SOUNDS\\RCPW1A1.VAG", + "DATA\\SOUNDS\\RCPM1A1.VAG", + "DATA\\SOUNDS\\RCTM1F1.VAG", + "DATA\\SOUNDS\\TAKEOFF1.VAG", + "DATA\\SOUNDS\\BEEP.VAG" + }; + + static void* GameFileDest[] = + { + &GameTilesetSpr, + &GamePlaneSpr, + NULL, // CLT files must use NULL pointers + &GameMouseSpr, + &GameBuildingSpr, + &ApproachSnds[SOUND_M1_INDEX], + &ApproachSnds[SOUND_W1_INDEX], + &TowerFinalSnds[SOUND_M1_INDEX], + &TakeoffSnd, + &BeepSnd + }; + uint8_t i; uint32_t track; static bool loaded; @@ -1409,7 +1409,7 @@ static void GameLoadLevel(const char* path) if (strncmp(LevelHeader,LEVEL_MAGIC_NUMBER_STRING,LEVEL_MAGIC_NUMBER_SIZE) != 0) { - Serial_printf("Invalid level header! Read \"%s\" instead of \"ATC\"\n",LevelHeader); + Serial_printf("Invalid level header! Read \"%s\" instead of " LEVEL_MAGIC_NUMBER_STRING "\n", LevelHeader); return; } @@ -3177,6 +3177,7 @@ bool GamePathToTile(TYPE_PLAYER* const ptrPlayer, TYPE_FLIGHT_DATA* const ptrFli TILE_PARKING, TILE_RWY_MID, TILE_RWY_EXIT, + TILE_RWY_EXIT_2, TILE_TAXIWAY_CORNER_GRASS, TILE_TAXIWAY_CORNER_GRASS_2, TILE_TAXIWAY_GRASS, @@ -3315,6 +3316,7 @@ bool GamePathToTile(TYPE_PLAYER* const ptrPlayer, TYPE_FLIGHT_DATA* const ptrFli TILE_PARKING | TILE_MIRROR_FLAG, TILE_RWY_MID | TILE_MIRROR_FLAG, TILE_RWY_EXIT | TILE_MIRROR_FLAG, + TILE_RWY_EXIT_2 | TILE_MIRROR_FLAG, TILE_TAXIWAY_CORNER_GRASS | TILE_MIRROR_FLAG, TILE_TAXIWAY_CORNER_GRASS_2 | TILE_MIRROR_FLAG, TILE_TAXIWAY_GRASS | TILE_MIRROR_FLAG, diff --git a/Source/Makefile b/Source/Makefile index 6704bc7..84f0f2b 100644 --- a/Source/Makefile +++ b/Source/Makefile @@ -79,7 +79,15 @@ SOUND_OBJECTS = $(addprefix $(OBJ_SOUNDS_DIR)/, BELL.VAG \ # Level objects: SRC_LEVELS_DIR = $(PROJECT_DIR)/Levels OBJ_LEVELS_DIR = $(CDROM_ROOT)/DATA/LEVELS -LEVEL_OBJECTS = $(addprefix $(OBJ_LEVELS_DIR)/, LEVEL1.LVL LEVEL2.LVL LEVEL2.PLT LEVEL1.PLT EASY.PLT TUTORIA1.PLT) +LEVEL_OBJECTS = $(addprefix $(OBJ_LEVELS_DIR)/, \ + LEVEL1.LVL \ + LEVEL2.LVL \ + LEVEL3.LVL \ + LEVEL1.PLT \ + LEVEL2.PLT \ + LEVEL3.PLT \ + EASY.PLT \ + TUTORIA1.PLT) # Sprite objects: BMP2TIM = bmp2tim diff --git a/Source/MapEditor/mainwindow.cpp b/Source/MapEditor/mainwindow.cpp index 2509c49..3758925 100644 --- a/Source/MapEditor/mainwindow.cpp +++ b/Source/MapEditor/mainwindow.cpp @@ -4,13 +4,16 @@ #include #include #include +#include #define DEFAULT_AIRPORT_NAME QByteArray("Default Airport\0") MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), level_size(0), - selected_item(-1) + selected_item(-1), + tileSet(tr("Space"), this), + tileMoveUp(tr("Up"), this) { ui.setupUi(this); this->setWindowTitle(APP_FULL_NAME); @@ -21,9 +24,13 @@ MainWindow::MainWindow(QWidget *parent) : connect(ui.showNumbers_Checkbox, SIGNAL(stateChanged(int)), this, SLOT(onShowNumbers(int))); connect(ui.airportName_Label, SIGNAL(textChanged(QString)), this, SLOT(onAirportNameModified(QString))); - connect(&gscene, SIGNAL(positionClicked(QPointF)), this, SLOT(onMapItemClicked(QPointF))); - connect(&gscene, SIGNAL(noItemSelected(void)), this, SLOT(onNoItemSelected(void))); - connect(&gscene, SIGNAL(updateSelectedItem(void)), this, SLOT(onListItemSelected(void))); + connect(&gscene, SIGNAL(positionClicked(QPointF)), this, SLOT(onMapItemClicked(QPointF))); + connect(&gscene, SIGNAL(noItemSelected(void)), this, SLOT(onNoItemSelected(void))); + connect(&gscene, SIGNAL(updateSelectedItem(void)), this, SLOT(onListItemSelected(void))); + + // Configure keyboard shortcuts. + connect(&tileSet, SIGNAL(activated()), this, SLOT(onListItemSelected(void))); + connect(&tileMoveUp, SIGNAL(activated(void)), this, SLOT(moveUp(void))); appSettings(); loadTilesetData(); @@ -34,7 +41,10 @@ MainWindow::~MainWindow() { foreach (QGraphicsTextItem* it, textItems) { - delete it; + if (it != nullptr) + { + delete it; + } } } @@ -477,6 +487,11 @@ void MainWindow::onAirportNameModified(QString name) } } +void MainWindow::moveUp(void) +{ + +} + void MainWindow::showError(const QString& error) { QMessageBox::critical(this, APP_FULL_NAME, error); diff --git a/Source/MapEditor/mainwindow.h b/Source/MapEditor/mainwindow.h index 5d4cfe5..40963c9 100644 --- a/Source/MapEditor/mainwindow.h +++ b/Source/MapEditor/mainwindow.h @@ -6,6 +6,7 @@ #include #include #include +#include #include "mygraphicsscene.h" #include "ui_mainwindow.h" @@ -46,6 +47,8 @@ private: int selected_item; QHash tilesetData; QList textItems; + QShortcut tileSet; + QShortcut tileMoveUp; private slots: void loadMap(void); @@ -58,6 +61,7 @@ private slots: void onShowNumbers(int); void onAirportNameModified(QString); void showError(const QString& error); + void moveUp(void); }; #endif // MAINWINDOW_H diff --git a/Source/MapEditor/mainwindow.ui b/Source/MapEditor/mainwindow.ui index bb88a34..eb25f97 100644 --- a/Source/MapEditor/mainwindow.ui +++ b/Source/MapEditor/mainwindow.ui @@ -77,7 +77,7 @@ Show numbers on map - true + false diff --git a/Source/Menu.c b/Source/Menu.c index 8ade191..74802c4 100644 --- a/Source/Menu.c +++ b/Source/Menu.c @@ -31,6 +31,7 @@ typedef enum t_levelId { LEVEL1 = 0, LEVEL2, + LEVEL3, MAX_LEVELS }LEVEL_ID; @@ -154,17 +155,32 @@ static bool isLevelSelected; static const char* MainMenuLevelList[] = { [LEVEL1] = "DATA\\LEVELS\\LEVEL1.LVL", - [LEVEL2] = "DATA\\LEVELS\\LEVEL2.LVL" + [LEVEL2] = "DATA\\LEVELS\\LEVEL2.LVL", + [LEVEL3] = "DATA\\LEVELS\\LEVEL3.LVL" }; -static const char* MainMenuLevel1Plt[] = { "DATA\\LEVELS\\TUTORIA1.PLT", - "DATA\\LEVELS\\LEVEL1.PLT", - "DATA\\LEVELS\\EASY.PLT", - NULL}; +static const char** MainMenuPltList[] = +{ + [LEVEL1] = (const char*[]) + { + "DATA\\LEVELS\\TUTORIA1.PLT", + "DATA\\LEVELS\\LEVEL1.PLT", + "DATA\\LEVELS\\EASY.PLT", + NULL + }, -static const char* MainMenuLevel2Plt[] = {"DATA\\LEVELS\\LEVEL2.PLT", NULL}; + [LEVEL2] = (const char*[]) + { + "DATA\\LEVELS\\LEVEL2.PLT", + NULL + }, -static const char** MainMenuPltList[] = {[LEVEL1] = MainMenuLevel1Plt, [LEVEL2] = MainMenuLevel2Plt}; + [LEVEL3] = (const char*[]) + { + "DATA\\LEVELS\\LEVEL3.PLT", + NULL + } +}; static TYPE_GAME_CONFIGURATION GameCfg; diff --git a/cdimg/DATA/LEVELS/LEVEL3.LVL b/cdimg/DATA/LEVELS/LEVEL3.LVL new file mode 100644 index 0000000..dffa05e Binary files /dev/null and b/cdimg/DATA/LEVELS/LEVEL3.LVL differ diff --git a/cdimg/DATA/LEVELS/LEVEL3.PLT b/cdimg/DATA/LEVELS/LEVEL3.PLT new file mode 100644 index 0000000..b15dbde --- /dev/null +++ b/cdimg/DATA/LEVELS/LEVEL3.PLT @@ -0,0 +1,17 @@ +#DEPARTURE/ARRIVAL;Flight number;Passengers;HH:MM;Parking (departure only);Remaining time +#This is a comment example. +#If DEPARTURE, parking must be set +#If ARRIVAL, set parking to zero +#First line must set initial time +#For example: +14:55 +#Aircraft arrival (or departure) must be set relative to initial time, in HH:MM format. +ARRIVAL;PHX1802;100;00:10;0;360 +ARRIVAL;PHX1805;125;00:10;0;360 +ARRIVAL;PHX1806;125;00:30;0;360 +ARRIVAL;PHX1807;125;00:50;0;360 +ARRIVAL;PHX1808;125;01:30;0;360 +DEPARTURE;PHX1000;53;00:05;152;360 +DEPARTURE;PHX1001;53;00:15;153;360 +DEPARTURE;PHX1002;53;00:30;154;360 +DEPARTURE;PHX1003;53;00:45;155;360 diff --git a/cdimg/DATA/SPRITES/CITYBG1.TIM b/cdimg/DATA/SPRITES/CITYBG1.TIM deleted file mode 100644 index c02b371..0000000 Binary files a/cdimg/DATA/SPRITES/CITYBG1.TIM and /dev/null differ