OpenTTD Source  1.11.0-beta2
main_gui.cpp File Reference
#include "stdafx.h"
#include "currency.h"
#include "spritecache.h"
#include "window_gui.h"
#include "window_func.h"
#include "textbuf_gui.h"
#include "viewport_func.h"
#include "command_func.h"
#include "console_gui.h"
#include "progress.h"
#include "transparency_gui.h"
#include "map_func.h"
#include "sound_func.h"
#include "transparency.h"
#include "strings_func.h"
#include "zoom_func.h"
#include "company_base.h"
#include "company_func.h"
#include "toolbar_gui.h"
#include "statusbar_gui.h"
#include "linkgraph/linkgraph_gui.h"
#include "tilehighlight_func.h"
#include "hotkeys.h"
#include "guitimer_func.h"
#include "error.h"
#include "news_gui.h"
#include "saveload/saveload.h"
#include "widgets/main_widget.h"
#include "network/network.h"
#include "network/network_func.h"
#include "network/network_gui.h"
#include "network/network_base.h"
#include "table/sprites.h"
#include "table/strings.h"
#include "safeguards.h"

Go to the source code of this file.

Data Structures

struct  MainWindow
 

Enumerations

enum  {
  GHK_QUIT, GHK_ABANDON, GHK_CONSOLE, GHK_BOUNDING_BOXES,
  GHK_DIRTY_BLOCKS, GHK_CENTER, GHK_CENTER_ZOOM, GHK_RESET_OBJECT_TO_PLACE,
  GHK_DELETE_WINDOWS, GHK_DELETE_NONVITAL_WINDOWS, GHK_DELETE_ALL_MESSAGES, GHK_REFRESH_SCREEN,
  GHK_CRASH, GHK_MONEY, GHK_UPDATE_COORDS, GHK_TOGGLE_TRANSPARENCY,
  GHK_TOGGLE_INVISIBILITY = GHK_TOGGLE_TRANSPARENCY + 9, GHK_TRANSPARENCY_TOOLBAR = GHK_TOGGLE_INVISIBILITY + 8, GHK_TRANSPARANCY, GHK_CHAT,
  GHK_CHAT_ALL, GHK_CHAT_COMPANY, GHK_CHAT_SERVER, GHK_CLOSE_NEWS,
  GHK_CLOSE_ERROR
}
 

Functions

bool HandlePlacePushButton (Window *w, int widget, CursorID cursor, HighLightStyle mode)
 This code is shared for the majority of the pushbuttons. More...
 
void CcPlaySound_EXPLOSION (const CommandCost &result, TileIndex tile, uint32 p1, uint32 p2, uint32 cmd)
 
bool DoZoomInOutWindow (ZoomStateChange how, Window *w)
 Zooms a viewport in a window in or out. More...
 
void ZoomInOrOutToCursorWindow (bool in, Window *w)
 
void FixTitleGameZoom ()
 
bool IsQuitKey (uint16 keycode)
 Does the given keycode match one of the keycodes bound to 'quit game'? More...
 
void ShowSelectGameWindow ()
 
void SetupColoursAndInitialWindow ()
 Initialise the default colours (remaps and the likes), and load the main windows.
 
void ShowVitalWindows ()
 Show the vital in-game windows.
 
void GameSizeChanged ()
 Size of the application screen changed. More...
 

Variables

static const struct NWidgetPart _nested_main_window_widgets []
 
const uint16 _ghk_quit_keys [] = {'Q' | WKC_CTRL, 'Q' | WKC_META, 0}
 
const uint16 _ghk_abandon_keys [] = {'W' | WKC_CTRL, 'W' | WKC_META, 0}
 
const uint16 _ghk_chat_keys [] = {WKC_RETURN, 'T', 0}
 
const uint16 _ghk_chat_all_keys [] = {WKC_SHIFT | WKC_RETURN, WKC_SHIFT | 'T', 0}
 
const uint16 _ghk_chat_company_keys [] = {WKC_CTRL | WKC_RETURN, WKC_CTRL | 'T', 0}
 
const uint16 _ghk_chat_server_keys [] = {WKC_CTRL | WKC_SHIFT | WKC_RETURN, WKC_CTRL | WKC_SHIFT | 'T', 0}
 
