File diff r27883:ddbd33508a8a → r27884:803962be0328
src/toolbar_gui.cpp
Show inline comments
 
@@ -1127,49 +1127,49 @@ void ToggleBoundingBoxes()
 

	
 
/**
 
 * Toggle drawing of the dirty blocks.
 
 * @note has only an effect when newgrf_developer_tools are active.
 
 *
 
 * Function is found here and not in viewport.cpp in order to avoid
 
 * importing the settings structs to there.
 
 */
 
void ToggleDirtyBlocks()
 
{
 
	extern bool _draw_dirty_blocks;
 
	/* Always allow to toggle them off */
 
	if (_settings_client.gui.newgrf_developer_tools || _draw_dirty_blocks) {
 
		_draw_dirty_blocks = !_draw_dirty_blocks;
 
		MarkWholeScreenDirty();
 
	}
 
}
 

	
 
/**
 
 * Set the starting year for a scenario.
 
 * @param year New starting year.
 
 */
 
void SetStartingYear(TimerGameCalendar::Year year)
 
{
 
	_settings_game.game_creation.starting_year = Clamp(year, MIN_YEAR, MAX_YEAR);
 
	_settings_game.game_creation.starting_year = Clamp(year, CalendarTime::MIN_YEAR, CalendarTime::MAX_YEAR);
 
	TimerGameCalendar::Date new_date = TimerGameCalendar::ConvertYMDToDate(_settings_game.game_creation.starting_year, 0, 1);
 
	/* If you open a savegame as scenario there may already be link graphs.*/
 
	LinkGraphSchedule::instance.ShiftDates(new_date - TimerGameCalendar::date);
 
	TimerGameCalendar::SetDate(new_date, 0);
 
}
 

	
 
/**
 
 * Choose the proper callback function for the main toolbar's help menu.
 
 * @param index The menu index which was selected.
 
 * @return CBF_NONE
 
 */
 
static CallBackFunction MenuClickHelp(int index)
 
