Ver Fonte

An neues Framework angepasst

Kolja Strohm há 5 anos atrás
pai
commit
adf985098e
108 ficheiros alterados com 854 adições e 2228 exclusões
  1. 24 42
      KSGClient/Aktionen/AktionsThread.cpp
  2. 0 5
      KSGClient/Aktionen/AktionsThread.h
  3. 0 97
      KSGClient/Global/DLLDateien.cpp
  4. 0 37
      KSGClient/Global/DLLDateien.h
  5. 1 16
      KSGClient/Global/Fps.cpp
  6. 0 4
      KSGClient/Global/Fps.h
  7. 119 135
      KSGClient/Global/Render.cpp
  8. 0 4
      KSGClient/Global/Render.h
  9. 74 76
      KSGClient/Global/Variablen.cpp
  10. 1 2
      KSGClient/Global/Variablen.h
  11. 0 2
      KSGClient/KSGClient.vcxproj
  12. 0 6
      KSGClient/KSGClient.vcxproj.filters
  13. 2 18
      KSGClient/NachLogin/Account/AccountAnsehen.cpp
  14. 0 4
      KSGClient/NachLogin/Account/AccountAnsehen.h
  15. 4 20
      KSGClient/NachLogin/Account/Aktivität/AccountAktivität.cpp
  16. 0 4
      KSGClient/NachLogin/Account/Aktivität/AccountAktivität.h
  17. 16 79
      KSGClient/NachLogin/Account/Historie/AccountHistorie.cpp
  18. 2 18
      KSGClient/NachLogin/Account/Historie/AccountHistorie.h
  19. 2 36
      KSGClient/NachLogin/Account/SpielPartner/AccountSpielPartner.cpp
  20. 0 10
      KSGClient/NachLogin/Account/SpielPartner/AccountSpielPartner.h
  21. 6 40
      KSGClient/NachLogin/Account/Spiele_Karten/AccountSpieleUndKarten.cpp
  22. 0 10
      KSGClient/NachLogin/Account/Spiele_Karten/AccountSpieleUndKarten.h
  23. 7 32
      KSGClient/NachLogin/Account/Statistik/AccountStatistik.cpp
  24. 0 4
      KSGClient/NachLogin/Account/Statistik/AccountStatistik.h
  25. 1 31
      KSGClient/NachLogin/Account/Suchen/AccountSuchen.cpp
  26. 1 6
      KSGClient/NachLogin/Account/Suchen/AccountSuchen.h
  27. 5 40
      KSGClient/NachLogin/Chat/ChatLeiste.cpp
  28. 0 6
      KSGClient/NachLogin/Chat/ChatLeiste.h
  29. 16 64
      KSGClient/NachLogin/Chat/FreundesListe.cpp
  30. 2 14
      KSGClient/NachLogin/Chat/FreundesListe.h
  31. 10 26
      KSGClient/NachLogin/Chat/NachrichtenListe.cpp
  32. 0 6
      KSGClient/NachLogin/Chat/NachrichtenListe.h
  33. 0 37
      KSGClient/NachLogin/Editor/Auswahl/Auswahl.cpp
  34. 1 5
      KSGClient/NachLogin/Editor/Auswahl/Auswahl.h
  35. 2 18
      KSGClient/NachLogin/Editor/Editor.cpp
  36. 0 4
      KSGClient/NachLogin/Editor/Editor.h
  37. 4 18
      KSGClient/NachLogin/Editor/Karte/Beschreibung/KEBEditor.cpp
  38. 0 4
      KSGClient/NachLogin/Editor/Karte/Beschreibung/KEBEditor.h
  39. 4 34
      KSGClient/NachLogin/Editor/Karte/Beschreibung/KEBVorschau.cpp
  40. 0 8
      KSGClient/NachLogin/Editor/Karte/Beschreibung/KEBVorschau.h
  41. 2 18
      KSGClient/NachLogin/Editor/Karte/Beschreibung/KEBeschreibung.cpp
  42. 1 5
      KSGClient/NachLogin/Editor/Karte/Beschreibung/KEBeschreibung.h
  43. 9 23
      KSGClient/NachLogin/Editor/Karte/Dateien/KEDEditor.cpp
  44. 0 4
      KSGClient/NachLogin/Editor/Karte/Dateien/KEDEditor.h
  45. 11 56
      KSGClient/NachLogin/Editor/Karte/Dateien/KEDModel2DEditor.cpp
  46. 0 12
      KSGClient/NachLogin/Editor/Karte/Dateien/KEDModel2DEditor.h
  47. 4 18
      KSGClient/NachLogin/Editor/Karte/Dateien/KEDateien.cpp
  48. 1 5
      KSGClient/NachLogin/Editor/Karte/Dateien/KEDateien.h
  49. 4 4
      KSGClient/NachLogin/Editor/Karte/Dateien/WAVDatei.cpp
  50. 2 2
      KSGClient/NachLogin/Editor/Karte/Dateien/WAVDatei.h
  51. 13 51
      KSGClient/NachLogin/Editor/Karte/KarteRelease/KERelease.cpp
  52. 1 5
      KSGClient/NachLogin/Editor/Karte/KarteRelease/KERelease.h
  53. 4 19
      KSGClient/NachLogin/Editor/Karte/KartenEditor.cpp
  54. 1 5
      KSGClient/NachLogin/Editor/Karte/KartenEditor.h
  55. 10 24
      KSGClient/NachLogin/Editor/Karte/KaufHistorie/KaufHistorie.cpp
  56. 1 5
      KSGClient/NachLogin/Editor/Karte/KaufHistorie/KaufHistorie.h
  57. 6 21
      KSGClient/NachLogin/Editor/Karte/ShopSeite/KESSEditor.cpp
  58. 0 4
      KSGClient/NachLogin/Editor/Karte/ShopSeite/KESSEditor.h
  59. 4 34
      KSGClient/NachLogin/Editor/Karte/ShopSeite/KESSVorschau.cpp
  60. 0 8
      KSGClient/NachLogin/Editor/Karte/ShopSeite/KESSVorschau.h
  61. 2 18
      KSGClient/NachLogin/Editor/Karte/ShopSeite/KEShopSeite.cpp
  62. 1 5
      KSGClient/NachLogin/Editor/Karte/ShopSeite/KEShopSeite.h
  63. 13 29
      KSGClient/NachLogin/Editor/Karte/Teams/KETeams.cpp
  64. 1 5
      KSGClient/NachLogin/Editor/Karte/Teams/KETeams.h
  65. 2 2
      KSGClient/NachLogin/Einstellungen/Einstellungen.cpp
  66. 4 19
      KSGClient/NachLogin/ImSpiel/ImSpiel.cpp
  67. 1 5
      KSGClient/NachLogin/ImSpiel/ImSpiel.h
  68. 0 16
      KSGClient/NachLogin/ImSpiel/Laden/SpielLaden.cpp
  69. 1 5
      KSGClient/NachLogin/ImSpiel/Laden/SpielLaden.h
  70. 22 45
      KSGClient/NachLogin/MiniGames/Minigames.cpp
  71. 2 9
      KSGClient/NachLogin/MiniGames/Minigames.h
  72. 18 34
      KSGClient/NachLogin/NachLogin.cpp
  73. 0 4
      KSGClient/NachLogin/NachLogin.h
  74. 235 250
      KSGClient/NachLogin/Neuigkeiten/Neuigkeiten.cpp
  75. 0 4
      KSGClient/NachLogin/Neuigkeiten/Neuigkeiten.h
  76. 4 36
      KSGClient/NachLogin/Shop/Karten/KartenKaufen.cpp
  77. 2 12
      KSGClient/NachLogin/Shop/Karten/KartenKaufen.h
  78. 1 17
      KSGClient/NachLogin/Shop/Shop.cpp
  79. 0 4
      KSGClient/NachLogin/Shop/Shop.h
  80. 4 36
      KSGClient/NachLogin/Shop/Spiele/SpieleKaufen.cpp
  81. 2 12
      KSGClient/NachLogin/Shop/Spiele/SpieleKaufen.h
  82. 4 18
      KSGClient/NachLogin/Spiele/Gruppe/Gruppe.cpp
  83. 0 4
      KSGClient/NachLogin/Spiele/Gruppe/Gruppe.h
  84. 6 21
      KSGClient/NachLogin/Spiele/Karte Auswahl/KarteAuswahl.cpp
  85. 1 6
      KSGClient/NachLogin/Spiele/Karte Auswahl/KarteAuswahl.h
  86. 10 25
      KSGClient/NachLogin/Spiele/Spiel Auswahl/SpielAuswahl.cpp
  87. 1 6
      KSGClient/NachLogin/Spiele/Spiel Auswahl/SpielAuswahl.h
  88. 1 17
      KSGClient/NachLogin/Spiele/Spiele.cpp
  89. 0 4
      KSGClient/NachLogin/Spiele/Spiele.h
  90. 1 1
      KSGClient/NachLogin/Spiele/Statistik/SpielStatistik.cpp
  91. 18 34
      KSGClient/NachLogin/Titel/TitelLeiste.cpp
  92. 1 5
      KSGClient/NachLogin/Titel/TitelLeiste.h
  93. 0 16
      KSGClient/NachLogin/Update/Update.cpp
  94. 1 5
      KSGClient/NachLogin/Update/Update.h
  95. 33 47
      KSGClient/Netzwerk/ChatMessageProcessor.cpp
  96. 0 5
      KSGClient/Netzwerk/ChatMessageProcessor.h
  97. 2 1
      KSGClient/Netzwerk/Patcher.cpp
  98. 0 14
      KSGClient/Netzwerk/SpielMessageProcessor.cpp
  99. 0 4
      KSGClient/Netzwerk/SpielMessageProcessor.h
  100. 1 2
      KSGClient/Start/Start.cpp
  101. 15 15
      KSGClient/VorLogin/Account verwalten/EMail.cpp
  102. 14 14
      KSGClient/VorLogin/Account verwalten/Geheimnis.cpp
  103. 6 6
      KSGClient/VorLogin/Account verwalten/Name.cpp
  104. 15 15
      KSGClient/VorLogin/Account verwalten/Passwort.cpp
  105. 13 13
      KSGClient/VorLogin/Account verwalten/Registrierung.cpp
  106. 7 7
      KSGClient/VorLogin/Account verwalten/Unregistrierung.cpp
  107. 9 9
      KSGClient/VorLogin/Login/Login.cpp
  108. 2 2
      KSGClient/VorLogin/VorLogin.cpp

+ 24 - 42
KSGClient/Aktionen/AktionsThread.cpp

@@ -13,7 +13,6 @@ AktionsThread::AktionsThread( int aktion, void *arg1, void *arg2, void *arg3, vo
     this->arg3 = arg3;
     this->arg4 = arg4;
     this->arg5 = arg5;
-    ref = 1;
     start();
 }
 
@@ -45,7 +44,7 @@ void AktionsThread::thread()
                     lastError = loginClient->getLetzterFehler();
                     continue;
                 }
-                ret = loginClient->login( (const char*)arg1, (const char*)arg2 );
+                ret = loginClient->login( (const char *)arg1, (const char *)arg2 );
                 if( ret != 1 )
                 {
                     lastError = loginClient->getLetzterFehler();
@@ -86,7 +85,7 @@ void AktionsThread::thread()
                     continue;
                 }
                 if( cmProcessor )
-                    cmProcessor = cmProcessor->release();
+                    cmProcessor = (ChatMessageProcessor *)cmProcessor->release();
                 cmProcessor = new ChatMessageProcessor();
                 loginClient->trenne( 0 );
             } while( 0 );
@@ -144,7 +143,7 @@ void AktionsThread::thread()
                     lastError = loginClient->getLetzterFehler();
                     continue;
                 }
-                ret = (int)loginClient->kick( (const char*)arg1, (const char*)arg2, (const char*)arg3 );
+                ret = (int)loginClient->kick( (const char *)arg1, (const char *)arg2, (const char *)arg3 );
                 if( !ret )
                 {
                     lastError = loginClient->getLetzterFehler();
@@ -184,7 +183,7 @@ void AktionsThread::thread()
                     continue;
                 }
                 if( cmProcessor )
-                    cmProcessor = cmProcessor->release();
+                    cmProcessor = (ChatMessageProcessor *)cmProcessor->release();
                 cmProcessor = new ChatMessageProcessor();
                 loginClient->trenne( 0 );
             } while( 0 );
@@ -222,13 +221,13 @@ void AktionsThread::thread()
                     if( spielClient )
                         spielClient->trenne();
                     if( smProcessor )
-                        smProcessor = smProcessor->release();
+                        smProcessor = (SpielMessageProcessor *)smProcessor->release();
                     if( chatClient )
                         chatClient->trenne( 0 );
                     if( loginClient )
                         loginClient->trenne( 0 );
                     if( cmProcessor )
-                        cmProcessor = cmProcessor->release();
+                        cmProcessor = (ChatMessageProcessor *)cmProcessor->release();
                 }
                 else
                 {
@@ -294,7 +293,7 @@ void AktionsThread::thread()
                     lastError = registerClient->getLetzterFehler();
                     continue;
                 }
-                ret = registerClient->eMailÄndern( (const char*)arg1, (const char*)arg2, (const char*)arg3, (const char*)arg4 );
+                ret = registerClient->eMailÄndern( (const char *)arg1, (const char *)arg2, (const char *)arg3, (const char *)arg4 );
                 if( !ret )
                 {
                     lastError = registerClient->getLetzterFehler();
@@ -333,7 +332,7 @@ void AktionsThread::thread()
                     lastError = registerClient->getLetzterFehler();
                     continue;
                 }
-                ret = registerClient->eMailVergessen( (const char*)arg1, (const char*)arg2, (const char*)arg3, pEMail );
+                ret = registerClient->eMailVergessen( (const char *)arg1, (const char *)arg2, (const char *)arg3, pEMail );
                 if( !ret )
                 {
                     lastError = registerClient->getLetzterFehler();
@@ -371,7 +370,7 @@ void AktionsThread::thread()
                     lastError = registerClient->getLetzterFehler();
                     continue;
                 }
-                ret = registerClient->geheimnisÄndern( (const char*)arg1, (const char*)arg2, (const char*)arg3, (const char*)arg4 );
+                ret = registerClient->geheimnisÄndern( (const char *)arg1, (const char *)arg2, (const char *)arg3, (const char *)arg4 );
                 if( !ret )
                 {
                     lastError = registerClient->getLetzterFehler();
@@ -407,7 +406,7 @@ void AktionsThread::thread()
                     lastError = registerClient->getLetzterFehler();
                     continue;
                 }
-                ret = registerClient->geheimnisVergessen( (const char*)arg1, (const char*)arg2 );
+                ret = registerClient->geheimnisVergessen( (const char *)arg1, (const char *)arg2 );
                 if( !ret )
                 {
                     lastError = registerClient->getLetzterFehler();
@@ -443,7 +442,7 @@ void AktionsThread::thread()
                     lastError = registerClient->getLetzterFehler();
                     continue;
                 }
-                ret = registerClient->nameVergessen( (const char*)arg1, (const char*)arg2 );
+                ret = registerClient->nameVergessen( (const char *)arg1, (const char *)arg2 );
                 if( !ret )
                 {
                     lastError = registerClient->getLetzterFehler();
@@ -481,7 +480,7 @@ void AktionsThread::thread()
                     lastError = registerClient->getLetzterFehler();
                     continue;
                 }
-                ret = registerClient->passwortÄndern( (const char*)arg1, (const char*)arg2, (const char*)arg3, (const char*)arg4 );
+                ret = registerClient->passwortÄndern( (const char *)arg1, (const char *)arg2, (const char *)arg3, (const char *)arg4 );
                 if( !ret )
                 {
                     lastError = registerClient->getLetzterFehler();
@@ -517,7 +516,7 @@ void AktionsThread::thread()
                     lastError = registerClient->getLetzterFehler();
                     continue;
                 }
-                ret = registerClient->passwortVergessen( (const char*)arg1, (const char*)arg2 );
+                ret = registerClient->passwortVergessen( (const char *)arg1, (const char *)arg2 );
                 if( !ret )
                 {
                     lastError = registerClient->getLetzterFehler();
@@ -556,13 +555,13 @@ void AktionsThread::thread()
                     lastError = registerClient->getLetzterFehler();
                     continue;
                 }
-                ret = registerClient->accountErstellen( (const char*)arg1,
-                    (const char*)arg2,
-                                                        (const char*)arg3,
-                                                        (const char*)arg4,
-                                                        (unsigned short)( (Datum*)arg5 )->getJahr(),
-                                                        (char)( (Datum*)arg5 )->getMonat(),
-                                                        (char)( (Datum*)arg5 )->getTag() );
+                ret = registerClient->accountErstellen( (const char *)arg1,
+                    (const char *)arg2,
+                                                        (const char *)arg3,
+                                                        (const char *)arg4,
+                                                        (unsigned short)( (Datum *)arg5 )->getJahr(),
+                                                        (char)( (Datum *)arg5 )->getMonat(),
+                                                        (char)( (Datum *)arg5 )->getTag() );
                 if( !ret )
                 {
                     lastError = registerClient->getLetzterFehler();
@@ -573,7 +572,7 @@ void AktionsThread::thread()
             ladeAnimation->setSichtbar( 0 );
             hauptScreen->setOnTop( 0 );
             vorLogin->zRegistrierung()->setWeiterReturn( ret );
-            ( (Datum*)arg5 )->release();
+            ( (Datum *)arg5 )->release();
         }
         break;
     case 17: // account Löschen Fertig
@@ -600,7 +599,7 @@ void AktionsThread::thread()
                     lastError = registerClient->getLetzterFehler();
                     continue;
                 }
-                ret = registerClient->accountLöschen( (const char*)arg1, (const char*)arg2, (const char*)arg3 );
+                ret = registerClient->accountLöschen( (const char *)arg1, (const char *)arg2, (const char *)arg3 );
                 if( !ret )
                 {
                     lastError = registerClient->getLetzterFehler();
@@ -629,7 +628,7 @@ void AktionsThread::thread()
             _render = 0;
             hauptScreen->lock();
             int karteId = nachLogin->zSpielenFenster()->getKarteId();
-            SpielerTeamStruktur *sts = nachLogin->zSpielenFenster()->getSTS();
+            SpielerTeamStruktur * sts = nachLogin->zSpielenFenster()->getSTS();
             nachLogin->setAnzeige( NLAImSpiel );
             hauptScreen->unlock();
             _render = 1;
@@ -664,7 +663,7 @@ void AktionsThread::thread()
             nachLogin->setAnzeige( NLANormal );
             hauptScreen->unlock();
             _render = 1;
-            if( spielClient && spielClient->istVerbunden() )
+            if( spielClient &&spielClient->istVerbunden() )
                 nachLogin->zSpielenFenster()->ladeSpielStatistik( karteId );
             ladeAnimation->setSichtbar( 0 );
             for( unsigned char deckAlpha = 255; deckAlpha > 0; )
@@ -766,21 +765,4 @@ void AktionsThread::thread()
         break;
     }
     release();
-}
-
-// constant
-
-// Reference Counting
-AktionsThread *AktionsThread::getThis()
-{
-    ref++;
-    return this;
-}
-
-AktionsThread *AktionsThread::release()
-{
-    ref--;
-    if( !ref )
-        delete this;
-    return 0;
 }

+ 0 - 5
KSGClient/Aktionen/AktionsThread.h

@@ -10,7 +10,6 @@ class AktionsThread : public Thread
 {
 private:
 	int aktion;
-	int ref;
 	void *arg1;
 	void *arg2;
 	void *arg3;
@@ -22,10 +21,6 @@ public:
 	AktionsThread( int aktion, void *arg1, void *arg2, void *arg3, void *arg4, void *arg5 );
 	// nicht constant
 	virtual void thread();
-	// constant
-	// Reference Counting
-	AktionsThread *getThis();
-	AktionsThread *release();
 };
 
 #endif

+ 0 - 97
KSGClient/Global/DLLDateien.cpp

@@ -1,97 +0,0 @@
-#include "DLLDateien.h"
-
-// Inhalt der DLLDateien Klasse aus DLLDateien.h
-// Konstruktor
-DLLDateien::DLLDateien()
-{
-	dlls = new Array< DLLDatei* >();
-	ref = 1;
-}
-
-// Destruktor
-DLLDateien::~DLLDateien()
-{
-    cs.lock();
-	int anz = dlls->getEintragAnzahl();
-	for( int i = 0; i < anz; i++ )
-	{
-		DLLDatei *tmp = dlls->get( i );
-		if( tmp )
-		{
-			tmp->name->release();
-			FreeLibrary( tmp->handle );
-		}
-		delete tmp;
-	}
-	dlls->release();
-    cs.unlock();
-}
-
-// nicht constant
-HINSTANCE DLLDateien::ladeDLL( char *name, char *pfad )
-{
-    cs.lock();
-	int anz = dlls->getEintragAnzahl();
-	for( int i = 0; i < anz; i++ )
-	{
-		DLLDatei *tmp = dlls->get( i );
-		if( tmp && tmp->name->istGleich( name ) )
-		{
-			tmp->ref++;
-            cs.unlock();
-			return tmp->handle;
-		}
-	}
-	HINSTANCE h = LoadLibrary( pfad );
-    if( !h )
-    {
-        cs.unlock();
-        return 0;
-    }
-	DLLDatei *dll = new DLLDatei();
-	dll->name = new Text( name );
-	dll->handle = h;
-	dll->ref = 1;
-	dlls->add( dll );
-    cs.unlock();
-	return h;
-}
-
-void DLLDateien::releaseDLL( char *name )
-{
-    cs.lock();
-	int anz = dlls->getEintragAnzahl();
-	for( int i = 0; i < anz; i++ )
-	{
-		DLLDatei *tmp = dlls->get( i );
-		if( tmp && tmp->name->istGleich( name ) )
-		{
-			tmp->ref--;
-			if( !tmp->ref )
-			{
-				tmp->name->release();
-				FreeLibrary( tmp->handle );
-				delete tmp;
-				dlls->remove( i );
-			}
-            cs.unlock();
-			return;
-		}
-	}
-    cs.unlock();
-}
-
-// Reference Counting
-DLLDateien *DLLDateien::getThis()
-{
-	ref++;
-	return this;
-}
-
-DLLDateien *DLLDateien::release()
-{
-	ref--;
-	if( !ref )
-		delete this;
-	return 0;
-}

+ 0 - 37
KSGClient/Global/DLLDateien.h

@@ -1,37 +0,0 @@
-#ifndef DLLDateien_H
-#define DLLDateien_H
-
-#include <Text.h>
-#include <Array.h>
-#include <Critical.h>
-
-using namespace Framework;
-
-struct DLLDatei
-{
-	Text *name;
-	HINSTANCE handle;
-	int ref;
-};
-
-class DLLDateien
-{
-private:
-	Array< DLLDatei* > *dlls;
-	Critical cs;
-	int ref;
-
-public:
-	// Konstruktor
-	DLLDateien();
-	// Destruktor
-	~DLLDateien();
-	// nicht constant
-	HINSTANCE ladeDLL( char *name, char *pfad );
-	void releaseDLL( char *name );
-	// Reference Counting
-	DLLDateien *getThis();
-	DLLDateien *release();
-};
-
-#endif

+ 1 - 16
KSGClient/Global/Fps.cpp

@@ -9,6 +9,7 @@ using namespace Framework;
 // Inhalt der Fps Klasse aus Fps.h
 // Konstruktor 
 Fps::Fps()
+    : Zeichnung()
 {
 	pr = new Prozess();
 	i = 0;
@@ -18,7 +19,6 @@ Fps::Fps()
 	nowMem = 0;
     textRd = 0;
 	sFarbe = 0;
-	ref = 1;
 }
 
 // Destruktor 
@@ -108,19 +108,4 @@ Schrift *Fps::zSchrift() const
 int Fps::getFarbe() const // gibt die Farbe zurück
 {
 	return sFarbe;
-}
-
-// Reference Counting
-Fps *Fps::getThis()
-{
-	ref++;
-	return this;
-}
-
-Fps *Fps::release()
-{
-	ref--;
-	if( !ref )
-		delete this;
-	return 0;
 }

+ 0 - 4
KSGClient/Global/Fps.h

@@ -22,7 +22,6 @@ namespace Framework
 		int nowMem;
         TextRenderer *textRd;
 		int sFarbe;
-		int ref;
 
 	public:
 		// Konstruktor 
@@ -41,9 +40,6 @@ namespace Framework
 		int getFps() const; // gibt fps zurück
 		int getCpu() const; // gibt die Cpu zurück
 		int getMem() const; // gibt den Arbeitsspeicher zurück
-		// Reference Counting
-		Fps *getThis();
-		Fps *release();
 	};
 }
 

+ 119 - 135
KSGClient/Global/Render.cpp

@@ -9,181 +9,165 @@
 Render::Render( Schrift *schrift )
     : Thread()
 {
-	exit = 0;
-	bildschirm = 0;
-	ref = 1;
-	time = new ZeitMesser();
-	tickval = 1.0 / 60;
-	fps = new Fps();
-	fps->setSchriftZ( schrift );
-	fps->setSFarbe( 0xFFFFFFFF );
-	deckAlpha = 0;
-	inAnimation = 0;
-	exit = 0;
+    exit = 0;
+    bildschirm = 0;
+    time = new ZeitMesser();
+    tickval = 1.0 / 60;
+    fps = new Fps();
+    fps->setSchriftZ( schrift );
+    fps->setSFarbe( 0xFFFFFFFF );
+    deckAlpha = 0;
+    inAnimation = 0;
+    exit = 0;
 }
 
 // Destruktor 
 Render::~Render()
 {
-	if( bildschirm )
-		bildschirm = bildschirm->release();
-	time = time->release();
-	fps = fps->release();
+    if( bildschirm )
+        bildschirm = bildschirm->release();
+    time = time->release();
+    fps = (Fps *)fps->release();
 }
 
 // nicht constant 
-void Render::setBildschirm( Bildschirm *bildschirm ) // setzt den Bildschirm
+void Render::setBildschirm( Bildschirm * bildschirm ) // setzt den Bildschirm
 {
-	this->bildschirm = bildschirm;
+    this->bildschirm = bildschirm;
 }
 
 void Render::thread() // Render Schleife
 {
-	bool fpsAdd = 0;
-	time->messungStart();
-	double ausgleich = 0;
-	while( !exit )
-	{
-		if( bildschirm )
-		{
-			if( Framework::getTastenStand( T_F1 ) )
-			{
-				if( !fpsAdd )
-				{
-					bildschirm->addMember( fps );
-					fpsAdd = 1;
-				}
-			}
-			else
-			{
-				if( fpsAdd )
-				{
-					bildschirm->removeMember( fps );
-					fpsAdd = 0;
+    bool fpsAdd = 0;
+    time->messungStart();
+    double ausgleich = 0;
+    while( !exit )
+    {
+        if( bildschirm )
+        {
+            if( Framework::getTastenStand( T_F1 ) )
+            {
+                if( !fpsAdd )
+                {
+                    bildschirm->addMember( fps->getThis() );
+                    fpsAdd = 1;
+                }
+            }
+            else
+            {
+                if( fpsAdd )
+                {
+                    bildschirm->removeMember( fps );
+                    fpsAdd = 0;
 
-				}
-			}
-			if( _render == 1 )
-			{
-				bildschirm->render();
-				bildschirm->tick( tickval );
-			}
-			else
-				Sleep( 100 );
-		}
-		else
-			Sleep( 100 );
-		ausgleich += 1.0 / 30 - tickval;
-		if( ausgleich > 0 )
-			Sleep( (int)( ausgleich * 1000 ) );
-		time->messungEnde();
-		time->messungStart();
-		tickval = time->getSekunden();
-		switch( aktion )
-		{
-		case 1: // Chat Client neu verbinden
-			if( 1 )
-			{
-				bool verbunden = chatClient && chatClient->istVerbunden();
+                }
+            }
+            if( _render == 1 )
+            {
+                bildschirm->render();
+                bildschirm->tick( tickval );
+            }
+            else
+                Sleep( 100 );
+        }
+        else
+            Sleep( 100 );
+        ausgleich += 1.0 / 30 - tickval;
+        if( ausgleich > 0 )
+            Sleep( (int)( ausgleich * 1000 ) );
+        time->messungEnde();
+        time->messungStart();
+        tickval = time->getSekunden();
+        switch( aktion )
+        {
+        case 1: // Chat Client neu verbinden
+            if( 1 )
+            {
+                bool verbunden = chatClient && chatClient->istVerbunden();
                 if( verbunden )
                 {
                     chatClient->trenne( 0 );
                     if( cmProcessor )
-                        cmProcessor = cmProcessor->release();
+                        cmProcessor = (ChatMessageProcessor *)cmProcessor->release();
                     chatClient->verbinde();
                     cmProcessor = new ChatMessageProcessor();
                 }
-				aktion = 0;
-			}
-			break;
-		case 2: // Login Oberfläche erschenen lassen (Programmstart)
-			if( !inAnimation )
-			{
-				deckAlpha = 250;
-				bildschirm->setdeckFarbe( deckAlpha << 24 );
-				bildschirm->setOnTop( 1 );
-				vorLogin->setSichtbar( 1 );
-				inAnimation = 1;
-				aktion = 0;
-			}
-			break;
-		case 3: // Ausloggen
-			new AktionsThread( 4, 0, 0, 0, 0, 0 );
-			aktion = 0;
-			break;
-		case 4: // Client wurde gekickt, zur login Oberfläche wechseln
-			new AktionsThread( 5, 0, 0, 0, 0, 0 );
-			aktion = 0;
-			break;
-		case 5: // Spiel Laden
-			new AktionsThread( 19, 0, 0, 0, 0, 0 );
-			aktion = 0;
-			break;
-		case 6: // Nach dem Spiel die Statistik laden
-			new AktionsThread( 20, 0, 0, 0, 0, 0 );
-			aktion = 0;
-			break;
-		case 7: // Spiel Aufzeichnung betreten
-			new AktionsThread( 21, 0, 0, 0, 0, 0 );
-			aktion = 0;
-			break;
-		case 8: // Spiel Aufzeichnung / Editor verlassen
-			new AktionsThread( 22, 0, 0, 0, 0, 0 );
-			aktion = 0;
-			break;
+                aktion = 0;
+            }
+            break;
+        case 2: // Login Oberfläche erschenen lassen (Programmstart)
+            if( !inAnimation )
+            {
+                deckAlpha = 250;
+                bildschirm->setdeckFarbe( deckAlpha << 24 );
+                bildschirm->setOnTop( 1 );
+                vorLogin->setSichtbar( 1 );
+                inAnimation = 1;
+                aktion = 0;
+            }
+            break;
+        case 3: // Ausloggen
+            new AktionsThread( 4, 0, 0, 0, 0, 0 );
+            aktion = 0;
+            break;
+        case 4: // Client wurde gekickt, zur login Oberfläche wechseln
+            new AktionsThread( 5, 0, 0, 0, 0, 0 );
+            aktion = 0;
+            break;
+        case 5: // Spiel Laden
+            new AktionsThread( 19, 0, 0, 0, 0, 0 );
+            aktion = 0;
+            break;
+        case 6: // Nach dem Spiel die Statistik laden
+            new AktionsThread( 20, 0, 0, 0, 0, 0 );
+            aktion = 0;
+            break;
+        case 7: // Spiel Aufzeichnung betreten
+            new AktionsThread( 21, 0, 0, 0, 0, 0 );
+            aktion = 0;
+            break;
+        case 8: // Spiel Aufzeichnung / Editor verlassen
+            new AktionsThread( 22, 0, 0, 0, 0, 0 );
+            aktion = 0;
+            break;
         case 9: // Editor betreten
             new AktionsThread( 23, 0, 0, 0, 0, 0 );
             aktion = 0;
             break;
-		}
-		if( inAnimation )
-		{
-			deckAlpha -= 25;
-			bildschirm->setdeckFarbe( deckAlpha << 24 );
-			if( deckAlpha == 0 )
-			{
-				bildschirm->setOnTop( 0 );
-				inAnimation = 0;
-			}
-		}
-	}
-	time->messungEnde();
+        }
+        if( inAnimation )
+        {
+            deckAlpha -= 25;
+            bildschirm->setdeckFarbe( deckAlpha << 24 );
+            if( deckAlpha == 0 )
+            {
+                bildschirm->setOnTop( 0 );
+                inAnimation = 0;
+            }
+        }
+    }
+    time->messungEnde();
 }
 
 void Render::beginn() // beginnt rendering
 {
-	exit = 0;
-	start();
+    exit = 0;
+    start();
 }
 
 void Render::beenden() // exit = 1;
 {
-	exit = 1;
-	WaitForSingleObject( threadHandle, 5000 );
+    exit = 1;
+    WaitForSingleObject( threadHandle, 5000 );
 }
 
 // constant
 Bildschirm *Render::getBildschirm() // gibt den Bildschirm zurück
 {
-	return bildschirm ? bildschirm->getThis() : 0;
+    return bildschirm ? bildschirm->getThis() : 0;
 }
 
 Bildschirm *Render::zBildschirm()
 {
-	return bildschirm;
-}
-
-// Reference Counting
-Render *Render::getThis()
-{
-	ref++;
-	return this;
-}
-
-Render *Render::release()
-{
-	ref--;
-	if( !ref )
-		delete this;
-	return 0;
+    return bildschirm;
 }

