mundoqt.h

Ir para a documentação deste ficheiro.
00001 #ifndef _MUNDO_QT_H
00002 #define _MUNDO_QT_H
00003 
00004 #include <QWidget>
00005 #include <QMouseEvent>
00006 #include <QPaintEvent>
00007 #include <QMutex>
00008 #include <QMenu>
00009 #include "stat.h"
00010 #include "info.h"
00011 #include "../core/mundo.h"
00012 
00013 /* Constates para valores padroes */
00014 #define TAMANHO_X 8192
00015 #define TAMANHO_Y 6144
00016 
00017 #define ENERGIA_GRAO 200
00018 #define TETO_ENERGETICO ((TAMANHO_X*TAMANHO_Y)/900)
00019 
00020 #define PROBABILIDADE_MUTACAO 60
00021 #define INTENSIDADE_MUTACAO 1
00022 
00023 class MundoQT : public QWidget, public Mundo
00024 {
00025     Q_OBJECT
00026 
00027 public:
00028 
00029     /* Constructor */
00030      MundoQT(QWidget *parent = 0, Qt::WFlags f = 0);
00031      ~MundoQT();
00032 
00033     /* Controle de execucao */
00034     QMutex* getMutex();
00035     void setMutex(QMutex *m);
00036     bool executando;
00037 
00038     /* Seta menus popup */
00039     void setMenuBiota(QMenu *m);
00040     void setMenuGrao(QMenu *m);
00041     void setMenuVoid(QMenu *m);
00042     void setMenuParede(QMenu *m);
00043 
00044     /* Seta telas */
00045     inline void setStat(Stat *s) { stat = s; }
00046     inline void setInfo(Info *i) { info = i; }
00047 
00048     /* getters */
00049     inline Biota getSelecionado()
00050     {
00051         return selecionado->biota;
00052     }
00053 
00054 signals:
00055 
00056     void changeHorizontalBar(int);
00057     void changeVerticalBar(int);
00058     void estadoModificado(QString texto);
00059 
00060 public slots:
00061 
00062     void offsetxChanged(int);
00063     void offsetyChanged(int);
00064 
00065     void atualizar();
00066     void estatistica();
00067 
00068     void limpar();
00069     void reiniciar();
00070 
00071     void novaParede();
00072     void removerParede();
00073     void novoGrao();
00074     void removerGrao();
00075     void novoBiota();
00076     void salvarBiota();
00077     void abrirBiota();
00078     void removerBiota();
00079     void mutacaoBiota();
00080 
00081     inline void fixarSelecionado() {fixar = !fixar;}
00082     inline void autoSelecionar() {autoSelec = !autoSelec;}
00083 
00084     void maisVelho();
00085     void maisEnergia();
00086     void geracaoMaisNova();
00087     void geracaoMaisAntiga();
00088     void maisFilhos();
00089 
00090     void abrirSimulacao();
00091     void salvarSimulacao();
00092 
00093 protected:
00094 
00095     /* Operacoes */
00096     void posicionarParede(Vetor<float> pos);
00097     bool selecionarParede(Vetor<float> pos);
00098 
00099     /* Desenhar */
00100     void paintEvent(QPaintEvent *event);
00101 
00102     /* Eventos do mouse */
00103     void mouseDoubleClickEvent ( QMouseEvent * event );
00104     void mouseMoveEvent ( QMouseEvent * event );
00105     void mousePressEvent ( QMouseEvent * event );
00106     void wheelEvent ( QWheelEvent * event );
00107     void mouseReleaseEvent ( QMouseEvent * event );
00108 
00109 private:
00110 
00111     /* Paredes */
00112     struct NohParede *parede_selecionada;
00113 
00114     #define PONTA_INICIO 0
00115     #define PONTA_FIM 1
00116     #define MEIO 2
00117 
00118     int pontaSelecionada;
00119     Vetor<float> ancora_parede;
00120 
00121     /* Representacao grafica */
00122     float zm;
00123     float offsetx;
00124     float offsety;
00125 
00126     /* Interação com usuario */
00127     Vetor<float> lastPos;
00128     QMenu *menuBiota;
00129     QMenu *menuGrao;
00130     QMenu *menuVoid;
00131     QMenu *menuParede;
00132     void mudaBarraStatus();
00133     bool fixar;
00134     bool autoSelec;
00135 
00136     /* Controle de execucao */
00137     QMutex *mutex;
00138 
00139     /* telas */
00140     Info *info;
00141     Stat *stat;
00142 };
00143 
00144 #endif

Gerado em Mon May 4 14:52:59 2009 para Simvida por  doxygen 1.5.8