#include "form.h" #include "ui_form.h" #include "touchbuttframe.h" Form::Form(QWidget *parent) : QWidget(parent), ui(new Ui::Form) { buildTowerId = -1; cur_tow = QPoint(); cur_al = -1; ui->setupUi(this); graphics = new AD_Graphics(&core); ui->widget->layout()->addWidget(graphics); TouchButtFrame * tbf = new TouchButtFrame(); tbf->addButton(tr("delete")); foreach (srcTowerType i, core.addata->players.at(0)->srcTowers) { tbf->addButton(i.name); //QPushButton * butt = new QPushButton(i.name); //towerButtons << butt; //butt->setAutoDefault(true); //butt->setAutoExclusive(true); //butt->setCheckable(true); } ui->gbTowers->layout()->addWidget(tbf); connect(tbf,SIGNAL(click(int)),this,SLOT(towerBuild(int))); connect(tbf,SIGNAL(click(int)),tbf,SLOT(set_green(int))); connect(graphics,SIGNAL(add_tow(QPoint)),this,SLOT(add_tow(QPoint))); connect(graphics,SIGNAL(tower_select(QPoint)),this,SLOT(towerSelected(QPoint))); connect(graphics,SIGNAL(alien_select(int)),this,SLOT(alienSelected(int))); connect(graphics,SIGNAL(cancel()),this,SLOT(cancel())); this->startTimer(50); } Form::~Form() { delete ui; } void Form::on_pbNextWave_clicked() { core.nextWave(); } void Form::towerBuild(int index) { buildTowerId = index-1; if (index == 0) buildTowerId = -9; graphics->setBuilding(true); setCursor(Qt::CrossCursor); } void Form::add_tow(QPoint pnt) { if (buildTowerId == -1) return; if (buildTowerId == -9) {core.adtowers->delTower(pnt); return;} core.adtowers->addTower(0,buildTowerId,pnt); } //void Form::del_tow(QPoint pnt) //{ // core.adtowers->delTower(pnt); //} void Form::cancel() { buildTowerId = -1; graphics->setBuilding(false); setCursor(Qt::ArrowCursor); } void Form::timerEvent(QTimerEvent *) { QString twstr; QString alstr; if (!cur_tow.isNull()) { if (core.addata->curTowers.contains(cur_tow)) { TowerType tw = core.addata->curTowers.value(cur_tow); twstr = "\n\n " + tw.src->name; if (tw.isBilding) twstr += tr("\n build %1/%2").arg(tw.build).arg(tw.src->buildTime); twstr += tr("\n player %1\n exp %2").arg(tw.PlayerId).arg(tw.experience); twstr += tr("\n reload %1/%2\n alien %3").arg(tw.reload).arg(tw.src->reload).arg(tw.aim); twstr += tr("\n cost %1\n radius %2").arg(tw.src->cost).arg(tw.src->radius); } else { cur_tow = QPoint(); } } if (cur_al != -1) { if (core.addata->aliens->curAliens.contains(cur_al)) { AlienType al = core.addata->aliens->curAliens.value(cur_al); alstr = "\n\n " + al.src->name; if (al.src->isFlying) alstr += tr("\n flying"); else alstr += tr("\n ground"); alstr += tr("\n health %1/%2").arg(al.health).arg(al.src->health); alstr += tr("\n speed %1/%2").arg(al.speed).arg(al.src->speed); alstr += tr("\n armor %1\n regeneration %2").arg(al.src->armor).arg(al.src->regeneration); alstr += tr("\n prise %1").arg(al.src->prise); } else { cur_al = -1; } } if (!core.addata->aliens->curAliens.contains(cur_al)) cur_al = -1; ui->lbInfo->setText(tr(" money %1 \n missing %2").arg(core.addata->players.at(0)->money).arg(core.addata->aliens->missingAliens()) + tr("\n aliens %1").arg(core.addata->aliens->curAliens.size()) + tr("\n towers %1").arg(core.addata->curTowers.size()) + tr("\n splashes %1").arg(core.addata->curSplashes.size()) + twstr + alstr); } void Form::towerSelected(QPoint id) { cur_tow = id; } void Form::alienSelected(int id) { cur_al = id; }