+ 0 - 4
KSGClient/Global/Render.h

@@ -19,7 +19,6 @@ private:
 	Fps *fps;
 	unsigned char deckAlpha;
 	bool inAnimation;
-	int ref;
 
 public:
 	// Konstruktor 
@@ -34,9 +33,6 @@ public:
 	// constant
 	Bildschirm *getBildschirm(); // gibt den Bildschirm zurück
 	Bildschirm *zBildschirm();
-	// Reference Counting
-	Render *getThis();
-	Render *release();
 };
 
 #endif

+ 74 - 76
KSGClient/Global/Variablen.cpp

@@ -2,46 +2,46 @@
 #include "Variablen.h"
 #include <Punkt.h>
 #include <DateiSystem.h>
+#include <Globals.h>
 #include "../Netzwerk/KSGServer.h"
 #include "../Leser/KartenLeser.h"
 
 void initVariables( Schrift *zSchrift, Bildschirm *zBildschirm )
 {
-	loginClient = 0;
-	registerClient = 0;
-	infoClient = 0;
-	chatClient = 0;
-	anmeldungClient = 0;
-	spielClient = 0;
-	shopClient = 0;
-	newsClient = 0;
-	editorClient = 0;
+    loginClient = 0;
+    registerClient = 0;
+    infoClient = 0;
+    chatClient = 0;
+    anmeldungClient = 0;
+    spielClient = 0;
+    shopClient = 0;
+    newsClient = 0;
+    editorClient = 0;
     minigameClient = 0;
     cmProcessor = 0;
-	vorLogin = new VorLogin( zSchrift, zBildschirm );
-	nachLogin = new NachLogin( zSchrift, zBildschirm );
-	Animation2DData *lad = new Animation2DData();
-	LTDBDatei *ladd = new LTDBDatei();
-	ladd->setDatei( new Text( "data/bilder/ladeanimation.ltdb" ) );
-	lad->ladeAnimation( ladd );
-	lad->setFPS( 30 );
-	lad->setWiederhohlend( 1 );
-	ladeAnimation = new Animation2D();
-	ladeAnimation->setPosition( BildschirmGröße() / 2 - Punkt( 25, 25 ) );
-	ladeAnimation->setSize( 50, 50 );
-	ladeAnimation->setAPS( 450 );
-	ladeAnimation->setAnimationDataZ( lad );
-	ladeAnimation->setRahmen( 1 );
-	ladeAnimation->setRahmenBreite( 1 );
-	ladeAnimation->setRahmenFarbe( 0xFFFFFFFF );
-	zBildschirm->setOnTopZeichnung( ladeAnimation );
-	hauptScreen = zBildschirm->getThis();
-	bilder = new Bilder();
-	updateH = new UpdateHandler();
-	dllDateien = new DLLDateien();
-	keepAliveTh = new KeepAliveTh();
+    vorLogin = new VorLogin( zSchrift, zBildschirm );
+    nachLogin = new NachLogin( zSchrift, zBildschirm );
+    Animation2DData *lad = new Animation2DData();
+    LTDBDatei *ladd = new LTDBDatei();
+    ladd->setDatei( new Text( "data/bilder/ladeanimation.ltdb" ) );
+    lad->ladeAnimation( ladd );
+    lad->setFPS( 30 );
+    lad->setWiederhohlend( 1 );
+    ladeAnimation = new Animation2D();
+    ladeAnimation->setPosition( BildschirmGröße() / 2 - Punkt( 25, 25 ) );
+    ladeAnimation->setSize( 50, 50 );
+    ladeAnimation->setAPS( 450 );
+    ladeAnimation->setAnimationDataZ( lad );
+    ladeAnimation->setRahmen( 1 );
+    ladeAnimation->setRahmenBreite( 1 );
+    ladeAnimation->setRahmenFarbe( 0xFFFFFFFF );
+    zBildschirm->setOnTopZeichnung( ladeAnimation->getThis() );
+    hauptScreen = zBildschirm->getThis();
+    bilder = new Bilder();
+    updateH = new UpdateHandler();
+    keepAliveTh = new KeepAliveTh();
     // Laden des Main Clients
-    HINSTANCE networkDLL = dllDateien->ladeDLL( "KSGNetwork.dll", "data/bin/KSGNetwork.dll" );
+    HINSTANCE networkDLL = Framework::getDLLRegister()->ladeDLL( "KSGNetwork.dll", "data/bin/KSGNetwork.dll" );
     if( !networkDLL )
     {
         WMessageBox( 0, new Text( "Fehler" ), new Text( "Die DLL Datei 'data/bin/KSGNetwork.dll' konnte nicht geladen werden. Fallst diese Datei nicht existiert muss das Spiel neu Installiert werden." ), MB_ICONERROR );
@@ -70,59 +70,57 @@ void initVariables( Schrift *zSchrift, Bildschirm *zBildschirm )
 
 void releaseVariables()
 {
-	_render = 0;
-	keepAliveTh->doExit();
-	keepAliveTh->warteAufThread( 1000 );
-	if( keepAliveTh->isRunning() )
-		keepAliveTh->ende();
-	delete keepAliveTh;
-	keepAliveTh = 0;
-	if( vorLogin )
-		vorLogin = vorLogin->release();
-	if( nachLogin )
-		nachLogin = nachLogin->release();
-	if( loginClient )
-		loginClient = loginClient->release();
-	if( registerClient )
-		registerClient = registerClient->release();
-	if( infoClient )
-		infoClient = infoClient->release();
+    _render = 0;
+    keepAliveTh->doExit();
+    keepAliveTh->warteAufThread( 1000 );
+    if( keepAliveTh->isRunning() )
+        keepAliveTh->ende();
+    delete keepAliveTh;
+    keepAliveTh = 0;
+    if( vorLogin )
+        vorLogin = vorLogin->release();
+    if( nachLogin )
+        nachLogin = (NachLogin *)nachLogin->release();
+    if( loginClient )
+        loginClient = loginClient->release();
+    if( registerClient )
+        registerClient = registerClient->release();
+    if( infoClient )
+        infoClient = infoClient->release();
     if( chatClient )
         chatClient->trenne( 1 );
     if( cmProcessor )
-        cmProcessor = cmProcessor->release();
-	if( chatClient )
-		chatClient = chatClient->release();
-	if( anmeldungClient )
-		anmeldungClient = anmeldungClient->release();
+        cmProcessor = (ChatMessageProcessor *)cmProcessor->release();
+    if( chatClient )
+        chatClient = chatClient->release();
+    if( anmeldungClient )
+        anmeldungClient = anmeldungClient->release();
     if( spielClient )
         spielClient->trenne();
     if( smProcessor )
-        smProcessor = smProcessor->release();
-	if( spielClient )
-		spielClient = spielClient->release();
-	if( shopClient )
-		shopClient = shopClient->release();
-	if( newsClient )
-		newsClient = newsClient->release();
-	if( editorClient )
-		editorClient = editorClient->release();
+        smProcessor = (SpielMessageProcessor *)smProcessor->release();
+    if( spielClient )
+        spielClient = spielClient->release();
+    if( shopClient )
+        shopClient = shopClient->release();
+    if( newsClient )
+        newsClient = newsClient->release();
+    if( editorClient )
+        editorClient = editorClient->release();
     if( minigameClient )
         minigameClient = minigameClient->release();
-	if( ladeAnimation )
-		ladeAnimation = (Animation2D*)ladeAnimation->release();
-	if( hauptScreen )
-		hauptScreen = hauptScreen->release();
+    if( ladeAnimation )
+        ladeAnimation = (Animation2D *)ladeAnimation->release();
+    if( hauptScreen )
+        hauptScreen = hauptScreen->release();
     if( mainClient )
         mainClient = mainClient->release();
     KartenLeser::cleanUp();
-	if( bilder )
-	{
-		bilder->release();
-		bilder = 0;
-	}
-	if( updateH )
-		updateH->release();
-	if( dllDateien )
-		dllDateien = dllDateien->release();
+    if( bilder )
+    {
+        bilder->release();
+        bilder = 0;
+    }
+    if( updateH )
+        updateH->release();
 }

+ 1 - 2
KSGClient/Global/Variablen.h

@@ -12,7 +12,7 @@
 #include "..\NachLogin\NachLogin.h"
 #include "..\NachLogin\Update\Update.h"
 #include "Bilder.h"
-#include "DLLDateien.h"
+#include <DLLRegister.h>
 #include <Animation.h>
 #include "../Netzwerk/ChatMessageProcessor.h"
 #include "../Netzwerk/SpielMessageProcessor.h"
@@ -38,7 +38,6 @@ variable Framework::Animation2D *ladeAnimation;
 variable Bildschirm *hauptScreen;
 variable Bilder *bilder;
 variable UpdateHandler *updateH;
-variable DLLDateien *dllDateien;
 variable bool _render;
 variable KeepAliveTh *keepAliveTh;
 

+ 0 - 2
KSGClient/KSGClient.vcxproj

@@ -188,7 +188,6 @@ copy "..\..\KSGNetwork\x64\Debug\KSGNetwork.dll" "data\bin\KSGNetwork.dll"</Comm
   <ItemGroup>
     <ClCompile Include="Aktionen\AktionsThread.cpp" />
     <ClCompile Include="Global\Bilder.cpp" />
-    <ClCompile Include="Global\DLLDateien.cpp" />
     <ClCompile Include="Global\Fps.cpp" />
     <ClCompile Include="Global\Initialisierung.cpp" />
     <ClCompile Include="Global\Render.cpp" />
@@ -258,7 +257,6 @@ copy "..\..\KSGNetwork\x64\Debug\KSGNetwork.dll" "data\bin\KSGNetwork.dll"</Comm
   <ItemGroup>
     <ClInclude Include="Aktionen\AktionsThread.h" />
     <ClInclude Include="Global\Bilder.h" />
-    <ClInclude Include="Global\DLLDateien.h" />
     <ClInclude Include="Global\Fps.h" />
     <ClInclude Include="Global\Initialisierung.h" />
     <ClInclude Include="Global\Render.h" />

+ 0 - 6
KSGClient/KSGClient.vcxproj.filters

@@ -33,9 +33,6 @@
     <ClCompile Include="Global\Bilder.cpp">
       <Filter>Quelldateien</Filter>
     </ClCompile>
-    <ClCompile Include="Global\DLLDateien.cpp">
-      <Filter>Quelldateien</Filter>
-    </ClCompile>
     <ClCompile Include="Strukturen\Strukturen.cpp">
       <Filter>Quelldateien</Filter>
     </ClCompile>
@@ -236,9 +233,6 @@
     <ClInclude Include="Global\Bilder.h">
       <Filter>Headerdateien</Filter>
     </ClInclude>
-    <ClInclude Include="Global\DLLDateien.h">
-      <Filter>Headerdateien</Filter>
-    </ClInclude>
     <ClInclude Include="Strukturen\Strukturen.h">
       <Filter>Headerdateien</Filter>
     </ClInclude>

+ 2 - 18
KSGClient/NachLogin/Account/AccountAnsehen.cpp

@@ -34,8 +34,7 @@ AccountAnsehen::AccountAnsehen( Schrift *zSchrift, Fenster *zNachLoginFenster, i
   tickVal( 0 ),
   animation( 0 ),
   knopfX( 810 ),
-  rend( 0 ),
-  ref( 1 )
+  rend( 0 )
 {
 	laden->setSichtbar( 0 );
 	rahmen->setFarbe( 0xFFFFFFFF );
@@ -49,7 +48,7 @@ AccountAnsehen::AccountAnsehen( Schrift *zSchrift, Fenster *zNachLoginFenster, i
 	größe2 = Punkt( 800, 500 );
 	pos2 = bildschirmGröße / 2 - größe2 / 2;
 	laden->setPosition( 375, 225 );
-	zNachLoginFenster->addMember( this );
+	zNachLoginFenster->addMember( getThis() );
 }
 
 // Destruktor
@@ -643,19 +642,4 @@ bool AccountAnsehen::istAnimiert() const
 bool AccountAnsehen::istSichtbar() const
 {
 	return sichtbar || prozent1 != 0;
-}
-
-// Reference Counting
-AccountAnsehen *AccountAnsehen::getThis()
-{
-	ref++;
-	return this;
-}
-
-AccountAnsehen *AccountAnsehen::release()
-{
-	ref--;
-	if( !ref )
-		delete this;
-	return 0;
 }

+ 0 - 4
KSGClient/NachLogin/Account/AccountAnsehen.h

@@ -51,7 +51,6 @@ private:
 	int animation;
 	int knopfX;
 	bool rend;
-	int ref;
 
 public:
 	// Konstruktor
@@ -68,9 +67,6 @@ public:
 	// constant
 	bool istAnimiert() const;
 	bool istSichtbar() const;
-	// Reference Counting
-	AccountAnsehen *getThis();
-	AccountAnsehen *release();
 };
 
 #endif

+ 4 - 20
KSGClient/NachLogin/Account/Aktivität/AccountAktivität.cpp

@@ -14,8 +14,7 @@ AccountAktivit
   animation( 0 ),
   alpha( 255 ),
   tickVal( 0 ),
-  rend( 0 ),
-  ref( 1 )
+  rend( 0 )
 {
 	online->setHIntervallBreite( 36.8 );
 	spiele->setVIntervallHeight( 36.8 );
@@ -33,8 +32,8 @@ AccountAktivit
 	spiele->setVIntervallFarbe( 0xFFFFFFFF );
 	online->setVIntervallName( "Stunden" );
 	spiele->setVIntervallName( "Spiele" );
-	aktivitätF->addMember( online );
-	aktivitätF->addMember( spiele );
+	aktivitätF->addMember( online->getThis() );
+	aktivitätF->addMember( spiele->getThis() );
 }
 
 // Destruktor
@@ -294,20 +293,5 @@ void AccountAktivit
 // constant
 int AccountAktivität::getStatus() const
 {
-	return status;
-}
-
-// Reference Counting
-AccountAktivität *AccountAktivität::getThis()
-{
-	ref++;
-	return this;
-}
-
-AccountAktivität *AccountAktivität::release()
-{
-	ref--;
-	if( !ref )
-		delete this;
-	return 0;
+    return status;
 }

+ 0 - 4
KSGClient/NachLogin/Account/Aktivität/AccountAktivität.h

@@ -20,7 +20,6 @@ private:
 	unsigned char alpha;
 	double tickVal;
 	bool rend;
-	int ref;
 	
 public:
 	// Konstruktor
@@ -36,9 +35,6 @@ public:
 	void render( Bild &zRObj );
 	// constant
 	int getStatus() const;
-	// Reference Counting
-	AccountAktivität *getThis();
-	AccountAktivität *release();
 };
 
 #endif

+ 16 - 79
KSGClient/NachLogin/Account/Historie/AccountHistorie.cpp

@@ -7,6 +7,7 @@
 #include <DateiSystem.h>
 #include <Zeit.h>
 #include <Punkt.h>
+#include <Globals.h>
 
 typedef AccountHistorieStatistikV* ( *AHSSDLLStart )( void );
 typedef AufzeichnungV* ( *AHSADLLStart )( void );
@@ -27,7 +28,6 @@ AHSpielStatistik::AHSpielStatistik( Schrift *schrift )
 	sichtbar = 0;
 	statistik = 0;
 	tickVal = 0;
-	ref = 1;
 }
 
 // Destruktor
@@ -50,7 +50,7 @@ void AHSpielStatistik::reset()
 	{
 		if( statistik )
 			statistik = statistik->release();
-		dllDateien->releaseDLL( *dllName );
+		Framework::getDLLRegister()->releaseDLL( *dllName );
 		dllHandle = 0;
 	}
 }
@@ -88,7 +88,7 @@ bool AHSpielStatistik::ladeDaten( int spielId, int karteId )
 	dllName->append( spielArtName->getText() );
 	dllName->append( ".dll" );
 	spielArtName->release();
-	dllHandle = dllDateien->ladeDLL( *dllName, *pfad );
+	dllHandle = Framework::getDLLRegister()->ladeDLL( *dllName, *pfad );
 	if( !dllHandle )
 	{
 		Text *msg = new Text( "Die DLL Datei '" );
@@ -103,7 +103,7 @@ bool AHSpielStatistik::ladeDaten( int spielId, int karteId )
 	{
 		if( dllHandle )
 		{
-			dllDateien->releaseDLL( *dllName );
+            Framework::getDLLRegister()->releaseDLL( *dllName );
 			dllHandle = 0;
 		}
 		Text *msg = new Text( "Die Funktion 'GetAccountHistorieStatistik' konnte in der DLL Datei '" );
@@ -119,7 +119,7 @@ bool AHSpielStatistik::ladeDaten( int spielId, int karteId )
 	{
 		if( dllHandle )
 		{
-			dllDateien->releaseDLL( *dllName );
+            Framework::getDLLRegister()->releaseDLL( *dllName );
 			dllHandle = 0;
 		}
 		nachLogin->zNachrichtenListe()->addNachricht( new Text( "Fehler" ), new Text( "Für diese Spielart ist keine genauere Ansicht der Spiel Ergebnisse verfügbar." ), new Text( "Ok" ) );
@@ -127,7 +127,7 @@ bool AHSpielStatistik::ladeDaten( int spielId, int karteId )
 	}
 	this->spielId = spielId;
 	statistik->setSchrift( schrift->getThis() );
-	statistik->setBildschirm( hauptScreen->getThis() );
+	statistik->setBildschirm( hauptScreen );
 	start();
 	return 1;
 }
@@ -251,21 +251,6 @@ bool AHSpielStatistik::istNochSichtbar() const
 	return statistik ? statistik->istNochSichtbar() : 0;
 }
 
-// Refernce Counting
-AHSpielStatistik *AHSpielStatistik::getThis()
-{
-	ref++;
-	return this;
-}
-
-AHSpielStatistik *AHSpielStatistik::release()
-{
-	ref--;
-	if( !ref )
-		delete this;
-	return 0;
-}
-
 
 // Inahlt der AHSpielVideo Klasse aus AccountHistorie.h
 // Konstruktor
@@ -283,7 +268,6 @@ AHSpielVideo::AHSpielVideo( Schrift *schrift )
 	sichtbar = 0;
 	video = 0;
 	tickVal = 0;
-	ref = 1;
 }
 
 // Destruktor
@@ -306,7 +290,7 @@ void AHSpielVideo::reset()
 	{
 		if( video )
 			video = video->release();
-		dllDateien->releaseDLL( *dllName );
+        Framework::getDLLRegister()->releaseDLL( *dllName );
 		dllHandle = 0;
 	}
 }
@@ -344,7 +328,7 @@ bool AHSpielVideo::ladeDaten( int spielId, int karteId )
 	dllName->append( spielArtName->getText() );
 	dllName->append( ".dll" );
 	spielArtName->release();
-	dllHandle = dllDateien->ladeDLL( *dllName, *pfad );
+	dllHandle = Framework::getDLLRegister()->ladeDLL( *dllName, *pfad );
 	if( !dllHandle )
 	{
 		Text *msg = new Text( "Die DLL Datei '" );
@@ -359,7 +343,7 @@ bool AHSpielVideo::ladeDaten( int spielId, int karteId )
 	{
 		if( dllHandle )
 		{
-			dllDateien->releaseDLL( *dllName );
+            Framework::getDLLRegister()->releaseDLL( *dllName );
 			dllHandle = 0;
 		}
 		Text *msg = new Text( "Die Funktion 'GetAufzeichnung' konnte in der DLL Datei '" );
@@ -375,7 +359,7 @@ bool AHSpielVideo::ladeDaten( int spielId, int karteId )
 	{
 		if( dllHandle )
 		{
-			dllDateien->releaseDLL( *dllName );
+            Framework::getDLLRegister()->releaseDLL( *dllName );
 			dllHandle = 0;
 		}
 		nachLogin->zNachrichtenListe()->addNachricht( new Text( "Fehler" ), new Text( "Für diese Spielart ist keine Aufzeichnung verfügbar." ), new Text( "Ok" ) );
@@ -383,7 +367,7 @@ bool AHSpielVideo::ladeDaten( int spielId, int karteId )
 	}
 	this->spielId = spielId;
 	video->setSchrift( schrift->getThis() );
-	video->setBildschirm( hauptScreen->getThis() );
+	video->setBildschirm( hauptScreen );
 	start();
 	return 1;
 }
@@ -470,21 +454,6 @@ bool AHSpielVideo::istNochSichtbar() const
 	return alpha != 0;
 }
 
-// Refernce Counting
-AHSpielVideo *AHSpielVideo::getThis()
-{
-	ref++;
-	return this;
-}
-
-AHSpielVideo *AHSpielVideo::release()
-{
-	ref--;
-	if( !ref )
-		delete this;
-	return 0;
-}
-
 
 // Inhalt der AHSLETeamListeSpieler Klasse aus AccountHistorie.h
 // Konstruktor
@@ -979,8 +948,7 @@ AHSpielListe::AHSpielListe()
   scroll( new VScrollBar() ),
   members( new RCArray< AHSpielListeEintrag >() ),
   sortSpalte( new Text( "Spiel" ) ),
-  sortAbsteigend( 0 ),
-  ref( 1 )
+  sortAbsteigend( 0 )
 {
 	pos = Punkt( 10, 40 );
 	ram->setFarbe( 0xFFFFFFFF );
@@ -1169,21 +1137,6 @@ int AHSpielListe::getAktion( int *spielId, int *karteId ) const
 	return 0;
 }
 
-// Reference Counting
-AHSpielListe *AHSpielListe::getThis()
-{
-	ref++;
-	return this;
-}
-
-AHSpielListe *AHSpielListe::release()
-{
-	ref--;
-	if( !ref )
-		delete this;
-	return 0;
-}
-
 
 // Inhalt der AccountHistorie Klasse aus AccountHistorie.h
 // Konstruktor
@@ -1203,14 +1156,13 @@ AccountHistorie::AccountHistorie( Schrift *zSchrift )
   alpha2( 255 ),
   alpha3( 255 ),
   tickVal( 0 ),
-  rend( 0 ),
-  ref( 1 )
+  rend( 0 )
 {
 	initToolTip( sortSpalte, "Wähle aus, nach welcher Spalte die\nTabelle sortiert werden soll.", zSchrift->getThis(), hauptScreen );
 	initToolTip( sortRichtung, "Wähle aus, ob Aufwärts oder Abwärts\nsortiert werden soll.", zSchrift->getThis(), hauptScreen );
-	historieF->addMember( liste );
-	historieF->addMember( sortSpalte );
-	historieF->addMember( sortRichtung );
+	historieF->addMember( liste->getThis() );
+	historieF->addMember( sortSpalte->getThis() );
+	historieF->addMember( sortRichtung->getThis() );
 	historieF->setMausEreignis( _ret1ME );
 }
 
@@ -1527,19 +1479,4 @@ void AccountHistorie::render( Bild &zRObj )
 int AccountHistorie::getStatus() const
 {
 	return status;
-}
-
-// Reference Counting
-AccountHistorie *AccountHistorie::getThis()
-{
-	ref++;
-	return this;
-}
-
-AccountHistorie *AccountHistorie::release()
-{
-	ref--;
-	if( !ref )
-		delete this;
-	return 0;
 }

+ 2 - 18
KSGClient/NachLogin/Account/Historie/AccountHistorie.h

@@ -14,7 +14,7 @@
 
 using namespace Framework;
 
-class AHSpielStatistik : private Thread
+class AHSpielStatistik : public Thread
 {
 private:
 	Fenster *statistikF;
@@ -27,7 +27,6 @@ private:
 	unsigned char alpha;
 	bool sichtbar;
 	int spielId;
-	int ref;
 
 public:
 	// Konstruktor
@@ -46,12 +45,9 @@ public:
 	void render( Bild &zRObj );
 	// constant
 	bool istNochSichtbar() const;
-	// Refernce Counting
-	AHSpielStatistik *getThis();
-	AHSpielStatistik *release();
 };
 
-class AHSpielVideo : private Thread
+class AHSpielVideo : public Thread
 {
 private:
 	Fenster *videoF;
@@ -64,7 +60,6 @@ private:
 	unsigned char alpha;
 	bool sichtbar;
 	int spielId;
-	int ref;
 
 public:
 	// Konstruktor
@@ -80,9 +75,6 @@ public:
 	void render( Bild &zRObj );
 	// constant
 	bool istNochSichtbar() const;
-	// Refernce Counting
-	AHSpielVideo *getThis();
-	AHSpielVideo *release();
 };
 
 class AHSLETeamListeSpieler
@@ -219,7 +211,6 @@ private:
 	RCArray< AHSpielListeEintrag > *members;
 	Text *sortSpalte;
 	bool sortAbsteigend;
-	int ref;
 
 	// privat
 	int getReihenfolge( int *arr );
@@ -239,9 +230,6 @@ public:
 	void render( Bild &zRObj ) override;
 	// constant
 	int getAktion( int *spielId, int *karteId ) const;
-	// Reference Counting
-	AHSpielListe *getThis();
-	AHSpielListe *release();
 };
 
 class AccountHistorie : public Thread
@@ -262,7 +250,6 @@ private:
 	unsigned char alpha3;
 	double tickVal;
 	bool rend;
-	int ref;
 
 public:
 	// Konstruktor
@@ -280,9 +267,6 @@ public:
 	void render( Bild &zRObj );
 	// constant
 	int getStatus() const;
-	// Reference Counting
-	AccountHistorie *getThis();
-	AccountHistorie *release();
 };
 
 #endif

+ 2 - 36
KSGClient/NachLogin/Account/SpielPartner/AccountSpielPartner.cpp

@@ -321,8 +321,7 @@ AccountSPListe::AccountSPListe( Schrift *zSchrift )
   gruppierung( new Text( "Spieler/Spiel/Karte" ) ),
   sortSpalte( new Text( "Name" ) ),
   sortAbsteigend( 0 ),
-  rend( 0 ),
-  ref( 1 )
+  rend( 0 )
 {
 	pos = Punkt( 10, 40 );
 	ram->setSize( 760, 380 );
@@ -874,23 +873,6 @@ void AccountSPListe::render( Bild &zRObj )
 	zRObj.releaseDrawOptions();
 }
 
-// constant
-
-// Reference Counting
-AccountSPListe *AccountSPListe::getThis()
-{
-	ref++;
-	return this;
-}
-
-AccountSPListe *AccountSPListe::release()
-{
-	ref--;
-	if( !ref )
-		delete this;
-	return 0;
-}
-
 
 // Inhalt der AccountSpielPartner Klasse aus AccountSpielPartner.h
 // Konstruktor
@@ -906,8 +888,7 @@ AccountSpielPartner::AccountSpielPartner( Schrift *zSchrift )
   animation( 0 ),
   alpha( 255 ),
   tickVal( 0 ),
-  rend( 0 ),
-  ref( 1 )
+  rend( 0 )
 {
 	initToolTip( gruppAusw, "Wähle Gruppierung aus, nach der die Daten angezeigt werden sollen.", zSchrift->getThis(), hauptScreen );
 	initToolTip( sortSpalte, "Wähle aus, nach welcher Spalte die\nTabelle sortiert werden soll.", zSchrift->getThis(), hauptScreen );
@@ -1118,19 +1099,4 @@ void AccountSpielPartner::render( Bild &zRObj )
 int AccountSpielPartner::getStatus() const
 {
 	return status;
-}
-
-// Reference Counting
-AccountSpielPartner *AccountSpielPartner::getThis()
-{
-	ref++;
-	return this;
-}
-
-AccountSpielPartner *AccountSpielPartner::release()
-{
-	ref--;
-	if( !ref )
-		delete this;
-	return 0;
 }

+ 0 - 10
KSGClient/NachLogin/Account/SpielPartner/AccountSpielPartner.h

@@ -81,7 +81,6 @@ private:
 	Text *sortSpalte;
 	bool sortAbsteigend;
 	bool rend;
-	int ref;
 
 	// privat
 	int getReihenfolge( int *arr );
@@ -100,11 +99,6 @@ public:
 	bool tick( double tickVal ) override;
 	void doMausEreignis( MausEreignis &me ) override;
 	void render( Bild &zRObj ) override;
-	// constant
-
-	// Reference Counting
-	AccountSPListe *getThis();
-	AccountSPListe *release();
 };
 
 class AccountSpielPartner : public Thread
@@ -121,7 +115,6 @@ private:
 	unsigned char alpha;
 	double tickVal;
 	bool rend;
-	int ref;
 
 public:
 	// Konstruktor
@@ -138,9 +131,6 @@ public:
 	void render( Bild &zRObj );
 	// constant
 	int getStatus() const;
-	// Reference Counting
-	AccountSpielPartner *getThis();
-	AccountSpielPartner *release();
 };
 
 #endif;

+ 6 - 40
KSGClient/NachLogin/Account/Spiele_Karten/AccountSpieleUndKarten.cpp

@@ -435,8 +435,7 @@ AccountSUKListe::AccountSUKListe()
   statusFilter( new Text( "Alle" ) ),
   sortSpalte( new Text( "Name" ) ),
   sortAbsteigend( 0 ),
-  rend( 0 ),
-  ref( 1 )
+  rend( 0 )
 {
 	pos = Punkt( 10, 40 );
 	ram->setSize( 760, 380 );
@@ -644,23 +643,6 @@ void AccountSUKListe::render( Bild &zRObj )
 	zRObj.releaseDrawOptions();
 }
 
-// constant
-
-// Reference Counting
-AccountSUKListe *AccountSUKListe::getThis()
-{
-	ref++;
-	return this;
-}
-
-AccountSUKListe *AccountSUKListe::release()
-{
-	ref--;
-	if( !ref )
-		delete this;
-	return 0;
-}
-
 #define ABSTYLE AuswahlBox::Style::Sichtbar | AuswahlBox::Style::Erlaubt | AuswahlBox::Style::Rahmen | AuswahlBox::Style::AuswahlBuffer | AuswahlBox::Style::MausBuffer | AuswahlBox::Style::MaxHeight | AuswahlBox::Style::Hintergrund | AuswahlBox::Style::VScroll
 
 // Inhalt der AccountSpieleUndKarten Klasse aus AccountSpieleUndKarten.h
@@ -678,16 +660,15 @@ AccountSpieleUndKarten::AccountSpieleUndKarten( Schrift *zSchrift )
   animation( 0 ),
   alpha( 255 ),
   tickVal( 0 ),
-  rend( 0 ),
-  ref( 1 )
+  rend( 0 )
 {
 	initToolTip( statusAusw, "Wähle den Status der anzuzeigenden Spiele und Karten aus.", zSchrift->getThis(), hauptScreen );
 	initToolTip( sortSpalte, "Wähle aus, nach welcher Spalte die\nTabelle sortiert werden soll.", zSchrift->getThis(), hauptScreen );
 	initToolTip( sortRichtung, "Wähle aus, Ob Aufwärts oder Abwärts sortiert werden soll.", zSchrift->getThis(), hauptScreen );
-	spieleUndKartenF->addMember( liste );
-	spieleUndKartenF->addMember( statusAusw );
-	spieleUndKartenF->addMember( sortSpalte );
-	spieleUndKartenF->addMember( sortRichtung );
+	spieleUndKartenF->addMember( liste->getThis() );
+	spieleUndKartenF->addMember( statusAusw->getThis() );
+	spieleUndKartenF->addMember( sortSpalte->getThis() );
+	spieleUndKartenF->addMember( sortRichtung->getThis() );
 	spieleUndKartenF->setMausEreignis( _ret1ME );
 }
 
@@ -903,19 +884,4 @@ void AccountSpieleUndKarten::render( Bild &zRObj )
 int AccountSpieleUndKarten::getStatus() const
 {
 	return status;
-}
-
-// Reference Counting
-AccountSpieleUndKarten *AccountSpieleUndKarten::getThis()
-{
-	ref++;
-	return this;
-}
-
-AccountSpieleUndKarten *AccountSpieleUndKarten::release()
-{
-	ref--;
-	if( !ref )
-		delete this;
-	return 0;
 }

+ 0 - 10
KSGClient/NachLogin/Account/Spiele_Karten/AccountSpieleUndKarten.h

@@ -106,7 +106,6 @@ private:
 	Text *sortSpalte;
 	bool sortAbsteigend;
 	bool rend;
-	int ref;
 
 	// privat
 	int getReihenfolge( int *arr );
@@ -125,11 +124,6 @@ public:
 	bool tick( double tickVal ) override;
 	void doMausEreignis( MausEreignis &me ) override;
 	void render( Bild &zRObj ) override;
-	// constant
-
-	// Reference Counting
-	AccountSUKListe *getThis();
-	AccountSUKListe *release();
 };
 
 class AccountSpieleUndKarten : public Thread
@@ -147,7 +141,6 @@ private:
 	unsigned char alpha;
 	double tickVal;
 	bool rend;
-	int ref;
 
 public:
 	// Konstruktor
@@ -164,9 +157,6 @@ public:
 	void render( Bild &zRObj );
 	// constant
 	int getStatus() const;
-	// Reference Counting
-	AccountSpieleUndKarten *getThis();
-	AccountSpieleUndKarten *release();
 };
 
 #endif

+ 7 - 32
KSGClient/NachLogin/Account/Statistik/AccountStatistik.cpp

@@ -25,8 +25,7 @@ AccountStatistik::AccountStatistik( Schrift *zSchrift )
   animation( 0 ),
   alpha( 255 ),
   tickVal( 0 ),
