00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026 #ifndef GWECONTROLLERH
00027 #define GWECONTROLLERH
00028
00029 #include <QObject>
00030
00031 #include "GActionInterface.h"
00032
00033 namespace GCS
00034 {
00035
00036 class GElement;
00037 class GElementID;
00038 class GElementInfluence;
00039 class GEnergy;
00040
00041 }
00042
00043 namespace GWE
00044 {
00045
00046 class GDataController;
00047 class GInformationInterface;
00048
00070 class GweController : public QObject, public GActionInterface
00071 {
00072 Q_OBJECT
00073
00074 protected:
00075
00082 GDataController* Data;
00083
00088 GInformationInterface* InformationInterface;
00089
00090 public:
00091
00096 GweController(GDataController* data, GInformationInterface* info, QObject *parent = 0);
00097
00102 virtual ~GweController();
00103
00104
00105
00109 virtual GDataController* getDataController();
00110
00114 virtual const GDataController* getDataController() const;
00115
00119 virtual GInformationInterface* getInformationInterface();
00120
00125 virtual GActionInterface* getActionInterface();
00126
00127 public:
00128
00129
00130
00131 virtual void performAction(const GCS::GElementID& element, const QString& action, QStringList params, const QString& agent = QString());
00132
00133 virtual QStringList getAvailableActions(const GCS::GElementID& element) const;
00134
00135 virtual QString getActionDescription(const GCS::GElementID& element, const QString& action) const;
00136
00137
00138
00139 protected:
00140
00141
00142
00143 protected slots:
00144
00155 virtual void connectBasicElementSignals(const GCS::GElementID& id);
00156
00157 protected:
00158
00190 virtual QList<GCS::GElement*> findInRange(GCS::GElement* source, double range_factor, unsigned max_traverse_children = 0, unsigned max_traverse_parents = 1);
00191
00192 public slots:
00193
00194 virtual void executeOpenElement(const GCS::GElementID& id);
00195
00196
00197
00204 virtual void radiateInfluence(const GCS::GElementInfluence& influence, double radius_factor);
00205
00211 virtual void routeInfluence(const GCS::GElementInfluence& influence, const GCS::GElementID& destination);
00212
00220 virtual void removeElementWithNoEnergyLeft(const GCS::GEnergy& changedEnergy);
00221
00232 virtual void shutdown();
00233
00234 signals:
00235
00240 void quit();
00241
00242 };
00243
00244 }
00245
00246 #endif