static Hotkey global_hotkeys []
 
static WindowDesc _main_window_desc (WDP_MANUAL, nullptr, 0, 0, WC_MAIN_WINDOW, WC_NONE, 0, _nested_main_window_widgets, lengthof(_nested_main_window_widgets), &MainWindow::hotkeys)
 

Detailed Description

Handling of the main viewport.

Definition in file main_gui.cpp.

Function Documentation

◆ DoZoomInOutWindow()

bool DoZoomInOutWindow ( ZoomStateChange  how,
Window w 
)

Zooms a viewport in a window in or out.

Parameters
howZooming direction.
wWindow owning the viewport.
Returns
Returns true if zooming step could be done, false if further zooming is not possible.
Note
No button handling or what so ever is done.

Definition at line 91 of file main_gui.cpp.

References _settings_client, ViewportData::dest_scrollpos_x, ViewportData::dest_scrollpos_y, ViewportData::follow_vehicle, ClientSettings::gui, INVALID_VEHICLE, Window::InvalidateData(), ViewportData::scrollpos_x, ViewportData::scrollpos_y, Window::viewport, Viewport::virtual_height, Viewport::virtual_left, Viewport::virtual_top, Viewport::virtual_width, Viewport::zoom, ZOOM_IN, GUISettings::zoom_max, GUISettings::zoom_min, ZOOM_NONE, and ZOOM_OUT.

Referenced by MaxZoomInOut(), and ExtraViewportWindow::OnClick().

◆ GameSizeChanged()

void GameSizeChanged ( )

Size of the application screen changed.

Adapt the game screen-size, re-allocate the open windows, and repaint everything

Definition at line 561 of file main_gui.cpp.

References _cur_resolution.

Referenced by VideoDriver_SDL_Base::ClientSizeChanged().

◆ HandlePlacePushButton()

bool HandlePlacePushButton ( Window w,
int  widget,
CursorID  cursor,
HighLightStyle  mode 
)

This code is shared for the majority of the pushbuttons.

Handles e.g. the pressing of a button (to build things), playing of click sound and sets certain parameters

Parameters
wWindow which called the function
widgetID of the widget (=button) that called this function
cursorHow should the cursor image change? E.g. cursor with depot image in it
modeTile highlighting mode, e.g. drawing a rectangle or a dot on the ground
Returns
true if the button is clicked, false if it's unclicked

Definition at line 61 of file main_gui.cpp.

References _settings_client, SoundSettings::click_beep, Window::IsWidgetDisabled(), and ClientSettings::sound.

Referenced by BuildAirToolbarWindow::OnClick(), BuildDocksToolbarWindow::OnClick(), TerraformToolbarWindow::OnClick(), BuildRailToolbarWindow::OnClick(), ScenarioEditorLandscapeGenerationWindow::OnClick(), and FoundTownWindow::OnClick().

◆ IsQuitKey()

bool IsQuitKey ( uint16  keycode)

Does the given keycode match one of the keycodes bound to 'quit game'?

Parameters
keycodeThe keycode that was pressed by the user.
Returns
True iff the keycode matches one of the hotkeys for 'quit'.

Definition at line 507 of file main_gui.cpp.

References HotkeyList::CheckMatch().

Referenced by EndGameHighScoreBaseWindow::OnKeyPress().

Variable Documentation

◆ _nested_main_window_widgets

const struct NWidgetPart _nested_main_window_widgets[]
static
Initial value:
= {
NWidget(NWID_VIEWPORT, INVALID_COLOUR, WID_M_VIEWPORT), SetResize(1, 1),
}

Definition at line 165 of file main_gui.cpp.

SetResize
static NWidgetPart SetResize(int16 dx, int16 dy)
Widget part function for setting the resize step.
Definition: widget_type.h:929
NWID_VIEWPORT
@ NWID_VIEWPORT
Nested widget containing a viewport.
Definition: widget_type.h:79
WID_M_VIEWPORT
@ WID_M_VIEWPORT
Main window viewport.
Definition: main_widget.h:15
NWidget
static NWidgetPart NWidget(WidgetType tp, Colours col, int16 idx=-1)
Widget part function for starting a new 'real' widget.
Definition: widget_type.h:1113