diff --git a/ADeditor/ADeditor.pro b/ADeditor/ADeditor.pro index 92fa1f1..c4aae1a 100644 --- a/ADeditor/ADeditor.pro +++ b/ADeditor/ADeditor.pro @@ -2,27 +2,28 @@ # 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 +RESOURCES += ADeditor.qrc diff --git a/ADeditor/ADeditor.pro.user b/ADeditor/ADeditor.pro.user index 3884b72..ed2d659 100644 --- a/ADeditor/ADeditor.pro.user +++ b/ADeditor/ADeditor.pro.user @@ -16,63 +16,76 @@ Настольный компьютер Qt4ProjectManager.Target.DesktopTarget 0 - 0 0 - - - - QtProjectManager.QMakeBuildStep - - - - - Qt4ProjectManager.MakeStep - false - - - - 2 - Build - ProjectExplorer.BuildSteps.Build + + qmake + QtProjectManager.QMakeBuildStep + - - - - Qt4ProjectManager.MakeStep - true - - clean - - - - 1 - Clean - ProjectExplorer.BuildSteps.Clean + + Сборка + Qt4ProjectManager.MakeStep + false + + - 2 + 2 + + Сборка + Qt4ProjectManager.MakeStep + true + + clean + + + + 1 false - Debug + Отладка Qt4ProjectManager.Qt4BuildConfiguration 2 - /home/peri4/pprojects/aliendefender/ADeditor - 2 - 0 + C:/Users/Andrey/Desktop/build-ADeditor + 9 + 2 true - 1 - - - 0 - Deploy - ProjectExplorer.BuildSteps.Deploy + + + qmake + QtProjectManager.QMakeBuildStep + - 1 - No deployment - ProjectExplorer.DefaultDeployConfiguration + + Сборка + Qt4ProjectManager.MakeStep + false + + + + 2 + + Сборка + Qt4ProjectManager.MakeStep + true + + clean + + + + 1 + false + + Релиз + Qt4ProjectManager.Qt4BuildConfiguration + 0 + C:/Users/Andrey/Desktop/aliendefender/ADeditor-build-desktop + 9 + 2 + true - 1 + 2 ADeditor Qt4ProjectManager.Qt4RunConfiguration @@ -83,8 +96,8 @@ false false - false - + true + C:\Users\Andrey\Desktop\aliendefender 1 @@ -93,12 +106,8 @@ ProjectExplorer.Project.TargetCount 1 - - ProjectExplorer.Project.Updater.EnvironmentId - {4d5b06df-4184-42d4-9dfd-5c7caaa07ab2} - ProjectExplorer.Project.Updater.FileVersion - 8 + 4 diff --git a/ADeditor/adeditor_ru.qm b/ADeditor/adeditor_ru.qm index 68d3422..d681aae 100644 Binary files a/ADeditor/adeditor_ru.qm and b/ADeditor/adeditor_ru.qm differ diff --git a/ADeditor/adeditor_ru.ts b/ADeditor/adeditor_ru.ts index 1268e62..df1686e 100644 --- a/ADeditor/adeditor_ru.ts +++ b/ADeditor/adeditor_ru.ts @@ -6,162 +6,97 @@ Error Level %1 not found! - + Ошибка уровень %1 не найден! Loading level %1 ... - + Загружается уровень %1 ... Error no waves on level! - + Ошибка в уровне нету волн! Error wave %1 is empty! - + Ошибка волна %1 пустая! load wave #%1 prise=%2 timeout=%3 - + загружена волна №%1 награда=%2 таймаут=%3 Alien %1 #%2 - + Монстр %1 №%2 Tower %1 trig=%2 splash=%3 - + Башня %1 триггер=%2 снаряд=%3 chain lenght %1 - - - - - Alien %1 id=%2 health=%3 speed=%4 prise=%5 imgType=%6 armor=%7 regeneration=%8 score=%10 - + длина цепочки %1 Found %1 aliens - - - - - Wave %1 prise=%2 timeout=%3 - + Найдено %1 монстров Found %1 waves - - - - - Wave=%1 alien=%2 count=%3 - + найдено %1 волн Found %1 waveParts - - - - - Tower=%1 parent=%2 child=%3 trigger=%4 - + Найдео %1 составляющих волны Found %1 chains - - - - - level=%1 wave=%2 - + Найдено %1 цепочек Found %1 Waves On Level - - - level=%1 tower=%2 - - Found %1 Towers On Level - - - Level %1 id=%2 map=%3 - - Found %1 levels - - - - - Trigger %1 id=%2 damage=%3 radius=%4 delParent=%5 timer=%6 - - - - - count=%1 chance=%2 randomPosRadius=%3 type=%4 childAim=%5 - + найдено %1 уровней Found %1 triggers - - - - - Splash %1 id=%2 speed=%3 imgType=%4 autoControl=%5 lifetime=%6 - + Найдено %1 триггеров Found %1 splashes - - - - - Tower %1 id=%2 radius=%3 cost=%4 reload=%5 buildTime=%6 splash=%7 - - - - - imgType=%1 expByKill=%2 expByShot=%3 expByDamage=%4 - + найдено %1 снарядов Found %1 towers - - - - - Map %1 id=%2 imgType=%3 maxPlayers=%5 data=%6 - + Найдено %1 башень Found %1 maps - + Найдено %1 карт @@ -169,7 +104,7 @@ MainWindow - + @@ -178,8 +113,8 @@ - - + + Name Имя @@ -200,7 +135,7 @@ - + Speed Скорость @@ -221,105 +156,108 @@ - - + + Image Картинка - - + + ... - + ... - - - + + + Add Добавить - - - + + + Delete Удалить - + Towers Башни - + Build time Время постройки - + Cost Цена - - splash - снаряд + + Cancel + Отменить изменения - + splash + снаряд + + + Edit Ред. - - + Reload Перезарядка - + Radius Радиус - + ExpbyShot Опыт за выстрел - + ExpbyDam Опыт за урон - + ExpbyKill Опыт за убийство - + Splashes Снаряды - + LifeTime Время жизни - + AutoControl Самонаведение - + Tab 2 - + - + Save Сохранить @@ -344,7 +282,7 @@ Alien - + Монстр @@ -362,6 +300,7 @@ Удалить башню %1 id=%2 + Splash Снаряд diff --git a/ADeditor/mainwindow.cpp b/ADeditor/mainwindow.cpp index dbe1cb6..716fdc7 100644 --- a/ADeditor/mainwindow.cpp +++ b/ADeditor/mainwindow.cpp @@ -5,109 +5,130 @@ MainWindow::MainWindow(QWidget *parent) : - QMainWindow(parent), - ui(new Ui::MainWindow) + QMainWindow(parent), + ui(new Ui::MainWindow) { - ui->setupUi(this); - adloader = new Loader(this); - adloader->load("data2.xml"); + ui->setupUi(this); + adloader = new Loader(this); + adloader->load("data2.xml"); - alModel = new AlienModel(adloader->aliens.values()); - ui->lvAliens->setModel((QAbstractItemModel * )alModel); - connect(ui->lvAliens->selectionModel(),SIGNAL(currentChanged(QModelIndex, QModelIndex)),this,SLOT(lvAliens_select(QModelIndex, QModelIndex))); + alModel = new AlienModel(adloader->aliens.values()); + ui->lvAliens->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); - splModel = new SplashModel(adloader->splashes.values()); - ui->lvSplashes->setModel((QAbstractItemModel * )splModel); - connect(ui->lvSplashes->selectionModel(),SIGNAL(currentChanged(QModelIndex, QModelIndex)),this,SLOT(lvSplashes_select(QModelIndex, QModelIndex))); + splModel = new SplashModel(adloader->splashes.values()); + ui->lvSplashes->setModel((QAbstractItemModel * )splModel); + connect(ui->lvSplashes->selectionModel(),SIGNAL(currentChanged(QModelIndex, QModelIndex)),this,SLOT(lvSplashes_select(QModelIndex, QModelIndex))); ui->lvSplashes->selectionModel()->setCurrentIndex(ui->lvSplashes->model()->index(0,0),QItemSelectionModel::ClearAndSelect); - twModel = new TowerModel(adloader->towers.values()); - ui->lvTowers->setModel((QAbstractItemModel * )twModel); - connect(ui->lvTowers->selectionModel(),SIGNAL(currentChanged(QModelIndex, QModelIndex)),this,SLOT(lvTowers_select(QModelIndex, QModelIndex))); + twModel = new TowerModel(adloader->towers.values()); + ui->lvTowers->setModel((QAbstractItemModel * )twModel); + 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); + 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); } MainWindow::~MainWindow() { - delete ui; + delete ui; } void MainWindow::changeEvent(QEvent *e) { - QMainWindow::changeEvent(e); - switch (e->type()) { - case QEvent::LanguageChange: - ui->retranslateUi(this); - break; - default: - break; - } + QMainWindow::changeEvent(e); + switch (e->type()) { + case QEvent::LanguageChange: + ui->retranslateUi(this); + break; + default: + break; + } } void MainWindow::on_cbAlArmor_toggled(bool checked) { - int id = adloader->aliens.values().at(ui->lvAliens->currentIndex().row()).id; - ui->sbAlArmor->setEnabled(checked); - if (checked) adloader->aliens[id].armor = ui->sbAlArmor->value(); - else adloader->aliens[id].armor = 0; + int id = adloader->aliens.values().at(ui->lvAliens->currentIndex().row()).id; + ui->sbAlArmor->setEnabled(checked); + if (checked) adloader->aliens[id].armor = ui->sbAlArmor->value(); + else adloader->aliens[id].armor = 0; } void MainWindow::on_cbAlRegeneration_toggled(bool checked) { - int id = adloader->aliens.values().at(ui->lvAliens->currentIndex().row()).id; - ui->sbAlregeneration->setEnabled(checked); - if (checked) adloader->aliens[id].regeneration = ui->sbAlregeneration->value(); - else adloader->aliens[id].regeneration = 0; + int id = adloader->aliens.values().at(ui->lvAliens->currentIndex().row()).id; + ui->sbAlregeneration->setEnabled(checked); + if (checked) adloader->aliens[id].regeneration = ui->sbAlregeneration->value(); + else adloader->aliens[id].regeneration = 0; } void MainWindow::lvAliens_select(QModelIndex index, QModelIndex) { - tbAlien al = adloader->aliens.values().at(index.row()); - ui->leAlName->setText(al.name); - ui->sbAlHealth->setValue(al.health); - ui->sbAlArmor->setValue(al.armor); - if (al.armor > 0) ui->cbAlArmor->setChecked(true); - else ui->cbAlArmor->setChecked(false); - ui->sbAlSpeed->setValue(al.speed); - ui->sbAlPrise->setValue(al.prise); - ui->sbAlregeneration->setValue(al.regeneration); - if (al.regeneration > 0) ui->cbAlRegeneration->setChecked(true); - else ui->cbAlRegeneration->setChecked(false); - ui->sbAlScore->setValue(al.score); - ui->cbAlIsFly->setChecked(al.isFlying); + tbAlien al = adloader->aliens.values().at(index.row()); + ui->leAlName->setText(al.name); + ui->sbAlHealth->setValue(al.health); + ui->sbAlArmor->setValue(al.armor); + if (al.armor > 0) ui->cbAlArmor->setChecked(true); + else ui->cbAlArmor->setChecked(false); + ui->sbAlSpeed->setValue(al.speed); + ui->sbAlPrise->setValue(al.prise); + ui->sbAlregeneration->setValue(al.regeneration); + if (al.regeneration > 0) ui->cbAlRegeneration->setChecked(true); + else ui->cbAlRegeneration->setChecked(false); + ui->sbAlScore->setValue(al.score); + ui->cbAlIsFly->setChecked(al.isFlying); } void MainWindow::lvTowers_select(QModelIndex index, QModelIndex) { - tbTower tw = adloader->towers.values().at(index.row()); - ui->sbTwBuildTime->setValue(tw.buildTime); - ui->sbTwCost->setValue(tw.cost); - ui->sbTwExpByDam->setValue(tw.expByDamage); - ui->sbTwExpByKill->setValue(tw.expByKill); - ui->sbTwExpByShot->setValue(tw.expByShot); - ui->leTwName->setText(tw.name); - ui->sbTwRadius->setValue(tw.radius); - ui->sbTwReload->setValue(tw.reload); - ui->cbTwSplash->setCurrentIndex(adloader->splashes.keys().indexOf(tw.splashId)); + tbTower tw = adloader->towers.values().at(index.row()); + ui->sbTwBuildTime->setValue(tw.buildTime); + ui->sbTwCost->setValue(tw.cost); + ui->sbTwExpByDam->setValue(tw.expByDamage); + ui->sbTwExpByKill->setValue(tw.expByKill); + ui->sbTwExpByShot->setValue(tw.expByShot); + ui->leTwName->setText(tw.name); + ui->sbTwRadius->setValue(tw.radius); + ui->sbTwReload->setValue(tw.reload); + ui->cbTwSplash->setCurrentIndex(adloader->splashes.keys().indexOf(tw.splashId)); } void MainWindow::lvSplashes_select(QModelIndex index, QModelIndex) { - tbSplash spl = adloader->splashes.values().at(index.row()); - ui->sbSplLifeTime->setValue(spl.lifetime); - ui->sbSplSpeed->setValue(spl.speed); - ui->cbSplAutoControl->setChecked(spl.autoControl); - ui->leSplName->setText(spl.name); + tbSplash spl = adloader->splashes.values().at(index.row()); + ui->sbSplLifeTime->setValue(spl.lifetime); + ui->sbSplSpeed->setValue(spl.speed); + ui->cbSplAutoControl->setChecked(spl.autoControl); + ui->leSplName->setText(spl.name); +} + + +void MainWindow::lvTriggers_select(QModelIndex index, QModelIndex) +{ + tbTrigger trig = adloader->triggers.values().at(index.row()); + ui->sbTrigCount->setValue(trig.count); + ui->sbTrigDamage->setValue(trig.damage); + ui->sbTrigDamRadius->setValue(trig.radius); + ui->sbTrigChance->setValue(trig.chance); + if (trig.chance == 100) + ui->cbTrigChance->setChecked(false); + else + ui->cbTrigChance->setChecked(true); + ui->sbTrigRandomRadius->setValue(trig.randomPosRadius); + ui->sbTrigTimer->setValue(trig.timer); + ui->leTrigName->setText(trig.name); } @@ -134,7 +155,9 @@ void MainWindow::closeEvent(QCloseEvent *event) void MainWindow::on_pbSave_clicked() { - adloader->save("data2.xml"); + adloader->save("data2.xml"); + adloader->load("data2.xml"); + adloader->save("data2.xml"); } @@ -164,79 +187,79 @@ void MainWindow::on_pbReload_clicked() void MainWindow::on_sbAlHealth_valueChanged(double value) { - int id = adloader->aliens.values().at(ui->lvAliens->currentIndex().row()).id; - adloader->aliens[id].health = value; + int id = adloader->aliens.values().at(ui->lvAliens->currentIndex().row()).id; + adloader->aliens[id].health = value; } void MainWindow::on_sbAlArmor_valueChanged(double value) { - int id = adloader->aliens.values().at(ui->lvAliens->currentIndex().row()).id; - adloader->aliens[id].armor = value; + int id = adloader->aliens.values().at(ui->lvAliens->currentIndex().row()).id; + adloader->aliens[id].armor = value; } void MainWindow::on_sbAlregeneration_valueChanged(double value) { - int id = adloader->aliens.values().at(ui->lvAliens->currentIndex().row()).id; - adloader->aliens[id].regeneration = value; + int id = adloader->aliens.values().at(ui->lvAliens->currentIndex().row()).id; + adloader->aliens[id].regeneration = value; } void MainWindow::on_sbAlSpeed_valueChanged(double value) { - int id = adloader->aliens.values().at(ui->lvAliens->currentIndex().row()).id; - adloader->aliens[id].speed = value; + int id = adloader->aliens.values().at(ui->lvAliens->currentIndex().row()).id; + adloader->aliens[id].speed = value; } void MainWindow::on_sbAlPrise_valueChanged(int val) { - int id = adloader->aliens.values().at(ui->lvAliens->currentIndex().row()).id; - adloader->aliens[id].prise = val; + int id = adloader->aliens.values().at(ui->lvAliens->currentIndex().row()).id; + adloader->aliens[id].prise = val; } void MainWindow::on_sbAlScore_valueChanged(int val) { - int id = adloader->aliens.values().at(ui->lvAliens->currentIndex().row()).id; - adloader->aliens[id].score = val; + int id = adloader->aliens.values().at(ui->lvAliens->currentIndex().row()).id; + adloader->aliens[id].score = val; } void MainWindow::on_cbAlIsFly_clicked(bool checked) { - int id = adloader->aliens.values().at(ui->lvAliens->currentIndex().row()).id; - adloader->aliens[id].isFlying = checked; + int id = adloader->aliens.values().at(ui->lvAliens->currentIndex().row()).id; + adloader->aliens[id].isFlying = checked; } void MainWindow::on_leAlName_editingFinished() { - int id = adloader->aliens.values().at(ui->lvAliens->currentIndex().row()).id; - adloader->aliens[id].name = ui->leAlName->text(); - alModel->refresh(adloader->aliens.values()); - ui->lvAliens->setModel((QAbstractItemModel * )alModel); + int id = adloader->aliens.values().at(ui->lvAliens->currentIndex().row()).id; + adloader->aliens[id].name = ui->leAlName->text(); + alModel->refresh(adloader->aliens.values()); + ui->lvAliens->setModel((QAbstractItemModel * )alModel); ui->lvAliens->repaint(); } void MainWindow::on_pbAlAdd_clicked() { - int i = 1; - while (adloader->aliens.contains(i)) i++; - tbAlien al; - al.id = i; - al.name = tr("Alien"); + int i = 1; + while (adloader->aliens.contains(i)) i++; + tbAlien al; + al.id = i; + al.name = tr("Alien"); al.health = 1; al.prise = 0; al.score = 1; al.speed = 1; - adloader->aliens.insert(al.id,al); - int index = adloader->aliens.keys().indexOf(i); - alModel->refresh(adloader->aliens.values()); - ui->lvAliens->setModel((QAbstractItemModel * )alModel); - ui->lvAliens->reset(); + adloader->aliens.insert(al.id,al); + int index = adloader->aliens.keys().indexOf(i); + alModel->refresh(adloader->aliens.values()); + ui->lvAliens->setModel((QAbstractItemModel * )alModel); + ui->lvAliens->reset(); ui->lvAliens->selectionModel()->setCurrentIndex(ui->lvAliens->model()->index(index,0),QItemSelectionModel::ClearAndSelect); } @@ -244,105 +267,105 @@ void MainWindow::on_pbAlAdd_clicked() void MainWindow::on_pbAlDel_clicked() { if (adloader->aliens.size() < 2) return; - QMessageBox msgBox; - int id = adloader->aliens.keys().at(ui->lvAliens->currentIndex().row()); - msgBox.setText(tr("Delete alien %1 id=%2").arg(adloader->aliens.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->aliens.remove(id); - alModel->refresh(adloader->aliens.values()); - ui->lvAliens->setModel((QAbstractItemModel * )alModel); - ui->lvAliens->reset(); + QMessageBox msgBox; + int id = adloader->aliens.keys().at(ui->lvAliens->currentIndex().row()); + msgBox.setText(tr("Delete alien %1 id=%2").arg(adloader->aliens.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->aliens.remove(id); + alModel->refresh(adloader->aliens.values()); + ui->lvAliens->setModel((QAbstractItemModel * )alModel); + ui->lvAliens->reset(); ui->lvAliens->selectionModel()->setCurrentIndex(ui->lvAliens->model()->index(0,0),QItemSelectionModel::ClearAndSelect); - } + } } void MainWindow::on_leTwName_editingFinished() { - int id = adloader->towers.values().at(ui->lvTowers->currentIndex().row()).id; - adloader->towers[id].name = ui->leTwName->text(); - twModel->refresh(adloader->towers.values()); - ui->lvTowers->setModel((QAbstractItemModel * )twModel); + int id = adloader->towers.values().at(ui->lvTowers->currentIndex().row()).id; + adloader->towers[id].name = ui->leTwName->text(); + twModel->refresh(adloader->towers.values()); + ui->lvTowers->setModel((QAbstractItemModel * )twModel); } void MainWindow::on_sbTwBuildTime_valueChanged(int val) { - int id = adloader->towers.values().at(ui->lvTowers->currentIndex().row()).id; - adloader->towers[id].buildTime = val; + int id = adloader->towers.values().at(ui->lvTowers->currentIndex().row()).id; + adloader->towers[id].buildTime = val; } void MainWindow::on_sbTwCost_valueChanged(int val) { - int id = adloader->towers.values().at(ui->lvTowers->currentIndex().row()).id; - adloader->towers[id].cost = val; + int id = adloader->towers.values().at(ui->lvTowers->currentIndex().row()).id; + adloader->towers[id].cost = val; } 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; + int id = adloader->towers.values().at(ui->lvTowers->currentIndex().row()).id; + adloader->towers[id].splashId = adloader->splashes.values().at(index).id; } void MainWindow::on_sbTwReload_valueChanged(int val) { - int id = adloader->towers.values().at(ui->lvTowers->currentIndex().row()).id; - adloader->towers[id].reload = val; + int id = adloader->towers.values().at(ui->lvTowers->currentIndex().row()).id; + adloader->towers[id].reload = val; } void MainWindow::on_sbTwRadius_valueChanged(double val) { - int id = adloader->towers.values().at(ui->lvTowers->currentIndex().row()).id; - adloader->towers[id].radius = val; + int id = adloader->towers.values().at(ui->lvTowers->currentIndex().row()).id; + adloader->towers[id].radius = val; } void MainWindow::on_sbTwExpByShot_valueChanged(double val) { - int id = adloader->towers.values().at(ui->lvTowers->currentIndex().row()).id; - adloader->towers[id].expByShot = val; + int id = adloader->towers.values().at(ui->lvTowers->currentIndex().row()).id; + adloader->towers[id].expByShot = val; } void MainWindow::on_sbTwExpByDam_valueChanged(double val) { - int id = adloader->towers.values().at(ui->lvTowers->currentIndex().row()).id; - adloader->towers[id].expByDamage = val; + int id = adloader->towers.values().at(ui->lvTowers->currentIndex().row()).id; + adloader->towers[id].expByDamage = val; } void MainWindow::on_sbTwExpByKill_valueChanged(double val) { - int id = adloader->towers.values().at(ui->lvTowers->currentIndex().row()).id; - adloader->towers[id].expByKill = val; + int id = adloader->towers.values().at(ui->lvTowers->currentIndex().row()).id; + adloader->towers[id].expByKill = val; } void MainWindow::on_pbTwAdd_clicked() { - int i = 1; - while (adloader->towers.contains(i)) i++; - tbTower tw; - tw.id = i; - tw.name = tr("Tower"); + int i = 1; + while (adloader->towers.contains(i)) i++; + tbTower tw; + tw.id = i; + tw.name = tr("Tower"); tw.splashId = adloader->splashes.keys().at(0); tw.buildTime = 1; tw.cost = 1; tw.radius = 1; tw.reload = 1; - adloader->towers.insert(tw.id,tw); - int index = adloader->towers.keys().indexOf(i); - twModel->refresh(adloader->towers.values()); - ui->lvTowers->setModel((QAbstractItemModel * )twModel); - ui->lvTowers->reset(); + adloader->towers.insert(tw.id,tw); + int index = adloader->towers.keys().indexOf(i); + twModel->refresh(adloader->towers.values()); + ui->lvTowers->setModel((QAbstractItemModel * )twModel); + ui->lvTowers->reset(); ui->lvTowers->selectionModel()->setCurrentIndex(ui->lvTowers->model()->index(index,0),QItemSelectionModel::ClearAndSelect); } @@ -351,77 +374,77 @@ void MainWindow::on_pbTwDel_clicked() { if (adloader->towers.size() < 2) return; QMessageBox msgBox; - int id = adloader->towers.keys().at(ui->lvTowers->currentIndex().row()); - msgBox.setText(tr("Delete tower %1 id=%2").arg(adloader->towers.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->towers.remove(id); - twModel->refresh(adloader->towers.values()); - ui->lvTowers->setModel((QAbstractItemModel * )twModel); - ui->lvTowers->reset(); + int id = adloader->towers.keys().at(ui->lvTowers->currentIndex().row()); + msgBox.setText(tr("Delete tower %1 id=%2").arg(adloader->towers.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->towers.remove(id); + twModel->refresh(adloader->towers.values()); + ui->lvTowers->setModel((QAbstractItemModel * )twModel); + ui->lvTowers->reset(); ui->lvTowers->selectionModel()->setCurrentIndex(ui->lvTowers->model()->index(0,0),QItemSelectionModel::ClearAndSelect); - } + } } void MainWindow::on_leSplName_editingFinished() { - int id = adloader->splashes.values().at(ui->lvSplashes->currentIndex().row()).id; - adloader->splashes[id].name = ui->leSplName->text(); - splModel->refresh(adloader->splashes.values()); - ui->lvSplashes->setModel((QAbstractItemModel * )splModel); - ui->cbTwSplash->setModel((QAbstractItemModel * )splModel); + int id = adloader->splashes.values().at(ui->lvSplashes->currentIndex().row()).id; + adloader->splashes[id].name = ui->leSplName->text(); + splModel->refresh(adloader->splashes.values()); + ui->lvSplashes->setModel((QAbstractItemModel * )splModel); + ui->cbTwSplash->setModel((QAbstractItemModel * )splModel); } void MainWindow::on_sbSplSpeed_valueChanged(double val) { - int id = adloader->splashes.values().at(ui->lvSplashes->currentIndex().row()).id; - adloader->splashes[id].speed = val; + int id = adloader->splashes.values().at(ui->lvSplashes->currentIndex().row()).id; + adloader->splashes[id].speed = val; } void MainWindow::on_cbSplAutoControl_toggled(bool checked) { - int id = adloader->splashes.values().at(ui->lvSplashes->currentIndex().row()).id; - adloader->splashes[id].autoControl = checked; + int id = adloader->splashes.values().at(ui->lvSplashes->currentIndex().row()).id; + adloader->splashes[id].autoControl = checked; } void MainWindow::on_sbSplLifeTime_valueChanged(int val) { - int id = adloader->splashes.values().at(ui->lvSplashes->currentIndex().row()).id; - adloader->splashes[id].lifetime = val; + int id = adloader->splashes.values().at(ui->lvSplashes->currentIndex().row()).id; + adloader->splashes[id].lifetime = val; } void MainWindow::on_pbSplAdd_clicked() { - int i = 1; - while (adloader->splashes.contains(i)) i++; - tbSplash spl; - spl.id = i; - spl.name = tr("Splash"); + int i = 1; + while (adloader->splashes.contains(i)) i++; + tbSplash spl; + spl.id = i; + spl.name = tr("Splash"); spl.lifetime = 1; spl.speed = 1; - adloader->splashes.insert(spl.id,spl); - int index = adloader->splashes.keys().indexOf(i); - splModel->refresh(adloader->splashes.values()); - ui->lvSplashes->setModel((QAbstractItemModel * )splModel); - ui->lvSplashes->reset(); + adloader->splashes.insert(spl.id,spl); + int index = adloader->splashes.keys().indexOf(i); + splModel->refresh(adloader->splashes.values()); + ui->lvSplashes->setModel((QAbstractItemModel * )splModel); + ui->lvSplashes->reset(); ui->lvSplashes->selectionModel()->setCurrentIndex(ui->lvSplashes->model()->index(index,0),QItemSelectionModel::ClearAndSelect); - ui->cbTwSplash->setModel((QAbstractItemModel * )splModel); + ui->cbTwSplash->setModel((QAbstractItemModel * )splModel); } void MainWindow::on_pbSlpDel_clicked() { if (adloader->splashes.size() < 2) return; - QMessageBox msgBox; - int id = adloader->splashes.keys().at(ui->lvSplashes->currentIndex().row()); + QMessageBox msgBox; + int id = adloader->splashes.keys().at(ui->lvSplashes->currentIndex().row()); for (int i=0; itowers.size(); i++) { if (adloader->towers.values().at(i).splashId == id) @@ -433,20 +456,20 @@ void MainWindow::on_pbSlpDel_clicked() return; } } - msgBox.setText(tr("Delete splash %1 id=%2").arg(adloader->splashes.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->splashes.remove(id); - splModel->refresh(adloader->splashes.values()); - ui->lvSplashes->setModel((QAbstractItemModel * )splModel); - ui->lvSplashes->reset(); + msgBox.setText(tr("Delete splash %1 id=%2").arg(adloader->splashes.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->splashes.remove(id); + splModel->refresh(adloader->splashes.values()); + ui->lvSplashes->setModel((QAbstractItemModel * )splModel); + ui->lvSplashes->reset(); ui->lvSplashes->selectionModel()->setCurrentIndex(ui->lvSplashes->model()->index(0,0),QItemSelectionModel::ClearAndSelect); - ui->cbTwSplash->setModel((QAbstractItemModel * )splModel); - } + ui->cbTwSplash->setModel((QAbstractItemModel * )splModel); + } } @@ -456,3 +479,12 @@ void MainWindow::on_pushButton_clicked() ui->lvSplashes->selectionModel()->setCurrentIndex(ui->lvSplashes->model()->index(splIndex,0),QItemSelectionModel::ClearAndSelect); ui->tabWidget->setCurrentWidget(ui->tabSplashes); } + + +void MainWindow::on_cbTrigChance_clicked(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; +} diff --git a/ADeditor/mainwindow.h b/ADeditor/mainwindow.h index 23328f4..f1644bb 100644 --- a/ADeditor/mainwindow.h +++ b/ADeditor/mainwindow.h @@ -9,64 +9,68 @@ #include "alienmodel.h" #include "towermodel.h" #include "splashmodel.h" +#include "triggermodel.h" namespace Ui { - class MainWindow; + class MainWindow; } class MainWindow : public QMainWindow { - Q_OBJECT + Q_OBJECT public: - MainWindow(QWidget *parent = 0); - ~MainWindow(); + MainWindow(QWidget *parent = 0); + ~MainWindow(); protected: - void changeEvent(QEvent *e); + void changeEvent(QEvent *e); private: - Ui::MainWindow *ui; - Loader * adloader; - AlienModel * alModel; - TowerModel * twModel; - SplashModel * splModel; + Ui::MainWindow *ui; + Loader * adloader; + AlienModel * alModel; + TowerModel * twModel; + SplashModel * splModel; + TriggerModel* trigModel; void closeEvent(QCloseEvent *); private slots: - void on_pbReload_clicked(); + void on_cbTrigChance_clicked(bool checked); + void on_pbReload_clicked(); void on_pushButton_clicked(); void on_pbSlpDel_clicked(); - void on_pbSplAdd_clicked(); - void on_sbSplLifeTime_valueChanged(int ); - void on_cbSplAutoControl_toggled(bool checked); - void on_sbSplSpeed_valueChanged(double ); - void on_leSplName_editingFinished(); - void on_pbTwDel_clicked(); - void on_sbTwExpByKill_valueChanged(double ); - void on_sbTwExpByDam_valueChanged(double ); - void on_sbTwExpByShot_valueChanged(double ); - void on_sbTwRadius_valueChanged(double ); - void on_sbTwReload_valueChanged(int ); - void on_cbTwSplash_currentIndexChanged(int index); - void on_sbTwCost_valueChanged(int ); - void on_sbTwBuildTime_valueChanged(int ); - void on_pbTwAdd_clicked(); - void on_leTwName_editingFinished(); - 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 ); - void on_sbAlregeneration_valueChanged(double ); - void on_sbAlArmor_valueChanged(double ); - void on_sbAlHealth_valueChanged(double ); - void on_pbSave_clicked(); - void lvAliens_select(QModelIndex, QModelIndex); - void lvTowers_select(QModelIndex, QModelIndex); - void lvSplashes_select(QModelIndex, QModelIndex); - void on_cbAlRegeneration_toggled(bool checked); - void on_cbAlArmor_toggled(bool checked); + void on_pbSplAdd_clicked(); + void on_sbSplLifeTime_valueChanged(int ); + void on_cbSplAutoControl_toggled(bool checked); + void on_sbSplSpeed_valueChanged(double ); + void on_leSplName_editingFinished(); + void on_pbTwDel_clicked(); + void on_sbTwExpByKill_valueChanged(double ); + void on_sbTwExpByDam_valueChanged(double ); + void on_sbTwExpByShot_valueChanged(double ); + void on_sbTwRadius_valueChanged(double ); + void on_sbTwReload_valueChanged(int ); + void on_cbTwSplash_currentIndexChanged(int index); + void on_sbTwCost_valueChanged(int ); + void on_sbTwBuildTime_valueChanged(int ); + void on_pbTwAdd_clicked(); + void on_leTwName_editingFinished(); + 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 ); + void on_sbAlregeneration_valueChanged(double ); + void on_sbAlArmor_valueChanged(double ); + void on_sbAlHealth_valueChanged(double ); + void on_pbSave_clicked(); + void lvAliens_select(QModelIndex, QModelIndex); + void lvTowers_select(QModelIndex, QModelIndex); + void lvSplashes_select(QModelIndex, QModelIndex); + void lvTriggers_select(QModelIndex, QModelIndex); + void on_cbAlRegeneration_toggled(bool checked); + void on_cbAlArmor_toggled(bool checked); }; #endif // MAINWINDOW_H diff --git a/ADeditor/mainwindow.ui b/ADeditor/mainwindow.ui index 55b80b4..b059fdf 100644 --- a/ADeditor/mainwindow.ui +++ b/ADeditor/mainwindow.ui @@ -27,19 +27,13 @@ - 2 + 3 Aliens - - 2 - - - 2 - @@ -56,12 +50,6 @@ QFrame::Raised - - 2 - - - 2 - @@ -361,6 +349,19 @@ + + + + Qt::Vertical + + + + 20 + 40 + + + + @@ -516,7 +517,7 @@ - splash + Splash Qt::AlignCenter @@ -611,7 +612,7 @@ - + 0 @@ -619,10 +620,7 @@ - ExpbyShot - - - Qt::AlignCenter + ExpByShot @@ -641,7 +639,7 @@ - + 0 @@ -649,10 +647,7 @@ - ExpbyDam - - - Qt::AlignCenter + ExpByDam @@ -671,7 +666,7 @@ - + 0 @@ -679,10 +674,7 @@ - ExpbyKill - - - Qt::AlignCenter + ExpByKill @@ -769,6 +761,19 @@ + + + + Qt::Vertical + + + + 20 + 40 + + + + @@ -836,7 +841,7 @@ QFrame::Raised - + QLayout::SetDefaultConstraint @@ -1048,6 +1053,19 @@ + + + + Qt::Vertical + + + + 20 + 40 + + + + @@ -1086,10 +1104,334 @@ - + - Tab 2 + 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 + + + + + + @@ -1103,7 +1445,7 @@ - Reload + Cancel diff --git a/ADeditor/triggermodel.cpp b/ADeditor/triggermodel.cpp new file mode 100644 index 0000000..8912ad3 --- /dev/null +++ b/ADeditor/triggermodel.cpp @@ -0,0 +1,35 @@ +#include "triggermodel.h" + +TriggerModel::TriggerModel(QList mtriggers, QObject *parent) : + QAbstractListModel(parent) +{ + triggers = mtriggers; +} + + +void TriggerModel::refresh(QList mtriggers) +{ + triggers = mtriggers; +} + + +int TriggerModel::rowCount(const QModelIndex &) const +{ + return triggers.count(); +} + + +QVariant TriggerModel::data(const QModelIndex &index, int role) const +{ + if (!index.isValid()) + return QVariant(); + + if (index.row() >= triggers.size()) + return QVariant(); + + if (role == Qt::DisplayRole) + { + return triggers.at(index.row()).name; + } + return QVariant(); +} diff --git a/ADeditor/triggermodel.h b/ADeditor/triggermodel.h new file mode 100644 index 0000000..5ba9b4f --- /dev/null +++ b/ADeditor/triggermodel.h @@ -0,0 +1,22 @@ +#ifndef TRIGGERMODEL_H +#define TRIGGERMODEL_H + +#include +#include "../loader.h" + +class TriggerModel : public QAbstractListModel +{ + Q_OBJECT +public: + explicit TriggerModel(QList triggers, QObject *parent = 0); + int rowCount(const QModelIndex &parent = QModelIndex()) const; + QVariant data(const QModelIndex &index, int role) const; + void refresh(QList triggers); +signals: + +public slots: +private: + QList triggers; +}; + +#endif // TRIGGERMODEL_H diff --git a/aliendefender.pro.user b/aliendefender.pro.user index 9f9139b..7122a0f 100644 --- a/aliendefender.pro.user +++ b/aliendefender.pro.user @@ -16,65 +16,76 @@ Настольный компьютер Qt4ProjectManager.Target.DesktopTarget 0 - 0 0 - - - qmake - QtProjectManager.QMakeBuildStep - - QMLINSPECTOR_PATH=/usr/share/qtcreator/qmljsdebugger - - - - Сборка - Qt4ProjectManager.MakeStep - false - - - - 2 - Build - ProjectExplorer.BuildSteps.Build + + qmake + QtProjectManager.QMakeBuildStep + - - - Сборка - Qt4ProjectManager.MakeStep - true - - distclean - - - - 1 - Clean - ProjectExplorer.BuildSteps.Clean + + Сборка + Qt4ProjectManager.MakeStep + false + + - 2 + 2 + + Сборка + Qt4ProjectManager.MakeStep + true + + clean + + + + 1 + false + + Отладка + Qt4ProjectManager.Qt4BuildConfiguration + 2 + C:/Users/Andrey/Desktop/build-AD + 9 + 2 + true + + + + qmake + QtProjectManager.QMakeBuildStep + + + + Сборка + Qt4ProjectManager.MakeStep + false + + + + 2 + + Сборка + Qt4ProjectManager.MakeStep + true + + clean + + + + 1 false Релиз Qt4ProjectManager.Qt4BuildConfiguration - 2 - /home/peri4/pprojects/aliendefender - 2 - 0 + 0 + C:/Users/Andrey/Desktop/aliendefender-build-desktop + 9 + 2 true - 1 - - - 0 - Deploy - ProjectExplorer.BuildSteps.Deploy - - 1 - No deployment - ProjectExplorer.DefaultDeployConfiguration - - 1 + 2 aliendefender Qt4ProjectManager.Qt4RunConfiguration @@ -85,8 +96,8 @@ false false - false - + true + C:\Users\Andrey\Desktop\aliendefender 1 @@ -95,12 +106,8 @@ ProjectExplorer.Project.TargetCount 1 - - ProjectExplorer.Project.Updater.EnvironmentId - {4d5b06df-4184-42d4-9dfd-5c7caaa07ab2} - ProjectExplorer.Project.Updater.FileVersion - 8 + 4 diff --git a/data2.xml b/data2.xml index 8ca818f..1a003ff 100644 --- a/data2.xml +++ b/data2.xml @@ -3,8 +3,8 @@ - - + + @@ -23,42 +23,42 @@ - + - - + + - - - + + + + + + + + + - - - - - - - - - - - + + + + + @@ -78,15 +78,15 @@ - + - + - - + + diff --git a/schema.xml b/schema.xml index 5611a66..c9e29a2 100644 --- a/schema.xml +++ b/schema.xml @@ -110,8 +110,8 @@ - - + +