#include "..\Global\Variablen.h" #include #include #include #include #include #include "..\Global\Render.h" #include #include #include #include #include "..\Global\Initialisierung.h" #include #include #include #include #include #include #include void fensterVS( void *p, void *f ) { PostQuitMessage( 0 ); } bool fensterME( void *p, void *f, MausEreignis me ) { return 1; } bool fensterTE( void *p, void *f, TastaturEreignis te ) { return 1; } int KSGStart Framework::Start( Startparam p ) { Network::Start( 50 ); 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(); } InitDatei init( "data/optionen.ini" ); init.laden(); if( init.wertExistiert( "Log" ) ) Framework::setLogEnabled( init.zWert( "Log" )->istGleich( "1" ) ); Framework::logLine( "Anwendung wird gestartet..." ); WNDCLASS wc = F_Normal( p.hinst ); wc.lpszClassName = "Game Client"; Framework::logLine( "Grafische Benutzeroberflaeche wird erstellt..." ); Monitor m = getMonitor( 0 ); if( userOptions->wertExistiert( "Monitor" ) ) { Monitor tmp = getMonitor( *userOptions->zWert( "Monitor" ) ); if( tmp.existiert ) m = tmp; } WFenster *fenster = new WFenster(); fenster->erstellen( WS_POPUP, wc ); fenster->setPosition( Punkt( m.x, m.y ) ); fenster->setSize( Punkt( m.breite, m.height ) ); fenster->setMausAktion( fensterME ); fenster->setTastaturAktion( fensterTE ); fenster->setVSchließAktion( fensterVS ); Bildschirm *bildschirm = 0; if( userOptions->wertExistiert( "GraphicAPI" ) && userOptions->zWert( "GraphicAPI" )->istGleich( "DX9" ) ) bildschirm = new Bildschirm3D( fenster->getThis(), DIRECTX9 ); else if( userOptions->wertExistiert( "GraphicAPI" ) && userOptions->zWert( "GraphicAPI" )->istGleich( "DX11" ) ) bildschirm = new Bildschirm3D( fenster->getThis(), DIRECTX11 ); else if( userOptions->wertExistiert( "GraphicAPI" ) && userOptions->zWert( "GraphicAPI" )->istGleich( "DX12" ) ) bildschirm = new Bildschirm3D( fenster->getThis(), DIRECTX12 ); else bildschirm = new Bildschirm3D( fenster->getThis() ); if( userOptions->wertExistiert( "ScreenWidth" ) && userOptions->wertExistiert( "ScreenHeight" ) ) bildschirm->setBackBufferSize( *userOptions->zWert( "ScreenWidth" ), *userOptions->zWert( "ScreenHeight" ) ); fenster->setBildschirm( bildschirm->getThis() ); fenster->setAnzeigeModus( 1 ); fenster->setFokus(); bildschirm->update(); bildschirm->render(); Framework::logLine( "Schrift wird geladen..." ); LTDSDatei *schriftDatei = new LTDSDatei(); schriftDatei->setPfad( new Text( "data/schriften/normal.ltds" ) ); schriftDatei->leseDaten(); Schrift *schrift = schriftDatei->ladeSchrift(); schriftDatei = schriftDatei->release(); Render *render = new Render( schrift->getThis() ); render->setBildschirm( bildschirm->getThis() ); Framework::logLine( "Globale Variablen werden initialisiert..." ); initVariables( schrift, bildschirm ); Framework::logLine( "Zeichen Thread wird gestartet..." ); render->start(); Framework::logLine( "Nachrichtenschleife wird ausgefuehrt..." ); StartNachrichtenSchleife(); Framework::logLine( "Zeichen Thread wird beendet..." ); render->beenden(); render = (Render*)render->release(); bildschirm->removeMember( vorLogin->zFenster() ); bildschirm->removeMember( nachLogin ); Framework::logLine( "Speicher wird freigegeben..." ); releaseVariables(); schrift = schrift->release(); bildschirm = bildschirm->release(); fenster->setBildschirm( 0 ); fenster->zerstören(); fenster = fenster->release(); Network::Exit(); DateiPfadErstellen( new Text( "data/tmp/keinabsturz" ) ); Framework::logLine( "Programm wurde ordnungsgemaess beendet." ); return 0; }