#ifndef TOWERS_H
#define TOWERS_H

#include "game_data.h"

class Towers : public QObject
{
    Q_OBJECT
public:
    explicit Towers(Game_Data * gd, QObject *parent = 0);
    bool addTower(int playerId, int srcId, QPoint pos);
    void delTower(QPoint pos);
    bool morphTower(QPoint id, int index);
    bool canBuild(int id, int player) {return gameData->players[player]->money >= gameData->players[player]->srcTowers[id].cost;}
    bool canMorph(QPoint id, int index)
    {
        TowerType * t = &(gameData->curTowers[id]);
        return gameData->players[t->PlayerId]->money >= t->src->morphs[index].cost &&
                t->experience >= t->src->morphs[index].expRequired &&
                !t->isBilding;
    }
    void update();
    void setScene(QGraphicsScene * scene_) {scene = scene_;}

signals:
    void shot(const TowerType &tow);
    //    void tower_killed(QPoint id);

public slots:

private:
    Game_Data * gameData;
    QGraphicsScene * scene;
};

#endif // TOWERS_H