-  rend( 0 ),
-  ref( 1 )
+  rend( 0 )
 {
 	initToolTip( sortSpalte, "Wähle aus, nach welcher Spalte die\nTabelle sortiert werden soll.", zSchrift->getThis(), hauptScreen );
 	initToolTip( sortRichtung, "Wähle aus, ob Aufwärts oder Abwärts\nsortiert werden soll.", zSchrift->getThis(), hauptScreen );
@@ -58,12 +57,12 @@ AccountStatistik::AccountStatistik( Schrift *zSchrift )
 	vor->setStyle( Knopf::Style::Sichtbar | Knopf::Style::Hintergrund | Knopf::Style::HBild | Knopf::Style::KlickBuffer );
 	vor->setHintergrundBildZ( weiterB );
 	initToolTip( vor, "Eine Seite weiter blättern.", zSchrift->getThis(), hauptScreen );
-	statistikF->addMember( tabelle );
-	statistikF->addMember( zurück );
-	statistikF->addMember( seiteTF );
-	statistikF->addMember( vor );
-	statistikF->addMember( sortSpalte );
-	statistikF->addMember( sortRichtung );
+	statistikF->addMember( tabelle->getThis() );
+	statistikF->addMember( zurück->getThis() );
+	statistikF->addMember( seiteTF->getThis() );
+	statistikF->addMember( vor->getThis() );
+	statistikF->addMember( sortSpalte->getThis() );
+	statistikF->addMember( sortRichtung->getThis() );
 	statistikF->setMausEreignis( _ret1ME );
 	vor->setMausEreignis( accountStatistikVorME );
 	zurück->setMausEreignis( accountStatistikZurückME );
@@ -89,17 +88,8 @@ void AccountStatistik::reset( bool 
 {
 	statistikF->lockZeichnung();
 	int zAnz = tabelle->getZeilenAnzahl();
-	int sAnz = tabelle->getSpaltenAnzahl();
 	for( int i = !überschrift; i < zAnz; i++ )
-	{
-		for( int j = 0; j < sAnz; j++ )
-		{
-			if( !tabelle->zZeichnung( j, !überschrift ) )
-				continue;
-			( (TextFeld*)tabelle->zZeichnung( j, !überschrift ) )->release();
-		}
 		tabelle->removeZeile( !überschrift );
-	}
 	statistikF->unlockZeichnung();
 }
 
@@ -371,21 +361,6 @@ int AccountStatistik::getStatus() const
 	return status;
 }
 
-// Reference Counting
-AccountStatistik *AccountStatistik::getThis()
-{
-	ref++;
-	return this;
-}
-
-AccountStatistik *AccountStatistik::release()
-{
-	ref--;
-	if( !ref )
-		delete this;
-	return 0;
-}
-
 
 // Ereignisse
 bool accountStatistikVorME( void *p, void *o, MausEreignis me )

+ 0 - 4
KSGClient/NachLogin/Account/Statistik/AccountStatistik.h

@@ -29,7 +29,6 @@ private:
 	unsigned char alpha;
 	double tickVal;
 	bool rend;
-	int ref;
 
 public:
 	// Konstruktor
@@ -48,9 +47,6 @@ public:
 	void render( Bild &zRObj );
 	// constant
 	int getStatus() const;
-	// Reference Counting
-	AccountStatistik *getThis();
-	AccountStatistik *release();
 };
 
 // Ereignisse

+ 1 - 31
KSGClient/NachLogin/Account/Suchen/AccountSuchen.cpp

@@ -26,8 +26,7 @@ AccountSuchen::AccountSuchen( Schrift *schrift )
   jetztSeite( 0 ),
   maxSeite( 0 ),
   alpha( 255 ),
-  rend( 0 ),
-  ref( 1 )
+  rend( 0 )
 {
 	initToolTip( accountName, "Gebe den Namen eines Spielers ein.", schrift->getThis(), hauptScreen );
 	initToolTip( sortSpalte, "Wähle aus, nach welcher Spalte die\nTabelle sortiert werden soll.", schrift->getThis(), hauptScreen );
@@ -99,20 +98,8 @@ void AccountSuchen::tabelleLehren( bool 
 {
 	lock();
 	int zAnz = liste->getZeilenAnzahl();
-	int sAnz = liste->getSpaltenAnzahl();
 	for( int i = !überschrift; i < zAnz; i++ )
-	{
-		for( int j = 0; j < sAnz; j++ )
-		{
-			if( !liste->zZeichnung( j, !überschrift ) )
-				continue;
-			if( liste->zSpaltenName( j )->istGleich( "Weiter" ) )
-				( (Knopf*)liste->zZeichnung( j, !überschrift ) )->release();
-			else
-				( (TextFeld*)liste->zZeichnung( j, !überschrift ) )->release();
-		}
 		liste->removeZeile( !überschrift );
-	}
 	unlock();
 }
 
@@ -328,23 +315,6 @@ int AccountSuchen::getAuswahlAccountId()
 	return ret;
 }
 
-// constant
-
-// Reference Counting
-AccountSuchen *AccountSuchen::getThis()
-{
-	ref++;
-	return this;
-}
-
-AccountSuchen *AccountSuchen::release()
-{
-	ref--;
-	if( !ref )
-		delete this;
-	return 0;
-}
-
 // Nachrichten
 bool accountSuchenDetailsKlick( void *p, void *obj, MausEreignis me )
 {

+ 1 - 6
KSGClient/NachLogin/Account/Suchen/AccountSuchen.h

@@ -9,7 +9,7 @@
 
 using namespace Framework;
 
-class AccountSuchen : private Thread
+class AccountSuchen : public Thread
 {
 private:
 	Schrift *schrift;
@@ -32,7 +32,6 @@ private:
 	int maxSeite;
 	unsigned char alpha;
 	bool rend;
-	int ref;
 	// privat
 	void lock();
 	void unlock();
@@ -52,10 +51,6 @@ public:
 	bool tick( double tickVal );
 	void render( Bild &zRObj );
 	int getAuswahlAccountId();
-	// constant
-	// Reference Counting
-	AccountSuchen *getThis();
-	AccountSuchen *release();
 };
 
 // Nachrichten

+ 5 - 40
KSGClient/NachLogin/Chat/ChatLeiste.cpp

@@ -7,6 +7,7 @@
 #include <DateiSystem.h>
 #include <ToolTip.h>
 #include <GSLDateiV.h>
+#include <Globals.h>
 
 typedef GSL::GSLDateiV *( *GetGSLDatei )( );
 
@@ -61,7 +62,7 @@ Chat::Chat( Schrift *zSchrift )
     animation = 1;
     rend = 0;
     msgSound = 0;
-    HMODULE dll = dllDateien->ladeDLL( "GSL.dll", "data/bin/GSL.dll" );
+    HMODULE dll = Framework::getDLLRegister()->ladeDLL( "GSL.dll", "data/bin/GSL.dll" );
     if( dll )
     {
         GetGSLDatei getGSLDatei = (GetGSLDatei)GetProcAddress( dll, "getGSLDatei" );
@@ -76,7 +77,7 @@ Chat::Chat( Schrift *zSchrift )
                 msgSound->setVolume( 0xFFFF, 0xFFFF );
         }
         if( !msgSound )
-            dllDateien->releaseDLL( "GSL.dll" );
+            Framework::getDLLRegister()->releaseDLL( "GSL.dll" );
     }
     ref = 1;
 }
@@ -87,7 +88,7 @@ Chat::~Chat()
     if( msgSound )
     {
         msgSound->release();
-        dllDateien->releaseDLL( "GSL.dll" );
+        Framework::getDLLRegister()->releaseDLL( "GSL.dll" );
     }
     rahmen->release();
     verlauf = (TextFeld *)verlauf->release();
@@ -488,18 +489,6 @@ ChatroomFenster::~ChatroomFenster()
     schrift = schrift->release();
     neueSpieler = neueSpieler->release();
     alteSpieler = alteSpieler->release();
-    for( int i = 0; i < spieler->getZeilenAnzahl(); i++ )
-    {
-        TextFeld *name = (TextFeld *)spieler->zZeichnung( 0, 0 );
-        name = (TextFeld *)name->release();
-        Knopf *freund = (Knopf *)spieler->zZeichnung( 1, 0 );
-        freund = (Knopf *)freund->release();
-        Knopf *entfernen = (Knopf *)spieler->zZeichnung( 2, 0 );
-        entfernen = (Knopf *)entfernen->release();
-        spieler->removeZeile( 0 );
-    }
-    for( int i = 0; i < 3; i++ )
-        spieler->removeSpalte( 0 );
     spieler = (ObjTabelle *)spieler->release();
     spielerName = (TextFeld *)spielerName->release();
     einladen = (Knopf *)einladen->release();
@@ -673,12 +662,6 @@ bool ChatroomFenster::tick( double tickVal )
         spieler->setZeilenHeight( z, spieler->getZeilenHeight( z ) - val / 2 );
         if( spieler->getZeilenHeight( z ) <= 0 )
         {
-            TextFeld *name = (TextFeld *)spieler->zZeichnung( 0, z );
-            name = (TextFeld *)name->release();
-            Knopf *freund = (Knopf *)spieler->zZeichnung( 1, z );
-            freund = (Knopf *)freund->release();
-            Knopf *entfernen = (Knopf *)spieler->zZeichnung( 2, z );
-            entfernen = (Knopf *)entfernen->release();
             spieler->removeZeile( z );
             alteSpieler->remove( i );
             alteSpielerAnzahl--;
@@ -943,7 +926,6 @@ ChatLeisteObj::ChatLeisteObj( Schrift * zSchrift )
     hsb = new HScrollBar();
     bildschirmGröße = BildschirmGröße();
     anzahl = 0;
-    ref = 1;
     nowME = -1;
 }
 
@@ -1207,23 +1189,6 @@ void ChatLeisteObj::render( Bild & zRObj )
     zRObj.releaseDrawOptions();
 }
 
-// constant
-
-// Reference Counting
-ChatLeisteObj *ChatLeisteObj::getThis()
-{
-    ref++;
-    return this;
-}
-
-ChatLeisteObj *ChatLeisteObj::release()
-{
-    ref--;
-    if( !ref )
-        delete this;
-    return 0;
-}
-
 // Inhalt der ChatLeiste Klasse aus ChatLeiste.h
 // Konstruktor
 ChatLeiste::ChatLeiste( Schrift * zSchrift, Fenster * zNachLoginFenster )
@@ -1275,7 +1240,7 @@ ChatLeiste::~ChatLeiste()
     maximierenBild = maximierenBild->release();
     fenster = (Fenster*)fenster->release();
     minMax = (Knopf*)minMax->release();
-    chatLeiste = chatLeiste->release();
+    chatLeiste = (ChatLeisteObj*)chatLeiste->release();
 }
 
 // nicht constant

+ 0 - 6
KSGClient/NachLogin/Chat/ChatLeiste.h

@@ -126,7 +126,6 @@ private:
 	Schrift *schrift;
 	Punkt bildschirmGröße;
 	int anzahl;
-	int ref;
 	int nowME;
 
 public:
@@ -148,11 +147,6 @@ public:
 	void doTastaturEreignis( TastaturEreignis &te ) override;
 	void doMausEreignis( MausEreignis &me ) override;
 	void render( Bild &zRObj ) override;
-	// constant
-
-	// Reference Counting
-	ChatLeisteObj *getThis();
-	ChatLeisteObj *release();
 };
 
 class ChatLeiste

+ 16 - 64
KSGClient/NachLogin/Chat/FreundesListe.cpp

@@ -101,7 +101,6 @@ FreundData::FreundData( int accountId, LRahmen *rahmen, AlphaFeld *auswahlBuffer
     auswahlAlpha = 0;
     tickVal = 0;
     rend = 0;
-    ref = 1;
     start();
 }
 
@@ -428,21 +427,6 @@ int FreundData::getHeight() const
     return höhe;
 }
 
-// reference Counting
-FreundData *FreundData::getThis()
-{
-    ref++;
-    return this;
-}
-
-FreundData *FreundData::release()
-{
-    ref--;
-    if( !ref )
-        delete this;
-    return 0;
-}
-
 // Inhalt der FreundesListeObj Klasse aus FreundesListe.h
 // Konstruktor
 FreundesListeObj::FreundesListeObj( Schrift * zSchrift )
@@ -462,7 +446,6 @@ FreundesListeObj::FreundesListeObj( Schrift * zSchrift )
     vsb->update( 0, bildschirmGröße.y - 200 );
     memberNummer = 0;
     einladenSichtbar = 0;
-    ref = 1;
 }
 
 // Destruktor
@@ -653,21 +636,6 @@ bool FreundesListeObj::istFreund( int accId ) const
     return 0;
 }
 
-// reference Counting
-FreundesListeObj *FreundesListeObj::getThis()
-{
-    ref++;
-    return this;
-}
-
-FreundesListeObj *FreundesListeObj::release()
-{
-    ref--;
-    if( !ref )
-        delete this;
-    return 0;
-}
-
 // Inhalt der FreundesListe Klasse aus FreundesListe.h
 // Konstruktor
 FreundesListe::FreundesListe( Schrift * zSchrift, Fenster * zNachLoginFenster )
@@ -719,17 +687,17 @@ FreundesListe::FreundesListe( Schrift * zSchrift, Fenster * zNachLoginFenster )
     minMax->setMausEreignisParameter( this );
     minMax->setMausEreignis( freundesListeMinMaxME );
     initToolTip( minMax, "Freundes Leiste minimieren.", zSchrift->getThis(), hauptScreen );
-    fenster->addMember( minMax );
+    fenster->addMember( minMax->getThis() );
 
     überschrift = initTextFeld( 0, 5, 250, 25, zSchrift, TextFeld::Style::Text | TextFeld::Style::Center | TextFeld::Style::Sichtbar, "Freunde" );
     überschrift->setSchriftSize( 15 );
-    fenster->addMember( überschrift );
+    fenster->addMember( überschrift->getThis() );
 
     accountName = initTextFeld( 25, 40, 200, 20, zSchrift, TextFeld::Style::TextFeld | TextFeld::Style::Sichtbar, "" );
     accountName->setTastaturEreignisParameter( this );
     accountName->setTastaturEreignis( freundesListeNameTE );
     initToolTip( accountName, "Mit diesem Namen bist du bei anderen Spielern sichtbar.", zSchrift->getThis(), hauptScreen );
-    fenster->addMember( accountName );
+    fenster->addMember( accountName->getThis() );
 
     LTDBDatei * chatBilder = new LTDBDatei();
     chatBilder->setDatei( new Text( "data/client/bilder/chat.ltdb" ) );
@@ -743,7 +711,7 @@ FreundesListe::FreundesListe( Schrift * zSchrift, Fenster * zNachLoginFenster )
     neuerFreund->setMausEreignisParameter( this );
     neuerFreund->setMausEreignis( freundesListeNeuerFreundME );
     initToolTip( neuerFreund, "Freundesanfrage senden.", zSchrift->getThis(), hauptScreen );
-    fenster->addMember( neuerFreund );
+    fenster->addMember( neuerFreund->getThis() );
 
     neuerChat = initKnopf( 30, 75, 20, 20, 0, 0, "" );
     neuerChat->setStyle( Knopf::Style::Sichtbar | Knopf::Style::Erlaubt | Knopf::Style::Hintergrund | Knopf::Style::HBild | Knopf::Style::HAlpha | Knopf::Style::KlickBuffer );
@@ -751,59 +719,58 @@ FreundesListe::FreundesListe( Schrift * zSchrift, Fenster * zNachLoginFenster )
     neuerChat->setMausEreignisParameter( this );
     neuerChat->setMausEreignis( freundesListeNeuerChatME );
     initToolTip( neuerChat, "Nachricht senden.", zSchrift->getThis(), hauptScreen );
-    fenster->addMember( neuerChat );
+    fenster->addMember( neuerChat->getThis() );
 
     neuerFreundFenster = initFenster( 0, 100, 270, 0, 0, Fenster::Style::Erlaubt | Fenster::Style::Rahmen, 0 );
     neuerFreundSpielerName = initTextFeld( 5, 5, 235, 20, zSchrift, TextFeld::Style::Sichtbar | TextFeld::Style::TextFeld, "Spieler Name" );
     neuerFreundSpielerName->setTastaturEreignisParameter( this );
     neuerFreundSpielerName->setTastaturEreignis( freundesListeNeuerFreundSpielerNameTE );
     initToolTip( neuerFreundSpielerName, "Name des Spielers an den eine Freundesanfrage gesendet werden soll.", zSchrift->getThis(), hauptScreen );
-    neuerFreundFenster->addMember( neuerFreundSpielerName );
+    neuerFreundFenster->addMember( neuerFreundSpielerName->getThis() );
     neuerFreundFertig = initKnopf( 245, 5, 20, 20, 0, 0, "" );
     neuerFreundFertig->setStyle( Knopf::Style::Sichtbar | Knopf::Style::Erlaubt | Knopf::Style::Hintergrund | Knopf::Style::HBild | Knopf::Style::HAlpha | Knopf::Style::KlickBuffer );
     neuerFreundFertig->setHintergrundBildZ( maximierenBild->getThis() );
     neuerFreundFertig->setMausEreignisParameter( this );
     neuerFreundFertig->setMausEreignis( freundesListeNeuerFreundFertigME );
     initToolTip( neuerFreundFertig, "Diesem Spieler eine Freundesanfrage senden.", zSchrift->getThis(), hauptScreen );
-    neuerFreundFenster->addMember( neuerFreundFertig );
-    fenster->addMember( neuerFreundFenster );
+    neuerFreundFenster->addMember( neuerFreundFertig->getThis() );
+    fenster->addMember( neuerFreundFenster->getThis() );
 
     neuerChatFenster = initFenster( 0, 100, 270, 0, 0, Fenster::Style::Erlaubt | Fenster::Style::Rahmen, 0 );
     neuerChatName = initTextFeld( 5, 5, 235, 20, zSchrift, TextFeld::Style::Sichtbar | TextFeld::Style::TextFeld, "Spieler Name" );
     neuerChatName->setTastaturEreignisParameter( this );
     neuerChatName->setTastaturEreignis( freundesListeNeuerChatNameTE );
     initToolTip( neuerChatName, "Name des Spielers an den eine Nachricht gesendet werden soll.", zSchrift->getThis(), hauptScreen );
-    neuerChatFenster->addMember( neuerChatName );
+    neuerChatFenster->addMember( neuerChatName->getThis() );
     neuerChatFertig = initKnopf( 245, 5, 20, 20, 0, 0, "" );
     neuerChatFertig->setStyle( Knopf::Style::Sichtbar | Knopf::Style::Erlaubt | Knopf::Style::Hintergrund | Knopf::Style::HBild | Knopf::Style::HAlpha | Knopf::Style::KlickBuffer );
     neuerChatFertig->setHintergrundBildZ( maximierenBild->getThis() );
     neuerChatFertig->setMausEreignisParameter( this );
     neuerChatFertig->setMausEreignis( freundesListeNeuerChatFertigME );
     initToolTip( neuerChatFertig, "Diesem Spieler eine Nachricht senden.", zSchrift->getThis(), hauptScreen );
-    neuerChatFenster->addMember( neuerChatFertig );
+    neuerChatFenster->addMember( neuerChatFertig->getThis() );
     neuesChatroomName = initTextFeld( 5, 30, 235, 20, zSchrift, TextFeld::Style::Sichtbar | TextFeld::Style::TextFeld, "Chatroom Name" );
     neuesChatroomName->setTastaturEreignisParameter( this );
     neuesChatroomName->setTastaturEreignis( freundesListeNeuesChatroomNameTE );
     initToolTip( neuesChatroomName, "Name des Chatroom dem du beitreten möchtest.", zSchrift->getThis(), hauptScreen );
-    neuerChatFenster->addMember( neuesChatroomName );
+    neuerChatFenster->addMember( neuesChatroomName->getThis() );
     neuesChatroomFertig = initKnopf( 245, 30, 20, 20, 0, 0, "" );
     neuesChatroomFertig->setStyle( Knopf::Style::Sichtbar | Knopf::Style::Erlaubt | Knopf::Style::Hintergrund | Knopf::Style::HBild | Knopf::Style::HAlpha | Knopf::Style::KlickBuffer );
     neuesChatroomFertig->setHintergrundBildZ( maximierenBild->getThis() );
     neuesChatroomFertig->setMausEreignisParameter( this );
     neuesChatroomFertig->setMausEreignis( freundesListeNeuesChatroomFertigME );
     initToolTip( neuesChatroomFertig, "Chatroom erstellen oder beitreten.", zSchrift->getThis(), hauptScreen );
-    neuerChatFenster->addMember( neuesChatroomFertig );
-    fenster->addMember( neuerChatFenster );
+    neuerChatFenster->addMember( neuesChatroomFertig->getThis() );
+    fenster->addMember( neuerChatFenster->getThis() );
 
     freundesListe = new FreundesListeObj( zSchrift );
     freundesListe->setPosition( 0, 100 );
     freundesListe->setSize( 270, bildschirmGröße.y - 200 );
-    fenster->addMember( freundesListe );
+    fenster->addMember( freundesListe->getThis() );
 
-    zNachLoginFenster->addMember( fenster );
+    zNachLoginFenster->addMember( fenster->getThis() );
     animation = 1;
     tickVal = 0;
-    ref = 1;
     neuerFreundSichtbar = 0;
     neuerChatSichtbar = 0;
     rend = 0;
@@ -821,7 +788,7 @@ FreundesListe::~FreundesListe()
     minMax = (Knopf *)minMax->release();
     überschrift = (TextFeld *)überschrift->release();
     accountName = (TextFeld *)accountName->release();
-    freundesListe = freundesListe->release();
+    freundesListe = (FreundesListeObj*)freundesListe->release();
     neuerFreund = (Knopf *)neuerFreund->release();
     neuerChat = (Knopf *)neuerChat->release();
     neuerFreundFenster = (Fenster *)neuerFreundFenster->release();
@@ -1202,21 +1169,6 @@ bool FreundesListe::istFreund( int accId ) const
     return freundesListe->istFreund( accId );
 }
 
-// reference Counting
-FreundesListe *FreundesListe::getThis()
-{
-    ref++;
-    return this;
-}
-
-FreundesListe *FreundesListe::release()
-{
-    ref--;
-    if( !ref )
-        delete this;
-    return 0;
-}
-
 // Nachrichten
 bool freundesListeMinMaxME( void *p, void *obj, MausEreignis me )
 {

+ 2 - 14
KSGClient/NachLogin/Chat/FreundesListe.h

@@ -11,7 +11,7 @@
 
 using namespace Framework;
 
-class FreundData : private Thread
+class FreundData : public Thread
 {
 private:
 	LRahmen *rahmen;
@@ -31,7 +31,6 @@ private:
 	unsigned char auswahlAlpha;
 	double tickVal;
 	bool rend;
-	int ref;
 
 public:
 	// Konstruktor
@@ -58,9 +57,6 @@ public:
 	Text *getStatus() const;
 	int getAccountId() const;
 	int getHeight() const;
-	// reference Counting
-	FreundData *getThis();
-	FreundData *release();
 };
 
 class FreundesListeObj : public Zeichnung
@@ -74,7 +70,6 @@ private:
 	Punkt bildschirmGröße;
 	bool einladenSichtbar;
 	int memberNummer;
-	int ref;
 
 public:
 	// Konstruktor
@@ -95,12 +90,9 @@ public:
 	void render( Bild &zRObj ) override;
 	// constant
 	bool istFreund( int accId ) const;
-	// reference Counting
-	FreundesListeObj *getThis();
-	FreundesListeObj *release();
 };
 
-class FreundesListe : private Thread
+class FreundesListe : public Thread
 {
 private:
 	Fenster *fenster;
@@ -126,7 +118,6 @@ private:
 	bool neuerFreundSichtbar;
 	bool neuerChatSichtbar;
 	bool rend;
-	int ref;
 
 public:
 	// Konstruktor
@@ -157,9 +148,6 @@ public:
 	bool druckNeuesChatroomFertig( MausEreignis &me );
 	// constant
 	bool istFreund( int accId ) const;
-	// reference Counting
-	FreundesListe *getThis();
-	FreundesListe *release();
 };
 
 // Nachrichten

+ 10 - 26
KSGClient/NachLogin/Chat/NachrichtenListe.cpp

@@ -10,6 +10,7 @@
 #include <KSGTDatei.h>
 #include <ToolTip.h>
 #include <GSLDateiV.h>
+#include <Globals.h>
 
 typedef GSL::GSLDateiV *( *GetGSLDatei )( );
 
@@ -276,7 +277,7 @@ SpielUpdateNachricht::SpielUpdateNachricht( Schrift * zSchrift, Text * titel, Te
         else
             this->negAk();
     } );
-    if( !updateH->add( update->getThis() ) )
+    if( !updateH->add( (Update*)update->getThis() ) )
         entfernen();
 }
 
@@ -526,7 +527,6 @@ NachrichtenListeObj::NachrichtenListeObj( Schrift * zSchrift )
     vsb->update( 0, bildschirmGröße.y - 122 );
     anzahl = 0;
     gr = Punkt( 250, bildschirmGröße.y - 122 );
-    ref = 1;
 }
 
 // Destruktor
@@ -656,22 +656,6 @@ void NachrichtenListeObj::render( Bild & zrObj )
     unlockZeichnung();
 }
 
-// contant
-
-// Reference Counting
-NachrichtenListeObj *NachrichtenListeObj::getThis()
-{
-    ref++;
-    return this;
-}
-
-NachrichtenListeObj *NachrichtenListeObj::release()
-{
-    ref--;
-    if( !ref )
-        delete this;
-    return 0;
-}
 
 // Inhalt der NachrichtenListe Klasse aus NachrichtListe.h
 // Konstruktor
@@ -703,25 +687,25 @@ NachrichtenListe::NachrichtenListe( Schrift * zSchrift, Fenster * zNachLoginFens
     fenster->setKBgFarbe( 0xFF000000 );
     überschrift = initTextFeld( 1, 1, 248, 20, zSchrift, TextFeld::Style::Text | TextFeld::Style::Center | TextFeld::Style::Sichtbar, "Nachrichten" );
     überschrift->setSchriftSize( 15 );
-    fenster->addMember( überschrift );
+    fenster->addMember( überschrift->getThis() );
     minMax = initKnopf( 1, 1, 20, 20, 0, 0, "" );
     minMax->setStyle( Knopf::Style::Sichtbar | Knopf::Style::Erlaubt | Knopf::Style::Hintergrund | Knopf::Style::HBild | Knopf::Style::HAlpha | Knopf::Style::KlickBuffer );
     minMax->setMausEreignisParameter( this );
     minMax->setMausEreignis( NachrichtenListeMinMaxME );
     minMax->setHintergrundBildZ( minimierenBild->getThis() );
     initToolTip( minMax, "Nachrichten Leiste minimieren.", zSchrift->getThis(), hauptScreen );
-    fenster->addMember( minMax );
+    fenster->addMember( minMax->getThis() );
     nachrichtenListe = new NachrichtenListeObj( zSchrift );
     nachrichtenListe->setPosition( 1, 21 );
     nachrichtenListe->setSize( 248, bildschirmGröße.y - 122 );
-    fenster->addMember( nachrichtenListe );
-    zNachLoginFenster->addMember( fenster );
+    fenster->addMember( nachrichtenListe->getThis() );
+    zNachLoginFenster->addMember( fenster->getThis() );
     tickVal = 0;
     animation = 1;
     rend = 0;
     msgSound = 0;
     errSound = 0;
-    HMODULE dll = dllDateien->ladeDLL( "GSL.dll", "data/bin/GSL.dll" );
+    HMODULE dll = Framework::getDLLRegister()->ladeDLL( "GSL.dll", "data/bin/GSL.dll" );
     if( dll )
     {
         GetGSLDatei getGSLDatei = (GetGSLDatei)GetProcAddress( dll, "getGSLDatei" );
@@ -739,7 +723,7 @@ NachrichtenListe::NachrichtenListe( Schrift * zSchrift, Fenster * zNachLoginFens
                 errSound->setVolume( 0xFFFF, 0xFFFF );
         }
         if( !msgSound && !errSound )
-            dllDateien->releaseDLL( "GSL.dll" );
+            Framework::getDLLRegister()->releaseDLL( "GSL.dll" );
     }
     ref = 1;
 }
@@ -759,12 +743,12 @@ NachrichtenListe::~NachrichtenListe()
             errSound->stopSound();
             errSound->release();
         }
-        dllDateien->releaseDLL( "GSL.dll" );
+        Framework::getDLLRegister()->releaseDLL( "GSL.dll" );
     }
     überschrift = (TextFeld *)überschrift->release();
     fenster = (Fenster *)fenster->release();
     minMax = (Knopf *)minMax->release();
-    nachrichtenListe = nachrichtenListe->release();
+    nachrichtenListe = (NachrichtenListeObj*)nachrichtenListe->release();
     minimierenBild = minimierenBild->release();
     maximierenBild = maximierenBild->release();
     schrift->release();

+ 0 - 6
KSGClient/NachLogin/Chat/NachrichtenListe.h

@@ -96,7 +96,6 @@ private:
 	Schrift *schrift;
 	Punkt bildschirmGröße;
 	int anzahl;
-	int ref;
 
 public:
 	// Konstruktor
@@ -110,11 +109,6 @@ public:
 	bool tick( double tickVal ) override;
 	void doMausEreignis( MausEreignis &me ) override;
 	void render( Bild &zRObj ) override;
-	// contant
-
-	// Reference Counting
-	NachrichtenListeObj *getThis();
-	NachrichtenListeObj *release();
 };
 
 class NachrichtenListe

+ 0 - 37
KSGClient/NachLogin/Editor/Auswahl/Auswahl.cpp

@@ -33,7 +33,6 @@ Auswahl::Auswahl( Schrift *zSchrift, KartenEditor *kEditor )
 	aktion = 0;
 	tickVal = 0;
 	rend = 0;
-	ref = 1;
 }
 
 // Destruktor
@@ -43,19 +42,6 @@ Auswahl::~Auswahl()
 		warteAufThread( 1000 );
 	if( run )
 		ende();
-	int anz = karten->getZeilenAnzahl();
-	for( int i = 0; i < anz; i++ )
-	{
-		( (TextFeld*)karten->zZeichnung( 0, i ) )->release();
-		( (TextFeld*)karten->zZeichnung( 1, i ) )->release();
-		( (TextFeld*)karten->zZeichnung( 2, i ) )->release();
-		( (TextFeld*)karten->zZeichnung( 3, i ) )->release();
-		( (TextFeld*)karten->zZeichnung( 4, i ) )->release();
-		if( !i )
-			( (TextFeld*)karten->zZeichnung( 5, i ) )->release();
-		else
-			( (Knopf*)karten->zZeichnung( 5, i ) )->release();
-	}
 	laden->release();
 	suchFilterT->release();
 	suchFilter->release();
@@ -192,15 +178,7 @@ void Auswahl::thread()
 	karten->lockZeichnung();
 	int anz = karten->getZeilenAnzahl();
 	for( int i = 1; i < anz; i++ )
-	{
-		( (TextFeld*)karten->zZeichnung( 0, 1 ) )->release();
-		( (TextFeld*)karten->zZeichnung( 1, 1 ) )->release();
-		( (TextFeld*)karten->zZeichnung( 2, 1 ) )->release();
-		( (TextFeld*)karten->zZeichnung( 3, 1 ) )->release();
-		( (TextFeld*)karten->zZeichnung( 4, 1 ) )->release();
-		( (Knopf*)karten->zZeichnung( 5, 1 ) )->release();
 		karten->removeZeile( 1 );
-	}
 	karten->unlockZeichnung();
 	Bild *shopWeiter = bilder->get( "shop.ltdb/weiter.png" );
 	if( !shopWeiter )
@@ -410,21 +388,6 @@ bool Auswahl::istSichtbar() const
 	return sichtbar;
 }
 
-// Reference Counting
-Auswahl *Auswahl::getThis()
-{
-	ref++;
-	return this;
-}
-
-Auswahl *Auswahl::release()
-{
-	ref--;
-	if( !ref )
-		delete this;
-	return 0;
-}
-
 
 // Ereignisse
 bool auswahlWeiterME( void *p, void *obj, MausEreignis me )

+ 1 - 5
KSGClient/NachLogin/Editor/Auswahl/Auswahl.h

@@ -10,7 +10,7 @@
 
 using namespace Framework;
 
-class Auswahl : private Thread
+class Auswahl : public Thread
 {
 private:
 	KartenEditor *kEditor;
@@ -30,7 +30,6 @@ private:
 	bool sichtbar;
 	double tickVal;
 	bool rend;
-	int ref;
 
 public:
 	// Konstruktor
@@ -47,9 +46,6 @@ public:
 	void render( Bild &zRObj );
 	// constant
 	bool istSichtbar() const;
-	// Reference Counting
-	Auswahl *getThis();
-	Auswahl *release();
 };
 
 // Ereignisse

+ 2 - 18
KSGClient/NachLogin/Editor/Editor.cpp

@@ -30,10 +30,9 @@ Editor::Editor( Schrift *zSchrift, Fenster *zNachLoginFenster, int x )
 	laden = (Animation2D*)ladeAnimation->dublizieren();
 	laden->setSichtbar( 0 );
 	laden->setPosition( 425, 275 );
