123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894 |
- #include <Klient.h>
- #include <main.h>
- #include <Fenster.h>
- #include <Text.h>
- #include <Datei.h>
- #include <Punkt.h>
- #include <Bildschirm.h>
- #include <Prozess.h>
- #include <Knopf.h>
- #include <Bild.h>
- #include <DateiSystem.h>
- #include <MausEreignis.h>
- #include <TastaturEreignis.h>
- #include <Fortschritt.h>
- #include <Schrift.h>
- #include <Liste.h>
- #include <Rahmen.h>
- #include <AlphaFeld.h>
- #include <TextFeld.h>
- #include <Maus.h>
- #include <Zeit.h>
- #include <InitDatei.h>
- #include <Tabelle.h>
- #include <Scroll.h>
- #include <AuswahlBox.h>
- #include <KSGTDatei.h>
- #include <Globals.h>
- #include "Patcher.h"
- #include "News.h"
- using namespace Framework;
- using namespace Network;
- bool _exitB = 0;
- WFenster *_frame;
- FBalken *_fortschritt;
- TextFeld *_aktion;
- TextFeld *_kbps;
- Knopf *_play;
- Patcher *_patcher;
- Fenster *_optionenF;
- ObjTabelle *_o_rt;
- Knopf *_o_rno;
- Knopf *_o_rnu;
- TextFeld *_o_ülps;
- AuswahlBox *_o_üle;
- InitDatei *userOptions;
- bool _newWechsel = 1;
- bool _abbruch = 0;
- bool _o_rkkME( void *p, void *obj, MausEreignis me );
- void _frameSchließen( void *p, void *obj )
- {
- }
- bool _frameME( void *p, void *obj, MausEreignis me )
- {
- return 1;
- }
- bool _frameTE( void *p, void *obj, TastaturEreignis me )
- {
- return 1;
- }
- bool closeME( void *p, void *obj, MausEreignis me )
- {
- if( me.id == ME_RLinks )
- {
- _abbruch = 1;
- PostQuitMessage( 0 );
- }
- return 1;
- }
- bool minimierenME( void *p, void *obj, MausEreignis me )
- {
- if( me.id == ME_RLinks )
- {
- _frame->setAnzeigeModus( 2 );
- }
- return 1;
- }
- bool _playME( void *p, void *obj, MausEreignis me )
- {
- if( me.id == ME_Betritt )
- getMaus().ladeMaus( MausId::hand );
- if( me.id == ME_Leaves )
- getMaus().ladeMaus( MausId::normal );
- getMaus().update();
- if( me.id == ME_RLinks )
- PostQuitMessage( 0 );
- return 1;
- }
- bool optionenME( void *p, void *obj, MausEreignis me )
- {
- if( me.id == ME_RLinks )
- {
- _o_rno->removeStyle( Knopf::Style::Erlaubt );
- _o_rnu->removeStyle( Knopf::Style::Erlaubt );
- while( _o_rt->getZeilenAnzahl() > 1 )
- _o_rt->removeZeile( 1 );
- KSGTDatei *dat = new KSGTDatei( "data/dg.ksgt" ); // Tabellen Spalten: Id, Pfad, Version, Priorität
- dat->laden();
- int max = -1;
- for( int i = 0; i < dat->getZeilenAnzahl(); i++ )
- {
- if( !dat->zFeld( i, 3 ) || dat->zFeld( i, 3 )->istGleich( "NICHT" ) || dat->zFeld( i, 3 )->istGleich( "" ) )
- continue;
- if( max < (int)TextZuInt( dat->zFeld( i, 3 )->getText(), 10 ) )
- max = (int)TextZuInt( dat->zFeld( i, 3 )->getText(), 10 );
- }
- for( int i = 0; i <= max; i++ )
- {
- for( int j = 0; j < dat->getZeilenAnzahl(); j++ )
- {
- if( !dat->zFeld( j, 1 ) || dat->zFeld( j, 1 )->istGleich( "" ) )
- continue;
- Text *iT = new Text( "" );
- iT->append( i );
- if( dat->zFeld( j, 3 ) && dat->zFeld( j, 3 )->istGleich( iT ) )
- {
- Text *name = dat->zFeld( j, 1 )->getTeilText( dat->zFeld( j, 1 )->positionVon( "spiele/" ) + 7 );
- if( !name || !name->getLength() || !dat->zFeld( j, 1 )->hat( "spiele/" ) )
- {
- if( name )
- name->release();
- name = dat->zFeld( j, 1 )->getTeilText( dat->zFeld( j, 1 )->positionVon( "Spiele/" ) + 7 );
- }
- if( !name || !name->getLength() || ( !dat->zFeld( j, 1 )->hat( "Spiele/" ) && !dat->zFeld( j, 1 )->hat( "spiele/" ) ) )
- {
- if( name )
- name->release();
- name = new Text( dat->zFeld( j, 1 )->getText() );
- if( name->hat( '/' ) )
- name->remove( 0, name->positionVon( '/', name->anzahlVon( '/' ) - 1 ) + 1 );
- }
- int anz = _o_rt->getZeilenAnzahl();
- _o_rt->addZeile( dat->zFeld( j, 0 )->getText() );
- Text *spielN = 0;
- if( name->positionVon( '/' ) >= 0 )
- spielN = name->getTeilText( 0, name->positionVon( '/' ) );
- else
- spielN = new Text( name->getText() );
- name = name->release();
- TextFeld *spiel = new TextFeld();
- spiel->setStyle( TextFeld::Style::Sichtbar | TextFeld::Style::Center );
- spiel->setSchriftZ( _optionenF->getTSchrift() );
- spiel->setSchriftFarbe( 0xFFFFFFFF );
- spiel->setHintergrundFarbe( 0xFF003000 );
- spiel->setText( spielN );
- _o_rt->setZeichnungZ( 0, anz, spiel );
- KontrollKnopf *erlaubt = new KontrollKnopf();
- erlaubt->addStyle( KontrollKnopf::Style::Sichtbar | KontrollKnopf::Style::Erlaubt | KontrollKnopf::Style::KlickBuffer | KontrollKnopf::Style::Selected );
- erlaubt->setHintergrundFarbe( 0xFF003000 );
- erlaubt->setSBgFarbe( 0xFF003000 );
- erlaubt->loadData( "data/bilder/system.ltdb" );
- erlaubt->setMausEreignis( _o_rkkME );
- _o_rt->setZeichnungZ( 1, anz, erlaubt );
- }
- }
- }
- for( int i = 0; i < dat->getZeilenAnzahl(); i++ )
- {
- if( dat->zFeld( i, 3 ) && dat->zFeld( i, 3 )->istGleich( "NICHT" ) )
- {
- Text *name = dat->zFeld( i, 1 )->getTeilText( dat->zFeld( i, 1 )->positionVon( "spiele/" ) + 7 );
- if( !name || !name->getLength() )
- {
- if( name )
- name->release();
- name = dat->zFeld( i, 1 )->getTeilText( dat->zFeld( i, 1 )->positionVon( "Spiele/" ) + 7 );
- }
- if( !name || !name->getLength() )
- {
- if( name )
- name->release();
- name = new Text( dat->zFeld( i, 1 )->getText() );
- if( name->hat( '/' ) )
- name->remove( 0, name->positionVon( '/', name->anzahlVon( '/' ) - 1 ) );
- }
- int anz = _o_rt->getZeilenAnzahl();
- _o_rt->addZeile( dat->zFeld( i, 0 )->getText() );
- Text *spielN = 0;
- if( name->positionVon( '/' ) >= 0 )
- spielN = name->getTeilText( 0, name->positionVon( '/' ) );
- else
- spielN = new Text( name->getText() );
- name = name->release();
- TextFeld *spiel = new TextFeld();
- spiel->setStyle( TextFeld::Style::Sichtbar | TextFeld::Style::Center );
- spiel->setSchriftZ( _optionenF->getTSchrift() );
- spiel->setSchriftFarbe( 0xFFFFFFFF );
- spiel->setHintergrundFarbe( 0xFF003000 );
- spiel->setText( spielN );
- _o_rt->setZeichnungZ( 0, anz, spiel );
- KontrollKnopf *erlaubt = new KontrollKnopf();
- erlaubt->addStyle( KontrollKnopf::Style::Sichtbar | KontrollKnopf::Style::Erlaubt | KontrollKnopf::Style::KlickBuffer );
- erlaubt->setHintergrundFarbe( 0xFF003000 );
- erlaubt->loadData( "data/bilder/system.ltdb" );
- erlaubt->setMausEreignis( _o_rkkME );
- _o_rt->setZeichnungZ( 1, anz, erlaubt );
- }
- }
- dat->release();
- InitDatei *ini = new InitDatei( "data/patch/po.ini" );
- ini->laden();
- if( ini->wertExistiert( "ülps" ) )
- _o_ülps->setText( ini->zWert( "ülps" )->getText() );
- if( ini->wertExistiert( "üle" ) )
- _o_üle->setAuswahl( _o_üle->getEintragPos( ini->zWert( "üle" )->getThis() ) );
- ini->release();
- _optionenF->setPosition( 100, 100 );
- _optionenF->addStyle( Fenster::Style::Sichtbar );
- }
- return 1;
- }
- bool oAbbrechen( void *p, void *obj, MausEreignis me )
- {
- if( me.id == ME_RLinks )
- _optionenF->removeStyle( Fenster::Style::Sichtbar );
- return 1;
- }
- bool _o_rtME( void *p, void *obj, MausEreignis me )
- {
- if( me.id == ME_RLinks )
- {
- for( int i = 1; i < _o_rt->getZeilenAnzahl(); i++ )
- {
- if( _o_rt->zZeichnung( 0, i ) )
- ( (TextFeld*)_o_rt->zZeichnung( 0, i ) )->removeStyle( TextFeld::Style::Hintergrund );
- if( _o_rt->zZeichnung( 1, i ) )
- ( (KontrollKnopf*)_o_rt->zZeichnung( 1, i ) )->removeStyle( KontrollKnopf::Style::Hintergrund | KontrollKnopf::Style::SelectFarbe );
- }
- int zeile = (int)_o_rt->getMausZeile( me.my - _o_rt->getVertikalScrollPos() );
- if( zeile <= 0 )
- {
- _o_rno->removeStyle( Knopf::Style::Erlaubt );
- _o_rnu->removeStyle( Knopf::Style::Erlaubt );
- }
- else
- {
- if( _o_rt->zZeichnung( 0, zeile ) )
- ( (TextFeld*)_o_rt->zZeichnung( 0, zeile ) )->addStyle( TextFeld::Style::Hintergrund );
- if( _o_rt->zZeichnung( 1, zeile ) )
- ( (KontrollKnopf*)_o_rt->zZeichnung( 1, zeile ) )->addStyle( KontrollKnopf::Style::Hintergrund | KontrollKnopf::Style::SelectFarbe );
- if( zeile > 1 )
- _o_rno->addStyle( Knopf::Style::Erlaubt );
- else
- _o_rno->removeStyle( Knopf::Style::Erlaubt );
- int max = 0;
- for( int i = 1; i < _o_rt->getZeilenAnzahl(); i++ )
- {
- if( !_o_rt->zZeichnung( 1, i ) || ( (KontrollKnopf*)_o_rt->zZeichnung( 1, i ) )->hatStyleNicht( KontrollKnopf::Style::Selected ) )
- break;
- max = i;
- }
- if( zeile < max )
- _o_rnu->addStyle( Knopf::Style::Erlaubt );
- else
- _o_rnu->removeStyle( Knopf::Style::Erlaubt );
- if( ( _o_rt->zZeichnung( 1, zeile ) && ( (KontrollKnopf*)_o_rt->zZeichnung( 1, zeile ) )->hatStyleNicht( KontrollKnopf::Style::Selected ) ) )
- {
- _o_rno->removeStyle( Knopf::Style::Erlaubt );
- _o_rnu->removeStyle( Knopf::Style::Erlaubt );
- }
- }
- }
- return 1;
- }
- bool _o_rnoME( void *p, void *obj, MausEreignis me )
- {
- if( me.id == ME_RLinks )
- {
- int zeile = -1;
- for( int i = 1; i < _o_rt->getZeilenAnzahl(); i++ )
- {
- if( _o_rt->zZeichnung( 0, i ) && ( (TextFeld*)_o_rt->zZeichnung( 0, i ) )->hatStyle( TextFeld::Style::Hintergrund ) )
- {
- zeile = i;
- break;
- }
- }
- if( zeile > 1 )
- {
- _o_rt->setZeilePosition( zeile, zeile - 1 );
- _o_rnu->addStyle( Knopf::Style::Erlaubt );
- }
- if( zeile - 1 <= 1 )
- _o_rno->removeStyle( Knopf::Style::Erlaubt );
- }
- return 1;
- }
- bool _o_rnuME( void *p, void *obj, MausEreignis me )
- {
- if( me.id == ME_RLinks )
- {
- int zeile = -1;
- for( int i = 1; i < _o_rt->getZeilenAnzahl(); i++ )
- {
- if( _o_rt->zZeichnung( 0, i ) && ( (TextFeld*)_o_rt->zZeichnung( 0, i ) )->hatStyle( TextFeld::Style::Hintergrund ) )
- {
- zeile = i;
- break;
- }
- }
- int max = 0;
- for( int i = 1; i < _o_rt->getZeilenAnzahl(); i++ )
- {
- if( !_o_rt->zZeichnung( 1, i ) || ( (KontrollKnopf*)_o_rt->zZeichnung( 1, i ) )->hatStyleNicht( KontrollKnopf::Style::Selected ) )
- break;
- max = i;
- }
- if( zeile > 0 && zeile < max )
- {
- _o_rt->setZeilePosition( zeile, zeile + 1 );
- _o_rno->addStyle( Knopf::Style::Erlaubt );
- }
- if( zeile + 1 >= _o_rt->getZeilenAnzahl() - 1 )
- _o_rnu->removeStyle( Knopf::Style::Erlaubt );
- }
- return 1;
- }
- bool _o_rkkME( void *p, void *obj, MausEreignis me )
- {
- if( me.id == ME_RLinks )
- {
- if( ( (KontrollKnopf*)obj )->hatStyleNicht( KontrollKnopf::Style::Hintergrund | KontrollKnopf::Style::SelectFarbe ) )
- {
- ( (KontrollKnopf*)obj )->setStyle( KontrollKnopf::Style::Selected, ( (KontrollKnopf*)obj )->hatStyleNicht( KontrollKnopf::Style::Selected ) );
- return 1;
- }
- if( ( (KontrollKnopf*)obj )->hatStyle( KontrollKnopf::Style::Selected ) )
- {
- _o_rno->removeStyle( Knopf::Style::Erlaubt );
- _o_rnu->removeStyle( Knopf::Style::Erlaubt );
- int zeile = -1;
- for( int i = 1; i < _o_rt->getZeilenAnzahl(); i++ )
- {
- if( _o_rt->zZeichnung( 1, i ) == obj )
- {
- zeile = i;
- break;
- }
- }
- int max = 0;
- for( int i = 1; i < _o_rt->getZeilenAnzahl(); i++ )
- {
- if( !_o_rt->zZeichnung( 1, i ) || ( (KontrollKnopf*)_o_rt->zZeichnung( 1, i ) )->hatStyleNicht( KontrollKnopf::Style::Selected ) )
- break;
- max = i;
- }
- _o_rt->setZeilePosition( zeile, max );
- }
- else
- {
- int zeile = -1;
- for( int i = 1; i < _o_rt->getZeilenAnzahl(); i++ )
- {
- if( _o_rt->zZeichnung( 1, i ) == obj )
- {
- zeile = i;
- break;
- }
- }
- int max = 0;
- for( int i = 1; i < _o_rt->getZeilenAnzahl(); i++ )
- {
- if( !_o_rt->zZeichnung( 1, i ) || ( (KontrollKnopf*)_o_rt->zZeichnung( 1, i ) )->hatStyleNicht( KontrollKnopf::Style::Selected ) )
- break;
- max = i;
- }
- _o_rt->setZeilePosition( zeile, max + 1 );
- if( max > 1 )
- _o_rno->addStyle( Knopf::Style::Erlaubt );
- }
- }
- return 1;
- }
- bool _o_ülpsTE( void *p, void *obj, TastaturEreignis te )
- {
- if( te.taste == T_Links || te.taste == T_Rechts || te.taste == T_Entf || te.taste == T_BackSpace || ( te.taste >= '0' && te.taste <= '9' ) )
- return 1;
- return 0;
- }
- bool o_okME( void *p, void *obj, MausEreignis me )
- {
- if( me.id == ME_RLinks )
- {
- KSGTDatei *dat = new KSGTDatei( "data/dg.ksgt" );
- dat->laden();
- for( int i = 0; i < dat->getZeilenAnzahl(); i++ )
- {
- for( int j = 0; j < _o_rt->getZeilenAnzahl(); j++ )
- {
- if( !_o_rt->zZeichnung( 1, j ) )
- continue;
- if( !_o_rt->zZeilenName( j )->istGleich( dat->zFeld( i, 0 )->getText() ) )
- continue;
- if( ( (KontrollKnopf*)_o_rt->zZeichnung( 1, j ) )->hatStyle( KontrollKnopf::Style::Selected ) )
- {
- Text *t = new Text();
- t->append( j );
- dat->zFeld( i, 3 )->setText( t );
- }
- else
- dat->zFeld( i, 3 )->setText( "NICHT" );
- break;
- }
- }
- dat->speichern();
- dat->release();
- InitDatei *ini = new InitDatei( "data/patch/po.ini" );
- ini->addWert( "ülps", _o_ülps->zText()->getText() );
- ini->addWert( "üle", _o_üle->zEintragText( _o_üle->getAuswahl() )->getText() );
- ini->speichern();
- ini->release();
- _optionenF->removeStyle( Fenster::Style::Sichtbar );
- }
- return 1;
- }
- DWORD WINAPI runThread( void *args )
- {
- Bildschirm *screen = (Bildschirm *)args;
- double i = 0;
- double tickVal = 1.0 / 60.0;
- ZeitMesser *tstop = new ZeitMesser();
- while( !_exitB )
- {
- tstop->messungStart();
- screen->render();
- screen->tick( tickVal );
- Sleep( 10 );
- if( _kbps )
- {
- i += tickVal * 60;
- if( i >= 60 && _kbps )
- {
- screen->lock();
- _kbps->setText( "" );
- _kbps->zText()->append( _patcher ? ( _patcher->getDownload() / 1024 ) : 0 );
- _kbps->zText()->append( " kb/s, " );
- _kbps->zText()->append( (unsigned int)( ( _fortschritt->getAktionAnzahl() - _fortschritt->getAktion() ) / 1024 ) );
- _kbps->zText()->append( " kb verbleibend..." );
- screen->unlock();
- i -= 60;
- }
- }
- tstop->messungEnde();
- tickVal = tstop->getSekunden() + tstop->getSekunden() - tickVal;
- }
- tstop->release();
- return 0;
- }
- int KSGStart Framework::Start( Startparam p )
- {
- _abbruch = 0;
- Network::Start( 10 );
- if( !DateiExistiert( "data/user_options.ini" ) )
- {
- userOptions = new InitDatei( "data/default_options.ini" );
- userOptions->laden();
- userOptions->setPfad( "data/user_options.ini" );
- userOptions->speichern();
- }
- else
- {
- userOptions = new InitDatei( "data/user_options.ini" );
- userOptions->laden();
- }
- LTDBDatei *patcherBilder = new LTDBDatei();
- patcherBilder->setDatei( new Text( "data/patch/bilder/patcher.ltdb" ) );
- patcherBilder->leseDaten( 0 );
- Bild *patcherRahmen = patcherBilder->laden( 0, new Text( "patcherrahmen." ) );
- Bild *patcherHintergrund = patcherBilder->laden( 0, new Text( "patcher.png" ) );
- Bild *playBild = patcherBilder->laden( 0, new Text( "play.png" ) );
- Bild *playKlick = patcherBilder->laden( 0, new Text( "playklick.png" ) );
- patcherBilder->release();
- LTDBDatei *systemBilder = new LTDBDatei();
- systemBilder->setDatei( new Text( "data/bilder/system.ltdb" ) );
- systemBilder->leseDaten( 0 );
- Bild *systemSchließen = systemBilder->laden( 0, new Text( "schließen.png" ) );
- Bild *systemMinimieren = systemBilder->laden( 0, new Text( "minimieren.png" ) );
- Bild *systemOptionen = systemBilder->laden( 0, new Text( "optionen.png" ) );
- Bild *systemFortschrittL = systemBilder->laden( 0, new Text( "fortschrittleh" ) );
- Bild *systemFortschrittV = systemBilder->laden( 0, new Text( "fortschrittvol" ) );
- systemBilder->release();
- LTDSDatei *normalSchrift = new LTDSDatei();
- normalSchrift->setPfad( new Text( "data/schriften/normal.ltds" ) );
- normalSchrift->leseDaten();
- Schrift *sNormal = normalSchrift->ladeSchrift();
- normalSchrift->release();
- Monitor m = getMonitor( userOptions->wertExistiert( "Monitor" ) ? *userOptions->zWert( "Monitor" ) : 0 );
- WNDCLASS wc = F_Normal( p.hinst );
- wc.lpszClassName = "Kolja-Strohm Games Patcher";
- _frame = new WFenster();
- _frame->setVerschiebbar( 1 );
- _frame->erstellen( WS_POPUP, wc );
- _frame->setSize( Punkt( 500, 500 ) );
- _frame->setPosition( Bildschirmmitte( _frame->getThis(), m.existiert ? ( userOptions->wertExistiert( "Monitor" ) ? *userOptions->zWert( "Monitor" ) : 0 ) : 0 ) );
- _frame->ladeRahmenFenster( patcherRahmen, p.hinst );
- _frame->setMausAktion( _frameME );
- _frame->setTastaturAktion( _frameTE );
- _frame->setVSchließAktion( _frameSchließen );
- Bildschirm *screen = 0;
- if( userOptions->wertExistiert( "GraphicAPI" ) && userOptions->zWert( "GraphicAPI" )->istGleich( "DX9" ) )
- screen = new Bildschirm3D( _frame->getThis(), DIRECTX9 );
- else if( userOptions->wertExistiert( "GraphicAPI" ) && userOptions->zWert( "GraphicAPI" )->istGleich( "DX11" ) )
- screen = new Bildschirm3D( _frame->getThis(), DIRECTX11 );
- else if( userOptions->wertExistiert( "GraphicAPI" ) && userOptions->zWert( "GraphicAPI" )->istGleich( "DX12" ) )
- screen = new Bildschirm3D( _frame->getThis(), DIRECTX12 );
- else
- screen = new Bildschirm3D( _frame->getThis() );
- screen->update();
- screen->render();
- _frame->setBildschirm( screen->getThis() );
- _frame->setAnzeigeModus( 1 );
- screen->lock();
- BildZ *hintergrund = new BildZ();
- hintergrund->setStyle( BildZ::Style::Sichtbar );
- hintergrund->setBildZ( patcherHintergrund->getThis() );
- hintergrund->setPosition( 0, 0 );
- hintergrund->setSize( patcherHintergrund->getBreite(), patcherHintergrund->getHeight() );
- screen->addMember( hintergrund );
- Knopf *close = new Knopf();
- close->setStyle( Knopf::Style::Sichtbar | Knopf::Style::Erlaubt | Knopf::Style::Hintergrund | Knopf::Style::HAlpha | Knopf::Style::HBild | Knopf::Style::KlickBuffer );
- close->setHintergrundBildZ( systemSchließen->getThis() );
- close->setKBFarbe( 0xFF000000 );
- close->setHintergrundFarbe( 0 );
- close->setKBStrength( 30 );
- close->setPosition( 475, 5 );
- close->setSize( 20, 20 );
- close->setMausEreignis( closeME );
- screen->addMember( close );
- Knopf *minimieren = new Knopf();
- minimieren->setStyle( Knopf::Style::Sichtbar | Knopf::Style::Erlaubt | Knopf::Style::Hintergrund | Knopf::Style::HAlpha | Knopf::Style::HBild | Knopf::Style::KlickBuffer );
- minimieren->setHintergrundBildZ( systemMinimieren->getThis() );
- minimieren->setHintergrundFarbe( 0 );
- minimieren->setKBFarbe( 0xFF000000 );
- minimieren->setKBStrength( 30 );
- minimieren->setPosition( 454, 5 );
- minimieren->setSize( 20, 20 );
- minimieren->setMausEreignis( minimierenME );
- screen->addMember( minimieren );
- Knopf *optionen = new Knopf();
- optionen->setStyle( Knopf::Style::Sichtbar | Knopf::Style::Erlaubt | Knopf::Style::Hintergrund | Knopf::Style::HAlpha | Knopf::Style::HBild | Knopf::Style::KlickBuffer );
- optionen->setHintergrundBildZ( systemOptionen->getThis() );
- optionen->setHintergrundFarbe( 0 );
- optionen->setKBFarbe( 0xFF000000 );
- optionen->setKBStrength( 30 );
- optionen->setPosition( 433, 5 );
- optionen->setSize( 20, 20 );
- optionen->setMausEreignis( optionenME );
- screen->addMember( optionen );
- // Main Server Adresse Laden
- Datei *dat = new Datei();
- dat->setDatei( "data/tmp/k.id" );
- int klientNummer = 0;
- dat->open( Datei::Style::lesen );
- dat->lese( (char*)&klientNummer, 4 );
- dat->close();
- dat->setDatei( "data/tmp/m.port" );
- int serverPort = 0;
- dat->open( Datei::Style::lesen );
- dat->lese( (char*)&serverPort, 4 );
- dat->close();
- dat->setDatei( "data/tmp/m.ip" );
- dat->open( Datei::Style::lesen );
- unsigned char len = 0;
- dat->lese( (char*)&len, 1 );
- char *ip = new char[ len + 1 ];
- ip[ len ] = 0;
- dat->lese( ip, len );
- dat->close();
- dat->setDatei( "data/tmp/crypt.key" );
- dat->open( Datei::Style::lesen );
- len = 0;
- dat->lese( (char*)&len, 1 );
- char *key = new char[ len + 1 ];
- key[ len ] = 0;
- dat->lese( key, len );
- dat->close();
- dat->release();
- // Laden des Main Clients
- HINSTANCE networkDLL = LoadLibrary( "data/bin/KSGNetwork.dll" );
- if( !networkDLL )
- {
- WMessageBox( 0, new Text( "Fehler" ), new Text( "Die DLL Datei 'data/bin/KSGNetwork.dll' konnte nicht geladen werden. Fallst diese Datei nicht existiert muss das Spiel neu Installiert werden." ), MB_ICONERROR );
- exit( 0 );
- }
- KSGClient::KSGNetworkCreateRegisterdMain getMainClient = ( KSGClient::KSGNetworkCreateRegisterdMain )GetProcAddress( networkDLL, KSGNETWORK_CREATE_REGISTERD_MAIN );
- if( !getMainClient )
- {
- WMessageBox( 0, new Text( "Fehler" ), new Text( "Der Einstiegspunkt '" KSGNETWORK_CREATE_REGISTERD_MAIN "' wurde in der DLL Datei 'data/bin/KSGNetwork.dll' nicht gefunden. Fallst dieses Problem weiterhin auftritt muss das Spiel neu Installiert werden." ), MB_ICONERROR );
- exit( 0 );
- }
- KSGClient::MainServerClient *mainClient = getMainClient( ip, serverPort, klientNummer, key, len );
- if( !mainClient )
- {
- WMessageBox( 0, new Text( "Fehler" ), new Text( "Die DLL Datei 'data/bin/KSGNetwork.dll' scheint fehlerhaft zu sein. Fallst dieses Problem weiterhin auftritt muss das Spiel neu Installiert werden." ), MB_ICONERROR );
- exit( 0 );
- }
- delete[] ip;
- delete[] key;
- News *news = new News( screen, sNormal, mainClient->createNewsServerClient() );
- _aktion = new TextFeld();
- _aktion->setStyle( TextFeld::Style::Sichtbar );
- _aktion->setSchriftZ( sNormal->getThis() );
- _aktion->setSchriftFarbe( 0xFFFFFFFF );
- _aktion->setText( "Ermittle änderungen..." );
- _aktion->setPosition( 49, 403 );
- _aktion->setSize( 502, 20 );
- screen->addMember( _aktion->getThis() );
- _kbps = new TextFeld();
- _kbps->setStyle( TextFeld::Style::Sichtbar );
- _kbps->setSchriftZ( sNormal->getThis() );
- _kbps->setSchriftFarbe( 0xFFFFFFFF );
- _kbps->setText( "0 kb/s" );
- _kbps->setPosition( 49, 460 );
- _kbps->setSize( 402, 20 );
- screen->addMember( _kbps->getThis() );
- _fortschritt = new FBalken();
- _fortschritt->setStyle( FBalken::Style::Sichtbar | FBalken::Style::Hintergrund | FBalken::Style::HBild | FBalken::Style::FBild | FBalken::Style::Rahmen | FBalken::Style::Prozent | FBalken::Style::L_R );
- _fortschritt->setRahmenFarbe( 0xFFFFFFFF );
- _fortschritt->setHintergrundBild( systemFortschrittL->getThis() );
- _fortschritt->setFBgBild( systemFortschrittV->getThis() );
- _fortschritt->setSchriftZ( sNormal->getThis() );
- _fortschritt->setSFarbe( 0xFFFFFFFF );
- _fortschritt->setSSize( 12 );
- _fortschritt->setPosition( 49, 428 );
- _fortschritt->setSize( 402, 22 );
- screen->addMember( _fortschritt->getThis() );
- _play = new Knopf();
- _play->setStyle( Knopf::Style::Erlaubt | Knopf::Style::Hintergrund | Knopf::Style::HBild | Knopf::Style::KlickBild );
- _play->setMausEreignis( _playME );
- _play->setHintergrundBildZ( playBild->getThis() );
- _play->setKlickBildZ( playKlick->getThis() );
- _play->setPosition( 200, 466 );
- _play->setSize( 101, 30 );
- screen->addMember( _play->getThis() );
- _optionenF = new Fenster();
- _optionenF->setStyle( Fenster::Style::Erlaubt | Fenster::Style::Closable | Fenster::Style::Titel | Fenster::Style::TitelBuffered |
- Fenster::Style::TitelHintergrund | Fenster::Style::BodyHintergrund | Fenster::Style::TitelHAlpha |
- Fenster::Style::BodyHAlpha | Fenster::Style::Rahmen | Fenster::Style::ClosingKlickBuffer |
- Fenster::Style::ClosingHintergrund | Fenster::Style::ClosingHAlpha | Fenster::Style::Beweglich | Fenster::Style::VScroll );
- _optionenF->setSize( 300, 330 );
- _optionenF->setPosition( 100, 100 );
- _optionenF->setVSBMax( 300 );
- _optionenF->zVScrollBar()->setKlickScroll( 10 );
- _optionenF->zVScrollBar()->setFarbe( 0xFFFFFFFF );
- _optionenF->zVScrollBar()->setBgFarbe( 0xF0000000, 1 );
- _optionenF->setRBreite( 2 );
- _optionenF->setRFarbe( 0xFFFFFFFF );
- _optionenF->setTSchriftZ( sNormal->getThis() );
- _optionenF->zTTextFeld()->addStyle( TextFeld::Style::Sichtbar | TextFeld::Style::Center );
- _optionenF->setTitel( "Optionen" );
- _optionenF->zTTextFeld()->setSize( 0, 20 );
- _optionenF->setTBgFarbe( 0xF0000000 );
- _optionenF->setTAfFarbe( 0xA0FFFFFF );
- _optionenF->setTAfStrength( 15 );
- _optionenF->setTSFarbe( 0xFFFFFFFF );
- _optionenF->setSBgFarbe( 0xF0000000 );
- _optionenF->setSKAfFarbe( 0xFFFFFFFF );
- _optionenF->setSKAfStrength( 30 );
- _optionenF->setKBgFarbe( 0xF0000000 );
- _optionenF->setClosingMe( oAbbrechen );
- screen->addMember( _optionenF->getThis() );
- TextFeld *oReihenfolge = new TextFeld();
- oReihenfolge->setStyle( TextFeld::Style::Sichtbar | TextFeld::Style::VCenter );
- oReihenfolge->setSchriftZ( sNormal->getThis() );
- oReihenfolge->setSchriftFarbe( 0xFFFFFFFF );
- oReihenfolge->setText( "Update Reihenfolge:" );
- oReihenfolge->setPosition( 2, 2 );
- oReihenfolge->setSize( 276, 20 );
- _optionenF->addMember( oReihenfolge );
- _o_rt = new ObjTabelle();
- _o_rt->setStyle( ObjTabelle::Style::Sichtbar | ObjTabelle::Style::Erlaubt | ObjTabelle::Style::Rahmen |
- ObjTabelle::Style::Raster | ObjTabelle::Style::VScroll );
- _o_rt->setPosition( 2, 24 );
- _o_rt->setSize( 276, 150 );
- _o_rt->setRahmenBreite( 1 );
- _o_rt->setRahmenFarbe( 0xFFFFFFFF );
- _o_rt->setRasterBreite( 1 );
- _o_rt->setRasterFarbe( 0xFFFFFFFF );
- _o_rt->setVertikalKlickScroll( 10 );
- _o_rt->setMausEreignis( _o_rtME );
- _o_rt->addSpalte( "Spiel" );
- _o_rt->addSpalte( "Erlaubt" );
- _o_rt->setSpaltenBreite( 0, 237 );
- _o_rt->setSpaltenBreite( 1, 20 );
- _o_rt->addZeile( "Überschrift" );
- _o_rt->setZeilenHeight( 0, 15 );
- TextFeld *ortSpielT = new TextFeld();
- ortSpielT->setStyle( TextFeld::Style::Sichtbar | TextFeld::Style::Center );
- ortSpielT->setSchriftZ( sNormal->getThis() );
- ortSpielT->setSchriftFarbe( 0xFFFFFFFF );
- ortSpielT->setText( "Spiel" );
- _o_rt->setZeichnungZ( 0, 0, ortSpielT );
- _optionenF->addMember( _o_rt->getThis() );
- _o_rno = new Knopf();
- _o_rno->setStyle( Knopf::Style::Sichtbar | Knopf::Style::Buffered | Knopf::Style::KlickBuffer | Knopf::Style::Rahmen );
- _o_rno->setPosition( 76, 176 );
- _o_rno->setSize( 100, 20 );
- _o_rno->setText( "nach Oben" );
- _o_rno->setSchriftZ( sNormal->getThis() );
- _o_rno->setMausEreignis( _o_rnoME );
- _optionenF->addMember( _o_rno->getThis() );
- _o_rnu = new Knopf();
- _o_rnu->setStyle( Knopf::Style::Sichtbar | Knopf::Style::Buffered | Knopf::Style::KlickBuffer | Knopf::Style::Rahmen );
- _o_rnu->setPosition( 178, 176 );
- _o_rnu->setSize( 100, 20 );
- _o_rnu->setText( "nach Unten" );
- _o_rnu->setSchriftZ( sNormal->getThis() );
- _o_rnu->setMausEreignis( _o_rnuME );
- _optionenF->addMember( _o_rnu->getThis() );
- TextFeld *oLimit = new TextFeld();
- oLimit->setStyle( TextFeld::Style::Sichtbar | TextFeld::Style::VCenter );
- oLimit->setSchriftZ( sNormal->getThis() );
- oLimit->setSchriftFarbe( 0xFFFFFFFF );
- oLimit->setText( "Übertragungslimit pro Sekunde:" );
- oLimit->setPosition( 2, 200 );
- oLimit->setSize( 276, 20 );
- _optionenF->addMember( oLimit );
- _o_ülps = new TextFeld();
- _o_ülps->setStyle( TextFeld::Style::Sichtbar | TextFeld::Style::Erlaubt | TextFeld::Style::Rahmen | TextFeld::Style::Buffered | TextFeld::Style::VCenter );
- _o_ülps->setPosition( 2, 222 );
- _o_ülps->setSize( 100, 20 );
- _o_ülps->setRahmenFarbe( 0xFF00FF00 );
- _o_ülps->setSchriftZ( sNormal->getThis() );
- _o_ülps->setText( "" );
- _o_ülps->setSchriftFarbe( 0xFFFFFFFF );
- _o_ülps->setSchriftSize( 12 );
- _o_ülps->setAlphaFeldFarbe( 0x5500FF00 );
- _o_ülps->setAlphaFeldStrength( -5 );
- _o_ülps->setTastaturEreignis( _o_ülpsTE );
- _optionenF->addMember( _o_ülps->getThis() );
- _o_üle = new AuswahlBox();
- _o_üle->setStyle( AuswahlBox::Style::Sichtbar | AuswahlBox::Style::Erlaubt | AuswahlBox::Style::Rahmen | AuswahlBox::Style::AuswahlBuffer |
- AuswahlBox::Style::MausBuffer | AuswahlBox::Style::Hintergrund );
- _o_üle->setPosition( 104, 222 );
- _o_üle->setSize( 55, 20 );
- _o_üle->setSchriftZ( sNormal->getThis() );
- _o_üle->setRahmenFarbe( 0xFFFFFFFF );
- _o_üle->setHintergrundFarbe( 0xFF000000 );
- _o_üle->setAuswAlphaFeldFarbe( 0x5500FF00 );
- _o_üle->setAuswAlphaFeldStrength( -5 );
- _o_üle->setMausAlphaFeldFarbe( 0x2200FF00 );
- _o_üle->setMausAlphaFeldStrength( -5 );
- _o_üle->setMausEreignis( _ret1ME );
- _o_üle->setTastaturEreignis( _ret1TE );
- _o_üle->addEintrag( "kb/s" );
- _o_üle->addEintrag( "mb/s" );
- _optionenF->addMember( _o_üle->getThis() );
- bool exitPatcher = 0;
- Knopf *o_repair = new Knopf();
- o_repair->setStyle( Knopf::Style::Sichtbar | Knopf::Style::Erlaubt | Knopf::Style::Buffered | Knopf::Style::KlickBuffer | Knopf::Style::Rahmen );
- o_repair->setPosition( 5, 254 );
- o_repair->setSize( 100, 20 );
- o_repair->setText( "Reparieren" );
- o_repair->setSchriftZ( sNormal->getThis() );
- o_repair->setMausEreignis( [ mainClient, &exitPatcher ]( void *p, void *o, MausEreignis me )
- {
- if( me.id == ME_RLinks )
- {
- _optionenF->removeStyle( Fenster::Style::Sichtbar );
- exitPatcher = 1;
- _patcher->warteAufPatch( INFINITE );
- KSGTDatei dgs;
- dgs.setPfad( "data/dg.ksgt" );
- dgs.laden();
- for( int i = 0; i < dgs.getZeilenAnzahl(); i++ )
- {
- if( dgs.zFeld( i, 1 )->getLength() )
- DateiRemove( dgs.zFeld( i, 1 )->getText() );
- }
- DateiRemove( "data/dg.ksgt" );
- DateiRemove( "data/update" );
- DateiRemove( "data/versionen.ini" );
- _patcher->release();
- exitPatcher = 0;
- _patcher = new Patcher( (FBalken *)_fortschritt->getThis(), (TextFeld *)_aktion->getThis(), (Knopf *)_play->getThis(), &exitPatcher, mainClient->createPatchServerClient() );
- _patcher->startPatch();
- }
- return 1;
- } );
- _optionenF->addMember( o_repair );
- Knopf *o_ok = new Knopf();
- o_ok->setStyle( Knopf::Style::Sichtbar | Knopf::Style::Erlaubt | Knopf::Style::Buffered | Knopf::Style::KlickBuffer | Knopf::Style::Rahmen );
- o_ok->setPosition( 178, 284 );
- o_ok->setSize( 100, 20 );
- o_ok->setText( "Fertig" );
- o_ok->setSchriftZ( sNormal->getThis() );
- o_ok->setMausEreignis( o_okME );
- _optionenF->addMember( o_ok );
- screen->unlock();
- DWORD threadId;
- HANDLE handle = CreateThread( NULL, 0, runThread, screen, 0, &threadId );
- _patcher = new Patcher( (FBalken*)_fortschritt->getThis(), (TextFeld*)_aktion->getThis(), (Knopf*)_play->getThis(), &exitPatcher, mainClient->createPatchServerClient() );
- _patcher->startPatch();
- StartNachrichtenSchleife();
- _exitB = 1;
- WaitForSingleObject( handle, INFINITE );
- news->release();
- exitPatcher = 1;
- _patcher->warteAufPatch( INFINITE );
- int returnVal = _patcher->getReturn();
- _patcher->release();
- _optionenF->release();
- _o_rt->release();
- _o_rno->release();
- _o_rnu->release();
- _o_ülps->release();
- _o_üle->release();
- _fortschritt->release();
- _aktion->release();
- _kbps->release();
- _play->release();
- sNormal->release();
- patcherRahmen->release();
- patcherHintergrund->release();
- playBild->release();
- playKlick->release();
- systemSchließen->release();
- systemMinimieren->release();
- systemOptionen->release();
- systemFortschrittL->release();
- systemFortschrittV->release();
- screen->release();
- _frame->setBildschirm( 0 );
- _frame->zerstören();
- _frame->release();
- mainClient->release();
- userOptions->release();
- Network::Exit();
- DateiPfadErstellen( new Text( "data/tmp/keinabsturz" ) );
- if( _abbruch )
- return 0;
- return returnVal;
- }
|