shithub: candycrisis

Download patch

ref: a6136f2f51b7acc325783ac547cea3ee3a619b23
parent: b4805f6e847e719e08e5f75e09b4f6010f7b43b6
author: Iliyas Jorio <iliyas@jor.io>
date: Wed Feb 2 16:05:12 EST 2022

Toggle fullscreen mode from pause menu

--- a/src/main.h
+++ b/src/main.h
@@ -12,6 +12,7 @@
 void RefreshAll( void );
 void ReserveMonitor( void );
 void ReleaseMonitor( void );
+void SetFullscreen( MBoolean fullscreenMode );
 void MaskRect( MRect *r );
 void RefreshPlayerWindow( short player );
 MBoolean IsRegistered( void );
@@ -252,6 +253,7 @@
 extern int chain[2];
 extern int blobTime[2], startTime, endTime;
 extern MBoolean finished, pauseKey, showStartMenu;
+extern MBoolean fullscreen;
 extern signed char grid[2][kGridAcross][kGridDown], suction[2][kGridAcross][kGridDown],
 	charred[2][kGridAcross][kGridDown], glow[2][kGridAcross][kGridDown];
 extern MRect playerWindowZRect, playerWindowRect[2];
--- a/src/pause.cpp
+++ b/src/pause.cpp
@@ -515,10 +515,10 @@
 	kNothing = -1,
 	
 // main pause screen (kEndGame is reused in continue and register)
-	kMusic = 0,		kEndGame,
-	kSound,         kControls,
-	kResume,        kSecret,
-	kWarp,
+	kMusic = 0,		kResume,
+	kSound,         kEndGame,
+	kFullscreen,    kControls,
+	kWarp,          kSecret,
 
 // continue screen
     kContinue,      
@@ -719,17 +719,18 @@
 {
 	MPoint dPoint;
 	int index;
-	const char *line[]  = { "\x01 Music",           "\x03 End Game",
-                            "\x01 Sound",           "\x03 Controls",
-                            "\x03 Resume"
+	const char *line[]  = { "\x01 Music",           "\x03 Resume",
+                            "\x01 Sound",           "\x03 End Game",
+                            "\x01 Fullscreen",      "\x03 Controls"
 	};
 
     const int itemCount = arrsize(line);
 	
-	if( level == kTutorialLevel ) line[1] = "\x03 Skip Tutorial";
+	if( level == kTutorialLevel ) line[kEndGame] = "\x03 Skip Tutorial";
 	
-	if( !musicOn ) line[0] = "\x02 Music";
-	if( !soundOn ) line[2] = "\x02 Sound";
+	if( !musicOn ) line[kMusic] = "\x02 Music";
+	if( !soundOn ) line[kSound] = "\x02 Sound";
+	if( !fullscreen ) line[kFullscreen] = "\x02 Fullscreen";
 
 	SDLU_AcquireSurface( drawSurface );	
 	
@@ -891,14 +892,14 @@
 	
 	MRect targetRect[] = 
 	{	
-		{ 240, 180, 260, 320 },
-		{ 240, 340, 260, 480 },
-		{ 270, 180, 290, 320 },
-		{ 270, 340, 290, 480 },
-		{ 300, 180, 320, 320 },
-		{ 300, 340, 320, 480 },
-		{ 330, 180, 350, 320 },
-	    { 120, 550, 130, 560 }
+		{ 240, 180, 260, 320 },  // music
+		{ 240, 340, 260, 480 },  // resume
+		{ 270, 180, 290, 320 },  // sound
+		{ 270, 340, 290, 480 },  // end game
+		{ 300, 180, 320, 320 },  // fullscreen
+		{ 300, 340, 320, 480 },  // controls
+		{ 330, 180, 350, 320 },  // warp
+	    { 330, 340, 350, 480 },  // secret
 	};
 
 	static MBoolean lastDown = false;
@@ -934,12 +935,30 @@
 			
 			switch( *item )
 			{
-				case kSound:     PlayMono( kClick ); soundOn = !soundOn; PlayMono( kClick );     return false;
-				case kMusic:     PlayMono( kClick ); musicOn = !musicOn; EnableMusic( musicOn ); return false;
-				case kEndGame:   PlayMono( kClick );                                             return true;
-				case kResume:    PlayMono( kClick );                                             return true;
-				case kControls:  PlayMono( kClick );                                             return true;
-				
+				case kSound:
+                    PlayMono( kClick );
+                    soundOn = !soundOn;
+                    PlayMono( kClick );
+                    return false;
+
+				case kMusic:
+                    PlayMono( kClick );
+                    musicOn = !musicOn;
+                    EnableMusic( musicOn );
+                    return false;
+
+				case kFullscreen:
+                    fullscreen = !fullscreen;
+                    SetFullscreen( fullscreen );
+                    PlayMono( kClick );
+                    return false;
+
+                case kEndGame:
+				case kResume:
+                case kControls:
+                    PlayMono( kClick );
+                    return true;
+
 				case kSecret:
 					if( ControlKeyIsPressed( ) )
 					{
--- a/src/prefs.cpp
+++ b/src/prefs.cpp
@@ -41,7 +41,8 @@
     { PREF_NAME("SoundOn"),        &soundOn,     sizeof(MBoolean  ) },
     { PREF_NAME("KeyBindings"),    playerKeys,   sizeof(playerKeys) },
     { PREF_NAME("HighScores"),     scores,       sizeof(scores    ) },
-    { PREF_NAME("BestCombo"),      &best,        sizeof(best      ) }
+    { PREF_NAME("BestCombo"),      &best,        sizeof(best      ) },
+    { PREF_NAME("Fullscreen"),     &fullscreen,  sizeof(fullscreen) },
 };
 
 #if !__APPLE__ && !_WIN32