//
// C++ Interface: aimanager
//
// Description:
//
//
// Author: Hendrik Hochstetter <hochsthk@studi.informatik.uni-stuttgart.de>, (C) 2008
//
// Copyright: See COPYING file that comes with this distribution
//
//
#ifndef _AIMANAGER_H
#define _AIMANAGER_H
#include "globals.h"
#include "aiplayer.h"
#include <QtCore/QString>
#include <QtCore/QObject>
#include <QtCore/QDebug>
#include <QtCore/QTimer>
#include <QtCore/QList>
#include <QtCore/QEvent>
#include <QtCore/QMap>
#include <QtCore/QHash>
#include <QtCore/QStack>
#include <QtCore/QQueue>
#include <cheppcl.h>
#include <msgame.h>
#include <msggmgt.h>
#include <msgconv.h>
inline bool operator== (GameBrief gb1, GameBrief gb2)
{
return stringOfGameBrief (gb1) == stringOfGameBrief (gb2);
};
class CheppResponse;
class CheppCommand;
/** @brief Management für Ai-Spieler-Instanzen
* @details Verwaltet einzelne Instanzen von AiPlayer (maxusers viele).
* wenn Spiele beendet werden werden neue gestartet. neu angelegte Spiele
* werden (irgenwann) in einer Liste gespeichert.
* wenn AiPlayer instanzen aus der Ausführung zurückkommen werden sie
* gelöscht und neue instanzen können beim refresh angelegt werden.
**/
class AiManager : public QObject
{
Q_OBJECT
public:
AiManager (QObject *parent = 0);
void run ();
void readSettings ();
void writeSettings ();
private:
int aiStatus;
Cheppcl *cheppcl;
QTimer *timer;
AiSettings aiManagerSettings;
QHash<QString, AiPlayer*> aiPlayers;
QList<GameBrief> games;
QStack<GameBrief> toDelete;
void updateThreads ();
private slots:
void receive (const CheppResponse *rspns);
void wakeUp ();
void clientFinished ();
void returning (QString);
signals:
void send (const CheppCommand*);
};
#endif