some improve game ui and bugfixes
This commit is contained in:
89
form.cpp
89
form.cpp
@@ -8,39 +8,40 @@ Form::Form(QWidget *parent) :
|
||||
{
|
||||
buildTowerId = -1;
|
||||
ui->setupUi(this);
|
||||
ui->pbSell->hide();
|
||||
graphics = new AD_Graphics(&core);
|
||||
ui->widget->layout()->addWidget(graphics);
|
||||
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(tr("delete"));
|
||||
for(int j=0; j<core.addata->players.at(0)->srcTowers.size(); ++j)
|
||||
{
|
||||
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);
|
||||
//butt->setAutoExclusive(true);
|
||||
//butt->setCheckable(true);
|
||||
srcTowerType i = core.addata->players.at(0)->srcTowers.at(j);
|
||||
if (i.isRoot)
|
||||
{
|
||||
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()-1)->setIcon(QIcon(pix));
|
||||
buildTowers.append(j);
|
||||
}
|
||||
}
|
||||
ui->gbTowers->layout()->addWidget(tbf);
|
||||
ui->verticalLayout_2->addWidget(morphtbf);
|
||||
connect(tbf,SIGNAL(click(int)),this,SLOT(towerBuild(int)));
|
||||
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(graphics,SIGNAL(add_tow(QPoint,bool)),this,SLOT(add_tow(QPoint,bool)));
|
||||
// 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)));
|
||||
@@ -62,25 +63,23 @@ void Form::on_pbNextWave_clicked()
|
||||
|
||||
void Form::towerBuild(int index)
|
||||
{
|
||||
buildTowerId = index-1;
|
||||
if (index == 0) buildTowerId = -9;
|
||||
buildTowerId = buildTowers.at(index);
|
||||
graphics->setBuilding(true);
|
||||
if (index != 0)
|
||||
setCursor(QCursor(cursors.at(index-1)));
|
||||
else setCursor(Qt::ForbiddenCursor);
|
||||
setCursor(QCursor(cursors.at(index)));
|
||||
}
|
||||
|
||||
|
||||
void Form::add_tow(QPoint pnt)
|
||||
void Form::add_tow(QPoint pnt, bool shift)
|
||||
{
|
||||
if (buildTowerId == -1) return;
|
||||
if (buildTowerId == -9)
|
||||
{
|
||||
graphics->towerKilled(pnt);
|
||||
core.adtowers->delTower(pnt);
|
||||
return;
|
||||
}
|
||||
// if (buildTowerId == -9)
|
||||
// {
|
||||
// graphics->towerKilled(pnt);
|
||||
// core.adtowers->delTower(pnt);
|
||||
// return;
|
||||
// }
|
||||
core.adtowers->addTower(0,buildTowerId,pnt);
|
||||
if (!shift) cancel();
|
||||
}
|
||||
|
||||
|
||||
@@ -94,9 +93,9 @@ void Form::cancel()
|
||||
|
||||
void Form::timerEvent(QTimerEvent *)
|
||||
{
|
||||
for (int i=1; i<tbf->buttCount(); ++i)
|
||||
for (int i=0; i<tbf->buttCount(); ++i)
|
||||
{
|
||||
bool b = core.adtowers->canBuild(i-1,0);
|
||||
bool b = core.adtowers->canBuild(buildTowers.at(i),0);
|
||||
tbf->Button(i)->setEnabled(b);
|
||||
if (b) tbf->set_green(i);
|
||||
else tbf->set_red(i);
|
||||
@@ -111,6 +110,8 @@ void Form::timerEvent(QTimerEvent *)
|
||||
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-1);
|
||||
if (!tw.src->triggers.isEmpty())
|
||||
twstr += tr("\n damage %1").arg(tw.src->triggers.at(0).damage);
|
||||
for (int i=0; i<tw.src->morphs.size(); ++i)
|
||||
{
|
||||
bool m = core.adtowers->canMorph(tw.pos,i);
|
||||
@@ -131,6 +132,7 @@ void Form::timerEvent(QTimerEvent *)
|
||||
alstr += tr("\n prise %1").arg(al.src->prise);
|
||||
}
|
||||
ui->lbInfo->setText(tr(" money %1 \n missing %2").arg(core.addata->players.at(0)->money).arg(core.addata->aliens->missingAliens())
|
||||
+ tr("\n wave %1").arg(core.addata->curWave+1)
|
||||
+ 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())
|
||||
@@ -148,7 +150,12 @@ void Form::on_sbSpeed_valueChanged(double val)
|
||||
void Form::selectedTowerChanged(QPoint id)
|
||||
{
|
||||
morphtbf->deleteButtons();
|
||||
if (id.isNull()) return;
|
||||
if (id.isNull())
|
||||
{
|
||||
ui->pbSell->hide();
|
||||
return;
|
||||
}
|
||||
ui->pbSell->show();
|
||||
srcTowerType * t = core.addata->curTowers[id].src;
|
||||
piForeachCA(i, t->morphs)
|
||||
morphtbf->addButton(i.morph->name+tr("\n %1 $, %2 exp").arg(i.cost).arg(i.expRequired));
|
||||
@@ -163,3 +170,15 @@ void Form::towerMorph(int index)
|
||||
graphics->selectTower(core.addata->curTowers[id].item);
|
||||
selectedTowerChanged(graphics->selectedTower());
|
||||
}
|
||||
|
||||
|
||||
void Form::on_pbSell_clicked()
|
||||
{
|
||||
QPoint pnt = graphics->selectedTower();
|
||||
if (!pnt.isNull())
|
||||
{
|
||||
graphics->towerKilled(pnt);
|
||||
core.adtowers->delTower(pnt);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user