/* Glowna czasc modulu Interfejs - zawiera deklaracje klasy Interfejs,
ktorej obiekty sa odpowiedzialne za przebieg i wyglad zewnetrzny gry
autor : Anna Doros
GRUPA 5
*/
#ifndef __INTERFEJS_H
#define __INTERFEJS_H
#include <qwidget.h>
#include <qtimer.h>
#include <qimage.h>
#include <qlist.h>
#include <qaccel.h>
#include "ElementySwiata.h"
#include "StatystykaGry.h"
#include "StatystykaEtapu.h"
#include "Informacje.h"
#include "WejscieWyjscie.h"
#include "parametry.h"
#include "Guzik.h"
#include "OknoGry.h"
#include "stale_Interfejs.h"
#include "ObrazPlanszy.h"
#include "sciezki.h"
class Interfejs: public QWidget {
Q_OBJECT
protected:
ObrazPlanszy * obraz_planszy;
Plansza * plansza;
WejscieWyjscie * wejscie_wyjscie;
QTimer * timer; /* do sterowania gra */
QTimer * timer_czas; /* do odmierzania czasu */
QTimer * timer_wypusc; /* do wypuszczania lemingow */
QAccel * skrot; /* skrot klawiszowy do zdjecia */
int ile_wypuscic; /* ile lemingow nalezy wypuscic z wejscia */
int ile_na_planszy; /* ile lemingow znajduje sie na planszy */
int czy_pauza; /* opisuje stan pauzy ( aktywna lub nie ) */
int czy_zaglada; /* czy etap jeszcze trwa (nie jest konczony) */
int odstep; /* jaki jest odstep miedzy wychodzacymi
z wejscia lemingami - aby zachowac
jednolity odstep mimo uzywania pauzy */
int odstep_czas; /* aby zachowac prawidlowe odmierzanie czasu
mimo uzywania pauzy */
int nowy_element; /* typ nowego elementu */
int parametry_wczytane; /* czy wczytane parametry kolejnego etapu */
Param_etap parametry_etapu; /* parametry aktualnego etapu */
StatystykaEtapu * stat_etap; /* statystyka etapu */
StatystykaGry * stat_gra; /* statystyka gry */
OknoGry * okno_gry; /* okno gry = guziki + pasek informacyjny */
Guzik * guziki[ILE_GUZIKOW]; /* guziki innych okien */
char * sloty[ILE_DODATKOW]; /* tablica sloty(do dodawania lemingow specjalnych) */
QList<ElementSwiata> lista_elem; /* lista elementow swiata */
int czas; /* czas trwania etapu */
int do_przeprowadzenia; /* liczba lemingow do przeprowadzenia */
int dodatkowi[ILE_DODATKOW]; /* liczba dodatkowych komandosow, bomb */
public:
Interfejs(QWidget *parent=0,const char *name=0);
~Interfejs();
public slots:
void nowyBloker(Para,int);
void nowaBomba(Para,int);
void nowyKopaczDolny(Para,int);
void nowyKopaczPoziomy(Para,int);
void nowyKopaczPionowy(Para,int);
void nowyKopaczGorny(Para,int);
void nowySchodkarzGorny(Para,int);
void nowySchodkarzDolny(Para,int);
void nowySchodkarzPoziomy(Para,int);
void nowyPijus(Para,int);
void dodajBlokera();
void dodajBombe();
void dodajKopaczaDolnego();
void dodajKopaczaPoziomego();
void dodajKopaczaPionowego();
void dodajKopaczaGornego();
void dodajSchodkarzaGornego();
void dodajSchodkarzaDolnego();
void dodajSchodkarzaPoziomego();
void dodajPijusa();
void obsluzGre();
void wypuscLeminga();
void pauza();
void aktualizujCzas();
void jakiOdstep();
void mouseMoveEvent(QMouseEvent* m){ emit jestMysz(); };
void nowaGra();
void gramyOdPoczatku();
void kolejnyEtap();
void przygotuj();
void pokazZasadyGry();
void pokazInformacje();
void zaglada();
void zakonczenie();
protected:
void pokazOknoPoczatkowe();
void pokazOknoWejsciaDoEtapu();
void pokazOknoWyjsciaZEtapu();
void rozpocznijKolejnyEtap();
void dodaj(int);
void podsumujEtap();
void zakonczEtap();
signals:
/* do przesylania informacji do obrazu planszy o nowym elemencie: */
void nowy(Wejscie*);
void nowy(Wyjscie*);
void nowy(Leming*);
void nowy(Bloker*);
void nowy(Bomba*);
void nowy(SchodkarzGorny*);
void nowy(SchodkarzPoziomy*);
void nowy(SchodkarzDolny*);
void nowy(KopaczSkosnyWGore*);
void nowy(KopaczPoziomy*);
void nowy(KopaczPionowy*);
void nowy(KopaczSkosnyWDol*);
void nowy(Pijus*);
void usun(ElementSwiata*);
void kursor(typ_rodzaj);
/* do przesylania informacji do obrazu planszy o polozeniu myszy: */
void jestMysz();
/* aktywowanie odswiezania obrazu planszy: */
void rusz();
void ruszPauza();
};
#endif