openttd.c
changeset 3024 723b875af8b0
parent 2989 99c95a3ebcaa
child 3033 e4f7c60a1742
equal deleted inserted replaced
3023:e56ff3134c77 3024:723b875af8b0
   673 }
   673 }
   674 
   674 
   675 bool SafeSaveOrLoad(const char *filename, int mode, int newgm)
   675 bool SafeSaveOrLoad(const char *filename, int mode, int newgm)
   676 {
   676 {
   677 	byte ogm = _game_mode;
   677 	byte ogm = _game_mode;
   678 	int r;
       
   679 
   678 
   680 	_game_mode = newgm;
   679 	_game_mode = newgm;
   681 	r = SaveOrLoad(filename, mode);
   680 	switch (SaveOrLoad(filename, mode)) {
   682 	if (r == SL_REINIT) {
   681 		case SL_OK: return true;
   683 		switch (ogm) {
   682 
   684 			case GM_MENU:   LoadIntroGame();      break;
   683 		case SL_REINIT:
   685 			case GM_EDITOR: MakeNewEditorWorld(); break;
   684 			switch (ogm) {
   686 			default:        MakeNewGame();        break;
   685 				case GM_MENU:   LoadIntroGame();      break;
   687 		}
   686 				case GM_EDITOR: MakeNewEditorWorld(); break;
   688 		return false;
   687 				default:        MakeNewGame();        break;
   689 	} else if (r != SL_OK) {
   688 			}
   690 		_game_mode = ogm;
   689 			return false;
   691 		return false;
   690 
   692 	} else {
   691 		default:
   693 		return true;
   692 			_game_mode = ogm;
       
   693 			return false;
   694 	}
   694 	}
   695 }
   695 }
   696 
   696 
   697 void SwitchMode(int new_mode)
   697 void SwitchMode(int new_mode)
   698 {
   698 {
   914 	}
   914 	}
   915 }
   915 }
   916 
   916 
   917 void GameLoop(void)
   917 void GameLoop(void)
   918 {
   918 {
   919 	int m;
       
   920 	ThreadMsg message;
   919 	ThreadMsg message;
   921 
   920 
   922 	if ((message = OTTD_PollThreadEvent()) != 0) ProcessSentMessage(message);
   921 	if ((message = OTTD_PollThreadEvent()) != 0) ProcessSentMessage(message);
   923 
   922 
   924 	// autosave game?
   923 	// autosave game?
   930 
   929 
   931 	// handle scrolling of the main window
   930 	// handle scrolling of the main window
   932 	if (_dirkeys) HandleKeyScrolling();
   931 	if (_dirkeys) HandleKeyScrolling();
   933 
   932 
   934 	// make a screenshot?
   933 	// make a screenshot?
   935 	if ((m=_make_screenshot) != 0) {
   934 	if (_make_screenshot != 0) {
       
   935 		switch (_make_screenshot) {
       
   936 			case 1: // make small screenshot
       
   937 				UndrawMouseCursor();
       
   938 				ShowScreenshotResult(MakeScreenshot());
       
   939 				break;
       
   940 
       
   941 			case 2: // make large screenshot
       
   942 				ShowScreenshotResult(MakeWorldScreenshot(-(int)MapMaxX() * TILE_PIXELS, 0, (MapMaxX() + MapMaxY()) * TILE_PIXELS, (MapMaxX() + MapMaxY()) * TILE_PIXELS >> 1, 0));
       
   943 				break;
       
   944 		}
   936 		_make_screenshot = 0;
   945 		_make_screenshot = 0;
   937 		switch(m) {
       
   938 		case 1: // make small screenshot
       
   939 			UndrawMouseCursor();
       
   940 			ShowScreenshotResult(MakeScreenshot());
       
   941 			break;
       
   942 		case 2: // make large screenshot
       
   943 			ShowScreenshotResult(MakeWorldScreenshot(-(int)MapMaxX() * TILE_PIXELS, 0, (MapMaxX() + MapMaxY()) * TILE_PIXELS, (MapMaxX() + MapMaxY()) * TILE_PIXELS >> 1, 0));
       
   944 			break;
       
   945 		}
       
   946 	}
   946 	}
   947 
   947 
   948 	// switch game mode?
   948 	// switch game mode?
   949 	if ((m=_switch_mode) != SM_NONE) {
   949 	if (_switch_mode != SM_NONE) {
       
   950 		SwitchMode(_switch_mode);
   950 		_switch_mode = SM_NONE;
   951 		_switch_mode = SM_NONE;
   951 		SwitchMode(m);
       
   952 	}
   952 	}
   953 
   953 
   954 	IncreaseSpriteLRU();
   954 	IncreaseSpriteLRU();
   955 	InteractiveRandom();
   955 	InteractiveRandom();
   956 
   956