-	zNachLoginFenster->addMember( this );
+	zNachLoginFenster->addMember( getThis() );
 	kEditor = new KartenEditor( schrift->getThis() );
-	karteAuswahl = new Auswahl( zSchrift, kEditor->getThis() );
-	ref = 1;
+	karteAuswahl = new Auswahl( zSchrift, (KartenEditor*)kEditor->getThis() );
 }
 
 // Destruktor
@@ -198,19 +197,4 @@ bool Editor::istAnimiert() const
 bool Editor::istSichtbar() const
 {
 	return sichtbar || prozent1 != 0;
-}
-
-// Reference Counting
-Editor *Editor::getThis()
-{
-	ref++;
-	return this;
-}
-
-Editor *Editor::release()
-{
-	ref--;
-	if( !ref )
-		delete this;
-	return 0;
 }

+ 0 - 4
KSGClient/NachLogin/Editor/Editor.h

@@ -31,7 +31,6 @@ private:
 	int prozent2;
 	double tickVal;
 	int jetzt;
-	int ref;
 
 public:
 	// Konstruktor
@@ -47,9 +46,6 @@ public:
 	// constant
 	bool istAnimiert() const;
 	bool istSichtbar() const;
-	// Reference Counting
-	Editor *getThis();
-	Editor *release();
 };
 
 #endif

+ 4 - 18
KSGClient/NachLogin/Editor/Karte/Beschreibung/KEBEditor.cpp

@@ -5,12 +5,14 @@
 #include "../../../../Global/Initialisierung.h"
 #include "../../../../Global/Variablen.h"
 #include <DateiSystem.h>
+#include <Globals.h>
 
 bool KEBKnopfPressME( void *p, void *obj, MausEreignis me );
 
 // Inhalt der KEBEditor Klasse aus KEBEditor.h
 // Konstruktor
 KEBEditor::KEBEditor( Schrift *zSchrift, KEBeschreibung *zKeb )
+    : Zeichnung()
 {
     beschreibung = initKnopf( 10, 10, 100, 20, zSchrift, Knopf::Style::Sichtbar, "Beschreibung" );
     initToolTip( beschreibung, "Beschreibung bei der Kartenauswahl", zSchrift->getThis(), hauptScreen );
@@ -34,7 +36,7 @@ KEBEditor::KEBEditor( Schrift *zSchrift, KEBeschreibung *zKeb )
     sd->leseDaten();
     Schrift *ksgsS = sd->ladeSchrift();
     sd->release();
-    ksgs = dllDateien->ladeDLL( "KSGScript.dll", "data/bin/KSGScript.dll" );
+    ksgs = Framework::getDLLRegister()->ladeDLL( "KSGScript.dll", "data/bin/KSGScript.dll" );
     if( ksgs )
     {
         KSGSGetEditor getKSGScriptEditor = (KSGSGetEditor)GetProcAddress( ksgs, KSGS_EDITOR_FUNKTION );
@@ -87,7 +89,6 @@ KEBEditor::KEBEditor( Schrift *zSchrift, KEBeschreibung *zKeb )
     sichtbar = 0;
     alpha = 0;
     tickVal = 0;
-    ref = 1;
 }
 
 // Destruktor
@@ -103,7 +104,7 @@ KEBEditor::~KEBEditor()
     importieren->release();
     vorschau->release();
     if( ksgs )
-        dllDateien->releaseDLL( "KSGScript.dll" );
+        Framework::getDLLRegister()->releaseDLL( "KSGScript.dll" );
 }
 
 // nicht constant
@@ -264,19 +265,4 @@ int KEBEditor::getJetzt() const
 bool KEBEditor::istSichtbar() const
 {
     return sichtbar;
-}
-
-// Reference Counting
-KEBEditor *KEBEditor::getThis()
-{
-    ref++;
-    return this;
-}
-
-KEBEditor *KEBEditor::release()
-{
-    ref--;
-    if( !ref )
-        delete this;
-    return 0;
 }

+ 0 - 4
KSGClient/NachLogin/Editor/Karte/Beschreibung/KEBEditor.h

@@ -24,7 +24,6 @@ private:
     bool sichtbar;
     unsigned char alpha;
     double tickVal;
-    int ref;
 
 public:
     // Konstruktor
@@ -44,7 +43,4 @@ public:
     Text *zBeschreibung() const;
     int getJetzt() const;
     bool istSichtbar() const;
-    // Reference Counting
-    KEBEditor *getThis();
-    KEBEditor *release();
 };

+ 4 - 34
KSGClient/NachLogin/Editor/Karte/Beschreibung/KEBVorschau.cpp

@@ -2,6 +2,7 @@
 #include "../../../../Global/Variablen.h"
 #include "../../../../Global/Initialisierung.h"
 #include <Datei.h>
+#include <Globals.h>
 
 void kEBVorschauKSGSAktion( void *p, RCArray< KSGSVariable > *parameter, KSGSVariable **retVal )
 {
@@ -15,7 +16,7 @@ void kEBVorschauKSGSAktion( void *p, RCArray< KSGSVariable > *parameter, KSGSVar
 KEBVorschauKarteScript::KEBVorschauKarteScript( Schrift * zSchrift, TextFeld * zLog )
     : Thread()
 {
-    ksgs = dllDateien->ladeDLL( "KSGScript.dll", "data/bin/KSGScript.dll" );
+    ksgs = Framework::getDLLRegister()->ladeDLL( "KSGScript.dll", "data/bin/KSGScript.dll" );
     if( ksgs )
     {
         KSGSGetZeichnung getKSGScript = (KSGSGetZeichnung)GetProcAddress( ksgs, KSGS_START_FUNKTION );
@@ -53,7 +54,6 @@ KEBVorschauKarteScript::KEBVorschauKarteScript( Schrift * zSchrift, TextFeld * z
     alpha = 0;
     aktion = 0;
     ak = 0;
-    ref = 1;
 }
 
 // Destruktor
@@ -66,7 +66,7 @@ KEBVorschauKarteScript::~KEBVorschauKarteScript()
     }
     ram->release();
     if( ksgs )
-        dllDateien->releaseDLL( "KSGScript.dll" );
+        Framework::getDLLRegister()->releaseDLL( "KSGScript.dll" );
 }
 
 // nicht constant
@@ -177,25 +177,11 @@ void KEBVorschauKarteScript::render( Bild & zRObj )
     zRObj.releaseDrawOptions();
 }
 
-// Reference Counting
-KEBVorschauKarteScript * KEBVorschauKarteScript::getThis()
-{
-    ref++;
-    return this;
-}
-
-KEBVorschauKarteScript *KEBVorschauKarteScript::release()
-{
-    ref--;
-    if( !ref )
-        delete this;
-    return 0;
-}
-
 
 // Inhalt der KEBVorschau Klasse aus KEBVorschau.h
 // Konstruktor
 KEBVorschau::KEBVorschau( Schrift * zSchrift )
+    : Zeichnung()
 {
     this->schrift = zSchrift->getThis();
     neu = initKnopf( 10, 10, 100, 20, zSchrift, Knopf::Style::Sichtbar, "Neu starten" );
@@ -208,7 +194,6 @@ KEBVorschau::KEBVorschau( Schrift * zSchrift )
     tickVal = 0;
     aktion = 0;
     rend = 0;
-    ref = 1;
 }
 
 // Destruktor
@@ -336,19 +321,4 @@ void KEBVorschau::render( Bild & zRObj )
 bool KEBVorschau::istSichtbar() const
 {
     return sichtbar;
-}
-
-// Reference Counting
-KEBVorschau *KEBVorschau::getThis()
-{
-    ref++;
-    return this;
-}
-
-KEBVorschau *KEBVorschau::release()
-{
-    ref--;
-    if( !ref )
-        delete this;
-    return 0;
 }

+ 0 - 8
KSGClient/NachLogin/Editor/Karte/Beschreibung/KEBVorschau.h

@@ -21,7 +21,6 @@ private:
     unsigned char alpha;
     bool aktion;
     int ak;
-    int ref;
 
 public:
     // Konstruktor
@@ -37,9 +36,6 @@ public:
     void doTastaturEreignis( TastaturEreignis &te );
     bool tick( double zeit );
     void render( Bild &zRObj );
-    // Reference Counting
-    KEBVorschauKarteScript *getThis();
-    KEBVorschauKarteScript *release();
 };
 
 class KEBVorschau : public Zeichnung
@@ -56,7 +52,6 @@ private:
     double tickVal;
     int aktion;
     bool rend;
-    int ref;
 
 public:
     // Konstruktor
@@ -73,7 +68,4 @@ public:
     void render( Bild &zRObj );
     // constant
     bool istSichtbar() const;
-    // Reference Counting
-    KEBVorschau *getThis();
-    KEBVorschau *release();
 };

+ 2 - 18
KSGClient/NachLogin/Editor/Karte/Beschreibung/KEBeschreibung.cpp

@@ -23,8 +23,8 @@ KEBeschreibung::KEBeschreibung( int karte, Schrift *zSchrift )
     fenster = initFenster( 10, 40, 880, 550, zSchrift, Fenster::Style::Sichtbar | Fenster::Style::Titel | Fenster::Style::TitelBuffered | Fenster::Style::Erlaubt | Fenster::Style::Rahmen, titel );
     editor = new KEBEditor( zSchrift, this );
     vorschau = new KEBVorschau( zSchrift );
-    fenster->addMember( editor );
-    fenster->addMember( vorschau );
+    fenster->addMember( editor->getThis() );
+    fenster->addMember( vorschau->getThis() );
     laden = (Animation2D*)ladeAnimation->dublizieren();
     laden->setPosition( 425, 275 );
     laden->setSichtbar( 0 );
@@ -40,7 +40,6 @@ KEBeschreibung::KEBeschreibung( int karte, Schrift *zSchrift )
     jetzt = 0;
     this->karte = karte;
     alpha = 255;
-    ref = 1;
 }
 
 // Destruktor
@@ -410,19 +409,4 @@ void KEBeschreibung::render( Bild &zRObj )
 bool KEBeschreibung::istSichtbar() const
 {
     return sichtbar || animation;
-}
-
-// Reference Counting
-KEBeschreibung *KEBeschreibung::getThis()
-{
-    ref++;
-    return this;
-}
-
-KEBeschreibung *KEBeschreibung::release()
-{
-    ref--;
-    if( !ref )
-        delete this;
-    return 0;
 }

+ 1 - 5
KSGClient/NachLogin/Editor/Karte/Beschreibung/KEBeschreibung.h

@@ -9,7 +9,7 @@
 
 using namespace Framework;
 
-class KEBeschreibung : private Thread
+class KEBeschreibung : public Thread
 {
 private:
     Fenster *fenster;
@@ -29,7 +29,6 @@ private:
     int breite;
     int karte;
     unsigned char alpha;
-    int ref;
 
 public:
     // Konstruktor
@@ -46,7 +45,4 @@ public:
     void render( Bild &zRObj );
     // constant
     bool istSichtbar() const;
-    // Reference Counting
-    KEBeschreibung *getThis();
-    KEBeschreibung *release();
 };

+ 9 - 23
KSGClient/NachLogin/Editor/Karte/Dateien/KEDEditor.cpp

@@ -3,6 +3,7 @@
 #include <MausEreignis.h>
 #include "../../../../Global/Variablen.h"
 #include <Model2D.h>
+#include <Globals.h>
 
 // Inhalt der KEDBildSeite Klasse aus KEDEditor.h
 // Konstruktor
@@ -277,8 +278,8 @@ KEDModellSeite::KEDModellSeite( Schrift * zSchrift, Knopf * zNeueDatei, Knopf *
     neuModelOk = initKnopf( 25, 40, 100, 20, zSchrift, Knopf::Style::Normal | Knopf::Style::Sichtbar, "Erstellen" );
     neuModelOk->setMausEreignisParameter( this );
     neuModelOk->setMausEreignis( kEDEditorNeuModelOkME );
-    neuModelF->addMember( neuModelName );
-    neuModelF->addMember( neuModelOk );
+    neuModelF->addMember( neuModelName->getThis() );
+    neuModelF->addMember( neuModelOk->getThis() );
     aktion = 0;
     sichtbar = 0;
     alpha = 0;
@@ -567,7 +568,7 @@ KEDModellSeite *KEDModellSeite::release()
 // Konstruktor
 KEDSoundSeite::KEDSoundSeite( Schrift * zSchrift, Knopf * zNeueDatei, Knopf * zDateiRemove )
 {
-    dllDateien->ladeDLL( "GSL.dll", "data/bin/GSL.dll" );
+    Framework::getDLLRegister()->ladeDLL( "GSL.dll", "data/bin/GSL.dll" );
     sounds = initAuswahlListe( 220, 10, 200, 510, zSchrift, AuswahlListe::Style::Normal, {} );
     play = initKnopf( 430, 430, 100, 20, zSchrift, Knopf::Style::Sichtbar, "Play" );
     soundLöschen = initKnopf( 430, 460, 100, 20, zSchrift, Knopf::Style::Sichtbar, "Bild Löschen" );
@@ -593,7 +594,7 @@ KEDSoundSeite::~KEDSoundSeite()
         sound->stopSound();
         sound->release();
     }
-    dllDateien->releaseDLL( "GSL.dll" );
+    Framework::getDLLRegister()->releaseDLL( "GSL.dll" );
     sounds->release();
     play->release();
     soundLöschen->release();
@@ -827,6 +828,7 @@ bool kEDEditorNeuDateiOkME( void *p, void *obj, MausEreignis me )
 // Inhalt der KEDEditor Klasse aus KEDEditor.h
 // Konstruktor
 KEDEditor::KEDEditor( Schrift * zSchrift )
+    : Zeichnung()
 {
     neueDatei = initKnopf( 0, 0, 100, 20, zSchrift, Knopf::Style::Sichtbar, "Neue Datei" );
     dateiLöschen = initKnopf( 0, 0, 100, 20, zSchrift, Knopf::Style::Sichtbar, "Datei Löschen" );
@@ -846,15 +848,14 @@ KEDEditor::KEDEditor( Schrift * zSchrift )
     neuDateiOk = initKnopf( 25, 70, 100, 20, zSchrift, Knopf::Style::Normal | Knopf::Style::Sichtbar, "Erstellen" );
     neuDateiOk->setMausEreignisParameter( this );
     neuDateiOk->setMausEreignis( kEDEditorNeuDateiOkME );
-    neuDateiF->addMember( neuDateiName );
-    neuDateiF->addMember( neuDateiOk );
-    neuDateiF->addMember( neuDateiTyp );
+    neuDateiF->addMember( neuDateiName->getThis() );
+    neuDateiF->addMember( neuDateiOk->getThis() );
+    neuDateiF->addMember( neuDateiTyp->getThis() );
     aktion = 0;
     sichtbar = 0;
     alpha = 0;
     alpha2 = 0;
     tickVal = 0;
-    ref = 1;
 }
 
 // Destruktor
@@ -1194,19 +1195,4 @@ Text *KEDEditor::zNeuDateiName() const
 bool KEDEditor::istSichtbar() const
 {
     return sichtbar;
-}
-
-// Reference Counting
-KEDEditor *KEDEditor::getThis()
-{
-    ref++;
-    return this;
-}
-
-KEDEditor *KEDEditor::release()
-{
-    ref--;
-    if( !ref )
-        delete this;
-    return 0;
 }

+ 0 - 4
KSGClient/NachLogin/Editor/Karte/Dateien/KEDEditor.h

@@ -156,7 +156,6 @@ private:
     unsigned char alpha;
     unsigned char alpha2;
     double tickVal;
-    int ref;
 
 public:
     // Konstruktor
@@ -190,7 +189,4 @@ public:
     int getNeuDateiTyp() const;
     Text *zNeuDateiName() const;
     bool istSichtbar() const;
-    // Reference Counting
-    KEDEditor *getThis();
-    KEDEditor *release();
 };

+ 11 - 56
KSGClient/NachLogin/Editor/Karte/Dateien/KEDModel2DEditor.cpp

@@ -439,6 +439,7 @@ Data *Data::release()
 // Inhalt der EditorListe Klasse aus KEDModel2DEditor.h
 // Konstruktor
 EditorListe::EditorListe( Schrift * zSchrift )
+    : Zeichnung()
 {
     ram = new LRahmen();
     ram->setRamenBreite( 1 );
@@ -482,18 +483,17 @@ EditorListe::EditorListe( Schrift * zSchrift )
     };
     tkx->setNTastaturEreignis( saveTK );
     tky->setNTastaturEreignis( saveTK );
-    koordF->addMember( kxT );
-    koordF->addMember( kyT );
-    koordF->addMember( kx );
-    koordF->addMember( ky );
-    koordF->addMember( tkxT );
-    koordF->addMember( tkyT );
-    koordF->addMember( tkx );
-    koordF->addMember( tky );
+    koordF->addMember( kxT->getThis() );
+    koordF->addMember( kyT->getThis() );
+    koordF->addMember( kx->getThis() );
+    koordF->addMember( ky->getThis() );
+    koordF->addMember( tkxT->getThis() );
+    koordF->addMember( tkyT->getThis() );
+    koordF->addMember( tkx->getThis() );
+    koordF->addMember( tky->getThis() );
     polI = 0;
     verI = 0;
     data = 0;
-    ref = 1;
 }
 
 // Destruktor
@@ -735,25 +735,11 @@ void EditorListe::render( Bild & zRObj )
     koordF->render( zRObj );
 }
 
-// Reference Counting
-EditorListe * EditorListe::getThis()
-{
-    ref++;
-    return this;
-}
-
-EditorListe *EditorListe::release()
-{
-    ref--;
-    if( !ref )
-        delete this;
-    return 0;
-}
-
 
 // Inhalt der Editor2D Klasse aus KEDModel2DEditor.h
 // Konstruktor
 Editor2D::Editor2D( Schrift * zSchrift )
+    : Zeichnung()
 {
     pos.x = 10;
     pos.y = 10;
@@ -774,7 +760,6 @@ Editor2D::Editor2D( Schrift * zSchrift )
     addV = Vertex( 0, 0 );
     mausIn = 0;
     größe = 1;
-    ref = 1;
 }
 
 // Destruktor
@@ -1054,25 +1039,11 @@ void Editor2D::render( Bild & zRObj )
     zRObj.releaseDrawOptions();
 }
 
-// Reference Counting
-Editor2D *Editor2D::getThis()
-{
-    ref++;
-    return this;
-}
-
-Editor2D *Editor2D::release()
-{
-    ref--;
-    if( !ref )
-        delete this;
-    return 0;
-}
-
 
 // Inhalt der GUI Klasse aus KEDModel2DEditor.h
 // Konstruktor
 GUI::GUI( Schrift * zSchrift )
+    : Zeichnung()
 {
     speichern = initKnopf( 660, 500, 100, 20, zSchrift, Knopf::Style::Sichtbar, "Speichern" );
     abbrechen = initKnopf( 770, 500, 100, 20, zSchrift, Knopf::Style::Sichtbar, "Abbrehen" );
@@ -1088,7 +1059,6 @@ GUI::GUI( Schrift * zSchrift )
     aktion = 0;
     alpha = 0;
     sichtbar = 0;
-    ref = 1;
 }
 
 // Destruktor
@@ -1251,19 +1221,4 @@ int GUI::getAktion()
 Model2DData *GUI::getM2Data() const
 {
     return data->getM2();
-}
-
-// Reference Counting
-GUI *GUI::getThis()
-{
-    ref++;
-    return 0;
-}
-
-GUI *GUI::release()
-{
-    ref--;
-    if( !ref )
-        delete this;
-    return 0;
 }

+ 0 - 12
KSGClient/NachLogin/Editor/Karte/Dateien/KEDModel2DEditor.h

@@ -143,7 +143,6 @@ namespace Model2DEditor
         TextFeld *tky;
         int polI;
         int verI;
-        int ref;
 
     public:
         // Konstruktor
@@ -156,9 +155,6 @@ namespace Model2DEditor
         void doTastaturEreignis( TastaturEreignis &te ) override;
         bool tick( double zeit ) override;
         void render( Bild &zRObj ) override;
-        // Reference Counting
-        EditorListe *getThis();
-        EditorListe *release();
     };
     
     class Editor2D : public Zeichnung
@@ -175,7 +171,6 @@ namespace Model2DEditor
         Vertex addV;
         bool mausIn;
         float größe;
-        int ref;
 
     public:
         // Konstruktor
@@ -188,9 +183,6 @@ namespace Model2DEditor
         void doTastaturEreignis( TastaturEreignis &te ) override;
         bool tick( double zeit ) override;
         void render( Bild &zRObj ) override;
-        // Reference Counting
-        Editor2D *getThis();
-        Editor2D *release();
     };
 
     class GUI : public Zeichnung
@@ -208,7 +200,6 @@ namespace Model2DEditor
         bool sichtbar;
         unsigned char alpha;
         int aktion;
-        int ref;
 
     public:
         // Konstruktor
@@ -225,8 +216,5 @@ namespace Model2DEditor
         int getAktion();
         // const
         Model2DData *getM2Data() const;
-        // Reference Counting
-        GUI *getThis();
-        GUI *release();
     };
 }

+ 4 - 18
KSGClient/NachLogin/Editor/Karte/Dateien/KEDateien.cpp

@@ -5,12 +5,14 @@
 #include "../../../../Global/Initialisierung.h"
 #include "KEDModel2DEditor.h"
 #include "WAVDatei.h"
+#include <Globals.h>
 
 typedef GSL::GSLDateiV *( *GetGSLDatei )( );
 
 // Inahlt der KEDateien Klasse aus KEDateien.h
 // Konstruktor
 KEDateien::KEDateien( int karte, Schrift *zSchrift )
+    : Thread()
 {
     schrift = zSchrift->getThis();
     Text *kName = infoClient->getKarteName( karte );
@@ -23,7 +25,7 @@ KEDateien::KEDateien( int karte, Schrift *zSchrift )
     laden = (Animation2D*)ladeAnimation->dublizieren();
     laden->setPosition( 425, 275 );
     laden->setSichtbar( 0 );
-    fenster->addMember( editor );
+    fenster->addMember( editor->getThis() );
     fort = initFBalken( 375, 350, 150, 20, zSchrift, FBalken::Style::normal );
     animation = 0;
     tickVal = 0;
@@ -34,7 +36,6 @@ KEDateien::KEDateien( int karte, Schrift *zSchrift )
     aktion = 0;
     this->karte = karte;
     alpha = 255;
-    ref = 1;
 }
 
 // Destruktor
@@ -320,7 +321,7 @@ void KEDateien::thread()
     }
     case 11: // Sound Abspielen
     {
-        HMODULE dll = dllDateien->ladeDLL( "GSL.dll", "data/bin/GSL.dll" );
+        HMODULE dll = Framework::getDLLRegister()->ladeDLL( "GSL.dll", "data/bin/GSL.dll" );
         if( dll )
         {
             GetGSLDatei getGSLDatei = (GetGSLDatei)GetProcAddress( dll, "getGSLDatei" );
@@ -533,19 +534,4 @@ void KEDateien::render( Bild &zRObj )
 bool KEDateien::istSichtbar() const
 {
     return sichtbar || animation;
-}
-
-// Reference Counting
-KEDateien *KEDateien::getThis()
-{
-    ref++;
-    return this;
-}
-
-KEDateien *KEDateien::release()
-{
-    ref--;
-    if( !ref )
-        delete this;
-    return 0;
 }

+ 1 - 5
KSGClient/NachLogin/Editor/Karte/Dateien/KEDateien.h

@@ -11,7 +11,7 @@
 
 using namespace Framework;
 
-class KEDateien : private Thread
+class KEDateien : public Thread
 {
 private:
     Fenster *fenster;
@@ -28,7 +28,6 @@ private:
     int breite;
     int karte;
     unsigned char alpha;
-    int ref;
 
 public:
     // Konstruktor
@@ -44,7 +43,4 @@ public:
     void render( Bild &zRObj );
     // constant
     bool istSichtbar() const;
-    // Reference Counting
-    KEDateien *getThis();
-    KEDateien *release();
 };

+ 4 - 4
KSGClient/NachLogin/Editor/Karte/Dateien/WAVDatei.cpp

@@ -88,12 +88,12 @@ __int64 WAVDatei::getDatLength() const
 }
 
 // Reference Counting
-GSL::GSLSoundV *WAVDatei::getThis()
+Thread *WAVDatei::getThis()
 {
-    return this;
+    return Thread::getThis();
 }
 
-GSL::GSLSoundV *WAVDatei::release()
+Thread *WAVDatei::release()
 {
-    return 0;
+    return Thread::release();
 }

+ 2 - 2
KSGClient/NachLogin/Editor/Karte/Dateien/WAVDatei.h

@@ -64,6 +64,6 @@ public:
     int getSampleRate() const override;
     __int64 getDatLength() const override;
     // Reference Counting
-    GSL::GSLSoundV *getThis() override;
-    GSL::GSLSoundV *release() override;
+    Thread *getThis() override;
+    Thread *release() override;
 };

+ 13 - 51
KSGClient/NachLogin/Editor/Karte/KarteRelease/KERelease.cpp

@@ -79,19 +79,19 @@ KERelease::KERelease( int karte, Schrift *zSchrift )
     laden = (Animation2D*)ladeAnimation->dublizieren();
     laden->setPosition( 425, 275 );
     laden->setSichtbar( 0 );
-    fenster->addMember( abbilder );
-    fenster->addMember( veröff );
-    fenster->addMember( abbildName );
-    fenster->addMember( abbildErstellen );
-    fenster->addMember( shopT );
-    fenster->addMember( preisT );
-    fenster->addMember( testVersionPreisT );
-    fenster->addMember( vollVersionPreisT );
-    fenster->addMember( testVersionPreis );
-    fenster->addMember( vollVersionPreis );
-    fenster->addMember( shopÜbernehmen );
-    fenster->addMember( vollVersionErwerbbar );
-    fenster->addMember( testVersionErwerbbar );
+    fenster->addMember( abbilder->getThis() );
+    fenster->addMember( veröff->getThis() );
+    fenster->addMember( abbildName->getThis() );
+    fenster->addMember( abbildErstellen->getThis() );
+    fenster->addMember( shopT->getThis() );
+    fenster->addMember( preisT->getThis() );
+    fenster->addMember( testVersionPreisT->getThis() );
+    fenster->addMember( vollVersionPreisT->getThis() );
+    fenster->addMember( testVersionPreis->getThis() );
+    fenster->addMember( vollVersionPreis->getThis() );
+    fenster->addMember( shopÜbernehmen->getThis() );
+    fenster->addMember( vollVersionErwerbbar->getThis() );
+    fenster->addMember( testVersionErwerbbar->getThis() );
     animation = 0;
     tickVal = 0;
     sichtbar = 0;
@@ -102,7 +102,6 @@ KERelease::KERelease( int karte, Schrift *zSchrift )
     zeile = 0;
     this->karte = karte;
     alpha = 255;
-    ref = 1;
 }
 
 // Destruktor
@@ -114,23 +113,6 @@ KERelease::~KERelease()
         if( run )
             ende();
     }
-    int anz = abbilder->getZeilenAnzahl();
-    for( int i = 0; i < anz; i++ )
-    {
-        ( (TextFeld*)abbilder->zZeichnung( 0, 0 ) )->release();
-        ( (TextFeld*)abbilder->zZeichnung( 1, 0 ) )->release();
-        if( i != 0 )
-        {
-            ( (Knopf*)abbilder->zZeichnung( 2, 0 ) )->release();
-            ( (Knopf*)abbilder->zZeichnung( 3, 0 ) )->release();
-        }
-        else
-        {
-            ( (TextFeld*)abbilder->zZeichnung( 2, 0 ) )->release();
-            ( (TextFeld*)abbilder->zZeichnung( 3, 0 ) )->release();
-        }
-        abbilder->removeZeile( 0 );
-    }
     fenster->release();
     abbilder->release();
     veröff->release();
@@ -326,11 +308,6 @@ void KERelease::thread()
     int anz = abbilder->getZeilenAnzahl();
     for( int i = 1; i < anz; i++ )
     {
-        hauptScreen->lock();
-        ( (TextFeld*)abbilder->zZeichnung( 0, 1 ) )->release();
-        ( (TextFeld*)abbilder->zZeichnung( 1, 1 ) )->release();
-        ( (Knopf*)abbilder->zZeichnung( 2, 1 ) )->release();
-        ( (Knopf*)abbilder->zZeichnung( 3, 1 ) )->release();
         abbilder->removeZeile( 1 );
         hauptScreen->unlock();
     }
@@ -481,19 +458,4 @@ void KERelease::render( Bild &zRObj )
 bool KERelease::istSichtbar() const
 {
     return sichtbar || animation;
-}
-
-// Reference Counting
-KERelease *KERelease::getThis()
-{
-    ref++;
-    return this;
-}
-
-KERelease *KERelease::release()
-{
-    ref--;
-    if( !ref )
-        delete this;
-    return 0;
 }

+ 1 - 5
KSGClient/NachLogin/Editor/Karte/KarteRelease/KERelease.h

@@ -10,7 +10,7 @@
 
 using namespace Framework;
 
-class KERelease : private Thread
+class KERelease : public Thread
 {
 private:
 	Fenster *fenster;
@@ -39,7 +39,6 @@ private:
 	int breite;
 	int karte;
 	unsigned char alpha;
-	int ref;
 
 public:
 	// Konstruktor
@@ -60,9 +59,6 @@ public:
 	void render( Bild &zRObj );
 	// constant
 	bool istSichtbar() const;
-	// Reference Counting
-	KERelease *getThis();
-	KERelease *release();
 };
 
 #endif

+ 4 - 19
KSGClient/NachLogin/Editor/Karte/KartenEditor.cpp

@@ -2,6 +2,7 @@
 #include "../../../Global/Initialisierung.h"
 #include "../../../Global/Variablen.h"
 #include <KSGTDatei.h>
+#include <Globals.h>
 
 typedef EditorV*( *DllStart )( );
 
@@ -35,7 +36,6 @@ KartenEditor::KartenEditor( Schrift *schrift )
     editorDll = 0;
     editorF = 0;
     dllName = "";
-    ref = 1;
 }
 
 // Destruktor
@@ -72,7 +72,7 @@ KartenEditor::~KartenEditor()
     if( editorF )
         editorF->release();
     if( editorDll )
-        dllDateien->releaseDLL( dllName );
+        Framework::getDLLRegister()->releaseDLL( dllName );
 }
 
 // nicht constant
@@ -113,7 +113,7 @@ void KartenEditor::setKarte( int id )
     if( editorF )
         editorF->release();
     if( editorDll )
-        dllDateien->releaseDLL( dllName );
+        Framework::getDLLRegister()->releaseDLL( dllName );
     releaseF = new KERelease( id, schrift );
     releaseF->setSichtbar( 1, 0 );
     karteRelease->setAlphaFeldFarbe( 0x0000FF00 );
@@ -186,7 +186,7 @@ void KartenEditor::setKarte( int id )
         pfad.append( "/bin/" );
         dllName.append( ".dll" );
         pfad.append( dllName.getText() );
-        editorDll = dllDateien->ladeDLL( dllName, pfad );
+        editorDll = Framework::getDLLRegister()->ladeDLL( dllName, pfad );
         if( !editorDll )
         {
             editor->removeStyle( Knopf::Style::Erlaubt );
@@ -663,19 +663,4 @@ void KartenEditor::render( Bild &zRObj )
 bool KartenEditor::istSichtbar() const
 {
     return sichtbar;
-}
-
-// Reference Counting
-KartenEditor *KartenEditor::getThis()
-{
-    ref++;
-    return this;
-}
-
-KartenEditor *KartenEditor::release()
-{
-    ref--;
-    if( !ref )
-        delete this;
-    return 0;
 }

+ 1 - 5
KSGClient/NachLogin/Editor/Karte/KartenEditor.h

@@ -14,7 +14,7 @@
 
 using namespace Framework;
 
-class KartenEditor : private Thread
+class KartenEditor : public Thread
 {
 private:
 	Schrift *schrift;
@@ -41,7 +41,6 @@ private:
 	unsigned char alpha;
     unsigned char alpha2;
 	bool sichtbar;
-	int ref;
 
 public:
 	// Konstruktor
@@ -58,9 +57,6 @@ public:
 	void render( Bild &zRObj );
 	// constant
 	bool istSichtbar() const;
-	// Reference Counting
-	KartenEditor *getThis();
-	KartenEditor *release();
 };
 
 #endif;

+ 10 - 24
KSGClient/NachLogin/Editor/Karte/KaufHistorie/KaufHistorie.cpp

@@ -7,6 +7,7 @@
 // Inhalt der KEKaufHistorie Klasse
 // Konstruktor
 KEKaufHistorie::KEKaufHistorie( int karte, Schrift *zSchrift )
+    : Thread()
 {
     schrift = zSchrift->getThis();
     Text *kName = infoClient->getKarteName( karte );
@@ -32,12 +33,12 @@ KEKaufHistorie::KEKaufHistorie( int karte, Schrift *zSchrift )
     statistik->setHIntervallName( "Tage" );
     statistik->setVIntervallFarbe( 0xFFFFFFFF );
     statistik->setVIntervallName( "Anzahl" );
-    laden = (Animation2D*)ladeAnimation->dublizieren();
+    laden = (Animation2D *)ladeAnimation->dublizieren();
     laden->setPosition( 425, 275 );
     laden->setSichtbar( 0 );
-    fenster->addMember( aktualisieren );
-    fenster->addMember( gesammtVerkauf );
-    fenster->addMember( statistik );
+    fenster->addMember( aktualisieren->getThis() );
+    fenster->addMember( gesammtVerkauf->getThis() );
+    fenster->addMember( statistik->getThis() );
     animation = 0;
     tickVal = 0;
     sichtbar = 0;
@@ -47,7 +48,6 @@ KEKaufHistorie::KEKaufHistorie( int karte, Schrift *zSchrift )
     aktion = 0;
     this->karte = karte;
     alpha = 255;
-    ref = 1;
 }
 
 // Destruktor
@@ -131,13 +131,13 @@ void KEKaufHistorie::thread()
         maxS++;
         statistik->addVIntervallText( 0, Text() += 0 );
         statistik->addVIntervallText( maxS + 1, Text() += ( maxS + 1 ) );
-        Datum *d = Framework::getDatum();
+        Datum * d = Framework::getDatum();
         d->minusTag( 30 );
         statistik->addHIntervallText( 0, d->getDatum( "y-m-d" ) );
         d->plusTag( 30 );
         statistik->addHIntervallText( anz - 1, d->getDatum( "y-m-d" ) );
         d->release();
-        DiagWert *w = new DiagWert();
+        DiagWert * w = new DiagWert();
         w->farbe = 0xFF00FFFF;
         w->hintergrund = 0xFF205050;
         w->name->setText( "Einnahmen" );
@@ -166,13 +166,13 @@ void KEKaufHistorie::thread()
     laden->setSichtbar( 0 );
 }
 
