mirror of https://github.com/OpenTTD/OpenTTD.git
(svn r15065) -Change (r14919): Allow to select a new station location by ctrl-clicking while distant-join window is open. (PhilSophus)
This commit is contained in:
parent
e41655d67c
commit
4780c73224
|
@ -1206,17 +1206,26 @@ static const WindowDesc _select_station_desc = {
|
||||||
*/
|
*/
|
||||||
static bool StationJoinerNeeded(CommandContainer cmd, int w, int h)
|
static bool StationJoinerNeeded(CommandContainer cmd, int w, int h)
|
||||||
{
|
{
|
||||||
if (CmdFailed(DoCommand(&cmd, CommandFlagsToDCFlags(GetCommandFlags(cmd.cmd))))) return false;
|
|
||||||
|
|
||||||
/* Only show selection if distant join is enabled in the settings */
|
/* Only show selection if distant join is enabled in the settings */
|
||||||
if (!_settings_game.station.distant_join_stations) return false;
|
if (!_settings_game.station.distant_join_stations) return false;
|
||||||
|
|
||||||
/* If a window is already opened, we always return true */
|
/* If a window is already opened and we didn't ctrl-click,
|
||||||
if (FindWindowById(WC_SELECT_STATION, 0) != NULL) return true;
|
* return true (i.e. just flash the old window) */
|
||||||
|
Window *selection_window = FindWindowById(WC_SELECT_STATION, 0);
|
||||||
|
if (selection_window != NULL) {
|
||||||
|
if (!_ctrl_pressed) return true;
|
||||||
|
|
||||||
|
/* Abort current distant-join and start new one */
|
||||||
|
delete selection_window;
|
||||||
|
UpdateTileSelection();
|
||||||
|
}
|
||||||
|
|
||||||
/* only show the popup, if we press ctrl */
|
/* only show the popup, if we press ctrl */
|
||||||
if (!_ctrl_pressed) return false;
|
if (!_ctrl_pressed) return false;
|
||||||
|
|
||||||
|
/* Now check if we could build there */
|
||||||
|
if (CmdFailed(DoCommand(&cmd, CommandFlagsToDCFlags(GetCommandFlags(cmd.cmd))))) return false;
|
||||||
|
|
||||||
/* First test for adjacent station */
|
/* First test for adjacent station */
|
||||||
FindStationsNearby(cmd.tile, w, h, false);
|
FindStationsNearby(cmd.tile, w, h, false);
|
||||||
int neighbour_station_count = _stations_nearby_list.Length();
|
int neighbour_station_count = _stations_nearby_list.Length();
|
||||||
|
|
|
@ -24,6 +24,8 @@ void VpStartPlaceSizing(TileIndex tile, ViewportPlaceMethod method, ViewportDrag
|
||||||
void VpSetPresizeRange(TileIndex from, TileIndex to);
|
void VpSetPresizeRange(TileIndex from, TileIndex to);
|
||||||
void VpSetPlaceSizingLimit(int limit);
|
void VpSetPlaceSizingLimit(int limit);
|
||||||
|
|
||||||
|
void UpdateTileSelection();
|
||||||
|
|
||||||
extern PlaceProc *_place_proc;
|
extern PlaceProc *_place_proc;
|
||||||
extern TileHighlightData _thd;
|
extern TileHighlightData _thd;
|
||||||
|
|
||||||
|
|
|
@ -2116,7 +2116,6 @@ static HighLightStyle GetAutorailHT(int x, int y)
|
||||||
* Also drawstyle is determined. Uses _thd.new.* as a buffer and calls SetSelectionTilesDirty() twice,
|
* Also drawstyle is determined. Uses _thd.new.* as a buffer and calls SetSelectionTilesDirty() twice,
|
||||||
* Once for the old and once for the new selection.
|
* Once for the old and once for the new selection.
|
||||||
* _thd is TileHighlightData, found in viewport.h
|
* _thd is TileHighlightData, found in viewport.h
|
||||||
* Called by MouseLoop() in windows.cpp
|
|
||||||
*/
|
*/
|
||||||
void UpdateTileSelection()
|
void UpdateTileSelection()
|
||||||
{
|
{
|
||||||
|
|
|
@ -1745,7 +1745,6 @@ enum MouseClick {
|
||||||
TIME_BETWEEN_DOUBLE_CLICK = 500, ///< Time between 2 left clicks before it becoming a double click, in ms
|
TIME_BETWEEN_DOUBLE_CLICK = 500, ///< Time between 2 left clicks before it becoming a double click, in ms
|
||||||
};
|
};
|
||||||
|
|
||||||
extern void UpdateTileSelection();
|
|
||||||
extern bool VpHandlePlaceSizingDrag();
|
extern bool VpHandlePlaceSizingDrag();
|
||||||
|
|
||||||
static void ScrollMainViewport(int x, int y)
|
static void ScrollMainViewport(int x, int y)
|
||||||
|
|
Loading…
Reference in New Issue