00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #ifndef MAPA_H
00022 #define MAPA_H
00023
00024 #include <QList>
00025 #include <QPoint>
00026 #include <QPixmap>
00027 #include <QWidget>
00028 #include <QLineEdit>
00029 #include <QDrag>
00030 #include "ventanaprincipal.h"
00031 #include "minimapa.h"
00032 #include "tile.h"
00033
00034 class QDragEnterEvent;
00035 class QDropEvent;
00036 class QMouseEvent;
00037 class Minimapa;
00038 class Tile;
00039 class VentanaPrincipal;
00040
00041 class Mapa : public QLabel
00042 {
00043 Q_OBJECT
00044
00045 public:
00053 Mapa(VentanaPrincipal *parent ,int tanchura,int taltura, int tnumanchura, int tnumaltura);
00055 ~Mapa();
00057 int AnchuraTile() const { return tanchura;}
00060 void setAnchuraTile(int a) { tanchura=a;}
00062 int AlturaTile() const { return taltura;}
00065 void setAlturaTile(int a) { taltura=a;}
00067 int AnchuraTileZoom() const { return tanchuraZ;}
00069 int AlturaTileZoom() const { return talturaZ;}
00071 int NumAnchuraTile() const { return tnumanchura;}
00074 void setNumAnchuraTile(int n) {tnumanchura=n;}
00076 int NumAlturaTile() const { return tnumaltura;}
00079 void setNumAlturaTile(int n) { tnumaltura=n;}
00081 int TilePosicion(int x, int y) const {return matrizTiles[x][y];}
00083 void setTilePosicion(int valor,int x, int y) { matrizTiles[x][y] = valor;}
00085 QRect RectanguloPosicion(int x, int y) const { return QRect(x*AnchuraTileZoom(),y*AlturaTileZoom(),AnchuraTileZoom(),AlturaTileZoom());}
00087 QPixmap ImagenPosicion(int i) const { return listatiles->ImagenTile(i);}
00089 void setColorRejilla(QColor c) { crejilla = c;}
00091 void setColorFondo(QColor f) { cfondo = f;}
00093 void setColorSel(QColor s) { csel = s;}
00095 QColor ColorRejilla() const { return crejilla; }
00097 QColor ColorFondo() const { return cfondo;}
00099 QColor ColorSel() const { return csel; }
00102 void Zoom(double factor);
00104 int ModificadoDesdeGuardado() const { return modificado;}
00106 void MapaGuardado() { modificado = 0; }
00108 void AsignarListaTile(Tile *tiles);
00110 void setMinimapa(Minimapa *m) { minimapa=m;}
00112 void SeleccionActivar(bool);
00114 bool SeleccionActiva() const {return seleccion;}
00116 void RellenoActivar(bool);
00118 bool RellenoActivo() const {return relleno;}
00120 void BorrarActivar(bool);
00122 bool BorrarActivado() const {return borrar;}
00124 void RellenoConjuntoActivar(bool);
00126 bool RellenoConjuntoActivado() {return rellenoConjunto;}
00128 void Borrar(QRect rect);
00130 void Rellenar(QRect rect);
00132 int RellenarRecursiva(QPoint pos);
00134 void RellenarConjunto(QPoint pos);
00136 void PegarActivar(bool);
00138 void ActivarRejilla(bool);
00140 void Copiar();
00142 void Cortar();
00144 void Pegar();
00146 void Eliminar();
00148 void Deshacer();
00150 void Rehacer();
00152 void Redimensionar(int tanchura, int taltura, int tnumanchura, int tnumaltura);
00154 void InsertarRehacer(int tile, QPoint pos);
00156 void InsertarDeshacer(int tile, QPoint pos);
00158 void InsertarNumRehacer(int tipo,int num);
00160 void InsertarNumDeshacer(int tipo,int num);
00162 void ActualizarDeshacer(int tile);
00164 void ActualizarRehacer(int tile);
00166 const QRect TileSeleccionado(const QPoint &posicion);
00168 bool posLibre(int x, int y) const{ return (matrizTiles[x][y])==-1;}
00170 bool posCorrecta(QPoint pos) { return pos.x() < AnchuraTileZoom()*NumAnchuraTile() && pos.x() >= 0 &&
00171 pos.y() < AlturaTileZoom()*NumAlturaTile() && pos.y() >=0; }
00172 protected:
00174 void dragEnterEvent(QDragEnterEvent *event);
00176 void dragLeaveEvent(QDragLeaveEvent *event);
00178 void dragMoveEvent(QDragMoveEvent *event);
00180 void dropEvent(QDropEvent *event);
00182 void mousePressEvent(QMouseEvent *event);
00184 void mouseMoveEvent(QMouseEvent *);
00186 void paintEvent(QPaintEvent *event);
00188 void leaveEvent(QEvent *event);
00189
00190 private:
00191 int **matrizTiles;
00192
00193 QList<int> tilescopiar,tilesdeshacer,tilesrehacer,tilemov,tilemovr;
00194 QList<QPoint> poscopiar,posdeshacer,posrehacer,posmovant,posmovact,posmovantr,posmovactr;
00195 QList<QPoint> numdeshacer,numrehacer;
00196 QRect rectcopiar;
00197 QRect rectsel,rectselant,rectselsi,rectpress;
00198
00199 QLineEdit prueba;
00200 QLineEdit prueba1;
00201
00202 QColor crejilla,cfondo,csel;
00203 Tile *listatiles;
00204 Minimapa *minimapa;
00205 VentanaPrincipal * ventana;
00206
00207 bool salida,mov,seleccion,relleno,borrar,rellenoConjunto,rejillaactiva,rejillapintada,pegado;
00208 int modificado,contador,contador1,pintarc,pintarcompleto,factorzoom;
00209 int tanchura,taltura,tnumanchura,tnumaltura,tanchuraZ,talturaZ;
00210 };
00211
00212 #endif