Skip to content

Commit

Permalink
fix tile collision viewer duplicating
Browse files Browse the repository at this point in the history
fix collision viewer duplicating when loading another scene in an already used tab
  • Loading branch information
Leonx254 committed Aug 21, 2024
1 parent 0f6a713 commit 99dfa11
Show file tree
Hide file tree
Showing 3 changed files with 24 additions and 23 deletions.
2 changes: 1 addition & 1 deletion RetroEDv2/tools/rsdkunpacker.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -106,11 +106,11 @@ RSDKUnpacker::RSDKUnpacker(QWidget *parent) : QWidget(parent), ui(new Ui::RSDKUn
});

connect(ui->selectDataFolder, &QPushButton::clicked, [this] {
ui->dataPackVer->setText("Loaded DataPack Version: None");
QFileDialog filedialog(this, tr("Open Datafolder"), "", tr("Folder"));
filedialog.setFileMode(QFileDialog::Directory);
filedialog.setAcceptMode(QFileDialog::AcceptOpen);
if (filedialog.exec() == QDialog::Accepted) {
ui->dataPackVer->setText("Loaded DataPack Version: None");
files.clear();
ui->fileList->blockSignals(true);
ui->fileList->clear();
Expand Down
41 changes: 21 additions & 20 deletions RetroEDv2/tools/sceneproperties/scenetileproperties.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -27,34 +27,35 @@ void SceneTileProperties::setupUI(ushort tid, QList<QImage> &tiles, SceneViewer

collisionLyr = 0;
selectedDrawTile = 0;
edit = new TileCollisionWidget();

gameType = engineVer;

if (gameType == ENGINE_v1){
setColMask(&viewer->tileconfigv1.collisionPaths[0][0], &viewer->tileconfigv1.collisionPaths[1][0]);
edit->cmaskv1 = cmaskv1[collisionLyr];
edit.cmaskv1 = cmaskv1[collisionLyr];
ui->AngleFrame->setDisabled(true);
}
else {
setColMask(&viewer->tileconfig.collisionPaths[0][0], &viewer->tileconfig.collisionPaths[1][0]);
edit->cmask = cmask[collisionLyr];
edit.cmask = cmask[collisionLyr];
ui->RSonicFrame->setDisabled(true);
}
edit->paintVer = gameType;
edit->tileImg = tileImg;
ui->tileFrame->layout()->addWidget(edit);
edit.paintVer = gameType;
edit.tileImg = tileImg;
ui->tileFrame->layout()->addWidget(&edit);

ui->colPlaneA->setChecked(true);


ui->tID->setText("Tile ID: " + QString::number(tid));

ui->tileList->blockSignals(true);
ui->tileList->clear();
for (int t = 0; t < tiles.count(); ++t) {
auto *item = new QListWidgetItem(QString::number(t), ui->tileList);
item->setIcon(QPixmap::fromImage(tiles[t]));
}
ui->tileList->blockSignals(false);

connect(ui->colPlaneA, &QRadioButton::toggled, [this] {
collisionLyr = 0;
Expand All @@ -66,21 +67,21 @@ void SceneTileProperties::setupUI(ushort tid, QList<QImage> &tiles, SceneViewer
ui->colPlaneB->setChecked(false);
if (gameType == ENGINE_v1){
ui->colMode->setCurrentIndex(cmaskv1[collisionLyr]->collisionMode);
edit->cmaskv1 = cmaskv1[collisionLyr];
edit.cmaskv1 = cmaskv1[collisionLyr];
} else {
ui->maskDir->setCurrentIndex(cmask[collisionLyr]->direction);
ui->behaviour->setValue(cmask[collisionLyr]->flags);
ui->floorAngle->setValue(cmask[collisionLyr]->floorAngle);
ui->roofAngle->setValue(cmask[collisionLyr]->roofAngle);
ui->lWallAngle->setValue(cmask[collisionLyr]->lWallAngle);
ui->rWallAngle->setValue(cmask[collisionLyr]->rWallAngle);
edit->cmask = cmask[collisionLyr];
edit.cmask = cmask[collisionLyr];
}

ui->AngleFrame->blockSignals(false);

ui->colPlaneB->blockSignals(false);
edit->update();
edit.update();
});

connect(ui->colPlaneB, &QRadioButton::toggled, [this] {
Expand All @@ -93,24 +94,24 @@ void SceneTileProperties::setupUI(ushort tid, QList<QImage> &tiles, SceneViewer
ui->colPlaneA->setChecked(false);
if (gameType == ENGINE_v1){
ui->colMode->setCurrentIndex(cmaskv1[collisionLyr]->collisionMode);
edit->cmaskv1 = cmaskv1[collisionLyr];
edit.cmaskv1 = cmaskv1[collisionLyr];
} else {
ui->maskDir->setCurrentIndex(cmask[collisionLyr]->direction);
ui->behaviour->setValue(cmask[collisionLyr]->flags);
ui->floorAngle->setValue(cmask[collisionLyr]->floorAngle);
ui->roofAngle->setValue(cmask[collisionLyr]->roofAngle);
ui->lWallAngle->setValue(cmask[collisionLyr]->lWallAngle);
ui->rWallAngle->setValue(cmask[collisionLyr]->rWallAngle);
edit->cmask = cmask[collisionLyr];
edit.cmask = cmask[collisionLyr];
}

ui->colPlaneA->blockSignals(false);
ui->AngleFrame->blockSignals(false);
edit->update();
edit.update();
});

connect(ui->maskDir, QOverload<int>::of(&QComboBox::currentIndexChanged),
[this](int i) { cmask[collisionLyr]->direction = i != 0; edit->update();});
[this](int i) { cmask[collisionLyr]->direction = i != 0; edit.update();});

connect(ui->behaviour, QOverload<int>::of(&QSpinBox::valueChanged),
[this](int v) { cmask[collisionLyr]->flags = (byte)v; });
Expand All @@ -129,9 +130,9 @@ void SceneTileProperties::setupUI(ushort tid, QList<QImage> &tiles, SceneViewer

// v1
connect(ui->colMode, QOverload<int>::of(&QComboBox::currentIndexChanged),
[this](int i) { cmaskv1[collisionLyr]->collisionMode = i; edit->update();});
[this](int i) { cmaskv1[collisionLyr]->collisionMode = i; edit.update();});
connect(ui->maskIndex, QOverload<int>::of(&QComboBox::currentIndexChanged),
[this](int i) { edit->maskIndex = i; edit->update();});
[this](int i) { edit.maskIndex = i; edit.update();});


connect(ui->editChunkCol, &QPushButton::clicked, [this, viewer] {
Expand Down Expand Up @@ -163,16 +164,16 @@ void SceneTileProperties::setupUI(ushort tid, QList<QImage> &tiles, SceneViewer
ui->tID->setText("Tile ID: " + QString::number(selectedDrawTile));
if (viewer->gameType != ENGINE_v1){
setColMask(&viewer->tileconfig.collisionPaths[0][selectedDrawTile],&viewer->tileconfig.collisionPaths[1][selectedDrawTile]);
edit->cmask = cmask[collisionLyr];
edit.cmask = cmask[collisionLyr];
} else {
setColMask(&viewer->tileconfigv1.collisionPaths[0][selectedDrawTile],&viewer->tileconfigv1.collisionPaths[1][selectedDrawTile]);
edit->cmaskv1 = cmaskv1[collisionLyr];
edit.cmaskv1 = cmaskv1[collisionLyr];
}
edit->tileImg = tiles[selectedDrawTile];
edit->update();
edit.tileImg = tiles[selectedDrawTile];
edit.update();
});

connect(edit, &TileCollisionWidget::UpdateW, [&]{
connect(&edit, &TileCollisionWidget::UpdateW, [&]{
if (gameType != ENGINE_v1)
emit updateChunkColTile(cmask[collisionLyr], selectedDrawTile, collisionLyr);
else
Expand Down
4 changes: 2 additions & 2 deletions RetroEDv2/tools/sceneproperties/scenetileproperties.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -65,10 +65,10 @@ public slots:
void UpdateW();
private:
Ui::SceneTileProperties *ui;
TileCollisionWidget *edit;
TileCollisionWidget edit;
QImage tileImg;
int collisionLyr = 0;
int selectedDrawTile = -1;
int selectedDrawTile = 0;
byte gameType = ENGINE_v4;

RSDKv5::TileConfig::CollisionMask *cmask[2] = { nullptr, nullptr };
Expand Down

0 comments on commit 99dfa11

Please sign in to comment.