last changes

This commit is contained in:
2020-06-15 22:22:46 +03:00
parent 5f405ca403
commit 259f321df4
53 changed files with 3368 additions and 842 deletions

View File

@@ -6,8 +6,8 @@
#include <QSettings>
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
ui->pbSave->setIcon(QIcon::fromTheme("document-save", QIcon(":/icons/icons/document-save.png")));
@@ -24,6 +24,8 @@ MainWindow::MainWindow(QWidget *parent) :
ui->pbSlpDel->setIcon(QIcon::fromTheme("list-remove", QIcon(":/icons/icons/list-remove.png")));
ui->pbAnimAdd->setIcon(QIcon::fromTheme("list-add", QIcon(":/icons/icons/list-add.png")));
ui->pbAnimDel->setIcon(QIcon::fromTheme("list-remove", QIcon(":/icons/icons/list-remove.png")));
ui->pbWaveAdd->setIcon(QIcon::fromTheme("list-add", QIcon(":/icons/icons/list-add.png")));
ui->pbWaveDel->setIcon(QIcon::fromTheme("list-remove", QIcon(":/icons/icons/list-remove.png")));
ui->pbImgAdd->setIcon(QIcon::fromTheme("list-add", QIcon(":/icons/icons/list-add.png")));
ui->pbImgDel->setIcon(QIcon::fromTheme("list-remove", QIcon(":/icons/icons/list-remove.png")));
ui->pbTwSplashEdit->setIcon(QIcon::fromTheme("edit", QIcon(":/icons/icons/edit.png")));
@@ -31,6 +33,15 @@ MainWindow::MainWindow(QWidget *parent) :
adloader = new Loader();
adloader->load("data2.xml");
wavePartModel = new WavePartModel(adloader->waves);
waveModel = new WaveModel(adloader->waves);
// waveModel->setCurrentWave(0);
connect(waveModel,SIGNAL(needUpdateIndex()),wavePartModel,SLOT(updateIndex()));
ui->tableWaves->setModel((QAbstractItemModel * )waveModel);
ui->tableWaveParts->setModel((QAbstractItemModel * )wavePartModel);
connect(ui->tableWaves->selectionModel(),SIGNAL(currentRowChanged(QModelIndex,QModelIndex)),wavePartModel,SLOT(setCurrentWave(QModelIndex,QModelIndex)));
connect(ui->tableWaveParts->selectionModel(),SIGNAL(currentRowChanged(QModelIndex,QModelIndex)),this,SLOT(tbWavePartSelect(QModelIndex,QModelIndex)));
animModel = new AnimationModel(adloader->animations);
ui->lvAnimations->setModel((QAbstractItemModel * )animModel);
connect(ui->lvAnimations->selectionModel(),SIGNAL(currentChanged(QModelIndex,QModelIndex)),this,SLOT(lvAnimations_select(QModelIndex, QModelIndex)));
@@ -48,6 +59,7 @@ MainWindow::MainWindow(QWidget *parent) :
alModel = new AlienModel(adloader->aliens.values());
ui->lvAliens->setModel((QAbstractItemModel * )alModel);
ui->cbAlImage->setModel((QAbstractItemModel * )animModel);
ui->lvWaveAliens->setModel((QAbstractItemModel * )alModel);
connect(ui->lvAliens->selectionModel(),SIGNAL(currentChanged(QModelIndex, QModelIndex)),this,SLOT(lvAliens_select(QModelIndex, QModelIndex)));
ui->lvAliens->selectionModel()->setCurrentIndex(ui->lvAliens->model()->index(0,0),QItemSelectionModel::ClearAndSelect);
@@ -246,45 +258,46 @@ void MainWindow::lvSplashes_select(QModelIndex index, QModelIndex)
ui->leSplName->setText(spl.name);
ui->cbSplImage->setCurrentIndex(adloader->animations.keys().indexOf(spl.imgType));
ui->lbSplAnim->setAnimation(adloader->animations.value(spl.imgType).pathes);
ui->sbSplZValue->setValue(spl.ZValue);
switch (spl.compositionMode)
{
case QPainter::RasterOp_NotSource :
ui->cbSplCompisitionMode->setCurrentIndex(1);
break;
break;
case QPainter::CompositionMode_Plus :
ui->cbSplCompisitionMode->setCurrentIndex(2);
break;
break;
case QPainter::CompositionMode_Multiply :
ui->cbSplCompisitionMode->setCurrentIndex(3);
break;
break;
case QPainter::CompositionMode_Screen :
ui->cbSplCompisitionMode->setCurrentIndex(4);
break;
break;
case QPainter::CompositionMode_Darken :
ui->cbSplCompisitionMode->setCurrentIndex(5);
break;
break;
case QPainter::CompositionMode_Lighten :
ui->cbSplCompisitionMode->setCurrentIndex(6);
break;
break;
case QPainter::CompositionMode_ColorDodge :
ui->cbSplCompisitionMode->setCurrentIndex(7);
break;
break;
case QPainter::CompositionMode_ColorBurn :
ui->cbSplCompisitionMode->setCurrentIndex(8);
break;
break;
case QPainter::CompositionMode_HardLight :
ui->cbSplCompisitionMode->setCurrentIndex(9);
break;
break;
case QPainter::CompositionMode_SoftLight :
ui->cbSplCompisitionMode->setCurrentIndex(10);
break;
break;
case QPainter::CompositionMode_Difference :
ui->cbSplCompisitionMode->setCurrentIndex(11);
break;
break;
case QPainter::CompositionMode_SourceOver :
default:
ui->cbSplCompisitionMode->setCurrentIndex(0);
break;
break;
}
}
}
@@ -423,7 +436,7 @@ void MainWindow::on_pbReload_clicked()
twModel->refresh(adloader->towers.values());
splModel->refresh(adloader->splashes.values());
trigModel->refresh(adloader->triggers.values());
// animModel->refresh(adloader->animations.values());
// animModel->refresh(adloader->animations.values());
mapModel->refresh(adloader->maps.values());
ui->lvAnimations->reset();
ui->lvAnimations->selectionModel()->setCurrentIndex(ui->lvAnimations->model()->index(0,0),QItemSelectionModel::ClearAndSelect);
@@ -543,15 +556,18 @@ void MainWindow::on_pbAlDel_clicked()
if (adloader->aliens.size() < 2) return;
QMessageBox msgBox;
int id = adloader->aliens.keys().at(ui->lvAliens->currentIndex().row());
for (int i=0; i<adloader->waveParts.size(); i++)
for (int i=0; i<adloader->waves.size(); i++)
{
if (adloader->waveParts.values().at(i).alienId == id)
for (int j=0; j<adloader->waves[i].parts.size(); j++)
{
msgBox.setText(tr("You can not delete alien %1 id=%2").arg(adloader->aliens.value(id).name).arg(id));
msgBox.setInformativeText(tr("It used in wawe %1").arg(adloader->waveParts.values().at(i).waveId));
msgBox.setStandardButtons(QMessageBox::Ok);
msgBox.exec();
return;
if (adloader->waves[i].parts[j].alienId == id)
{
msgBox.setText(tr("You can not delete alien %1 id=%2").arg(adloader->aliens.value(id).name).arg(id));
msgBox.setInformativeText(tr("It used in wawe %1").arg(adloader->waves[i].id));
msgBox.setStandardButtons(QMessageBox::Ok);
msgBox.exec();
return;
}
}
}
msgBox.setText(tr("Delete alien %1 id=%2").arg(adloader->aliens.value(id).name).arg(id));
@@ -823,7 +839,7 @@ void MainWindow::on_pbSlpDel_clicked()
for (int i=0; i<adloader->chains.size(); i++)
{
if (adloader->chains.values().at(i).childSplashId == id
|| adloader->chains.values().at(i).parentSplashId == id)
|| adloader->chains.values().at(i).parentSplashId == id)
{
msgBox.setText(tr("You can not delete splash %1 id=%2").arg(adloader->splashes.value(id).name).arg(id));
msgBox.setInformativeText(tr("It used by chain in tower %1 id=%2").arg(adloader->towers.value(adloader->chains.values().at(i).towerId).name).arg(adloader->chains.values().at(i).towerId));
@@ -1091,13 +1107,13 @@ void MainWindow::on_pbImgAdd_clicked()
/*if (fd.exec())
{
strl = fd.selectedFiles();*/
for (int i=0; i<strl.size(); ++i)
{
strl[i] = dir.relativeFilePath(strl[i]);
}
adloader->animations[id].pathes.append(strl);
refresh_lwImages(adloader->animations.value(id).pathes);
isSaved = false;
for (int i=0; i<strl.size(); ++i)
{
strl[i] = dir.relativeFilePath(strl[i]);
}
adloader->animations[id].pathes.append(strl);
refresh_lwImages(adloader->animations.value(id).pathes);
isSaved = false;
//}
}
@@ -1133,7 +1149,7 @@ void MainWindow::on_pbAnimAdd_clicked()
anim.id = i;
adloader->animations.insert(anim.id,anim);
int index = adloader->animations.keys().indexOf(i);
// animModel->refresh(adloader->animations.values());
// animModel->refresh(adloader->animations.values());
ui->lvAnimations->reset();
ui->lvAnimations->selectionModel()->setCurrentIndex(ui->lvAnimations->model()->index(index,0),QItemSelectionModel::ClearAndSelect);
isSaved = false;
@@ -1227,7 +1243,7 @@ void MainWindow::on_pbAnimDel_clicked()
if (ret == QMessageBox::Ok)
{
adloader->animations.remove(id);
// animModel->refresh(adloader->animations.values());
// animModel->refresh(adloader->animations.values());
ui->lvAnimations->reset();
ui->lvAnimations->selectionModel()->setCurrentIndex(ui->lvAnimations->model()->index(0,0),QItemSelectionModel::ClearAndSelect);
isSaved = false;
@@ -1280,3 +1296,81 @@ void MainWindow::on_cbSplKeepOnAlien_toggled(bool checked)
adloader->splashes[id].keepOnAlien = checked;
if (lval != adloader->splashes[id].keepOnAlien) isSaved = false;
}
void MainWindow::on_btWaveAddAlien_clicked()
{
if (ui->lvWaveAliens->currentIndex().isValid())
wavePartModel->insertAlien(adloader->aliens.values().at(ui->lvWaveAliens->currentIndex().row()).id);
waveModel->refreshData();
}
void MainWindow::tbWavePartSelect(QModelIndex a, QModelIndex)
{
ui->btWaveRemoveAlien->setEnabled(a.isValid());
}
void MainWindow::on_btWaveRemoveAlien_clicked()
{
wavePartModel->removeAlien(ui->tableWaveParts->selectionModel()->currentIndex());
waveModel->refreshData();
}
void MainWindow::on_btWaveClear_clicked()
{
wavePartModel->clearAliens();
waveModel->refreshData();
}
void MainWindow::on_pbWaveAdd_clicked()
{
// wavePartModel->setCurrentWave(QModelIndex());
QModelIndex a = ui->tableWaves->selectionModel()->currentIndex();
waveModel->addWave(a);
wavePartModel->setCurrentWave(waveModel->index(a.row()+1,a.column()));
//wavePartModel->setCurrentWave(a);
// ui->tableWaves->selectionModel()->setCurrentIndex(waveModel->index(a.row()+1,a.column()),QItemSelectionModel::ClearAndSelect | QItemSelectionModel::Rows);
}
void MainWindow::on_pbWaveDel_clicked()
{
// wavePartModel->setCurrentWave(QModelIndex());
QModelIndex a = ui->tableWaves->selectionModel()->currentIndex();
waveModel->removeWave(a);
wavePartModel->setCurrentWave(waveModel->index(a.row(),a.column()));
//wavePartModel->setCurrentWave(a);
//ui->tableWaves->selectionModel()->setCurrentIndex(waveModel->index(a.row(),a.column()),QItemSelectionModel::ClearAndSelect | QItemSelectionModel::Rows);
}
void MainWindow::on_pbWaveCopy_clicked()
{
// wavePartModel->setCurrentWave(QModelIndex());
QModelIndex a = ui->tableWaves->selectionModel()->currentIndex();
waveModel->copyWave(a);
wavePartModel->setCurrentWave(waveModel->index(a.row()+1,a.column()));
// ui->tableWaves->selectionModel()->setCurrentIndex(waveModel->index(a.row()+1,a.column()),QItemSelectionModel::ClearAndSelect | QItemSelectionModel::Rows);
}
void MainWindow::on_btWaveUp_clicked()
{
wavePartModel->setCurrentWave(QModelIndex());
QModelIndex a = ui->tableWaves->selectionModel()->currentIndex();
waveModel->upWave(a);
ui->tableWaves->selectionModel()->setCurrentIndex(waveModel->index(a.row()-1,a.column()),QItemSelectionModel::ClearAndSelect | QItemSelectionModel::Rows);
}
void MainWindow::on_btWaveDown_clicked()
{
wavePartModel->setCurrentWave(QModelIndex());
QModelIndex a = ui->tableWaves->selectionModel()->currentIndex();
waveModel->downWave(a);
ui->tableWaves->selectionModel()->setCurrentIndex(waveModel->index(a.row()+1,a.column()),QItemSelectionModel::ClearAndSelect | QItemSelectionModel::Rows);
}