#pragma once #include #include #include "../../Netzwerk/EditorKlient.h" using namespace Framework; class MapObjekt { class Style { public: const static int Verschiebbar = 0x01; const static int Sichtbar = 0x02; const static int Selected = 0x04; }; protected: int style; EditorKlient *klient; Punkt pos; Punkt size; int ref; // Wird aufgerufen, wenn das Objekt durch den Nutzer verschoben wird virtual void onMoved() = 0; // Wird aufgerufen, wenn der Nutzer das Optionsfenster des Objekts aufrufen will virtual void onOpenOptionWindow() = 0; public: // Konstruktor // klient: Der Klient zum Editor Server MapObjekt( EditorKlient *klient ); // Destructor ~MapObjekt(); // Verarbeitet ein Maus Ereignis // me: Das Maus Ereignis virtual void doMausEreignis( MausEreignis me ); // Verarbeitet ein Tastatur Ereignis // te: Das Tastaturereignis virtual void doTastaturEreignis( TastaturEreignis te ); // Verarbeitet die vergangene Zeit // tv: Die vergangene Zeit in Sekunden seit dem letzten Aufruf der Funktion // return: 1, falls das objekt neu gezeichnet werden muss. 0 sonnst virtual bool tick( double tv ); // Zeichnet das Objekt nach zRObj // zRObj: Das Bild in das gezeichnet werden soll virtual void render( Bild *zRObj ); // Erhöht den reference Counter um 1 // return this virtual MapObjekt *getThis(); // Verringert den reference Counter um 1 und löscht das Objekt wenn er bei 0 ankommt // return 0 virtual MapObjekt *release(); }; class MapObjektBitmap : public MapObjekt { protected: Bild *bmp; public: // Konstruktor // klient: Der Klient zum Editor Server MapObjektBitmap( EditorKlient *klient ); // Destructor ~MapObjektBitmap(); // Zeichnet das Objekt nach zRObj // zRObj: Das Bild in das gezeichnet werden soll void render( Bild *zRObj ) override; // Erhöht den reference Counter um 1 // return this MapObjekt *getThis() override; // Verringert den reference Counter um 1 und löscht das Objekt wenn er bei 0 ankommt // return 0 MapObjekt *release() override; }; class MapObjekt2D : public MapObjekt { protected: Model2D *m2; public: // Konstruktor // klient: Der Klient zum Editor Server MapObjekt2D( EditorKlient *klient ); // Destructor ~MapObjekt2D(); // Zeichnet das Objekt nach zRObj // zRObj: Das Bild in das gezeichnet werden soll void render( Bild *zRObj ) override; // Erhöht den reference Counter um 1 // return this MapObjekt *getThis() override; // Verringert den reference Counter um 1 und löscht das Objekt wenn er bei 0 ankommt // return 0 MapObjekt *release() override; };