123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419 |
- #pragma once
- #include "EditorKlient.h"
- #include <Punkt.h>
- #include <Critical.h>
- #include <functional>
- #include <Welt2D.h>
- #include <Model2D.h>
- #include <GSLDateiV.h>
- #include "Model.h"
- #include "Variablen.h"
- #include "Trigger.h"
- namespace Editor
- {
- struct TeamDaten : public Model
- {
- int id;
- int maxWbzeit;
- int punkte;
- TeamDaten();
- TeamDaten( const TeamDaten &daten );
- };
- struct SpielerDaten : public Model
- {
- int id;
- Punkt spawn;
- SpielerDaten();
- SpielerDaten( const SpielerDaten &daten );
- };
- struct BariereDaten : public Model
- {
- int id;
- Punkt pos;
- Punkt size;
- int style;
- int verschiebungWeite;
- int autoSchaltungMaxTime;
- int team;
- BariereDaten();
- BariereDaten( const BariereDaten &daten );
- };
- struct BaseDaten : public Model
- {
- int id;
- Punkt pos;
- Punkt size;
- int maxTime;
- int team;
- bool showTimer;
- Punkt timer;
- int timerFarbe;
- BaseDaten();
- BaseDaten( const BariereDaten &daten );
- };
- struct DropDaten : public Model
- {
- int id;
- Punkt minPos;
- Punkt maxPos;
- int maxTime;
- int numDrops;
- float wahrscheinlichkeit[ ITEMANZAHL ];
- Text name;
- DropDaten();
- DropDaten( const BariereDaten &daten );
- };
- struct SchalterDaten : public Model
- {
- int id;
- Punkt pos;
- Punkt size;
- bool aktiv;
- SchalterDaten();
- SchalterDaten( const BariereDaten &daten );
- };
- struct SchieneDaten : public Model
- {
- int id;
- Punkt pos;
- Punkt size;
- SchieneDaten();
- SchieneDaten( const BariereDaten &daten );
- };
- struct TimerDaten : public Model
- {
- int id;
- Punkt pos;
- int maxZeit;
- bool sichtbar;
- bool autoWiederhohlung;
- bool runns;
- int farbe;
- Text name;
- TimerDaten();
- TimerDaten( const BariereDaten &daten );
- };
- struct TunnelDaten : public Model
- {
- int id;
- Punkt pos;
- Punkt size;
- Punkt ziel;
- bool aktiv;
- TunnelDaten();
- TunnelDaten( const BariereDaten &daten );
- };
- struct UmlenkungDaten : public Model
- {
- int id;
- Punkt pos;
- Punkt size;
- char richtung;
- int maxAbklingzeit;
- bool drehend;
- bool aktiv;
- UmlenkungDaten();
- UmlenkungDaten( const BariereDaten &daten );
- };
- struct TriggerDaten : public Model
- {
- int id;
- Text name;
- Array< EreignisTyp > *ereignisse;
- RCArray< Bedingung > *bedingungen;
- RCArray< Aktion > *aktionen;
- TriggerDaten();
- TriggerDaten( const BariereDaten &daten );
- ~TriggerDaten();
- };
- struct VariableDaten : public Model
- {
- Text oldName;
- Text name;
- Variable *var;
- VariableDaten();
- VariableDaten( const BariereDaten &daten );
- ~VariableDaten();
- };
- class EditorObject : public ZeichnungHintergrund
- {
- public:
- enum ObjektTyp
- {
- SPIELER,
- BARIERE,
- BASE,
- BASE_TIMER,
- SCHALTER,
- SCHIENE,
- TIMER,
- TUNNEL,
- TUNNEL_ZIEL,
- UMLENKUNG
- };
- private:
- ObjektTyp typ;
- int id;
- public:
- EditorObject( ObjektTyp typ, int id );
- virtual ~EditorObject();
- virtual void update() = 0;
- bool isObjekt( ObjektTyp typ, int id );
- };
- class EdSpieler : public EditorObject
- {
- private:
- SpielerDaten *mdl;
- public:
- EdSpieler( SpielerDaten *model );
- ~EdSpieler();
- void update();
- };
- class EdBariere : public EditorObject
- {
- private:
- BariereDaten *mdl;
- public:
- EdBariere( BariereDaten *model );
- ~EdBariere();
- void update();
- };
- class EdBase : public EditorObject
- {
- private:
- BaseDaten *mdl;
- public:
- EdBase( BaseDaten *model );
- ~EdBase();
- void update();
- };
- class EdBaseTimer : public EditorObject
- {
- private:
- BaseDaten *mdl;
- public:
- EdBaseTimer( BaseDaten *model );
- ~EdBaseTimer();
- void update();
- };
- class EdDrop : public EditorObject
- {
- private:
- DropDaten *mdl;
- public:
- EdDrop( DropDaten *model );
- ~EdDrop();
- void update();
- };
- class EdSchalter : public EditorObject
- {
- private:
- SchalterDaten *mdl;
- public:
- EdSchalter( SchalterDaten *model );
- ~EdSchalter();
- void update();
- };
- class EdSchiene : public EditorObject
- {
- private:
- SchieneDaten *mdl;
- public:
- EdSchiene( SchieneDaten *model );
- ~EdSchiene();
- void update();
- };
- class EdTimer : public EditorObject
- {
- private:
- TimerDaten *mdl;
- public:
- EdTimer( TimerDaten *model );
- ~EdTimer();
- void update();
- };
- class EdTunnel : public EditorObject
- {
- private:
- TunnelDaten *mdl;
- public:
- EdTunnel( TunnelDaten *model );
- ~EdTunnel();
- void update();
- };
- class EdTunnelZiel : public EditorObject
- {
- private:
- TunnelDaten *mdl;
- public:
- EdTunnelZiel( TunnelDaten *model );
- ~EdTunnelZiel();
- void update();
- };
- class EdUmlenkung : public EditorObject
- {
- private:
- UmlenkungDaten *mdl;
- public:
- EdUmlenkung( UmlenkungDaten *model );
- ~EdUmlenkung();
- void update();
- };
- class UpdateObserver : public View
- {
- private:
- std::function< void() > f;
- public:
- UpdateObserver( std::function< void() > f );
- void update( Model *m ) override;
- };
- class KarteDaten : public Thread
- {
- private:
- Punkt renderPos;
- EditorKlient *client;
- SpielerTeamStruktur *sts;
- Array< SpielerDaten * > spieler;
- Array< TeamDaten * > teams;
- Array< BariereDaten * > barieren;
- Array< BaseDaten * > basen;
- Array< DropDaten * > drops;
- Array< SchalterDaten * > schalter;
- Array< SchieneDaten * > schienen;
- Array< TimerDaten * > timer;
- Array< TunnelDaten * > tunnel;
- Array< UmlenkungDaten * > umlenkungen;
- Array< TriggerDaten * > trigger;
- Array< VariableDaten * > variablen;
- RCArray< EditorObject > *objects;
- Text error;
- Array< std::function< void() > > aktionen;
- Critical cs;
- Punkt size;
- bool exit;
- void loadSpielResourcePathsFromFolder( const char *folderPath, RCArray< Text > *zPaths );
- public:
- KarteDaten( EditorKlient *client, SpielerTeamStruktur *sts );
- ~KarteDaten();
- void addBariere( BariereDaten &daten, std::function< void( int ) > callBack );
- void removeBariere( int index );
- void addBase( BaseDaten &daten, std::function< void( int ) > callBack );
- void removeBase( int index );
- void addDrop( DropDaten &daten, std::function< void( int ) > callBack );
- void removeDrop( int index );
- void addSchalter( SchalterDaten &daten, std::function< void( int ) > callBack );
- void removeSchalter( int index );
- void addSchiene( SchieneDaten &daten, std::function< void( int ) > callBack );
- void removeSchiene( int index );
- void addTimer( TimerDaten &daten, std::function< void( int ) > callBack );
- void removeTimer( int index );
- void addTunnel( TunnelDaten &daten, std::function< void( int ) > callBack );
- void removeTunnel( int index );
- void addUmlenkung( UmlenkungDaten &daten, std::function< void( int ) > callBack );
- void removeUmlenkung( int index );
- void addTrigger( TriggerDaten &daten, std::function< void( int ) > callBack );
- void removeTrigger( int index );
- void addVariable( VariableDaten &daten, std::function< void( int ) > callBack );
- void removeVariable( int index );
- void thread() override;
- void doPublicMausEreignis( MausEreignis &me );
- void doTastaturEreignis( TastaturEreignis &te );
- bool tick( double tickVal );
- void render( Bild &rObj );
- BariereDaten *getBariere( int index );
- BaseDaten *getBase( int index );
- DropDaten *getDrop( int index );
- SchalterDaten *getSchalter( int index );
- SchieneDaten *getSchiene( int index );
- TimerDaten *getTimer( int index );
- TunnelDaten *getTunnel( int index );
- UmlenkungDaten *getUmlenkung( int index );
- TriggerDaten *getTrigger( int index );
- VariableDaten *getVariable( int index );
- SpielerDaten *getSpieler( int index );
- TeamDaten *getTeam( int index );
- const char *getTeamName( int index );
- int getSpielerIndexById( int id );
- int getSpielerAnzahl() const;
- int getTeamIndexById( int id );
- int getTeamAnzahl() const;
- int getBariereIndexById( int id );
- int getBariereAnzahl() const;
- int getBaseIndexById( int id );
- int getBaseAnzahl() const;
- int getDropIndexById( int id );
- int getDropAnzahl() const;
- int getSchalterIndexById( int id );
- int getSchalterAnzahl() const;
- int getSchieneIndexById( int id );
- int getSchieneAnzahl() const;
- int getTimerIndexById( int id );
- int getTimerAnzahl() const;
- int getTunnelIndexById( int id );
- int getTunnelAnzahl() const;
- int getUmlenkungIndexById( int id );
- int getUmlenkungAnzahl() const;
- int getTriggerIndexById( int id );
- int getTriggerAnzahl() const;
- int getVariableIndexByName( Text name );
- int getVariableAnzahl() const;
- bool hasError() const;
- char *getError() const;
- bool hasAktions() const;
- };
- }
|