#ifndef Objekt_H #define Objekt_H #define WIN32_LEAN_AND_MEAN #include namespace Framework { struct VScrollData; // Scroll.h struct HScrollData; // Scroll.h class Punkt; // Punkt.h struct MausEreignis; // MausEreignis.h struct TastaturEreignis; // TastaturEreignis.h class Bild; // Bild.h class Objekt; // Aus dieser Datei class ObjektArray; // Aus dieser Datei class Objekt { protected: Punkt *pos; Punkt *gr; bool (*Mak)( void *, MausEreignis ); bool (*Tak)( void *, TastaturEreignis ); CRITICAL_SECTION Thread_Save; bool mausIn; public: // Konstruktor Objekt(); // Destruktor ~Objekt(); // nicht constant void lockObjekt(); void unlockObjekt(); void setMausEreignis( bool (*ak)( void *, MausEreignis ) ); // setzt das Maus Ereignis void setTastaturEreignis( bool (*ak)( void *, TastaturEreignis ) ); // setzt das TastaturEreignis virtual void doMausEreignis( MausEreignis *me ); // ruft Mak auf virtual void doTastaturEreignis( TastaturEreignis *te ); // ruft Tak auf virtual void tick( double tickval ); // tick void setPosition( Punkt *pos ); // setzt die position void setPositionZ( Punkt *pos ); // setzt einen Zeiger auf die Position void setGröße( Punkt *gr ); // setzt die Größe void setGrößeZ( Punkt *gr ); // setzt einen zeiger zur größe void setPosition( int x, int y ); // setzt die position void setGröße( int x, int y ); // setzt die Größe virtual void render( Bild *zrObj ); // zeichnet nach zrObj virtual void render( int xOff, int yOff, int bOff, int hOff, Bild *zrObj ); // constant bool hatMausEreignis() const; // prüft, ob Mak gesetzt ist bool hatTastaturEreignis() const; // prüft, ob Tak gesetzt ist Punkt *getPosition() const; // gibt die Position zurück Punkt *getGröße() const; // gibt die Größe zurück int getBreite() const; // gibt die Breite zurück int getHöhe() const; // gibt die Höhe zurück int getX() const; // gibt X zurück int getY() const; // gibt Y zurück // reference Counting }; class ObjektArray// Array von Objekten { private: Objekt *This; ObjektArray *next; int index; public: // Konstruktor ObjektArray(); // Destruktor ~ObjektArray(); // nicht const bool addObjekt( Objekt *obj ); // Fügt ein Objekt hinzu bool removeObjekt( Objekt *obj ); // Entfernt ein Objekt bool removeObjekt( int i ); // Entfernt das i-te Objekt void setNext0(); // Setzt das nächste Objekt zu 0 void updateIndex( int i ); // aktualisiert die Index variable // constant ObjektArray *getNext() const; // gibt das nächste Objekt zurück Objekt *getObjekt( int i ) const; // gibt das i-te Objekt zurück Objekt *getObjekt() const; // gibt das Objekt zurück int getIndex() const; // Gibt den Index zurück void sendMausAll( MausEreignis *me ) const; // sendet me an alle volgenden Objekte void sendTastaturAll( TastaturEreignis *te ) const; // sendet te an alle volgenden Objekte void sendMaus( MausEreignis *me ) const; // sendet me an dieses Objekt void sendTastatur( TastaturEreignis *te ) const; // sendet te an dieses Objekt void sendMaus( int i, MausEreignis *me ) const; // sendet me an das i-te Objekt void sendTastatur( int i, TastaturEreignis *te ) const; // sendet te an das i-te Objekt void render( Bild *rObj ); // Zeichnet alle nach rObj void render( int xOff, int yOff, int bOff, int hOff, Bild *rObj ); // Zeichnet alle nach rObj void tick( double tickval ); // tick }; } #endif