Parcourir la source

User Options werden beachtet

Kolja Strohm il y a 5 ans
Parent
commit
fb4dcdad2f

+ 4 - 1
patcher/Patcher.cpp

@@ -5,6 +5,8 @@
 #include <Text.h>
 #include <GSLDateiV.h>
 
+extern InitDatei *userOptions;
+
 typedef UpdaterV *( *GetUpdater )( KSGClient::PatchServerClient * );
 typedef GSL::GSLDateiV *( *GetGSLDatei )( );
 
@@ -147,7 +149,8 @@ void Patcher::thread()
             sDatei->leseDaten();
             GSL::GSLSoundV *sound = sDatei->getSound( "info.wav" );
             sDatei->release();
-            sound->setVolume( 0xFFFF, 0xFFFF );
+            int vol = userOptions->wertExistiert( "GUISound" ) ? *userOptions->zWert( "GUISound" ) : 100;
+            sound->setVolume( (int)( ( vol / 100.0 ) * 0xFFFF ), (int)( ( vol / 100.0 ) * 0xFFFF ) );
             sound->playSound();
             sound->warteAufSound( 3000 );
             sound->stopSound();

+ 4 - 0
patcher/data/default_options.ini

@@ -0,0 +1,4 @@
+GraphicAPI=BEST
+Monitor=0
+GUISound=100
+MaxFPS=30

BIN
patcher/data/start/icon.exe


BIN
patcher/data/version


+ 25 - 2
patcher/start.cpp

@@ -44,6 +44,7 @@ Knopf *_o_rno;
 Knopf *_o_rnu;
 TextFeld *_o_ülps;
 AuswahlBox *_o_üle;
+InitDatei *userOptions;
 
 bool _newWechsel = 1;
 bool _abbruch = 0;
@@ -470,6 +471,19 @@ 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 );
@@ -495,18 +509,27 @@ int KSGStart Framework::Start( Startparam p )
 	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() ) );
+	_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 = new Bildschirm3D( _frame->getThis() );
+    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() );