From 49162ab39b7c2bb473fccaa7b693b226033fd584 Mon Sep 17 00:00:00 2001 From: rubidium Date: Tue, 7 Dec 2010 21:09:30 +0000 Subject: (svn r21428) -Fix [FS#4021]: vehicles could be built while the game it paused. Now you can enable or disable that with a setting --- src/window.cpp | 35 ++++++++++++++++++++++++++++------- 1 file changed, 28 insertions(+), 7 deletions(-) (limited to 'src/window.cpp') diff --git a/src/window.cpp b/src/window.cpp index 1e85a42c0..7d1f6e120 100644 --- a/src/window.cpp +++ b/src/window.cpp @@ -2213,13 +2213,34 @@ static void MouseLoop(MouseClick click, int mousewheel) case MC_DOUBLE_LEFT: case MC_LEFT: DEBUG(misc, 2, "Cursor: 0x%X (%d)", _cursor.sprite, _cursor.sprite); - if (_thd.place_mode != HT_NONE && - /* query button and place sign button work in pause mode */ - _cursor.sprite != SPR_CURSOR_QUERY && - _cursor.sprite != SPR_CURSOR_SIGN && - _pause_mode != PM_UNPAUSED && - !_cheats.build_in_pause.value) { - return; + if (_thd.place_mode != HT_NONE && _pause_mode != PM_UNPAUSED) { + switch (_settings_game.construction.command_pause_level) { + case CMDPL_ALL_ACTIONS: + /* We allow all actions. */ + break; + + case CMDPL_NO_LANDSCAPING: + if (_cursor.sprite == SPR_CURSOR_CLONE_TRAIN || + _cursor.sprite == SPR_CURSOR_CLONE_ROADVEH || + _cursor.sprite == SPR_CURSOR_CLONE_SHIP || + _cursor.sprite == SPR_CURSOR_CLONE_AIRPLANE) { + /* Cloning is allowed. */ + break; + } + /* FALL THROUGH */ + case CMDPL_NO_CONSTRUCTION: + if (_cursor.sprite == SPR_CURSOR_SIGN || + (_cursor.sprite >= SPR_CURSOR_PICKSTATION_FIRST && _cursor.sprite <= SPR_CURSOR_PICKSTATION_LAST)) { + /* Building signs or making orders is allowed. */ + break; + } + /* FALL THROUGH */ + case CMDPL_NO_ACTIONS: + if (_cursor.sprite == SPR_CURSOR_QUERY) break; + + /* All other ones are not allowed to build. */ + return; + } } if (!HandleViewportClicked(vp, x, y) && -- cgit v1.2.3-54-g00ecf