-void KEKaufHistorie::doMausEreignis( MausEreignis &me )
+void KEKaufHistorie::doMausEreignis( MausEreignis & me )
 {
     if( !run )
         fenster->doMausEreignis( me );
 }
 
-void KEKaufHistorie::doTastaturEreignis( TastaturEreignis &te )
+void KEKaufHistorie::doTastaturEreignis( TastaturEreignis & te )
 {
     if( !run )
         fenster->doTastaturEreignis( te );
@@ -269,7 +269,7 @@ bool KEKaufHistorie::tick( double z )
     return ret || fenster->tick( z );
 }
 
-void KEKaufHistorie::render( Bild &zRObj )
+void KEKaufHistorie::render( Bild & zRObj )
 {
     if( !zRObj.setDrawOptions( xStart, 0, breite, 600 ) )
         return;
@@ -284,18 +284,4 @@ void KEKaufHistorie::render( Bild &zRObj )
 bool KEKaufHistorie::istSichtbar() const
 {
     return sichtbar || animation;
-}
-
-// Reference Counting
-KEKaufHistorie *KEKaufHistorie::getThis()
-{
-    ref++;
-    return this;
-}
-
-KEKaufHistorie *KEKaufHistorie::release()
-{
-    if( !--ref )
-        delete this;
-    return 0;
 }

+ 1 - 5
KSGClient/NachLogin/Editor/Karte/KaufHistorie/KaufHistorie.h

@@ -8,7 +8,7 @@
 
 using namespace Framework;
 
-class KEKaufHistorie : private Thread
+class KEKaufHistorie : public Thread
 {
 private:
     Fenster *fenster;
@@ -25,7 +25,6 @@ private:
     int breite;
     int karte;
     unsigned char alpha;
-    int ref;
 
 public:
     // Konstruktor
@@ -41,7 +40,4 @@ public:
     void render( Bild &zRObj );
     // constant
     bool istSichtbar() const;
-    // Reference Counting
-    KEKaufHistorie *getThis();
-    KEKaufHistorie *release();
 };

+ 6 - 21
KSGClient/NachLogin/Editor/Karte/ShopSeite/KESSEditor.cpp

@@ -5,6 +5,7 @@
 #include <Text.h>
 #include "../../../../Global/Variablen.h"
 #include <DateiSystem.h>
+#include <Globals.h>
 
 // Inhalt der KESSTextSeite Klasse aus KESSEditor.h
 // Konstruktor
@@ -15,7 +16,7 @@ KESSTextSeite::KESSTextSeite( Schrift *zSchrift, Knopf *zNeueDatei, Knopf *zDate
     sd->leseDaten();
     Schrift *ksgsS = sd->ladeSchrift();
     sd->release();
-    ksgs = dllDateien->ladeDLL( "KSGScript.dll", "data/bin/KSGScript.dll" );
+    ksgs = Framework::getDLLRegister()->ladeDLL( "KSGScript.dll", "data/bin/KSGScript.dll" );
     if( ksgs )
     {
         KSGSGetEditor getKSGScriptEditor = (KSGSGetEditor)GetProcAddress( ksgs, KSGS_EDITOR_FUNKTION );
@@ -70,7 +71,7 @@ KESSTextSeite::~KESSTextSeite()
     dateiLöschen->release();
     neueDatei->release();
     if( ksgs )
-        dllDateien->releaseDLL( "KSGScript.dll" );
+        Framework::getDLLRegister()->releaseDLL( "KSGScript.dll" );
 }
 
 // nicht constant
@@ -450,15 +451,14 @@ KESSEditor::KESSEditor( Schrift * zSchrift )
     neuDateiOk = initKnopf( 25, 70, 100, 20, zSchrift, Knopf::Style::Normal | Knopf::Style::Sichtbar, "Erstellen" );
     neuDateiOk->setMausEreignisParameter( this );
     neuDateiOk->setMausEreignis( kESSEditorNeuDateiOkME );
-    neuDateiF->addMember( neuDateiName );
-    neuDateiF->addMember( neuDateiOk );
-    neuDateiF->addMember( neuDateiTyp );
+    neuDateiF->addMember( neuDateiName->getThis() );
+    neuDateiF->addMember( neuDateiOk->getThis() );
+    neuDateiF->addMember( neuDateiTyp->getThis() );
     aktion = 0;
     sichtbar = 0;
     alpha = 0;
     alpha2 = 0;
     tickVal = 0;
-    ref = 1;
 }
 
 // Destruktor
@@ -739,19 +739,4 @@ Text *KESSEditor::zNeuDateiName() const
 bool KESSEditor::istSichtbar() const
 {
     return sichtbar;
-}
-
-// Reference Counting
-KESSEditor *KESSEditor::getThis()
-{
-    ref++;
-    return this;
-}
-
-KESSEditor *KESSEditor::release()
-{
-    ref--;
-    if( !ref )
-        delete this;
-    return 0;
 }

+ 0 - 4
KSGClient/NachLogin/Editor/Karte/ShopSeite/KESSEditor.h

@@ -105,7 +105,6 @@ private:
     unsigned char alpha;
     unsigned char alpha2;
     double tickVal;
-    int ref;
 
 public:
     // Konstruktor
@@ -132,9 +131,6 @@ public:
     int getNeuDateiTyp() const;
     Text *zNeuDateiName() const;
     bool istSichtbar() const;
-    // Reference Counting
-    KESSEditor *getThis();
-    KESSEditor *release();
 };
 
 #endif

+ 4 - 34
KSGClient/NachLogin/Editor/Karte/ShopSeite/KESSVorschau.cpp

@@ -2,6 +2,7 @@
 #include "../../../../Global/Variablen.h"
 #include "../../../../Global/Initialisierung.h"
 #include <DateiSystem.h>
+#include <Globals.h>
 
 void kESSVorschauKSGSAktion( void *p, RCArray< KSGSVariable > *parameter, KSGSVariable **retVal )
 {
@@ -15,7 +16,7 @@ void kESSVorschauKSGSAktion( void *p, RCArray< KSGSVariable > *parameter, KSGSVa
 KESSVorschauKarteScript::KESSVorschauKarteScript( Schrift * zSchrift, TextFeld * zLog )
     : Thread()
 {
-    ksgs = dllDateien->ladeDLL( "KSGScript.dll", "data/bin/KSGScript.dll" );
+    ksgs = Framework::getDLLRegister()->ladeDLL( "KSGScript.dll", "data/bin/KSGScript.dll" );
     if( ksgs )
     {
         KSGSGetZeichnung getKSGScript = (KSGSGetZeichnung)GetProcAddress( ksgs, KSGS_START_FUNKTION );
@@ -59,7 +60,6 @@ KESSVorschauKarteScript::KESSVorschauKarteScript( Schrift * zSchrift, TextFeld *
     alpha = 0;
     aktion = 0;
     ak = 0;
-    ref = 1;
 }
 
 // Destruktor
@@ -72,7 +72,7 @@ KESSVorschauKarteScript::~KESSVorschauKarteScript()
     }
     ram->release();
     if( ksgs )
-        dllDateien->releaseDLL( "KSGScript.dll" );
+        Framework::getDLLRegister()->releaseDLL( "KSGScript.dll" );
 }
 
 // nicht constant
@@ -375,21 +375,6 @@ void KESSVorschauKarteScript::render( Bild & zRObj )
     zRObj.releaseDrawOptions();
 }
 
-// Reference Counting
-KESSVorschauKarteScript * KESSVorschauKarteScript::getThis()
-{
-    ref++;
-    return this;
-}
-
-KESSVorschauKarteScript *KESSVorschauKarteScript::release()
-{
-    ref--;
-    if( !ref )
-        delete this;
-    return 0;
-}
-
 
 // Inhalt der KESSVorschauKarte Klasse aus KESSVorschau.h
 // Konstruktor
@@ -507,6 +492,7 @@ KESSVorschauKarte *KESSVorschauKarte::release()
 // Inhalt der KESSVorschau Klasse aus KESSVorschau.h
 // Konstruktor
 KESSVorschau::KESSVorschau( Schrift * zSchrift )
+    : Zeichnung()
 {
     schrift = zSchrift->getThis();
     tr = new TextRenderer( schrift->getThis() );
@@ -530,7 +516,6 @@ KESSVorschau::KESSVorschau( Schrift * zSchrift )
     tickVal = 0;
     aktion = 0;
     rend = 0;
-    ref = 1;
 }
 
 // Destruktor
@@ -704,19 +689,4 @@ void KESSVorschau::render( Bild & zRObj )
 bool KESSVorschau::istSichtbar() const
 {
     return sichtbar;
-}
-
-// Reference Counting
-KESSVorschau *KESSVorschau::getThis()
-{
-    ref++;
-    return this;
-}
-
-KESSVorschau *KESSVorschau::release()
-{
-    ref--;
-    if( !ref )
-        delete this;
-    return 0;
 }

+ 0 - 8
KSGClient/NachLogin/Editor/Karte/ShopSeite/KESSVorschau.h

@@ -28,7 +28,6 @@ private:
     unsigned char alpha;
     bool aktion;
     int ak;
-    int ref;
 
 public:
     // Konstruktor
@@ -44,9 +43,6 @@ public:
     void doTastaturEreignis( TastaturEreignis &te );
     bool tick( double zeit );
     void render( Bild &zRObj );
-    // Reference Counting
-    KESSVorschauKarteScript *getThis();
-    KESSVorschauKarteScript *release();
 };
 
 class KESSVorschauKarte
@@ -97,7 +93,6 @@ private:
     double tickVal;
     int aktion;
     bool rend;
-    int ref;
 
 public:
     // Konstruktor
@@ -114,9 +109,6 @@ public:
     void render( Bild &zRObj );
     // constant
     bool istSichtbar() const;
-    // Reference Counting
-    KESSVorschau *getThis();
-    KESSVorschau *release();
 };
 
 #endif

+ 2 - 18
KSGClient/NachLogin/Editor/Karte/ShopSeite/KEShopSeite.cpp

@@ -22,8 +22,8 @@ KEShopSeite::KEShopSeite( int karte, Schrift *zSchrift )
     laden = (Animation2D*)ladeAnimation->dublizieren();
     laden->setPosition( 425, 275 );
     laden->setSichtbar( 0 );
-    fenster->addMember( editor );
-    fenster->addMember( vorschau );
+    fenster->addMember( editor->getThis() );
+    fenster->addMember( vorschau->getThis() );
     animation = 0;
     tickVal = 0;
     sichtbar = 0;
@@ -34,7 +34,6 @@ KEShopSeite::KEShopSeite( int karte, Schrift *zSchrift )
     zeile = 0;
     this->karte = karte;
     alpha = 255;
-    ref = 1;
 }
 
 // Destruktor
@@ -413,19 +412,4 @@ void KEShopSeite::render( Bild &zRObj )
 bool KEShopSeite::istSichtbar() const
 {
     return sichtbar || animation;
-}
-
-// Reference Counting
-KEShopSeite *KEShopSeite::getThis()
-{
-    ref++;
-    return this;
-}
-
-KEShopSeite *KEShopSeite::release()
-{
-    ref--;
-    if( !ref )
-        delete this;
-    return 0;
 }

+ 1 - 5
KSGClient/NachLogin/Editor/Karte/ShopSeite/KEShopSeite.h

@@ -9,7 +9,7 @@
 
 using namespace Framework;
 
-class KEShopSeite : private Thread
+class KEShopSeite : public Thread
 {
 private:
     Fenster *fenster;
@@ -27,7 +27,6 @@ private:
     int breite;
     int karte;
     unsigned char alpha;
-    int ref;
 
 public:
     // Konstruktor
@@ -43,9 +42,6 @@ public:
     void render( Bild &zRObj );
     // constant
     bool istSichtbar() const;
-    // Reference Counting
-    KEShopSeite *getThis();
-    KEShopSeite *release();
 };
 
 #endif

+ 13 - 29
KSGClient/NachLogin/Editor/Karte/Teams/KETeams.cpp

@@ -73,19 +73,19 @@ KETeams::KETeams( int karte, Schrift *zSchrift )
     initToolTip( speichern, "Speichert alle Änderungen an den Team Einstellungen", zSchrift->getThis(), hauptScreen );
     speichern->setNMausEreignisParameter( this );
     speichern->setNMausEreignis( KETNachME );
-    fenster->addMember( teams );
-    fenster->addMember( tName );
-    fenster->addMember( tFarbe );
-    fenster->addMember( tFarbeV );
-    fenster->addMember( tNeu );
-    fenster->addMember( tLöschen );
-    fenster->addMember( spieler );
-    fenster->addMember( sFarbe );
-    fenster->addMember( sFarbeV );
-    fenster->addMember( sNeu );
-    fenster->addMember( sLöschen );
-    fenster->addMember( abbrechen );
-    fenster->addMember( speichern );
+    fenster->addMember( teams->getThis() );
+    fenster->addMember( tName->getThis() );
+    fenster->addMember( tFarbe->getThis() );
+    fenster->addMember( tFarbeV->getThis() );
+    fenster->addMember( tNeu->getThis() );
+    fenster->addMember( tLöschen->getThis() );
+    fenster->addMember( spieler->getThis() );
+    fenster->addMember( sFarbe->getThis() );
+    fenster->addMember( sFarbeV->getThis() );
+    fenster->addMember( sNeu->getThis() );
+    fenster->addMember( sLöschen->getThis() );
+    fenster->addMember( abbrechen->getThis() );
+    fenster->addMember( speichern->getThis() );
     laden = (Animation2D*)ladeAnimation->dublizieren();
     laden->setPosition( 425, 275 );
     laden->setSichtbar( 0 );
@@ -99,7 +99,6 @@ KETeams::KETeams( int karte, Schrift *zSchrift )
     aktion = 0;
     this->karte = karte;
     alpha = 255;
-    ref = 1;
 }
 
 // Destruktor
@@ -460,19 +459,4 @@ void KETeams::render( Bild &zRObj )
 bool KETeams::istSichtbar() const
 {
     return sichtbar || animation;
-}
-
-// Reference Counting
-KETeams *KETeams::getThis()
-{
-    ref++;
-    return this;
-}
-
-KETeams *KETeams::release()
-{
-    ref--;
-    if( !ref )
-        delete this;
-    return 0;
 }

+ 1 - 5
KSGClient/NachLogin/Editor/Karte/Teams/KETeams.h

@@ -9,7 +9,7 @@
 
 using namespace Framework;
 
-class KETeams : private Thread
+class KETeams : public Thread
 {
 private:
     Fenster *fenster;
@@ -38,7 +38,6 @@ private:
     int breite;
     int karte;
     unsigned char alpha;
-    int ref;
 
     // privat
     void updateGUI();
@@ -59,7 +58,4 @@ public:
     void render( Bild &zRObj );
     // constant
     bool istSichtbar() const;
-    // Reference Counting
-    KETeams *getThis();
-    KETeams *release();
 };

+ 2 - 2
KSGClient/NachLogin/Einstellungen/Einstellungen.cpp

@@ -18,8 +18,8 @@ Einstellungen::Einstellungen( Schrift *zSchrift, Fenster *zF )
 	ok = initKnopf( 390, 450, 100, 20, zSchrift, Knopf::Style::Sichtbar, "Ok" );
 	ok->setMausEreignisParameter( this );
 	ok->setMausEreignis( einstellungenOkME );
-	f->addMember( ok );
-	zF->addMember( f );
+	f->addMember( ok->getThis() );
+	zF->addMember( f->getThis() );
 	ref = 1;
 }
 

+ 4 - 19
KSGClient/NachLogin/ImSpiel/ImSpiel.cpp

@@ -3,6 +3,7 @@
 #include <Schrift.h>
 #include "..\..\Leser\KartenLeser.h"
 #include "..\..\Global\Variablen.h"
+#include <Globals.h>
 
 typedef SpielV* ( *DllStart )( void );
 
@@ -20,7 +21,6 @@ ImSpiel::ImSpiel( Schrift *zSchrift )
 	mainDll = 0;
 	dllName = 0;
 	rend = 0;
-	ref = 1;
 }
 
 // Destruktor
@@ -51,7 +51,7 @@ void ImSpiel::setSichtbar( bool sichtbar )
 		if( spielFenster )
 			spielFenster->release();
 		if( mainDll )
-			dllDateien->releaseDLL( *dllName );
+			Framework::getDLLRegister()->releaseDLL( *dllName );
 		dllName->release();
 		this->sichtbar = 0;
 	}
@@ -122,7 +122,7 @@ void ImSpiel::thread()
     reader->unlock();
 	reader->release();
 	dllName->append( ".dll" );
-	mainDll = dllDateien->ladeDLL( *dllName, *pfad );
+	mainDll = Framework::getDLLRegister()->ladeDLL( *dllName, *pfad );
 	if( !mainDll )
 	{
 		Text *nachricht = new Text( "Die Spiel DLL " );
@@ -159,7 +159,7 @@ void ImSpiel::thread()
 	ladenStatus = 1;
 	spielFenster->setKarteId( karteId );
 	spielFenster->setKlients( infoClient->getThis(), spielClient->getThis() );
-	spielFenster->setBildschirm( hauptScreen->getThis() );
+	spielFenster->setBildschirm( hauptScreen );
 	spielFenster->setSchrift( schrift->getThis() );
 	spielFenster->ladeDaten();
 	ladenStatus = 2;
@@ -231,19 +231,4 @@ int ImSpiel::getKarteId() const
 bool ImSpiel::istSichtbar() const
 {
 	return sichtbar;
-}
-
-// Reference Counting
-ImSpiel *ImSpiel::getThis()
-{
-	ref++;
-	return this;
-}
-
-ImSpiel *ImSpiel::release()
-{
-	ref--;
-	if( !ref )
-		delete this;
-	return 0;
 }

+ 1 - 5
KSGClient/NachLogin/ImSpiel/ImSpiel.h

@@ -5,7 +5,7 @@
 #include <SpielV.h>
 #include <Bildschirm.h>
 
-class ImSpiel : private Thread
+class ImSpiel : public Thread
 {
 private:
 	SpielLaden *ladenFenster;
@@ -17,7 +17,6 @@ private:
 	Text *dllName;
 	bool sichtbar;
 	bool rend;
-	int ref;
 
 public:
 	// Konstruktor
@@ -40,9 +39,6 @@ public:
 	// constant
 	int getKarteId() const;
 	bool istSichtbar() const;
-	// Reference Counting
-	ImSpiel *getThis();
-	ImSpiel *release();
 };
 
 #endif

+ 0 - 16
KSGClient/NachLogin/ImSpiel/Laden/SpielLaden.cpp

@@ -415,7 +415,6 @@ SpielLaden::SpielLaden( Schrift *zSchrift )
 	animation = 0;
 	ende = 0;
 	rend = 0;
-	ref = 1;
 }
 
 // Destruktor
@@ -587,19 +586,4 @@ void SpielLaden::render( Bild &zRObj )
 int SpielLaden::getAlpha() const
 {
 	return hintergrundAlpha;
-}
-
-// Reference Counting 
-SpielLaden *SpielLaden::getThis()
-{
-	ref++;
-	return this;
-}
-
-SpielLaden *SpielLaden::release()
-{
-	ref--;
-	if( !ref )
-		delete this;
-	return 0;
 }

+ 1 - 5
KSGClient/NachLogin/ImSpiel/Laden/SpielLaden.h

@@ -92,7 +92,7 @@ public:
 	SpielLadenListe *release();
 };
 
-class SpielLaden : private Thread
+class SpielLaden : public Thread
 {
 private:
 	int karteId;
@@ -107,7 +107,6 @@ private:
 	int animation;
 	bool ende;
 	bool rend;
-	int ref;
 
 public:
 	// Konstruktor
@@ -126,9 +125,6 @@ public:
 	void render( Bild &zRObj );
 	// constant
 	int getAlpha() const;
-	// Reference Counting 
-	SpielLaden *getThis();
-	SpielLaden *release();
 };
 
 #endif

+ 22 - 45
KSGClient/NachLogin/MiniGames/Minigames.cpp

@@ -6,6 +6,7 @@
 #include "../../Global/Initialisierung.h"
 #include <InitDatei.h>
 #include <KSGTDatei.h>
+#include <Globals.h>
 
 typedef MiniGameV *( *GetMiniGame )( );
 
@@ -78,7 +79,6 @@ MGLaden::MGLaden( char *name )
 {
 	this->name = new Text( name );
 	game = 0;
-	ref = 1;
 	start();
 }
 
@@ -88,7 +88,7 @@ MGLaden::~MGLaden()
 	if( game )
 	{
 		game->release();
-		dllDateien->releaseDLL( name->getText() );
+		Framework::getDLLRegister()->releaseDLL( name->getText() );
 	}
 	name->release();
 }
@@ -135,7 +135,7 @@ void MGLaden::thread()
 		run = 0;
 		return;
 	}
-	HMODULE dll = dllDateien->ladeDLL( name->getText(), dllPfad->getText() );
+	HMODULE dll = Framework::getDLLRegister()->ladeDLL( name->getText(), dllPfad->getText() );
 	dllPfad->release();
 	if( !dll )
 	{
@@ -145,14 +145,14 @@ void MGLaden::thread()
 	GetMiniGame getMiniGame = (GetMiniGame)GetProcAddress( dll, "GetMiniGame" );
 	if( !getMiniGame )
 	{
-		dllDateien->releaseDLL( name->getText() );
+		Framework::getDLLRegister()->releaseDLL( name->getText() );
 		run = 0;
 		return;
 	}
 	game = getMiniGame();
 	if( !game )
 	{
-		dllDateien->releaseDLL( name->getText() );
+        Framework::getDLLRegister()->releaseDLL( name->getText() );
 		run = 0;
 		return;
 	}
@@ -163,7 +163,7 @@ void MGLaden::thread()
 	if( !game->laden() )
 	{
 		game = game->release();
-		dllDateien->releaseDLL( name->getText() );
+        Framework::getDLLRegister()->releaseDLL( name->getText() );
 	}
 	run = 0;
 }
@@ -179,21 +179,6 @@ MiniGameV *MGLaden::zGame() const
 	return game;
 }
 
-// Reference Counting
-MGLaden *MGLaden::getThis()
-{
-	ref++;
-	return this;
-}
-
-MGLaden *MGLaden::release()
-{
-	ref--;
-	if( !ref )
-		delete this;
-	return 0;
-}
-
 
 // Inhalt der MiniGames Klasse aus MiniGames.h
 // Konstruktor
@@ -231,11 +216,12 @@ MiniGames::MiniGames( Schrift *zSchrift, Fenster *zNachLoginFenster, int x )
 	suchName = initTextFeld( 20 + suchFilter->getBreite(), 10, 200, 20, zSchrift, TextFeld::Style::TextFeld, "" );
 	suchen = initKnopf( 230 + suchFilter->getBreite(), 10, 100, 20, zSchrift, Knopf::Style::Sichtbar, "Suchen" );
 	gefiltert = 0;
-	zNachLoginFenster->addMember( this );
+	zNachLoginFenster->addMember( getThis() );
 	dg = 0;
 	mgl = 0;
+    mgInitialized = 0;
 	ref = 1;
-	new MGSuchen( getThis() );
+	new MGSuchen( (MiniGames*)getThis() );
 }
 
 // Destruktor
@@ -278,7 +264,7 @@ void MiniGames::setAktuell( bool aktuell, int dg )
 {
 	this->aktuell = aktuell;
 	if( aktuell )
-		new MGSuchen( getThis() );
+		new MGSuchen( (MiniGames*)getThis() );
 	if( !this->dg )
 		this->dg = dg;
     if( !aktuell && !updateH->hat( dg ) )
@@ -350,7 +336,8 @@ void MiniGames::doMausEreignis( MausEreignis &me )
 			{ // spiel starten
 				laden->setSichtbar( 1 );
 				if( mgl )
-					mgl = mgl->release();
+					mgl = (MGLaden*)mgl->release();
+                mgInitialized = 0;
 				mgl = new MGLaden( games->z( i )->zName()->getText() );
 			}
 		}
@@ -382,13 +369,15 @@ bool MiniGames::tick( double z )
 	{
 		if( !mgl->zGame() )
 		{
-			mgl = mgl->release();
+			mgl = (MGLaden*)mgl->release();
 			nachLogin->zNachrichtenListe()->addNachricht( new Text( "Fehler" ), new Text( "Das Minigame konnte nicht geladen werden." ), new Text( "Ok" ) );
+            mgInitialized = 0;
 		}
-		else
+		else if( !mgInitialized )
 		{
 			mgl->zGame()->setSchriftZ( schrift->getThis() );
-			mgl->zGame()->setBildschirmZ( hauptScreen->getThis() );
+			mgl->zGame()->setBildschirmZ( hauptScreen );
+            mgInitialized = 1;
 		}
 		laden->setSichtbar( 0 );
 	}
@@ -396,8 +385,11 @@ bool MiniGames::tick( double z )
 	{
 		if( sichtbar && !animation )
 			rend |= mgl->zGame()->tick( z );
-		if( mgl->zGame()->istEnde() )
-			mgl = mgl->release();
+        if( mgl->zGame()->istEnde() )
+        {
+            mgl = (MGLaden*)mgl->release();
+            mgInitialized = 0;
+        }
 	}
 	rend |= laden->tick( z );
 	if( alpha2 )
@@ -518,19 +510,4 @@ bool MiniGames::istAnimiert() const
 bool MiniGames::istSichtbar() const
 {
 	return sichtbar || prozent1 != 0;
-}
-
-// Reference Counting
-MiniGames *MiniGames::getThis()
-{
-	ref++;
-	return this;
-}
-
-MiniGames *MiniGames::release()
-{
-	ref--;
-	if( !ref )
-		delete this;
-	return 0;
 }

+ 2 - 9
KSGClient/NachLogin/MiniGames/Minigames.h

@@ -25,12 +25,11 @@ public:
 	void thread() override;
 };
 
-class MGLaden : private Thread
+class MGLaden : public Thread
 {
 private:
 	Text *name;
 	MiniGameV *game;
-	int ref;
 
 public:
 	// Konstruktor
@@ -42,9 +41,6 @@ public:
 	// constant
 	bool fertig() const;
 	MiniGameV *zGame() const;
-	// Reference Counting
-	MGLaden *getThis();
-	MGLaden *release();
 };
 
 class MiniGames : public Zeichnung
@@ -65,6 +61,7 @@ private:
 	RCArray< MiniGame > *games;
 	MGLaden *mgl;
 	Schrift *schrift;
+    bool mgInitialized;
 	int dg;
 	bool aktuell;
 	bool gefiltert;
@@ -75,7 +72,6 @@ private:
 	int prozent2;
 	double tickVal;
 	int alpha2;
-	int ref;
 
 public:
 	// Konstruktor
@@ -94,9 +90,6 @@ public:
 	// constant
 	bool istAnimiert() const;
 	bool istSichtbar() const;
-	// Reference Counting
-	MiniGames *getThis();
-	MiniGames *release();
 };
 
 #endif

+ 18 - 34
KSGClient/NachLogin/NachLogin.cpp

@@ -29,7 +29,6 @@ NachLogin::NachLogin( Schrift *zSchrift, Bildschirm *zBildschirm )
     editor = 0;
     op = 0;
     status = NLALogin;
-    ref = 1;
 }
 
 // Destruktor
@@ -69,8 +68,8 @@ void NachLogin::login() // Initialisiert die Oberfl
     chatLeiste = new ChatLeiste( schrift, leistenFenster );
     op = new Einstellungen( schrift, leistenFenster );
     imSpiel = new ImSpiel( schrift );
-    fenster->addMember( leistenFenster );
-    bildschirm->addMember( this );
+    fenster->addMember( leistenFenster->getThis() );
+    bildschirm->addMember( getThis() );
     MausEreignis me;
     me.id = ME_RLinks;
     bildschirm->lock();
@@ -87,23 +86,23 @@ void NachLogin::logout() // Setzt die Oberfl
     if( bildschirm )
         bildschirm->removeMember( this );
     if( spielenFenster )
-        spielenFenster = spielenFenster->release();
+        spielenFenster = (Spiele *)spielenFenster->release();
     if( shopFenster )
-        shopFenster = shopFenster->release();
+        shopFenster = (Shop *)shopFenster->release();
     if( accountAnsehenFenster )
-        accountAnsehenFenster = accountAnsehenFenster->release();
+        accountAnsehenFenster = (AccountAnsehen *)accountAnsehenFenster->release();
     if( mgFenster )
-        mgFenster = mgFenster->release();
+        mgFenster = (MiniGames *)mgFenster->release();
     if( newsFenster )
-        newsFenster = newsFenster->release();
+        newsFenster = (Neuigkeiten *)newsFenster->release();
     if( editorFenster )
-        editorFenster = editorFenster->release();
+        editorFenster = (Editor *)editorFenster->release();
     if( titel )
-        titel = titel->release();
+        titel = (TitelLeiste *)titel->release();
     if( freunde )
-        freunde = freunde->release();
+        freunde = (FreundesListe *)freunde->release();
     if( chatLeiste )
-        chatLeiste = chatLeiste->release();
+        chatLeiste = (ChatLeiste *)chatLeiste->release();
     if( nachrichtenListe )
         nachrichtenListe = nachrichtenListe->release();
     if( leistenFenster )
@@ -111,7 +110,7 @@ void NachLogin::logout() // Setzt die Oberfl
     if( fenster )
         fenster = (Fenster *)fenster->release();
     if( imSpiel )
-        imSpiel = imSpiel->release();
+        imSpiel = (ImSpiel *)imSpiel->release();
     if( op )
         op->release();
     unlockZeichnung();
@@ -139,13 +138,13 @@ void NachLogin::setAnzeige( NachLoginAnzeige s ) // Setzt den Status des Program
         leistenFenster->doMausEreignis( me );
         leistenFenster->removeStyle( Fenster::Style::Sichtbar );
         fenster->removeMember( leistenFenster );
