+ 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 )
+Knopf *initKnopf( int x, int y, int br, int hö, Schrift *zSchrift, __int64 style, char *titel );
+KontrollKnopf *initKontrollKnopf( int x, int y, int br, int hö, Schrift *zSchrift, __int64 style, char *txt );
+Fenster *initFenster( int x, int y, int br, int hö, Schrift *zSchrift, __int64 style, char *titel );
+TextFeld *initTextFeld( int x, int y, int br, int hö, Schrift *zSchrift, __int64 style, char *txt );
+BildO *initBildO( int x, int y, int br, int hö, __int64 style, Bild *b );
+AuswahlBox *initAuswahlBox( int x, int y, int br, int hö, Schrift *zSchrift, __int64 style, std::initializer_list< char * > values );
+ObjTabelle *initObjTabelle( int x, int y, int br, int hö, Schrift *zSchrift, __int64 style, std::initializer_list< OBJTabelleSpalteIni > spalten, int überschriftHöhe );
+LDiag *initLinienDiagramm( int x, int y, int br, int hö, Schrift *zSchrift, __int64 style, DiagDaten *data );
+FBalken *initFBalken( int x, int y, int br, int hö, Schrift *zSchrift, __int64 style );
+AuswahlListe *initAuswahlListe( int x, int y, int br, int hö, Schrift *zSchrift, __int64 style, std::initializer_list< char * > values );
+ZeichnungHintergrund *initZeichnungHintergrund( int x, int y, int br, int hö, __int64 style, int farbe );
+ spiele->addPunkt( 1, i, anzGewonnen->get( i ) );
+ }
+ }
+ else
+ nachLogin->zNachrichtenListe()->addNachricht( new Text( "Fehler" ), new Text( "Die Aktivität des Spielers konnte nicht ermittelt werden." ), new Text( "Ok" ) );
+ Text *msg = new Text( "Die Funktion 'GetAccountHistorieStatistik' konnte in der DLL Datei '" );
+ msg->anhängen( pfad->getText() );
+ msg->anhängen( "' nicht gefunden werden." );
+ nachLogin->zNachrichtenListe()->addNachricht( new Text( "Fehler" ), msg, new Text( "Ok" ) );
+ pfad->release();
+ return 0;
+ }
+ pfad->release();
+ statistik = startFunk();
+ if( !statistik )
+ {
+ if( dllHandle )
+ {
+ dllDateien->releaseDLL( *dllName );
+ dllHandle = 0;
+ }
+ nachLogin->zNachrichtenListe()->addNachricht( new Text( "Fehler" ), new Text( "Für diese Spielart ist keine genauere Ansicht der Spiel Ergebnisse verfügbar." ), new Text( "Ok" ) );
+ Text *msg = new Text( "Die Funktion 'GetAufzeichnung' konnte in der DLL Datei '" );
+ msg->anhängen( pfad->getText() );
+ msg->anhängen( "' nicht gefunden werden." );
+ nachLogin->zNachrichtenListe()->addNachricht( new Text( "Fehler" ), msg, new Text( "Ok" ) );
+ pfad->release();
+ return 0;
+ }
+ pfad->release();
+ video = startFunk();
+ if( !video )
+ {
+ if( dllHandle )
+ {
+ dllDateien->releaseDLL( *dllName );
+ dllHandle = 0;
+ }
+ nachLogin->zNachrichtenListe()->addNachricht( new Text( "Fehler" ), new Text( "Für diese Spielart ist keine Aufzeichnung verfügbar." ), new Text( "Ok" ) );
+ spielE->addMember( new AccountSPListeEintrag( tmpk, schrift ) );
+ }
+ karteVera->release();
+ }
+ spielVera->release();
+ }
+ spielerVera->release();
+ spielArt->release();
+ }
+ else
+ nachLogin->zNachrichtenListe()->addNachricht( new Text( "Fehler" ), new Text( "Die Spielpartner dieses Spielers konnten nicht ermittelt werden." ), new Text( "Ok" ) );
+ tf->zText()->anhängen( values->z( i )->get( j ) );
+ tabelle->setZeichnungZ( j - 1, i + 1, tf );
+ }
+ }
+ }
+ }
+ }
+ else
+ nachLogin->zNachrichtenListe()->addNachricht( new Text( "Fehler" ), new Text( "Die Statistiken dieses Spielers konnten nicht abgerufen werden." ), new Text( "Ok" ) );
+ nachLogin->zNachrichtenListe()->addNachricht( new Text( "Chatroom Einladung" ), new Text( "Es wurde eine Chatroom Einladung an den Spieler gesendet." ),
+ new Text( "Ok" ), 0, NachrichtType::nachricht, 0 );
+ spielerName->setText( "" );
+ spielerName->setAuswahl( 0, 0 );
+ rend = 1;
+ }
+ }
+ else
+ {
+ nachLogin->zNachrichtenListe()->addNachricht( new Text( "Fehler" ), new Text( "Der Spieler wurde nicht gefunden." ),
+ new Text( "Ok" ), 0, NachrichtType::nachricht, 0 );
+ nachLogin->zNachrichtenListe()->addNachricht( new Text( "Chatroom Einladung" ), new Text( "Es wurde eine Chatroom Einladung an den Spieler gesendet." ),
+ new Text( "Ok" ), 0, NachrichtType::nachricht, 0 );
+ spielerName->setText( "" );
+ spielerName->setAuswahl( 0, 0 );
+ rend = 1;
+ }
+ }
+ else
+ {
+ nachLogin->zNachrichtenListe()->addNachricht( new Text( "Fehler" ), new Text( "Der Spieler wurde nicht gefunden." ),
+ new Text( "Ok" ), 0, NachrichtType::nachricht, 0 );
+ }
+ }
+ break;
+ }
+}
+
+void ChatroomFenster::render( int xPos, Bild &zRObj )
+ Punkt p = spieler->getZeichnungPosition( (Zeichnung*)obj );
+ if( p.y >= 0 )
+ {
+ int accountId = TextZuInt( spieler->zZeilenName( p.y )->getText(), 10 );
+ if( chatKlient->freundesAnfrage( accountId ) )
+ {
+ nachLogin->zNachrichtenListe()->addNachricht( new Text( "Freundes Einladung" ), new Text( "Es wurde eine Freundesanfrage an den Spieler gesendet." ),
+ new Text( "Ok" ), 0, NachrichtType::nachricht, 0 );
+ nachLogin->zNachrichtenListe()->addNachricht( new Text( "Fehler" ), new Text( "Deine Spiel Version ist nicht aktuell. Sie wird beim nächsten Spielstart aktualisiert." ), new Text( "Ok" ), 0, NachrichtType::nachricht, 0 );
+ if( !sgf )
+ {
+ Text *pfad = infoKlient->getDateiGruppePfad( dgSId );
+ Text *idT = new Text();
+ idT->anhängen( dgSId );
+ if( pfad )
+ {
+ KSGTDatei *dg = new KSGTDatei( "data/dg.ksgt" );
+ nachLogin->zNachrichtenListe()->addNachricht( new Text( "Fehler" ), new Text( editorKlient->getLetzterFehler() ), new Text( "Ok" ) );
+ return 0;
+ }
+ else
+ {
+ Datei d;
+ d.setDatei( "data/tmp/ke/kbv/seite.ksgs" );
+ d.erstellen();
+ if( !d.öffnen( Datei::Style::schreiben ) )
+ {
+ nachLogin->zNachrichtenListe()->addNachricht( new Text( "Fehler" ), new Text( "Fehler beim öffnen der Datei 'data/tmp/ke/kbv/seite.ksgs'" ), new Text( "Ok" ) );
+ nachLogin->zNachrichtenListe()->addNachricht( new Text( "Fehler" ), new Text( editorKlient->getLetzterFehler() ), new Text( "Ok" ) );
+ laden->setSichtbar( 0 );
+ run = 0;
+ return;
+ }
+ nachLogin->setEditor( editorF->getThis() );
+ aktion = 9;
+ laden->setSichtbar( 0 );
+ run = 0;
+}
+
+void KartenEditor::setKarte( int id )
+{
+ jetzt = 0;
+ hauptScreen->lock();
+ if( releaseF )
+ releaseF->release();
+ if( shopSeiteF )
+ shopSeiteF->release();
+ if( beschreibungF )
+ beschreibungF->release();
+ if( teamsF )
+ teamsF->release();
+ if( editorF )
+ editorF->release();
+ if( editorDll )
+ dllDateien->releaseDLL( dllName );
+ releaseF = new KERelease( id, schrift );
+ releaseF->setSichtbar( 1, 0 );
+ karteRelease->setAlphaFeldFarbe( 0x0000FF00 );
+ shopSeite->setAlphaFeldFarbe( 0x5500FF00 );
+ beschreibung->setAlphaFeldFarbe( 0x5500FF00 );
+ teams->setAlphaFeldFarbe( 0x5500FF00 );
+ dateien->setAlphaFeldFarbe( 0x5500FF00 );
+ editor->setAlphaFeldFarbe( 0x5500FF00 );
+ editor->löscheStyle( Knopf::Style::Erlaubt );
+ kaufHistorie->setAlphaFeldFarbe( 0x5500FF00 );
+ jetzt = 1;
+ shopSeiteF = new KEShopSeite( id, schrift );
+ beschreibungF = new KEBeschreibung( id, schrift );
+ teamsF = new KETeams( id, schrift );
+ dateienF = new KEDateien( id, schrift );
+ // Editor laden
+ int spielArt = infoKlient->getSpielId( id );
+ KSGTDatei *dgt = new KSGTDatei( "data/dg.ksgt" );
+ dgt->laden();
+ bool sak = 0;
+ int dgSId = infoKlient->getDateiGruppeIdVonSpiel( spielArt );
+ bool sgf = 0;
+ for( int i = 0; i < dgt->getZeilenAnzahl(); i++ )
+ {
+ if( dgt->zFeld( i, 0 ) && TextZuInt( dgt->zFeld( i, 0 )->getText(), 10 ) == dgSId )
+ {
+ sgf = 1;
+ int lv = dgt->zFeld( i, 2 ) ? TextZuInt( dgt->zFeld( i, 2 )->getText(), 10 ) : 0;
+ int ov = infoKlient->getSpielVersion( spielArt );
+ if( lv == ov )
+ {
+ sak = 1;
+ break;
+ }
+ }
+ }
+ dgt->release();
+ if( !sak )
+ {
+ nachLogin->zNachrichtenListe()->addNachricht( new Text( "Fehler" ), new Text( "Deine Spiel Version ist nicht aktuell. Sie wird beim nächsten Spielstart aktualisiert. Bis dahin sind nicht alle Editorfunktionen verfügbar." ), new Text( "Ok" ), 0, NachrichtType::nachricht, 0 );
+ if( !sgf )
+ {
+ Text *pfad = infoKlient->getDateiGruppePfad( dgSId );
+ Text *idT = new Text();
+ idT->anhängen( dgSId );
+ if( pfad )
+ {
+ KSGTDatei *dg = new KSGTDatei( "data/dg.ksgt" );
+ la = (Animation2D*)ladeAnimation->dublizieren();
+ la->setPosition( 365, 215 );
+ la->setSichtbar( 0 );
+ schrift = zSchrift->getThis();
+ tickVal = 0;
+ sichtbar = 0;
+ alpha = 0;
+ spielArt = 0;
+ rend = 0;
+ ref = 1;
+}
+
+// Destruktor
+SpielStatistik::~SpielStatistik()
+{
+ if( stat )
+ stat->release();
+ if( spielDll )
+ FreeLibrary( spielDll );
+ la->release();
+ schrift->release();
+}
+
+// nicht constant
+void SpielStatistik::setSpielArt( int spielArt )
+{
+ if( this->spielArt )
+ return;
+ this->spielArt = spielArt;
+ la->setSichtbar( 1 );
+ Text *name = infoKlient->getSpielName( spielArt );
+ if( !name )
+ {
+ this->spielArt = 0;
+ la->setSichtbar( 0 );
+ nachLogin->zNachrichtenListe()->addNachricht( new Text( "Fehler" ), new Text( "Die Spiel Statistik konnte nicht geladen werden." ), new Text( "Ok" ) );
+ return;
+ }
+ Text *pfad = new Text( "data/spiele/" );
+ pfad->anhängen( name->getText() );
+ pfad->anhängen( "/bin/" );
+ pfad->anhängen( name );
+ pfad->anhängen( ".dll" );
+ spielDll = LoadLibrary( pfad->getText() );
+ pfad->release();
+ if( !spielDll )
+ {
+ this->spielArt = 0;
+ la->setSichtbar( 0 );
+ nachLogin->zNachrichtenListe()->addNachricht( new Text( "Fehler" ), new Text( "Die Spiel Statistik konnte nicht geladen werden." ), new Text( "Ok" ) );
+ nachLogin->zNachrichtenListe()->addNachricht( new Text( "Fehler" ), new Text( "Die Spiel Statistik konnte nicht geladen werden." ), new Text( "Ok" ) );
+ return;
+ }
+ stat = gsk();
+ if( !stat )
+ {
+ FreeLibrary( spielDll );
+ this->spielArt = 0;
+ la->setSichtbar( 0 );
+ nachLogin->zNachrichtenListe()->addNachricht( new Text( "Fehler" ), new Text( "Die Spiel Statistik konnte nicht geladen werden." ), new Text( "Ok" ) );
+void SpielStatistik::addNachrichtF( Text *t, Text *n, Text *rp, Text *rn, char a, void *ü )
+{
+ nachLogin->zNachrichtenListe()->addNachricht( t, n, rp, rn, a, ü );
+}
+
+void SpielStatistik::addChatF( int acc )
+{
+ nachLogin->zChatLeiste()->addChat( acc, 0 );
+}
+
+void SpielStatistik::addFreundF( int acc )
+{
+ if( !chatKlient->freundesAnfrage( acc ) )
+ nachLogin->zNachrichtenListe()->addNachricht( new Text( "Fehler" ), new Text( "Die Freundesanfrage konnte nicht gesendet werden." ), new Text( "Ok" ) );
+ else
+ nachLogin->zNachrichtenListe()->addNachricht( new Text( "Freundesanfrage" ), new Text( "Es wurde eine Freundesanfrage an den Spieler gesendet." ), new Text( "Ok" ) );
+ bool nameVergessen( const char *pass, const char *geheim ); // schickt den Account Namen an die Bekannte E-Mail Addresse
+ bool passwortVergessen( const char *name, const char *geheim ); // schickt das Account Passwort an die Bekannte E-Mail Addresse
+ bool geheimnisVergessen( const char *name, const char *pass ); // schickt das Account Geheimnis an die Bekannte E-Mail Addresse
+ bool eMailVergessen( const char *name, const char *pass, const char *geheim, char **eMail ); // gibt die E-Mail Addresse des Accounts zurück
+ bool keepAlive(); // Erhält die Verbindung aufrecht
+ bool trenne(); // trennt sich von dem Register Server
+ // constant
+ bool istVerbunden() const; // prüft, ob mit Register Server verbunden
+ bool vorgangBrauchBestätigung() const; // prüft, ob eine Bestätigung notwendig ist
+ char *getLetzterFehler() const; // gibt den Letzten Fehlertext zuück
+ // Reference Counting
+ RegisterKlient *getThis();
+ RegisterKlient *release();
+};
+
+class InformationKlient : public InformationKlientV
+{
+private:
+ Klient *klient;
+ bool verbunden;
+ Text *fehler;
+ int klientId;
+ int ref;
+ CRITICAL_SECTION cs;
+
+public:
+ // Konstruktor
+ InformationKlient();
+ // Destruktor
+ ~InformationKlient(); // wenn verbunden, dann trennen
+ // nicht constant
+ virtual bool verbinde() override; // verbindet ich mit dem Informaion Server
+ virtual bool getInformationText( Text *txt, int *typ ) override; // fragt nach Informationstext
+ virtual bool istSpielErlaubt( int spielId ) override; // fragt, ob das entsprechende Spiel vom Server gesperrt wurde
+ virtual bool istKarteErlaubt( int karteId ) override; // fragt, ob die entsprechende Karte vom Server gesperrt wurde
+ virtual int getKarteId( char *name ) override; // fragt nach der Id einer Karte
+ virtual int getSpielId( char *name ) override; // fragt nach der id eines Spiels
+ virtual Text *getSpielerName( int accountId ); // fragt nach dem Namen eines Accounts
+ virtual bool getSpielStatistik( int accountId, int spielId, Array< int > *werte ) override; // fragt nach der Spiel Statistik eines Accounts
+ virtual Text *getKarteName( int karteId ) override; // fragt nach dem Namen einer Karte
+ virtual Text *getSpielName( int spielId ) override; // fragt nach dem Namen einer Spielart
+ virtual Text *getChatroomName( int chatroomId ) override; // fragt nach dem Namen eines Chatrooms
+ virtual int getSpielId( int karteId ) override; // fragt zu welcher Spielart die Karte gehört
+ virtual int getAccountId( char *name ) override; // gibt die Id des Accounts zurück
+ virtual int getChatroomId( char *name ) override; // gibt die Id des Chatrooms zurück
+ virtual int getGruppenKarteId( int gruppenId ) override; // gibt die karten Id der gruppe zurück
+ virtual bool getGruppeSpielerHinzufügen( int gruppeId ) override; // gibt die Spieler hinzufügen Funktion der Gruppe zurück
+ virtual int getGruppeAdminId( int gruppeId ) override; // gibt den Gruppen Administrator zurück
+ virtual int getSpielerPunkte( int accountId, int spielId ) override; // gibt die Punkte eines Spielers zurück
+ virtual Array< int > *getAccountSpielArtListe() override; // gibt eine Liste mit gekauften Spielen zurück
+ virtual int getSpielVersion( int spielId ) override; // gibt die neuste Version eines Spiels zurück
+ virtual int getKupfer() override; // gibt das Kupfer des Accounts zurück
+ virtual int getDateiGruppeIdVonSpiel( int spielId ) override; // Gibt die Dateigruppe eines Spieles zurück
+ virtual Text *getDateiGruppePfad( int dgId ) override; // Gibt den Dateigruppen Pfad zurück
+ virtual Array< int > *getAccountKarteListe( int spielId ) override; // gibt eine Liste mit gekauften Karten zurück
+ virtual int getDateiGruppeIdVonPfad( char *pfad ) override; // Gibt die Dateigruppe eines Pfades zurück
+ virtual int getDateiGruppeVersion( int dg ) override; // gibt die neuste Version einer Dateigruppe zurück
+ virtual int getSpielerListe( char *suche, int *seite, int *maxSeite, char sortSpalte, char rückwärts,
+ Array< int > *accounts, RCArray< Text > *name, RCArray< Text > *zuletztOnline,
+ RCArray< Text > *letztesSpiel, RCArray< Text > *letzteKarte, RCArray< Text > *punkte ) override; // sucht nach Spielern
+ virtual bool getSpielerAktivität( int accId, RCArray< Text > *datum, Array< double > *stOnline, Array< double > *stGespielt,
+ Array< int > *anzSpiele, Array< int > *anzGewonnen ) override; // ermittelt die aktivität eines Spielers
+ virtual int getAccountKarteSpiele( int account, int karte ) override; // Gibt zurück, wie oft ein Spieler eine Karte schon gespielt hat
+ virtual int getAccountKarteSpieleGewonnen( int account, int karte ) override; // Gibt zurück, wie oft ein Spieler eine Karte schon gewonnen hat
+ virtual bool hatAccountKarte( int account, int karte ) override; // Gibt zurück, ob ein Spieler die Karte im Besitz hat
+ virtual bool hatAccountSpiel( int account, int spiel ) override; // Gibt zurück, ob ein Spieler ein Spiel im Besitz hat
+ virtual Array< int > *getAccountKarteGespieltListe( int account, int spielId ) override; // gibt eine Liste mit Karten zurück, die von einem Spieler bereits gespielt wurden
+ virtual Array< int > *getAccountSpielGespieltListe( int account ) override; // gibt eine Liste mit Spielen zurück, die von einem Spieler bereits gespielt wurden
+ virtual bool getSpielPartnerListe( int account, Array< int > *spieler, Array< int > *karten, Array< int > *anzahl ) override; // Gibt eine Liste von Spiel Partnern eines Spielers zurück
+ virtual bool getStatistikListe( int account, int *seite, int *maxSeite, char sortSpalte, char rückwärts,
+ RCArray< Array< int > > *werte, RCArray< Text > *namen ) override; // Gibt eine Liste mit Spiel Statistiken zurück
+ virtual AHDaten *getSpielHistorieDaten( int account ) override; // Gibt eine Liste mit den letzten 20 Spielen zurück
+ virtual bool getHistorieServer( int spielId, int *port, Text *ip ) override; // sucht nach dem Historie Server von einem Spiel
+ virtual bool keepAlive() override; // Erhält die Verbindung aufrecht
+ virtual bool hatRecht( int recht ) override; // Prüft ob Berechtigung vorhanden
+ virtual int getKartenListe( char *filter, char sortSpalte, char absteigend, Array< int > *kId, RCArray< Text > *kName, RCArray< Text > *sName,
+ Array< int > *kupfer, Array< int > *verkauft, Array< int > *maxSpieler ) override; // Gibt eine Liste mit Karten zurück
+ virtual bool getEditorServer( int karteId, int *port, Text *ip ) override; // sucht nach dem Editor Server von einer Karte
+ virtual bool getKartenServer( int karteId, int *port, Text *ip ) override; // sucht nach dem Karten Server von einer Karte
+ virtual bool trenne() override; // trennt sich von dem Informaion Server
+ // constant
+ virtual bool istVerbunden() const override; // prüft, ob mit Informaion Server verbunden
+ virtual char *getLetzterFehler() const override; // gibt den Letzten Fehlertext zuück
+ // Reference Counting
+ virtual InformationKlientV *getThis() override;
+ virtual InformationKlientV *release() override;
+};
+
+class ChatKlient : private Thread
+{
+private:
+ Klient *senden;
+ Klient *empfangen;
+ bool verbunden;
+ Text *fehler;
+ int klientId;
+ int ref;
+ CRITICAL_SECTION cs;
+
+public:
+ // Konstruktor
+ ChatKlient();
+ // Destruktor
+ ~ChatKlient();
+ // nicht constant
+ bool verbinde(); // verbindet ich mit dem Chat Server
+ bool chatNachricht( int zuAccount, const char *nachricht ); // sendet eine Nachricht zu einem Account
+ bool accountNameÄndern( const char *name ); // ändert den Account Namen
+ bool freundschaftBeenden( int accountId ); // beendet die Freundschaft mit einem Account
+ bool freundesAnfrage( int accountId ); // sendet eine Freundesanfragezu einem Account
+ bool freundesAnfrageBeantworten( int accountId, bool ja ); // beantwortet eine Freundesanfrage
+ int chatroomErstellen( const char *name ); // erstellt ein chatroom
+ bool chatroomEinladung( int accountId, int chatroomId ); // verschickt eine Einladung zu einem Chatroom
+ bool chatroomEinladungAblehnen( int accountId, int chatroomId ); // Einladung zum Chatroom wird abgelehnt
+ bool chatroomBetreten( int chatroomId ); // betritt ein chatroom
+Array< int > *InformationKlient::getAccountKarteGespieltListe( int account, int spielId ) // gibt eine Liste mit Karten zurück, die von einem Spieler bereits gespielt wurden
+Array< int > *InformationKlient::getAccountSpielGespieltListe( int account ) // gibt eine Liste mit Spielen zurück, die von einem Spieler bereits gespielt wurden
+bool InformationKlient::getSpielPartnerListe( int account, Array< int > *spieler, Array< int > *karten, Array< int > *anzahl ) // Gibt eine Liste von Spiel Partnern eines Spielers zurück
+ nachLogin->zNachrichtenListe()->addNachricht( new Text( "Spiel Abgebrochen" ), new Text( grund ), new Text( "Ok" ), 0, NachrichtType::nachricht, 0 );
+ <befehl='Funktionsaufruf';funktion='TEXT_ERSTELLEN';name='versionbesitz';txt='Du besitzt die Testversion dieser Karte.';x='5';y='125';br='300';hö='20'>
+ <befehl='Funktionsaufruf';funktion='TEXT_ERSTELLEN';name='versionbesitz';txt='Du besitzt die Vollversion dieser Karte.';x='5';y='90';br='300';hö='20'>
+ <befehl='Funktionsaufruf';funktion='TEXT_ERSTELLEN';name='versionbesitz';txt='Du besitzt die Testversion dieses Spiels.';x='5';y='125';br='300';hö='20'>
+ <befehl='Funktionsaufruf';funktion='TEXT_ERSTELLEN';name='versionbesitz';txt='Du besitzt die Vollversion dieses Spiels.';x='5';y='125';br='300';hö='20'>
+ txt = "Bei dem spiel Linie bewegen sich die Spieler duch ein Spielfeld und können nur ihre Richtung beeinflussen. Dabei hinterlässt Jeder Spieler eine Linie die nicht berührt werden darf. Viel spaß wünscht ihnen Kolja-Strohm Games.";
+ län = txt.getLänge();
+ num = 0;
+ z = 0;
+ }
+ func bool next( double zeit )
+ {
+ z += zeit;
+ if( ( z > 0.03 ) && ( num < län ) )
+ {
+ var Text t;
+ t = beschreibung.getText();
+ while( z > 0.03 )
+ {
+ z -= 0.03;
+ t.anhängen( txt.getTeilText( num, num + 1 ) );
+ num += 1;
+ if( num >= län )
+ {
+ break;
+ }
+ }
+ beschreibung.setText( t );
+ beschreibung.setTextNachGröße();
+ return true;
+ }
+ return false;
+ }
+ func void render( Bild b )
+ {
+ beschreibung.render( b );
+ }
+};
+
+var TextErscheinen beschreibung;
+
+func void start()
+{
+ beschreibung.init();
+}
+
+func void initTextFeld( TextFeld tf, int x, int y, int br, int hö, Text t, int style )
+{
+ tf.setPosition( x, y );
+ tf.setGröße( br, hö );
+ tf.setStyle( style );
+ tf.setSchriftFarbe( 0xFFFFFFFF );
+ tf.setText( t );
+}
+
+func void initKnopf( Knopf k, int x, int y, int br, int hö, Text t )
+Stickman World online ist eines der Ersten Spiele von Kolja-Strohm Games. Es gibt verschiedene Karten mit jeweils anderen Spielsystemen. Kolja-Strohm Games wünscht ihnen viel Spaß beim Spielen.
+ 3- 0
3DTest/data/spiele/Stickman World Online/data/game.ini