| 
					
				 | 
			
			
				@@ -221,6 +221,7 @@ pub enum MainMenuSelection { NewGame, LoadGame, Quit } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 pub enum MainMenuResult { NoSelection{ selected : MainMenuSelection }, Selected{ selected: MainMenuSelection } } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 pub fn main_menu(gs : &mut State, ctx : &mut Rltk) -> MainMenuResult { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    let save_exists = super::saveload_system::does_save_exist(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     let runstate = gs.ecs.fetch::<RunState>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     ctx.print_color_centered(15, RGB::named(rltk::YELLOW), RGB::named(rltk::BLACK), "Rust Roguelike Tutorial"); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -232,10 +233,12 @@ pub fn main_menu(gs : &mut State, ctx : &mut Rltk) -> MainMenuResult { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             ctx.print_color_centered(24, RGB::named(rltk::WHITE), RGB::named(rltk::BLACK), "Begin New Game"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if selection == MainMenuSelection::LoadGame { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            ctx.print_color_centered(25, RGB::named(rltk::MAGENTA), RGB::named(rltk::BLACK), "Load Game"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            ctx.print_color_centered(25, RGB::named(rltk::WHITE), RGB::named(rltk::BLACK), "Load Game"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if save_exists { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if selection == MainMenuSelection::LoadGame { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                ctx.print_color_centered(25, RGB::named(rltk::MAGENTA), RGB::named(rltk::BLACK), "Load Game"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                ctx.print_color_centered(25, RGB::named(rltk::WHITE), RGB::named(rltk::BLACK), "Load Game"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if selection == MainMenuSelection::Quit { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -250,21 +253,27 @@ pub fn main_menu(gs : &mut State, ctx : &mut Rltk) -> MainMenuResult { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 match key { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     VirtualKeyCode::Escape => { return MainMenuResult::NoSelection{ selected: MainMenuSelection::Quit } } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     VirtualKeyCode::Up => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        let newselection; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        let mut newselection; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         match selection { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                             MainMenuSelection::NewGame => newselection = MainMenuSelection::Quit, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                             MainMenuSelection::LoadGame => newselection = MainMenuSelection::NewGame, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                             MainMenuSelection::Quit => newselection = MainMenuSelection::LoadGame 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        if newselection == MainMenuSelection::LoadGame && !save_exists { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            newselection = MainMenuSelection::NewGame; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         return MainMenuResult::NoSelection{ selected: newselection } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     VirtualKeyCode::Down => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        let newselection; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        let mut newselection; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         match selection { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                             MainMenuSelection::NewGame => newselection = MainMenuSelection::LoadGame, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                             MainMenuSelection::LoadGame => newselection = MainMenuSelection::Quit, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                             MainMenuSelection::Quit => newselection = MainMenuSelection::NewGame 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        if newselection == MainMenuSelection::LoadGame && !save_exists { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            newselection = MainMenuSelection::Quit; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         return MainMenuResult::NoSelection{ selected: newselection } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     VirtualKeyCode::Return => return MainMenuResult::Selected{ selected : selection }, 
			 |