#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( dynamic_cast( fenster->getThis() ), DIRECTX9 ); else if( userOptions->wertExistiert( "GraphicAPI" ) && userOptions->zWert( "GraphicAPI" )->istGleich( "DX11" ) ) bildschirm = new Bildschirm3D( dynamic_cast( fenster->getThis() ), DIRECTX11 ); else if( userOptions->wertExistiert( "GraphicAPI" ) && userOptions->zWert( "GraphicAPI" )->istGleich( "DX12" ) ) bildschirm = new Bildschirm3D( dynamic_cast( fenster->getThis() ), DIRECTX12 ); else bildschirm = new Bildschirm3D( dynamic_cast( fenster->getThis() ) ); if( userOptions->wertExistiert( "ScreenWidth" ) && userOptions->wertExistiert( "ScreenHeight" ) ) bildschirm->setBackBufferSize( *userOptions->zWert( "ScreenWidth" ), *userOptions->zWert( "ScreenHeight" ) ); fenster->setBildschirm( dynamic_cast( 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 = (LTDSDatei *)schriftDatei->release(); Framework::logLine( "Globale Variablen werden initialisiert..." ); initVariables( schrift, bildschirm ); Render *render = new Render(); 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 *)schrift->release(); bildschirm = (Bildschirm *)bildschirm->release(); fenster->setBildschirm( 0 ); fenster->zerstören(); fenster = (WFenster *)fenster->release(); Network::Exit(); DateiPfadErstellen( new Text( "data/tmp/keinabsturz" ) ); Framework::logLine( "Programm wurde ordnungsgemaess beendet." ); return 0; }