{
 
	switch (index) {
 
		case  0: return PlaceLandBlockInfo();
 
		case  2: IConsoleSwitch();                 break;
 
		case  3: ShowScriptDebugWindow();          break;
 
		case  4: ShowScreenshotWindow();           break;
 
		case  5: ShowFramerateWindow();            break;
 
		case  6: ShowAboutWindow();                break;
 
		case  7: ShowSpriteAlignerWindow();        break;
 
		case  8: ToggleBoundingBoxes();            break;
 
		case  9: ToggleDirtyBlocks();              break;
 
	}
 
@@ -2336,90 +2336,90 @@ enum MainToolbarEditorHotkeys {
 
	MTEHK_ZOOM_OUT,
 
	MTEHK_TERRAFORM,
 
	MTEHK_SMALLMAP,
 
	MTEHK_EXTRA_VIEWPORT,
 
};
 

	
 
struct ScenarioEditorToolbarWindow : Window {
 
	ScenarioEditorToolbarWindow(WindowDesc *desc) : Window(desc)
 
	{
 
		this->InitNested(0);
 

	
 
		_last_started_action = CBF_NONE;
 
		CLRBITS(this->flags, WF_WHITE_BORDER);
 
		PositionMainToolbar(this);
 
		DoZoomInOutWindow(ZOOM_NONE, this);
 
	}
 

	
 
	void FindWindowPlacementAndResize(int def_width, int def_height) override
 
	{
 
		Window::FindWindowPlacementAndResize(_toolbar_width, def_height);
 
	}
 

	
 
	void OnPaint() override
 
	{
 
		this->SetWidgetDisabledState(WID_TE_DATE_BACKWARD, _settings_game.game_creation.starting_year <= MIN_YEAR);
 
		this->SetWidgetDisabledState(WID_TE_DATE_FORWARD, _settings_game.game_creation.starting_year >= MAX_YEAR);
 
		this->SetWidgetDisabledState(WID_TE_DATE_BACKWARD, _settings_game.game_creation.starting_year <= CalendarTime::MIN_YEAR);
 
		this->SetWidgetDisabledState(WID_TE_DATE_FORWARD, _settings_game.game_creation.starting_year >= CalendarTime::MAX_YEAR);
 
		this->SetWidgetDisabledState(WID_TE_ROADS, (GetRoadTypes(true) & ~_roadtypes_type) == ROADTYPES_NONE);
 
		this->SetWidgetDisabledState(WID_TE_TRAMS, (GetRoadTypes(true) & _roadtypes_type) == ROADTYPES_NONE);
 

	
 
		this->DrawWidgets();
 
	}
 

	
 
	void SetStringParameters(int widget) const override
 
	{
 
		switch (widget) {
 
			case WID_TE_DATE:
 
				SetDParam(0, TimerGameCalendar::ConvertYMDToDate(_settings_game.game_creation.starting_year, 0, 1));
 
				break;
 
		}
 
	}
 

	
 
	void DrawWidget(const Rect &r, int widget) const override
 
	{
 
		switch (widget) {
 
			case WID_TE_SPACER: {
 
				int height = r.Height();
 
				if (height > 2 * FONT_HEIGHT_NORMAL) {
 
					DrawString(r.left, r.right, height / 2 - FONT_HEIGHT_NORMAL, STR_SCENEDIT_TOOLBAR_OPENTTD, TC_FROMSTRING, SA_HOR_CENTER);
 
					DrawString(r.left, r.right, height / 2, STR_SCENEDIT_TOOLBAR_SCENARIO_EDITOR, TC_FROMSTRING, SA_HOR_CENTER);
 
				} else {
 
					DrawString(r.left, r.right, (height - FONT_HEIGHT_NORMAL) / 2, STR_SCENEDIT_TOOLBAR_SCENARIO_EDITOR, TC_FROMSTRING, SA_HOR_CENTER);
 
				}
 
				break;
 
			}
 
		}
 
	}
 

	
 
	void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize) override
 
	{
 
		switch (widget) {
 
			case WID_TE_SPACER:
 
				size->width = std::max(GetStringBoundingBox(STR_SCENEDIT_TOOLBAR_OPENTTD).width, GetStringBoundingBox(STR_SCENEDIT_TOOLBAR_SCENARIO_EDITOR).width) + padding.width;
 
				break;
 

	
 
			case WID_TE_DATE:
 
				SetDParam(0, TimerGameCalendar::ConvertYMDToDate(MAX_YEAR, 0, 1));
 
				SetDParam(0, TimerGameCalendar::ConvertYMDToDate(CalendarTime::MAX_YEAR, 0, 1));
 
				*size = GetStringBoundingBox(STR_JUST_DATE_LONG);
 
				break;
 
		}
 
	}
 

	
 
	void OnClick(Point pt, int widget, int click_count) override
 
	{
 
		if (_game_mode == GM_MENU) return;
 
		CallBackFunction cbf = _scen_toolbar_button_procs[widget](this);
 
		if (cbf != CBF_NONE) _last_started_action = cbf;
 
	}
 

	
 
	void OnDropdownSelect(int widget, int index) override
 
	{
 
		CallBackFunction cbf = _scen_toolbar_dropdown_procs[widget](index);
 
		if (cbf != CBF_NONE) _last_started_action = cbf;
 
		if (_settings_client.sound.click_beep) SndPlayFx(SND_15_BEEP);
 
	}
 

	
 
	EventState OnHotkey(int hotkey) override
 
	{
 
		CallBackFunction cbf = CBF_NONE;
 
		switch (hotkey) {
 
			case MTEHK_PAUSE:                  ToolbarPauseClick(this); break;
 
@@ -2491,49 +2491,49 @@ struct ScenarioEditorToolbarWindow : Win
 
		}
 
	}};
 

	
 
	/**
 
	 * Some data on this window has become invalid.
 
	 * @param data Information about the changed data.
 
	 * @param gui_scope Whether the call is done from GUI scope. You may not do everything when not in GUI scope. See #InvalidateWindowData() for details.
 
	 */
 
	void OnInvalidateData(int data = 0, bool gui_scope = true) override
 
	{
 
		if (!gui_scope) return;
 
		HandleZoomMessage(this, GetMainWindow()->viewport, WID_TE_ZOOM_IN, WID_TE_ZOOM_OUT);
 
	}
 

	
 
	void OnQueryTextFinished(char *str) override
 
	{
 
		/* Was 'cancel' pressed? */
 
		if (str == nullptr) return;
 

	
 
		TimerGameCalendar::Year value;
 
		if (!StrEmpty(str)) {
 
			value = atoi(str);
 
		} else {
 
			/* An empty string means revert to the default */
 
			value = static_cast<int32_t>(DEF_START_YEAR);
 
			value = static_cast<int32_t>(CalendarTime::DEF_START_YEAR);
 
		}
 
		SetStartingYear(value);
 

	
 
		this->SetDirty();
 
	}
 

	
 
	static inline HotkeyList hotkeys{"scenedit_maintoolbar", {
 
		Hotkey({WKC_F1, WKC_PAUSE}, "pause", MTEHK_PAUSE),
 
		Hotkey(0, "fastforward", MTEHK_FASTFORWARD),
 
		Hotkey(WKC_F2, "settings", MTEHK_SETTINGS),
 
		Hotkey(WKC_F3, "saveload", MTEHK_SAVEGAME),
 
		Hotkey(WKC_F4, "gen_land", MTEHK_GENLAND),
 
		Hotkey(WKC_F5, "gen_town", MTEHK_GENTOWN),
 
		Hotkey(WKC_F6, "gen_industry", MTEHK_GENINDUSTRY),
 
		Hotkey(WKC_F7, "build_road", MTEHK_BUILD_ROAD),
 
		Hotkey(0, "build_tram", MTEHK_BUILD_TRAM),
 
		Hotkey(WKC_F8, "build_docks", MTEHK_BUILD_DOCKS),
 
		Hotkey(WKC_F9, "build_trees", MTEHK_BUILD_TREES),
 
		Hotkey(WKC_F10, "build_sign", MTEHK_SIGN),
 
		Hotkey(WKC_F11, "music", MTEHK_MUSIC),
 
		Hotkey(WKC_F12, "land_info", MTEHK_LANDINFO),
 
		Hotkey(WKC_CTRL  | 'S', "small_screenshot", MTEHK_SMALL_SCREENSHOT),
 
		Hotkey(WKC_CTRL  | 'P', "zoomedin_screenshot", MTEHK_ZOOMEDIN_SCREENSHOT),
 
		Hotkey(WKC_CTRL  | 'D', "defaultzoom_screenshot", MTEHK_DEFAULTZOOM_SCREENSHOT),