-        bildschirm->addMember( leistenFenster );
+        bildschirm->addMember( leistenFenster->getThis() );
         titel->setImSpiel( 1 );
     }
     else if( status == NLAImSpiel )
     {
         imSpiel->setSichtbar( 0 );
-        fenster->addMember( leistenFenster );
+        fenster->addMember( leistenFenster->getThis() );
         bildschirm->removeMember( leistenFenster );
         leistenFenster->addStyle( Fenster::Style::Sichtbar );
         titel->setImSpiel( 0 );
@@ -156,12 +155,12 @@ void NachLogin::setAnzeige( NachLoginAnzeige s ) // Setzt den Status des Program
         leistenFenster->doMausEreignis( me );
         leistenFenster->removeStyle( Fenster::Style::Sichtbar );
         fenster->removeMember( leistenFenster );
-        bildschirm->addMember( leistenFenster );
+        bildschirm->addMember( leistenFenster->getThis() );
         titel->setImVideo( 1 );
     }
     else if( status == NLASpielVideo )
     {
-        fenster->addMember( leistenFenster );
+        fenster->addMember( leistenFenster->getThis() );
         bildschirm->removeMember( leistenFenster );
         leistenFenster->addStyle( Fenster::Style::Sichtbar );
         spielAufzeichnung = spielAufzeichnung->release();
@@ -173,12 +172,12 @@ void NachLogin::setAnzeige( NachLoginAnzeige s ) // Setzt den Status des Program
         leistenFenster->doMausEreignis( me );
         leistenFenster->removeStyle( Fenster::Style::Sichtbar );
         fenster->removeMember( leistenFenster );
-        bildschirm->addMember( leistenFenster );
+        bildschirm->addMember( leistenFenster->getThis() );
         titel->setImSpiel( 1 );
     }
     else if( status == NLAEditor )
     {
-        fenster->addMember( leistenFenster );
+        fenster->addMember( leistenFenster->getThis() );
         bildschirm->removeMember( leistenFenster );
         leistenFenster->addStyle( Fenster::Style::Sichtbar );
         editor = editor->release();
@@ -459,19 +458,4 @@ ImSpiel *NachLogin::zImSpiel() const // Gibt das Im Spiel Zeichnung zur
 Einstellungen *NachLogin::zEinstellungen() const // Gibt das Einstellungen Zeichnung zurück
 {
     return op;
-}
-
-// Reference Counting
-NachLogin *NachLogin::getThis()
-{
-    ref++;
-    return this;
-}
-
-NachLogin *NachLogin::release()
-{
-    ref--;
-    if( !ref )
-        delete this;
-    return 0;
 }

+ 0 - 4
KSGClient/NachLogin/NachLogin.h

@@ -29,7 +29,6 @@ enum NachLoginAnzeige
 class NachLogin : public Zeichnung
 {
 private:
-	int	ref;
 	Fenster *fenster;
 	Fenster *leistenFenster;
 	Schrift *schrift;
@@ -78,9 +77,6 @@ public:
 	Editor *zEditorFenster() const; // Gibt das Editor Fenster zurück
 	ImSpiel *zImSpiel() const; // Gibt das Im Spiel Zeichnung zurück
 	Einstellungen *zEinstellungen() const; // Gibt das Einstellungen Zeichnung zurück
-	// Reference Counting
-	NachLogin *getThis();
-	NachLogin *release();
 };
 
 #endif;

+ 235 - 250
KSGClient/NachLogin/Neuigkeiten/Neuigkeiten.cpp

@@ -2,23 +2,24 @@
 #include "../../Global/Variablen.h"
 #include "../../Global/Initialisierung.h"
 #include <Punkt.h>
+#include <Globals.h>
 
 // Inhalt der NewsThread Klasse aus Neuigkeiten.h
 // Konstruktor
 NewsThread::NewsThread( char *name, KSGScriptObj *obj, Neuigkeiten *n )
 {
-	scriptName = new Text( name );
-	this->obj = obj;
-	news = n;
-	start();
+    scriptName = new Text( name );
+    this->obj = obj;
+    news = n;
+    start();
 }
 
 // Destruktor
 NewsThread::~NewsThread()
 {
-	scriptName->release();
-	obj->release();
-	news->release();
+    scriptName->release();
+    obj->release();
+    news->release();
 }
 
 // nicht constant
@@ -32,297 +33,281 @@ void NewsThread::thread()
         delete this;
         return;
     }
-	if( !newsClient->verbinde() )
-	{
-		news->endLaden( newsClient ->getLetzterFehler() );
-		run = 0;
-		delete this;
-		return;
-	}
-	if( !newsClient->ladeSeite( scriptName->getText() ) )
-	{
-		news->endLaden( newsClient->getLetzterFehler() );
-		run = 0;
-		delete this;
-		return;
-	}
+    if( !newsClient->verbinde() )
+    {
+        news->endLaden( newsClient->getLetzterFehler() );
+        run = 0;
+        delete this;
+        return;
+    }
+    if( !newsClient->ladeSeite( scriptName->getText() ) )
+    {
+        news->endLaden( newsClient->getLetzterFehler() );
+        run = 0;
+        delete this;
+        return;
+    }
     newsClient->trenne( 0 );
-	Text *pfad = new Text( "data/tmp/news/" );
-	pfad->append( scriptName->getText() );
-	pfad->append( "/seite.ksgs" );
-	obj->setScriptDatei( pfad );
-	if( !obj->neuLaden() )
-	{
-		news->endLaden( "Fehler beim laden der Seite." );
-		run = 0;
-		delete this;
-		return;
-	}
-	news->endLaden( 0 );
-	run = 0;
-	delete this;
+    Text *pfad = new Text( "data/tmp/news/" );
+    pfad->append( scriptName->getText() );
+    pfad->append( "/seite.ksgs" );
+    obj->setScriptDatei( pfad );
+    if( !obj->neuLaden() )
+    {
+        news->endLaden( "Fehler beim laden der Seite." );
+        run = 0;
+        delete this;
+        return;
+    }
+    news->endLaden( 0 );
+    run = 0;
+    delete this;
 }
 
 
 void KSGSRückruf( void *p, RCArray< KSGSVariable > *parameter, KSGSVariable **ret )
 {
-	if( !p )
-		return;
-	( (Neuigkeiten*)p )->rückruf( parameter, ret );
+    if( !p )
+        return;
+    ( (Neuigkeiten *)p )->rückruf( parameter, ret );
 }
 
 // Inhalt der Neuigkeiten Klasse aus Neuigkeiten.h
 // Konstruktor
-Neuigkeiten::Neuigkeiten( Schrift *zSchrift, Fenster *zNachLoginFenster, int x )
+Neuigkeiten::Neuigkeiten( Schrift * zSchrift, Fenster * zNachLoginFenster, int x )
 {
-	bildschirmGröße = BildschirmGröße();
-	pos = Punkt( x, 67 );
-	gr = Punkt( 102, 32 );
-	rahmen = new LRahmen();
-	rahmen->setFarbe( 0xFFFFFFFF );
-	rahmen->setSize( 102, 32 );
-	alpha = 0;
-	animation = 0;
-	wirdGeladen = 0;
-	sichtbar = 0;
-	tickVal = 0;
-	prozent1 = 0;
-	prozent2 = 0;
-	begPos = Punkt( 0, 0 );
-	begGröße = Punkt( 0, 0 );
-	größe1 = Punkt( 102, 32 );
-	pos1 = Punkt( x, 67 );
-	größe2 = Punkt( 800, 500 );
-	pos2 = bildschirmGröße / 2 - größe2 / 2;
-	fehler = initTextFeld( 5, 5, 790, 490, zSchrift, TextFeld::Style::Text & ~TextFeld::Style::Sichtbar, "" );
-	laden = (Animation2D*)ladeAnimation->dublizieren();
-	laden->setSichtbar( 0 );
-	laden->setPosition( 375, 225 );
-	zNachLoginFenster->addMember( this );
-	ref = 1;
-	ksgsDLL = dllDateien->ladeDLL( "KSGScript.dll", "data/bin/KSGScript.dll" );
-	if( !ksgsDLL )
-	{
-		fehler->setText( "Die DLL Datei 'data/bin/KSGScript.dll' konnte nicht geladen werden." );
-		fehler->addStyle( TextFeld::Style::Sichtbar );
-		script = 0;
-	}
-	else
-	{
-		KSGSGetZeichnung getKSGSZeichnung = (KSGSGetZeichnung)GetProcAddress( ksgsDLL, KSGS_START_FUNKTION );
-		if( !getKSGSZeichnung )
-		{
-			fehler->setText( "Die Funktion '" KSGS_START_FUNKTION "' konnte in der DLL Datei 'data/bin/KSGScript.dll'\nnicht gefunden werden." );
-			fehler->addStyle( TextFeld::Style::Sichtbar );
-			script = 0;
-		}
-		else
-		{
-			script = getKSGSZeichnung();
-			script->setSize( 800, 500 );
-			script->setBildschirmZ( hauptScreen->getThis() );
-			script->setSchriftZ( zSchrift->getThis() );
-			script->setRückrufParam( this );
-			script->setRückrufFunktion( KSGSRückruf );
-			wirdGeladen = 1;
-			laden->setSichtbar( 1 );
-			new NewsThread( "Client/Start", script->getThis(), getThis() );
-		}
-	}
+    bildschirmGröße = BildschirmGröße();
+    pos = Punkt( x, 67 );
+    gr = Punkt( 102, 32 );
+    rahmen = new LRahmen();
+    rahmen->setFarbe( 0xFFFFFFFF );
+    rahmen->setSize( 102, 32 );
+    alpha = 0;
+    animation = 0;
+    wirdGeladen = 0;
+    sichtbar = 0;
+    tickVal = 0;
+    prozent1 = 0;
+    prozent2 = 0;
+    begPos = Punkt( 0, 0 );
+    begGröße = Punkt( 0, 0 );
+    größe1 = Punkt( 102, 32 );
+    pos1 = Punkt( x, 67 );
+    größe2 = Punkt( 800, 500 );
+    pos2 = bildschirmGröße / 2 - größe2 / 2;
+    fehler = initTextFeld( 5, 5, 790, 490, zSchrift, TextFeld::Style::Text & ~TextFeld::Style::Sichtbar, "" );
+    laden = (Animation2D *)ladeAnimation->dublizieren();
+    laden->setSichtbar( 0 );
+    laden->setPosition( 375, 225 );
+    zNachLoginFenster->addMember( getThis() );
+    ksgsDLL = Framework::getDLLRegister()->ladeDLL( "KSGScript.dll", "data/bin/KSGScript.dll" );
+    if( !ksgsDLL )
+    {
+        fehler->setText( "Die DLL Datei 'data/bin/KSGScript.dll' konnte nicht geladen werden." );
+        fehler->addStyle( TextFeld::Style::Sichtbar );
+        script = 0;
+    }
+    else
+    {
+        KSGSGetZeichnung getKSGSZeichnung = (KSGSGetZeichnung)GetProcAddress( ksgsDLL, KSGS_START_FUNKTION );
+        if( !getKSGSZeichnung )
+        {
+            fehler->setText( "Die Funktion '" KSGS_START_FUNKTION "' konnte in der DLL Datei 'data/bin/KSGScript.dll'\nnicht gefunden werden." );
+            fehler->addStyle( TextFeld::Style::Sichtbar );
+            script = 0;
+        }
+        else
+        {
+            script = getKSGSZeichnung();
+            script->setSize( 800, 500 );
+            script->setBildschirmZ( hauptScreen->getThis() );
+            script->setSchriftZ( zSchrift->getThis() );
+            script->setRückrufParam( this );
+            script->setRückrufFunktion( KSGSRückruf );
+            wirdGeladen = 1;
+            laden->setSichtbar( 1 );
+            new NewsThread( "Client/Start", dynamic_cast<KSGScriptObj *>( script->getThis() ), (Neuigkeiten *)getThis() );
+        }
+    }
 }
 
 // Destruktor
 Neuigkeiten::~Neuigkeiten()
 {
-	rahmen->release();
-	if( script )
-	{
-		script->zurücksetzen();
-		script->release();
-	}
-	if( ksgsDLL )
-		dllDateien->releaseDLL( "KSGScript.dll" );
-	fehler->release();
-	laden->release();
+    rahmen->release();
+    if( script )
+    {
+        script->zurücksetzen();
+        script->release();
+    }
+    if( ksgsDLL )
+        Framework::getDLLRegister()->releaseDLL( "KSGScript.dll" );
+    fehler->release();
+    laden->release();
 }
 
 // nicht constant
 void Neuigkeiten::setSichtbar( bool sicht )
 {
-	begPos = pos;
-	begGröße = gr;
-	animation |= ( sicht ? 0x1 : 0x2 );
-	rend = 1;
+    begPos = pos;
+    begGröße = gr;
+    animation |= ( sicht ? 0x1 : 0x2 );
+    rend = 1;
 }
 
 void Neuigkeiten::endLaden( char *err )
 {
-	laden->setSichtbar( 0 );
-	wirdGeladen = 0;
-	if( err )
-	{
-		fehler->setText( err );
-		fehler->addStyle( TextFeld::Style::Sichtbar );
-	}
-	else
-	{
-		fehler->setText( "" );
-		fehler->removeStyle( TextFeld::Style::Sichtbar );
-	}
+    laden->setSichtbar( 0 );
+    wirdGeladen = 0;
+    if( err )
+    {
+        fehler->setText( err );
+        fehler->addStyle( TextFeld::Style::Sichtbar );
+    }
+    else
+    {
+        fehler->setText( "" );
+        fehler->removeStyle( TextFeld::Style::Sichtbar );
+    }
 }
 
-void Neuigkeiten::rückruf( RCArray< KSGSVariable > *parameter, KSGSVariable **ret )
+void Neuigkeiten::rückruf( RCArray< KSGSVariable > * parameter, KSGSVariable * *ret )
 {
-	if( wirdGeladen )
-		return;
-	KSGSVariable *befehl = parameter->z( 0 );
-	if( !befehl )
-		return;
-	Text *b = befehl->getText();
-	if( !b || !b->getLength() )
-	{
-		if( b )
-			b->release();
-		return;
-	}
-	wirdGeladen = 1;
-	laden->setSichtbar( 1 );
-	new NewsThread( b->getText(), script->getThis(), getThis() );
+    if( wirdGeladen )
+        return;
+    KSGSVariable * befehl = parameter->z( 0 );
+    if( !befehl )
+        return;
+    Text * b = befehl->getText();
+    if( !b || !b->getLength() )
+    {
+        if( b )
+            b->release();
+        return;
+    }
+    wirdGeladen = 1;
+    laden->setSichtbar( 1 );
+    new NewsThread( b->getText(), dynamic_cast<KSGScriptObj *>( script->getThis() ), (Neuigkeiten *)getThis() );
 }
 
-void Neuigkeiten::doMausEreignis( MausEreignis &me )
+void Neuigkeiten::doMausEreignis( MausEreignis & me )
 {
-	if( wirdGeladen )
-		return;
-	me.mx -= pos.x;
-	me.my -= pos.y;
-	if( script && sichtbar )
-		script->doMausEreignis( me );
-	me.mx += pos.x;
-	me.my += pos.y;
+    if( wirdGeladen )
+        return;
+    me.mx -= pos.x;
+    me.my -= pos.y;
+    if( script &&sichtbar )
+        script->doMausEreignis( me );
+    me.mx += pos.x;
+    me.my += pos.y;
 }
 
-void Neuigkeiten::doTastaturEreignis( TastaturEreignis &te )
+void Neuigkeiten::doTastaturEreignis( TastaturEreignis & te )
 {
-	if( wirdGeladen )
-		return;
-	if( script && sichtbar )
-		script->doTastaturEreignis( te );
+    if( wirdGeladen )
+        return;
+    if( script &&sichtbar )
+        script->doTastaturEreignis( te );
 }
 
 bool Neuigkeiten::tick( double z )
 {
-	rend |= laden->tick( z );
-	rend |= fehler->tick( z );
-	if( wirdGeladen )
-	{
-		bool ret = rend;
-		rend = 0;
-		return ret;
-	}
-	if( script && sichtbar )
-		rend |= script->tick( z );
-	tickVal += z * 150;
-	int val = (int)tickVal;
-	if( val < 1 )
-	{
-		bool ret = rend;
-		rend = 0;
-		return ret;
-	}
-	tickVal -= val;
-	if( ( animation | 0x1 ) == animation ) // Einblenden
-	{
-		if( prozent1 != 100 )
-		{
-			prozent1 += val;
-			if( prozent1 >= 100 )
-				prozent1 = 100;
-			pos = begPos + (Punkt)( ( ( Vec2< double > )( pos2 - begPos ) / 100.0 ) * prozent1 );
-			gr = begGröße + (Punkt)( ( ( Vec2< double > )( größe2 - begGröße ) / 100.0 ) * prozent1 );
-		}
-		else if( alpha != 255 )
-		{
-			alpha += val * 2;
-			if( alpha >= 255 || ( animation | 0x2 ) == animation )
-			{
-				alpha = 255;
-				animation &= ~0x1;
-				sichtbar = 1;
-				prozent1 = 0;
-			}
-		}
-		rend = 1;
-	}
-	if( ( animation | 0x2 ) == animation ) // ausblenden
-	{
-		if( alpha != 0 )
-		{
-			alpha -= val * 2;
-			if( alpha < 0 )
-				alpha = 0;
-		}
-		else
-		{
-			prozent2 += val;
-			if( prozent2 > 100 )
-				prozent2 = 100;
-			pos = begPos + (Punkt)( ( ( Vec2< double > )( pos1 - begPos ) / 100.0 ) * prozent2 );
-			gr = begGröße + (Punkt)( ( ( Vec2< double > )( größe1 - begGröße ) / 100.0 ) * prozent2 );
-			if( prozent2 == 100 )
-			{
-				prozent2 = 0;
-				animation &= ~0x2;
-				sichtbar = 0;
-			}
-		}
-		rend = 1;
-	}
-	bool ret = rend;
-	rend = 0;
-	return ret;
+    rend |= laden->tick( z );
+    rend |= fehler->tick( z );
+    if( wirdGeladen )
+    {
+        bool ret = rend;
+        rend = 0;
+        return ret;
+    }
+    if( script &&sichtbar )
+        rend |= script->tick( z );
+    tickVal += z * 150;
+    int val = (int)tickVal;
+    if( val < 1 )
+    {
+        bool ret = rend;
+        rend = 0;
+        return ret;
+    }
+    tickVal -= val;
+    if( ( animation | 0x1 ) == animation ) // Einblenden
+    {
+        if( prozent1 != 100 )
+        {
+            prozent1 += val;
+            if( prozent1 >= 100 )
+                prozent1 = 100;
+            pos = begPos + (Punkt)( ( ( Vec2< double > )( pos2 - begPos ) / 100.0 ) * prozent1 );
+            gr = begGröße + (Punkt)( ( ( Vec2< double > )( größe2 - begGröße ) / 100.0 ) * prozent1 );
+        }
+        else if( alpha != 255 )
+        {
+            alpha += val * 2;
+            if( alpha >= 255 || ( animation | 0x2 ) == animation )
+            {
+                alpha = 255;
+                animation &= ~0x1;
+                sichtbar = 1;
+                prozent1 = 0;
+            }
+        }
+        rend = 1;
+    }
+    if( ( animation | 0x2 ) == animation ) // ausblenden
+    {
+        if( alpha != 0 )
+        {
+            alpha -= val * 2;
+            if( alpha < 0 )
+                alpha = 0;
+        }
+        else
+        {
+            prozent2 += val;
+            if( prozent2 > 100 )
+                prozent2 = 100;
+            pos = begPos + (Punkt)( ( ( Vec2< double > )( pos1 - begPos ) / 100.0 ) * prozent2 );
+            gr = begGröße + (Punkt)( ( ( Vec2< double > )( größe1 - begGröße ) / 100.0 ) * prozent2 );
+            if( prozent2 == 100 )
+            {
+                prozent2 = 0;
+                animation &= ~0x2;
+                sichtbar = 0;
+            }
+        }
+        rend = 1;
+    }
+    bool ret = rend;
+    rend = 0;
+    return ret;
 }
 
-void Neuigkeiten::render( Bild &zRObj )
+void Neuigkeiten::render( Bild & zRObj )
 {
-	if( pos == pos1 )
-		return;
-	if( !zRObj.setDrawOptions( pos.x, pos.y, gr.x, gr.y ) )
-		return;
-	rahmen->setSize( gr );
-	rahmen->render( zRObj );
-	int rbr = rahmen->getRBreite();
-	zRObj.setAlpha( (unsigned char)alpha );
-	fehler->render( zRObj );
-	if( script )
-		script->render( zRObj );
-	laden->render( zRObj );
-	zRObj.releaseAlpha();
-	zRObj.releaseDrawOptions();
+    if( pos == pos1 )
+        return;
+    if( !zRObj.setDrawOptions( pos.x, pos.y, gr.x, gr.y ) )
+        return;
+    rahmen->setSize( gr );
+    rahmen->render( zRObj );
+    int rbr = rahmen->getRBreite();
+    zRObj.setAlpha( (unsigned char)alpha );
+    fehler->render( zRObj );
+    if( script )
+        script->render( zRObj );
+    laden->render( zRObj );
+    zRObj.releaseAlpha();
+    zRObj.releaseDrawOptions();
 }
 
 // constant
 bool Neuigkeiten::istAnimiert() const
 {
-	return animation != 0;
+    return animation != 0;
 }
 
 bool Neuigkeiten::istSichtbar() const
 {
-	return sichtbar || prozent1 != 0;
-}
-
-// Reference Counting
-Neuigkeiten *Neuigkeiten::getThis()
-{
-	ref++;
-	return this;
-}
-
-Neuigkeiten *Neuigkeiten::release()
-{
-	ref--;
-	if( !ref )
-		delete this;
-	return 0;
+    return sichtbar || prozent1 != 0;
 }

+ 0 - 4
KSGClient/NachLogin/Neuigkeiten/Neuigkeiten.h

@@ -48,7 +48,6 @@ private:
 	int prozent1;
 	int prozent2;
 	double tickVal;
-	int ref;
 
 public:
 	// Konstruktor
@@ -66,9 +65,6 @@ public:
 	// constant
 	bool istAnimiert() const;
 	bool istSichtbar() const;
-	// Reference Counting
-	Neuigkeiten *getThis();
-	Neuigkeiten *release();
 };
 
 #endif

+ 4 - 36
KSGClient/NachLogin/Shop/Karten/KartenKaufen.cpp

@@ -6,6 +6,7 @@
 #include <DateiSystem.h>
 #include <AlphaFeld.h>
 #include <KSGTDatei.h>
+#include <Globals.h>
 
 void KarteKaufenKSGSAktion( void *p, RCArray< KSGSVariable > *parameter, KSGSVariable **retVal )
 {
@@ -17,10 +18,11 @@ void KarteKaufenKSGSAktion( void *p, RCArray< KSGSVariable > *parameter, KSGSVar
 // Inhalt der KartenKaufenAuswahl Klasse aus KartenKaufen.h
 // Konstruktor
 KartenKaufenAuswahl::KartenKaufenAuswahl( Schrift *zSchrift )
+    : Thread()
 {
     karteId = 0;
     alpha = 0;
-    ksgs = dllDateien->ladeDLL( "KSGScript.dll", "data/bin/KSGScript.dll" );
+    ksgs = Framework::getDLLRegister()->ladeDLL( "KSGScript.dll", "data/bin/KSGScript.dll" );
     if( ksgs )
     {
         KSGSGetZeichnung getKSGScript = (KSGSGetZeichnung)GetProcAddress( ksgs, KSGS_START_FUNKTION );
@@ -56,7 +58,6 @@ KartenKaufenAuswahl::KartenKaufenAuswahl( Schrift *zSchrift )
     laden->setSichtbar( 0 );
     pos = Punkt( 220, 10 );
     aktion = 0;
-    ref = 1;
 }
 
 // Destruktor
@@ -74,7 +75,7 @@ KartenKaufenAuswahl::~KartenKaufenAuswahl()
     ram->release();
     laden->release();
     if( ksgs )
-        dllDateien->releaseDLL( "KSGScript.dll" );
+        Framework::getDLLRegister()->releaseDLL( "KSGScript.dll" );
 }
 
 // nicht constant
@@ -463,23 +464,6 @@ void KartenKaufenAuswahl::render( Bild &zRObj )
     zRObj.releaseDrawOptions();
 }
 
-// constant
-
-// Reference Counting
-KartenKaufenAuswahl *KartenKaufenAuswahl::getThis()
-{
-    ref++;
-    return this;
-}
-
-KartenKaufenAuswahl *KartenKaufenAuswahl::release()
-{
-    ref--;
-    if( !ref )
-        delete this;
-    return 0;
-}
-
 
 // Inhalt der KartenKaufenListeEintrag Klasse aus KartenKaufen.h
 // Konstruktor
@@ -809,7 +793,6 @@ KartenKaufen::KartenKaufen( Schrift *zSchrift )
     maxSeite = 0;
     rend = 0;
     aktion = 0;
-    ref = 1;
     start();
 }
 
@@ -1101,19 +1084,4 @@ void KartenKaufen::render( Bild &zRObj )
 bool KartenKaufen::istSichtbar() const
 {
     return sichtbar;
-}
-
-// Reference Counting
-KartenKaufen *KartenKaufen::getThis()
-{
-    ref++;
-    return this;
-}
-
-KartenKaufen *KartenKaufen::release()
-{
-    ref--;
-    if( !ref )
-        delete this;
-    return 0;
 }

+ 2 - 12
KSGClient/NachLogin/Shop/Karten/KartenKaufen.h

@@ -14,7 +14,7 @@
 using namespace Framework;
 using namespace KSGScript;
 
-class KartenKaufenAuswahl : private Thread
+class KartenKaufenAuswahl : public Thread
 {
 private:
 	int karteId;
@@ -25,7 +25,6 @@ private:
 	LRahmen *ram;
 	HINSTANCE ksgs;
 	bool aktion;
-	int ref;
 
 public:
 	// Konstruktor
@@ -41,11 +40,6 @@ public:
 	void doTastaturEreignis( TastaturEreignis &te );
 	bool tick( double zeit );
 	void render( Bild &zRObj );
-	// constant
-
-	// Reference Counting
-	KartenKaufenAuswahl *getThis();
-	KartenKaufenAuswahl *release();
 };
 
 class KartenKaufenListeEintrag
@@ -107,7 +101,7 @@ public:
 	KartenKaufenListe *release();
 };
 
-class KartenKaufen : private Thread
+class KartenKaufen : public Thread
 {
 private:
 	unsigned char alpha;
@@ -130,7 +124,6 @@ private:
 	int maxSeite;
 	int aktion;
 	bool rend;
-	int ref;
 
 public:
 	// Konstruktor
@@ -146,9 +139,6 @@ public:
 	void render( Bild &zRObj );
 	// constant
 	bool istSichtbar() const;
-	// Reference Counting
-	KartenKaufen *getThis();
-	KartenKaufen *release();
 };
 
 #endif

+ 1 - 17
KSGClient/NachLogin/Shop/Shop.cpp

@@ -35,10 +35,9 @@ Shop::Shop( Schrift *zSchrift, Fenster *zNachLoginFenster, int x )
 	pos1 = Punkt( x, 67 );
 	größe2 = Punkt( 800, 500 );
 	pos2 = bildschirmGröße / 2 - größe2 / 2;
-	zNachLoginFenster->addMember( this );
+	zNachLoginFenster->addMember( getThis() );
 	spielKaufen = new SpieleKaufen( zSchrift );
 	karteKaufen = new KartenKaufen( zSchrift );
-	ref = 1;
 }
 
 // Destruktor
@@ -239,19 +238,4 @@ bool Shop::istAnimiert() const
 bool Shop::istSichtbar() const
 {
 	return sichtbar || prozent1 != 0;
-}
-
-// Reference Counting
-Shop *Shop::getThis()
-{
-	ref++;
-	return this;
-}
-
-Shop *Shop::release()
-{
-	ref--;
-	if( !ref )
-		delete this;
-	return 0;
 }

+ 0 - 4
KSGClient/NachLogin/Shop/Shop.h

@@ -33,7 +33,6 @@ private:
 	int prozent1;
 	int prozent2;
 	double tickVal;
-	int ref;
 
 public:
 	// Konstruktor
@@ -49,9 +48,6 @@ public:
 	// constant
 	bool istAnimiert() const;
 	bool istSichtbar() const;
-	// Reference Counting
-	Shop *getThis();
-	Shop *release();
 };
 
 #endif

+ 4 - 36
KSGClient/NachLogin/Shop/Spiele/SpieleKaufen.cpp

@@ -6,6 +6,7 @@
 #include <DateiSystem.h>
 #include <AlphaFeld.h>
 #include <KSGTDatei.h>
+#include <Globals.h>
 
 void SpielKaufenKSGSAktion( void *p, RCArray< KSGSVariable > *parameter, KSGSVariable **retVal )
 {
@@ -17,10 +18,11 @@ void SpielKaufenKSGSAktion( void *p, RCArray< KSGSVariable > *parameter, KSGSVar
 // Inhalt der SpieleKaufenAuswahl Klasse aus SpieleKaufen.h
 // Konstruktor
 SpieleKaufenAuswahl::SpieleKaufenAuswahl( Schrift *zSchrift )
+    : Thread()
 {
 	spielId = 0;
 	alpha = 0;
-	ksgs = dllDateien->ladeDLL( "KSGScript.dll", "data/bin/KSGScript.dll" );
+	ksgs = Framework::getDLLRegister()->ladeDLL( "KSGScript.dll", "data/bin/KSGScript.dll" );
 	if( ksgs )
 	{
 		KSGSGetZeichnung getKSGScript = (KSGSGetZeichnung)GetProcAddress( ksgs, KSGS_START_FUNKTION );
@@ -57,7 +59,6 @@ SpieleKaufenAuswahl::SpieleKaufenAuswahl( Schrift *zSchrift )
 	laden->setSichtbar( 0 );
 	pos = Punkt( 220, 55 );
 	aktion = 0;
-	ref = 1;
 }
 
 // Destruktor
@@ -75,7 +76,7 @@ SpieleKaufenAuswahl::~SpieleKaufenAuswahl()
 	ram->release();
 	laden->release();
 	if( ksgs )
-		dllDateien->releaseDLL( "KSGScript.dll" );
+		Framework::getDLLRegister()->releaseDLL( "KSGScript.dll" );
 }
 
 // nicht constant
@@ -511,23 +512,6 @@ void SpieleKaufenAuswahl::render( Bild &zRObj )
 	zRObj.releaseDrawOptions();
 }
 
-// constant
-
-// Reference Counting
-SpieleKaufenAuswahl *SpieleKaufenAuswahl::getThis()
-{
-	ref++;
-	return this;
-}
-
-SpieleKaufenAuswahl *SpieleKaufenAuswahl::release()
-{
-	ref--;
-	if( !ref )
-		delete this;
-	return 0;
-}
-
 
 // Inhalt der SpieleKaufenListeEintrag Klasse aus SpieleKaufen.h
 // Konstruktor
@@ -840,7 +824,6 @@ SpieleKaufen::SpieleKaufen( Schrift *zSchrift )
 	seite = 0;
 	maxSeite = 0;
 	rend = 0;
-	ref = 1;
 }
 
 // Destruktor
@@ -1082,19 +1065,4 @@ void SpieleKaufen::render( Bild &zRObj )
 bool SpieleKaufen::istSichtbar() const
 {
 	return sichtbar;
-}
-
-// Reference Counting
-SpieleKaufen *SpieleKaufen::getThis()
-{
-	ref++;
-	return this;
-}
-
-SpieleKaufen *SpieleKaufen::release()
-{
-	ref--;
-	if( !ref )
-		delete this;
-	return 0;
 }

+ 2 - 12
KSGClient/NachLogin/Shop/Spiele/SpieleKaufen.h

@@ -13,7 +13,7 @@
 using namespace Framework;
 using namespace KSGScript;
 
-class SpieleKaufenAuswahl : private Thread
+class SpieleKaufenAuswahl : public Thread
 {
 private:
 	int spielId;
@@ -24,7 +24,6 @@ private:
 	LRahmen *ram;
 	HINSTANCE ksgs;
 	bool aktion;
-	int ref;
 
 public:
 	// Konstruktor
@@ -40,11 +39,6 @@ public:
 	void doTastaturEreignis( TastaturEreignis &te );
 	bool tick( double zeit );
 	void render( Bild &zRObj );
-	// constant
-
-	// Reference Counting
-	SpieleKaufenAuswahl *getThis();
-	SpieleKaufenAuswahl *release();
 };
 
 class SpieleKaufenListeEintrag
@@ -106,7 +100,7 @@ public:
 	SpieleKaufenListe *release();
 };
 
-class SpieleKaufen : private Thread
+class SpieleKaufen : public Thread
 {
 private:
 	unsigned char alpha;
@@ -127,7 +121,6 @@ private:
 	int seite;
 	int maxSeite;
 	bool rend;
-	int ref;
 
 public:
 	// Konstruktor
@@ -143,9 +136,6 @@ public:
 	void render( Bild &zRObj );
 	// constant
 	bool istSichtbar() const;
-	// Reference Counting
-	SpieleKaufen *getThis();
-	SpieleKaufen *release();
 };
 
 #endif

+ 4 - 18
KSGClient/NachLogin/Spiele/Gruppe/Gruppe.cpp

@@ -7,6 +7,7 @@
 #include <DateiSystem.h>
 #include <AlphaFeld.h>
 #include <ToolTip.h>
+#include <Globals.h>
 
 // Inhalt der GruppeEinladungAccount Klasse aus Gruppe.h
 // Konstruktor
@@ -1868,6 +1869,7 @@ void GruppeKarteKSGSAktion( void *p, RCArray< KSGSVariable > * parameter, KSGSVa
 // Inhalt der GruppeKarte Klasse aus Gruppe.h
 // Konstruktor
 GruppeKarte::GruppeKarte( Schrift * zSchrift )
+    : Thread()
 {
     schrift = zSchrift;
     tr = new TextRenderer( schrift->getThis() );
@@ -1879,7 +1881,7 @@ GruppeKarte::GruppeKarte( Schrift * zSchrift )
     rahmen->setSize( 350, 350 );
     rahmen->setPosition( 248, 0 );
     info = 0;
-    ksgs = dllDateien->ladeDLL( "KSGScript.dll", "data/bin/KSGScript.dll" );
+    ksgs = Framework::getDLLRegister()->ladeDLL( "KSGScript.dll", "data/bin/KSGScript.dll" );
     if( ksgs )
     {
         KSGSGetZeichnung getKSGScript = (KSGSGetZeichnung)GetProcAddress( ksgs, KSGS_START_FUNKTION );
@@ -1918,7 +1920,6 @@ GruppeKarte::GruppeKarte( Schrift * zSchrift )
     exit = 0;
     geladen = 0;
     rend = 0;
-    ref = 1;
 }
 
 // Destruktor
@@ -1942,7 +1943,7 @@ GruppeKarte::~GruppeKarte()
         schrift->release();
     tr->release();
     if( ksgs )
-        dllDateien->releaseDLL( "KSGScript.dll" );
+        Framework::getDLLRegister()->releaseDLL( "KSGScript.dll" );
 }
 
 // nicht constant
@@ -2183,21 +2184,6 @@ int GruppeKarte::getKarteId() const
     return karteId;
 }
 
