#pragma once #include "../Netzwerk/EditorKlient.h" #include "../Abstract/Model.h" #include #include #include namespace Editor { struct SpielerDaten : public Model { int id; Punkt pos; double rot; double beschleunigung; int maxStabilität; int maxEnergie; double reparatur; double akkuLeistung; int laserIntensität; int laserEffizienz; int laserTempo; double wendigkeit; double antriebEffizienz; double energieSchild; double energieSchildEffizienz; int netzwerk; int skillPunkte; int m2d; int bild; }; struct TeamDaten : public Model { int id; int maxPunkte; double beschleunigung; int maxStabilität; int maxEnergie; double reparatur; double akkuLeistung; int laserIntensität; int laserEffizienz; int laserTempo; double wendigkeit; double antriebEffizienz; double energieSchild; double energieSchildEffizienz; int punkte; }; struct ObjektDaten : public Model { Punkt pos; int id; int m2d; int bild; int style; int maxStabilität; int maxEnergie; int energieRadius; double reparatur; double akkuLeistung; char team; }; class KarteDaten : public Thread { private: EditorKlient * client; SpielerTeamStruktur *sts; Array< SpielerDaten* > spieler; Array< TeamDaten* > teams; Array< ObjektDaten* > objekte; Text error; Array< std::function< void() > > aktionen; Critical cs; bool exit; public: KarteDaten( EditorKlient *client ); ~KarteDaten(); void addObjekt( ObjektDaten &daten ); void removeObjekt( int index ); void getObjekt( int index, std::function< bool( ObjektDaten* ) > callBack ); void getSpieler( int index, std::function< bool( SpielerDaten* ) > callBack ); void getTeam( int index, std::function< bool( TeamDaten* ) > callBack ); void thread() override; const ObjektDaten *getObjekt( int index ); const SpielerDaten *getSpieler( int index ); const TeamDaten *getTeam( int index ); int getSpielerIndexById( int id ); int getSpielerAnzahl() const; int getTeamIndexById( int id ); int getTeamAnzahl() const; int getObjektAnzahl() const; bool hasError() const; char *getError() const; bool hasAktions() const; // löscht das objekt wenn es nicht mehr gebraucht wird und beendet den Thread Thread *release() override; }; }