1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- #pragma once
- #include <Array.h>
- #include "Ereignis.h"
- #include "Aktionen.h"
- using namespace Framework;
- class TriggerRun;
- class Spiel;
- class VarPointer
- {
- private:
- Variable *var;
- Text name;
- int ref;
- public:
- VarPointer( const char *name, Variable *var );
- ~VarPointer();
- Text *zName() const;
- void setVariable( Variable *var );
- Variable *getVariable() const;
- Variable *zVariable() const;
- operator Variable *( ) const;
- VarPointer *getThis();
- VarPointer *release();
- };
- class Bedingung
- {
- private:
- Aktion *expression;
- int ref;
- public:
- Bedingung( Aktion *expression );
- ~Bedingung();
- void setExpression( Aktion *expr );
- bool check( Spiel *zSpiel, Ereignis *zEreignis );
- Bedingung *getThis();
- Bedingung *release();
- };
- class Trigger : public Variable
- {
- private:
- static int nextId;
- int id;
- Text name;
- int ereignisAnzahl;
- EreignisTyp *ereignisse;
- RCArray< Bedingung > *bedingungen;
- RCArray< Aktion > *aktionen;
- public:
- Trigger( const char *name, int ereignisAnzahl, EreignisTyp *ereignisse, RCArray< Bedingung > *bedingungen, RCArray< Aktion > *aktionen );
- ~Trigger();
- int getAktionAnzahl() const;
- Aktion *zAktion( int index ) const;
- Aktion *getAktion( int index ) const;
- // prüft ob der auslöser von einem bestimmten ereignis ausgelößt wird
- bool wirdGetriggertVon( EreignisTyp typ ) const;
- // return: 0, falls die bedingungen nicht erfüllt sind
- TriggerRun *runTrigger( Ereignis *e, Spiel *zSpiel );
- };
- class TriggerRun
- {
- private:
- Trigger *trigger;
- Ereignis *ereignis;
- Spiel *spiel;
- int programCounter;
- double waitCount;
- int ref;
- public:
- TriggerRun( Trigger *trig, Ereignis *e, Spiel *spiel );
- ~TriggerRun();
- // gibt 0 zurück, wenn der Auslöser vollständig durchgelaufen ist
- bool runNext( double t );
- TriggerRun *getThis();
- TriggerRun *release();
- };
|