-// Reference Counting
-GruppeKarte *GruppeKarte::getThis()
-{
-    ref++;
-    return this;
-}
-
-GruppeKarte *GruppeKarte::release()
-{
-    ref--;
-    if( !ref )
-        delete this;
-    return 0;
-}
-
 // Inhalt der GruppeSpielGefunden Klasse aus Gruppe.h
 // Konstruktor
 GruppeSpielGefunden::GruppeSpielGefunden( Schrift * zSchrift )

+ 0 - 4
KSGClient/NachLogin/Spiele/Gruppe/Gruppe.h

@@ -280,7 +280,6 @@ private:
 	bool exit;
 	bool geladen;
 	bool rend;
-	int ref;
 
 public:
 	// Konstruktor
@@ -297,9 +296,6 @@ public:
 	virtual void thread();
 	// constant
 	int getKarteId() const;
-	// Reference Counting
-	GruppeKarte *getThis();
-	GruppeKarte *release();
 };
 
 class GruppeSpielGefunden

+ 6 - 21
KSGClient/NachLogin/Spiele/Karte Auswahl/KarteAuswahl.cpp

@@ -11,6 +11,7 @@
 #include <MausEreignis.h>
 #include "..\..\..\Global\Variablen.h"
 #include "..\..\..\Leser\KartenLeser.h"
+#include <Globals.h>
 
 void KarteAuswahlKSGSAktion( void *p, RCArray< KSGSVariable > *parameter, KSGSVariable **retVal )
 {
@@ -38,12 +39,12 @@ void KarteDaten::Loader::thread()
         if( kd->beschreibung )
         {
             kd->beschreibung->zurücksetzen();
-            kd->beschreibung = kd->beschreibung->release();
+            kd->beschreibung = dynamic_cast<KSGScriptObj*>(kd->beschreibung->release());
         }
         kd->rend = 1;
         if( kd->ksgs )
         {
-            dllDateien->releaseDLL( "KSGScript.dll" );
+            Framework::getDLLRegister()->releaseDLL( "KSGScript.dll" );
             kd->ksgs = 0;
         }
     }
@@ -67,10 +68,10 @@ void KarteDaten::Loader::thread()
             if( kd->beschreibung )
             {
                 kd->beschreibung->zurücksetzen();
-                kd->beschreibung = kd->beschreibung->release();
+                kd->beschreibung = dynamic_cast<KSGScriptObj*>(kd->beschreibung->release());
             }
             if( !kd->ksgs )
-                kd->ksgs = dllDateien->ladeDLL( "KSGScript.dll", "data/bin/KSGScript.dll" );
+                kd->ksgs = Framework::getDLLRegister()->ladeDLL( "KSGScript.dll", "data/bin/KSGScript.dll" );
             if( kd->ksgs )
             {
                 KSGSGetZeichnung getKSGScript = (KSGSGetZeichnung)GetProcAddress( kd->ksgs, KSGS_START_FUNKTION );
@@ -189,7 +190,7 @@ KarteDaten::~KarteDaten()
     }
     if( ksgs )
     {
-        dllDateien->releaseDLL( "KSGScript.dll" );
+        Framework::getDLLRegister()->releaseDLL( "KSGScript.dll" );
         ksgs = 0;
     }
     rahmen->release();
@@ -524,7 +525,6 @@ KarteAuswahlFenster::KarteAuswahlFenster( Schrift *zSchrift )
     spielId = 0;
     rend = 0;
     alpha = 0;
-    ref = 1;
 }
 
 // Destruktor
@@ -785,19 +785,4 @@ bool KarteAuswahlFenster::hatAuswahl() const
 KarteDaten *KarteAuswahlFenster::getAuswahl() const
 {
     return members->get( auswahl );
-}
-
-// Reference Counting
-KarteAuswahlFenster *KarteAuswahlFenster::getThis()
-{
-    ref++;
-    return this;
-}
-
-KarteAuswahlFenster *KarteAuswahlFenster::release()
-{
-    ref--;
-    if( !ref )
-        delete this;
-    return 0;
 }

+ 1 - 6
KSGClient/NachLogin/Spiele/Karte Auswahl/KarteAuswahl.h

@@ -19,7 +19,6 @@ private:
     private:
         KarteDaten * kd;
         int aktion;
-        int ref;
     public:
         Loader( KarteDaten *kd, int aktion );
         void thread() override;
@@ -71,7 +70,7 @@ public:
     KarteDaten *release();
 };
 
-class KarteAuswahlFenster : private Thread
+class KarteAuswahlFenster : public Thread
 {
 private:
     int anzahl;
@@ -88,7 +87,6 @@ private:
     int seite;
     bool rend;
     unsigned char alpha;
-    int ref;
 
 public:
     // Konstruktor
@@ -111,9 +109,6 @@ public:
     int getAnzahlAufSeite() const;
     bool hatAuswahl() const;
     KarteDaten *getAuswahl() const;
-    // Reference Counting
-    KarteAuswahlFenster *getThis();
-    KarteAuswahlFenster *release();
 };
 
 #endif

+ 10 - 25
KSGClient/NachLogin/Spiele/Spiel Auswahl/SpielAuswahl.cpp

@@ -10,6 +10,7 @@
 #include <MausEreignis.h>
 #include <KSGTDatei.h>
 #include "..\..\..\Global\Variablen.h"
+#include <Globals.h>
 
 void SpielAuswahlKSGSAktion( void *p, RCArray< KSGSVariable > *parameter, KSGSVariable **retVal )
 {
@@ -54,11 +55,11 @@ void SpielDaten::Loader::thread()
             if( sd->beschreibung )
             {
                 sd->beschreibung->zurücksetzen();
-                sd->beschreibung = sd->beschreibung->release();
+                sd->beschreibung = dynamic_cast<KSGScriptObj *>( sd->beschreibung->release() );
             }
             if( sd->ksgs )
             {
-                dllDateien->releaseDLL( "KSGScript.dll" );
+                Framework::getDLLRegister()->releaseDLL( "KSGScript.dll" );
                 sd->ksgs = 0;
             }
         }
@@ -122,10 +123,10 @@ void SpielDaten::Loader::thread()
                 if( sd->beschreibung )
                 {
                     sd->beschreibung->zurücksetzen();
-                    sd->beschreibung = sd->beschreibung->release();
+                    sd->beschreibung = dynamic_cast<KSGScriptObj*>(sd->beschreibung->release());
                 }
                 if( !sd->ksgs )
-                    sd->ksgs = dllDateien->ladeDLL( "KSGScript.dll", "data/bin/KSGScript.dll" );
+                    sd->ksgs = Framework::getDLLRegister()->ladeDLL( "KSGScript.dll", "data/bin/KSGScript.dll" );
                 if( sd->ksgs )
                 {
                     KSGSGetZeichnung getKSGScript = (KSGSGetZeichnung)GetProcAddress( sd->ksgs, KSGS_START_FUNKTION );
@@ -181,11 +182,11 @@ void SpielDaten::Loader::thread()
         if( sd->beschreibung )
         {
             sd->beschreibung->zurücksetzen();
-            sd->beschreibung = sd->beschreibung->release();
+            sd->beschreibung = dynamic_cast<KSGScriptObj*>(sd->beschreibung->release());
         }
         if( sd->ksgs )
         {
-            dllDateien->releaseDLL( "KSGScript.dll" );
+            Framework::getDLLRegister()->releaseDLL( "KSGScript.dll" );
             sd->ksgs = 0;
         }
         sd->rend = 1;
@@ -272,10 +273,10 @@ void SpielDaten::Loader::thread()
             if( sd->beschreibung )
             {
                 sd->beschreibung->zurücksetzen();
-                sd->beschreibung = sd->beschreibung->release();
+                sd->beschreibung = dynamic_cast<KSGScriptObj*>(sd->beschreibung->release());
             }
             if( !sd->ksgs )
-                sd->ksgs = dllDateien->ladeDLL( "KSGScript.dll", "data/bin/KSGScript.dll" );
+                sd->ksgs = Framework::getDLLRegister()->ladeDLL( "KSGScript.dll", "data/bin/KSGScript.dll" );
             if( sd->ksgs )
             {
                 KSGSGetZeichnung getKSGScript = (KSGSGetZeichnung)GetProcAddress( sd->ksgs, KSGS_START_FUNKTION );
@@ -386,7 +387,7 @@ SpielDaten::~SpielDaten()
     }
     if( ksgs )
     {
-        dllDateien->releaseDLL( "KSGScript.dll" );
+        Framework::getDLLRegister()->releaseDLL( "KSGScript.dll" );
         ksgs = 0;
     }
     rahmen->release();
@@ -737,7 +738,6 @@ SpielAuswahlFenster::SpielAuswahlFenster( Schrift * zSchrift )
     pos = Punkt( 10, 10 );
     gr = Punkt( 780, 430 );
     rend = 0;
-    ref = 1;
     alpha = 0;
     start();
 }
@@ -1010,19 +1010,4 @@ SpielDaten *SpielAuswahlFenster::zAuswahl() const
 bool SpielAuswahlFenster::istAuswahlErlubt() const
 {
     return auswahl != -1 && members->z( auswahl )->istErlaubt();
-}
-
-// Reference Counting
-SpielAuswahlFenster *SpielAuswahlFenster::getThis()
-{
-    ref++;
-    return this;
-}
-
-SpielAuswahlFenster *SpielAuswahlFenster::release()
-{
-    ref--;
-    if( !ref )
-        delete this;
-    return 0;
 }

+ 1 - 6
KSGClient/NachLogin/Spiele/Spiel Auswahl/SpielAuswahl.h

@@ -23,7 +23,6 @@ private:
         SpielDaten * sd;
         bool beenden;
         int aktion;
-        int ref;
     public:
         Loader( SpielDaten *sd, int aktion );
         void setBeenden();
@@ -80,7 +79,7 @@ public:
     SpielDaten *release();
 };
 
-class SpielAuswahlFenster : private Thread
+class SpielAuswahlFenster : public Thread
 {
 private:
     int anzahl;
@@ -96,7 +95,6 @@ private:
     int seite;
     bool rend;
     unsigned char alpha;
-    int ref;
 
 public:
     // Konstruktor
@@ -120,9 +118,6 @@ public:
     SpielDaten *getAuswahl() const;
     SpielDaten *zAuswahl() const;
     bool istAuswahlErlubt() const;
-    // Reference Counting
-    SpielAuswahlFenster *getThis();
-    SpielAuswahlFenster *release();
 };
 
 #endif

+ 1 - 17
KSGClient/NachLogin/Spiele/Spiele.cpp

@@ -68,8 +68,7 @@ Spiele::Spiele( Schrift *zSchrift, Fenster *zNachLoginFenster, int x )
 	pos3 = bildschirmGröße / 2 - größe3 / 2;
 	größe4 = Punkt( 700, 600 );
 	pos4 = bildschirmGröße / 2 - größe4 / 2;
-	zNachLoginFenster->addMember( this );
-	ref = 1;
+	zNachLoginFenster->addMember( getThis() );
 }
 
 // Destruktor
@@ -824,19 +823,4 @@ SpielerTeamStruktur *Spiele::getSTS() const
 	if( jetzt == 5 )
 		return teamAuswahl->getSTS();
 	return 0;
-}
-
-// Reference Counting
-Spiele *Spiele::getThis()
-{
-	ref++;
-	return this;
-}
-
-Spiele *Spiele::release()
-{
-	ref--;
-	if( !ref )
-		delete this;
-	return 0;
 }

+ 0 - 4
KSGClient/NachLogin/Spiele/Spiele.h

@@ -60,7 +60,6 @@ private:
 	double tickVal;
 	double tickVal2;
 	bool spielGefundenB;
-	int ref;
 
 public:
 	// Konstruktor
@@ -108,9 +107,6 @@ public:
 	int getKarteId() const;
 	int getGruppeId() const;
 	SpielerTeamStruktur *getSTS() const;
-	// Reference Counting
-	Spiele *getThis();
-	Spiele *release();
 };
 
 #endif

+ 1 - 1
KSGClient/NachLogin/Spiele/Statistik/SpielStatistik.cpp

@@ -86,7 +86,7 @@ void SpielStatistik::setSpielArt( int spielArt )
 	stat->setBilder( bilder );
 	stat->setRückrufFunktionen( spielStatistikAddNachrichtF, spielStatistikAddChatF, spielStatistikAddFreundF, spielStatistikAccountAnsehenF, spielStatistikIstFreundF, this );
 	stat->setSchrift( schrift->getThis() );
-	stat->setBildschirm( hauptScreen->getThis() );
+	stat->setBildschirm( hauptScreen );
 	stat->setKlients( infoClient->getThis(), spielClient->getThis() );
 	stat->bereit();
 }

+ 18 - 34
KSGClient/NachLogin/Titel/TitelLeiste.cpp

@@ -137,17 +137,17 @@ TitelLeiste::TitelLeiste( Fenster *zNachLogin, Schrift *zSchrift )
     fenster->setRFarbe( 0xFFFFFFFF );
     fenster->setSize( bgr.x, 100 );
     fenster->setKBgBildZ( hintergrund );
-    fenster->addMember( close );
-    fenster->addMember( einstellungen );
-    fenster->addMember( logout );
-    fenster->addMember( accountAnsehen );
-    fenster->addMember( spielen );
-    fenster->addMember( editor );
-    fenster->addMember( miniGames );
-    fenster->addMember( news );
-    fenster->addMember( shop );
-    fenster->addMember( info );
-    fenster->addMember( version );
+    fenster->addMember( close->getThis() );
+    fenster->addMember( einstellungen->getThis() );
+    fenster->addMember( logout->getThis() );
+    fenster->addMember( accountAnsehen->getThis() );
+    fenster->addMember( spielen->getThis() );
+    fenster->addMember( editor->getThis() );
+    fenster->addMember( miniGames->getThis() );
+    fenster->addMember( news->getThis() );
+    fenster->addMember( shop->getThis() );
+    fenster->addMember( info->getThis() );
+    fenster->addMember( version->getThis() );
 
     kupfer = initTextFeld( fenster->getBreite() - 40, 70, 10, 20, zSchrift, TextFeld::Style::Text | TextFeld::Style::Center, "0" );
     silber = initTextFeld( kupfer->getX() - 40, 70, 10, 20, zSchrift, TextFeld::Style::Text | TextFeld::Style::Center, "0" );
@@ -168,17 +168,16 @@ TitelLeiste::TitelLeiste( Fenster *zNachLogin, Schrift *zSchrift )
     kupferBild->setSize( 20, 20 );
     kupferBild->setPosition( kupfer->getX() + kupfer->getBreite(), 70 );
 
-    fenster->addMember( gold );
-    fenster->addMember( silber );
-    fenster->addMember( kupfer );
-    fenster->addMember( goldBild );
-    fenster->addMember( silberBild );
-    fenster->addMember( kupferBild );
-    zNachLogin->addMember( fenster );
+    fenster->addMember( gold->getThis() );
+    fenster->addMember( silber->getThis() );
+    fenster->addMember( kupfer->getThis() );
+    fenster->addMember( goldBild->getThis() );
+    fenster->addMember( silberBild->getThis() );
+    fenster->addMember( kupferBild->getThis() );
+    zNachLogin->addMember( fenster->getThis() );
     next = new Array< int >();
     nextAnzahl = 0;
     rend = 0;
-    ref = 1;
     start();
 }
 
@@ -691,21 +690,6 @@ int TitelLeiste::getSpielenX() const
     return spielen->getX();
 }
 
