Pārlūkot izejas kodu

Bessere verwaltung von geladenen gui bildern

Kolja Strohm 5 gadi atpakaļ
vecāks
revīzija
f020e64f62

+ 46 - 109
KSGClient/Global/Bilder.cpp

@@ -1,124 +1,61 @@
 #include "Bilder.h"
+#include <DateiSystem.h>
 
 // Inhalt der Bilder Klasse aus Bilder.h
 // Konstruktor
 Bilder::Bilder()
 {
-	next = 0;
-	name = new Text( "" );
-	bild = 0;
+    bilder = new RCArray< Bild >();
+    paths = new RCArray< Text >();
+    ref = 1;
 }
 
 // Destruktor
 Bilder::~Bilder()
 {
-	if( bild )
-		bild->release();
-	name->release();
-	delete (Bilder*)next;
+    bilder->release();
+    paths->release();
 }
 
 // nicht constant
-bool Bilder::add( const char *name, Bild *bild )
-{
-	if( this->name->istGleich( name ) )
-	{
-		bild->release();
-		return 0;
-	}
-	if( !this->bild )
-	{
-		this->name->setText( name );
-		this->bild = bild;
-		return 1;
-	}
-	if( !next )
-		next = new Bilder();
-	return next->add( name, bild );
-}
-
-bool Bilder::set( const char *name, Bild *bild )
-{
-	if( this->name->istGleich( name ) )
-	{
-		this->bild->release();
-		this->bild = bild;
-		return 1;
-	}
-	if( !next )
-	{
-		bild->release();
-		return 0;
-	}
-	return next->set( name, bild );
-}
-
-bool Bilder::remove( const char *name )
-{
-	if( this->name->istGleich( name ) )
-	{
-		this->bild->release();
-		this->bild = next->zThis();
-		this->name->setText( ((Bilder*)next)->name );
-		BilderV *tmp = next->zNext();
-		next->setNext( 0 );
-		next->release();
-		next = tmp;
-		return 1;
-	}
-	if( !next )
-		return 0;
-	return next->remove( name );
-}
-
-void Bilder::setNext( BilderV *next )
-{
-	this->next = next;
-}
-
-void Bilder::deleteAll()
-{
-	bild = bild->release();
-	name->setText( "" );
-	next->release();
-	next = 0;
-}
-
-void Bilder::release()
-{
-	delete this;
-}
-
-// constant
-Bild *Bilder::get( const char *name ) const
-{
-	if( this->name->istGleich( name ) )
-		return bild ? bild->getThis() : 0;
-	if( !next )
-		return 0;
-	return next->get( name );
-}
-
-Bild *Bilder::z( const char *name ) const
-{
-	if( this->name->istGleich( name ) )
-		return bild;
-	if( !next )
-		return 0;
-	return next->get( name );
-}
-
-Bild *Bilder::zThis() const
-{
-	return bild;
-}
-
-BilderV *Bilder::zNext() const
-{
-	return next;
-}
-
-char *Bilder::getName() const
-{
-	return name->getText();
+Bild *Bilder::get( const char *path )
+{
+    c.lock();
+    int index = 0;
+    for( auto i = paths->getIterator(); i; i++, index++ )
+    {
+        if( i->istGleich( path ) )
+        {
+            c.unlock();
+            return bilder->get( index );
+        }
+    }
+    Text p( path );
+    p.ersetzen( "\\", "/" );
+    LTDBDatei dat;
+    dat.setDatei( p.getTeilText( 0, p.positionVon( "/", p.anzahlVon( "/" ) - 1 ) ) );
+    dat.leseDaten( 0 );
+    Bild *b = dat.laden( 0, p.getTeilText( p.positionVon( "/", p.anzahlVon( "/" ) - 1 ) + 1 ) );
+    if( !b )
+    {
+        c.unlock();
+        return 0;
+    }
+    paths->add( new Text( path ) );
+    bilder->add( b->getThis() );
+    c.unlock();
+    return b;
+}
+
+BilderV *Bilder::getThis()
+{
+    ref++;
+    return this;
+}
+
+BilderV *Bilder::release()
+{
+    if( !--ref )
+        delete this;
+    return 0;
 }

+ 8 - 15
KSGClient/Global/Bilder.h

@@ -5,15 +5,17 @@
 #include <Text.h>
 #include <Bild.h>
 #include <BilderV.h>
+#include <Array.h>
 
 using namespace Framework;
 
 class Bilder : public BilderV
 {
 private:
-	Text *name;
-	Bild *bild;
-	BilderV *next;
+    RCArray< Bild > *bilder;
+    RCArray< Text > *paths;
+    Critical c;
+    int ref;
 
 public:
 	// Konstruktor
@@ -21,18 +23,9 @@ public:
 	// Destruktor
 	~Bilder();
 	// nicht constant
-	virtual bool add( const char *name, Bild *bild );
-	virtual bool set( const char *name, Bild *bild );
-	virtual bool remove( const char *name );
-	virtual void setNext( BilderV *next );
-	virtual void deleteAll();
-	virtual void release();
-	// constant
-	virtual Bild *get( const char *name ) const;
-	virtual Bild *z( const char *name ) const;
-	virtual Bild *zThis() const;
-	virtual BilderV *zNext() const;
-	virtual char *getName() const;
+    virtual Bild *get( const char *path ) override;
+    virtual BilderV *getThis() override;
+	virtual BilderV *release() override;
 };
 
 #endif

+ 213 - 231
KSGClient/Global/Initialisierung.cpp

@@ -7,70 +7,70 @@
 
 Knopf *initKnopf( int x, int y, int br, int hö, Schrift *zSchrift, __int64 style, char *titel )
 {
-	Knopf *ret = new Knopf();
-	ret->addStyle( style );
-	ret->setPosition( x, y );
-	ret->setSize( br, hö );
-	if( zSchrift )
-		ret->setSchriftZ( zSchrift->getThis() );
-	ret->setText( titel );
-	return ret;
+    Knopf *ret = new Knopf();
+    ret->addStyle( style );
+    ret->setPosition( x, y );
+    ret->setSize( br, hö );
+    if( zSchrift )
+        ret->setSchriftZ( zSchrift->getThis() );
+    ret->setText( titel );
+    return ret;
 }
 
-KontrollKnopf *initKontrollKnopf( int x, int y, int br, int hö, Schrift *zSchrift, __int64 style, char *txt )
+KontrollKnopf *initKontrollKnopf( int x, int y, int br, int hö, Schrift * zSchrift, __int64 style, char *txt )
 {
-	KontrollKnopf *ret = new KontrollKnopf();
+    KontrollKnopf *ret = new KontrollKnopf();
     ret->setMausEreignis( _ret1ME );
-	ret->setStyle( style );
-	ret->setSchriftZ( zSchrift->getThis() );
-	ret->setText( txt );
-	ret->setSText( txt );
-	ret->setSFarbe( 0xFFFFFFFF );
-	ret->setSSize( 12 );
-	if( ret->hatStyle( TextFeld::Style::Buffered ) )
-	{
-		ret->setAlphaFeldFarbe( 0x5500FF00 );
-		ret->setAlphaFeldStrength( -5 );
-	}
-	if( ret->hatStyle( TextFeld::Style::Rahmen ) )
-	{
-		ret->setRahmenBreite( 1 );
-		ret->setRahmenFarbe( 0xFF00FF00 );
-	}
-	ret->setPosition( x, y );
-	ret->setSize( br, hö );
-	ret->loadData( "data/bilder/system.ltdb" );
-	return ret;
+    ret->setStyle( style );
+    ret->setSchriftZ( zSchrift->getThis() );
+    ret->setText( txt );
+    ret->setSText( txt );
+    ret->setSFarbe( 0xFFFFFFFF );
+    ret->setSSize( 12 );
+    if( ret->hatStyle( TextFeld::Style::Buffered ) )
+    {
+        ret->setAlphaFeldFarbe( 0x5500FF00 );
+        ret->setAlphaFeldStrength( -5 );
+    }
+    if( ret->hatStyle( TextFeld::Style::Rahmen ) )
+    {
+        ret->setRahmenBreite( 1 );
+        ret->setRahmenFarbe( 0xFF00FF00 );
+    }
+    ret->setPosition( x, y );
+    ret->setSize( br, hö );
+    ret->loadData( "data/bilder/system.ltdb" );
+    return ret;
 }
 
-Fenster *initFenster( int x, int y, int br, int hö, Schrift *zSchrift, __int64 style, char *titel )
+Fenster *initFenster( int x, int y, int br, int hö, Schrift * zSchrift, __int64 style, char *titel )
 {
-	Fenster *ret = new Fenster();
+    Fenster *ret = new Fenster();
     ret->setMausEreignis( _ret1ME );
     ret->setTastaturEreignis( _ret1TE );
-	ret->setStyle( style );
-	ret->setPosition( x, y );
-	ret->setSize( br, hö );
-	if( ret->hatStyle( Fenster::Style::Rahmen ) )
-	{
-		ret->setRBreite( 1 );
-		ret->setRFarbe( 0xFFFFFFFF );
-	}
-	if( ret->hatStyle( Fenster::Style::Titel ) )
-	{
-		ret->setTitel( titel );
-		ret->setTSchriftZ( zSchrift->getThis() );
-		ret->setTSFarbe( 0xFFFFFFFF );
-		ret->zTTextFeld()->setSize( 0, 20 );
-		ret->zTTextFeld()->addStyle( TextFeld::Style::Sichtbar | TextFeld::Style::Center | TextFeld::Style::Rahmen );
-		ret->setTRFarbe( 0xFF00FF00 );
-		ret->setTRBreite( 1 );
-		if( ret->hatStyle( Fenster::Style::TitelBuffered ) )
-		{
-			ret->setTAfFarbe( 0x1000FF00 );
-			ret->setTAfStrength( -15 );
-		}
-	}
+    ret->setStyle( style );
+    ret->setPosition( x, y );
+    ret->setSize( br, hö );
+    if( ret->hatStyle( Fenster::Style::Rahmen ) )
+    {
+        ret->setRBreite( 1 );
+        ret->setRFarbe( 0xFFFFFFFF );
+    }
+    if( ret->hatStyle( Fenster::Style::Titel ) )
+    {
+        ret->setTitel( titel );
+        ret->setTSchriftZ( zSchrift->getThis() );
+        ret->setTSFarbe( 0xFFFFFFFF );
+        ret->zTTextFeld()->setSize( 0, 20 );
+        ret->zTTextFeld()->addStyle( TextFeld::Style::Sichtbar | TextFeld::Style::Center | TextFeld::Style::Rahmen );
+        ret->setTRFarbe( 0xFF00FF00 );
+        ret->setTRBreite( 1 );
+        if( ret->hatStyle( Fenster::Style::TitelBuffered ) )
+        {
+            ret->setTAfFarbe( 0x1000FF00 );
+            ret->setTAfStrength( -15 );
+        }
+    }
     if( ret->hatStyle( Fenster::Style::Closable ) )
     {
         if( ret->hatStyle( Fenster::Style::ClosingKlickBuffer ) )
@@ -79,10 +79,10 @@ Fenster *initFenster( int x, int y, int br, int h
             ret->setSKAfStrength( 30 );
         }
     }
-	return ret;
+    return ret;
 }
 
-TextFeld *initTextFeld( int x, int y, int br, int hö, Schrift *zSchrift, __int64 style, char *txt )
+TextFeld *initTextFeld( int x, int y, int br, int hö, Schrift * zSchrift, __int64 style, char *txt )
 {
     TextFeld *ret = new TextFeld();
     ret->setStyle( style );
@@ -105,190 +105,172 @@ TextFeld *initTextFeld( int x, int y, int br, int h
     return ret;
 }
 
-BildZ *initBildZ( int x, int y, int br, int hö, __int64 style, Bild *b )
+BildZ *initBildZ( int x, int y, int br, int hö, __int64 style, Bild * b )
 {
-	BildZ *ret = new BildZ();
-	ret->setStyle( style );
-	ret->setPosition( x, y );
-	ret->setSize( br, hö );
-	if( b )
-		ret->setBildZ( b );
-	if( ( style | BildZ::Style::Rahmen ) == style )
-	{
-		ret->setRahmenBreite( 1 );
-		ret->setRahmenFarbe( 0xFFFFFFFF );
-	}
-	return ret;
+    BildZ *ret = new BildZ();
+    ret->setStyle( style );
+    ret->setPosition( x, y );
+    ret->setSize( br, hö );
+    if( b )
+        ret->setBildZ( b );
+    if( ( style | BildZ::Style::Rahmen ) == style )
+    {
+        ret->setRahmenBreite( 1 );
+        ret->setRahmenFarbe( 0xFFFFFFFF );
+    }
+    return ret;
 }
 
-AuswahlBox *initAuswahlBox( int x, int y, int br, int hö, Schrift *zSchrift, __int64 style, std::initializer_list< char * > values )
+AuswahlBox *initAuswahlBox( int x, int y, int br, int hö, Schrift * zSchrift, __int64 style, std::initializer_list< char * > values )
 {
-	AuswahlBox *ret = new AuswahlBox();
-	ret->setStyle( style );
-	ret->setPosition( x, y );
-	ret->setSize( br, hö );
-	if( ( style | AuswahlBox::Style::Hintergrund ) == style )
-		ret->setHintergrundFarbe( 0xFF000000 );
-	if( ( style | AuswahlBox::Style::Erlaubt ) == style )
-		ret->setMausEreignis( _ret1ME );
-	if( zSchrift )
-		ret->setSchriftZ( zSchrift->getThis() );
-	if( ( style | AuswahlBox::Style::Rahmen ) == style )
-	{
-		ret->setRahmenBreite( 1 );
-		ret->setRahmenFarbe( 0xFFFFFFFF );
-	}
-	if( ( style | AuswahlBox::Style::MaxHeight ) == style )
-		ret->setMaxAuskappHeight( 100 );
-	if( ( style | AuswahlBox::Style::MausRahmen ) == style )
-	{
-		ret->setMausRahmenBreite( 1 );
-		ret->setMausRahmenFarbe( 0xFF005500 );
-	}
-	if( ( style | AuswahlBox::Style::MausBuffer ) == style )
-	{
-		ret->setMausAlphaFeldFarbe( 0x00008700 );
-		ret->setMausAlphaFeldStrength( -8 );
-	}
-	if( ( style | AuswahlBox::Style::AuswahlRahmen ) == style )
-	{
-		ret->setAuswRahmenBreite( 1 );
-		ret->setAuswRahmenFarbe( 0xFF00FF00 );
-	}
-	if( ( style | AuswahlBox::Style::AuswahlBuffer ) == style )
-	{
-		ret->setAuswAlphaFeldFarbe( 0x0000FF00 );
-		ret->setAuswAlphaFeldStrength( -8 );
-	}
-	for( auto i = values.begin(); i != values.end(); i++ )
-		ret->addEintrag( *i );
-	return ret;
+    AuswahlBox *ret = new AuswahlBox();
+    ret->setStyle( style );
+    ret->setPosition( x, y );
+    ret->setSize( br, hö );
+    if( ( style | AuswahlBox::Style::Hintergrund ) == style )
+        ret->setHintergrundFarbe( 0xFF000000 );
+    if( ( style | AuswahlBox::Style::Erlaubt ) == style )
+        ret->setMausEreignis( _ret1ME );
+    if( zSchrift )
+        ret->setSchriftZ( zSchrift->getThis() );
+    if( ( style | AuswahlBox::Style::Rahmen ) == style )
+    {
+        ret->setRahmenBreite( 1 );
+        ret->setRahmenFarbe( 0xFFFFFFFF );
+    }
+    if( ( style | AuswahlBox::Style::MaxHeight ) == style )
+        ret->setMaxAuskappHeight( 100 );
+    if( ( style | AuswahlBox::Style::MausRahmen ) == style )
+    {
+        ret->setMausRahmenBreite( 1 );
+        ret->setMausRahmenFarbe( 0xFF005500 );
+    }
+    if( ( style | AuswahlBox::Style::MausBuffer ) == style )
+    {
+        ret->setMausAlphaFeldFarbe( 0x00008700 );
+        ret->setMausAlphaFeldStrength( -8 );
+    }
+    if( ( style | AuswahlBox::Style::AuswahlRahmen ) == style )
+    {
+        ret->setAuswRahmenBreite( 1 );
+        ret->setAuswRahmenFarbe( 0xFF00FF00 );
+    }
+    if( ( style | AuswahlBox::Style::AuswahlBuffer ) == style )
+    {
+        ret->setAuswAlphaFeldFarbe( 0x0000FF00 );
+        ret->setAuswAlphaFeldStrength( -8 );
+    }
+    for( auto i = values.begin(); i != values.end(); i++ )
+        ret->addEintrag( *i );
+    return ret;
 }
 
-ObjTabelle *initObjTabelle( int x, int y, int br, int hö, Schrift *zSchrift, __int64 style, std::initializer_list< OBJTabelleSpalteIni > spalten, int überschriftHöhe )
+ObjTabelle *initObjTabelle( int x, int y, int br, int hö, Schrift * zSchrift, __int64 style, std::initializer_list< OBJTabelleSpalteIni > spalten, int überschriftHöhe )
 {
-	ObjTabelle *ret = new ObjTabelle();
-	ret->setStyle( style );
-	ret->setPosition( x, y );
-	ret->setSize( br, hö );
-	if( ( style | ObjTabelle::Style::Erlaubt ) == style )
-		ret->setMausEreignis( _ret1ME );
-	if( ( style | ObjTabelle::Style::Rahmen ) == style )
-	{
-		ret->setRahmenBreite( 1 );
-		ret->setRahmenFarbe( 0xFFFFFFFF );
-	}
-	if( ( style | ObjTabelle::Style::Raster ) == style )
-	{
-		ret->setRasterBreite( 1 );
-		ret->setRasterFarbe( 0xFFFFFFFF );
-	}
-	if( ( style | ObjTabelle::Style::VScroll ) == style )
-		ret->setVertikalKlickScroll( 5 );
-	if( ( style | ObjTabelle::Style::HScroll ) == style )
-		ret->setHorizontalKlickScroll( 5 );
-	for( auto i = spalten.begin(); i != spalten.end(); i++ )
-	{
-		ret->addSpalte( i->name );
-		ret->setSpaltenBreite( i->name, i->breite );
-		if( ( style | ObjTabelle::Style::SpaltenBreiteMin ) == style )
-			ret->setMinSpaltenBreite( i->name, i->minBreite );
-		if( ( style | ObjTabelle::Style::SpaltenBreiteMax ) == style )
-			ret->setMaxSpaltenBreite( i->name, i->maxBreite );
-		if( überschriftHöhe )
-		{
-			if( ret->getZeilenNummer( "Überschrift" ) < 0 )
-			{
-				ret->addZeile( 0, "Überschrift" );
-				ret->setZeilenHeight( 0, 20 );
-			}
-			ret->setZeichnungZ( i->name, "Überschrift", initTextFeld( 0, 0, i->breite, 20, zSchrift, TextFeld::Style::Text | TextFeld::Style::Center, i->name ) );
-		}
-	}
-	return ret;
+    ObjTabelle *ret = new ObjTabelle();
+    ret->setStyle( style );
+    ret->setPosition( x, y );
+    ret->setSize( br, hö );
+    if( ( style | ObjTabelle::Style::Erlaubt ) == style )
+        ret->setMausEreignis( _ret1ME );
+    if( ( style | ObjTabelle::Style::Rahmen ) == style )
+    {
+        ret->setRahmenBreite( 1 );
+        ret->setRahmenFarbe( 0xFFFFFFFF );
+    }
+    if( ( style | ObjTabelle::Style::Raster ) == style )
+    {
+        ret->setRasterBreite( 1 );
+        ret->setRasterFarbe( 0xFFFFFFFF );
+    }
+    if( ( style | ObjTabelle::Style::VScroll ) == style )
+        ret->setVertikalKlickScroll( 5 );
+    if( ( style | ObjTabelle::Style::HScroll ) == style )
+        ret->setHorizontalKlickScroll( 5 );
+    for( auto i = spalten.begin(); i != spalten.end(); i++ )
+    {
+        ret->addSpalte( i->name );
+        ret->setSpaltenBreite( i->name, i->breite );
+        if( ( style | ObjTabelle::Style::SpaltenBreiteMin ) == style )
+            ret->setMinSpaltenBreite( i->name, i->minBreite );
+        if( ( style | ObjTabelle::Style::SpaltenBreiteMax ) == style )
+            ret->setMaxSpaltenBreite( i->name, i->maxBreite );
+        if( überschriftHöhe )
+        {
+            if( ret->getZeilenNummer( "Überschrift" ) < 0 )
+            {
+                ret->addZeile( 0, "Überschrift" );
+                ret->setZeilenHeight( 0, 20 );
+            }
+            ret->setZeichnungZ( i->name, "Überschrift", initTextFeld( 0, 0, i->breite, 20, zSchrift, TextFeld::Style::Text | TextFeld::Style::Center, i->name ) );
+        }
+    }
+    return ret;
 }
 
-LDiag *initLinienDiagramm( int x, int y, int br, int hö, Schrift *zSchrift, __int64 style, DiagDaten *data )
+LDiag *initLinienDiagramm( int x, int y, int br, int hö, Schrift * zSchrift, __int64 style, DiagDaten * data )
 {
-	LDiag *ret = new LDiag();
-	ret->setStyle( style );
-	ret->setPosition( x, y );
-	ret->setSize( br, hö );
-	if( zSchrift )
-	{
-		ret->setSchriftZ( zSchrift->getThis() );
-		ret->setSchriftSize( 12 );
-	}
-	if( data )
-		ret->setDiagDatenZ( data );
-	if( ret->hatStyle( LDiag::Style::Rahmen ) )
-	{
-		ret->setRahmenBreite( 1 );
-		ret->setRahmenFarbe( 0xFFFFFFFF );
-	}
-	if( ret->hatStyle( LDiag::Style::DatenRahmen ) )
-	{
-		ret->setDatenRahmenBreite( 1 );
-		ret->setDatenRahmenFarbe( 0xFFFFFFFF );
-	}
-	if( ret->hatStyle( LDiag::Style::Hintergrund ) )
-		ret->setHintergrundFarbe( 0xFF000000 );
-	if( ret->hatStyle( LDiag::Style::DatenHintergrund ) )
-		ret->setHintergrundFarbe( 0xFF000000 );
-	return ret;
+    LDiag *ret = new LDiag();
+    ret->setStyle( style );
+    ret->setPosition( x, y );
+    ret->setSize( br, hö );
+    if( zSchrift )
+    {
+        ret->setSchriftZ( zSchrift->getThis() );
+        ret->setSchriftSize( 12 );
+    }
+    if( data )
+        ret->setDiagDatenZ( data );
+    if( ret->hatStyle( LDiag::Style::Rahmen ) )
+    {
+        ret->setRahmenBreite( 1 );
+        ret->setRahmenFarbe( 0xFFFFFFFF );
+    }
+    if( ret->hatStyle( LDiag::Style::DatenRahmen ) )
+    {
+        ret->setDatenRahmenBreite( 1 );
+        ret->setDatenRahmenFarbe( 0xFFFFFFFF );
+    }
+    if( ret->hatStyle( LDiag::Style::Hintergrund ) )
+        ret->setHintergrundFarbe( 0xFF000000 );
+    if( ret->hatStyle( LDiag::Style::DatenHintergrund ) )
+        ret->setHintergrundFarbe( 0xFF000000 );
+    return ret;
 }
 
-FBalken *initFBalken( int x, int y, int br, int hö, Schrift *zSchrift, __int64 style )
+FBalken * initFBalken( int x, int y, int br, int hö, Schrift * zSchrift, __int64 style )
 {
-	FBalken *ret = new FBalken();
-	ret->setStyle( style );
-	ret->setPosition( x, y );
-	ret->setSize( br, hö );
-	if( zSchrift )
-	{
-		ret->setSchriftZ( zSchrift->getThis() );
-		ret->setSFarbe( 0xFFFFFFFF );
-		ret->setSSize( 12 );
-	}
-	if( ret->hatStyle( FBalken::Style::Rahmen ) )
-	{
-		ret->setRahmenFarbe( 0xFFFFFFFF );
-		ret->setRahmenBreite( 1 );
-	}
-	if( ret->hatStyle( FBalken::Style::HBild ) )
-	{
-		Bild *fbhb = bilder->get( "system.ltdb/fortschritt lehr.png" );
-		if( !fbhb )
-		{
-			LTDBDatei *datei = new LTDBDatei();
-			datei->setDatei( new Text( "data/bilder/system.ltdb" ) );
-			datei->leseDaten( 0 );
-			fbhb = datei->laden( 0, new Text( "fortschrittleh" ) );
-			datei->release();
-			bilder->add( "system.ltdb/fortschritt lehr.png", fbhb->getThis() );
-		}
-		ret->setHintergrundBildZ( fbhb );
-	}
-	if( ret->hatStyle( FBalken::Style::FBild ) )
-	{
-		Bild *fbfhb = bilder->get( "system.ltdb/fortschritt voll.png" );
-		if( !fbfhb )
-		{
-			LTDBDatei *datei = new LTDBDatei();
-			datei->setDatei( new Text( "data/bilder/system.ltdb" ) );
-			datei->leseDaten( 0 );
-			fbfhb = datei->laden( 0, new Text( "fortschrittvol" ) );
-			datei->release();
-			bilder->add( "system.ltdb/fortschritt voll.png", fbfhb->getThis() );
-		}
-		ret->setFBgBildZ( fbfhb );
-	}
-	else if( ret->hatStyle( FBalken::Style::FFarbe ) )
-		ret->setFBgFarbe( 0xFF00FF00 );
-	return ret;
+    FBalken *ret = new FBalken();
+    ret->setStyle( style );
+    ret->setPosition( x, y );
+    ret->setSize( br, hö );
+    if( zSchrift )
+    {
+        ret->setSchriftZ( zSchrift->getThis() );
+        ret->setSFarbe( 0xFFFFFFFF );
+        ret->setSSize( 12 );
+    }
+    if( ret->hatStyle( FBalken::Style::Rahmen ) )
+    {
+        ret->setRahmenFarbe( 0xFFFFFFFF );
+        ret->setRahmenBreite( 1 );
+    }
+    if( ret->hatStyle( FBalken::Style::HBild ) )
+    {
+        Bild *fbhb = bilder->get( "data/bilder/system.ltdb/fortschrittleh" );
+        ret->setHintergrundBildZ( fbhb );
+    }
+    if( ret->hatStyle( FBalken::Style::FBild ) )
+    {
+        Bild *fbfhb = bilder->get( "data/bilder/system.ltdb/fortschrittvol" );
+        ret->setFBgBildZ( fbfhb );
+    }
+    else if( ret->hatStyle( FBalken::Style::FFarbe ) )
+        ret->setFBgFarbe( 0xFF00FF00 );
+    return ret;
 }
 
-AuswahlListe *initAuswahlListe( int x, int y, int br, int hö, Schrift *zSchrift, __int64 style, std::initializer_list< char * > values )
+AuswahlListe *initAuswahlListe( int x, int y, int br, int hö, Schrift * zSchrift, __int64 style, std::initializer_list< char * > values )
 {
     AuswahlListe *ret = new AuswahlListe();
     ret->setPosition( x, y );
@@ -340,10 +322,10 @@ ZeichnungHintergrund *initZeichnungHintergrund( int x, int y, int br, int h
     return ret;
 }
 
-void initToolTip( Zeichnung *obj, const char *txt, Schrift *zSchrift, Bildschirm *zBs )
+void initToolTip( Zeichnung * obj, const char *txt, Schrift * zSchrift, Bildschirm * zBs )
 {
-	obj->setToolTipText( txt , zBs, zSchrift );
-	obj->zToolTip()->addStyle( TextFeld::Style::Sichtbar | TextFeld::Style::Rahmen | TextFeld::Style::Hintergrund | TextFeld::Style::HAlpha | TextFeld::Style::Mehrzeilig );
-	obj->zToolTip()->setHintergrundFarbe( 0xA0000000 );
-	obj->zToolTip()->setRahmenFarbe( 0xFFFFFFFF );
+    obj->setToolTipText( txt, zBs, zSchrift );
+    obj->zToolTip()->addStyle( TextFeld::Style::Sichtbar | TextFeld::Style::Rahmen | TextFeld::Style::Hintergrund | TextFeld::Style::HAlpha | TextFeld::Style::Mehrzeilig );
+    obj->zToolTip()->setHintergrundFarbe( 0xA0000000 );
+    obj->zToolTip()->setRahmenFarbe( 0xFFFFFFFF );
 }

+ 2 - 20
KSGClient/NachLogin/Account/Historie/AccountHistorie.cpp

@@ -686,8 +686,8 @@ AHSpielListeEintrag::AHSpielListeEintrag( int id, int karteId, Schrift *zSchrift
   videoK( initKnopf( 5, 130, 100, 20, zSchrift, Knopf::Style::Sichtbar, "Aufzeichnung" ) ),
   liste( 0 ),
   ram( new LRahmen() ),
-  ausklappen( bilder->get( "account.ltdb/ausklappen.png" ) ),
-  einklappen( bilder->get( "account.ltdb/einklappen.png" ) ),
+  ausklappen( bilder->get( "data/client/bilder/account.ltdb/ausklappen.png" ) ),
+  einklappen( bilder->get( "data/client/bilder/account.ltdb/einklappen.png" ) ),
   id( id ),
   karteId( karteId ),
   tickVal( 0 ),
@@ -695,24 +695,6 @@ AHSpielListeEintrag::AHSpielListeEintrag( int id, int karteId, Schrift *zSchrift
   maxHö( 155 ),
   ref( 1 )
 {
-	if( !einklappen )
-	{
-		LTDBDatei *datei = new LTDBDatei();
-		datei->setDatei( new Text( "data/client/bilder/account.ltdb" ) );
-		datei->leseDaten( 0 );
-		einklappen = datei->laden( 0, new Text( "einklappen.png" ) );
-		datei->release();
-		bilder->add( "account.ltdb/einklappen.png", einklappen->getThis() );
-	}
-	if( !ausklappen )
-	{
-		LTDBDatei *datei = new LTDBDatei();
-		datei->setDatei( new Text( "data/client/bilder/account.ltdb" ) );
-		datei->leseDaten( 0 );
-		ausklappen = datei->laden( 0, new Text( "ausklappen.png" ) );
-		datei->release();
-		bilder->add( "account.ltdb/ausklappen.png", ausklappen->getThis() );
-	}
 	detailsK->setStyle( Knopf::Style::Sichtbar | Knopf::Style::Erlaubt | Knopf::Style::Hintergrund | Knopf::Style::HAlpha | Knopf::Style::HBild | Knopf::Style::KlickBuffer );
 	detailsK->setHintergrundBildZ( ausklappen->getThis() );
 	initToolTip( detailsK, "Details anzeigen.", zSchrift, hauptScreen );

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

@@ -18,32 +18,14 @@ AccountSPListeEintrag::AccountSPListeEintrag( AccountSPListeEintragDaten *daten,
   anzahl( initTextFeld( 110, 0, 100, 20, zSchrift, TextFeld::Style::Text | TextFeld::Style::Center, "Spiele: " ) ),
   prozent( initFBalken( 220, 0, 400, 20, zSchrift, FBalken::Style::normal ) ),
   details( initKnopf( 580, 0, 20, 20, 0, 0, "" ) ),
-  ausklappen( bilder->get( "account.ltdb/ausklappen.png" ) ),
-  einklappen( bilder->get( "account.ltdb/einklappen.png" ) ),
+  ausklappen( bilder->get( "data/client/bilder/account.ltdb/ausklappen.png" ) ),
+  einklappen( bilder->get( "data/client/bilder/account.ltdb/einklappen.png" ) ),
   sortSpalte( new Text( "Name" ) ),
   sortAbsteigend( 0 ),
   tickVal( 0 ),
   rend( 0 ),
   ref( 1 )
 {
-	if( !einklappen )
-	{
-		LTDBDatei *datei = new LTDBDatei();
-		datei->setDatei( new Text( "data/client/bilder/account.ltdb" ) );
-		datei->leseDaten( 0 );
-		einklappen = datei->laden( 0, new Text( "einklappen.png" ) );
-		datei->release();
-		bilder->add( "account.ltdb/einklappen.png", einklappen->getThis() );
-	}
-	if( !ausklappen )
-	{
-		LTDBDatei *datei = new LTDBDatei();
-		datei->setDatei( new Text( "data/client/bilder/account.ltdb" ) );
-		datei->leseDaten( 0 );
-		ausklappen = datei->laden( 0, new Text( "ausklappen.png" ) );
-		datei->release();
-		bilder->add( "account.ltdb/ausklappen.png", ausklappen->getThis() );
-	}
 	details->setStyle( Knopf::Style::Sichtbar | Knopf::Style::Erlaubt | Knopf::Style::Hintergrund | Knopf::Style::HAlpha | Knopf::Style::HBild | Knopf::Style::KlickBuffer );
 	details->setHintergrundBildZ( ausklappen->getThis() );
 	initToolTip( details, "Details anzeigen.", zSchrift, hauptScreen );

+ 2 - 20
KSGClient/NachLogin/Account/Spiele_Karten/AccountSpieleUndKarten.cpp

@@ -110,8 +110,8 @@ AccountSUKListeSpiel::AccountSUKListeSpiel( Schrift *zSchrift, int id, int accou
   statusTF( initTextFeld( 545, 0, 150, 20, zSchrift, TextFeld::Style::Text | TextFeld::Style::Center, "Status: " ) ),
   details( initKnopf( 705, 0, 20, 20, 0, 0, "" ) ),
   karten( new RCArray< AccountSUKListeKarte >() ),
-  einklappen( bilder->get( "account.ltdb/einklappen.png" ) ),
-  ausklappen( bilder->get( "account.ltdb/ausklappen.png" ) ),
+  einklappen( bilder->get( "data/client/bilder/account.ltdb/einklappen.png" ) ),
+  ausklappen( bilder->get( "data/client/bilder/account.ltdb/ausklappen.png" ) ),
   status( new Text() ),
   statusFilter( new Text( "Alle" ) ),
   sortSpalte( new Text( "Name" ) ),
@@ -121,24 +121,6 @@ AccountSUKListeSpiel::AccountSUKListeSpiel( Schrift *zSchrift, int id, int accou
   rend( 0 ),
   ref( 1 )
 {
-	if( !einklappen )
-	{
-		LTDBDatei *datei = new LTDBDatei();
-		datei->setDatei( new Text( "data/client/bilder/account.ltdb" ) );
-		datei->leseDaten( 0 );
-		einklappen = datei->laden( 0, new Text( "einklappen.png" ) );
-		datei->release();
-		bilder->add( "account.ltdb/einklappen.png", einklappen->getThis() );
-	}
-	if( !ausklappen )
-	{
-		LTDBDatei *datei = new LTDBDatei();
-		datei->setDatei( new Text( "data/client/bilder/account.ltdb" ) );
-		datei->leseDaten( 0 );
-		ausklappen = datei->laden( 0, new Text( "ausklappen.png" ) );
-		datei->release();
-		bilder->add( "account.ltdb/ausklappen.png", ausklappen->getThis() );
-	}
 	ram->setFarbe( 0xFFFFFFFF );
 	ram->setRamenBreite( 1 );
 	ram->setSize( 725, 20 );

+ 2 - 20
KSGClient/NachLogin/Account/Statistik/AccountStatistik.cpp

@@ -29,26 +29,8 @@ AccountStatistik::AccountStatistik( Schrift *zSchrift )
 {
 	initToolTip( sortSpalte, "Wähle aus, nach welcher Spalte die\nTabelle sortiert werden soll.", zSchrift, hauptScreen );
 	initToolTip( sortRichtung, "Wähle aus, ob Aufwärts oder Abwärts\nsortiert werden soll.", zSchrift, hauptScreen );
-	Bild *zurückB = bilder->get( "shop.ltdb/zurück.png" );
-	if( !zurückB )
-	{
-		LTDBDatei *datei = new LTDBDatei();
-		datei->setDatei( new Text( "data/client/bilder/shop.ltdb" ) );
-		datei->leseDaten( 0 );
-		zurückB = datei->laden( 0, new Text( "zurück.png" ) );
-		datei->release();
-		bilder->add( "shop.ltdb/zurück.png", zurückB->getThis() );
-	}
-	Bild *weiterB = bilder->get( "shop.ltdb/weiter.png" );
-	if( !weiterB )
-	{
-		LTDBDatei *datei = new LTDBDatei();
-		datei->setDatei( new Text( "data/client/bilder/shop.ltdb" ) );
-		datei->leseDaten( 0 );
-		weiterB = datei->laden( 0, new Text( "weiter.png" ) );
-		datei->release();
-		bilder->add( "shop.ltdb/weiter.png", weiterB->getThis() );
-	}
+	Bild *zurückB = bilder->get( "data/client/bilder/shop.ltdb/zurück.png" );
+	Bild *weiterB = bilder->get( "data/client/bilder/shop.ltdb/weiter.png" );
 	laden->setSichtbar( 0 );
 	laden->setPosition( 365, 200 );
 	zurück->setStyle( Knopf::Style::Sichtbar | Knopf::Style::Hintergrund | Knopf::Style::HBild | Knopf::Style::KlickBuffer );

+ 2 - 20
KSGClient/NachLogin/Account/Suchen/AccountSuchen.cpp

@@ -31,26 +31,8 @@ AccountSuchen::AccountSuchen( Schrift *schrift )
 	initToolTip( accountName, "Gebe den Namen eines Spielers ein.", schrift, hauptScreen );
 	initToolTip( sortSpalte, "Wähle aus, nach welcher Spalte die\nTabelle sortiert werden soll.", schrift, hauptScreen );
 	initToolTip( sortRichtung, "Wähle aus, ob Aufwärts oder Abwärts\nsortiert werden soll.", schrift, hauptScreen );
-	Bild *zurückB = bilder->get( "shop.ltdb/zurück.png" );
-	if( !zurückB )
-	{
-		LTDBDatei *datei = new LTDBDatei();
-		datei->setDatei( new Text( "data/client/bilder/shop.ltdb" ) );
-		datei->leseDaten( 0 );
-		zurückB = datei->laden( 0, new Text( "zurück.png" ) );
-		datei->release();
-		bilder->add( "shop.ltdb/zurück.png", zurückB->getThis() );
-	}
-	Bild *weiterB = bilder->get( "shop.ltdb/weiter.png" );
-	if( !weiterB )
-	{
-		LTDBDatei *datei = new LTDBDatei();
-		datei->setDatei( new Text( "data/client/bilder/shop.ltdb" ) );
-		datei->leseDaten( 0 );
-		weiterB = datei->laden( 0, new Text( "weiter.png" ) );
-		datei->release();
-		bilder->add( "shop.ltdb/weiter.png", weiterB->getThis() );
-	}
+	Bild *zurückB = bilder->get( "data/client/bilder/shop.ltdb/zurück.png" );
+	Bild *weiterB = bilder->get( "data/client/bilder/shop.ltdb/weiter.png" );
 	laden->setSichtbar( 0 );
 	laden->setPosition( 375, 225 );
 	zurück->setStyle( Knopf::Style::Sichtbar | Knopf::Style::Hintergrund | Knopf::Style::HBild | Knopf::Style::KlickBuffer );

+ 14 - 77
KSGClient/NachLogin/Chat/ChatLeiste.cpp

@@ -15,26 +15,8 @@ typedef GSL::GSLDateiV *( *GetGSLDatei )( );
 // Konstruktor
 Chat::Chat( Schrift *zSchrift )
 {
-    Bild *minimierenBild = bilder->get( "chat.ltdb/minimieren.png" );
-    if( !minimierenBild )
-    {
-        LTDBDatei *datei = new LTDBDatei();
-        datei->setDatei( new Text( "data/client/bilder/chat.ltdb" ) );
-        datei->leseDaten( 0 );
-        minimierenBild = datei->laden( 0, new Text( "minimieren.png" ) );
-        datei->release();
-        bilder->add( "chat.ltdb/minimieren.png", minimierenBild->getThis() );
-    }
-    Bild *closeBild = bilder->get( "chat.ltdb/entfernen.png" );
-    if( !closeBild )
-    {
-        LTDBDatei *datei = new LTDBDatei();
-        datei->setDatei( new Text( "data/client/bilder/chat.ltdb" ) );
-        datei->leseDaten( 0 );
-        closeBild = datei->laden( 0, new Text( "entfernen.png" ) );
-        datei->release();
-        bilder->add( "chat.ltdb/entfernen.png", closeBild->getThis() );
-    }
+    Bild *minimierenBild = bilder->get( "data/client/bilder/chat.ltdb/minimieren.png" );
+    Bild *closeBild = bilder->get( "data/client/bilder/chat.ltdb/entfernen.png" );
     rahmen = new LRahmen();
     rahmen->setAlpha( 1 );
     rahmen->setFarbe( 0xFFFFFFFF );
@@ -441,16 +423,7 @@ void *ChatFenster::release()
 ChatroomFenster::ChatroomFenster( Schrift * zSchrift, int chatroomId )
     : Chat( zSchrift )
 {
-    Bild *maximierenBild = bilder->get( "chat.ltdb/maximieren.png" );
-    if( !maximierenBild )
-    {
-        LTDBDatei *datei = new LTDBDatei();
-        datei->setDatei( new Text( "data/client/bilder/chat.ltdb" ) );
-        datei->leseDaten( 0 );
-        maximierenBild = datei->laden( 0, new Text( "maximieren.png" ) );
-        datei->release();
-        bilder->add( "chat.ltdb/maximieren.png", maximierenBild->getThis() );
-    }
+    Bild *maximierenBild = bilder->get( "data/client/bilder/chat.ltdb/maximieren.png" );
     this->chatroomId = chatroomId;
     spielerName = initTextFeld( 200, 5, 120, 0, zSchrift, TextFeld::Style::TextFeld, "" );
     initToolTip( spielerName, "Name des Spielers der eingeladen werden soll.", zSchrift, hauptScreen );
@@ -501,33 +474,15 @@ void ChatroomFenster::addSpieler( int accountId )
     zeile->append( accountId );
     if( spieler->getZeilenNummer( zeile->getText() ) >= 0 )
         return;
-    Bild * einladenBild = bilder->get( "chat.ltdb/maximieren.png" );
-    if( !einladenBild )
-    {
-        LTDBDatei *datei = new LTDBDatei();
-        datei->setDatei( new Text( "data/client/bilder/chat.ltdb" ) );
-        datei->leseDaten( 0 );
-        einladenBild = datei->laden( 0, new Text( "maximieren.png" ) );
-        datei->release();
-        bilder->add( "chat.ltdb/maximieren.png", einladenBild->getThis() );
-    }
-    Bild *closeBild = bilder->get( "chat.ltdb/entfernen.png" );
-    if( !closeBild )
-    {
-        LTDBDatei *datei = new LTDBDatei();
-        datei->setDatei( new Text( "data/client/bilder/chat.ltdb" ) );
-        datei->leseDaten( 0 );
-        closeBild = datei->laden( 0, new Text( "entfernen.png" ) );
-        datei->release();
-        bilder->add( "chat.ltdb/entfernen.png", closeBild->getThis() );
-    }
+    Bild * einladenBild = bilder->get( "data/client/bilder/chat.ltdb/maximieren.png" );
+    Bild * closeBild = bilder->get( "data/client/bilder/chat.ltdb/entfernen.png" );
     spieler->addZeile( zeile->getText() );
     spieler->setZeilenHeight( zeile->getText(), 0 );
-    Text *name = infoClient->getSpielerName( accountId );
-    TextFeld *sName = initTextFeld( 0, 0, 110, 20, schrift, TextFeld::Style::Sichtbar | TextFeld::Style::Text | TextFeld::Style::Center, name->getText() );
+    Text * name = infoClient->getSpielerName( accountId );
+    TextFeld * sName = initTextFeld( 0, 0, 110, 20, schrift, TextFeld::Style::Sichtbar | TextFeld::Style::Text | TextFeld::Style::Center, name->getText() );
     name = name->release();
     spieler->setZeichnungZ( "Name", zeile->getText(), sName );
-    Knopf *freund = initKnopf( 0, 0, 20, 20, 0, 0, "" );
+    Knopf * freund = initKnopf( 0, 0, 20, 20, 0, 0, "" );
     freund->setStyle( Knopf::Style::Sichtbar | Knopf::Style::Erlaubt | Knopf::Style::Hintergrund | Knopf::Style::HAlpha | Knopf::Style::HBild | Knopf::Style::KlickBuffer );
     freund->setHintergrundBildZ( einladenBild->getThis() );
     freund->setMausEreignisParameter( this );
@@ -1193,26 +1148,8 @@ void ChatLeisteObj::render( Bild & zRObj )
 // Konstruktor
 ChatLeiste::ChatLeiste( Schrift * zSchrift, Fenster * zNachLoginFenster )
 {
-    minimierenBild = bilder->get( "chat.ltdb/minimieren.png" );
-    if( !minimierenBild )
-    {
-        LTDBDatei *datei = new LTDBDatei();
-        datei->setDatei( new Text( "data/client/bilder/chat.ltdb" ) );
-        datei->leseDaten( 0 );
-        minimierenBild = datei->laden( 0, new Text( "minimieren.png" ) );
-        datei->release();
-        bilder->add( "chat.ltdb/minimieren.png", minimierenBild->getThis() );
-    }
-    maximierenBild = bilder->get( "chat.ltdb/maximieren.png" );
-    if( !maximierenBild )
-    {
-        LTDBDatei *datei = new LTDBDatei();
-        datei->setDatei( new Text( "data/client/bilder/chat.ltdb" ) );
-        datei->leseDaten( 0 );
-        maximierenBild = datei->laden( 0, new Text( "maximieren.png" ) );
-        datei->release();
-        bilder->add( "chat.ltdb/maximieren.png", maximierenBild->getThis() );
-    }
+    minimierenBild = bilder->get( "data/client/bilder/chat.ltdb/minimieren.png" );
+    maximierenBild = bilder->get( "data/client/bilder/chat.ltdb/maximieren.png" );
     bildschirmGröße = BildschirmGröße();
     fenster = initFenster( 20 - bildschirmGröße.x, bildschirmGröße.y - 50, bildschirmGröße.x, 50, 0, Fenster::Style::Sichtbar | Fenster::Style::Erlaubt | Fenster::Style::BodyHintergrund | Fenster::Style::Rahmen, "" );
     fenster->setKBgFarbe( 0xFF000000 );
@@ -1238,9 +1175,9 @@ ChatLeiste::~ChatLeiste()
 {
     minimierenBild = minimierenBild->release();
     maximierenBild = maximierenBild->release();
-    fenster = (Fenster*)fenster->release();
-    minMax = (Knopf*)minMax->release();
-    chatLeiste = (ChatLeisteObj*)chatLeiste->release();
+    fenster = (Fenster *)fenster->release();
+    minMax = (Knopf *)minMax->release();
+    chatLeiste = (ChatLeisteObj *)chatLeiste->release();
 }
 
 // nicht constant
@@ -1346,7 +1283,7 @@ bool ChatLeiste::druckMinMax( MausEreignis & me )
         {
             animation = 1;
             minMax->setHintergrundBildZ( minimierenBild->getThis() );
-             // TODO minMax->zToolTip()->setText( "Chat Leiste minimieren." );
+            // TODO minMax->zToolTip()->setText( "Chat Leiste minimieren." );
         }
     }
     return 1;

+ 8 - 71
KSGClient/NachLogin/Chat/FreundesListe.cpp

@@ -14,46 +14,10 @@
 FreundData::FreundData( int accountId, LRahmen *rahmen, AlphaFeld *auswahlBuffer, Schrift *zSchrift )
     : Thread()
 {
-    Bild *entfernenBild = bilder->get( "chat.ltdb/entfernen.png" );
-    if( !entfernenBild )
-    {
-        LTDBDatei *datei = new LTDBDatei();
-        datei->setDatei( new Text( "data/client/bilder/chat.ltdb" ) );
-        datei->leseDaten( 0 );
-        entfernenBild = datei->laden( 0, new Text( "entfernen.png" ) );
-        datei->release();
-        bilder->add( "chat.ltdb/entfernen.png", entfernenBild->getThis() );
-    }
-    Bild *ansehenBild = bilder->get( "chat.ltdb/ansehen.png" );
-    if( !ansehenBild )
-    {
-        LTDBDatei *datei = new LTDBDatei();
-        datei->setDatei( new Text( "data/client/bilder/chat.ltdb" ) );
-        datei->leseDaten( 0 );
-        ansehenBild = datei->laden( 0, new Text( "ansehen.png" ) );
-        datei->release();
-        bilder->add( "chat.ltdb/ansehen.png", ansehenBild->getThis() );
-    }
-    Bild *nachrichtBild = bilder->get( "chat.ltdb/nachricht.png" );
-    if( !nachrichtBild )
-    {
-        LTDBDatei *datei = new LTDBDatei();
-        datei->setDatei( new Text( "data/client/bilder/chat.ltdb" ) );
-        datei->leseDaten( 0 );
-        nachrichtBild = datei->laden( 0, new Text( "nachricht.png" ) );
-        datei->release();
-        bilder->add( "chat.ltdb/nachricht.png", nachrichtBild->getThis() );
-    }
-    Bild *einladenBild = bilder->get( "chat.ltdb/neuerfreund.png" );
-    if( !einladenBild )
-    {
-        LTDBDatei *datei = new LTDBDatei();
-        datei->setDatei( new Text( "data/client/bilder/chat.ltdb" ) );
-        datei->leseDaten( 0 );
-        einladenBild = datei->laden( 0, new Text( "neuerfreund.png" ) );
-        datei->release();
-        bilder->add( "chat.ltdb/neuerfreund.png", einladenBild->getThis() );
-    }
+    Bild *entfernenBild = bilder->get( "data/client/bilder/chat.ltdb/entfernen.png" );
+    Bild *ansehenBild = bilder->get( "data/client/bilder/chat.ltdb/ansehen.png" );
+    Bild *nachrichtBild = bilder->get( "data/client/bilder/chat.ltdb/nachricht.png" );
+    Bild *einladenBild = bilder->get( "data/client/bilder/chat.ltdb/neuerfreund.png" );
     this->accountId = accountId;
     this->rahmen = rahmen;
     this->auswahlBuffer = auswahlBuffer;
@@ -641,36 +605,9 @@ bool FreundesListeObj::istFreund( int accId ) const
 FreundesListe::FreundesListe( Schrift * zSchrift, Fenster * zNachLoginFenster )
     : Thread()
 {
-    minimierenBild = bilder->get( "chat.ltdb/minimieren.png" );
-    if( !minimierenBild )
-    {
-        LTDBDatei *datei = new LTDBDatei();
-        datei->setDatei( new Text( "data/client/bilder/chat.ltdb" ) );
-        datei->leseDaten( 0 );
-        minimierenBild = datei->laden( 0, new Text( "minimieren.png" ) );
-        datei->release();
-        bilder->add( "chat.ltdb/minimieren.png", minimierenBild->getThis() );
-    }
-    maximierenBild = bilder->get( "chat.ltdb/maximieren.png" );
-    if( !maximierenBild )
-    {
-        LTDBDatei *datei = new LTDBDatei();
-        datei->setDatei( new Text( "data/client/bilder/chat.ltdb" ) );
-        datei->leseDaten( 0 );
-        maximierenBild = datei->laden( 0, new Text( "maximieren.png" ) );
-        datei->release();
-        bilder->add( "chat.ltdb/maximieren.png", maximierenBild->getThis() );
-    }
-    Bild *neuerFreundBild = bilder->get( "chat.ltdb/neuerfreund.png" );
-    if( !neuerFreundBild )
-    {
-        LTDBDatei *datei = new LTDBDatei();
-        datei->setDatei( new Text( "data/client/bilder/chat.ltdb" ) );
-        datei->leseDaten( 0 );
-        neuerFreundBild = datei->laden( 0, new Text( "neuerfreund.png" ) );
-        datei->release();
-        bilder->add( "chat.ltdb/neuerfreund.png", neuerFreundBild->getThis() );
-    }
+    minimierenBild = bilder->get( "data/client/bilder/chat.ltdb/minimieren.png" );
+    maximierenBild = bilder->get( "data/client/bilder/chat.ltdb/maximieren.png" );
+    Bild *neuerFreundBild = bilder->get( "data/client/bilder/chat.ltdb/neuerfreund.png" );
 
     bildschirmGröße = BildschirmGröße();
 
@@ -788,7 +725,7 @@ FreundesListe::~FreundesListe()
     minMax = (Knopf *)minMax->release();
     überschrift = (TextFeld *)überschrift->release();
     accountName = (TextFeld *)accountName->release();
-    freundesListe = (FreundesListeObj*)freundesListe->release();
+    freundesListe = (FreundesListeObj *)freundesListe->release();
     neuerFreund = (Knopf *)neuerFreund->release();
     neuerChat = (Knopf *)neuerChat->release();
     neuerFreundFenster = (Fenster *)neuerFreundFenster->release();

+ 5 - 32
KSGClient/NachLogin/Chat/NachrichtenListe.cpp

@@ -23,16 +23,7 @@ NLNachricht::NLNachricht( Schrift *zSchrift, Text *titel )
     titel = titel->release();
     close = initKnopf( 208, 1, 20, 20, 0, 0, "" );
     close->setStyle( Knopf::Style::Sichtbar | Knopf::Style::Erlaubt | Knopf::Style::Hintergrund | Knopf::Style::HBild | Knopf::Style::HAlpha | Knopf::Style::KlickBuffer );
-    Bild * closeBild = bilder->get( "chat.ltdb/entfernen.png" );
-    if( !closeBild )
-    {
-        LTDBDatei *datei = new LTDBDatei();
-        datei->setDatei( new Text( "data/client/bilder/chat.ltdb" ) );
-        datei->leseDaten( 0 );
-        closeBild = datei->laden( 0, new Text( "entfernen.png" ) );
-        datei->release();
-        bilder->add( "chat.ltdb/entfernen.png", closeBild->getThis() );
-    }
+    Bild * closeBild = bilder->get( "data/client/bilder/chat.ltdb/entfernen.png" );
     close->setHintergrundBildZ( closeBild );
     initToolTip( close, "Nachricht ignorieren.", zSchrift, hauptScreen );
     maxHöhe = 20;
@@ -277,7 +268,7 @@ SpielUpdateNachricht::SpielUpdateNachricht( Schrift * zSchrift, Text * titel, Te
         else
             this->negAk();
     } );
-    if( !updateH->add( (Update*)update->getThis() ) )
+    if( !updateH->add( (Update *)update->getThis() ) )
         entfernen();
 }
 
@@ -662,26 +653,8 @@ void NachrichtenListeObj::render( Bild & zrObj )
 NachrichtenListe::NachrichtenListe( Schrift * zSchrift, Fenster * zNachLoginFenster )
 {
     schrift = zSchrift->getThis();
-    minimierenBild = bilder->get( "chat.ltdb/minimieren.png" );
-    if( !minimierenBild )
-    {
-        LTDBDatei *datei = new LTDBDatei();
-        datei->setDatei( new Text( "data/client/bilder/chat.ltdb" ) );
-        datei->leseDaten( 0 );
-        minimierenBild = datei->laden( 0, new Text( "minimieren.png" ) );
-        datei->release();
-        bilder->add( "chat.ltdb/minimieren.png", minimierenBild->getThis() );
-    }
-    maximierenBild = bilder->get( "chat.ltdb/maximieren.png" );
-    if( !maximierenBild )
-    {
-        LTDBDatei *datei = new LTDBDatei();
-        datei->setDatei( new Text( "data/client/bilder/chat.ltdb" ) );
-        datei->leseDaten( 0 );
-        maximierenBild = datei->laden( 0, new Text( "maximieren.png" ) );
-        datei->release();
-        bilder->add( "chat.ltdb/maximieren.png", maximierenBild->getThis() );
-    }
+    minimierenBild = bilder->get( "data/client/bilder/chat.ltdb/minimieren.png" );
+    maximierenBild = bilder->get( "data/client/bilder/chat.ltdb/maximieren.png" );
     bildschirmGröße = BildschirmGröße();
     fenster = initFenster( bildschirmGröße.x - 21, 100, 250, 22, zSchrift, Fenster::Style::Sichtbar | Fenster::Style::Erlaubt | Fenster::Style::Rahmen | Fenster::Style::BodyHintergrund, "" );
     fenster->setKBgFarbe( 0xFF000000 );
@@ -748,7 +721,7 @@ NachrichtenListe::~NachrichtenListe()
     überschrift = (TextFeld *)überschrift->release();
     fenster = (Fenster *)fenster->release();
     minMax = (Knopf *)minMax->release();
-    nachrichtenListe = (NachrichtenListeObj*)nachrichtenListe->release();
+    nachrichtenListe = (NachrichtenListeObj *)nachrichtenListe->release();
     minimierenBild = minimierenBild->release();
     maximierenBild = maximierenBild->release();
     schrift->release();

+ 264 - 273
KSGClient/NachLogin/Editor/Auswahl/Auswahl.cpp

@@ -7,73 +7,73 @@
 // Inhalt der Auswahl Klasse aus Auswahl.h
 // Konstruktor
 Auswahl::Auswahl( Schrift *zSchrift, KartenEditor *kEditor )
-	: Thread()
+    : Thread()
 {
-	this->kEditor = kEditor;
-	alpha = 255;
-	sichtbar = 0;
-	suchFilterT = initTextFeld( 10, 10, 70, 20, zSchrift, TextFeld::Style::Text | TextFeld::Style::VCenter, "Suchfilter:" );
-	suchFilter = initTextFeld( 90, 10, 210, 20, zSchrift, TextFeld::Style::TextFeld, "" );
-	initToolTip( suchFilter, "Gebe etwas vom Namen der Karte ein, nach der du suchst.", zSchrift, hauptScreen );
-	suchen = initKnopf( 310, 10, 100, 20, zSchrift, Knopf::Style::Sichtbar, "suchen" );
-	sortSpalte = initAuswahlBox( 640, 10, 120, 20, zSchrift, ABSTYLE,
-	{ "Name", "Spielart", "Preis (Kupfer)", "Verkauft", "Spieleranzahl" } );
-	sortRichtung = initAuswahlBox( 770, 10, 120, 20, zSchrift, ABSTYLE, { "Aufsteigend", "Absteigend" } );
-	karten = initObjTabelle( 10, 40, 880, 520, zSchrift, OTSTYLE, { { "Name", 220, 220, 220 }, { "Spielart", 220, 220, 220 },
-	{ "Kupfer", 130, 130, 130 }, { "Verkauft", 125, 125, 125 }, { "Spieleranzahl", 140, 140, 140 },
-	{ "", 20, 20, 20 } }, 20 );
-	neuKarteName = initTextFeld( 10, 570, 195, 20, zSchrift, TextFeld::Style::TextFeld, "" );
+    this->kEditor = kEditor;
+    alpha = 255;
+    sichtbar = 0;
+    suchFilterT = initTextFeld( 10, 10, 70, 20, zSchrift, TextFeld::Style::Text | TextFeld::Style::VCenter, "Suchfilter:" );
+    suchFilter = initTextFeld( 90, 10, 210, 20, zSchrift, TextFeld::Style::TextFeld, "" );
+    initToolTip( suchFilter, "Gebe etwas vom Namen der Karte ein, nach der du suchst.", zSchrift, hauptScreen );
+    suchen = initKnopf( 310, 10, 100, 20, zSchrift, Knopf::Style::Sichtbar, "suchen" );
+    sortSpalte = initAuswahlBox( 640, 10, 120, 20, zSchrift, ABSTYLE,
+                                 { "Name", "Spielart", "Preis (Kupfer)", "Verkauft", "Spieleranzahl" } );
+    sortRichtung = initAuswahlBox( 770, 10, 120, 20, zSchrift, ABSTYLE, { "Aufsteigend", "Absteigend" } );
+    karten = initObjTabelle( 10, 40, 880, 520, zSchrift, OTSTYLE, { { "Name", 220, 220, 220 }, { "Spielart", 220, 220, 220 },
+    { "Kupfer", 130, 130, 130 }, { "Verkauft", 125, 125, 125 }, { "Spieleranzahl", 140, 140, 140 },
+    { "", 20, 20, 20 } }, 20 );
+    neuKarteName = initTextFeld( 10, 570, 195, 20, zSchrift, TextFeld::Style::TextFeld, "" );
     initToolTip( neuKarteName, "Name einer neuen Karte", zSchrift, hauptScreen );
-	neuKarteSpielArt = initAuswahlBox( 215, 570, 195, 20, zSchrift, ABSTYLE, {} );
-	neuKarte = initKnopf( 420, 570, 120, 20, zSchrift, Knopf::Style::Sichtbar, "Karte Erstellen" );
-	laden = ( Framework::Animation2D* )ladeAnimation->dublizieren();
-	laden->setPosition( 425, 275 );
-	laden->setSichtbar( 0 );
-	schrift = zSchrift->getThis();
-	aktion = 0;
-	tickVal = 0;
-	rend = 0;
+    neuKarteSpielArt = initAuswahlBox( 215, 570, 195, 20, zSchrift, ABSTYLE, {} );
+    neuKarte = initKnopf( 420, 570, 120, 20, zSchrift, Knopf::Style::Sichtbar, "Karte Erstellen" );
+    laden = ( Framework::Animation2D * )ladeAnimation->dublizieren();
+    laden->setPosition( 425, 275 );
+    laden->setSichtbar( 0 );
+    schrift = zSchrift->getThis();
+    aktion = 0;
+    tickVal = 0;
+    rend = 0;
 }
 
 // Destruktor
 Auswahl::~Auswahl()
 {
-	if( run )
-		warteAufThread( 1000 );
-	if( run )
-		ende();
-	laden->release();
-	suchFilterT->release();
-	suchFilter->release();
-	suchen->release();
-	sortSpalte->release();
-	sortRichtung->release();
-	karten->release();
-	neuKarteName->release();
-	neuKarteSpielArt->release();
-	neuKarte->release();
-	schrift->release();
-	kEditor->release();
+    if( run )
+        warteAufThread( 1000 );
+    if( run )
+        ende();
+    laden->release();
+    suchFilterT->release();
+    suchFilter->release();
+    suchen->release();
+    sortSpalte->release();
+    sortRichtung->release();
+    karten->release();
+    neuKarteName->release();
+    neuKarteSpielArt->release();
+    neuKarte->release();
+    schrift->release();
+    kEditor->release();
 }
 
 // nicht constant
 void Auswahl::setSichtbar( bool sicht )
 {
-	sichtbar = sicht;
-	if( sichtbar )
-	{
-		MausEreignis me;
-		me.id = ME_RLinks;
-		me.verarbeitet = 0;
-		me.mx = suchen->getX() + 1;
-		me.my = suchen->getY() + 1;
-		doMausEreignis( me );
-	}
+    sichtbar = sicht;
+    if( sichtbar )
+    {
+        MausEreignis me;
+        me.id = ME_RLinks;
+        me.verarbeitet = 0;
+        me.mx = suchen->getX() + 1;
+        me.my = suchen->getY() + 1;
+        doMausEreignis( me );
+    }
 }
 
 void Auswahl::thread()
 {
-	laden->setSichtbar( 1 );
+    laden->setSichtbar( 1 );
     if( aktion < 0 )
     {
         int port = 0;
@@ -109,8 +109,8 @@ void Auswahl::thread()
         editorClient->release();
         return;
     }
-	if( aktion )
-	{
+    if( aktion )
+    {
         int port = 0;
         Text ip = "";
         if( editorClient )
@@ -138,143 +138,134 @@ void Auswahl::thread()
             run = 0;
             return;
         }
-		kEditor->setKarte( aktion );
-		aktion = 0;
-		setSichtbar( 0 );
-		while( alpha != 0 )
-			Sleep( 100 );
-		laden->setSichtbar( 0 );
-		run = 0;
-		return;
-	}
-	Array< int > *saList = infoClient->getAccountSpielArtListe();
-	if( saList )
-	{
-		RCArray< Text > *saNamen = new RCArray< Text >();
-		int anz = saList->getEintragAnzahl();
-		for( int i = 0; i < anz; i++ )
-		{
-			if( !saList->hat( i ) )
-				continue;
-			Text *name = infoClient->getSpielName( saList->hat( i ) ? saList->get( i ) : 0 );
-			if( name )
-				saNamen->add( name );
-		}
-		neuKarteSpielArt->lockZeichnung();
-		neuKarteSpielArt->setAuswahl( 0 );
-		anz = neuKarteSpielArt->getEintragAnzahl();
-		for( int i = 0; i < anz; i++ )
-			neuKarteSpielArt->removeEintrag( 0 );
-		anz = saNamen->getEintragAnzahl();
-		for( int i = 0; i < anz; i++ )
-		{
-			if( saNamen->z( i ) )
-				neuKarteSpielArt->addEintrag( saNamen->z( i )->getText() );
-		}
-		neuKarteSpielArt->unlockZeichnung();
-		saNamen->release();
-		saList->release();
-	}
-	karten->lockZeichnung();
-	int anz = karten->getZeilenAnzahl();
-	for( int i = 1; i < anz; i++ )
-		karten->removeZeile( 1 );
-	karten->unlockZeichnung();
-	Bild *shopWeiter = bilder->get( "shop.ltdb/weiter.png" );
-	if( !shopWeiter )
-	{
-		LTDBDatei *datei = new LTDBDatei();
-		datei->setDatei( new Text( "data/client/bilder/shop.ltdb" ) );
-		datei->leseDaten( 0 );
-		shopWeiter = datei->laden( 0, new Text( "weiter.png" ) );
-		datei->release();
-		bilder->add( "shop.ltdb/weiter.png", shopWeiter->getThis() );
-	}
-	Array< int > *kId = new Array< int >();
-	RCArray< Text > *kName = new RCArray< Text >();
-	RCArray< Text > *saName = new RCArray< Text >();
-	Array< int > *kupfer = new Array< int >();
-	Array< int > *verkauft = new Array< int >();
-	Array< int > *maxSpieler = new Array< int >();
-	int kAnz = infoClient->getKartenListe( suchFilter->zText()->getText(), (char)sortSpalte->getAuswahl(), (char)sortRichtung->getAuswahl(),
-										   kId, kName, saName, kupfer, verkauft, maxSpieler );
-	for( int i = 0; i < kAnz; i++ )
-	{
-		Text zeile;
-		zeile = kId->get( i );
-		karten->addZeile( zeile );
-		karten->setZeichnungZ( 0, i + 1, initTextFeld( 0, 0, 0, 0, schrift, TextFeld::Style::Text | TextFeld::Style::VCenter, kName->z( i )->getText() ) );
-		karten->setZeichnungZ( 1, i + 1, initTextFeld( 0, 0, 0, 0, schrift, TextFeld::Style::Text | TextFeld::Style::VCenter, saName->z( i )->getText() ) );
-		karten->setZeichnungZ( 2, i + 1, initTextFeld( 0, 0, 0, 0, schrift, TextFeld::Style::Text | TextFeld::Style::VCenter, Text() += kupfer->get( i ) ) );
-		karten->setZeichnungZ( 3, i + 1, initTextFeld( 0, 0, 0, 0, schrift, TextFeld::Style::Text | TextFeld::Style::VCenter, Text() += verkauft->get( i ) ) );
-		karten->setZeichnungZ( 4, i + 1, initTextFeld( 0, 0, 0, 0, schrift, TextFeld::Style::Text | TextFeld::Style::VCenter, Text() += maxSpieler->get( i ) ) );
-		Knopf *weiter = initKnopf( 0, 0, 0, 0, schrift, 0, "" );
-		weiter->setStyle( Knopf::Style::Sichtbar | Knopf::Style::Erlaubt | Knopf::Style::Hintergrund | Knopf::Style::HBild | Knopf::Style::KlickBuffer );
-		weiter->setHintergrundBildZ( shopWeiter->getThis() );
-		weiter->setMausEreignisParameter( this );
-		weiter->setMausEreignis( auswahlWeiterME );
-		karten->setZeichnungZ( 5, i + 1, weiter );
-	}
-	kId->release();
-	kName->release();
-	saName->release();
-	kupfer->release();
-	verkauft->release();
-	maxSpieler->release();
-	shopWeiter->release();
-	laden->setSichtbar( 0 );
-	run = 0;
+        kEditor->setKarte( aktion );
+        aktion = 0;
+        setSichtbar( 0 );
+        while( alpha != 0 )
+            Sleep( 100 );
+        laden->setSichtbar( 0 );
+        run = 0;
+        return;
+    }
+    Array< int > *saList = infoClient->getAccountSpielArtListe();
+    if( saList )
+    {
+        RCArray< Text > *saNamen = new RCArray< Text >();
+        int anz = saList->getEintragAnzahl();
+        for( int i = 0; i < anz; i++ )
+        {
+            if( !saList->hat( i ) )
+                continue;
+            Text * name = infoClient->getSpielName( saList->hat( i ) ? saList->get( i ) : 0 );
+            if( name )
+                saNamen->add( name );
+        }
+        neuKarteSpielArt->lockZeichnung();
+        neuKarteSpielArt->setAuswahl( 0 );
+        anz = neuKarteSpielArt->getEintragAnzahl();
+        for( int i = 0; i < anz; i++ )
+            neuKarteSpielArt->removeEintrag( 0 );
+        anz = saNamen->getEintragAnzahl();
+        for( int i = 0; i < anz; i++ )
+        {
+            if( saNamen->z( i ) )
+                neuKarteSpielArt->addEintrag( saNamen->z( i )->getText() );
+        }
+        neuKarteSpielArt->unlockZeichnung();
+        saNamen->release();
+        saList->release();
+    }
+    karten->lockZeichnung();
+    int anz = karten->getZeilenAnzahl();
+    for( int i = 1; i < anz; i++ )
+        karten->removeZeile( 1 );
+    karten->unlockZeichnung();
+    Bild * shopWeiter = bilder->get( "data/client/bilder/shop.ltdb/weiter.png" );
+    Array< int > * kId = new Array< int >();
+    RCArray< Text > * kName = new RCArray< Text >();
+    RCArray< Text > * saName = new RCArray< Text >();
+    Array< int > * kupfer = new Array< int >();
+    Array< int > * verkauft = new Array< int >();
+    Array< int > * maxSpieler = new Array< int >();
+    int kAnz = infoClient->getKartenListe( suchFilter->zText()->getText(), (char)sortSpalte->getAuswahl(), (char)sortRichtung->getAuswahl(),
+                                           kId, kName, saName, kupfer, verkauft, maxSpieler );
+    for( int i = 0; i < kAnz; i++ )
+    {
+        Text zeile;
+        zeile = kId->get( i );
+        karten->addZeile( zeile );
+        karten->setZeichnungZ( 0, i + 1, initTextFeld( 0, 0, 0, 0, schrift, TextFeld::Style::Text | TextFeld::Style::VCenter, kName->z( i )->getText() ) );
+        karten->setZeichnungZ( 1, i + 1, initTextFeld( 0, 0, 0, 0, schrift, TextFeld::Style::Text | TextFeld::Style::VCenter, saName->z( i )->getText() ) );
+        karten->setZeichnungZ( 2, i + 1, initTextFeld( 0, 0, 0, 0, schrift, TextFeld::Style::Text | TextFeld::Style::VCenter, Text() += kupfer->get( i ) ) );
+        karten->setZeichnungZ( 3, i + 1, initTextFeld( 0, 0, 0, 0, schrift, TextFeld::Style::Text | TextFeld::Style::VCenter, Text() += verkauft->get( i ) ) );
+        karten->setZeichnungZ( 4, i + 1, initTextFeld( 0, 0, 0, 0, schrift, TextFeld::Style::Text | TextFeld::Style::VCenter, Text() += maxSpieler->get( i ) ) );
+        Knopf * weiter = initKnopf( 0, 0, 0, 0, schrift, 0, "" );
+        weiter->setStyle( Knopf::Style::Sichtbar | Knopf::Style::Erlaubt | Knopf::Style::Hintergrund | Knopf::Style::HBild | Knopf::Style::KlickBuffer );
+        weiter->setHintergrundBildZ( shopWeiter->getThis() );
+        weiter->setMausEreignisParameter( this );
+        weiter->setMausEreignis( auswahlWeiterME );
+        karten->setZeichnungZ( 5, i + 1, weiter );
+    }
+    kId->release();
+    kName->release();
+    saName->release();
+    kupfer->release();
+    verkauft->release();
+    maxSpieler->release();
+    shopWeiter->release();
+    laden->setSichtbar( 0 );
+    run = 0;
 }
 
-bool Auswahl::weiterME( Zeichnung *obj, MausEreignis &me )
+bool Auswahl::weiterME( Zeichnung * obj, MausEreignis & me )
 {
-	if( me.id != ME_RLinks )
-		return 1;
-	karten->lockZeichnung();
-	int anz = karten->getZeilenAnzahl();
-	for( int i = 1; i < anz; i++ )
-	{
-		if( karten->zZeichnung( 5, i ) == obj )
-		{
+    if( me.id != ME_RLinks )
+        return 1;
+    karten->lockZeichnung();
+    int anz = karten->getZeilenAnzahl();
+    for( int i = 1; i < anz; i++ )
+    {
+        if( karten->zZeichnung( 5, i ) == obj )
+        {
             aktion = *karten->zZeilenName( i );
-			start();
-		}
-	}
-	karten->unlockZeichnung();
-	return 1;
+            start();
+        }
+    }
+    karten->unlockZeichnung();
+    return 1;
 }
 
-void Auswahl::doMausEreignis( MausEreignis &me )
+void Auswahl::doMausEreignis( MausEreignis & me )
 {
-	if( !sichtbar || run )
-		return;
-	suchFilter->doMausEreignis( me );
-	bool vera = me.verarbeitet;
-	suchen->doMausEreignis( me );
-	if( !vera && me.verarbeitet && me.id == ME_RLinks )
-	{
-		aktion = 0;
-		start();
-	}
-	int ausw = sortSpalte->getAuswahl();
-	sortSpalte->doMausEreignis( me );
-	if( ausw != sortSpalte->getAuswahl() )
-	{
-		aktion = 0;
-		start();
+    if( !sichtbar || run )
+        return;
+    suchFilter->doMausEreignis( me );
+    bool vera = me.verarbeitet;
+    suchen->doMausEreignis( me );
+    if( !vera && me.verarbeitet &&me.id == ME_RLinks )
+    {
+        aktion = 0;
+        start();
+    }
+    int ausw = sortSpalte->getAuswahl();
+    sortSpalte->doMausEreignis( me );
+    if( ausw != sortSpalte->getAuswahl() )
+    {
+        aktion = 0;
+        start();
         sortSpalte->einklappen();
-	}
-	ausw = sortRichtung->getAuswahl();
-	sortRichtung->doMausEreignis( me );
-	if( ausw != sortRichtung->getAuswahl() )
-	{
-		aktion = 0;
-		start();
+    }
+    ausw = sortRichtung->getAuswahl();
+    sortRichtung->doMausEreignis( me );
+    if( ausw != sortRichtung->getAuswahl() )
+    {
+        aktion = 0;
+        start();
         sortRichtung->einklappen();
-	}
-	karten->doMausEreignis( me );
-	neuKarteName->doMausEreignis( me );
-	neuKarteSpielArt->doMausEreignis( me );
+    }
+    karten->doMausEreignis( me );
+    neuKarteName->doMausEreignis( me );
+    neuKarteSpielArt->doMausEreignis( me );
     vera = me.verarbeitet;
     neuKarte->doMausEreignis( me );
     if( !vera && me.verarbeitet && me.id == ME_RLinks )
@@ -284,115 +275,115 @@ void Auswahl::doMausEreignis( MausEreignis &me )
     }
 }
 
-void Auswahl::doTastaturEreignis( TastaturEreignis &te )
+void Auswahl::doTastaturEreignis( TastaturEreignis & te )
 {
-	if( !sichtbar || run )
-		return;
-	bool vera = te.verarbeitet;
-	suchFilter->doTastaturEreignis( te );
-	if( !vera && te.verarbeitet && te.taste == T_Enter && te.id == TE_Release )
-	{
-		MausEreignis me;
-		me.id = ME_RLinks;
-		me.verarbeitet = 0;
-		me.mx = suchen->getX() + 1;
-		me.my = suchen->getY() + 1;
-		doMausEreignis( me );
-	}
-	neuKarteName->doTastaturEreignis( te );
+    if( !sichtbar || run )
+        return;
+    bool vera = te.verarbeitet;
+    suchFilter->doTastaturEreignis( te );
+    if( !vera && te.verarbeitet &&te.taste == T_Enter && te.id == TE_Release )
+    {
+        MausEreignis me;
+        me.id = ME_RLinks;
+        me.verarbeitet = 0;
+        me.mx = suchen->getX() + 1;
+        me.my = suchen->getY() + 1;
+        doMausEreignis( me );
+    }
+    neuKarteName->doTastaturEreignis( te );
 }
 
 bool Auswahl::tick( double zeit )
 {
-	tickVal += zeit * 250;
-	int val = (int)tickVal;
-	if( val < 1 )
-	{
-		bool ret = rend;
-		rend = 0;
-		return ret;
-	}
-	if( val > 10 )
-		val = 10;
-	rend |= sortSpalte->tick( zeit );
-	rend |= sortRichtung->tick( zeit );
-	rend |= neuKarteSpielArt->tick( zeit );
-	rend |= laden->tick( zeit );
-	rend |= suchFilterT->tick( zeit );
-	rend |= suchFilter->tick( zeit );
-	rend |= suchen->tick( zeit );
-	rend |= karten->tick( zeit );
-	rend |= neuKarteName->tick( zeit );
-	rend |= neuKarte->tick( zeit );
-	if( sichtbar && alpha != 255 && !run )
-	{
-		if( alpha + val > 255 )
-			alpha = 255;
-		else
-			alpha += val;
-		rend = 1;
-	}
-	if( sichtbar && alpha != 125 && run )
-	{
-		if( alpha > 125 )
-		{
-			if( alpha - val < 125 )
-				alpha = 125;
-			else
-				alpha -= val;
-			rend = 1;
-		}
-		else
-		{
-			if( alpha + val > 125 )
-				alpha = 125;
-			else
-				alpha += 125;
-			rend = 1;
-		}
-	}
-	if( !sichtbar && alpha != 0 )
-	{
-		if( alpha - val < 0 )
-			alpha = 0;
-		else
-			alpha -= val;
-		rend = 1;
-	}
-	bool ret = rend;
-	rend = 0;
-	return ret;
+    tickVal += zeit * 250;
+    int val = (int)tickVal;
+    if( val < 1 )
+    {
+        bool ret = rend;
+        rend = 0;
+        return ret;
+    }
+    if( val > 10 )
+        val = 10;
+    rend |= sortSpalte->tick( zeit );
+    rend |= sortRichtung->tick( zeit );
+    rend |= neuKarteSpielArt->tick( zeit );
+    rend |= laden->tick( zeit );
+    rend |= suchFilterT->tick( zeit );
+    rend |= suchFilter->tick( zeit );
+    rend |= suchen->tick( zeit );
+    rend |= karten->tick( zeit );
+    rend |= neuKarteName->tick( zeit );
+    rend |= neuKarte->tick( zeit );
+    if( sichtbar && alpha != 255 && !run )
+    {
+        if( alpha + val > 255 )
+            alpha = 255;
+        else
+            alpha += val;
+        rend = 1;
+    }
+    if( sichtbar && alpha != 125 && run )
+    {
+        if( alpha > 125 )
+        {
+            if( alpha - val < 125 )
+                alpha = 125;
+            else
+                alpha -= val;
+            rend = 1;
+        }
+        else
+        {
+            if( alpha + val > 125 )
+                alpha = 125;
+            else
+                alpha += 125;
+            rend = 1;
+        }
+    }
+    if( !sichtbar && alpha != 0 )
+    {
+        if( alpha - val < 0 )
+            alpha = 0;
+        else
+            alpha -= val;
+        rend = 1;
+    }
+    bool ret = rend;
+    rend = 0;
+    return ret;
 }
 
-void Auswahl::render( Bild &zRObj )
+void Auswahl::render( Bild & zRObj )
 {
-	if( !alpha )
-		return;
-	zRObj.setAlpha( alpha );
-	suchFilterT->render( zRObj );
-	suchFilter->render( zRObj );
-	suchen->render( zRObj );
-	karten->render( zRObj );
-	neuKarteName->render( zRObj );
-	neuKarte->render( zRObj );
-	neuKarteSpielArt->render( zRObj );
-	sortSpalte->render( zRObj );
-	sortRichtung->render( zRObj );
-	zRObj.releaseAlpha();
-	laden->render( zRObj );
+    if( !alpha )
+        return;
+    zRObj.setAlpha( alpha );
+    suchFilterT->render( zRObj );
+    suchFilter->render( zRObj );
+    suchen->render( zRObj );
+    karten->render( zRObj );
+    neuKarteName->render( zRObj );
+    neuKarte->render( zRObj );
+    neuKarteSpielArt->render( zRObj );
+    sortSpalte->render( zRObj );
+    sortRichtung->render( zRObj );
+    zRObj.releaseAlpha();
+    laden->render( zRObj );
 }
 
 // constant
 bool Auswahl::istSichtbar() const
 {
-	return sichtbar;
+    return sichtbar;
 }
 
 
 // Ereignisse
 bool auswahlWeiterME( void *p, void *obj, MausEreignis me )
 {
-	if( p )
-		return ( (Auswahl*)p )->weiterME( (Zeichnung*)obj, me );
-	return 1;
+    if( p )
+        return ( (Auswahl *)p )->weiterME( (Zeichnung *)obj, me );
+    return 1;
 }

+ 2 - 11
KSGClient/NachLogin/Editor/Karte/ShopSeite/KESSVorschau.cpp

@@ -278,17 +278,8 @@ void KESSVorschauKarteScript::ksgsAktion( RCArray< KSGSVariable > * parameter, K
                         p = 0;
                     else
                         p += 6;
-                    Bild * b = bilder->get( *n );
-                    if( !b )
-                    {
-                        LTDBDatei *dat = new LTDBDatei();
-                        dat->setDatei( pf->getThis() );
-                        dat->leseDaten( 0 );
-                        b = dat->laden( 0, n->getTeilText( p, n->getLength() ) );
-                        dat->release();
-                        if( b )
-                            bilder->add( *n, b->getThis() );
-                    }
+                    Text nn = Text( pf->getText() ) + "/" + (const char *)( n->getText() + p );
+                    Bild * b = bilder->get( nn );
                     if( b )
                     {
                         KSGSVariableDef def = { KSGS_BILD, 0, 3, "" };

+ 2 - 20
KSGClient/NachLogin/ImSpiel/Laden/SpielLaden.cpp

@@ -30,26 +30,8 @@ SpielLadenListeSpieler::SpielLadenListeSpieler( int accountId, Schrift *zSchrift
 	fortschritt->setSize( 400, 20 );
 	fortschritt->reset();
 	fortschritt->setAktionAnzahl( 100 );
-	Bild *fbhb = bilder->get( "system.ltdb/fortschritt lehr.png" );
-	if( !fbhb )
-	{
-		LTDBDatei *datei = new LTDBDatei();
-		datei->setDatei( new Text( "data/bilder/system.ltdb" ) );
-		datei->leseDaten( 0 );
-		fbhb = datei->laden( 0, new Text( "fortschrittleh" ) );
-		datei->release();
-		bilder->add( "system.ltdb/fortschritt lehr.png", fbhb->getThis() );
-	}
-	Bild *fbfhb = bilder->get( "system.ltdb/fortschritt voll.png" );
-	if( !fbfhb )
-	{
-		LTDBDatei *datei = new LTDBDatei();
-		datei->setDatei( new Text( "data/bilder/system.ltdb" ) );
-		datei->leseDaten( 0 );
-		fbfhb = datei->laden( 0, new Text( "fortschrittvol" ) );
-		datei->release();
-		bilder->add( "system.ltdb/fortschritt voll.png", fbfhb->getThis() );
-	}
+	Bild *fbhb = bilder->get( "data/bilder/system.ltdb/fortschrittleh" );
+	Bild *fbfhb = bilder->get( "data/bilder/system.ltdb/fortschrittvol" );
 	fortschritt->setHintergrundBildZ( fbhb );
 	fortschritt->setFBgBildZ( fbfhb );
 	spielerFarbe = 0;

+ 51 - 78
KSGClient/NachLogin/Shop/Karten/KartenKaufen.cpp

@@ -12,12 +12,12 @@ void KarteKaufenKSGSAktion( void *p, RCArray< KSGSVariable > *parameter, KSGSVar
 {
     if( !p )
         return;
-    ( (KartenKaufenAuswahl*)p )->ksgsAktion( parameter, retVal );
+    ( (KartenKaufenAuswahl *)p )->ksgsAktion( parameter, retVal );
 }
 
 // Inhalt der KartenKaufenAuswahl Klasse aus KartenKaufen.h
 // Konstruktor
-KartenKaufenAuswahl::KartenKaufenAuswahl( Schrift *zSchrift )
+KartenKaufenAuswahl::KartenKaufenAuswahl( Schrift * zSchrift )
     : Thread()
 {
     karteId = 0;
@@ -39,7 +39,7 @@ KartenKaufenAuswahl::KartenKaufenAuswahl( Schrift *zSchrift )
             fenster = 0;
             nachLogin->zNachrichtenListe()->addNachricht( new Text( "Fehler" ),
                                                           new Text( "Der Einstiegspunkt '" KSGS_START_FUNKTION "' in der DLL-Datei "
-                                                                    "'data/bin/KSGScript.dll' konnte nicht gefunden werden." ),
+                                                          "'data/bin/KSGScript.dll' konnte nicht gefunden werden." ),
                                                           new Text( "Ok" ), 0 );
         }
     }
@@ -53,7 +53,7 @@ KartenKaufenAuswahl::KartenKaufenAuswahl( Schrift *zSchrift )
     ram = new LRahmen();
     ram->setSize( 555, 380 );
     ram->setFarbe( 0xFFFFFFFF );
-    laden = ( Framework::Animation2D* )ladeAnimation->dublizieren();
+    laden = ( Framework::Animation2D * )ladeAnimation->dublizieren();
     laden->setPosition( 252, 165 );
     laden->setSichtbar( 0 );
     pos = Punkt( 220, 10 );
@@ -118,7 +118,7 @@ void KartenKaufenAuswahl::thread()
             Sleep( 100 );
         if( !shopClient )
             shopClient = mainClient->createShopServerClient();
-        if( shopClient && shopClient->verbinde() )
+        if( shopClient &&shopClient->verbinde() )
         {
             shopClient->ladeKarteSeite( karteId );
             shopClient->trenne( 0 );
@@ -136,12 +136,12 @@ void KartenKaufenAuswahl::thread()
     run = 0;
 }
 
-void KartenKaufenAuswahl::ksgsAktion( RCArray< KSGSVariable > *parameter, KSGSVariable **retVal )
+void KartenKaufenAuswahl::ksgsAktion( RCArray< KSGSVariable > * parameter, KSGSVariable * *retVal )
 {
     KSGSVariable *befehl = parameter->z( 0 );
     if( !befehl )
         return;
-    Text *b = befehl->getText();
+    Text * b = befehl->getText();
     if( !b )
         return;
     if( b->istGleich( "GetBesitzStatus" ) )
@@ -149,7 +149,7 @@ void KartenKaufenAuswahl::ksgsAktion( RCArray< KSGSVariable > *parameter, KSGSVa
         int besitz = 0;
         if( !shopClient )
             shopClient = mainClient->createShopServerClient();
-        if( shopClient && shopClient->verbinde() )
+        if( shopClient &&shopClient->verbinde() )
         {
             besitz = shopClient->getKarteBesitzStatus( karteId );
             shopClient->trenne( 0 );
@@ -164,7 +164,7 @@ void KartenKaufenAuswahl::ksgsAktion( RCArray< KSGSVariable > *parameter, KSGSVa
         {
             nachLogin->zNachrichtenListe()->addNachricht( new Text( "Fehler" ),
                                                           new Text( "Der Einstiegspunkt '" KSGS_VARIABLE_FUNKTION "' in der DLL-Datei "
-                                                                    "'data/bin/KSGScript.dll' konnte nicht gefunden werden." ),
+                                                          "'data/bin/KSGScript.dll' konnte nicht gefunden werden." ),
                                                           new Text( "Ok" ), 0 );
         }
         b->release();
@@ -177,7 +177,7 @@ void KartenKaufenAuswahl::ksgsAktion( RCArray< KSGSVariable > *parameter, KSGSVa
         {
             nachLogin->zNachrichtenListe()->addNachricht( new Text( "Fehler" ),
                                                           new Text( "Auf dieser Seite befindet sich ein Fehler im KSG-Script. "
-                                                                    "Sie könnte eventuell nicht richtig funktionieren." ),
+                                                          "Sie könnte eventuell nicht richtig funktionieren." ),
                                                           new Text( "Ok" ), 0 );
         }
         else
@@ -186,7 +186,7 @@ void KartenKaufenAuswahl::ksgsAktion( RCArray< KSGSVariable > *parameter, KSGSVa
             int preis = 0;
             if( !shopClient )
                 shopClient = mainClient->createShopServerClient();
-            if( shopClient && shopClient->verbinde() )
+            if( shopClient &&shopClient->verbinde() )
             {
                 preis = shopClient->getKartePreis( karteId, testVersion );
                 shopClient->trenne( 0 );
@@ -201,7 +201,7 @@ void KartenKaufenAuswahl::ksgsAktion( RCArray< KSGSVariable > *parameter, KSGSVa
             {
                 nachLogin->zNachrichtenListe()->addNachricht( new Text( "Fehler" ),
                                                               new Text( "Der Einstiegspunkt '" KSGS_VARIABLE_FUNKTION "' in der DLL-Datei "
-                                                                        "'data/bin/KSGScript.dll' konnte nicht gefunden werden." ),
+                                                              "'data/bin/KSGScript.dll' konnte nicht gefunden werden." ),
                                                               new Text( "Ok" ), 0 );
             }
         }
@@ -213,7 +213,7 @@ void KartenKaufenAuswahl::ksgsAktion( RCArray< KSGSVariable > *parameter, KSGSVa
         int verbleibend = 0;
         if( !shopClient )
             shopClient = mainClient->createShopServerClient();
-        if( shopClient && shopClient->verbinde() )
+        if( shopClient &&shopClient->verbinde() )
         {
             verbleibend = shopClient->getKarteTestversion( karteId );
             shopClient->trenne( 0 );
@@ -228,7 +228,7 @@ void KartenKaufenAuswahl::ksgsAktion( RCArray< KSGSVariable > *parameter, KSGSVa
         {
             nachLogin->zNachrichtenListe()->addNachricht( new Text( "Fehler" ),
                                                           new Text( "Der Einstiegspunkt '" KSGS_VARIABLE_FUNKTION "' in der DLL-Datei "
-                                                                    "'data/bin/KSGScript.dll' konnte nicht gefunden werden." ),
+                                                          "'data/bin/KSGScript.dll' konnte nicht gefunden werden." ),
                                                           new Text( "Ok" ), 0 );
         }
         b->release();
@@ -239,7 +239,7 @@ void KartenKaufenAuswahl::ksgsAktion( RCArray< KSGSVariable > *parameter, KSGSVa
         int erwerbbar = 0;
         if( !shopClient )
             shopClient = mainClient->createShopServerClient();
-        if( shopClient && shopClient->verbinde() )
+        if( shopClient &&shopClient->verbinde() )
         {
             erwerbbar = shopClient->istKarteErwerbbar( karteId );
             shopClient->trenne( 0 );
@@ -254,7 +254,7 @@ void KartenKaufenAuswahl::ksgsAktion( RCArray< KSGSVariable > *parameter, KSGSVa
         {
             nachLogin->zNachrichtenListe()->addNachricht( new Text( "Fehler" ),
                                                           new Text( "Der Einstiegspunkt '" KSGS_VARIABLE_FUNKTION "' in der DLL-Datei "
-                                                                    "'data/bin/KSGScript.dll' konnte nicht gefunden werden." ),
+                                                          "'data/bin/KSGScript.dll' konnte nicht gefunden werden." ),
                                                           new Text( "Ok" ), 0 );
         }
         b->release();
@@ -273,7 +273,7 @@ void KartenKaufenAuswahl::ksgsAktion( RCArray< KSGSVariable > *parameter, KSGSVa
         {
             nachLogin->zNachrichtenListe()->addNachricht( new Text( "Fehler" ),
                                                           new Text( "Der Einstiegspunkt '" KSGS_VARIABLE_FUNKTION "' in der DLL-Datei "
-                                                                    "'data/bin/KSGScript.dll' konnte nicht gefunden werden." ),
+                                                          "'data/bin/KSGScript.dll' konnte nicht gefunden werden." ),
                                                           new Text( "Ok" ), 0 );
         }
         b->release();
@@ -286,7 +286,7 @@ void KartenKaufenAuswahl::ksgsAktion( RCArray< KSGSVariable > *parameter, KSGSVa
         {
             nachLogin->zNachrichtenListe()->addNachricht( new Text( "Fehler" ),
                                                           new Text( "Auf dieser Seite befindet sich ein Fehler im KSG-Script. "
-                                                                    "Sie könnte eventuell nicht richtig funktionieren." ),
+                                                          "Sie könnte eventuell nicht richtig funktionieren." ),
                                                           new Text( "Ok" ), 0 );
         }
         else
@@ -337,7 +337,7 @@ void KartenKaufenAuswahl::ksgsAktion( RCArray< KSGSVariable > *parameter, KSGSVa
         {
             nachLogin->zNachrichtenListe()->addNachricht( new Text( "Fehler" ),
                                                           new Text( "Auf dieser Seite befindet sich ein Fehler im KSG-Script. "
-                                                                    "Sie könnte eventuell nicht richtig funktionieren." ),
+                                                          "Sie könnte eventuell nicht richtig funktionieren." ),
                                                           new Text( "Ok" ), 0 );
         }
         else
@@ -348,7 +348,7 @@ void KartenKaufenAuswahl::ksgsAktion( RCArray< KSGSVariable > *parameter, KSGSVa
             {
                 nachLogin->zNachrichtenListe()->addNachricht( new Text( "Fehler" ),
                                                               new Text( "Auf dieser Seite befindet sich ein Fehler im KSG-Script. "
-                                                                        "Sie könnte eventuell nicht richtig funktionieren." ),
+                                                              "Sie könnte eventuell nicht richtig funktionieren." ),
                                                               new Text( "Ok" ), 0 );
             }
             else
@@ -361,17 +361,8 @@ void KartenKaufenAuswahl::ksgsAktion( RCArray< KSGSVariable > *parameter, KSGSVa
                         p = 0;
                     else
                         p += 6;
-                    Bild *b = bilder->get( *n );
-                    if( !b )
-                    {
-                        LTDBDatei *dat = new LTDBDatei();
-                        dat->setDatei( pf->getThis() );
-                        dat->leseDaten( 0 );
-                        b = dat->laden( 0, n->getTeilText( p, n->getLength() ) );
-                        dat->release();
-                        if( b )
-                            bilder->add( *n, b->getThis() );
-                    }
+                    Text nn = Text( pf->getText() ) + "/" + (const char *)( n->getText() + p );
+                    Bild * b = bilder->get( nn );
                     if( b )
                     {
                         KSGSVariableDef def = { KSGS_BILD, 0, 3, "" };
@@ -381,7 +372,7 @@ void KartenKaufenAuswahl::ksgsAktion( RCArray< KSGSVariable > *parameter, KSGSVa
                         {
                             nachLogin->zNachrichtenListe()->addNachricht( new Text( "Fehler" ),
                                                                           new Text( "Der Einstiegspunkt '" KSGS_SET_BILD_FUNKTION "' in der DLL-Datei "
-                                                                                    "'data/bin/KSGScript.dll' konnte nicht gefunden werden." ),
+                                                                          "'data/bin/KSGScript.dll' konnte nicht gefunden werden." ),
                                                                           new Text( "Ok" ), 0 );
                             b->release();
                         }
@@ -394,7 +385,7 @@ void KartenKaufenAuswahl::ksgsAktion( RCArray< KSGSVariable > *parameter, KSGSVa
                 {
                     nachLogin->zNachrichtenListe()->addNachricht( new Text( "Fehler" ),
                                                                   new Text( "Der Einstiegspunkt '" KSGS_VARIABLE_FUNKTION "' in der DLL-Datei "
-                                                                            "'data/bin/KSGScript.dll' konnte nicht gefunden werden." ),
+                                                                  "'data/bin/KSGScript.dll' konnte nicht gefunden werden." ),
                                                                   new Text( "Ok" ), 0 );
                 }
             }
@@ -408,7 +399,7 @@ void KartenKaufenAuswahl::ksgsAktion( RCArray< KSGSVariable > *parameter, KSGSVa
     }
 }
 
-void KartenKaufenAuswahl::doMausEreignis( MausEreignis &me )
+void KartenKaufenAuswahl::doMausEreignis( MausEreignis & me )
 {
     if( run )
         return;
@@ -420,7 +411,7 @@ void KartenKaufenAuswahl::doMausEreignis( MausEreignis &me )
     me.my += pos.y;
 }
 
-void KartenKaufenAuswahl::doTastaturEreignis( TastaturEreignis &te )
+void KartenKaufenAuswahl::doTastaturEreignis( TastaturEreignis & te )
 {
     if( run )
         return;
@@ -440,7 +431,7 @@ bool KartenKaufenAuswahl::tick( double zeit )
             alpha -= (unsigned char)( zeit * 150 );
         rend = 1;
     }
-    if( !run && karteId && alpha < 255 )
+    if( !run && karteId &&alpha < 255 )
     {
         if( alpha + zeit * 150 > 255 )
             alpha = 255;
@@ -451,7 +442,7 @@ bool KartenKaufenAuswahl::tick( double zeit )
     return rend;
 }
 
-void KartenKaufenAuswahl::render( Bild &zRObj )
+void KartenKaufenAuswahl::render( Bild & zRObj )
 {
     if( !zRObj.setDrawOptions( pos.x, pos.y, ram->getBreite(), ram->getHeight() ) )
         return;
@@ -467,7 +458,7 @@ void KartenKaufenAuswahl::render( Bild &zRObj )
 
 // Inhalt der KartenKaufenListeEintrag Klasse aus KartenKaufen.h
 // Konstruktor
-KartenKaufenListeEintrag::KartenKaufenListeEintrag( int id, Schrift *schrift )
+KartenKaufenListeEintrag::KartenKaufenListeEintrag( int id, Schrift * schrift )
 {
     karteId = id;
     auswählen = initKnopf( 173, 73, 22, 22, 0, 0, "" );
@@ -476,8 +467,8 @@ KartenKaufenListeEintrag::KartenKaufenListeEintrag( int id, Schrift *schrift )
     initToolTip( auswählen, "Karte auswählen.", schrift, hauptScreen );
     schrift->release();
     auswählen->setRahmenBreite( 1 );
-    LTDBDatei *datei = new LTDBDatei();
-    Text *bdpf = new Text( "data/tmp/shop/kaufen/karten/" );
+    LTDBDatei * datei = new LTDBDatei();
+    Text * bdpf = new Text( "data/tmp/shop/kaufen/karten/" );
     bdpf->append( id );
     bdpf->append( "/titelbg.ltdb" );
     datei->setDatei( bdpf );
@@ -512,11 +503,11 @@ void KartenKaufenListeEintrag::resetAuswahl()
     ausw = 0;
 }
 
-bool KartenKaufenListeEintrag::doMausEreignis( MausEreignis &me )
+bool KartenKaufenListeEintrag::doMausEreignis( MausEreignis & me )
 {
     bool vera = me.verarbeitet;
     auswählen->doMausEreignis( me );
-    if( !vera && me.verarbeitet && me.id == ME_RLinks )
+    if( !vera && me.verarbeitet &&me.id == ME_RLinks )
     {
         ausw = 1;
         return 1;
@@ -552,7 +543,7 @@ bool KartenKaufenListeEintrag::tick( double zeit )
     return ret;
 }
 
-void KartenKaufenListeEintrag::render( int yOff, Bild &zRObj )
+void KartenKaufenListeEintrag::render( int yOff, Bild & zRObj )
 {
     if( !zRObj.setDrawOptions( 0, yOff, 200, 100 ) )
         return;
@@ -588,7 +579,7 @@ KartenKaufenListeEintrag *KartenKaufenListeEintrag::release()
 
 // Inhalt der KartenKaufenListe Klasse aus KartenKaufen.h
 // Konstruktor
-KartenKaufenListe::KartenKaufenListe( Schrift *schrift )
+KartenKaufenListe::KartenKaufenListe( Schrift * schrift )
 {
     s = schrift;
     pos = Punkt( 5, 55 );
@@ -613,13 +604,13 @@ KartenKaufenListe::~KartenKaufenListe()
 }
 
 // nicht constant
-void KartenKaufenListe::ladeKarten( Array< int > *karten )
+void KartenKaufenListe::ladeKarten( Array< int > * karten )
 {
     leeren();
     int anz = karten->getEintragAnzahl();
     if( !shopClient )
         shopClient = mainClient->createShopServerClient();
-    if( shopClient && shopClient->verbinde() )
+    if( shopClient &&shopClient->verbinde() )
     {
         for( int i = 0; i < anz; i++ )
         {
@@ -641,7 +632,7 @@ void KartenKaufenListe::leeren()
     rend = 1;
 }
 
-int KartenKaufenListe::doMausEreignis( MausEreignis &me )
+int KartenKaufenListe::doMausEreignis( MausEreignis & me )
 {
     int mx = me.mx;
     int my = me.my;
@@ -685,7 +676,7 @@ bool KartenKaufenListe::tick( double zeit )
     return ret;
 }
 
-void KartenKaufenListe::render( Bild &zRObj )
+void KartenKaufenListe::render( Bild & zRObj )
 {
     int br = ram->getBreite();
     int hö = ram->getHeight();
@@ -725,29 +716,11 @@ KartenKaufenListe *KartenKaufenListe::release()
 
 // Inhalt der KartenKaufen Klasse aus KartenKaufen.h
 // Konstruktor
-KartenKaufen::KartenKaufen( Schrift *zSchrift )
+KartenKaufen::KartenKaufen( Schrift * zSchrift )
     : Thread()
 {
-    Bild *shopZurück = bilder->get( "shop.ltdb/zurück.png" );
-    if( !shopZurück )
-    {
-        LTDBDatei *datei = new LTDBDatei();
-        datei->setDatei( new Text( "data/client/bilder/shop.ltdb" ) );
-        datei->leseDaten( 0 );
-        shopZurück = datei->laden( 0, new Text( "zurück.png" ) );
-        datei->release();
-        bilder->add( "shop.ltdb/zurück.png", shopZurück->getThis() );
-    }
-    Bild *shopWeiter = bilder->get( "shop.ltdb/weiter.png" );
-    if( !shopWeiter )
-    {
-        LTDBDatei *datei = new LTDBDatei();
-        datei->setDatei( new Text( "data/client/bilder/shop.ltdb" ) );
-        datei->leseDaten( 0 );
-        shopWeiter = datei->laden( 0, new Text( "weiter.png" ) );
-        datei->release();
-        bilder->add( "shop.ltdb/weiter.png", shopWeiter->getThis() );
-    }
+    Bild *shopZurück = bilder->get( "data/client/bilder/shop.ltdb/zurück.png" );
+    Bild *shopWeiter = bilder->get( "data/client/bilder/shop.ltdb/weiter.png" );
     alpha = 255;
     sichtbar = 0;
     suchText = new Text( "" );
@@ -787,7 +760,7 @@ KartenKaufen::KartenKaufen( Schrift *zSchrift )
     initToolTip( weiter, "Seite weiter blättern.", zSchrift, hauptScreen );
     liste = new KartenKaufenListe( zSchrift->getThis() );
     auswahl = new KartenKaufenAuswahl( zSchrift );
-    laden = ( Framework::Animation2D* )ladeAnimation->dublizieren();
+    laden = ( Framework::Animation2D * )ladeAnimation->dublizieren();
     laden->setPosition( 365, 195 );
     laden->setSichtbar( 0 );
     tickVal = 0;
@@ -844,7 +817,7 @@ void KartenKaufen::thread()
             {
                 if( !saList->hat( i ) )
                     continue;
-                Text *name = infoClient->getSpielName( saList->hat( i ) ? saList->get( i ) : 0 );
+                Text * name = infoClient->getSpielName( saList->hat( i ) ? saList->get( i ) : 0 );
                 if( name )
                     saNamen->add( name );
             }
@@ -881,10 +854,10 @@ void KartenKaufen::thread()
     int spielArtId = 0;
     if( spielArt->getAuswahl() > 0 )
         spielArtId = infoClient->getSpielId( spielArt->zEintrag( spielArt->getAuswahl() )->zText()->getText() );
-    Array< int > *list = 0;
+    Array< int > * list = 0;
     if( !shopClient )
         shopClient = mainClient->createShopServerClient();
-    if( shopClient && shopClient->verbinde() )
+    if( shopClient &&shopClient->verbinde() )
     {
         list = shopClient->suchKarten( suchText->getText(), spielArtId );
         shopClient->trenne( 0 );
@@ -908,7 +881,7 @@ void KartenKaufen::thread()
     auswahl->reset();
     liste->ladeKarten( slist );
     slist->release();
-    Text *t = new Text( "Seite " );
+    Text * t = new Text( "Seite " );
     t->append( maxSeite ? seite + 1 : 0 );
     t->append( " von " );
     t->append( maxSeite );
@@ -924,7 +897,7 @@ void KartenKaufen::thread()
     laden->setSichtbar( 0 );
 }
 
-void KartenKaufen::doMausEreignis( MausEreignis &me )
+void KartenKaufen::doMausEreignis( MausEreignis & me )
 {
     if( !sichtbar || run )
         return;
@@ -979,13 +952,13 @@ void KartenKaufen::doMausEreignis( MausEreignis &me )
     me.my = my;
 }
 
-void KartenKaufen::doTastaturEreignis( TastaturEreignis &te )
+void KartenKaufen::doTastaturEreignis( TastaturEreignis & te )
 {
     if( !sichtbar || run )
         return;
     bool vera = te.verarbeitet;
     suchFilter->doTastaturEreignis( te );
-    if( !vera && te.verarbeitet && te.taste == T_Enter && te.id == TE_Release )
+    if( !vera && te.verarbeitet &&te.taste == T_Enter && te.id == TE_Release )
     {
         MausEreignis me;
         me.id = ME_RLinks;
@@ -1058,7 +1031,7 @@ bool KartenKaufen::tick( double zeit )
     return ret;
 }
 
-void KartenKaufen::render( Bild &zRObj )
+void KartenKaufen::render( Bild & zRObj )
 {
     if( !alpha )
         return;

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

@@ -409,17 +409,8 @@ void SpieleKaufenAuswahl::ksgsAktion( RCArray< KSGSVariable > *parameter, KSGSVa
 						p = 0;
 					else
 						p += 6;
-					Bild *b = bilder->get( *n );
-					if( !b )
-					{
-						LTDBDatei *dat = new LTDBDatei();
-						dat->setDatei( pf->getThis() );
-						dat->leseDaten( 0 );
-						b = dat->laden( 0, n->getTeilText( p, n->getLength() ) );
-						dat->release();
-						if( b )
-							bilder->add( *n, b->getThis() );
-					}
+                    Text nn = Text( pf->getText() ) + "/" + (const char *)( n->getText() + p );
+                    Bild * b = bilder->get( nn );
 					if( b )
 					{
 						KSGSVariableDef def = { KSGS_BILD, 0, 3, "" };
@@ -776,26 +767,8 @@ SpieleKaufenListe *SpieleKaufenListe::release()
 SpieleKaufen::SpieleKaufen( Schrift *zSchrift )
 	: Thread()
 {
-	Bild *shopZurück = bilder->get( "shop.ltdb/zurück.png" );
-	if( !shopZurück )
-	{
-		LTDBDatei *datei = new LTDBDatei();
-		datei->setDatei( new Text( "data/client/bilder/shop.ltdb" ) );
-		datei->leseDaten( 0 );
-		shopZurück = datei->laden( 0, new Text( "zurück.png" ) );
-		datei->release();
-		bilder->add( "shop.ltdb/zurück.png", shopZurück->getThis() );
-	}
-	Bild *shopWeiter = bilder->get( "shop.ltdb/weiter.png" );
-	if( !shopWeiter )
-	{
-		LTDBDatei *datei = new LTDBDatei();
-		datei->setDatei( new Text( "data/client/bilder/shop.ltdb" ) );
-		datei->leseDaten( 0 );
-		shopWeiter = datei->laden( 0, new Text( "weiter.png" ) );
-		datei->release();
-		bilder->add( "shop.ltdb/weiter.png", shopWeiter->getThis() );
-	}
+	Bild *shopZurück = bilder->get( "data/client/bilder/shop.ltdb/zurück.png" );
+	Bild *shopWeiter = bilder->get( "data/client/bilder/shop.ltdb/weiter.png" );
 	alpha = 255;
 	sichtbar = 0;
 	suchText = new Text( "" );

+ 9 - 90
KSGClient/NachLogin/Spiele/Gruppe/Gruppe.cpp

@@ -13,36 +13,9 @@
 // Konstruktor
 GruppeEinladungAccount::GruppeEinladungAccount( Schrift *zSchrift )
 {
-    Bild *nachrichtBild = bilder->get( "chat.ltdb/nachricht.png" );
-    if( !nachrichtBild )
-    {
-        LTDBDatei *datei = new LTDBDatei();
-        datei->setDatei( new Text( "data/client/bilder/chat.ltdb" ) );
-        datei->leseDaten( 0 );
-        nachrichtBild = datei->laden( 0, new Text( "nachricht.png" ) );
-        datei->release();
-        bilder->add( "chat.ltdb/nachricht.png", nachrichtBild->getThis() );
-    }
-    Bild *neuSendenBild = bilder->get( "chat.ltdb/neusenden.png" );
-    if( !neuSendenBild )
-    {
-        LTDBDatei *datei = new LTDBDatei();
-        datei->setDatei( new Text( "data/client/bilder/chat.ltdb" ) );
-        datei->leseDaten( 0 );
-        neuSendenBild = datei->laden( 0, new Text( "neusenden.png" ) );
-        datei->release();
-        bilder->add( "chat.ltdb/neusenden.png", neuSendenBild->getThis() );
-    }
-    Bild *entfernenBild = bilder->get( "chat.ltdb/entfernen.png" );
-    if( !entfernenBild )
-    {
-        LTDBDatei *datei = new LTDBDatei();
-        datei->setDatei( new Text( "data/client/bilder/chat.ltdb" ) );
-        datei->leseDaten( 0 );
-        entfernenBild = datei->laden( 0, new Text( "entfernen.png" ) );
-        datei->release();
-        bilder->add( "chat.ltdb/entfernen.png", entfernenBild->getThis() );
-    }
+    Bild *nachrichtBild = bilder->get( "data/client/bilder/chat.ltdb/nachricht.png" );
+    Bild *neuSendenBild = bilder->get( "data/client/bilder/chat.ltdb/neusenden.png" );
+    Bild *entfernenBild = bilder->get( "data/client/bilder/chat.ltdb/entfernen.png" );
     rahmen = new LRahmen();
     rahmen->setFarbe( 0xFFFFFFFF );
     rahmen->setRamenBreite( 1 );
@@ -415,16 +388,7 @@ GruppeEinladungAccount *GruppeEinladungAccount::release()
 GruppeEinladungListe::GruppeEinladungListe( Schrift * zSchrift )
 {
     schrift = zSchrift->getThis();
-    Bild *maximierenBild = bilder->get( "chat.ltdb/maximieren.png" );
-    if( !maximierenBild )
-    {
-        LTDBDatei *datei = new LTDBDatei();
-        datei->setDatei( new Text( "data/client/bilder/chat.ltdb" ) );
-        datei->leseDaten( 0 );
-        maximierenBild = datei->laden( 0, new Text( "maximieren.png" ) );
-        datei->release();
-        bilder->add( "chat.ltdb/maximieren.png", maximierenBild->getThis() );
-    }
+    Bild *maximierenBild = bilder->get( "data/client/bilder/chat.ltdb/maximieren.png" );
     pos = Punkt( 200, 0 );
     gr = Punkt( 150, 350 );
     rahmen = new LRahmen();
@@ -789,46 +753,10 @@ GruppeEinladungListe *GruppeEinladungListe::release()
 // Konstruktor
 GruppeAccountDaten::GruppeAccountDaten( Schrift * zSchrift )
 {
-    Bild *nachrichtBild = bilder->get( "chat.ltdb/nachricht.png" );
-    if( !nachrichtBild )
-    {
-        LTDBDatei *datei = new LTDBDatei();
-        datei->setDatei( new Text( "data/client/bilder/chat.ltdb" ) );
-        datei->leseDaten( 0 );
-        nachrichtBild = datei->laden( 0, new Text( "nachricht.png" ) );
-        datei->release();
-        bilder->add( "chat.ltdb/nachricht.png", nachrichtBild->getThis() );
-    }
-    Bild *einladungBild = bilder->get( "chat.ltdb/neuerfreund.png" );
-    if( !nachrichtBild )
-    {
-        LTDBDatei *datei = new LTDBDatei();
-        datei->setDatei( new Text( "data/client/bilder/chat.ltdb" ) );
-        datei->leseDaten( 0 );
-        einladungBild = datei->laden( 0, new Text( "neuerfreund.png" ) );
-        datei->release();
-        bilder->add( "chat.ltdb/neuerfreund.png", einladungBild->getThis() );
-    }
-    Bild *ansehenBild = bilder->get( "chat.ltdb/ansehen.png" );
-    if( !ansehenBild )
-    {
-        LTDBDatei *datei = new LTDBDatei();
-        datei->setDatei( new Text( "data/client/bilder/chat.ltdb" ) );
-        datei->leseDaten( 0 );
-        ansehenBild = datei->laden( 0, new Text( "ansehen.png" ) );
-        datei->release();
-        bilder->add( "chat.ltdb/ansehen.png", ansehenBild->getThis() );
-    }
-    Bild *entfernenBild = bilder->get( "chat.ltdb/entfernen.png" );
-    if( !entfernenBild )
-    {
-        LTDBDatei *datei = new LTDBDatei();
-        datei->setDatei( new Text( "data/client/bilder/chat.ltdb" ) );
-        datei->leseDaten( 0 );
-        entfernenBild = datei->laden( 0, new Text( "entfernen.png" ) );
-        datei->release();
-        bilder->add( "chat.ltdb/entfernen.png", entfernenBild->getThis() );
-    }
+    Bild *nachrichtBild = bilder->get( "data/client/bilder/chat.ltdb/nachricht.png" );
+    Bild *einladungBild = bilder->get( "data/client/bilder/chat.ltdb/neuerfreund.png" );
+    Bild *ansehenBild = bilder->get( "data/client/bilder/chat.ltdb/ansehen.png" );
+    Bild *entfernenBild = bilder->get( "data/client/bilder/chat.ltdb/entfernen.png" );
     rahmen = new LRahmen();
     rahmen->setFarbe( 0xFFFFFFFF );
     rahmen->setRamenBreite( 1 );
@@ -1386,16 +1314,7 @@ GruppeAccountListe *GruppeAccountListe::release()
 // Konstruktor
 GruppeChat::GruppeChat( Schrift * zSchrift )
 {
-    Bild *sendenBild = bilder->get( "chat.ltdb/senden.png" );
-    if( !sendenBild )
-    {
-        LTDBDatei *datei = new LTDBDatei();
-        datei->setDatei( new Text( "data/client/bilder/chat.ltdb" ) );
-        datei->leseDaten( 0 );
-        sendenBild = datei->laden( 0, new Text( "senden.png" ) );
-        datei->release();
-        bilder->add( "chat.ltdb/senden.png", sendenBild->getThis() );
-    }
+    Bild *sendenBild = bilder->get( "data/client/bilder/chat.ltdb/senden.png" );
     pos = Punkt( 0, 350 );
     gr = Punkt( 750, 200 );
     rahmen = new LRahmen();

+ 818 - 827
KSGClient/NachLogin/Spiele/Team Auswahl/TeamAuswahl.cpp

@@ -10,658 +10,658 @@
 // Konstruktor
 TeamAuswahlListeSpieler::TeamAuswahlListeSpieler( SpielerTeamStruktur *sts, Schrift *zSchrift, int accountId, int karteId )
 {
-	this->accountId = accountId;
-	Text *n = infoClient->getSpielerName( accountId );
-	name = initTextFeld( 1, 1, 99, 20, zSchrift, TextFeld::Style::Text | TextFeld::Style::Center, n->getText() );
-	n->release();
-	if( accountId == loginClient->getAccountId() )
-	{
-		teamAuswahl = new AuswahlBox();
-		teamAuswahl->setStyle( AuswahlBox::Style::Sichtbar | AuswahlBox::Style::Erlaubt | AuswahlBox::Style::Rahmen | AuswahlBox::Style::MultiStyled | AuswahlBox::Style::MaxHeight | AuswahlBox::Style::VScroll | AuswahlBox::Style::Hintergrund );
-		teamAuswahl->setRahmenFarbe( 0xFFFFFFFF );
-		teamAuswahl->setRahmenBreite( 1 );
-		teamAuswahl->setPosition( 100, 1 );
-		teamAuswahl->setSize( 150, 20 );
-		teamAuswahl->setMaxAuskappHeight( 100 );
-		teamAuswahl->setSchriftZ( zSchrift->getThis() );
-		teamAuswahl->setHintergrundFarbe( 0xFF000000 );
-		teamAuswahl->setMausEreignis( _ret1ME );
-		teamAuswahl->setEventParam( this );
-		teamAuswahl->setEventAktion( TeamAuswahlListeSpielerTeamAuswahlE );
-	}
-	else
-		team = initTextFeld( 100, 1, 150, 20, zSchrift, TextFeld::Style::Text | TextFeld::Style::Center, "" );
-	Array< int > *statistik = new Array< int >();
-	infoClient->getSpielStatistik( accountId, infoClient->getSpielId( karteId ), statistik );
-	punkte = initTextFeld( 250, 1, 80, 20, zSchrift, TextFeld::Style::Text | TextFeld::Style::Center, "Punkte: " );
-	punkte->zText()->append( statistik->hat( 3 ) ? statistik->get( 3 ) : 0 );
-	spiele = initTextFeld( 330, 1, 80, 20, zSchrift, TextFeld::Style::Text | TextFeld::Style::Center, "Spiele: " );
-	spiele->zText()->append( statistik->hat( 0 ) ? statistik->get( 0 ) : 0 );
-	gewonnen = initTextFeld( 410, 1, 90, 20, zSchrift, TextFeld::Style::Text | TextFeld::Style::Center, "Gewonnen: " );
-	gewonnen->zText()->append( statistik->hat( 1 ) ? statistik->get( 1 ) : 0 );
-	statistik->release();
-	farbe = initTextFeld( 500, 1, 50, 20, zSchrift, TextFeld::Style::Text | TextFeld::Style::Center, "Farbe:" );
-	spielerFarbe = 0;
-	rahmen = new LRahmen();
-	rahmen->setSize( 581, 22 );
-	rahmen->setFarbe( 0xFFFFFFFF );
-	rahmen->setRamenBreite( 1 );
-	teamName = new Text( "" );
-	this->sts = sts;
-	rend = 0;
-	ref = 1;
+    this->accountId = accountId;
+    Text *n = infoClient->getSpielerName( accountId );
+    name = initTextFeld( 1, 1, 99, 20, zSchrift, TextFeld::Style::Text | TextFeld::Style::Center, n->getText() );
+    n->release();
+    if( accountId == loginClient->getAccountId() )
+    {
+        teamAuswahl = new AuswahlBox();
+        teamAuswahl->setStyle( AuswahlBox::Style::Sichtbar | AuswahlBox::Style::Erlaubt | AuswahlBox::Style::Rahmen | AuswahlBox::Style::MultiStyled | AuswahlBox::Style::MaxHeight | AuswahlBox::Style::VScroll | AuswahlBox::Style::Hintergrund );
+        teamAuswahl->setRahmenFarbe( 0xFFFFFFFF );
+        teamAuswahl->setRahmenBreite( 1 );
+        teamAuswahl->setPosition( 100, 1 );
+        teamAuswahl->setSize( 150, 20 );
+        teamAuswahl->setMaxAuskappHeight( 100 );
+        teamAuswahl->setSchriftZ( zSchrift->getThis() );
+        teamAuswahl->setHintergrundFarbe( 0xFF000000 );
+        teamAuswahl->setMausEreignis( _ret1ME );
+        teamAuswahl->setEventParam( this );
+        teamAuswahl->setEventAktion( TeamAuswahlListeSpielerTeamAuswahlE );
+    }
+    else
+        team = initTextFeld( 100, 1, 150, 20, zSchrift, TextFeld::Style::Text | TextFeld::Style::Center, "" );
+    Array< int > *statistik = new Array< int >();
+    infoClient->getSpielStatistik( accountId, infoClient->getSpielId( karteId ), statistik );
+    punkte = initTextFeld( 250, 1, 80, 20, zSchrift, TextFeld::Style::Text | TextFeld::Style::Center, "Punkte: " );
+    punkte->zText()->append( statistik->hat( 3 ) ? statistik->get( 3 ) : 0 );
+    spiele = initTextFeld( 330, 1, 80, 20, zSchrift, TextFeld::Style::Text | TextFeld::Style::Center, "Spiele: " );
+    spiele->zText()->append( statistik->hat( 0 ) ? statistik->get( 0 ) : 0 );
+    gewonnen = initTextFeld( 410, 1, 90, 20, zSchrift, TextFeld::Style::Text | TextFeld::Style::Center, "Gewonnen: " );
+    gewonnen->zText()->append( statistik->hat( 1 ) ? statistik->get( 1 ) : 0 );
+    statistik->release();
+    farbe = initTextFeld( 500, 1, 50, 20, zSchrift, TextFeld::Style::Text | TextFeld::Style::Center, "Farbe:" );
+    spielerFarbe = 0;
+    rahmen = new LRahmen();
+    rahmen->setSize( 581, 22 );
+    rahmen->setFarbe( 0xFFFFFFFF );
+    rahmen->setRamenBreite( 1 );
+    teamName = new Text( "" );
+    this->sts = sts;
+    rend = 0;
+    ref = 1;
 }
 
 // Destruktor
 TeamAuswahlListeSpieler::~TeamAuswahlListeSpieler()
 {
-	name->release();
-	if( accountId == loginClient->getAccountId() )
-		teamAuswahl->release();
-	else
-		team->release();
-	punkte->release();
-	spiele->release();
-	gewonnen->release();
-	farbe->release();
-	rahmen->release();
-	teamName->release();
-	sts->release();
+    name->release();
+    if( accountId == loginClient->getAccountId() )
+        teamAuswahl->release();
+    else
+        team->release();
+    punkte->release();
+    spiele->release();
+    gewonnen->release();
+    farbe->release();
+    rahmen->release();
+    teamName->release();
+    sts->release();
 }
 
 // nicht constant
 void TeamAuswahlListeSpieler::disable()
 {
-	if( accountId == loginClient->getAccountId() )
-		teamAuswahl->removeStyle( AuswahlBox::Style::Erlaubt );
-}
-
-void TeamAuswahlListeSpieler::spielerTeamAuswahlE( AuswahlBox *obj, int p1, int p2 )
-{
-	Text *tmpTeamName = obj->zEintragText( p2 );
-	if( !tmpTeamName->istGleich( teamName->getText() ) )
-	{
-		if( tmpTeamName->istGleich( "Zufällig" ) )
-		{
-			if( !spielClient->spielErstelltTeamWechseln( 0 ) )
-				obj->setAuswahl( obj->getEintragPos( teamName->getText() ) );
-		}
-		else
-		{
-			int neuTeam = 0;
-			for( int i = 0; i < sts->teamAnzahl; i++ )
-			{
-				if( sts->teamName->z( i )->istGleich( tmpTeamName->getText() ) )
-				{
-					neuTeam = i + 1;
-					break;
-				}
-			}
-			if( !spielClient->spielErstelltTeamWechseln( neuTeam ) )
-				obj->setAuswahl( obj->getEintragPos( teamName->getText() ) );
-		}
-		obj->einklappen();
-	}
+    if( accountId == loginClient->getAccountId() )
+        teamAuswahl->removeStyle( AuswahlBox::Style::Erlaubt );
+}
+
+void TeamAuswahlListeSpieler::spielerTeamAuswahlE( AuswahlBox * obj, int p1, int p2 )
+{
+    Text *tmpTeamName = obj->zEintragText( p2 );
+    if( !tmpTeamName->istGleich( teamName->getText() ) )
+    {
+        if( tmpTeamName->istGleich( "Zufällig" ) )
+        {
+            if( !spielClient->spielErstelltTeamWechseln( 0 ) )
+                obj->setAuswahl( obj->getEintragPos( teamName->getText() ) );
+        }
+        else
+        {
+            int neuTeam = 0;
+            for( int i = 0; i < sts->teamAnzahl; i++ )
+            {
+                if( sts->teamName->z( i )->istGleich( tmpTeamName->getText() ) )
+                {
+                    neuTeam = i + 1;
+                    break;
+                }
+            }
+            if( !spielClient->spielErstelltTeamWechseln( neuTeam ) )
+                obj->setAuswahl( obj->getEintragPos( teamName->getText() ) );
+        }
+        obj->einklappen();
+    }
 }
 
 void TeamAuswahlListeSpieler::setFarbe( int farbe )
 {
-	this->spielerFarbe = farbe;
-	if( farbe )
-		rahmen->setFarbe( farbe );
-	else
-		rahmen->setFarbe( 0xFFFFFFFF );
-	rend = 1;
-}
-
-void TeamAuswahlListeSpieler::setTeam( Text *zName )
-{
-	teamName->setText( zName->getText() );
-	rend = 1;
-}
-
-void TeamAuswahlListeSpieler::setTeamErlaubt( Text *zName, bool erlaubt, int teamFarbe )
-{
-	if( accountId != loginClient->getAccountId() )
-		return;
-	if( erlaubt )
-	{
-		if( teamAuswahl->getEintragPos( zName->getText() ) < 0 )
-		{
-			int p = teamAuswahl->getEintragAnzahl();
-			teamAuswahl->addEintrag( zName->getText() );
-			teamAuswahl->setMsStyle( p, AuswahlBox::Style::FeldRahmen | AuswahlBox::Style::MausBuffer | AuswahlBox::Style::AuswahlBuffer | AuswahlBox::Style::FeldBuffer );
-			if( teamFarbe )
-				teamAuswahl->zEintrag( p )->setRahmenFarbe( teamFarbe );
-			teamAuswahl->setMsAuswAlphaFeldFarbe( p, 0x50000000 | ( teamFarbe & 0x00FFFFFF ) );
-			teamAuswahl->setMsAuswAlphaFeldStrength( p, -15 );
-			teamAuswahl->setMsMausAlphaFeldFarbe( p, 0x10000000 | ( teamFarbe & 0x00FFFFFF ) );
-			teamAuswahl->setMsMausAlphaFeldStrength( p, -15 );
-		}
-	}
-	else
-	{
-		if( zName->istGleich( teamName->getText() ) )
-			return;
-		if( teamAuswahl->getEintragPos( zName->getText() ) >= 0 )
-			teamAuswahl->removeEintrag( teamAuswahl->getEintragPos( zName->getText() ) );
-	}
+    this->spielerFarbe = farbe;
+    if( farbe )
+        rahmen->setFarbe( farbe );
+    else
+        rahmen->setFarbe( 0xFFFFFFFF );
+    rend = 1;
+}
+
+void TeamAuswahlListeSpieler::setTeam( Text * zName )
+{
+    teamName->setText( zName->getText() );
+    rend = 1;
+}
+
+void TeamAuswahlListeSpieler::setTeamErlaubt( Text * zName, bool erlaubt, int teamFarbe )
+{
+    if( accountId != loginClient->getAccountId() )
+        return;
+    if( erlaubt )
+    {
+        if( teamAuswahl->getEintragPos( zName->getText() ) < 0 )
+        {
+            int p = teamAuswahl->getEintragAnzahl();
+            teamAuswahl->addEintrag( zName->getText() );
+            teamAuswahl->setMsStyle( p, AuswahlBox::Style::FeldRahmen | AuswahlBox::Style::MausBuffer | AuswahlBox::Style::AuswahlBuffer | AuswahlBox::Style::FeldBuffer );
+            if( teamFarbe )
+                teamAuswahl->zEintrag( p )->setRahmenFarbe( teamFarbe );
+            teamAuswahl->setMsAuswAlphaFeldFarbe( p, 0x50000000 | ( teamFarbe & 0x00FFFFFF ) );
+            teamAuswahl->setMsAuswAlphaFeldStrength( p, -15 );
+            teamAuswahl->setMsMausAlphaFeldFarbe( p, 0x10000000 | ( teamFarbe & 0x00FFFFFF ) );
+            teamAuswahl->setMsMausAlphaFeldStrength( p, -15 );
+        }
+    }
+    else
+    {
+        if( zName->istGleich( teamName->getText() ) )
+            return;
+        if( teamAuswahl->getEintragPos( zName->getText() ) >= 0 )
+            teamAuswahl->removeEintrag( teamAuswahl->getEintragPos( zName->getText() ) );
+    }
 }
 
 bool TeamAuswahlListeSpieler::tick( double tickVal )
 {
-	if( accountId == loginClient->getAccountId() )
-		rend |= teamAuswahl->tick( tickVal );
-	else if( !team->zText()->istGleich( teamName->getText() ) )
-	{
-		team->setText( "" );
-		team->zText()->append( teamName->getText() );
-	}
-	bool ret = rend;
-	rend = 0;
-	return ret;
+    if( accountId == loginClient->getAccountId() )
+        rend |= teamAuswahl->tick( tickVal );
+    else if( !team->zText()->istGleich( teamName->getText() ) )
+    {
+        team->setText( "" );
+        team->zText()->append( teamName->getText() );
+    }
+    bool ret = rend;
+    rend = 0;
+    return ret;
 }
 
-void TeamAuswahlListeSpieler::doMausEreignis( MausEreignis &me )
+void TeamAuswahlListeSpieler::doMausEreignis( MausEreignis & me )
 {
-	if( accountId == loginClient->getAccountId() )
-		teamAuswahl->doMausEreignis( me );
+    if( accountId == loginClient->getAccountId() )
+        teamAuswahl->doMausEreignis( me );
 }
 
-void TeamAuswahlListeSpieler::render( int yOff, Bild &zRObj )
+void TeamAuswahlListeSpieler::render( int yOff, Bild & zRObj )
 {
-	if( !zRObj.setDrawOptions( 0, yOff, 581, 22 ) )
-		return;
-	rahmen->render( zRObj );
-	name->render( zRObj );
-	if( loginClient->getAccountId() == accountId )
-		teamAuswahl->render( zRObj );
-	else
-		team->render( zRObj );
-	punkte->render( zRObj );
-	spiele->render( zRObj );
-	gewonnen->render( zRObj );
-	farbe->render( zRObj );
-	zRObj.alphaRegion( 550, 2, 18, 18, spielerFarbe );
-	zRObj.releaseDrawOptions();
+    if( !zRObj.setDrawOptions( 0, yOff, 581, 22 ) )
+        return;
+    rahmen->render( zRObj );
+    name->render( zRObj );
+    if( loginClient->getAccountId() == accountId )
+        teamAuswahl->render( zRObj );
+    else
+        team->render( zRObj );
+    punkte->render( zRObj );
+    spiele->render( zRObj );
+    gewonnen->render( zRObj );
+    farbe->render( zRObj );
+    zRObj.alphaRegion( 550, 2, 18, 18, spielerFarbe );
+    zRObj.releaseDrawOptions();
 }
 
 // constant
 int TeamAuswahlListeSpieler::getAccountId() const
 {
-	return accountId;
+    return accountId;
 }
 
 // Reference Counting
 TeamAuswahlListeSpieler *TeamAuswahlListeSpieler::getThis()
 {
-	ref++;
-	return this;
+    ref++;
+    return this;
 }
 
 TeamAuswahlListeSpieler *TeamAuswahlListeSpieler::release()
 {
-	ref--;
-	if( !ref )
-		delete this;
-	return 0;
+    ref--;
+    if( !ref )
+        delete this;
+    return 0;
 }
 
 // Inhalt der TeamAuswahlListeTeam Klasse aus TeamAuswahl.h
 // Konstruktor
-TeamAuswahlListeTeam::TeamAuswahlListeTeam( Schrift *zSchrift )
-{
-	maxSpieler = 0;
-	jetztSpieler = 0;
-	team = 0;
-	name = initTextFeld( 0, 0, 300, 20, zSchrift, TextFeld::Style::Text | TextFeld::Style::Center, "Team: " );
-	mjSpieler = initTextFeld( 300, 0, 150, 20, zSchrift, TextFeld::Style::Text | TextFeld::Style::Center, "Spieler: 0/0" );
-	farbe = initTextFeld( 450, 0, 100, 20, zSchrift, TextFeld::Style::Text | TextFeld::Style::Center, "Team Farbe:" );
-	teamFarbe = 0;
-	spieler = new RCArray< TeamAuswahlListeSpieler >();
-	rahmen = new LRahmen();
-	rahmen->setSize( 583, 22 );
-	rahmen->setFarbe( 0xFFFFFFFF );
-	rahmen->setRamenBreite( 1 );
-	titelAf = new AlphaFeld();
-	titelAf->setPosition( 1, 1 );
-	titelAf->setSize( 581, 20 );
-	titelAf->setFarbe( 0x1000FF00 );
-	titelAf->setStrength( -15 );
-	teamName = new Text( "" );
-	tickVal = 0;
-	höhe = 22;
-	rend = 0;
-	ref = 1;
+TeamAuswahlListeTeam::TeamAuswahlListeTeam( Schrift * zSchrift )
+{
+    maxSpieler = 0;
+    jetztSpieler = 0;
+    team = 0;
+    name = initTextFeld( 0, 0, 300, 20, zSchrift, TextFeld::Style::Text | TextFeld::Style::Center, "Team: " );
+    mjSpieler = initTextFeld( 300, 0, 150, 20, zSchrift, TextFeld::Style::Text | TextFeld::Style::Center, "Spieler: 0/0" );
+    farbe = initTextFeld( 450, 0, 100, 20, zSchrift, TextFeld::Style::Text | TextFeld::Style::Center, "Team Farbe:" );
+    teamFarbe = 0;
+    spieler = new RCArray< TeamAuswahlListeSpieler >();
+    rahmen = new LRahmen();
+    rahmen->setSize( 583, 22 );
+    rahmen->setFarbe( 0xFFFFFFFF );
+    rahmen->setRamenBreite( 1 );
+    titelAf = new AlphaFeld();
+    titelAf->setPosition( 1, 1 );
+    titelAf->setSize( 581, 20 );
+    titelAf->setFarbe( 0x1000FF00 );
+    titelAf->setStrength( -15 );
+    teamName = new Text( "" );
+    tickVal = 0;
+    höhe = 22;
+    rend = 0;
+    ref = 1;
 }
 
 // Destruktor
 TeamAuswahlListeTeam::~TeamAuswahlListeTeam()
 {
-	name->release();
-	mjSpieler->release();
-	farbe->release();
-	spieler->release();
-	rahmen->release();
-	titelAf->release();
-	teamName->release();
+    name->release();
+    mjSpieler->release();
+    farbe->release();
+    spieler->release();
+    rahmen->release();
+    titelAf->release();
+    teamName->release();
 }
 
 // nicht constant
 void TeamAuswahlListeTeam::disable()
 {
-	for( int i = 0; i < jetztSpieler; i++ )
-		spieler->z( i )->disable();
+    for( int i = 0; i < jetztSpieler; i++ )
+        spieler->z( i )->disable();
 }
 
 void TeamAuswahlListeTeam::setMaxSpieler( int maxSpieler )
 {
-	this->maxSpieler = maxSpieler;
-	rend = 1;
+    this->maxSpieler = maxSpieler;
+    rend = 1;
 }
 
-void TeamAuswahlListeTeam::setName( Text *name )
+void TeamAuswahlListeTeam::setName( Text * name )
 {
-	teamName->setText( name->getText() );
-	name->release();
-	rend = 1;
+    teamName->setText( name->getText() );
+    name->release();
+    rend = 1;
 }
 
 void TeamAuswahlListeTeam::setFarbe( int farbe )
 {
-	teamFarbe = farbe;
-	rahmen->setFarbe( teamFarbe );
-	rend = 1;
+    teamFarbe = farbe;
+    rahmen->setFarbe( teamFarbe );
+    rend = 1;
 }
 
 void TeamAuswahlListeTeam::setTeam( int team )
 {
-	this->team = team;
-	rend = 1;
+    this->team = team;
+    rend = 1;
 }
 
-void TeamAuswahlListeTeam::addSpieler( TeamAuswahlListeSpieler *spieler )
+void TeamAuswahlListeTeam::addSpieler( TeamAuswahlListeSpieler * spieler )
 {
-	if( !jetztSpieler )
-		höhe++;
-	spieler->setTeam( teamName );
-	höhe += 22;
-	this->spieler->set( spieler, jetztSpieler );
-	jetztSpieler++;
-	rend = 1;
+    if( !jetztSpieler )
+        höhe++;
+    spieler->setTeam( teamName );
+    höhe += 22;
+    this->spieler->set( spieler, jetztSpieler );
+    jetztSpieler++;
+    rend = 1;
 }
 
 void TeamAuswahlListeTeam::removeSpieler( int accountId )
 {
-	höhe -= 22;
-	for( int i = 0; i < jetztSpieler; i++ )
-	{
-		if( spieler->z( i )->getAccountId() == accountId )
-		{
-			jetztSpieler--;
-			spieler->remove( i );
-			rend = 1;
-			break;
-		}
-	}
-	if( !jetztSpieler )
-		höhe = 22;
+    höhe -= 22;
+    for( int i = 0; i < jetztSpieler; i++ )
+    {
+        if( spieler->z( i )->getAccountId() == accountId )
+        {
+            jetztSpieler--;
+            spieler->remove( i );
+            rend = 1;
+            break;
+        }
+    }
+    if( !jetztSpieler )
+        höhe = 22;
 }
 
-void TeamAuswahlListeTeam::setTeamErlaubt( Text *zName, bool erlaubt, int teamFarbe )
+void TeamAuswahlListeTeam::setTeamErlaubt( Text * zName, bool erlaubt, int teamFarbe )
 {
-	for( int i = 0; i < jetztSpieler; i++ )
-		spieler->z( i )->setTeamErlaubt( zName, erlaubt, teamFarbe );
+    for( int i = 0; i < jetztSpieler; i++ )
+        spieler->z( i )->setTeamErlaubt( zName, erlaubt, teamFarbe );
 }
 
 bool TeamAuswahlListeTeam::tick( double tickVal )
 {
-	this->tickVal += tickVal * 50;
-	int val = ( int )this->tickVal;
-	if( val > 2 )
-		val = 2;
-	this->tickVal -= val;
-	if( val )
-	{
-		if( rahmen->getHeight() > höhe )
-		{
-			rahmen->setSize( rahmen->getBreite(), rahmen->getHeight() - val );
-			if( rahmen->getHeight() < höhe )
-				rahmen->setSize( rahmen->getBreite(), höhe );
-			rend = 1;
-		}
-		if( rahmen->getHeight() < höhe )
-		{
-			rahmen->setSize( rahmen->getBreite(), rahmen->getHeight() + val );
-			if( rahmen->getHeight() > höhe )
-				rahmen->setSize( rahmen->getBreite(), höhe );
-			rend = 1;
-		}
-	}
-	name->setText( "Team: " );
-	name->zText()->append( teamName->getText() );
-	mjSpieler->setText( "Spieler: " );
-	mjSpieler->zText()->append( jetztSpieler );
-	mjSpieler->zText()->append( "/" );
-	mjSpieler->zText()->append( maxSpieler );
-	for( int i = 0; i < jetztSpieler; i++ )
-		rend |= spieler->z( i )->tick( tickVal );
-	bool ret = rend;
-	rend = 0;
-	return ret;
-}
-
-void TeamAuswahlListeTeam::doMausEreignis( MausEreignis &me )
-{
-	int tmpX = me.mx;
-	int tmpY = me.my;
-	me.mx--;
-	me.my -= 22;
-	for( int i = 0; i < jetztSpieler; i++ )
-	{
-		spieler->z( i )->doMausEreignis( me );
-		me.my -= 22;
-	}
-	me.mx = tmpX;
-	me.my = tmpY;
-}
-
-void TeamAuswahlListeTeam::render( int yOff, Bild &zRObj )
-{
-	if( !zRObj.setDrawOptions( 50, yOff, 583, rahmen->getHeight() + 1 ) )
-		return;
-	rahmen->render( zRObj );
-	titelAf->setPosition( 1, 1 );
-	titelAf->render( zRObj );
-	name->render( zRObj );
-	mjSpieler->render( zRObj );
-	farbe->render( zRObj );
-	zRObj.alphaRegion( 550, 2, 18, 18, teamFarbe );
-	zRObj.drawLinieH( 1, 21, 581, rahmen->getFarbe() );
-	if( !zRObj.setDrawOptions( 1, 22, 582, rahmen->getHeight() ) )
-	{
-		zRObj.releaseDrawOptions();
-		return;
-	}
-	int y = 22 * ( jetztSpieler - 1 );
-	for( int i = jetztSpieler - 1; i >= 0; i-- )
-	{
-		spieler->z( i )->render( y, zRObj );
-		y -= 22;
-	}
-	zRObj.releaseDrawOptions();
-	zRObj.releaseDrawOptions();
+    this->tickVal += tickVal * 50;
+    int val = (int)this->tickVal;
+    if( val > 2 )
+        val = 2;
+    this->tickVal -= val;
+    if( val )
+    {
+        if( rahmen->getHeight() > höhe )
+        {
+            rahmen->setSize( rahmen->getBreite(), rahmen->getHeight() - val );
+            if( rahmen->getHeight() < höhe )
+                rahmen->setSize( rahmen->getBreite(), höhe );
+            rend = 1;
+        }
+        if( rahmen->getHeight() < höhe )
+        {
+            rahmen->setSize( rahmen->getBreite(), rahmen->getHeight() + val );
+            if( rahmen->getHeight() > höhe )
+                rahmen->setSize( rahmen->getBreite(), höhe );
+            rend = 1;
+        }
+    }
+    name->setText( "Team: " );
+    name->zText()->append( teamName->getText() );
+    mjSpieler->setText( "Spieler: " );
+    mjSpieler->zText()->append( jetztSpieler );
+    mjSpieler->zText()->append( "/" );
+    mjSpieler->zText()->append( maxSpieler );
+    for( int i = 0; i < jetztSpieler; i++ )
+        rend |= spieler->z( i )->tick( tickVal );
+    bool ret = rend;
+    rend = 0;
+    return ret;
+}
+
+void TeamAuswahlListeTeam::doMausEreignis( MausEreignis & me )
+{
+    int tmpX = me.mx;
+    int tmpY = me.my;
+    me.mx--;
+    me.my -= 22;
+    for( int i = 0; i < jetztSpieler; i++ )
+    {
+        spieler->z( i )->doMausEreignis( me );
+        me.my -= 22;
+    }
+    me.mx = tmpX;
+    me.my = tmpY;
+}
+
+void TeamAuswahlListeTeam::render( int yOff, Bild & zRObj )
+{
+    if( !zRObj.setDrawOptions( 50, yOff, 583, rahmen->getHeight() + 1 ) )
+        return;
+    rahmen->render( zRObj );
+    titelAf->setPosition( 1, 1 );
+    titelAf->render( zRObj );
+    name->render( zRObj );
+    mjSpieler->render( zRObj );
+    farbe->render( zRObj );
+    zRObj.alphaRegion( 550, 2, 18, 18, teamFarbe );
+    zRObj.drawLinieH( 1, 21, 581, rahmen->getFarbe() );
+    if( !zRObj.setDrawOptions( 1, 22, 582, rahmen->getHeight() ) )
+    {
+        zRObj.releaseDrawOptions();
+        return;
+    }
+    int y = 22 * ( jetztSpieler - 1 );
+    for( int i = jetztSpieler - 1; i >= 0; i-- )
+    {
+        spieler->z( i )->render( y, zRObj );
+        y -= 22;
+    }
+    zRObj.releaseDrawOptions();
+    zRObj.releaseDrawOptions();
 }
 
 // constant
 int TeamAuswahlListeTeam::getTeamNummer() const
 {
-	return team;
+    return team;
 }
 
 int TeamAuswahlListeTeam::getHeight() const
 {
-	return rahmen->getHeight() + 1;
+    return rahmen->getHeight() + 1;
 }
 
 bool TeamAuswahlListeTeam::istPlatzFrei() const
 {
-	return jetztSpieler < maxSpieler;
+    return jetztSpieler < maxSpieler;
 }
 
 int TeamAuswahlListeTeam::getMaxSpieler() const
 {
-	return maxSpieler;
+    return maxSpieler;
 }
 
 Text *TeamAuswahlListeTeam::zName() const
 {
-	return teamName;
+    return teamName;
 }
 
 TeamAuswahlListeSpieler *TeamAuswahlListeTeam::getSpielerDaten( int accountId ) const
 {
-	for( int i = 0; i < jetztSpieler; i++ )
-	{
-		if( spieler->z( i )->getAccountId() == accountId )
-			return spieler->get( i );
-	}
-	return 0;
+    for( int i = 0; i < jetztSpieler; i++ )
+    {
+        if( spieler->z( i )->getAccountId() == accountId )
+            return spieler->get( i );
+    }
+    return 0;
 }
 
 TeamAuswahlListeSpieler *TeamAuswahlListeTeam::zSpielerDaten( int accountId ) const
 {
-	for( int i = 0; i < jetztSpieler; i++ )
-	{
-		if( spieler->z( i )->getAccountId() == accountId )
-			return spieler->z( i );
-	}
-	return 0;
+    for( int i = 0; i < jetztSpieler; i++ )
+    {
+        if( spieler->z( i )->getAccountId() == accountId )
+            return spieler->z( i );
+    }
+    return 0;
 }
 
 // Reference Counting
 TeamAuswahlListeTeam *TeamAuswahlListeTeam::getThis()
 {
-	ref++;
-	return this;
+    ref++;
+    return this;
 }
 
 TeamAuswahlListeTeam *TeamAuswahlListeTeam::release()
 {
-	ref--;
-	if( !ref )
-		delete this;
-	return 0;
+    ref--;
+    if( !ref )
+        delete this;
+    return 0;
 }
 
 // Inhalt der TeamAuswahlListe Klasse aus TeamAuswahl.h
 // Konstruktor
-TeamAuswahlListe::TeamAuswahlListe( Schrift *zSchrift, SpielerTeamStruktur *sts, int karteId )
-{
-	rahmen = new LRahmen();
-	rahmen->setSize( 698, 398 );
-	rahmen->setFarbe( 0xFFFFFFFF );
-	rahmen->setRamenBreite( 1 );
-	scroll = new VScrollBar();
-	scroll->update( 0, 396 );
-	scroll->setKlickScroll( 7 );
-	teams = new RCArray< TeamAuswahlListeTeam >();
-	TeamAuswahlListeTeam *zufall = new TeamAuswahlListeTeam( zSchrift );
-	zufall->setTeam( 0 );
-	zufall->setName( new Text( "Zufällig" ) );
-	zufall->setMaxSpieler( sts->spielerAnzahl );
-	teams->set( zufall, 0 );
-	for( int i = 0; i < sts->teamAnzahl; i++ )
-	{
-		TeamAuswahlListeTeam *tmp = new TeamAuswahlListeTeam( zSchrift );
-		tmp->setTeam( i );
-		tmp->setName( sts->teamName->get( i ) );
-		tmp->setFarbe( sts->teamFarbe->hat( i ) ? sts->teamFarbe->get( i ) : 0 );
-		tmp->setMaxSpieler( sts->teamSize->hat( i ) ? sts->teamSize->get( i ) : 0 );
-		teams->set( tmp, i + 1 );
-	}
-	teamAnzahl = 1 + sts->teamAnzahl;
-	schrift = zSchrift->getThis();
-	this->karteId = karteId;
-	this->sts = sts;
-	rend = 0;
-	ref = 1;
+TeamAuswahlListe::TeamAuswahlListe( Schrift * zSchrift, SpielerTeamStruktur * sts, int karteId )
+{
+    rahmen = new LRahmen();
+    rahmen->setSize( 698, 398 );
+    rahmen->setFarbe( 0xFFFFFFFF );
+    rahmen->setRamenBreite( 1 );
+    scroll = new VScrollBar();
+    scroll->update( 0, 396 );
+    scroll->setKlickScroll( 7 );
+    teams = new RCArray< TeamAuswahlListeTeam >();
+    TeamAuswahlListeTeam *zufall = new TeamAuswahlListeTeam( zSchrift );
+    zufall->setTeam( 0 );
+    zufall->setName( new Text( "Zufällig" ) );
+    zufall->setMaxSpieler( sts->spielerAnzahl );
+    teams->set( zufall, 0 );
+    for( int i = 0; i < sts->teamAnzahl; i++ )
+    {
+        TeamAuswahlListeTeam *tmp = new TeamAuswahlListeTeam( zSchrift );
+        tmp->setTeam( i );
+        tmp->setName( sts->teamName->get( i ) );
+        tmp->setFarbe( sts->teamFarbe->hat( i ) ? sts->teamFarbe->get( i ) : 0 );
+        tmp->setMaxSpieler( sts->teamSize->hat( i ) ? sts->teamSize->get( i ) : 0 );
+        teams->set( tmp, i + 1 );
+    }
+    teamAnzahl = 1 + sts->teamAnzahl;
+    schrift = zSchrift->getThis();
+    this->karteId = karteId;
+    this->sts = sts;
+    rend = 0;
+    ref = 1;
 }
 
 // Destruktor
 TeamAuswahlListe::~TeamAuswahlListe()
 {
-	rahmen->release();
-	scroll->release();
-	teams->release();
-	schrift->release();
-	sts->release();
+    rahmen->release();
+    scroll->release();
+    teams->release();
+    schrift->release();
+    sts->release();
 }
 
 // nicht constant
 void TeamAuswahlListe::disable()
 {
-	for( int i = 0; i < teamAnzahl; i++ )
-		teams->z( i )->disable();
+    for( int i = 0; i < teamAnzahl; i++ )
+        teams->z( i )->disable();
 }
 
 void TeamAuswahlListe::setTeamVonSpieler( int accountId, int spielerNummer )
 {
-	if( spielerNummer == 0 )
-	{
-		int neuTeam = 0;
-		int altTeam = 0;
-		for( int j = 0; j < teamAnzahl; j++ )
-		{
-			if( teams->z( j )->zSpielerDaten( accountId ) )
-			{
-				altTeam = j;
-				break;
-			}
-		}
-		TeamAuswahlListeSpieler *tmp = teams->z( altTeam )->getSpielerDaten( accountId );
-		teams->z( altTeam )->removeSpieler( accountId );
-		tmp->setFarbe( 0 );
-		teams->z( neuTeam )->addSpieler( tmp );
-	}
-	else
-	{
-		int team = 0;
-		int max = 0;
-		int min = 0;
-		for( int i = 0; i < sts->teamAnzahl; i++ )
-		{
-			min = max;
-			max += sts->teamSize->get( i );
-			if( spielerNummer - 1 >= min && spielerNummer - 1 < max )
-			{
-				int neuTeam = i + 1;
-				int altTeam = 0;
-				for( int j = 0; j < teamAnzahl; j++ )
-				{
-					if( teams->z( j )->zSpielerDaten( accountId ) )
-					{
-						altTeam = j;
-						break;
-					}
-				}
-				TeamAuswahlListeSpieler *tmp = teams->z( altTeam )->getSpielerDaten( accountId );
-				teams->z( altTeam )->removeSpieler( accountId );
-				tmp->setFarbe( sts->spielerFarbe->hat( spielerNummer - 1 ) ? sts->spielerFarbe->get( spielerNummer - 1 ) : 0 );
-				teams->z( neuTeam )->addSpieler( tmp );
-				break;
-			}
-		}
-	}
-	for( int i = 0; i < teamAnzahl; i++ )
-	{
-		for( int j = 0; j < teamAnzahl; j++ )
-		{
-			if( i == 0 )
-				teams->z( j )->setTeamErlaubt( teams->z( i )->zName(), teams->z( i )->istPlatzFrei(), 0 );
-			else
-				teams->z( j )->setTeamErlaubt( teams->z( i )->zName(), teams->z( i )->istPlatzFrei(), sts->teamFarbe->hat( i - 1 ) ? sts->teamFarbe->get( i - 1 ) : 0 );
-		}
-	}
-	rend = 1;
+    if( spielerNummer == 0 )
+    {
+        int neuTeam = 0;
+        int altTeam = 0;
+        for( int j = 0; j < teamAnzahl; j++ )
+        {
+            if( teams->z( j )->zSpielerDaten( accountId ) )
+            {
+                altTeam = j;
+                break;
+            }
+        }
+        TeamAuswahlListeSpieler *tmp = teams->z( altTeam )->getSpielerDaten( accountId );
+        teams->z( altTeam )->removeSpieler( accountId );
+        tmp->setFarbe( 0 );
+        teams->z( neuTeam )->addSpieler( tmp );
+    }
+    else
+    {
+        int team = 0;
+        int max = 0;
+        int min = 0;
+        for( int i = 0; i < sts->teamAnzahl; i++ )
+        {
+            min = max;
+            max += sts->teamSize->get( i );
+            if( spielerNummer - 1 >= min && spielerNummer - 1 < max )
+            {
+                int neuTeam = i + 1;
+                int altTeam = 0;
+                for( int j = 0; j < teamAnzahl; j++ )
+                {
+                    if( teams->z( j )->zSpielerDaten( accountId ) )
+                    {
+                        altTeam = j;
+                        break;
+                    }
+                }
+                TeamAuswahlListeSpieler *tmp = teams->z( altTeam )->getSpielerDaten( accountId );
+                teams->z( altTeam )->removeSpieler( accountId );
+                tmp->setFarbe( sts->spielerFarbe->hat( spielerNummer - 1 ) ? sts->spielerFarbe->get( spielerNummer - 1 ) : 0 );
+                teams->z( neuTeam )->addSpieler( tmp );
+                break;
+            }
+        }
+    }
+    for( int i = 0; i < teamAnzahl; i++ )
+    {
+        for( int j = 0; j < teamAnzahl; j++ )
+        {
+            if( i == 0 )
+                teams->z( j )->setTeamErlaubt( teams->z( i )->zName(), teams->z( i )->istPlatzFrei(), 0 );
+            else
+                teams->z( j )->setTeamErlaubt( teams->z( i )->zName(), teams->z( i )->istPlatzFrei(), sts->teamFarbe->hat( i - 1 ) ? sts->teamFarbe->get( i - 1 ) : 0 );
+        }
+    }
+    rend = 1;
 }
 
 void TeamAuswahlListe::addSpieler( int accountId )
 {
-	TeamAuswahlListeSpieler *tmp = new TeamAuswahlListeSpieler( sts->getThis(), schrift, accountId, karteId );
-	for( int i = 0; i < teamAnzahl; i++ )
-	{
-		if( teams->z( i )->istPlatzFrei() )
-		{
-			if( i == 0 )
-				tmp->setTeamErlaubt( teams->z( i )->zName(), 1, 0 );
-			else
-				tmp->setTeamErlaubt( teams->z( i )->zName(), 1, sts->teamFarbe->hat( i - 1 ) ? sts->teamFarbe->get( i - 1 ) : 0 );
-		}
-	}
-	teams->z( 0 )->addSpieler( tmp );
-	for( int i = 0; i < teamAnzahl; i++ )
-		teams->z( i )->setTeamErlaubt( teams->z( 0 )->zName(), teams->z( 0 )->istPlatzFrei(), 0 );
-	rend = 1;
+    TeamAuswahlListeSpieler *tmp = new TeamAuswahlListeSpieler( sts->getThis(), schrift, accountId, karteId );
+    for( int i = 0; i < teamAnzahl; i++ )
+    {
+        if( teams->z( i )->istPlatzFrei() )
+        {
+            if( i == 0 )
+                tmp->setTeamErlaubt( teams->z( i )->zName(), 1, 0 );
+            else
+                tmp->setTeamErlaubt( teams->z( i )->zName(), 1, sts->teamFarbe->hat( i - 1 ) ? sts->teamFarbe->get( i - 1 ) : 0 );
+        }
+    }
+    teams->z( 0 )->addSpieler( tmp );
+    for( int i = 0; i < teamAnzahl; i++ )
+        teams->z( i )->setTeamErlaubt( teams->z( 0 )->zName(), teams->z( 0 )->istPlatzFrei(), 0 );
+    rend = 1;
 }
 
 void TeamAuswahlListe::removeSpieler( int accountId )
 {
-	for( int i = 0; i < teamAnzahl; i++ )
-	{
-		if( teams->z( i )->zSpielerDaten( accountId ) )
-			teams->z( i )->removeSpieler( accountId );
-	}
-	for( int i = 0; i < teamAnzahl; i++ )
-	{
-		for( int j = 0; j < teamAnzahl; j++ )
-		{
-			if( i == 0 )
-				teams->z( j )->setTeamErlaubt( teams->z( i )->zName(), teams->z( i )->istPlatzFrei(), 0 );
-			else
-				teams->z( j )->setTeamErlaubt( teams->z( i )->zName(), teams->z( i )->istPlatzFrei(), sts->teamFarbe->hat( i - 1 ) ? sts->teamFarbe->get( i - 1 ) : 0 );
-		}
-	}
-	rend = 1;
+    for( int i = 0; i < teamAnzahl; i++ )
+    {
+        if( teams->z( i )->zSpielerDaten( accountId ) )
+            teams->z( i )->removeSpieler( accountId );
+    }
+    for( int i = 0; i < teamAnzahl; i++ )
+    {
+        for( int j = 0; j < teamAnzahl; j++ )
+        {
+            if( i == 0 )
+                teams->z( j )->setTeamErlaubt( teams->z( i )->zName(), teams->z( i )->istPlatzFrei(), 0 );
+            else
+                teams->z( j )->setTeamErlaubt( teams->z( i )->zName(), teams->z( i )->istPlatzFrei(), sts->teamFarbe->hat( i - 1 ) ? sts->teamFarbe->get( i - 1 ) : 0 );
+        }
+    }
+    rend = 1;
 }
 
 bool TeamAuswahlListe::tick( double tickVal )
 {
-	for( int i = 0; i < teamAnzahl; i++ )
-		rend |= teams->z( i )->tick( tickVal );
-	rend |= scroll->getRend();
-	bool ret = rend;
-	rend = 0;
-	return ret;
-}
-
-void TeamAuswahlListe::doMausEreignis( MausEreignis &me )
-{
-	int tmpX = me.mx;
-	int tmpY = me.my;
-	me.mx -= 50;
-	me.my -= 50 - scroll->getScroll();
-	for( int i = 0; i < teamAnzahl; i++ )
-	{
-		teams->z( i )->doMausEreignis( me );
-		me.my -= 20 + teams->z( i )->getHeight();
-	}
-	me.mx = tmpX;
-	me.my = tmpY;
-	if( me.mx > 1 && me.mx < 698 && me.my > 1 && me.my < 397 )
-	{
-		scroll->doMausMessage( 683, 1, 15, 396, me );
-		me.verarbeitet = 1;
-	}
-}
-
-void TeamAuswahlListe::render( Bild &zRObj )
-{
-	if( !zRObj.setDrawOptions( 0, 0, 698, 398 ) )
-		return;
-	rahmen->render( zRObj );
-	int maxHöhe = 50;
-	for( int i = 0; i < teamAnzahl; i++ )
-		maxHöhe += 20 + teams->z( i )->getHeight();
-	maxHöhe += 30;
-	scroll->update( maxHöhe, 396 );
-	scroll->render( 683, 1, 15, 396, zRObj );
-	if( !zRObj.setDrawOptions( 1, 1, 682, 395 ) )
-	{
-		zRObj.releaseDrawOptions();
-		return;
-	}
-	int y = 50 - scroll->getScroll();
-	for( int i = 0; i < teamAnzahl - 1; i++ )
-		y += 20 + teams->z( i )->getHeight();
-	for( int i = teamAnzahl - 1; i >= 0; i-- )
-	{
-		teams->z( i )->render( y, zRObj );
-		if( i > 0 )
-			y -= 20 + teams->z( i - 1 )->getHeight();
-	}
-	zRObj.releaseDrawOptions();
-	zRObj.releaseDrawOptions();
+    for( int i = 0; i < teamAnzahl; i++ )
+        rend |= teams->z( i )->tick( tickVal );
+    rend |= scroll->getRend();
+    bool ret = rend;
+    rend = 0;
+    return ret;
+}
+
+void TeamAuswahlListe::doMausEreignis( MausEreignis & me )
+{
+    int tmpX = me.mx;
+    int tmpY = me.my;
+    me.mx -= 50;
+    me.my -= 50 - scroll->getScroll();
+    for( int i = 0; i < teamAnzahl; i++ )
+    {
+        teams->z( i )->doMausEreignis( me );
+        me.my -= 20 + teams->z( i )->getHeight();
+    }
+    me.mx = tmpX;
+    me.my = tmpY;
+    if( me.mx > 1 && me.mx < 698 && me.my > 1 && me.my < 397 )
+    {
+        scroll->doMausMessage( 683, 1, 15, 396, me );
+        me.verarbeitet = 1;
+    }
+}
+
+void TeamAuswahlListe::render( Bild & zRObj )
+{
+    if( !zRObj.setDrawOptions( 0, 0, 698, 398 ) )
+        return;
+    rahmen->render( zRObj );
+    int maxHöhe = 50;
+    for( int i = 0; i < teamAnzahl; i++ )
+        maxHöhe += 20 + teams->z( i )->getHeight();
+    maxHöhe += 30;
+    scroll->update( maxHöhe, 396 );
+    scroll->render( 683, 1, 15, 396, zRObj );
+    if( !zRObj.setDrawOptions( 1, 1, 682, 395 ) )
+    {
+        zRObj.releaseDrawOptions();
+        return;
+    }
+    int y = 50 - scroll->getScroll();
+    for( int i = 0; i < teamAnzahl - 1; i++ )
+        y += 20 + teams->z( i )->getHeight();
+    for( int i = teamAnzahl - 1; i >= 0; i-- )
+    {
+        teams->z( i )->render( y, zRObj );
+        if( i > 0 )
+            y -= 20 + teams->z( i - 1 )->getHeight();
+    }
+    zRObj.releaseDrawOptions();
+    zRObj.releaseDrawOptions();
 }
 
 // constant
@@ -669,217 +669,208 @@ void TeamAuswahlListe::render( Bild &zRObj )
 // Reference Counting
 TeamAuswahlListe *TeamAuswahlListe::getThis()
 {
-	ref++;
-	return this;
+    ref++;
+    return this;
 }
 
 TeamAuswahlListe *TeamAuswahlListe::release()
 {
-	ref--;
-	if( !ref )
-		delete this;
-	return 0;
+    ref--;
+    if( !ref )
+        delete this;
+    return 0;
 }
 
 // Inhalt der TeamAuswahlTimer Klasse aus TeamAuswahl.h
 // Konstruktor
-TeamAuswahlTimer::TeamAuswahlTimer( Schrift *zSchrift )
+TeamAuswahlTimer::TeamAuswahlTimer( Schrift * zSchrift )
 {
-	zeit = initTextFeld( 0, 0, 200, 200, zSchrift, TextFeld::Style::Text | TextFeld::Style::Center, "" );
-	bestätigen = initKnopf( 65, 170, 70, 20, zSchrift, Knopf::Style::Sichtbar, "Fertig" );
-	time = 0;
-	maxTime = 0;
-	grad = 0;
-	rend = 0;
-	ref = 1;
+    zeit = initTextFeld( 0, 0, 200, 200, zSchrift, TextFeld::Style::Text | TextFeld::Style::Center, "" );
+    bestätigen = initKnopf( 65, 170, 70, 20, zSchrift, Knopf::Style::Sichtbar, "Fertig" );
+    time = 0;
+    maxTime = 0;
+    grad = 0;
+    rend = 0;
+    ref = 1;
 }
 
 // Destruktor
 TeamAuswahlTimer::~TeamAuswahlTimer()
 {
-	zeit->release();
-	bestätigen->release();
+    zeit->release();
+    bestätigen->release();
 }
 
 // nicht constant
 void TeamAuswahlTimer::setVerbleibendeZeit( int sekunden )
 {
-	if( !maxTime )
-		maxTime = sekunden;
-	if( time != sekunden )
-		rend = 1;
-	time = sekunden;
+    if( !maxTime )
+        maxTime = sekunden;
+    if( time != sekunden )
+        rend = 1;
+    time = sekunden;
 }
 
-bool TeamAuswahlTimer::doMausEreignis( MausEreignis &me )
+bool TeamAuswahlTimer::doMausEreignis( MausEreignis & me )
 {
-	bool vera = me.verarbeitet;
-	bestätigen->doMausEreignis( me );
-	if( !vera && me.verarbeitet && me.id == ME_RLinks )
-	{
-		if( spielClient->spielErstelltTeamFertig() )
-		{
-			bestätigen->removeStyle( Knopf::Style::Erlaubt );
-			return 1;
-		}
-	}
-	return 0;
+    bool vera = me.verarbeitet;
+    bestätigen->doMausEreignis( me );
+    if( !vera && me.verarbeitet &&me.id == ME_RLinks )
+    {
+        if( spielClient->spielErstelltTeamFertig() )
+        {
+            bestätigen->removeStyle( Knopf::Style::Erlaubt );
+            return 1;
+        }
+    }
+    return 0;
 }
 
 bool TeamAuswahlTimer::tick( double tickVal )
 {
-	zeit->setText( "" );
-	zeit->zText()->append( time );
-	grad += ( tickVal * 2 );
-	rend = 1;
-	if( grad > 360 )
-		grad -= 360;
-	bool ret = rend;
-	rend = 0;
-	return ret;
-}
-
-void TeamAuswahlTimer::render( Bild &zRObj )
-{
-	if( !zRObj.setDrawOptions( 498, 398, 200, 200 ) )
-		return;
-	zeit->render( zRObj );
-	int r = ( maxTime && time ) ? 90 - (int)( 75.0 / ( (double)maxTime / ( maxTime - time ) ) + 0.5 ) : 15;
-	zRObj.drawKreis( 100, 100, 15, 0xFFFF0000 );
-	zRObj.drawKreis( 100, 100, r, 0xFF00FF00 );
-	int x1 = 100 + (int)( sin( grad ) * 15 );
-	int y1 = 100 + (int)( cos( grad ) * 15 );
-	int x2 = 100 + (int)( sin( grad ) * r );
-	int y2 = 100 + (int)( cos( grad ) * r );
-	zRObj.drawLinie( Punkt( x1, y1 ), Punkt( x2, y2 ), 0xFFFFFF00 );
-	bestätigen->render( zRObj );
-	zRObj.releaseDrawOptions();
+    zeit->setText( "" );
+    zeit->zText()->append( time );
+    grad += ( tickVal * 2 );
+    rend = 1;
+    if( grad > 360 )
+        grad -= 360;
+    bool ret = rend;
+    rend = 0;
+    return ret;
+}
+
+void TeamAuswahlTimer::render( Bild & zRObj )
+{
+    if( !zRObj.setDrawOptions( 498, 398, 200, 200 ) )
+        return;
+    zeit->render( zRObj );
+    int r = ( maxTime && time ) ? 90 - (int)( 75.0 / ( (double)maxTime / ( maxTime - time ) ) + 0.5 ) : 15;
+    zRObj.drawKreis( 100, 100, 15, 0xFFFF0000 );
+    zRObj.drawKreis( 100, 100, r, 0xFF00FF00 );
+    int x1 = 100 + (int)( sin( grad ) * 15 );
+    int y1 = 100 + (int)( cos( grad ) * 15 );
+    int x2 = 100 + (int)( sin( grad ) * r );
+    int y2 = 100 + (int)( cos( grad ) * r );
+    zRObj.drawLinie( Punkt( x1, y1 ), Punkt( x2, y2 ), 0xFFFFFF00 );
+    bestätigen->render( zRObj );
+    zRObj.releaseDrawOptions();
 }
 
 // constant
 int TeamAuswahlTimer::getZeit() const
 {
-	return time;
+    return time;
 }
 
 // Reference Counting
 TeamAuswahlTimer *TeamAuswahlTimer::getThis()
 {
-	ref++;
-	return this;
+    ref++;
+    return this;
 }
 
 TeamAuswahlTimer *TeamAuswahlTimer::release()
 {
-	ref--;
-	if( !ref )
-		delete this;
-	return 0;
+    ref--;
+    if( !ref )
+        delete this;
+    return 0;
 }
 
 // Inhalt der TeamAuswahlChat Klasse aus TeamAuswahl.h
 // Konstruktor
-TeamAuswahlChat::TeamAuswahlChat( Schrift *zSchrift )
-{
-	nachricht = initTextFeld( 2, 178, 472, 20, zSchrift, TextFeld::Style::TextFeld, "" );
-	Bild *sendenBild = bilder->get( "chat.ltdb/senden.png" );
-	if( !sendenBild )
-	{
-		LTDBDatei *datei = new LTDBDatei();
-		datei->setDatei( new Text( "data/client/bilder/chat.ltdb" ) );
-		datei->leseDaten( 0 );
-		sendenBild = datei->laden( 0, new Text( "senden.png" ) );
-		datei->release();
-		bilder->add( "chat.ltdb/senden.png", sendenBild->getThis() );
-	}
-	senden = initKnopf( 476, 178, 20, 20, 0, 0, "" );
-	senden->setStyle( Knopf::Style::Sichtbar | Knopf::Style::Erlaubt | Knopf::Style::Hintergrund | Knopf::Style::HAlpha | Knopf::Style::HBild | Knopf::Style::KlickBuffer );
-	senden->setHintergrundBildZ( sendenBild );
-	verlauf = initTextFeld( 2, 2, 494, 174, zSchrift, TextFeld::Style::TextGebiet & ~TextFeld::Style::Erlaubt, "" );
-	verlauf->updateVScroll();
-	verlauf->setVertikalKlickScroll( 5 );
-	rahmen = new LRahmen();
-	rahmen->setSize( 498, 200 );
-	rahmen->setFarbe( 0xFFFFFFFF );
-	rahmen->setRamenBreite( 1 );
-	rend = 0;
-	ref = 1;
+TeamAuswahlChat::TeamAuswahlChat( Schrift * zSchrift )
+{
+    nachricht = initTextFeld( 2, 178, 472, 20, zSchrift, TextFeld::Style::TextFeld, "" );
+    Bild *sendenBild = bilder->get( "data/client/bilder/chat.ltdb/senden.png" );
+    senden = initKnopf( 476, 178, 20, 20, 0, 0, "" );
+    senden->setStyle( Knopf::Style::Sichtbar | Knopf::Style::Erlaubt | Knopf::Style::Hintergrund | Knopf::Style::HAlpha | Knopf::Style::HBild | Knopf::Style::KlickBuffer );
+    senden->setHintergrundBildZ( sendenBild );
+    verlauf = initTextFeld( 2, 2, 494, 174, zSchrift, TextFeld::Style::TextGebiet & ~TextFeld::Style::Erlaubt, "" );
+    verlauf->updateVScroll();
+    verlauf->setVertikalKlickScroll( 5 );
+    rahmen = new LRahmen();
+    rahmen->setSize( 498, 200 );
+    rahmen->setFarbe( 0xFFFFFFFF );
+    rahmen->setRamenBreite( 1 );
+    rend = 0;
+    ref = 1;
 }
 
 // Destruktor
 TeamAuswahlChat::~TeamAuswahlChat()
 {
-	nachricht->release();
-	senden->release();
-	verlauf->release();
-	rahmen->release();
+    nachricht->release();
+    senden->release();
+    verlauf->release();
+    rahmen->release();
 }
 
 // nicht constant
 void TeamAuswahlChat::addNachricht( char *nachricht )
 {
-	verlauf->addZeile( nachricht );
-	verlauf->updateVScroll();
-	rend = 1;
+    verlauf->addZeile( nachricht );
+    verlauf->updateVScroll();
+    rend = 1;
 }
 
 bool TeamAuswahlChat::tick( double tickVal )
 {
-	rend |= verlauf->tick( tickVal );
-	rend |= nachricht->tick( tickVal );
-	rend |= senden->tick( tickVal );
-	bool ret = rend;
-	rend = 0;
-	return ret;
-}
-
-void TeamAuswahlChat::doMausEreignis( MausEreignis &me )
-{
-	verlauf->doMausEreignis( me );
-	nachricht->doMausEreignis( me );
-	bool ver = !me.verarbeitet;
-	senden->doMausEreignis( me );
-	int aktion = ( ver && me.verarbeitet && me.id == ME_RLinks ) ? 1 : 0;
-	if( aktion == 1 )
-	{ // Nachricht senden
-		if( spielClient->spielErstelltChatNachricht( nachricht->zText()->getText() ) )
-		{
-			nachricht->setText( "" );
-			nachricht->setAuswahl( 0, 0 );
-			rend = 1;
-		}
-		else
-			nachLogin->zNachrichtenListe()->addNachricht( new Text( "Fehler" ), new Text( spielClient->getLetzterFehler() ), new Text( "Ok" ), 0 );
-	}
-}
-
-void TeamAuswahlChat::doTastaturEreignis( TastaturEreignis &te )
-{
-	bool ver = !te.verarbeitet;
-	nachricht->doTastaturEreignis( te );
-	int aktion = ( ver && te.verarbeitet && te.id == TE_Release && te.taste == T_Enter ) ? 1 : 0;
-	if( aktion == 1 )
-	{ // Nachricht senden
-		if( spielClient->spielErstelltChatNachricht( nachricht->zText()->getText() ) )
-		{
-			nachricht->setText( "" );
-			nachricht->setAuswahl( 0, 0 );
-			rend = 1;
-		}
-		else
-			nachLogin->zNachrichtenListe()->addNachricht( new Text( "Fehler" ), new Text( spielClient->getLetzterFehler() ), new Text( "Ok" ), 0 );
-	}
-}
-
-void TeamAuswahlChat::render( Bild &zRObj )
-{
-	if( !zRObj.setDrawOptions( 0, 398, 498, 200 ) )
-		return;
-	rahmen->render( zRObj );
-	verlauf->render( zRObj );
-	nachricht->render( zRObj );
-	senden->render( zRObj );
-	zRObj.releaseDrawOptions();
+    rend |= verlauf->tick( tickVal );
+    rend |= nachricht->tick( tickVal );
+    rend |= senden->tick( tickVal );
+    bool ret = rend;
+    rend = 0;
+    return ret;
+}
+
+void TeamAuswahlChat::doMausEreignis( MausEreignis & me )
+{
+    verlauf->doMausEreignis( me );
+    nachricht->doMausEreignis( me );
+    bool ver = !me.verarbeitet;
+    senden->doMausEreignis( me );
+    int aktion = ( ver && me.verarbeitet && me.id == ME_RLinks ) ? 1 : 0;
+    if( aktion == 1 )
+    { // Nachricht senden
+        if( spielClient->spielErstelltChatNachricht( nachricht->zText()->getText() ) )
+        {
+            nachricht->setText( "" );
+            nachricht->setAuswahl( 0, 0 );
+            rend = 1;
+        }
+        else
+            nachLogin->zNachrichtenListe()->addNachricht( new Text( "Fehler" ), new Text( spielClient->getLetzterFehler() ), new Text( "Ok" ), 0 );
+    }
+}
+
+void TeamAuswahlChat::doTastaturEreignis( TastaturEreignis & te )
+{
+    bool ver = !te.verarbeitet;
+    nachricht->doTastaturEreignis( te );
+    int aktion = ( ver && te.verarbeitet && te.id == TE_Release && te.taste == T_Enter ) ? 1 : 0;
+    if( aktion == 1 )
+    { // Nachricht senden
+        if( spielClient->spielErstelltChatNachricht( nachricht->zText()->getText() ) )
+        {
+            nachricht->setText( "" );
+            nachricht->setAuswahl( 0, 0 );
+            rend = 1;
+        }
+        else
+            nachLogin->zNachrichtenListe()->addNachricht( new Text( "Fehler" ), new Text( spielClient->getLetzterFehler() ), new Text( "Ok" ), 0 );
+    }
+}
+
+void TeamAuswahlChat::render( Bild & zRObj )
+{
+    if( !zRObj.setDrawOptions( 0, 398, 498, 200 ) )
+        return;
+    rahmen->render( zRObj );
+    verlauf->render( zRObj );
+    nachricht->render( zRObj );
+    senden->render( zRObj );
+    zRObj.releaseDrawOptions();
 }
 
 // constant
@@ -887,49 +878,49 @@ void TeamAuswahlChat::render( Bild &zRObj )
 // Reference Counting
 TeamAuswahlChat *TeamAuswahlChat::getThis()
 {
-	ref++;
-	return this;
+    ref++;
+    return this;
 }
 
 TeamAuswahlChat *TeamAuswahlChat::release()
 {
-	ref--;
-	if( !ref )
-		delete this;
-	return 0;
+    ref--;
+    if( !ref )
+        delete this;
+    return 0;
 }
 
 // Inhalt der TeamAuswahl Klasse aus TeamAuswahl.h
 // Konstruktor
-TeamAuswahl::TeamAuswahl( Schrift *zSchrift )
-{
-	tickVal = 0;
-	animation = 0;
-	sichtbar = 0;
-	alpha = 0;
-	karteId = 0;
-	sts = 0;
-	chat = 0;
-	timer = 0;
-	liste = 0;
-	schrift = zSchrift->getThis();
-	rend = 0;
-	ref = 1;
+TeamAuswahl::TeamAuswahl( Schrift * zSchrift )
+{
+    tickVal = 0;
+    animation = 0;
+    sichtbar = 0;
+    alpha = 0;
+    karteId = 0;
+    sts = 0;
+    chat = 0;
+    timer = 0;
+    liste = 0;
+    schrift = zSchrift->getThis();
+    rend = 0;
+    ref = 1;
 }
 
 // Destruktor
 TeamAuswahl::~TeamAuswahl()
 {
-	if( sichtbar )
-		setSichtbar( 0 );
-	if( chat )
-		chat->release();
-	if( timer )
-		timer->release();
-	if( liste )
-		liste->release();
-	if( sts )
-		sts->release();
+    if( sichtbar )
+        setSichtbar( 0 );
+    if( chat )
+        chat->release();
+    if( timer )
+        timer->release();
+    if( liste )
+        liste->release();
+    if( sts )
+        sts->release();
     if( schrift )
         schrift->release();
 }
@@ -937,199 +928,199 @@ TeamAuswahl::~TeamAuswahl()
 // nicht constant
 void TeamAuswahl::setKarteId( int karteId )
 {
-	this->karteId = karteId;
+    this->karteId = karteId;
 }
 
 void TeamAuswahl::setSichtbar( bool sichtbar, bool sofort )
 {
-	this->sichtbar = sichtbar;
-	if( sichtbar )
-		animation |= 0x1;
-	else
-	{
-		if( sofort )
-			alpha = 0;
-		else
-			animation &= ~0x1;
-	}
-	rend = 1;
-}
-
-void TeamAuswahl::initSTS( SpielerTeamStruktur *sts )
-{
-	hauptScreen->lock();
-	if( this->sts )
-		this->sts->release();
-	this->sts = sts;
-	if( chat )
-		chat = chat->release();
-	if( timer )
-		timer = timer->release();
-	if( liste )
-		liste = liste->release();
-	chat = new TeamAuswahlChat( schrift );
-	timer = new TeamAuswahlTimer( schrift );
-	liste = new TeamAuswahlListe( schrift, sts->getThis(), karteId );
-	hauptScreen->unlock();
-	rend = 1;
+    this->sichtbar = sichtbar;
+    if( sichtbar )
+        animation |= 0x1;
+    else
+    {
+        if( sofort )
+            alpha = 0;
+        else
+            animation &= ~0x1;
+    }
+    rend = 1;
+}
+
+void TeamAuswahl::initSTS( SpielerTeamStruktur * sts )
+{
+    hauptScreen->lock();
+    if( this->sts )
+        this->sts->release();
+    this->sts = sts;
+    if( chat )
+        chat = chat->release();
+    if( timer )
+        timer = timer->release();
+    if( liste )
+        liste = liste->release();
+    chat = new TeamAuswahlChat( schrift );
+    timer = new TeamAuswahlTimer( schrift );
+    liste = new TeamAuswahlListe( schrift, sts->getThis(), karteId );
+    hauptScreen->unlock();
+    rend = 1;
 }
 
 void TeamAuswahl::addSpieler( int accountId )
 {
-	if( liste )
-		liste->addSpieler( accountId );
+    if( liste )
+        liste->addSpieler( accountId );
 }
 
 void TeamAuswahl::setSpielerNummer( int accountId, int sNummer )
 {
-	if( liste )
-		liste->setTeamVonSpieler( accountId, sNummer );
+    if( liste )
+        liste->setTeamVonSpieler( accountId, sNummer );
 }
 
 void TeamAuswahl::removeSpieler( int accountId )
 {
-	if( liste )
-		liste->removeSpieler( accountId );
+    if( liste )
+        liste->removeSpieler( accountId );
 }
 
 void TeamAuswahl::verbleibendeZeit( int sekunden )
 {
-	if( timer )
-		timer->setVerbleibendeZeit( sekunden );
+    if( timer )
+        timer->setVerbleibendeZeit( sekunden );
 }
 
 void TeamAuswahl::addNachricht( char *nachricht )
 {
-	if( chat )
-		chat->addNachricht( nachricht );
+    if( chat )
+        chat->addNachricht( nachricht );
 }
 
 bool TeamAuswahl::tick( double tickVal )
 {
-	if( !sichtbar && !alpha )
-		return 0;
-	if( chat )
-		rend |= chat->tick( tickVal );
-	if( timer )
-		rend |= timer->tick( tickVal );
-	if( liste )
-		rend |= liste->tick( tickVal );
-	this->tickVal += tickVal * 150;
-	int val = ( int )this->tickVal;
-	if( !val )
-	{
-		bool ret = rend;
-		rend = 0;
-		return ret;
-	}
-	if( val > 5 )
-		val = 5;
-	this->tickVal -= val;
-	if( ( animation | 0x1 ) == animation ) // sichtbar werden
-	{
-		if( alpha != 255 )
-		{
-			if( alpha + val < 255 )
-				alpha += val;
-			else
-				alpha = 255;
-			rend = 1;
-		}
-	}
-	else // unsichtbar werden
-	{
-		if( alpha != 0 )
-		{
-			if( alpha - val >= 0 )
-				alpha -= val;
-			else
-				alpha = 0;
-			rend = 1;
-		}
-	}
-	bool ret = rend;
-	rend = 0;
-	return ret;
-}
-
-void TeamAuswahl::doMausEreignis( MausEreignis &me )
-{
-	if( !alpha )
-		return;
-	if( liste )
-		liste->doMausEreignis( me );
-	if( chat )
-	{
-		me.my -= 398;
-		chat->doMausEreignis( me );
-		me.mx -= 498;
-		if( timer->doMausEreignis( me ) )
-			liste->disable();
-		me.my += 398;
-		me.mx += 498;
-	}
-}
-
-void TeamAuswahl::doTastaturEreignis( TastaturEreignis &te )
-{
-	if( !alpha )
-		return;
-	if( chat )
-		chat->doTastaturEreignis( te );
-}
-
-void TeamAuswahl::render( Bild &zRObj )
-{
-	if( !alpha )
-		return;
-	if( !zRObj.setDrawOptions( 0, 0, 700, 600 ) )
-		return;
-	zRObj.setAlpha( alpha );
-	if( timer )
-		timer->render( zRObj );
-	if( chat )
-		chat->render( zRObj );
-	if( liste )
-		liste->render( zRObj );
-	zRObj.releaseAlpha();
-	zRObj.releaseDrawOptions();
+    if( !sichtbar && !alpha )
+        return 0;
+    if( chat )
+        rend |= chat->tick( tickVal );
+    if( timer )
+        rend |= timer->tick( tickVal );
+    if( liste )
+        rend |= liste->tick( tickVal );
+    this->tickVal += tickVal * 150;
+    int val = (int)this->tickVal;
+    if( !val )
+    {
+        bool ret = rend;
+        rend = 0;
+        return ret;
+    }
+    if( val > 5 )
+        val = 5;
+    this->tickVal -= val;
+    if( ( animation | 0x1 ) == animation ) // sichtbar werden
+    {
+        if( alpha != 255 )
+        {
+            if( alpha + val < 255 )
+                alpha += val;
+            else
+                alpha = 255;
+            rend = 1;
+        }
+    }
+    else // unsichtbar werden
+    {
+        if( alpha != 0 )
+        {
+            if( alpha - val >= 0 )
+                alpha -= val;
+            else
+                alpha = 0;
+            rend = 1;
+        }
+    }
+    bool ret = rend;
+    rend = 0;
+    return ret;
+}
+
+void TeamAuswahl::doMausEreignis( MausEreignis & me )
+{
+    if( !alpha )
+        return;
+    if( liste )
+        liste->doMausEreignis( me );
+    if( chat )
+    {
+        me.my -= 398;
+        chat->doMausEreignis( me );
+        me.mx -= 498;
+        if( timer->doMausEreignis( me ) )
+            liste->disable();
+        me.my += 398;
+        me.mx += 498;
+    }
+}
+
+void TeamAuswahl::doTastaturEreignis( TastaturEreignis & te )
+{
+    if( !alpha )
+        return;
+    if( chat )
+        chat->doTastaturEreignis( te );
+}
+
+void TeamAuswahl::render( Bild & zRObj )
+{
+    if( !alpha )
+        return;
+    if( !zRObj.setDrawOptions( 0, 0, 700, 600 ) )
+        return;
+    zRObj.setAlpha( alpha );
+    if( timer )
+        timer->render( zRObj );
+    if( chat )
+        chat->render( zRObj );
+    if( liste )
+        liste->render( zRObj );
+    zRObj.releaseAlpha();
+    zRObj.releaseDrawOptions();
 }
 
 // constant
 bool TeamAuswahl::istSichtbar() const
 {
-	return sichtbar;
+    return sichtbar;
 }
 
 int TeamAuswahl::getKarteId() const
 {
-	return karteId;
+    return karteId;
 }
 
 SpielerTeamStruktur *TeamAuswahl::getSTS() const
 {
-	return sts->getThis();
+    return sts->getThis();
 }
 
 // Reference Counting
 TeamAuswahl *TeamAuswahl::getThis()
 {
-	ref++;
-	return this;
+    ref++;
+    return this;
 }
 
 TeamAuswahl *TeamAuswahl::release()
 {
-	ref--;
-	if( !ref )
-		delete this;
-	return 0;
+    ref--;
+    if( !ref )
+        delete this;
+    return 0;
 }
 
 // Event Aktionen
-void TeamAuswahlListeSpielerTeamAuswahlE( void *p, AuswahlBox *obj, int p1, int p2 )
+void TeamAuswahlListeSpielerTeamAuswahlE( void *p, AuswahlBox * obj, int p1, int p2 )
 {
-	if( !p )
-		return;
-	( (TeamAuswahlListeSpieler*)p )->spielerTeamAuswahlE( obj, p1, p2 );
+    if( !p )
+        return;
+    ( (TeamAuswahlListeSpieler *)p )->spielerTeamAuswahlE( obj, p1, p2 );
 }

+ 3 - 30
KSGClient/NachLogin/Titel/TitelLeiste.cpp

@@ -10,36 +10,9 @@
 TitelLeiste::TitelLeiste( Fenster *zNachLogin, Schrift *zSchrift )
     : Thread()
 {
-    Bild *goldB = bilder->get( "system.ltdb/gold.jpg" );
-    if( !goldB )
-    {
-        LTDBDatei *datei = new LTDBDatei();
-        datei->setDatei( new Text( "data/bilder/system.ltdb" ) );
-        datei->leseDaten( 0 );
-        goldB = datei->laden( 0, new Text( "gold.jpg" ) );
-        datei->release();
-        bilder->add( "system.ltdb/gold.jpg", goldB->getThis() );
-    }
-    Bild *silberB = bilder->get( "system.ltdb/silber.jpg" );
-    if( !silberB )
-    {
-        LTDBDatei *datei = new LTDBDatei();
-        datei->setDatei( new Text( "data/bilder/system.ltdb" ) );
-        datei->leseDaten( 0 );
-        silberB = datei->laden( 0, new Text( "silber.jpg" ) );
-        datei->release();
-        bilder->add( "system.ltdb/silber.jpg", silberB->getThis() );
-    }
-    Bild *kupferB = bilder->get( "system.ltdb/kupfer.jpg" );
-    if( !kupferB )
-    {
-        LTDBDatei *datei = new LTDBDatei();
-        datei->setDatei( new Text( "data/bilder/system.ltdb" ) );
-        datei->leseDaten( 0 );
-        kupferB = datei->laden( 0, new Text( "kupfer.jpg" ) );
-        datei->release();
-        bilder->add( "system.ltdb/kupfer.jpg", kupferB->getThis() );
-    }
+    Bild *goldB = bilder->get( "data/bilder/system.ltdb/gold.jpg" );
+    Bild *silberB = bilder->get( "data/bilder/system.ltdb/silber.jpg" );
+    Bild *kupferB = bilder->get( "data/bilder/system.ltdb/kupfer.jpg" );
     LTDBDatei *bilder = new LTDBDatei();
     bilder->setDatei( new Text( "data/bilder/system.ltdb" ) );
     bilder->leseDaten( 0 );

+ 2 - 1
KSGClient/Netzwerk/ChatMessageProcessor.cpp

@@ -334,7 +334,7 @@ void ChatMessageProcessor::thread()
         case 0x15: // Chatroom Admin
             hauptScreen->lock();
             if( nachLogin &&nachLogin->zChatLeiste() )
-                nachLogin->zChatLeiste()->setChatroomAdmin( msg.account );
+                nachLogin->zChatLeiste()->setChatroomAdmin( msg.chatroom );
             hauptScreen->unlock();
             break;
         case 0x16: // Chatroom Kick
@@ -407,5 +407,6 @@ void ChatMessageProcessor::thread()
             }
             break;
         }
+        msg.ids.leeren();
     }
 }