diff --git a/ADeditor/ADeditor.pro b/ADeditor/ADeditor.pro index c4aae1a..d2730e5 100644 --- a/ADeditor/ADeditor.pro +++ b/ADeditor/ADeditor.pro @@ -2,28 +2,29 @@ # Project created by QtCreator 2010-08-22T13:42:02 # ------------------------------------------------- QT += xml \ - xmlpatterns + xmlpatterns TARGET = ADeditor TEMPLATE = app SOURCES += main.cpp \ - mainwindow.cpp \ - ../loader.cpp \ - alienmodel.cpp \ - towermodel.cpp \ - splashmodel.cpp \ - ../map.cpp \ - ../game_data.cpp \ + mainwindow.cpp \ + ../loader.cpp \ + alienmodel.cpp \ + towermodel.cpp \ + splashmodel.cpp \ + ../map.cpp \ + ../game_data.cpp \ triggermodel.cpp HEADERS += mainwindow.h \ - ../loader.h \ - alienmodel.h \ - towermodel.h \ - splashmodel.h \ - ../base_types.h \ - ../map.h \ - ../game_data.h \ + ../loader.h \ + alienmodel.h \ + towermodel.h \ + splashmodel.h \ + ../base_types.h \ + ../map.h \ + ../game_data.h \ triggermodel.h FORMS += mainwindow.ui TRANSLATIONS += adeditor_ru.ts - RESOURCES += ADeditor.qrc +OTHER_FILES += ../schema.xml \ + ../data2.xml diff --git a/ADeditor/ADeditor.pro.user b/ADeditor/ADeditor.pro.user index ed2d659..86b2921 100644 --- a/ADeditor/ADeditor.pro.user +++ b/ADeditor/ADeditor.pro.user @@ -1,113 +1,283 @@ - ProjectExplorer.Project.ActiveTarget + RunConfiguration0-BaseEnvironmentBase + 2 + + + RunConfiguration0-CommandLineArguments + + + + RunConfiguration0-ProFile + ADeditor.pro + + + RunConfiguration0-RunConfiguration.name + ADeditor + + + RunConfiguration0-UseDyldImageSuffix + false + + + RunConfiguration0-UseTerminal + false + + + RunConfiguration0-UserEnvironmentChanges + + + + RunConfiguration0-UserSetName + false + + + RunConfiguration0-UserSetWorkingDirectory + false + + + RunConfiguration0-UserWorkingDirectory + + + + RunConfiguration0-type + Qt4ProjectManager.Qt4RunConfiguration + + + activeRunConfiguration 0 - ProjectExplorer.Project.EditorSettings + activebuildconfiguration + Debug + + + buildConfiguration-Debug - System + Debug + 0 + 0 + + 2 - ProjectExplorer.Project.Target.0 + buildConfiguration-Release - Настольный компьютер - Qt4ProjectManager.Target.DesktopTarget - 0 - 0 - - - qmake - QtProjectManager.QMakeBuildStep - - - - Сборка - Qt4ProjectManager.MakeStep - false - - - - 2 - - Сборка - Qt4ProjectManager.MakeStep - true - - clean - - - - 1 - false - - Отладка - Qt4ProjectManager.Qt4BuildConfiguration - 2 - C:/Users/Andrey/Desktop/build-ADeditor - 9 - 2 - true - - - - qmake - QtProjectManager.QMakeBuildStep - - - - Сборка - Qt4ProjectManager.MakeStep - false - - - - 2 - - Сборка - Qt4ProjectManager.MakeStep - true - - clean - - - - 1 - false - - Релиз - Qt4ProjectManager.Qt4BuildConfiguration - 0 - C:/Users/Andrey/Desktop/aliendefender/ADeditor-build-desktop - 9 - 2 - true - - 2 - - ADeditor - Qt4ProjectManager.Qt4RunConfiguration - 2 - - ADeditor.pro - false - false - - false - true - C:\Users\Andrey\Desktop\aliendefender - - 1 + Release + 0 + + 0 - ProjectExplorer.Project.TargetCount - 1 + buildconfiguration-Debug-buildstep0 + + Debug + + DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-7vJZaf9AwI,guid=f26a2301f932cefdec6dd3bc4c79669f + DEFAULTS_PATH=/usr/share/gconf/gnome.default.path + DESKTOP_SESSION=gnome + DISPLAY=:0.0 + GDMSESSION=gnome + GDM_KEYBOARD_LAYOUT=us + GDM_LANG=ru_RU.UTF-8 + GNOME_DESKTOP_SESSION_ID=this-is-deprecated + GNOME_KEYRING_CONTROL=/tmp/keyring-U899U4 + GTK_MODULES=canberra-gtk-module + HOME=/home/andrey + LANG=ru_RU.UTF-8 + LD_LIBRARY_PATH=/usr/lib/qtcreator: + LOGNAME=andrey + MANDATORY_PATH=/usr/share/gconf/gnome.mandatory.path + ORBIT_SOCKETDIR=/tmp/orbit-andrey + PATH=/usr/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games + PWD=/home/andrey + QTDIR=/usr/share/qt4 + SESSION_MANAGER=local/buull-eeePC:@/tmp/.ICE-unix/1236,unix/buull-eeePC:/tmp/.ICE-unix/1236 + SHELL=/bin/bash + SPEECHD_PORT=6561 + SSH_AGENT_PID=1270 + SSH_AUTH_SOCK=/tmp/keyring-U899U4/ssh + USER=andrey + USERNAME=andrey + XAUTHORITY=/var/run/gdm/auth-for-andrey-6T6AjI/database + XDG_CONFIG_DIRS=/etc/xdg/xdg-gnome:/etc/xdg + XDG_DATA_DIRS=/usr/share/gnome:/usr/local/share/:/usr/share/ + XDG_SESSION_COOKIE=f0649decca52f2beb55c9ea74ad1d028-1283024543.354844-1194058895 + + + /home/andrey/AD/aliendefender/ADeditor/ADeditor.pro + -spec + linux-g++ + -r + CONFIG+=debug + + /usr/bin/qmake-qt4 + false + /home/andrey/AD/aliendefender/ADeditor + - ProjectExplorer.Project.Updater.FileVersion - 4 + buildconfiguration-Debug-buildstep1 + + Debug + + DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-7vJZaf9AwI,guid=f26a2301f932cefdec6dd3bc4c79669f + DEFAULTS_PATH=/usr/share/gconf/gnome.default.path + DESKTOP_SESSION=gnome + DISPLAY=:0.0 + GDMSESSION=gnome + GDM_KEYBOARD_LAYOUT=us + GDM_LANG=ru_RU.UTF-8 + GNOME_DESKTOP_SESSION_ID=this-is-deprecated + GNOME_KEYRING_CONTROL=/tmp/keyring-U899U4 + GTK_MODULES=canberra-gtk-module + HOME=/home/andrey + LANG=ru_RU.UTF-8 + LD_LIBRARY_PATH=/usr/lib/qtcreator: + LOGNAME=andrey + MANDATORY_PATH=/usr/share/gconf/gnome.mandatory.path + ORBIT_SOCKETDIR=/tmp/orbit-andrey + PATH=/usr/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games + PWD=/home/andrey + QTDIR=/usr/share/qt4 + SESSION_MANAGER=local/buull-eeePC:@/tmp/.ICE-unix/1236,unix/buull-eeePC:/tmp/.ICE-unix/1236 + SHELL=/bin/bash + SPEECHD_PORT=6561 + SSH_AGENT_PID=1270 + SSH_AUTH_SOCK=/tmp/keyring-U899U4/ssh + USER=andrey + USERNAME=andrey + XAUTHORITY=/var/run/gdm/auth-for-andrey-6T6AjI/database + XDG_CONFIG_DIRS=/etc/xdg/xdg-gnome:/etc/xdg + XDG_DATA_DIRS=/usr/share/gnome:/usr/local/share/:/usr/share/ + XDG_SESSION_COOKIE=f0649decca52f2beb55c9ea74ad1d028-1283024543.354844-1194058895 + + false + + -w + + /usr/bin/make + true + /home/andrey/AD/aliendefender/ADeditor + + + + buildconfiguration-Debug-cleanstep0 + + Debug + + DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-7vJZaf9AwI,guid=f26a2301f932cefdec6dd3bc4c79669f + DEFAULTS_PATH=/usr/share/gconf/gnome.default.path + DESKTOP_SESSION=gnome + DISPLAY=:0.0 + GDMSESSION=gnome + GDM_KEYBOARD_LAYOUT=us + GDM_LANG=ru_RU.UTF-8 + GNOME_DESKTOP_SESSION_ID=this-is-deprecated + GNOME_KEYRING_CONTROL=/tmp/keyring-U899U4 + GTK_MODULES=canberra-gtk-module + HOME=/home/andrey + LANG=ru_RU.UTF-8 + LD_LIBRARY_PATH=/usr/lib/qtcreator: + LOGNAME=andrey + MANDATORY_PATH=/usr/share/gconf/gnome.mandatory.path + ORBIT_SOCKETDIR=/tmp/orbit-andrey + PATH=/usr/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games + PWD=/home/andrey + QTDIR=/usr/share/qt4 + SESSION_MANAGER=local/buull-eeePC:@/tmp/.ICE-unix/1236,unix/buull-eeePC:/tmp/.ICE-unix/1236 + SHELL=/bin/bash + SPEECHD_PORT=6561 + SSH_AGENT_PID=1270 + SSH_AUTH_SOCK=/tmp/keyring-U899U4/ssh + USER=andrey + USERNAME=andrey + XAUTHORITY=/var/run/gdm/auth-for-andrey-6T6AjI/database + XDG_CONFIG_DIRS=/etc/xdg/xdg-gnome:/etc/xdg + XDG_DATA_DIRS=/usr/share/gnome:/usr/local/share/:/usr/share/ + XDG_SESSION_COOKIE=f0649decca52f2beb55c9ea74ad1d028-1283024543.354844-1194058895 + + true + + clean + -w + + /usr/bin/make + true + /home/andrey/AD/aliendefender/ADeditor + true + + clean + + + + + buildconfiguration-Release-buildstep0 + + Release + + + + buildconfiguration-Release-buildstep1 + + Release + + + + buildconfiguration-Release-cleanstep0 + + Release + + + + buildconfigurations + + Debug + Release + + + + buildstep0 + + + + + + + buildstep1 + + + + + + buildsteps + + trolltech.qt4projectmanager.qmake + trolltech.qt4projectmanager.make + + + + cleanstep0 + + + true + + + + cleansteps + + trolltech.qt4projectmanager.make + + + + defaultFileEncoding + System + + + project + diff --git a/ADeditor/data2.xml b/ADeditor/data2.xml deleted file mode 100644 index 038e3a3..0000000 --- a/ADeditor/data2.xml +++ /dev/null @@ -1,64 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/ADeditor/mainwindow.cpp b/ADeditor/mainwindow.cpp index 716fdc7..ae3ce67 100644 --- a/ADeditor/mainwindow.cpp +++ b/ADeditor/mainwindow.cpp @@ -24,14 +24,22 @@ MainWindow::MainWindow(QWidget *parent) : twModel = new TowerModel(adloader->towers.values()); ui->lvTowers->setModel((QAbstractItemModel * )twModel); + ui->cbTwSplash->setModel((QAbstractItemModel * )splModel); connect(ui->lvTowers->selectionModel(),SIGNAL(currentChanged(QModelIndex, QModelIndex)),this,SLOT(lvTowers_select(QModelIndex, QModelIndex))); ui->lvTowers->selectionModel()->setCurrentIndex(ui->lvTowers->model()->index(0,0),QItemSelectionModel::ClearAndSelect); - ui->cbTwSplash->setModel((QAbstractItemModel * )splModel); trigModel = new TriggerModel(adloader->triggers.values()); ui->lvTriggers->setModel((QAbstractItemModel * )trigModel); connect(ui->lvTriggers->selectionModel(),SIGNAL(currentChanged(QModelIndex, QModelIndex)),this,SLOT(lvTriggers_select(QModelIndex,QModelIndex))); ui->lvTriggers->selectionModel()->setCurrentIndex(ui->lvTriggers->model()->index(0,0),QItemSelectionModel::ClearAndSelect); + ui->cbTrigChildAim->addItem(tr("no aim"),QVariant(srcTriggerType::noAim)); + ui->cbTrigChildAim->addItem(tr("random side"),QVariant(srcTriggerType::allSide)); + ui->cbTrigChildAim->addItem(tr("parent aim"),QVariant(srcTriggerType::parentAim)); + ui->cbTrigChildAim->addItem(tr("nearlest alien"),QVariant(srcTriggerType::nearlestAlien)); + ui->cbTrigType->addItem(tr("on destination"),QVariant(srcTriggerType::onDestination)); + ui->cbTrigType->addItem(tr("on alien in radius"),QVariant(srcTriggerType::onAlienInRadius)); + ui->cbTrigType->addItem(tr("on timer"),QVariant(srcTriggerType::onTimer)); + isSaved = true; } @@ -60,6 +68,7 @@ void MainWindow::on_cbAlArmor_toggled(bool checked) ui->sbAlArmor->setEnabled(checked); if (checked) adloader->aliens[id].armor = ui->sbAlArmor->value(); else adloader->aliens[id].armor = 0; + isSaved = false; } @@ -69,6 +78,7 @@ void MainWindow::on_cbAlRegeneration_toggled(bool checked) ui->sbAlregeneration->setEnabled(checked); if (checked) adloader->aliens[id].regeneration = ui->sbAlregeneration->value(); else adloader->aliens[id].regeneration = 0; + isSaved = false; } @@ -96,8 +106,20 @@ void MainWindow::lvTowers_select(QModelIndex index, QModelIndex) ui->sbTwBuildTime->setValue(tw.buildTime); ui->sbTwCost->setValue(tw.cost); ui->sbTwExpByDam->setValue(tw.expByDamage); + if (tw.expByDamage > 0) + ui->cbTwExpByDam->setChecked(true); + else + ui->cbTwExpByDam->setChecked(false); ui->sbTwExpByKill->setValue(tw.expByKill); + if (tw.expByKill > 0) + ui->cbTwExpByKill->setChecked(true); + else + ui->cbTwExpByKill->setChecked(false); ui->sbTwExpByShot->setValue(tw.expByShot); + if (tw.expByShot > 0) + ui->cbTwExpByShot->setChecked(true); + else + ui->cbTwExpByShot->setChecked(false); ui->leTwName->setText(tw.name); ui->sbTwRadius->setValue(tw.radius); ui->sbTwReload->setValue(tw.reload); @@ -119,36 +141,91 @@ void MainWindow::lvTriggers_select(QModelIndex index, QModelIndex) { tbTrigger trig = adloader->triggers.values().at(index.row()); ui->sbTrigCount->setValue(trig.count); + if (trig.count > 0) + ui->cbTrigCount->setChecked(true); + else + ui->cbTrigCount->setChecked(false); ui->sbTrigDamage->setValue(trig.damage); + if (trig.damage > 0) + ui->cbTrigDamage->setChecked(true); + else + ui->cbTrigDamage->setChecked(false); ui->sbTrigDamRadius->setValue(trig.radius); + if (trig.radius > 0) + ui->cbTrigDamRad->setChecked(true); + else + ui->cbTrigDamRad->setChecked(false); ui->sbTrigChance->setValue(trig.chance); if (trig.chance == 100) ui->cbTrigChance->setChecked(false); else ui->cbTrigChance->setChecked(true); ui->sbTrigRandomRadius->setValue(trig.randomPosRadius); + if (trig.randomPosRadius > 0) + ui->cbTrigRandRadius->setChecked(true); + else + ui->cbTrigRandRadius->setChecked(false); ui->sbTrigTimer->setValue(trig.timer); + switch (trig.type) + { + case srcTriggerType::onDestination : + ui->cbTrigType->setCurrentIndex(0); + break; + case srcTriggerType::onAlienInRadius : + ui->cbTrigType->setCurrentIndex(1); + break; + case srcTriggerType::onTimer : + ui->cbTrigType->setCurrentIndex(2); + break; + } + if (trig.type != srcTriggerType::onTimer) + { + ui->lbTrigTimer->setVisible(false); + ui->sbTrigTimer->setVisible(false); + } else { + ui->lbTrigTimer->setVisible(true); + ui->sbTrigTimer->setVisible(true); + } + switch (trig.childAim) + { + case srcTriggerType::noAim : + ui->cbTrigChildAim->setCurrentIndex(0); + break; + case srcTriggerType::allSide : + ui->cbTrigChildAim->setCurrentIndex(1); + break; + case srcTriggerType::parentAim : + ui->cbTrigChildAim->setCurrentIndex(2); + break; + case srcTriggerType::nearlestAlien : + ui->cbTrigChildAim->setCurrentIndex(3); + break; + } ui->leTrigName->setText(trig.name); } void MainWindow::closeEvent(QCloseEvent *event) { - QMessageBox msgBox; - msgBox.setText(tr("Save changes?")); - msgBox.setStandardButtons(QMessageBox::Save | QMessageBox::Discard | QMessageBox::Cancel); - msgBox.setDefaultButton(QMessageBox::Save); - int ret = msgBox.exec(); - switch (ret) + if (!isSaved) { - case QMessageBox::Save : - adloader->save("data2.xml"); - event->accept(); - break; - case QMessageBox::Cancel : - event->ignore(); - break; - default: + QMessageBox msgBox; + msgBox.setText(tr("Save changes?")); + msgBox.setStandardButtons(QMessageBox::Save | QMessageBox::Discard | QMessageBox::Cancel); + msgBox.setDefaultButton(QMessageBox::Save); + msgBox.setEscapeButton(QMessageBox::Discard); + int ret = msgBox.exec(); + switch (ret) + { + case QMessageBox::Save : + adloader->save("data2.xml"); + event->accept(); + break; + case QMessageBox::Cancel : + event->ignore(); + break; + } + } else { event->accept(); } } @@ -158,6 +235,7 @@ void MainWindow::on_pbSave_clicked() adloader->save("data2.xml"); adloader->load("data2.xml"); adloader->save("data2.xml"); + isSaved = true; } @@ -175,12 +253,21 @@ void MainWindow::on_pbReload_clicked() alModel->refresh(adloader->aliens.values()); twModel->refresh(adloader->towers.values()); splModel->refresh(adloader->splashes.values()); + trigModel->refresh(adloader->triggers.values()); + ui->lvAliens->setModel(alModel); ui->lvAliens->reset(); ui->lvAliens->selectionModel()->setCurrentIndex(ui->lvAliens->model()->index(0,0),QItemSelectionModel::ClearAndSelect); - ui->lvTowers->reset(); - ui->lvTowers->selectionModel()->setCurrentIndex(ui->lvTowers->model()->index(0,0),QItemSelectionModel::ClearAndSelect); + ui->lvSplashes->setModel(splModel); ui->lvSplashes->reset(); ui->lvSplashes->selectionModel()->setCurrentIndex(ui->lvSplashes->model()->index(0,0),QItemSelectionModel::ClearAndSelect); + ui->lvTowers->setModel(twModel); + ui->cbTwSplash->setModel(splModel); + ui->lvTowers->reset(); + ui->lvTowers->selectionModel()->setCurrentIndex(ui->lvTowers->model()->index(0,0),QItemSelectionModel::ClearAndSelect); + ui->lvTriggers->setModel(trigModel); + ui->lvTriggers->reset(); + ui->lvTriggers->selectionModel()->setCurrentIndex(ui->lvTriggers->model()->index(0,0),QItemSelectionModel::ClearAndSelect); + isSaved = true; } } @@ -189,6 +276,7 @@ void MainWindow::on_sbAlHealth_valueChanged(double value) { int id = adloader->aliens.values().at(ui->lvAliens->currentIndex().row()).id; adloader->aliens[id].health = value; + isSaved = false; } @@ -196,6 +284,7 @@ void MainWindow::on_sbAlArmor_valueChanged(double value) { int id = adloader->aliens.values().at(ui->lvAliens->currentIndex().row()).id; adloader->aliens[id].armor = value; + isSaved = false; } @@ -203,6 +292,7 @@ void MainWindow::on_sbAlregeneration_valueChanged(double value) { int id = adloader->aliens.values().at(ui->lvAliens->currentIndex().row()).id; adloader->aliens[id].regeneration = value; + isSaved = false; } @@ -210,6 +300,7 @@ void MainWindow::on_sbAlSpeed_valueChanged(double value) { int id = adloader->aliens.values().at(ui->lvAliens->currentIndex().row()).id; adloader->aliens[id].speed = value; + isSaved = false; } @@ -217,6 +308,7 @@ void MainWindow::on_sbAlPrise_valueChanged(int val) { int id = adloader->aliens.values().at(ui->lvAliens->currentIndex().row()).id; adloader->aliens[id].prise = val; + isSaved = false; } @@ -224,13 +316,15 @@ void MainWindow::on_sbAlScore_valueChanged(int val) { int id = adloader->aliens.values().at(ui->lvAliens->currentIndex().row()).id; adloader->aliens[id].score = val; + isSaved = false; } -void MainWindow::on_cbAlIsFly_clicked(bool checked) +void MainWindow::on_cbAlIsFly_toggled(bool checked) { int id = adloader->aliens.values().at(ui->lvAliens->currentIndex().row()).id; adloader->aliens[id].isFlying = checked; + isSaved = false; } @@ -240,7 +334,7 @@ void MainWindow::on_leAlName_editingFinished() adloader->aliens[id].name = ui->leAlName->text(); alModel->refresh(adloader->aliens.values()); ui->lvAliens->setModel((QAbstractItemModel * )alModel); - ui->lvAliens->repaint(); + isSaved = false; } @@ -261,6 +355,7 @@ void MainWindow::on_pbAlAdd_clicked() ui->lvAliens->setModel((QAbstractItemModel * )alModel); ui->lvAliens->reset(); ui->lvAliens->selectionModel()->setCurrentIndex(ui->lvAliens->model()->index(index,0),QItemSelectionModel::ClearAndSelect); + isSaved = false; } @@ -281,6 +376,7 @@ void MainWindow::on_pbAlDel_clicked() ui->lvAliens->setModel((QAbstractItemModel * )alModel); ui->lvAliens->reset(); ui->lvAliens->selectionModel()->setCurrentIndex(ui->lvAliens->model()->index(0,0),QItemSelectionModel::ClearAndSelect); + isSaved = false; } } @@ -291,6 +387,7 @@ void MainWindow::on_leTwName_editingFinished() adloader->towers[id].name = ui->leTwName->text(); twModel->refresh(adloader->towers.values()); ui->lvTowers->setModel((QAbstractItemModel * )twModel); + isSaved = false; } @@ -298,6 +395,7 @@ void MainWindow::on_sbTwBuildTime_valueChanged(int val) { int id = adloader->towers.values().at(ui->lvTowers->currentIndex().row()).id; adloader->towers[id].buildTime = val; + isSaved = false; } @@ -305,19 +403,25 @@ void MainWindow::on_sbTwCost_valueChanged(int val) { int id = adloader->towers.values().at(ui->lvTowers->currentIndex().row()).id; adloader->towers[id].cost = val; + isSaved = false; } void MainWindow::on_cbTwSplash_currentIndexChanged(int index) { - int id = adloader->towers.values().at(ui->lvTowers->currentIndex().row()).id; - adloader->towers[id].splashId = adloader->splashes.values().at(index).id; + if (index > 0) + { + int id = adloader->towers.values().at(ui->lvTowers->currentIndex().row()).id; + adloader->towers[id].splashId = adloader->splashes.values().at(index).id; + isSaved = false; + } } void MainWindow::on_sbTwReload_valueChanged(int val) { int id = adloader->towers.values().at(ui->lvTowers->currentIndex().row()).id; adloader->towers[id].reload = val; + isSaved = false; } @@ -325,6 +429,7 @@ void MainWindow::on_sbTwRadius_valueChanged(double val) { int id = adloader->towers.values().at(ui->lvTowers->currentIndex().row()).id; adloader->towers[id].radius = val; + isSaved = false; } @@ -332,6 +437,17 @@ void MainWindow::on_sbTwExpByShot_valueChanged(double val) { int id = adloader->towers.values().at(ui->lvTowers->currentIndex().row()).id; adloader->towers[id].expByShot = val; + isSaved = false; +} + + +void MainWindow::on_cbTwExpByShot_toggled(bool checked) +{ + int id = adloader->towers.values().at(ui->lvTowers->currentIndex().row()).id; + ui->sbTwExpByShot->setEnabled(checked); + if (checked) adloader->towers[id].expByShot = ui->sbTwExpByShot->value(); + else adloader->towers[id].expByShot = 0; + isSaved = false; } @@ -339,6 +455,17 @@ void MainWindow::on_sbTwExpByDam_valueChanged(double val) { int id = adloader->towers.values().at(ui->lvTowers->currentIndex().row()).id; adloader->towers[id].expByDamage = val; + isSaved = false; +} + + +void MainWindow::on_cbTwExpByDam_toggled(bool checked) +{ + int id = adloader->towers.values().at(ui->lvTowers->currentIndex().row()).id; + ui->sbTwExpByDam->setEnabled(checked); + if (checked) adloader->towers[id].expByDamage = ui->sbTwExpByDam->value(); + else adloader->towers[id].expByDamage = 0; + isSaved = false; } @@ -346,6 +473,17 @@ void MainWindow::on_sbTwExpByKill_valueChanged(double val) { int id = adloader->towers.values().at(ui->lvTowers->currentIndex().row()).id; adloader->towers[id].expByKill = val; + isSaved = false; +} + + +void MainWindow::on_cbTwExpByKill_toggled(bool checked) +{ + int id = adloader->towers.values().at(ui->lvTowers->currentIndex().row()).id; + ui->sbTwExpByKill->setEnabled(checked); + if (checked) adloader->towers[id].expByKill = ui->sbTwExpByKill->value(); + else adloader->towers[id].expByKill = 0; + isSaved = false; } @@ -367,6 +505,7 @@ void MainWindow::on_pbTwAdd_clicked() ui->lvTowers->setModel((QAbstractItemModel * )twModel); ui->lvTowers->reset(); ui->lvTowers->selectionModel()->setCurrentIndex(ui->lvTowers->model()->index(index,0),QItemSelectionModel::ClearAndSelect); + isSaved = false; } @@ -387,6 +526,7 @@ void MainWindow::on_pbTwDel_clicked() ui->lvTowers->setModel((QAbstractItemModel * )twModel); ui->lvTowers->reset(); ui->lvTowers->selectionModel()->setCurrentIndex(ui->lvTowers->model()->index(0,0),QItemSelectionModel::ClearAndSelect); + isSaved = false; } } @@ -397,6 +537,7 @@ void MainWindow::on_leSplName_editingFinished() splModel->refresh(adloader->splashes.values()); ui->lvSplashes->setModel((QAbstractItemModel * )splModel); ui->cbTwSplash->setModel((QAbstractItemModel * )splModel); + isSaved = false; } @@ -404,6 +545,7 @@ void MainWindow::on_sbSplSpeed_valueChanged(double val) { int id = adloader->splashes.values().at(ui->lvSplashes->currentIndex().row()).id; adloader->splashes[id].speed = val; + isSaved = false; } @@ -411,6 +553,7 @@ void MainWindow::on_cbSplAutoControl_toggled(bool checked) { int id = adloader->splashes.values().at(ui->lvSplashes->currentIndex().row()).id; adloader->splashes[id].autoControl = checked; + isSaved = false; } @@ -418,6 +561,7 @@ void MainWindow::on_sbSplLifeTime_valueChanged(int val) { int id = adloader->splashes.values().at(ui->lvSplashes->currentIndex().row()).id; adloader->splashes[id].lifetime = val; + isSaved = false; } @@ -437,6 +581,7 @@ void MainWindow::on_pbSplAdd_clicked() ui->lvSplashes->reset(); ui->lvSplashes->selectionModel()->setCurrentIndex(ui->lvSplashes->model()->index(index,0),QItemSelectionModel::ClearAndSelect); ui->cbTwSplash->setModel((QAbstractItemModel * )splModel); + isSaved = false; } @@ -469,11 +614,12 @@ void MainWindow::on_pbSlpDel_clicked() ui->lvSplashes->reset(); ui->lvSplashes->selectionModel()->setCurrentIndex(ui->lvSplashes->model()->index(0,0),QItemSelectionModel::ClearAndSelect); ui->cbTwSplash->setModel((QAbstractItemModel * )splModel); + isSaved = false; } } -void MainWindow::on_pushButton_clicked() +void MainWindow::on_pbTwSplashEdit_clicked() { int splIndex = adloader->splashes.keys().indexOf(adloader->towers.values().at(ui->lvTowers->currentIndex().row()).splashId); ui->lvSplashes->selectionModel()->setCurrentIndex(ui->lvSplashes->model()->index(splIndex,0),QItemSelectionModel::ClearAndSelect); @@ -481,10 +627,189 @@ void MainWindow::on_pushButton_clicked() } -void MainWindow::on_cbTrigChance_clicked(bool checked) +void MainWindow::on_cbTrigChance_toggled(bool checked) { int id = adloader->triggers.values().at(ui->lvTriggers->currentIndex().row()).id; ui->sbTrigChance->setEnabled(checked); if (checked) adloader->triggers[id].chance = ui->sbTrigChance->value(); else adloader->triggers[id].chance = 100; + isSaved = false; +} + + +void MainWindow::on_sbTrigChance_valueChanged(int val) +{ + int id = adloader->triggers.values().at(ui->lvTriggers->currentIndex().row()).id; + adloader->triggers[id].chance = val; + isSaved = false; +} + + +void MainWindow::on_leTrigName_editingFinished() +{ + int id = adloader->triggers.values().at(ui->lvTriggers->currentIndex().row()).id; + adloader->triggers[id].name = ui->leTrigName->text(); + trigModel->refresh(adloader->triggers.values()); + ui->lvTriggers->setModel((QAbstractItemModel * )trigModel); + isSaved = false; +} + + +void MainWindow::on_sbTrigCount_valueChanged(int val) +{ + int id = adloader->triggers.values().at(ui->lvTriggers->currentIndex().row()).id; + adloader->triggers[id].count = val; + isSaved = false; +} + + +void MainWindow::on_sbTrigRandomRadius_valueChanged(double value) +{ + int id = adloader->triggers.values().at(ui->lvTriggers->currentIndex().row()).id; + adloader->triggers[id].randomPosRadius = value; + isSaved = false; +} + + +void MainWindow::on_cbTrigDelPar_toggled(bool checked) +{ + int id = adloader->triggers.values().at(ui->lvTriggers->currentIndex().row()).id; + adloader->triggers[id].delParent = checked; + isSaved = false; +} + + +void MainWindow::on_sbTrigTimer_valueChanged(int val) +{ + int id = adloader->triggers.values().at(ui->lvTriggers->currentIndex().row()).id; + adloader->triggers[id].timer = val; + isSaved = false; +} + + +void MainWindow::on_sbTrigDamage_valueChanged(double value) +{ + int id = adloader->triggers.values().at(ui->lvTriggers->currentIndex().row()).id; + adloader->triggers[id].damage = value; + isSaved = false; +} + + +void MainWindow::on_sbTrigDamRadius_valueChanged(double value) +{ + int id = adloader->triggers.values().at(ui->lvTriggers->currentIndex().row()).id; + adloader->triggers[id].radius = value; + isSaved = false; +} + + +void MainWindow::on_cbTrigDamRad_toggled(bool checked) +{ + int id = adloader->triggers.values().at(ui->lvTriggers->currentIndex().row()).id; + ui->sbTrigDamRadius->setEnabled(checked); + if (checked) adloader->triggers[id].radius = ui->sbTrigDamRadius->value(); + else adloader->triggers[id].radius = 0; + isSaved = false; +} + + +void MainWindow::on_cbTrigDamage_toggled(bool checked) +{ + int id = adloader->triggers.values().at(ui->lvTriggers->currentIndex().row()).id; + ui->sbTrigDamage->setEnabled(checked); + if (checked) adloader->triggers[id].damage = ui->sbTrigDamage->value(); + else adloader->triggers[id].damage = 0; + isSaved = false; +} + + +void MainWindow::on_cbTrigRandRadius_toggled(bool checked) +{ + int id = adloader->triggers.values().at(ui->lvTriggers->currentIndex().row()).id; + ui->sbTrigRandomRadius->setEnabled(checked); + if (checked) adloader->triggers[id].randomPosRadius = ui->sbTrigRandomRadius->value(); + else adloader->triggers[id].randomPosRadius = 0; + isSaved = false; +} + + +void MainWindow::on_cbTrigCount_toggled(bool checked) +{ + int id = adloader->triggers.values().at(ui->lvTriggers->currentIndex().row()).id; + ui->sbTrigCount->setEnabled(checked); + if (checked) adloader->triggers[id].count = ui->sbTrigCount->value(); + else adloader->triggers[id].count = 0; + isSaved = false; +} + + +void MainWindow::on_pbTrigAdd_clicked() +{ + int i = 1; + while (adloader->triggers.contains(i)) i++; + tbTrigger trig; + trig.id = i; + trig.name = tr("Trigger"); + trig.count = 0; + trig.damage = 0; + trig.radius = 0; + trig.timer = 10; + trig.chance = 100; + trig.delParent =true ; + trig.childAim = srcTriggerType::noAim; + trig.randomPosRadius = 0; + trig.type = srcTriggerType::onDestination; + adloader->triggers.insert(trig.id,trig); + int index = adloader->triggers.keys().indexOf(i); + trigModel->refresh(adloader->triggers.values()); + ui->lvTriggers->setModel((QAbstractItemModel * )trigModel); + ui->lvTriggers->reset(); + ui->lvTriggers->selectionModel()->setCurrentIndex(ui->lvTriggers->model()->index(index,0),QItemSelectionModel::ClearAndSelect); + isSaved = false; +} + + +void MainWindow::on_pbTrigDel_clicked() +{ + if (adloader->triggers.size() < 2) return; + QMessageBox msgBox; + int id = adloader->triggers.keys().at(ui->lvTriggers->currentIndex().row()); + msgBox.setText(tr("Delete trigger %1 id=%2").arg(adloader->triggers.value(id).name).arg(id)); + msgBox.setInformativeText(tr("Are you sure?")); + msgBox.setStandardButtons(QMessageBox::Ok | QMessageBox::Cancel); + msgBox.setDefaultButton(QMessageBox::Ok); + int ret = msgBox.exec(); + if (ret == QMessageBox::Ok) + { + adloader->triggers.remove(id); + trigModel->refresh(adloader->triggers.values()); + ui->lvTriggers->setModel((QAbstractItemModel * )trigModel); + ui->lvTriggers->reset(); + ui->lvTriggers->selectionModel()->setCurrentIndex(ui->lvTriggers->model()->index(0,0),QItemSelectionModel::ClearAndSelect); + isSaved = false; + } +} + + +void MainWindow::on_cbTrigType_currentIndexChanged(int index) +{ + int id = adloader->triggers.values().at(ui->lvTriggers->currentIndex().row()).id; + adloader->triggers[id].type = (srcTriggerType::triggerType)ui->cbTrigType->itemData(index).toInt(); + if (adloader->triggers[id].type != srcTriggerType::onTimer) + { + ui->lbTrigTimer->setVisible(false); + ui->sbTrigTimer->setVisible(false); + } else { + ui->lbTrigTimer->setVisible(true); + ui->sbTrigTimer->setVisible(true); + } + isSaved = false; +} + + +void MainWindow::on_cbTrigChildAim_currentIndexChanged(int index) +{ + int id = adloader->triggers.values().at(ui->lvTriggers->currentIndex().row()).id; + adloader->triggers[id].childAim = (srcTriggerType::aimType)ui->cbTrigChildAim->itemData(index).toInt(); + isSaved = false; } diff --git a/ADeditor/mainwindow.h b/ADeditor/mainwindow.h index f1644bb..e069d73 100644 --- a/ADeditor/mainwindow.h +++ b/ADeditor/mainwindow.h @@ -32,11 +32,33 @@ private: SplashModel * splModel; TriggerModel* trigModel; + bool isSaved; + void closeEvent(QCloseEvent *); private slots: - void on_cbTrigChance_clicked(bool checked); - void on_pbReload_clicked(); - void on_pushButton_clicked(); + void on_cbTrigChildAim_currentIndexChanged(int index); + void on_cbTrigType_currentIndexChanged(int index); + void on_cbTrigCount_toggled(bool checked); + void on_leTrigName_editingFinished(); + void on_pbTwSplashEdit_clicked(); + void on_cbTrigDamRad_toggled(bool checked); + void on_cbTrigDamage_toggled(bool checked); + void on_cbTrigDelPar_toggled(bool checked); + void on_cbTrigChance_toggled(bool checked); + void on_cbTrigRandRadius_toggled(bool checked); + void on_cbTwExpByKill_toggled(bool checked); + void on_cbTwExpByDam_toggled(bool checked); + void on_cbTwExpByShot_toggled(bool checked); + void on_cbAlIsFly_toggled(bool checked); + void on_pbTrigDel_clicked(); + void on_pbTrigAdd_clicked(); + void on_sbTrigChance_valueChanged(int ); + void on_sbTrigDamRadius_valueChanged(double ); + void on_sbTrigDamage_valueChanged(double ); + void on_sbTrigTimer_valueChanged(int ); + void on_sbTrigRandomRadius_valueChanged(double ); + void on_sbTrigCount_valueChanged(int ); + void on_pbReload_clicked(); void on_pbSlpDel_clicked(); void on_pbSplAdd_clicked(); void on_sbSplLifeTime_valueChanged(int ); @@ -57,7 +79,6 @@ private slots: void on_pbAlDel_clicked(); void on_pbAlAdd_clicked(); void on_leAlName_editingFinished(); - void on_cbAlIsFly_clicked(bool checked); void on_sbAlScore_valueChanged(int ); void on_sbAlPrise_valueChanged(int ); void on_sbAlSpeed_valueChanged(double ); diff --git a/ADeditor/mainwindow.ui b/ADeditor/mainwindow.ui index 8dffcaf..635189e 100644 --- a/ADeditor/mainwindow.ui +++ b/ADeditor/mainwindow.ui @@ -1,1458 +1,1491 @@ - - - MainWindow - - - - 0 - 0 - 598 - 489 - - - - MainWindow - - - QMainWindow::AllowNestedDocks|QMainWindow::AllowTabbedDocks|QMainWindow::AnimatedDocks|QMainWindow::ForceTabbedDocks - - - - - 2 - - - 2 - - - - - 3 - - - - Aliens - - - - - - QAbstractItemView::AllEditTriggers - - - - - - - QFrame::StyledPanel - - - QFrame::Raised - - - - - - - - - 0 - 0 - - - - Name - - - Qt::AlignCenter - - - - - - - - - - - - - - - 0 - 0 - - - - Health - - - Qt::AlignCenter - - - - - - - 1 - - - 0.000000000000000 - - - 999999999.000000000000000 - - - 10.000000000000000 - - - 99.000000000000000 - - - - - - - - - - - - 0 - 0 - - - - Armor - - - - - - - false - - - 999999999.000000000000000 - - - - - - - - - - - - 0 - 0 - - - - Regeneration - - - - - - - false - - - 1 - - - 999999999.000000000000000 - - - 5.000000000000000 - - - - - - - - - - - - 0 - 0 - - - - Speed - - - Qt::AlignCenter - - - - - - - - - - 5 - - - 0.000010000000000 - - - 99.000000000000000 - - - 0.010000000000000 - - - 0.010000000000000 - - - - - - - - - - - - 0 - 0 - - - - Prize - - - Qt::AlignCenter - - - - - - - 0 - - - 999999999 - - - - - - - - - - - - 0 - 0 - - - - Score - - - Qt::AlignCenter - - - - - - - 1 - - - 999999999 - - - - - - - - - - - - 0 - 0 - - - - Qt::LeftToRight - - - Is Flying - - - - - - - - - - - - 0 - 0 - - - - Image - - - Qt::AlignCenter - - - - - - - true - - - - 0 - 0 - - - - - 48 - 32 - - - - ... - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - 20 - - - - - - 0 - 0 - - - - Add - - - - - - - - 0 - 0 - - - - Delete - - - - - - - - - - Towers - - - - - - - - - QFrame::StyledPanel - - - QFrame::Raised - - - - - - - - - 0 - 0 - - - - Name - - - Qt::AlignCenter - - - - - - - - - - - - - - - 0 - 0 - - - - Build time - - - Qt::AlignCenter - - - - - - - 1 - - - 999999999 - - - 50 - - - 50 - - - - - - - - - - - - 0 - 0 - - - - Cost - - - Qt::AlignCenter - - - - - - - 1 - - - 999999999 - - - - - - - - - - - - 0 - 0 - - - - Splash - - - Qt::AlignCenter - - - - - - - true - - - - - - - - 0 - 0 - - - - Edit - - - - - - - - - - - - 0 - 0 - - - - Reload - - - Qt::AlignCenter - - - - - - - 1 - - - 999999999 - - - - - - - - - - - - 0 - 0 - - - - Radius - - - Qt::AlignCenter - - - - - - - 3 - - - 1.000000000000000 - - - 0.100000000000000 - - - - - - - - - - - - 0 - 0 - - - - ExpByShot - - - - - - - 3 - - - 999999999.000000000000000 - - - - - - - - - - - - 0 - 0 - - - - ExpByDam - - - - - - - 3 - - - 999999999.000000000000000 - - - - - - - - - - - - 0 - 0 - - - - ExpByKill - - - - - - - 3 - - - 999999999.000000000000000 - - - - - - - - - - - - 0 - 0 - - - - Image - - - Qt::AlignCenter - - - - - - - - 0 - 0 - - - - - 40 - 40 - - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - true - - - - 0 - 0 - - - - - 48 - 32 - - - - ... - - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - 20 - - - - - - 0 - 0 - - - - Add - - - - - - - - 0 - 0 - - - - Delete - - - - - - - - - - Splashes - - - - - - QAbstractItemView::AllEditTriggers - - - - - - - true - - - - 0 - 0 - - - - QFrame::StyledPanel - - - QFrame::Raised - - - - QLayout::SetDefaultConstraint - - - 5 - - - 5 - - - 2 - - - - - - - - 0 - 0 - - - - Name - - - Qt::AlignCenter - - - - - - - - - - - - - - - 0 - 0 - - - - Speed - - - Qt::AlignCenter - - - - - - - - - - 5 - - - 9999.000000000000000 - - - 0.001000000000000 - - - 0.010000000000000 - - - - - - - - - - - - 0 - 0 - - - - LifeTime - - - Qt::AlignCenter - - - - - - - 1 - - - 999999999 - - - 1 - - - - - - - - - - - - 0 - 0 - - - - Qt::LeftToRight - - - AutoControl - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - - - - 0 - 0 - - - - Image - - - Qt::AlignCenter - - - - - - - - 0 - 0 - - - - - 40 - 40 - - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - true - - - - 0 - 0 - - - - - 48 - 32 - - - - ... - - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - 20 - - - - - - 0 - 0 - - - - Add - - - - - - - - 0 - 0 - - - - Delete - - - - - - - - - - Triggers - - - - - - - - - QFrame::StyledPanel - - - QFrame::Raised - - - - - - - - - 0 - 0 - - - - Name - - - Qt::AlignCenter - - - - - - - - - - - - - - - 0 - 0 - - - - Count - - - Qt::AlignCenter - - - - - - - 1 - - - 999999999 - - - - - - - - - - - - 0 - 0 - - - - Random radius - - - - - - - 3 - - - 999999999.000000000000000 - - - - - - - - - - - - 0 - 0 - - - - Chance - - - - - - - 1 - - - 100 - - - 100 - - - - - - - - - Delete parent - - - - - - - - - - 0 - 0 - - - - Child aim - - - Qt::AlignCenter - - - - - - - true - - - - - - - - - - - - 0 - 0 - - - - Type - - - Qt::AlignCenter - - - - - - - true - - - - - - - - - - - - 0 - 0 - - - - Timer - - - Qt::AlignCenter - - - - - - - 1 - - - 999999999 - - - 50 - - - 50 - - - - - - - - - - - - 0 - 0 - - - - Damage - - - - - - - 3 - - - 999999999.000000000000000 - - - - - - - - - - - - 0 - 0 - - - - Damage radius - - - - - - - 3 - - - 999999999.000000000000000 - - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - 20 - - - - - - 0 - 0 - - - - Add - - - - - - - - 0 - 0 - - - - Delete - - - - - - - - - - - - - Save - - - - - - - Cancel - - - - - - - - - - + + + MainWindow + + + + 0 + 0 + 598 + 497 + + + + MainWindow + + + QMainWindow::AllowNestedDocks|QMainWindow::AllowTabbedDocks|QMainWindow::AnimatedDocks|QMainWindow::ForceTabbedDocks + + + + + 2 + + + 2 + + + + + 3 + + + + Aliens + + + + + + QAbstractItemView::AllEditTriggers + + + + + + + QFrame::StyledPanel + + + QFrame::Raised + + + + + + + + + 0 + 0 + + + + Name + + + Qt::AlignCenter + + + + + + + + + + + + + + + 0 + 0 + + + + Health + + + Qt::AlignCenter + + + + + + + 1 + + + 0.000000000000000 + + + 999999999.000000000000000 + + + 10.000000000000000 + + + 99.000000000000000 + + + + + + + + + + + + 0 + 0 + + + + Armor + + + + + + + false + + + 999999999.000000000000000 + + + + + + + + + + + + 0 + 0 + + + + Regeneration + + + + + + + false + + + 1 + + + 999999999.000000000000000 + + + 5.000000000000000 + + + + + + + + + + + + 0 + 0 + + + + Speed + + + Qt::AlignCenter + + + + + + + + + + 5 + + + 0.000010000000000 + + + 99.000000000000000 + + + 0.010000000000000 + + + 0.010000000000000 + + + + + + + + + + + + 0 + 0 + + + + Prize + + + Qt::AlignCenter + + + + + + + 0 + + + 999999999 + + + + + + + + + + + + 0 + 0 + + + + Score + + + Qt::AlignCenter + + + + + + + 1 + + + 999999999 + + + + + + + + + + + + 0 + 0 + + + + Qt::LeftToRight + + + Is Flying + + + + + + + + + + + + 0 + 0 + + + + Image + + + Qt::AlignCenter + + + + + + + true + + + + 0 + 0 + + + + + 48 + 32 + + + + ... + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + + + + 20 + + + + + + 0 + 0 + + + + Add + + + + + + + + 0 + 0 + + + + Delete + + + + + + + + + + Towers + + + + + + + + + QFrame::StyledPanel + + + QFrame::Raised + + + + + + + + + 0 + 0 + + + + Name + + + Qt::AlignCenter + + + + + + + + + + + + + + + 0 + 0 + + + + Build time + + + Qt::AlignCenter + + + + + + + 1 + + + 999999999 + + + 50 + + + 50 + + + + + + + + + + + + 0 + 0 + + + + Cost + + + Qt::AlignCenter + + + + + + + 1 + + + 999999999 + + + + + + + + + + + + 0 + 0 + + + + Splash + + + Qt::AlignCenter + + + + + + + true + + + + + + + + 0 + 0 + + + + Edit + + + + + + + + + + + + 0 + 0 + + + + Reload + + + Qt::AlignCenter + + + + + + + 1 + + + 999999999 + + + + + + + + + + + + 0 + 0 + + + + Radius + + + Qt::AlignCenter + + + + + + + 3 + + + 1.000000000000000 + + + 0.100000000000000 + + + + + + + + + + + + 0 + 0 + + + + ExpByShot + + + + + + + false + + + 3 + + + 999999999.000000000000000 + + + 0.100000000000000 + + + + + + + + + + + + 0 + 0 + + + + ExpByDam + + + + + + + false + + + 3 + + + 999999999.000000000000000 + + + 0.100000000000000 + + + + + + + + + + + + 0 + 0 + + + + ExpByKill + + + + + + + false + + + 3 + + + 999999999.000000000000000 + + + 0.100000000000000 + + + + + + + + + + + + 0 + 0 + + + + Image + + + Qt::AlignCenter + + + + + + + + 0 + 0 + + + + + 40 + 40 + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + true + + + + 0 + 0 + + + + + 48 + 32 + + + + ... + + + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + + + + 20 + + + + + + 0 + 0 + + + + Add + + + + + + + + 0 + 0 + + + + Delete + + + + + + + + + + Splashes + + + + + + QAbstractItemView::AllEditTriggers + + + + + + + true + + + + 0 + 0 + + + + QFrame::StyledPanel + + + QFrame::Raised + + + + QLayout::SetDefaultConstraint + + + 5 + + + 5 + + + 2 + + + + + + + + 0 + 0 + + + + Name + + + Qt::AlignCenter + + + + + + + + + + + + + + + 0 + 0 + + + + Speed + + + Qt::AlignCenter + + + + + + + + + + 5 + + + 9999.000000000000000 + + + 0.001000000000000 + + + 0.010000000000000 + + + + + + + + + + + + 0 + 0 + + + + LifeTime + + + Qt::AlignCenter + + + + + + + 1 + + + 999999999 + + + 1 + + + + + + + + + + + + 0 + 0 + + + + Qt::LeftToRight + + + AutoControl + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + + + 0 + 0 + + + + Image + + + Qt::AlignCenter + + + + + + + + 0 + 0 + + + + + 40 + 40 + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + true + + + + 0 + 0 + + + + + 48 + 32 + + + + ... + + + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + + + + 20 + + + + + + 0 + 0 + + + + Add + + + + + + + + 0 + 0 + + + + Delete + + + + + + + + + + Triggers + + + + + + + + + QFrame::StyledPanel + + + QFrame::Raised + + + + + + + + + 0 + 0 + + + + Name + + + Qt::AlignCenter + + + + + + + + + + + + + + + 0 + 0 + + + + Count + + + + + + + false + + + 0 + + + 999999999 + + + 0 + + + + + + + + + + + + 0 + 0 + + + + Random radius + + + + + + + false + + + 3 + + + 999999999.000000000000000 + + + 0.100000000000000 + + + + + + + + + + + + 0 + 0 + + + + Chance + + + + + + + false + + + 1 + + + 100 + + + 100 + + + + + + + + + Delete parent + + + + + + + + + + 0 + 0 + + + + Child aim + + + Qt::AlignCenter + + + + + + + true + + + + + + + + + + + + 0 + 0 + + + + Type + + + Qt::AlignCenter + + + + + + + true + + + + + + + + + + + + 0 + 0 + + + + Timer + + + Qt::AlignCenter + + + + + + + 1 + + + 999999999 + + + + + + + + + + + + 0 + 0 + + + + Damage + + + + + + + false + + + 3 + + + 999999999.000000000000000 + + + + + + + + + + + + 0 + 0 + + + + Damage radius + + + + + + + false + + + 3 + + + 999999999.000000000000000 + + + 0.100000000000000 + + + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + + + + 20 + + + + + + 0 + 0 + + + + Add + + + + + + + + 0 + 0 + + + + Delete + + + + + + + + + + + + + Save + + + + + + + Cancel + + + + + + + + + +