Donc mon idée serait de faire :
int main(int argc, char *argv[])
{
Demarrage().Start();
return 0;
}
Je voudrais donc que ça lance automatiquement Ecran::Ecran(), pour initialiser tout SDL, et ensuite lancer la boucle de choix "DVD", "Films" ou "Jeux".
class Ecran
{
public:
Ecran();
void DrawIMG(SDL_Surface *img, int x, int y);
// les fonctions suivantes seront redéfinies dans chaque classe et sont donc virtuelles
virtual void Start(); // fonction de "démarrage"
virtual void DrawAll(); // va dessiner tous les élements graphiques par itération
virtual void ProcessSelection(); // action à prendre lors de clic/ENTREE
virtual void ProcessKey(); // action à prendre lors de mouvement clavier/joystick
SDL_Event event;
SDL_Surface *screen;
SDL_Surface *background;
SDL_Surface *text;
SDL_Color black;
SDL_Color white;
TTF_Font *font;
};
class Demarrage : public Ecran
{
public:
Demarrage();
void Start();
void DrawAll();
void ProcessSelection();
void ProcessKey();
// on rajoute en "private" les données supplémentaires spécifiques
// à cette classe
private:
void DrawTopic(vector<string>::const_iterator &, int, int, bool);
vector<string> topics;
vector<string>::const_iterator currentTopic;
SDL_Surface *rectangle;
};
class Films : public Ecran
{
public:
Films();
void Start();
void DrawAll();
void ProcessSelection();
void ProcessKey();
// on rajoute en "private" les données supplémentaires spécifiques
// à cette classe
private:
void DrawFile(vector<string>::const_iterator &, int, int, bool);
void PopulateFiles();
int VectorPosition(vector<string> &, string);
vector<string> files;
vector<string>::const_iterator currentFile;
vector<string>::const_iterator topFile;
set<string> extensions;
SDL_Surface *up;
SDL_Surface *down;
SDL_Rect tick;
SDL_Rect bar;
TTF_Font *filesFont;
TTF_Font *titleFont;
TTF_Font *symbolFont;
};
Voilà donc les classes. Et maintenant, est-ce possible, dans Demarrage::ProcessSelection() par exemple, d'appeler Films::Start() et reprendre les données issues de la classe Ecran précédemment initialisées (et faire de même pour quand on reviendra "en arrière" à l'écran de démarrage).
J'espère que c'est pas trop confus :-)