136 lines
3.7 KiB
C++
136 lines
3.7 KiB
C++
#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;
|
|
}
|
|
|
|
|