-// Reference Counting
-TitelLeiste *TitelLeiste::getThis()
-{
-    ref++;
-    return this;
-}
-
-TitelLeiste *TitelLeiste::release()
-{
-    ref--;
-    if( !ref )
-        delete this;
-    return 0;
-}
-
 // Ereignisse
 bool titelLeisteSchließenME( void *p, void *obj, MausEreignis me )
 {

+ 1 - 5
KSGClient/NachLogin/Titel/TitelLeiste.h

@@ -9,7 +9,7 @@
 
 using namespace Framework;
 
-class TitelLeiste : private Thread
+class TitelLeiste : public Thread
 {
 private:
 	Knopf *close;
@@ -37,7 +37,6 @@ private:
 	TextFeld *kupfer;
 	int nextAnzahl;
 	bool rend;
-	int ref;
 
 public:
 	// Konstruktor
@@ -60,9 +59,6 @@ public:
 	bool tick(); // tick
 	// constant
 	int getSpielenX() const;
-	// Reference Counting
-	TitelLeiste *getThis();
-	TitelLeiste *release();
 };
 
 // Ereignisse

+ 0 - 16
KSGClient/NachLogin/Update/Update.cpp

@@ -12,7 +12,6 @@ Update::Update( Schrift *zSchrift, FBalken *fb, int dg, std::function< void(bool
     updateAbbrechen = 0;
 	this->dg = dg;
     this->after = after;
-	ref = 1;
 }
 
 // Destruktor
@@ -79,21 +78,6 @@ int Update::getDateiGruppe() const
     return dg;
 }
 
-// Reference Counting
-Update *Update::getThis()
-{
-	ref++;
-	return this;
-}
-
-Update *Update::release()
-{
-	ref--;
-	if( !ref )
-		delete this;
-	return 0;
-}
-
 
 // inhalt der UpdateHandler Klasse aus UpdateGUI.h
 // Konstruktor

+ 1 - 5
KSGClient/NachLogin/Update/Update.h

@@ -8,14 +8,13 @@
 
 using namespace Framework;
 
-class Update : private Thread
+class Update : public Thread
 {
 private:
 	Patcher *p;
     FBalken *fb;
 	bool updateAbbrechen;
 	int dg;
-	int ref;
     std::function< void(bool) > after;
 
 public:
@@ -31,9 +30,6 @@ public:
     void threadEnd() override;
 	// constant
     int getDateiGruppe() const;
-	// Reference Counting
-	Update *getThis();
-	Update *release();
 };
 
 class UpdateHandler

+ 33 - 47
KSGClient/Netzwerk/ChatMessageProcessor.cpp

@@ -5,7 +5,6 @@
 ChatMessageProcessor::ChatMessageProcessor()
     : Thread()
 {
-    ref = 1;
     start();
 }
 
@@ -22,12 +21,12 @@ void ChatMessageProcessor::thread()
             loginClient->trenne( 0 );
             infoClient->trenne( 0 );
             chatClient->trenne( 0 );
-            cmProcessor = cmProcessor->release();
+            cmProcessor = (ChatMessageProcessor *)cmProcessor->release();
             aktion = 4;
             break;
         case 2: // Server Ausgelastet
             aktion = 1;
-            if( nachLogin && nachLogin->zNachrichtenListe() )
+            if( nachLogin &&nachLogin->zNachrichtenListe() )
             {
                 hauptScreen->lock();
                 nachLogin->zNachrichtenListe()->addNachricht( new Text( "Server Ausgelastet" ),
@@ -38,12 +37,12 @@ void ChatMessageProcessor::thread()
             break;
         case 3: // Fehler
             hauptScreen->lock();
-            if( nachLogin && nachLogin->zNachrichtenListe() )
+            if( nachLogin &&nachLogin->zNachrichtenListe() )
                 nachLogin->zNachrichtenListe()->addNachricht( new Text( "Fehler" ), msg.message.getThis(), new Text( "Ok" ), 0 );
             hauptScreen->unlock();
             break;
         case 4: // Chat Nachricht
-            if( nachLogin && nachLogin->zChatLeiste() )
+            if( nachLogin &&nachLogin->zChatLeiste() )
             {
                 hauptScreen->lock();
                 nachLogin->zChatLeiste()->chatNachricht( msg.account, msg.message );
@@ -179,19 +178,19 @@ void ChatMessageProcessor::thread()
             break;
         case 6: // Account Status ändert sich
             hauptScreen->lock();
-            if( nachLogin && nachLogin->zNachrichtenListe() )
+            if( nachLogin &&nachLogin->zNachrichtenListe() )
                 nachLogin->zFreundesListe()->setStatus( msg.account, msg.message );
             hauptScreen->unlock();
             break;
         case 7: // Account Name ändert sich
             hauptScreen->lock();
-            if( nachLogin && nachLogin->zNachrichtenListe() )
+            if( nachLogin &&nachLogin->zNachrichtenListe() )
                 nachLogin->zFreundesListe()->setName( msg.account, msg.message );
             hauptScreen->unlock();
             break;
         case 8: // kein Freund mehr
             hauptScreen->lock();
-            if( nachLogin && nachLogin->zNachrichtenListe() )
+            if( nachLogin &&nachLogin->zNachrichtenListe() )
                 nachLogin->zFreundesListe()->removeMember( msg.account );
             hauptScreen->unlock();
             break;
@@ -204,7 +203,7 @@ void ChatMessageProcessor::thread()
                 nachricht->append( " möchte sich mit dir befreunden." );
                 int accountId = msg.account;
                 hauptScreen->lock();
-                if( nachLogin && nachLogin->zNachrichtenListe() )
+                if( nachLogin &&nachLogin->zNachrichtenListe() )
                 {
                     nachLogin->zNachrichtenListe()->addNachricht( titel, nachricht, new Text( "annehmen" ), new Text( "ablehnen" ),
                                                                   [ accountId ]()
@@ -220,12 +219,12 @@ void ChatMessageProcessor::thread()
             break;
         case 0xA: // Neuer Freund
             hauptScreen->lock();
-            if( nachLogin && nachLogin->zNachrichtenListe() )
+            if( nachLogin &&nachLogin->zNachrichtenListe() )
                 nachLogin->zFreundesListe()->addMember( msg.account );
             hauptScreen->unlock();
             break;
         case 0xB: // Freundesanfrage abgelehnt
-            if( nachLogin && nachLogin->zNachrichtenListe() )
+            if( nachLogin &&nachLogin->zNachrichtenListe() )
             {
                 Text *titel = new Text( "Freundeseinladung Abgelehnt" );
                 Text *nachricht = new Text( "" );
@@ -237,7 +236,7 @@ void ChatMessageProcessor::thread()
             }
             break;
         case 0xC: // Einladung zum Chatroom
-            if( nachLogin && nachLogin->zNachrichtenListe() )
+            if( nachLogin &&nachLogin->zNachrichtenListe() )
             {
                 Text *titel = new Text( "Chatroom Einladung" );
                 Text *nachricht = new Text( "" );
@@ -259,7 +258,7 @@ void ChatMessageProcessor::thread()
             }
             break;
         case 0xD: // Einladung zum Chatroom abgelehnt
-            if( nachLogin && nachLogin->zNachrichtenListe() )
+            if( nachLogin &&nachLogin->zNachrichtenListe() )
             {
                 Text *titel = new Text( "Chatroom Einladung Abgelehnt" );
                 Text *nachricht = new Text( "" );
@@ -274,19 +273,19 @@ void ChatMessageProcessor::thread()
             break;
         case 0xE: // Spieler betritt Chatroom
             hauptScreen->lock();
-            if( nachLogin && nachLogin->zChatLeiste() )
+            if( nachLogin &&nachLogin->zChatLeiste() )
                 nachLogin->zChatLeiste()->addSpieler( msg.chatroom, msg.account );
             hauptScreen->unlock();
             break;
         case 0xF: // Chatroom Nachricht
             hauptScreen->lock();
-            if( nachLogin && nachLogin->zChatLeiste() )
+            if( nachLogin &&nachLogin->zChatLeiste() )
                 nachLogin->zChatLeiste()->chatroomNachricht( msg.chatroom, msg.account, msg.message );
             hauptScreen->unlock();
             break;
         case 0x10: // Spieler verlässt Chatroom
             hauptScreen->lock();
-            if( nachLogin && nachLogin->zChatLeiste() )
+            if( nachLogin &&nachLogin->zChatLeiste() )
                 nachLogin->zChatLeiste()->removeSpieler( msg.chatroom, msg.account );
             hauptScreen->unlock();
             break;
@@ -314,7 +313,7 @@ void ChatMessageProcessor::thread()
             for( char i = 0; i < anzahl; i++ )
             {
                 hauptScreen->lock();
-                if( nachLogin && nachLogin->zChatLeiste() )
+                if( nachLogin &&nachLogin->zChatLeiste() )
                     nachLogin->zChatLeiste()->addSpieler( msg.chatroom, msg.ids.get( i ) );
                 hauptScreen->unlock();
             }
@@ -322,67 +321,67 @@ void ChatMessageProcessor::thread()
         }
         case 0x13: // Freund online
             hauptScreen->lock();
-            if( nachLogin && nachLogin->zFreundesListe() )
+            if( nachLogin &&nachLogin->zFreundesListe() )
                 nachLogin->zFreundesListe()->setOnline( msg.account, 1 );
             hauptScreen->unlock();
             break;
         case 0x14: // Freund offline
             hauptScreen->lock();
-            if( nachLogin && nachLogin->zFreundesListe() )
+            if( nachLogin &&nachLogin->zFreundesListe() )
                 nachLogin->zFreundesListe()->setOnline( msg.account, 0 );
             hauptScreen->unlock();
             break;
         case 0x15: // Chatroom Admin
             hauptScreen->lock();
-            if( nachLogin && nachLogin->zChatLeiste() )
+            if( nachLogin &&nachLogin->zChatLeiste() )
                 nachLogin->zChatLeiste()->setChatroomAdmin( msg.account );
             hauptScreen->unlock();
             break;
         case 0x16: // Chatroom Kick
             hauptScreen->lock();
-            if( nachLogin && nachLogin->zChatLeiste() )
+            if( nachLogin &&nachLogin->zChatLeiste() )
                 nachLogin->zChatLeiste()->removeChat( 0, msg.chatroom );
             hauptScreen->unlock();
             break;
         case 0x17: // Spieler betritt Gruppe
-            if( nachLogin && nachLogin->zSpielenFenster() )
+            if( nachLogin &&nachLogin->zSpielenFenster() )
                 nachLogin->zSpielenFenster()->spielerBetrittGruppe( msg.gruppe, msg.account );
             break;
         case 0x18: // Spieler verlässt Gruppe
-            if( nachLogin && nachLogin->zSpielenFenster() )
+            if( nachLogin &&nachLogin->zSpielenFenster() )
                 nachLogin->zSpielenFenster()->spielerVerlässtGruppe( msg.gruppe, msg.account );
             break;
         case 0x19: // gruppe Nachricht
-            if( nachLogin && nachLogin->zSpielenFenster() )
+            if( nachLogin &&nachLogin->zSpielenFenster() )
                 nachLogin->zSpielenFenster()->gruppeNachricht( msg.gruppe, msg.message );
             break;
         case 0x1A: // gruppe Angemeldet
-            if( nachLogin && nachLogin->zSpielenFenster() )
+            if( nachLogin &&nachLogin->zSpielenFenster() )
                 nachLogin->zSpielenFenster()->gruppeAnmelden( msg.gruppe );
             break;
         case 0x1B: // gruppe Abgemeldet
-            if( nachLogin && nachLogin->zSpielenFenster() )
+            if( nachLogin &&nachLogin->zSpielenFenster() )
                 nachLogin->zSpielenFenster()->gruppeAbmelden( msg.gruppe );
             break;
         case 0x1C: // gruppe Spiel starten
-            if( nachLogin && nachLogin->zSpielenFenster() )
+            if( nachLogin &&nachLogin->zSpielenFenster() )
                 nachLogin->zSpielenFenster()->setGruppeSpielStarten( msg.gruppe, msg.account == 1 );
             break;
         case 0x1D: // kick aus Gruppe
-            if( nachLogin && nachLogin->zSpielenFenster() )
+            if( nachLogin &&nachLogin->zSpielenFenster() )
                 nachLogin->zSpielenFenster()->kickAusGruppe( msg.gruppe );
             break;
         case 0x1E: // gruppe Admin
-            if( nachLogin && nachLogin->zSpielenFenster() )
+            if( nachLogin &&nachLogin->zSpielenFenster() )
                 nachLogin->zSpielenFenster()->setGruppeAdmin( msg.gruppe, msg.account );
             break;
         case 0x1F: // gruppe Einladung abgelehnt
-            if( nachLogin && nachLogin->zSpielenFenster() )
+            if( nachLogin &&nachLogin->zSpielenFenster() )
                 nachLogin->zSpielenFenster()->gruppeEinadungAbgelehnt( msg.gruppe, msg.account );
             break;
         case 0x20: // SpielServer Verbindungs Anfrage
             if( smProcessor )
-                smProcessor = smProcessor->release();
+                smProcessor = (SpielMessageProcessor *)smProcessor->release();
             if( spielClient )
                 spielClient = spielClient->release();
             spielClient = msg.client;
@@ -390,15 +389,15 @@ void ChatMessageProcessor::thread()
             smProcessor = new SpielMessageProcessor();
             break;
         case 0x21: // Gruppe Einladung abgebrochen
-            if( nachLogin && nachLogin->zSpielenFenster() )
+            if( nachLogin &&nachLogin->zSpielenFenster() )
                 nachLogin->zSpielenFenster()->gruppeEinladungAbgebrochen( msg.gruppe, msg.account );
             break;
         case 0x22: // Gruppe Einladung hinzufügen
-            if( nachLogin && nachLogin->zSpielenFenster() )
+            if( nachLogin &&nachLogin->zSpielenFenster() )
                 nachLogin->zSpielenFenster()->gruppeEinladungNeu( msg.gruppe, msg.account );
             break;
         default: // Unbekannte Servernachricht
-            if( nachLogin && nachLogin->zNachrichtenListe() )
+            if( nachLogin &&nachLogin->zNachrichtenListe() )
             {
                 hauptScreen->lock();
                 nachLogin->zNachrichtenListe()->addNachricht( new Text( "Fehler" ),
@@ -409,17 +408,4 @@ void ChatMessageProcessor::thread()
             break;
         }
     }
-}
-
-ChatMessageProcessor *ChatMessageProcessor::getThis()
-{
-    ref++;
-    return this;
-}
-
-ChatMessageProcessor *ChatMessageProcessor::release()
-{
-    if( !--ref )
-        delete this;
-    return 0;
 }

+ 0 - 5
KSGClient/Netzwerk/ChatMessageProcessor.h

@@ -6,12 +6,7 @@ using namespace Framework;
 
 class ChatMessageProcessor : public Thread
 {
-private:
-    int ref;
-
 public:
     ChatMessageProcessor();
     void thread() override;
-    ChatMessageProcessor *getThis();
-    ChatMessageProcessor *release();
 };

+ 2 - 1
KSGClient/Netzwerk/Patcher.cpp

@@ -1,6 +1,7 @@
 #include "Patcher.h"
 #include <Text.h>
 #include "../Global/Variablen.h"
+#include <Globals.h>
 
 typedef UpdaterV *( *GetUpdater )( KSGClient::PatchServerClient* );
 
@@ -38,7 +39,7 @@ bool Patcher::update( int dateiGruppe, bool *abbruch, FBalken *fortschritt, Text
     if( !updater )
     {
         if( !updateDll )
-            updateDll = dllDateien->ladeDLL( "update.dll", "data/bin/update.dll" );
+            updateDll = Framework::getDLLRegister()->ladeDLL( "update.dll", "data/bin/update.dll" );
         if( !updateDll )
         {
             updater = 0;

+ 0 - 14
KSGClient/Netzwerk/SpielMessageProcessor.cpp

@@ -4,7 +4,6 @@
 SpielMessageProcessor::SpielMessageProcessor()
     : Thread()
 {
-    ref = 1;
     start();
 }
 
@@ -112,17 +111,4 @@ void SpielMessageProcessor::thread()
         }
     }
     msg.sts->release();
-}
-
-SpielMessageProcessor *SpielMessageProcessor::getThis()
-{
-    ref++;
-    return this;
-}
-
-SpielMessageProcessor *SpielMessageProcessor::release()
-{
-    if( !--ref )
-        delete this;
-    return 0;
 }

+ 0 - 4
KSGClient/Netzwerk/SpielMessageProcessor.h

@@ -6,11 +6,7 @@ using namespace Framework;
 
 class SpielMessageProcessor : public Thread
 {
-private:
-    int ref;
 public:
     SpielMessageProcessor();
     void thread() override;
-    SpielMessageProcessor *getThis();
-    SpielMessageProcessor *release();
 };

+ 1 - 2
KSGClient/Start/Start.cpp

@@ -63,7 +63,6 @@ int KSGStart Framework::Start( Startparam p )
     fenster->setBildschirm( bildschirm->getThis() );
     fenster->setAnzeigeModus( 1 );
     fenster->setFokus();
-    bildschirm->update();
     bildschirm->render();
 
     Framework::logLine( "Schrift wird geladen..." );
@@ -87,7 +86,7 @@ int KSGStart Framework::Start( Startparam p )
 
     Framework::logLine( "Zeichen Thread wird beendet..." );
     render->beenden();
-    render = render->release();
+    render = (Render*)render->release();
 
     bildschirm->removeMember( vorLogin->zFenster() );
     bildschirm->removeMember( nachLogin );

+ 15 - 15
KSGClient/VorLogin/Account verwalten/EMail.cpp

@@ -13,35 +13,35 @@ EMail
     eMailÄndern->setMausEreignisParameter( this );
     eMailÄndern->setMausEreignis( eMailÄndernEMailÄndernME );
     initToolTip( eMailÄndern, "Account E-Mail Adresse ändern.", zSchrift->getThis(), hauptScreen );
-    zVorLoginFenster->addMember( eMailÄndern );
+    zVorLoginFenster->addMember( eMailÄndern->getThis() );
     fenster = initFenster( bildschirmmitte.x - 125, bildschirmmitte.y - 100, 250, 200, zSchrift, Fenster::Style::Erlaubt | Fenster::Style::Rahmen | Fenster::Style::Titel | Fenster::Style::TitelBuffered, "E-Mail ändern" );
     name = initTextFeld( 20, 20, 208, 20, zSchrift, TextFeld::Style::TextFeld, "Name" );
     name->setTastaturEreignisParameter( this );
     name->setTastaturEreignis( eMailÄndernNameTE );
     initToolTip( name, "Account Name.", zSchrift->getThis(), hauptScreen );
-    fenster->addMember( name );
+    fenster->addMember( name->getThis() );
     passwort = initTextFeld( 20, 50, 208, 20, zSchrift, TextFeld::Style::TextFeld, "Passwort" );
     passwort->setTastaturEreignisParameter( this );
     passwort->setTastaturEreignis( eMailÄndernPasswortTE );
     initToolTip( passwort, "Account Passwort.", zSchrift->getThis(), hauptScreen );
-    fenster->addMember( passwort );
+    fenster->addMember( passwort->getThis() );
     geheimnis = initTextFeld( 20, 80, 208, 20, zSchrift, TextFeld::Style::TextFeld, "Geheimis" );
     geheimnis->setTastaturEreignisParameter( this );
     geheimnis->setTastaturEreignis( eMailÄndernGeheimnisTE );
     initToolTip( geheimnis, "Account Geheimnis.", zSchrift->getThis(), hauptScreen );
-    fenster->addMember( geheimnis );
+    fenster->addMember( geheimnis->getThis() );
     nEMail = initTextFeld( 20, 110, 208, 20, zSchrift, TextFeld::Style::TextFeld, "neue E-Mail Adresse" );
     nEMail->setTastaturEreignisParameter( this );
     nEMail->setTastaturEreignis( eMailÄndernNEMailTE );
     initToolTip( nEMail, "Neue E-Mail Adresse.", zSchrift->getThis(), hauptScreen );
-    fenster->addMember( nEMail );
+    fenster->addMember( nEMail->getThis() );
     weiter = initKnopf( 74, 140, 100, 20, zSchrift, Knopf::Style::Sichtbar, "weiter" );
     weiter->setMausEreignisParameter( this );
     weiter->setMausEreignis( eMailÄndernWeiterME );
     nachricht = initTextFeld( 0, 5, 255, 150, zSchrift, TextFeld::Style::HCenter | TextFeld::Style::Mehrzeilig, "" );
-    fenster->addMember( nachricht );
-    fenster->addMember( weiter );
-    zVorLoginFenster->addMember( fenster );
+    fenster->addMember( nachricht->getThis() );
+    fenster->addMember( weiter->getThis() );
+    zVorLoginFenster->addMember( fenster->getThis() );
     ref = 1;
 }
 
@@ -290,30 +290,30 @@ EMailVergessen::EMailVergessen( Schrift * zSchrift, Fenster * zVorLoginFenster )
     eMailVergessen->setMausEreignisParameter( this );
     eMailVergessen->setMausEreignis( eMailVergessenEMailVergessenME );
     initToolTip( eMailVergessen, "Account E-Mail Adresse anzeigen.", zSchrift->getThis(), hauptScreen );
-    zVorLoginFenster->addMember( eMailVergessen );
+    zVorLoginFenster->addMember( eMailVergessen->getThis() );
     fenster = initFenster( bildschirmmitte.x - 125, bildschirmmitte.y - 85, 250, 170, zSchrift, Fenster::Style::Erlaubt | Fenster::Style::Rahmen | Fenster::Style::Titel | Fenster::Style::TitelBuffered, "E-Mail vergessen" );
     name = initTextFeld( 20, 20, 208, 20, zSchrift, TextFeld::Style::TextFeld, "Name" );
     name->setTastaturEreignisParameter( this );
     name->setTastaturEreignis( eMailVergessenNameTE );
     initToolTip( name, "Account Name.", zSchrift->getThis(), hauptScreen );
-    fenster->addMember( name );
+    fenster->addMember( name->getThis() );
     passwort = initTextFeld( 20, 50, 208, 20, zSchrift, TextFeld::Style::TextFeld, "Passwort" );
     passwort->setTastaturEreignisParameter( this );
     passwort->setTastaturEreignis( eMailVergessenPasswortTE );
     initToolTip( passwort, "Account Passwort.", zSchrift->getThis(), hauptScreen );
-    fenster->addMember( passwort );
+    fenster->addMember( passwort->getThis() );
     geheimnis = initTextFeld( 20, 80, 208, 20, zSchrift, TextFeld::Style::TextFeld, "Geheimis" );
     geheimnis->setTastaturEreignisParameter( this );
     geheimnis->setTastaturEreignis( eMailVergessenGeheimnisTE );
     initToolTip( geheimnis, "Account Geheimnis.", zSchrift->getThis(), hauptScreen );
-    fenster->addMember( geheimnis );
+    fenster->addMember( geheimnis->getThis() );
     weiter = initKnopf( 74, 110, 100, 20, zSchrift, Knopf::Style::Sichtbar, "weiter" );
     weiter->setMausEreignisParameter( this );
     weiter->setMausEreignis( eMailVergessenWeiterME );
     nachricht = initTextFeld( 0, 5, 255, 150, zSchrift, TextFeld::Style::HCenter | TextFeld::Style::Mehrzeilig, "" );
-    fenster->addMember( nachricht );
-    fenster->addMember( weiter );
-    zVorLoginFenster->addMember( fenster );
+    fenster->addMember( nachricht->getThis() );
+    fenster->addMember( weiter->getThis() );
+    zVorLoginFenster->addMember( fenster->getThis() );
     ref = 1;
 }
 

+ 14 - 14
KSGClient/VorLogin/Account verwalten/Geheimnis.cpp

@@ -13,35 +13,35 @@ Geheimnis
     geheimnisÄndern->setMausEreignisParameter( this );
     geheimnisÄndern->setMausEreignis( geheimnisÄndernGeheimnisÄndernME );
     initToolTip( geheimnisÄndern, "Account Geheimnis ändern.", zSchrift->getThis(), hauptScreen );
-    zVorLoginFenster->addMember( geheimnisÄndern );
+    zVorLoginFenster->addMember( geheimnisÄndern->getThis() );
     fenster = initFenster( bildschirmmitte.x - 125, bildschirmmitte.y - 100, 250, 200, zSchrift, Fenster::Style::Erlaubt | Fenster::Style::Rahmen | Fenster::Style::Titel | Fenster::Style::TitelBuffered, "Geheimnis ändern" );
     name = initTextFeld( 20, 20, 208, 20, zSchrift, TextFeld::Style::TextFeld, "Name" );
     name->setTastaturEreignisParameter( this );
     name->setTastaturEreignis( geheimnisÄndernNameTE );
     initToolTip( name, "Account Name.", zSchrift->getThis(), hauptScreen );
-    fenster->addMember( name );
+    fenster->addMember( name->getThis() );
     passwort = initTextFeld( 20, 50, 208, 20, zSchrift, TextFeld::Style::TextFeld, "Passwort" );
     passwort->setTastaturEreignisParameter( this );
     passwort->setTastaturEreignis( geheimnisÄndernPasswortTE );
     initToolTip( passwort, "Account Passwort.", zSchrift->getThis(), hauptScreen );
-    fenster->addMember( passwort );
+    fenster->addMember( passwort->getThis() );
     geheimnis = initTextFeld( 20, 80, 208, 20, zSchrift, TextFeld::Style::TextFeld, "Geheimis" );
     geheimnis->setTastaturEreignisParameter( this );
     geheimnis->setTastaturEreignis( geheimnisÄndernGeheimnisTE );
     initToolTip( geheimnis, "Account Geheimni.", zSchrift->getThis(), hauptScreen );
-    fenster->addMember( geheimnis );
+    fenster->addMember( geheimnis->getThis() );
     nGeheimnis = initTextFeld( 20, 110, 208, 20, zSchrift, TextFeld::Style::TextFeld, "neues Geheimnis" );
     nGeheimnis->setTastaturEreignisParameter( this );
     nGeheimnis->setTastaturEreignis( geheimnisÄndernNGeheimnisTE );
     initToolTip( nGeheimnis, "Neues Account Geheimnis.", zSchrift->getThis(), hauptScreen );
-    fenster->addMember( nGeheimnis );
+    fenster->addMember( nGeheimnis->getThis() );
     weiter = initKnopf( 74, 140, 100, 20, zSchrift, Knopf::Style::Sichtbar, "weiter" );
     weiter->setMausEreignisParameter( this );
     weiter->setMausEreignis( geheimnisÄndernWeiterME );
     nachricht = initTextFeld( 0, 5, 255, 150, zSchrift, TextFeld::Style::HCenter | TextFeld::Style::Mehrzeilig, "" );
-    fenster->addMember( nachricht );
-    fenster->addMember( weiter );
-    zVorLoginFenster->addMember( fenster );
+    fenster->addMember( nachricht->getThis() );
+    fenster->addMember( weiter->getThis() );
+    zVorLoginFenster->addMember( fenster->getThis() );
     ref = 1;
 }
 
@@ -288,25 +288,25 @@ GeheimnisVergessen::GeheimnisVergessen( Schrift * zSchrift, Fenster * zVorLoginF
     geheimnisVergessen->setMausEreignisParameter( this );
     geheimnisVergessen->setMausEreignis( geheimnisVergessenGeheimnisVergessenME );
     initToolTip( geheimnisVergessen, "Account Geheimnis per E-Mail senden.", zSchrift->getThis(), hauptScreen );
-    zVorLoginFenster->addMember( geheimnisVergessen );
+    zVorLoginFenster->addMember( geheimnisVergessen->getThis() );
     fenster = initFenster( bildschirmmitte.x - 125, bildschirmmitte.y - 70, 250, 140, zSchrift, Fenster::Style::Erlaubt | Fenster::Style::Rahmen | Fenster::Style::Titel | Fenster::Style::TitelBuffered, "Geheimnis vergessen" );
     name = initTextFeld( 20, 20, 208, 20, zSchrift, TextFeld::Style::TextFeld, "Name" );
     name->setTastaturEreignisParameter( this );
     name->setTastaturEreignis( geheimnisVergessenNameTE );
     initToolTip( name, "Account Name.", zSchrift->getThis(), hauptScreen );
-    fenster->addMember( name );
+    fenster->addMember( name->getThis() );
     passwort = initTextFeld( 20, 50, 208, 20, zSchrift, TextFeld::Style::TextFeld, "Passwort" );
     passwort->setTastaturEreignisParameter( this );
     passwort->setTastaturEreignis( geheimnisVergessenPasswortTE );
     initToolTip( passwort, "Account Passwort.", zSchrift->getThis(), hauptScreen );
-    fenster->addMember( passwort );
+    fenster->addMember( passwort->getThis() );
     weiter = initKnopf( 74, 80, 100, 20, zSchrift, Knopf::Style::Sichtbar, "weiter" );
     weiter->setMausEreignisParameter( this );
     weiter->setMausEreignis( geheimnisVergessenWeiterME );
     nachricht = initTextFeld( 0, 5, 255, 150, zSchrift, TextFeld::Style::HCenter | TextFeld::Style::Mehrzeilig, "" );
-    fenster->addMember( nachricht );
-    fenster->addMember( weiter );
-    zVorLoginFenster->addMember( fenster );
+    fenster->addMember( nachricht->getThis() );
+    fenster->addMember( weiter->getThis() );
+    zVorLoginFenster->addMember( fenster->getThis() );
     ref = 1;
 }
 

+ 6 - 6
KSGClient/VorLogin/Account verwalten/Name.cpp

@@ -13,25 +13,25 @@ NameVergessen::NameVergessen( Schrift *zSchrift, Fenster *zVorLoginFenster )
     nameVergessen->setMausEreignisParameter( this );
     nameVergessen->setMausEreignis( nameVergessenNameVergessenME );
     initToolTip( nameVergessen, "Accoutnt Name per E-MAil senden.", zSchrift->getThis(), hauptScreen );
-    zVorLoginFenster->addMember( nameVergessen );
+    zVorLoginFenster->addMember( nameVergessen->getThis() );
     fenster = initFenster( bildschirmmitte.x - 125, bildschirmmitte.y - 70, 250, 140, zSchrift, Fenster::Style::Erlaubt | Fenster::Style::Rahmen | Fenster::Style::Titel | Fenster::Style::TitelBuffered, "Name vergessen" );
     passwort = initTextFeld( 20, 20, 208, 20, zSchrift, TextFeld::Style::TextFeld, "Passwort" );
     passwort->setTastaturEreignisParameter( this );
     passwort->setTastaturEreignis( nameVergessenPasswortTE );
     initToolTip( passwort, "Accoutnt Passwort.", zSchrift->getThis(), hauptScreen );
-    fenster->addMember( passwort );
+    fenster->addMember( passwort->getThis() );
     geheimnis = initTextFeld( 20, 50, 208, 20, zSchrift, TextFeld::Style::TextFeld, "Geheimis" );
     geheimnis->setTastaturEreignisParameter( this );
     geheimnis->setTastaturEreignis( nameVergessenGeheimnisTE );
     initToolTip( geheimnis, "Account Geheimnis.", zSchrift->getThis(), hauptScreen );
-    fenster->addMember( geheimnis );
+    fenster->addMember( geheimnis->getThis() );
     weiter = initKnopf( 74, 80, 100, 20, zSchrift, Knopf::Style::Sichtbar, "weiter" );
     weiter->setMausEreignisParameter( this );
     weiter->setMausEreignis( nameVergessenWeiterME );
     nachricht = initTextFeld( 0, 5, 255, 150, zSchrift, TextFeld::Style::HCenter | TextFeld::Style::Mehrzeilig, "" );
-    fenster->addMember( nachricht );
-    fenster->addMember( weiter );
-    zVorLoginFenster->addMember( fenster );
+    fenster->addMember( nachricht->getThis() );
+    fenster->addMember( weiter->getThis() );
+    zVorLoginFenster->addMember( fenster->getThis() );
     ref = 1;
 }
 

+ 15 - 15
KSGClient/VorLogin/Account verwalten/Passwort.cpp

@@ -13,40 +13,40 @@ Passwort
     passwortÄndern->setMausEreignisParameter( this );
     passwortÄndern->setMausEreignis( passwortÄndernPasswortÄndernME );
     initToolTip( passwortÄndern, "Account Passwort ändern.", zSchrift->getThis(), hauptScreen );
-    zVorLoginFenster->addMember( passwortÄndern );
+    zVorLoginFenster->addMember( passwortÄndern->getThis() );
     fenster = initFenster( bildschirmmitte.x - 125, bildschirmmitte.y - 115, 250, 230, zSchrift, Fenster::Style::Erlaubt | Fenster::Style::Rahmen | Fenster::Style::Titel | Fenster::Style::TitelBuffered, "Passwort ändern" );
     name = initTextFeld( 20, 20, 208, 20, zSchrift, TextFeld::Style::TextFeld, "Name" );
     name->setTastaturEreignisParameter( this );
     name->setTastaturEreignis( passwortÄndernNameTE );
     initToolTip( name, "Account Name.", zSchrift->getThis(), hauptScreen );
-    fenster->addMember( name );
+    fenster->addMember( name->getThis() );
     passwort = initTextFeld( 20, 50, 208, 20, zSchrift, TextFeld::Style::TextFeld, "Passwort" );
     passwort->setTastaturEreignisParameter( this );
     passwort->setTastaturEreignis( passwortÄndernPasswortTE );
     initToolTip( passwort, "Account Passwort.", zSchrift->getThis(), hauptScreen );
-    fenster->addMember( passwort );
+    fenster->addMember( passwort->getThis() );
     neuPasswort = initTextFeld( 20, 80, 208, 20, zSchrift, TextFeld::Style::TextFeld, "neues Passwort" );
     neuPasswort->setTastaturEreignisParameter( this );
     neuPasswort->setTastaturEreignis( passwortÄndernNeuPasswortTE );
     initToolTip( neuPasswort, "Neues Account Passwort.", zSchrift->getThis(), hauptScreen );
-    fenster->addMember( neuPasswort );
+    fenster->addMember( neuPasswort->getThis() );
     neuPasswort2 = initTextFeld( 20, 110, 208, 20, zSchrift, TextFeld::Style::TextFeld, "Passwort wiederholen" );
     neuPasswort2->setTastaturEreignisParameter( this );
     neuPasswort2->setTastaturEreignis( passwortÄndernNeuPasswort2TE );
     initToolTip( neuPasswort2, "Neues Passwort Wiederhohlen.", zSchrift->getThis(), hauptScreen );
-    fenster->addMember( neuPasswort2 );
+    fenster->addMember( neuPasswort2->getThis() );
     geheimnis = initTextFeld( 20, 140, 208, 20, zSchrift, TextFeld::Style::TextFeld, "Geheimis" );
     geheimnis->setTastaturEreignisParameter( this );
     geheimnis->setTastaturEreignis( passwortÄndernGeheimnisTE );
     initToolTip( geheimnis, "Account Geheimnis.", zSchrift->getThis(), hauptScreen );
-    fenster->addMember( geheimnis );
+    fenster->addMember( geheimnis->getThis() );
     weiter = initKnopf( 74, 170, 100, 20, zSchrift, Knopf::Style::Sichtbar, "weiter" );
     weiter->setMausEreignisParameter( this );
     weiter->setMausEreignis( passwortÄndernWeiterME );
     nachricht = initTextFeld( 0, 5, 255, 150, zSchrift, TextFeld::Style::HCenter | TextFeld::Style::Mehrzeilig, "" );
-    fenster->addMember( nachricht );
-    fenster->addMember( weiter );
-    zVorLoginFenster->addMember( fenster );
+    fenster->addMember( nachricht->getThis() );
+    fenster->addMember( weiter->getThis() );
+    zVorLoginFenster->addMember( fenster->getThis() );
     ref = 1;
 }
 
@@ -319,25 +319,25 @@ PasswortVergessen::PasswortVergessen( Schrift * zSchrift, Fenster * zVorLoginFen
     passwortVergessen->setMausEreignisParameter( this );
     passwortVergessen->setMausEreignis( passwortVergessenPasswortVergessenME );
     initToolTip( passwortVergessen, "Account Passwort per E-Mail senden.", zSchrift->getThis(), hauptScreen );
-    zVorLoginFenster->addMember( passwortVergessen );
+    zVorLoginFenster->addMember( passwortVergessen->getThis() );
     fenster = initFenster( bildschirmmitte.x - 125, bildschirmmitte.y - 70, 250, 140, zSchrift, Fenster::Style::Erlaubt | Fenster::Style::Rahmen | Fenster::Style::Titel | Fenster::Style::TitelBuffered, "Passwort vergessen" );
     name = initTextFeld( 20, 20, 208, 20, zSchrift, TextFeld::Style::TextFeld, "Name" );
     name->setTastaturEreignisParameter( this );
     name->setTastaturEreignis( passwortVergessenNameTE );
     initToolTip( name, "Account Name.", zSchrift->getThis(), hauptScreen );
-    fenster->addMember( name );
+    fenster->addMember( name->getThis() );
     geheimnis = initTextFeld( 20, 50, 208, 20, zSchrift, TextFeld::Style::TextFeld, "Geheimis" );
     geheimnis->setTastaturEreignisParameter( this );
     geheimnis->setTastaturEreignis( passwortVergessenGeheimnisTE );
     initToolTip( geheimnis, "Account geheimnis.", zSchrift->getThis(), hauptScreen );
-    fenster->addMember( geheimnis );
+    fenster->addMember( geheimnis->getThis() );
     weiter = initKnopf( 74, 80, 100, 20, zSchrift, Knopf::Style::Sichtbar, "weiter" );
     weiter->setMausEreignisParameter( this );
     weiter->setMausEreignis( passwortVergessenWeiterME );
     nachricht = initTextFeld( 0, 5, 255, 150, zSchrift, TextFeld::Style::HCenter | TextFeld::Style::Mehrzeilig, "" );
-    fenster->addMember( nachricht );
-    fenster->addMember( weiter );
-    zVorLoginFenster->addMember( fenster );
+    fenster->addMember( nachricht->getThis() );
+    fenster->addMember( weiter->getThis() );
+    zVorLoginFenster->addMember( fenster->getThis() );
     ref = 1;
 }
 

+ 13 - 13
KSGClient/VorLogin/Account verwalten/Registrierung.cpp

@@ -14,37 +14,37 @@ Registrierung::Registrierung( Schrift *zSchrift, Fenster *zVorLoginFenster )
     registrierung->setMausEreignisParameter( this );
     registrierung->setMausEreignis( registrierungRegistrierungME );
     initToolTip( registrierung, "Account erstellen.", zSchrift->getThis(), hauptScreen );
-    zVorLoginFenster->addMember( registrierung );
+    zVorLoginFenster->addMember( registrierung->getThis() );
     fenster = initFenster( bildschirmGröße.x / 2 - 175, bildschirmGröße.y / 2 - 131, 350, 262, zSchrift, Fenster::Style::Erlaubt | Fenster::Style::Rahmen | Fenster::Style::Titel | Fenster::Style::TitelBuffered, "Account erstellen" );
     name = initTextFeld( 74, 20, 200, 20, zSchrift, TextFeld::Style::TextFeld, "Account Name" );
     name->setTastaturEreignisParameter( this );
     name->setTastaturEreignis( registrierungNameTE );
     initToolTip( name, "Account Name.", zSchrift->getThis(), hauptScreen );
-    fenster->addMember( name );
+    fenster->addMember( name->getThis() );
     passwort = initTextFeld( 74, 50, 200, 20, zSchrift, TextFeld::Style::TextFeld, "Account Passwort" );
     passwort->setTastaturEreignisParameter( this );
     passwort->setTastaturEreignis( registrierungPasswortTE );
     initToolTip( passwort, "Account Passwort.", zSchrift->getThis(), hauptScreen );
-    fenster->addMember( passwort );
+    fenster->addMember( passwort->getThis() );
     passwort2 = initTextFeld( 74, 80, 200, 20, zSchrift, TextFeld::Style::TextFeld, "Passwort wiederholen" );
     passwort2->setTastaturEreignisParameter( this );
     passwort2->setTastaturEreignis( registrierungPasswort2TE );
     initToolTip( passwort2, "Account Passwort wiederhohlen.", zSchrift->getThis(), hauptScreen );
-    fenster->addMember( passwort2 );
+    fenster->addMember( passwort2->getThis() );
     geheimnis = initTextFeld( 10, 110, 328, 20, zSchrift, TextFeld::Style::TextFeld, "Account Geheimnis" );
     geheimnis->setTastaturEreignisParameter( this );
     geheimnis->setTastaturEreignis( registrierungGeheimnisTE );
     initToolTip( geheimnis, "Gib etwas ein, was nur du jederzeit weißt.\n(zweites sicherheitspasswort Passwort)", zSchrift->getThis(), hauptScreen );
-    fenster->addMember( geheimnis );
+    fenster->addMember( geheimnis->getThis() );
     eMail = initTextFeld( 74, 140, 200, 20, zSchrift, TextFeld::Style::TextFeld, "E-Mail Addresse" );
     eMail->setTastaturEreignisParameter( this );
     eMail->setTastaturEreignis( registrierungEMailTE );
     initToolTip( eMail, "E-Mail Addresse.", zSchrift->getThis(), hauptScreen );
-    fenster->addMember( eMail );
+    fenster->addMember( eMail->getThis() );
     geburtsdatum = initTextFeld( 40, 170, 85, 20, zSchrift, TextFeld::Style::Text, "Geburtsdatum:" );
-    fenster->addMember( geburtsdatum );
+    fenster->addMember( geburtsdatum->getThis() );
     text = initTextFeld( 0, 5, 250, 150, zSchrift, TextFeld::Style::Mehrzeilig | TextFeld::Style::HCenter, "" );
-    fenster->addMember( text );
+    fenster->addMember( text->getThis() );
     gbdTag = new AuswahlBox();
     gbdTag->setStyle( AuswahlBox::Style::Sichtbar | AuswahlBox::Style::Erlaubt | AuswahlBox::Style::Rahmen | AuswahlBox::Style::MausBuffer | AuswahlBox::Style::AuswahlBuffer | AuswahlBox::Style::MaxHeight | AuswahlBox::Style::VScroll | AuswahlBox::Style::Hintergrund );
     gbdTag->setPosition( 130, 167 );
@@ -96,11 +96,11 @@ Registrierung::Registrierung( Schrift *zSchrift, Fenster *zVorLoginFenster )
     weiter = initKnopf( 124, 200, 100, 20, zSchrift, Knopf::Style::Sichtbar, "Weiter" );
     weiter->setMausEreignisParameter( this );
     weiter->setMausEreignis( registrierungWeiterME );
-    fenster->addMember( weiter );
-    zVorLoginFenster->addMember( fenster );
-    fenster->addMember( gbdTag );
-    fenster->addMember( gbdMonat );
-    fenster->addMember( gbdJahr );
+    fenster->addMember( weiter->getThis() );
+    zVorLoginFenster->addMember( fenster->getThis() );
+    fenster->addMember( gbdTag->getThis() );
+    fenster->addMember( gbdMonat->getThis() );
+    fenster->addMember( gbdJahr->getThis() );
     ref = 1;
 }
 

+ 7 - 7
KSGClient/VorLogin/Account verwalten/Unregistrierung.cpp

@@ -13,30 +13,30 @@ Unregistrierung::Unregistrierung( Schrift *zSchrift, Fenster *zVorLoginFenster )
     unregistrierung->setMausEreignisParameter( this );
     unregistrierung->setMausEreignis( unregistrierungUnregistrierungME );
     initToolTip( unregistrierung, "Account für alle Zeiten entfernen.", zSchrift->getThis(), hauptScreen );
-    zVorLoginFenster->addMember( unregistrierung );
+    zVorLoginFenster->addMember( unregistrierung->getThis() );
     fenster = initFenster( bildschirmGröße.x / 2 - 125, bildschirmGröße.y / 2 - 85, 250, 170, zSchrift, Fenster::Style::Erlaubt | Fenster::Style::Rahmen | Fenster::Style::Titel | Fenster::Style::TitelBuffered, "Account remove" );
     name = initTextFeld( 24, 20, 200, 20, zSchrift, TextFeld::Style::TextFeld, "Account Name" );
     name->setTastaturEreignisParameter( this );
     name->setTastaturEreignis( unregistrierungNameTE );
     initToolTip( name, "Account Name eingeben.", zSchrift->getThis(), hauptScreen );
-    fenster->addMember( name );
+    fenster->addMember( name->getThis() );
     passwort = initTextFeld( 24, 50, 200, 20, zSchrift, TextFeld::Style::TextFeld, "Account Passwort" );
     passwort->setTastaturEreignisParameter( this );
     passwort->setTastaturEreignis( unregistrierungPasswortTE );
     initToolTip( passwort, "Account Passwort eingeben.", zSchrift->getThis(), hauptScreen );
-    fenster->addMember( passwort );
+    fenster->addMember( passwort->getThis() );
     geheimnis = initTextFeld( 24, 80, 200, 20, zSchrift, TextFeld::Style::TextFeld, "Account Geheimnis" );
     geheimnis->setTastaturEreignisParameter( this );
     geheimnis->setTastaturEreignis( unregistrierungGeheimnisTE );
     initToolTip( geheimnis, "Account Geheimnis eingeben.", zSchrift->getThis(), hauptScreen );
-    fenster->addMember( geheimnis );
+    fenster->addMember( geheimnis->getThis() );
     weiter = initKnopf( 74, 110, 100, 20, zSchrift, Knopf::Style::Sichtbar, "Weiter" );
     weiter->setMausEreignisParameter( this );
     weiter->setMausEreignis( unregistrierungWeiterME );
-    fenster->addMember( weiter );
+    fenster->addMember( weiter->getThis() );
     text = initTextFeld( 0, 5, 250, 170, zSchrift, TextFeld::Style::Mehrzeilig | TextFeld::Style::HCenter, "" );
-    fenster->addMember( text );
-    zVorLoginFenster->addMember( fenster );
+    fenster->addMember( text->getThis() );
+    zVorLoginFenster->addMember( fenster->getThis() );
     ref = 1;
 }
 

+ 9 - 9
KSGClient/VorLogin/Login/Login.cpp

@@ -13,39 +13,39 @@ Login::Login( Schrift *zSchrift, Fenster *vorLoginFenster )
 	login->setMausEreignisParameter( this );
 	login->setMausEreignis( loginLoginME );
 	initToolTip( login, "Einloggen.", zSchrift->getThis(), hauptScreen );
-	vorLoginFenster->addMember( login );
+	vorLoginFenster->addMember( login->getThis() );
 	fenster = initFenster( bildschirmGröße.x / 2 - 125, bildschirmGröße.y / 2 - 75, 250, 150, zSchrift, Fenster::Style::Sichtbar | Fenster::Style::Erlaubt | Fenster::Style::Rahmen | Fenster::Style::Titel | Fenster::Style::TitelBuffered, "Login" );
 	name = initTextFeld( 20, 20, 208, 20, zSchrift, TextFeld::Style::TextFeld, "Name" );
 	name->setTastaturEreignisParameter( this );
 	name->setTastaturEreignis( loginNameTE );
 	initToolTip( name, "Account Name.", zSchrift->getThis(), hauptScreen );
-	fenster->addMember( name );
+	fenster->addMember( name->getThis() );
 	passwort = initTextFeld( 20, 55, 208, 20, zSchrift, TextFeld::Style::TextFeld, "Passwort" );
 	passwort->setTastaturEreignisParameter( this );
 	passwort->setTastaturEreignis( loginPasswortTE );
 	initToolTip( passwort, "Account Passwort.", zSchrift->getThis(), hauptScreen );
-	fenster->addMember( passwort );
+	fenster->addMember( passwort->getThis() );
 	weiter = initKnopf( 75, 90, 100, 20, zSchrift, Knopf::Style::Sichtbar, "Login" );
 	weiter->setMausEreignisParameter( this );
 	weiter->setMausEreignis( loginWeiterME );
-	fenster->addMember( weiter );
+	fenster->addMember( weiter->getThis() );
 	nachricht = initTextFeld( 5, 5, 238, 90, zSchrift, TextFeld::Style::HCenter | TextFeld::Style::Mehrzeilig, "" );
-	fenster->addMember( nachricht );
+	fenster->addMember( nachricht->getThis() );
 	geheimnis = initTextFeld( 20, 55, 208, 20, zSchrift, TextFeld::Style::TextFeld, "Geheimnis" );
 	geheimnis->removeStyle( TextFeld::Style::Sichtbar );
 	geheimnis->setTastaturEreignisParameter( this );
 	geheimnis->setTastaturEreignis( loginGeheimnisTE );
 	initToolTip( geheimnis, "Account Geheimnis.", zSchrift->getThis(), hauptScreen );
-	fenster->addMember( geheimnis );
+	fenster->addMember( geheimnis->getThis() );
 	abbrechen = initKnopf( 10, 98, 100, 20, zSchrift, 0, "Abbrechen" );
 	abbrechen->setMausEreignisParameter( this );
 	abbrechen->setMausEreignis( loginAbbrechenME );
-	fenster->addMember( abbrechen );
+	fenster->addMember( abbrechen->getThis() );
 	ok = initKnopf( 138, 98, 100, 20, zSchrift, 0, "Ok" );
 	ok->setMausEreignisParameter( this );
 	ok->setMausEreignis( loginOkME );
-	fenster->addMember( ok );
-	vorLoginFenster->addMember( fenster );
+	fenster->addMember( ok->getThis() );
+	vorLoginFenster->addMember( fenster->getThis() );
 	MausEreignis me;
 	me.id = ME_RLinks;
 	loginME( 0, me );

+ 2 - 2
KSGClient/VorLogin/VorLogin.cpp

@@ -49,7 +49,7 @@ void VorLogin::setSichtbar( bool s ) // Setzt die Sichtbarkeit der VorLogin Ober
         beenden = initKnopf( 10, 10, 130, 30, schrift, Knopf::Style::Sichtbar, "Beenden" );
         beenden->setMausEreignis( VorLoginBeendenME );
         initToolTip( beenden, "Beendet den Kolja-Strohm Games Client.", schrift->getThis(), bildschirm );
-        fenster->addMember( beenden );
+        fenster->addMember( beenden->getThis() );
         login = new Login( schrift, fenster );
         eMailÄndern = new EMailÄndern( schrift, fenster );
         eMailVergessen = new EMailVergessen( schrift, fenster );
@@ -60,7 +60,7 @@ void VorLogin::setSichtbar( bool s ) // Setzt die Sichtbarkeit der VorLogin Ober
         passwortVergessen = new PasswortVergessen( schrift, fenster );
         registrierung = new Registrierung( schrift, fenster );
         unregistrierung = new Unregistrierung( schrift, fenster );
-        bildschirm->addMember( fenster );
+        bildschirm->addMember( fenster->getThis() );
     }
     else
     {