Files
aliendefender/towers.cpp
2010-08-27 14:04:05 +04:00

69 lines
1.3 KiB
C++

#include "towers.h"
Towers::Towers(Game_Data *gd, QObject *parent) :
QObject(parent)
{
gameData = gd;
}
bool Towers::addTower(int playerId, int srcId, QPoint pos)
{
//QByteArray ar;
//ar << pos;
if (playerId < 0 || playerId >= gameData->players.size())
{
qCritical("ERROR out of players range");
return false;
}
if (srcId < 0 || srcId >= gameData->players.at(playerId)->srcTowers.size())
{
qCritical("ERROR out of towers range");
return false;
}
TowerType tw;
tw.src = srcId;
tw.imgType = gameData->players.at(playerId)->srcTowers.at(srcId).imgType;
tw.PlayerId = playerId;
tw.angle = 0;
tw.build = 0;
tw.reload = 0;
tw.aim = -1;
tw .oldAim = -1;
if (gameData->map->addTowerOnMap(playerId,pos))
{
tw.pos = pos;
gameData->map->printMap();
gameData->curTowers.insert(tw.pos,tw);
return true;
}
return false;
}
void Towers::delTower(QPoint pos)
{
gameData->curTowers.remove(pos);
}
void Towers::update()
{
for (int i=0; i<gameData->curTowers.size(); i++)
{
TowerType tw = gameData->curTowers.values().at(i);
srcTowerType stw = gameData->players.at(tw.PlayerId)->srcTowers.at(tw.src);
if (tw.build < stw.buildTime)
{
tw.build++;
} else {
// TODO: finding aim alien in this place
if (tw.reload < stw.reload)
{
tw.reload++;
} else {
emit shot(stw.splashes.at(0), 0, tw);
}
}
}
}