fix bug in del tower and some ui changes

This commit is contained in:
2011-08-28 15:54:43 +04:00
parent 894e55bb41
commit 9f90c1e676
15 changed files with 212 additions and 114 deletions

View File

@@ -10,14 +10,24 @@ Form::Form(QWidget *parent) :
ui->setupUi(this);
graphics = new AD_Graphics(&core);
ui->widget->layout()->addWidget(graphics);
TouchButtFrame * tbf = new TouchButtFrame();
tbf = new TouchButtFrame();
tbf->setOrientation(Qt::Vertical);
morphtbf = new TouchButtFrame();
morphtbf->setOrientation(Qt::Vertical);
tbf->addButton(tr("delete"));
foreach (srcTowerType i, core.addata->players.at(0)->srcTowers)
{
tbf->addButton(i.name);
QPixmap pix(32,32);
pix.fill(Qt::transparent);
QPainter p;
p.begin(&pix);
//p.fillRect(pix.rect(),Qt::transparent);
p.setRenderHints(QPainter::SmoothPixmapTransform);
p.drawImage(pix.rect(),*(i.image));
p.end();
cursors.append(pix);
tbf->addButton(i.name+tr("\n %1 $").arg(i.cost));
tbf->Button(cursors.size())->setIcon(QIcon(pix));
//QPushButton * butt = new QPushButton(i.name);
//towerButtons << butt;
//butt->setAutoDefault(true);
@@ -30,7 +40,7 @@ Form::Form(QWidget *parent) :
connect(tbf,SIGNAL(click(int)),tbf,SLOT(set_green(int)));
connect(morphtbf,SIGNAL(click(int)),this,SLOT(towerMorph(int)));
connect(graphics,SIGNAL(add_tow(QPoint)),this,SLOT(add_tow(QPoint)));
connect(core.adtowers,SIGNAL(tower_killed(QPoint)),graphics,SLOT(towerKilled(QPoint)));
// connect(core.adtowers,SIGNAL(tower_killed(QPoint)),graphics,SLOT(towerKilled(QPoint)));
connect(core.addata->aliens,SIGNAL(alien_killed(int)),graphics,SLOT(alienKilled(int)));
connect(graphics,SIGNAL(cancel()),this,SLOT(cancel()));
connect(graphics,SIGNAL(selected_tower_changed(QPoint)),this,SLOT(selectedTowerChanged(QPoint)));
@@ -55,7 +65,9 @@ void Form::towerBuild(int index)
buildTowerId = index-1;
if (index == 0) buildTowerId = -9;
graphics->setBuilding(true);
setCursor(Qt::CrossCursor);
if (index != 0)
setCursor(QCursor(cursors.at(index-1)));
else setCursor(Qt::ForbiddenCursor);
}
@@ -64,8 +76,8 @@ void Form::add_tow(QPoint pnt)
if (buildTowerId == -1) return;
if (buildTowerId == -9)
{
graphics->towerKilled(pnt);
core.adtowers->delTower(pnt);
emit tower_killed();
return;
}
core.adtowers->addTower(0,buildTowerId,pnt);
@@ -82,6 +94,13 @@ void Form::cancel()
void Form::timerEvent(QTimerEvent *)
{
for (int i=1; i<tbf->buttCount(); ++i)
{
bool b = core.adtowers->canBuild(i-1,0);
tbf->Button(i)->setEnabled(b);
if (b) tbf->set_green(i);
else tbf->set_red(i);
}
QString twstr;
QString alstr;
if (!graphics->selectedTower().isNull())
@@ -93,7 +112,12 @@ void Form::timerEvent(QTimerEvent *)
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-1);
for (int i=0; i<tw.src->morphs.size(); ++i)
morphtbf->Button(i)->setEnabled(core.adtowers->canMorph(tw.pos,i));
{
bool m = core.adtowers->canMorph(tw.pos,i);
morphtbf->Button(i)->setEnabled(m);
if (m) morphtbf->set_green(i);
else morphtbf->set_red(i);
}
}
if (graphics->selectedAlien() != -1)
{
@@ -111,6 +135,7 @@ void Form::timerEvent(QTimerEvent *)
+ tr("\n towers %1").arg(core.addata->curTowers.size())
+ tr("\n splashes %1").arg(core.addata->curSplashes.size())
+ twstr + alstr);
}
@@ -126,7 +151,7 @@ void Form::selectedTowerChanged(QPoint id)
if (id.isNull()) return;
srcTowerType * t = core.addata->curTowers[id].src;
piForeachCA(i, t->morphs)
morphtbf->addButton(i.morph->name);
morphtbf->addButton(i.morph->name+tr("\n %1 $, %2 exp").arg(i.cost).arg(i.expRequired));
}