aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorXavier ASUS <xavi92psx@gmail.com>2018-11-27 00:26:41 +0100
committerXavier ASUS <xavi92psx@gmail.com>2018-11-27 00:26:41 +0100
commit3de2130b6070bb9012d81e290fda452db42e069f (patch)
tree7158dd9eba7514824f5c85494fea7a967676f10a
parentf8f976763b4d272b4801f8b99eb542caa12fc3fe (diff)
TILE_TAXIWAY_CORNER_GRASS_3 added to accepted tiles list.
Building edition is now supported on MapEditor! LEVEL2.LVL now has some buildings laying around.
-rw-r--r--Bin/AIRPORT.binbin1728720 -> 1728720 bytes
-rw-r--r--Levels/LEVEL2.LVLbin576 -> 576 bytes
-rwxr-xr-xSource/Exe/AIRPORT.elfbin380096 -> 380004 bytes
-rw-r--r--Source/Exe/AIRPORT.isobin1505280 -> 1505280 bytes
-rw-r--r--Source/Game.c13
-rw-r--r--Source/MapEditor/buildings.ini6
-rw-r--r--Source/MapEditor/mainwindow.cpp121
-rw-r--r--Source/MapEditor/mainwindow.h6
-rw-r--r--Source/MapEditor/mainwindow.ui3
-rw-r--r--Source/MapEditor/mygraphicsscene.cpp10
-rw-r--r--Source/MapEditor/mygraphicsscene.h8
-rw-r--r--Source/MapEditor/settings.ini2
-rw-r--r--cdimg/DATA/LEVELS/LEVEL2.LVLbin576 -> 576 bytes
-rw-r--r--cdimg/DATA/LEVELS/LEVEL3.LVLbin576 -> 576 bytes
14 files changed, 100 insertions, 69 deletions
diff --git a/Bin/AIRPORT.bin b/Bin/AIRPORT.bin
index c02354b..011674c 100644
--- a/Bin/AIRPORT.bin
+++ b/Bin/AIRPORT.bin
Binary files differ
diff --git a/Levels/LEVEL2.LVL b/Levels/LEVEL2.LVL
index 34361d3..bf395cd 100644
--- a/Levels/LEVEL2.LVL
+++ b/Levels/LEVEL2.LVL
Binary files differ
diff --git a/Source/Exe/AIRPORT.elf b/Source/Exe/AIRPORT.elf
index ac15fd6..59d0f21 100755
--- a/Source/Exe/AIRPORT.elf
+++ b/Source/Exe/AIRPORT.elf
Binary files differ
diff --git a/Source/Exe/AIRPORT.iso b/Source/Exe/AIRPORT.iso
index 7d4ae09..685c0b1 100644
--- a/Source/Exe/AIRPORT.iso
+++ b/Source/Exe/AIRPORT.iso
Binary files differ
diff --git a/Source/Game.c b/Source/Game.c
index ecaff3a..f36b99e 100644
--- a/Source/Game.c
+++ b/Source/Game.c
@@ -1519,15 +1519,6 @@ static void GameLoadLevel(const char* path)
levelBuffer[k] |= (ptrBuffer[j] << 8);
}
}
-
- {
- size_t i;
-
- for (i = 0; i < (GameLevelSize * sizeof (uint16_t)); i++)
- {
- Serial_printf("levelBuffer[%d] = 0x%02X\n", i, levelBuffer[i]);
- }
- }
}
/* ******************************************************************************************
@@ -3308,7 +3299,8 @@ bool GamePathToTile(TYPE_PLAYER* const ptrPlayer, TYPE_FLIGHT_DATA* const ptrFli
TILE_TAXIWAY_4WAY_CROSSING,
TILE_PARKING_2,
TILE_RWY_HOLDING_POINT,
- TILE_RWY_HOLDING_POINT_2
+ TILE_RWY_HOLDING_POINT_2,
+ TILE_TAXIWAY_CORNER_GRASS_3
};
uint8_t i;
@@ -3452,6 +3444,7 @@ bool GamePathToTile(TYPE_PLAYER* const ptrPlayer, TYPE_FLIGHT_DATA* const ptrFli
TILE_PARKING_2 | TILE_MIRROR_FLAG,
TILE_RWY_HOLDING_POINT | TILE_MIRROR_FLAG,
TILE_RWY_HOLDING_POINT_2 | TILE_MIRROR_FLAG,
+ TILE_TAXIWAY_CORNER_GRASS_3 | TILE_MIRROR_FLAG
};
if (SystemContains_u8( levelBuffer[ptrPlayer->Waypoints[i]],
diff --git a/Source/MapEditor/buildings.ini b/Source/MapEditor/buildings.ini
index 5eb7823..96cbe79 100644
--- a/Source/MapEditor/buildings.ini
+++ b/Source/MapEditor/buildings.ini
@@ -2,3 +2,9 @@
path = "../../Sprites/BLDNGS1.bmp"
building0 = "Nothing"
building1 = "Hangar"
+building2 = "ILS"
+building3 = "ATC Tower"
+building4 = "ATC Localizer"
+building5 = "Terminal"
+building6 = "Terminal2"
+building7 = "Gate"
diff --git a/Source/MapEditor/mainwindow.cpp b/Source/MapEditor/mainwindow.cpp
index 923fca4..7282c6a 100644
--- a/Source/MapEditor/mainwindow.cpp
+++ b/Source/MapEditor/mainwindow.cpp
@@ -26,7 +26,7 @@ MainWindow::MainWindow(QWidget *parent) :
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(updateSelectedItem(Qt::MouseButton)), this, SLOT(onListItemSelected(Qt::MouseButton)));
// Configure keyboard shortcuts.
connect(&tileSet, SIGNAL(activated()), this, SLOT(onListItemSelected(void)));
@@ -39,6 +39,7 @@ MainWindow::MainWindow(QWidget *parent) :
MainWindow::~MainWindow()
{
+#if 0
foreach (QGraphicsTextItem* it, textItems)
{
if (it != nullptr)
@@ -46,6 +47,7 @@ MainWindow::~MainWindow()
delete it;
}
}
+#endif
}
void MainWindow::loadBuildingData(void)
@@ -89,14 +91,14 @@ void MainWindow::onShowNumbers(int)
processMapFile(map_buffer);
}
-void MainWindow::onMapItemClicked(QPointF pos)
+void MainWindow::onMapItemClicked(QPointF position)
{
QPoint realPos;
- pos.setX(pos.x() - (TILE_SIZE / 2));
+ position.setX(position.x() - (TILE_SIZE / 2));
- realPos.setX(static_cast<int>(pos.x() + (pos.y() * 2)));
- realPos.setY(static_cast<int>((pos.y() * 2) - pos.x()));
+ realPos.setX(static_cast<int>(position.x() + (position.y() * 2)));
+ realPos.setY(static_cast<int>((position.y() * 2) - position.x()));
int tile_no = 0;
@@ -114,30 +116,69 @@ void MainWindow::onMapItemClicked(QPointF pos)
}
}
-void MainWindow::onListItemSelected(void)
+void MainWindow::onListItemSelected(const Qt::MouseButton button)
{
- foreach (const QListWidgetItem* const it, ui.tileList->selectedItems())
+ QListWidget* listWidget;
+
+ switch (button)
{
- if (it != nullptr)
+ case Qt::LeftButton:
+ listWidget = ui.tileList;
+ break;
+
+ case Qt::RightButton:
+ listWidget = ui.buildingList;
+ break;
+
+ default:
+ listWidget = nullptr;
+ break;
+ }
+
+ if (listWidget != nullptr)
+ {
+ foreach (const QListWidgetItem* const it, listWidget->selectedItems())
{
- if (selected_item != -1)
+ if (it != nullptr)
{
- const int map_buffer_pos = static_cast<int>(DATA_HEADER_SIZE
+ if (selected_item != -1)
+ {
+ int map_buffer_pos;
+
+ // MSB: building data, LSB: terrain data.
+ switch (button)
+ {
+ case Qt::LeftButton:
+ map_buffer_pos = static_cast<int>(DATA_HEADER_SIZE
+ (static_cast<unsigned long>(selected_item + 1) * sizeof(quint16)));
- //map_buffer_pos++; // MSB: building data, LSB: terrain data.
+ break;
- if (map_buffer_pos < map_buffer.count())
- {
- const char row = static_cast<char>(ui.tileList->row(it));
+ case Qt::RightButton:
+ map_buffer_pos = static_cast<int>(DATA_HEADER_SIZE
+ + (static_cast<unsigned long>(selected_item + 1) * sizeof(quint16))) - 1;
+ break;
- map_buffer[map_buffer_pos] = row;
+ default:
+ map_buffer_pos = -1;
+ break;
+ }
- if (ui.mirror_CheckBox->isChecked() )
+ if (map_buffer_pos != -1)
{
- map_buffer[map_buffer_pos] = map_buffer[map_buffer_pos] | TILE_MIRROR_FLAG;
- }
+ if (map_buffer_pos < map_buffer.count())
+ {
+ const char row = static_cast<char>(listWidget->row(it));
+
+ map_buffer[map_buffer_pos] = row;
- processMapFile(map_buffer);
+ if (ui.mirror_CheckBox->isChecked() )
+ {
+ map_buffer[map_buffer_pos] = map_buffer[map_buffer_pos] | TILE_MIRROR_FLAG;
+ }
+
+ processMapFile(map_buffer);
+ }
+ }
}
}
}
@@ -317,12 +358,6 @@ void MainWindow::parseMapData(QDataStream& ds)
char byte[2];
ds.readRawData(byte, 2);
- qDebug() << "i = " + QString::number(i);
- qDebug() << "j = " + QString::number(j);
- qDebug() << QString::number(byte[0]);
- qDebug() << QString::number(byte[1]);
- qDebug() << "";
-
buildingData.append(static_cast<quint8>(byte[0]));
addTile(static_cast<quint8>(byte[1]), i, j);
}
@@ -489,7 +524,7 @@ void MainWindow::addBuilding(quint8 CurrentBuilding, const int i, const int j)
NODATA,
BUILDING_DATA(BUILDING_TERMINAL),
BUILDING_DATA(BUILDING_TERMINAL_2),
- BUILDING_DATA(BUILDING_GATE),
+ BUILDING_DATA(BUILDING_GATE)
};
enum
@@ -506,18 +541,20 @@ void MainWindow::addBuilding(quint8 CurrentBuilding, const int i, const int j)
// Determine rendering order depending on Y value.
const short x_bldg_offset = GameBuildingData[CurrentBuildingNoMirror].IsoPos.x;
const short y_bldg_offset = GameBuildingData[CurrentBuildingNoMirror].IsoPos.y;
- const short z_bldg_offset = GameBuildingData[CurrentBuildingNoMirror].IsoPos.z;
+ // Question: why is it needed to substract 16 to "z"?
+ const short z_bldg_offset = GameBuildingData[CurrentBuildingNoMirror].IsoPos.z - 16;
IsometricPos buildingIsoPos;
buildingIsoPos.x = static_cast<short>(i << TILE_SIZE_BIT_SHIFT) + x_bldg_offset;
- buildingIsoPos.y = static_cast<short>(j << TILE_SIZE_BIT_SHIFT) - y_bldg_offset;
+ // Question: why is it needed to substract 1 to "j"?
+ buildingIsoPos.y = static_cast<short>((j - 1) << TILE_SIZE_BIT_SHIFT) + y_bldg_offset;
buildingIsoPos.z = z_bldg_offset;
// Isometric -> Cartesian conversion
- CartesianPos buildingCartPos = isometricToCartesian(buildingIsoPos);
+ const CartesianPos buildingCartPos = isometricToCartesian(buildingIsoPos);
- QPixmap p = QPixmap(buildingPath);
+ const QPixmap p = QPixmap(buildingPath);
QImage cropped = p.copy(GameBuildingData[CurrentBuildingNoMirror].u,
GameBuildingData[CurrentBuildingNoMirror].v,
@@ -807,22 +844,20 @@ void MainWindow::loadTilesetData(void)
}
}
-void MainWindow::onAirportNameModified(QString name)
+void MainWindow::onAirportNameModified(const QString name)
{
- if (map_buffer.isEmpty() )
- {
- return;
- }
-
- for (int i = 0x04, j = 0; i < 0x1C; i++)
+ if (not map_buffer.isEmpty())
{
- if (j < name.count() )
+ for (int i = 0x04, j = 0; i < 0x1C; i++)
{
- map_buffer[i] = name.at(j++).toLatin1();
- }
- else
- {
- map_buffer[i] = '\0';
+ if (j < name.count())
+ {
+ map_buffer[i] = name.at(j++).toLatin1();
+ }
+ else
+ {
+ map_buffer[i] = '\0';
+ }
}
}
}
diff --git a/Source/MapEditor/mainwindow.h b/Source/MapEditor/mainwindow.h
index 6b27128..ea71e59 100644
--- a/Source/MapEditor/mainwindow.h
+++ b/Source/MapEditor/mainwindow.h
@@ -85,12 +85,12 @@ private slots:
void loadMap(void);
void onCreateMap(void);
void processMapFile(const QByteArray &);
- void onMapItemClicked(QPointF);
+ void onMapItemClicked(QPointF position);
void onNoItemSelected(void);
- void onListItemSelected(void);
+ void onListItemSelected(const Qt::MouseButton button);
void onSaveMap(void);
void onShowNumbers(int);
- void onAirportNameModified(QString);
+ void onAirportNameModified(const QString);
void showError(const QString& error);
void moveUp(void);
};
diff --git a/Source/MapEditor/mainwindow.ui b/Source/MapEditor/mainwindow.ui
index eb25f97..b860c69 100644
--- a/Source/MapEditor/mainwindow.ui
+++ b/Source/MapEditor/mainwindow.ui
@@ -76,9 +76,6 @@
<property name="text">
<string>Show numbers on map</string>
</property>
- <property name="checked">
- <bool>false</bool>
- </property>
</widget>
</item>
<item>
diff --git a/Source/MapEditor/mygraphicsscene.cpp b/Source/MapEditor/mygraphicsscene.cpp
index d0241ae..dcc7d1c 100644
--- a/Source/MapEditor/mygraphicsscene.cpp
+++ b/Source/MapEditor/mygraphicsscene.cpp
@@ -11,12 +11,12 @@ MyGraphicsScene::~MyGraphicsScene()
}
-void MyGraphicsScene::mousePressEvent(QGraphicsSceneMouseEvent *mouseEvent)
+void MyGraphicsScene::mousePressEvent(QGraphicsSceneMouseEvent* const mouseEvent)
{
- QGraphicsItem *it = this->itemAt(mouseEvent->scenePos(), QTransform());
+ const QGraphicsItem* const it = itemAt(mouseEvent->scenePos(), QTransform());
if (it != nullptr)
- {
+ {
emit positionClicked(mouseEvent->scenePos());
}
else
@@ -26,7 +26,7 @@ void MyGraphicsScene::mousePressEvent(QGraphicsSceneMouseEvent *mouseEvent)
}
}
-void MyGraphicsScene::mouseDoubleClickEvent(QGraphicsSceneMouseEvent *)
+void MyGraphicsScene::mouseDoubleClickEvent(QGraphicsSceneMouseEvent* const mouseEvent)
{
- emit updateSelectedItem();
+ emit updateSelectedItem(mouseEvent->button());
}
diff --git a/Source/MapEditor/mygraphicsscene.h b/Source/MapEditor/mygraphicsscene.h
index 90dadea..ea416e0 100644
--- a/Source/MapEditor/mygraphicsscene.h
+++ b/Source/MapEditor/mygraphicsscene.h
@@ -14,13 +14,13 @@ public:
~MyGraphicsScene();
signals:
- void positionClicked(QPointF);
+ void positionClicked(QPointF position);
void noItemSelected(void);
- void updateSelectedItem(void);
+ void updateSelectedItem(Qt::MouseButton button);
private:
- void mousePressEvent(QGraphicsSceneMouseEvent *mouseEvent);
- void mouseDoubleClickEvent(QGraphicsSceneMouseEvent *);
+ void mousePressEvent(QGraphicsSceneMouseEvent * const mouseEvent);
+ void mouseDoubleClickEvent(QGraphicsSceneMouseEvent * const mouseEvent);
};
diff --git a/Source/MapEditor/settings.ini b/Source/MapEditor/settings.ini
index 5ad5294..f1b65ed 100644
--- a/Source/MapEditor/settings.ini
+++ b/Source/MapEditor/settings.ini
@@ -1,3 +1,3 @@
[app_settings]
-last_dir=/home/xavier/Airport/Levels/LEVEL3.LVL
+last_dir=/home/xavier/Airport/Levels/LEVEL2.LVL
window_geometry=@ByteArray(\x1\xd9\xd0\xcb\0\x3\0\0\0\0\0\0\0\0\0\0\0\0\x5U\0\0\x2\xdb\0\0\0\xa5\0\0\0\x1d\0\0\x4<\0\0\x2\xa4\0\0\0\0\x2\0\0\0\x5V\0\0\0\0\0\0\0\x1d\0\0\x5U\0\0\x2\xdb)
diff --git a/cdimg/DATA/LEVELS/LEVEL2.LVL b/cdimg/DATA/LEVELS/LEVEL2.LVL
index 34361d3..bf395cd 100644
--- a/cdimg/DATA/LEVELS/LEVEL2.LVL
+++ b/cdimg/DATA/LEVELS/LEVEL2.LVL
Binary files differ
diff --git a/cdimg/DATA/LEVELS/LEVEL3.LVL b/cdimg/DATA/LEVELS/LEVEL3.LVL
index bd729fd..ec8a357 100644
--- a/cdimg/DATA/LEVELS/LEVEL3.LVL
+++ b/cdimg/DATA/LEVELS/LEVEL3.LVL
Binary files differ