Compare commits

...

49 Commits
12 ... 1.6.0.55

Author SHA1 Message Date
pelya
481cecf6aa Fixed multiplayer client list 2016-05-15 01:34:24 +03:00
pelya
e3ea0025c5 Updated Andorid translations 2016-05-14 23:28:34 +03:00
pelya
584d7f3136 Backported Spanish Mexican translation from upstream master branch 2016-05-14 23:27:25 +03:00
pelya
1f4570c14b Change video color depth from game options 2016-04-17 01:05:19 +03:00
pelya
8ec3f4462a Also disable Ctrl hotkey for road stations 2016-04-16 22:49:53 +03:00
pelya
174b07f266 Fixed joining rail stations broken 2016-04-16 22:47:13 +03:00
Sergii Pylypenko
0917c225d8 Added vertical toolbar setting to advanced settings dialog 2016-04-15 22:22:34 +03:00
Sergii Pylypenko
05d1643d26 Confirmation dialog: show what goods the station accepts using a tooltip 2016-04-12 22:29:55 +03:00
Sergii Pylypenko
686321deff Fixed crash when selecting different font size 2016-04-12 21:16:21 +03:00
pelya
bcec5edab9 Updated todo 2016-04-11 01:50:01 +03:00
pelya
eba99834e0 Updated translations 2016-04-11 01:15:24 +03:00
pelya
712ebb3287 Fixed wrong minimap legend clicks items after few minimap usages 2016-04-11 01:13:01 +03:00
pelya
17abfa33d0 Fixed station catchment area not shown when using confirmation dialog 2016-04-11 01:03:50 +03:00
pelya
4cba4d08aa Fixed UI when building with non-autorail tool with confirmation window 2016-04-11 00:48:14 +03:00
pelya
de9d011a01 Fixed non-autorail building with confirmation dialog, UI is still slightly broken 2016-04-11 00:34:01 +03:00
pelya
fe24037905 Updated todo 2016-04-10 23:58:43 +03:00
Sergii Pylypenko
0b931d9383 Oops 2016-04-08 21:20:01 +03:00
Sergii Pylypenko
4310dc186b Show smallmap legend by default 2016-04-08 21:06:40 +03:00
Sergii Pylypenko
0452c60ac1 Fixed legend in minimap 2016-04-08 21:03:49 +03:00
Sergii Pylypenko
ca668e7c99 Fixed subsidies window list height 2016-04-08 19:19:19 +03:00
Sergii Pylypenko
02fc2201bc Option to disable build confirmation dialog 2016-04-08 17:50:09 +03:00
Sergii Pylypenko
8787230f82 Reverted some unnecessary changes 2016-04-08 17:18:23 +03:00
Sergii Pylypenko
510548f381 Proper transparent confirmation window 2016-04-07 23:39:16 +03:00
Sergii Pylypenko
e1d12868f7 Making transparent window is hard 2016-04-07 21:14:07 +03:00
Sergii Pylypenko
19bfa2317c Keep building area highlighted when confirmation window is shown 2016-04-06 23:39:17 +03:00
Sergii Pylypenko
a7a8e35968 Build confirmation window, for each build action on the map 2016-04-06 23:35:05 +03:00
Sergii Pylypenko
a474c233e0 Bigger list items in vehicle orders dialog 2016-04-06 22:20:52 +03:00
Sergii Pylypenko
6fcdd5c43f Fixed bridge UI 2016-04-04 23:11:37 +03:00
Sergii Pylypenko
b0441047aa Hide all windows when building anything on the map 2016-04-04 23:04:39 +03:00
Sergii Pylypenko
00dc8319eb Fix for vehicles unable to fully load 2016-04-04 21:33:16 +03:00
pelya
b4b6e07057 Updated Android translations 2016-04-03 14:55:57 +03:00
pelya
5bbb64885a Fixed crash in "Available vehicles" window 2016-04-03 14:10:44 +03:00
pelya
844cb32a88 Lazy fix for crash https://bugs.openttd.org/task/6437 2016-04-03 13:55:34 +03:00
pelya
8b686b812d Updated todo 2016-04-03 00:25:01 +03:00
pelya
bcacd626ef Fixed minimap scrolling 2016-04-03 00:13:59 +03:00
pelya
026bd48e91 Fixed sign list window 2016-04-03 00:00:44 +03:00
pelya
03fa2b7487 Fixed 'Sort by' widget 2016-04-02 23:52:33 +03:00
pelya
b74200f58f Fixed text input widget too small and bottom bar too wide 2016-04-02 23:39:41 +03:00
pelya
5e54f92241 Bump version files 2016-04-02 22:57:04 +03:00
pelya
5d77a7ff22 Libtimidity is excluded from build on Android, probably due to broken configure script 2016-04-02 22:55:54 +03:00
pelya
4c30d8e5a4 Removed a separate empty panel on the Extra Viewport window 2016-04-02 22:41:29 +03:00
frosch
5a6f11361d (svn r27531) [1.6] -Update: Documentation 2016-04-02 14:06:10 +03:00
Sergii Pylypenko
2b5d1be8e7 Updated tutorial dialog with more videos 2016-03-30 22:08:27 +03:00
Sergii Pylypenko
ab5c174602 Added todo 2016-03-28 22:15:06 +03:00
Sergii Pylypenko
0ad6eba1b6 Rough post-merge GUI fix 2016-03-28 22:14:45 +03:00
Sergii Pylypenko
04cecd2f9a Cleaning up old files 2016-03-28 21:19:31 +03:00
Sergii Pylypenko
e7bc77d4b4 Do not translate close button symbol 2016-03-28 21:00:10 +03:00
Sergii Pylypenko
eec71a5e62 Android translation scripts 2016-03-28 20:42:43 +03:00
frosch
29e1314e97 (svn r27519) [1.6] -Update: Documentation 2016-03-27 23:18:49 +03:00
105 changed files with 6064 additions and 167 deletions

View File

@@ -1 +1 @@
1.4.2 26740 0 1.4.2
1.6.0 27532 0 1.6.0

16
android-extract-strings.sh Executable file
View File

@@ -0,0 +1,16 @@
#!/bin/sh
mkdir -p ../translations/lang
git diff 1.6/master -- src/lang/english.txt | tail -n +5 | grep '^[+]' | cut -b 2- | \
grep -v "^STR_TABLET_CLOSE\b" | \
grep -v "^STR_TABLET_SHIFT\b" | \
grep -v "^STR_TABLET_CTRL\b" | \
cat > ../translations/lang/english.txt
for f in src/lang/*.txt; do
[ "$f" = src/lang/english.txt ] && continue
rm -f ../translations/lang/`basename $f`
cat ../translations/lang/english.txt | grep '^STR' | while read name text; do
grep "^$name\b" $f >> ../translations/lang/`basename $f`
done
done

13
android-store-strings.sh Executable file
View File

@@ -0,0 +1,13 @@
#!/bin/sh
for f in ../translations/lang/*.txt; do
[ "$f" = ../translations/lang/english.txt ] && continue
out=src/lang/`basename $f`
grep "^# Android strings" $out > /dev/null || [ -z "`tail -c 2 $out`" ] || echo >> $out
{ grep -v "^# Android strings" $out ; echo "# Android strings" ; } > $out.new
mv -f $out.new $out
cat $f | grep '^STR' | while read name text; do
{ grep -v "^$name\b" $out ; printf "%-64s%s\n" "$name" "$text" ; } > $out.new
mv -f $out.new $out
done
done

View File

@@ -1,3 +1,34 @@
1.6.0 (2016-04-01)
------------------------------------------------------------------------
(None)
1.6.0-RC1 (2016-03-01)
------------------------------------------------------------------------
- Feature: [NewGRF] Allow custom sound IDs in RV property 0x12, ship property 0x10 and aircraft property 0x12 (r27507)
- Feature: When viewing online content of a particular type, hide content of other types unless they have been (auto)selected for download (r27469, r27468, r27444)
- Feature: [NewGRF] Move sprite 8 positions in sprite aligner with ctrl+click [FS#6241] (r27451)
- Feature: Lower the sell-vehicle and sell-chain buttons in the train depot GUI while dragging a vehicle over it [FS#6391] (r27450, r27446)
- Feature: Make the object placement GUI an independent window (r27438, r27397, r27346)
- Feature: [Build] Project files and compilation with MSVC2015 (r27385, r27382, r27381, r27380, r27379)
- Feature: [NewGRF] Allow railtype NewGRF to define separate sprites for the fences on either track side [FS#6315] (r27354, r27343)
- Feature: [NewGRF] Increase the maximum amount of industry types to 128 per NewGRF and 240 in total (r27279)
- Feature: Make Ctrl+Remove-Roadstop also remove the road, just like for rail stations [FS#6252] (r27251)
- Change: [NewGRF] Allow static NewGRF to enable the second rocky tile set (r27497)
- Change: Round loading percentage in loading indicators and conditional orders towards 50%, so that 0% and 100% mean completely empty or full (r27426)
- Change: [Build] Rework the configure system to make more use of pkg-config (r27377:r27366, r27361, r27360)
- Change: Enable YAPF cache debugging with desync debug level 2 (r27332)
- Change: [strgen] Default plural subparameter position for CARGO_xxx string control codes is subparameter 1 (r27295)
- Change: [NewGRF] Translate industry variable A6 (r27267)
- Change: Do not consider cargo that is already being loaded as waiting cargo wrt. the station rating [FS#6165] (r27256)
- Change: Tune down terrain generation to reduce amount of long slopes (r27230)
- Change: Generate more detailed curves at the coast (r27229)
- Change: Slightly more water in the non-custom sea levels (r27228)
- Change: Be more lenient about road stop removal when at least one stop could be removed [FS#6262] (r27225)
- Fix: [Win32] Stdin/out/err need to be re-assigned differently if the runtime lib of MSVC2015 is used (r27481)
- Fix: [Haiku] On Haiku use the appropriate system variable to obtain the include dir [FS#6401] (r27472)
1.5.3 (2015-12-01)
------------------------------------------------------------------------
(None)

View File

@@ -1,6 +1,6 @@
OpenTTD's known bugs
Last updated: 2015-02-24
Release version: 1.5.0-beta2
Last updated: 2016-04-01
Release version: 1.6.0
------------------------------------------------------------------------

View File

@@ -1,3 +1,15 @@
openttd (1.6.0-0) unstable; urgency=low
* New upstream release 1.6.0
-- OpenTTD <info@openttd.org> Fri, 01 Apr 2016 21:00:00 +0200
openttd (1.6.0~RC1-0) unstable; urgency=low
* New upstream release 1.6.0-RC1
-- OpenTTD <info@openttd.org> Tue, 01 Mar 2016 21:00:00 +0100
openttd (1.5.3-0) unstable; urgency=low
* New upstream release 1.5.3

View File

@@ -2,8 +2,8 @@
!define APPV_MAJOR 1
!define APPV_MINOR 6
!define APPV_MAINT 0
!define APPV_BUILD 0
!define APPV_EXTRA "-beta1"
!define APPV_BUILD 1
!define APPV_EXTRA ""
!define APPNAME "OpenTTD" ; Define application name
!define APPVERSION "${APPV_MAJOR}.${APPV_MINOR}.${APPV_MAINT}${APPV_EXTRA}" ; Define application version

View File

@@ -1,5 +1,5 @@
Last updated: 2015-02-24
Release version: 1.5.0-beta2
Last updated: 2016-04-01
Release version: 1.6.0
------------------------------------------------------------------------

View File

@@ -1,13 +0,0 @@
diff --git a/src/rev.cpp.in b/src/rev.cpp.in
index 506e641..3300664 100644
--- a/src/rev.cpp.in
+++ b/src/rev.cpp.in
@@ -70,7 +70,7 @@ const byte _openttd_revision_modified = !!MODIFIED!!;
* final release will always have a lower version number than the released
* version, thus making comparisons on specific revisions easy.
*/
-const uint32 _openttd_newgrf_version = 1 << 28 | 5 << 24 | 0 << 20 | 0 << 19 | (!!REVISION!! & ((1 << 19) - 1));
+const uint32 _openttd_newgrf_version = 1 << 28 | 5 << 24 | 0 << 20 | 1 << 19 | (!!REVISION!! & ((1 << 19) - 1));
#ifdef __MORPHOS__
/**

View File

@@ -144,6 +144,7 @@ base_media_func.h
base_station_base.h
bmp.h
bridge.h
build_confirmation_func.h
cargo_type.h
cargoaction.h
cargomonitor.h
@@ -453,6 +454,7 @@ airport_gui.cpp
autoreplace_gui.cpp
bootstrap_gui.cpp
bridge_gui.cpp
build_confirmation_gui.cpp
build_vehicle_gui.cpp
cheat_gui.cpp
company_gui.cpp
@@ -1121,7 +1123,7 @@ music/null_m.cpp
#else
#if MORPHOS
#else
music/extmidi.cpp
music/libtimidity.cpp
#end
#end
#end

View File

@@ -120,7 +120,6 @@ struct BuildAirToolbarWindow : Window {
switch (this->last_user_action) {
case WID_AT_AIRPORT: {
VpStartPlaceSizing(tile, VPM_SINGLE_TILE, DDSP_BUILD_STATION);
MoveAllWindowsOffScreen();
break;
}
@@ -130,6 +129,7 @@ struct BuildAirToolbarWindow : Window {
default: NOT_REACHED();
}
MoveAllWindowsOffScreen();
}
virtual void OnPlaceDrag(ViewportPlaceMethod select_method, ViewportDragDropSelectionProcess select_proc, Point pt)
@@ -140,10 +140,10 @@ struct BuildAirToolbarWindow : Window {
virtual void OnPlaceMouseUp(ViewportPlaceMethod select_method, ViewportDragDropSelectionProcess select_proc, Point pt, TileIndex start_tile, TileIndex end_tile)
{
if (pt.x == -1) return;
MoveAllHiddenWindowsBackToScreen();
switch (select_proc) {
case DDSP_BUILD_STATION:
assert(start_tile == end_tile);
MoveAllHiddenWindowsBackToScreen();
PlaceAirport(end_tile);
break;
case DDSP_DEMOLISH_AREA:
@@ -155,8 +155,8 @@ struct BuildAirToolbarWindow : Window {
virtual void OnPlaceObjectAbort()
{
MoveAllHiddenWindowsBackToScreen();
this->RaiseButtons();
DeleteWindowById(WC_BUILD_STATION, TRANSPORT_AIR);
DeleteWindowById(WC_SELECT_STATION, 0);
ResetObjectToPlace();

View File

@@ -199,6 +199,7 @@ public:
sprite_dim.height++; // Sprite is rendered one pixel down in the matrix field.
text_dim.height++; // Allowing the bottom row pixels to be rendered on the edge of the matrix field.
resize->height = max(sprite_dim.height, text_dim.height) + 2; // Max of both sizes + account for matrix edges.
resize->height = GetMinSizing(NWST_STEP, resize->height);
this->bridgetext_offset = WD_MATRIX_LEFT + sprite_dim.width + 1; // Left edge of text, 1 pixel distance from the sprite.
size->width = this->bridgetext_offset + text_dim.width + WD_MATRIX_RIGHT;

View File

@@ -0,0 +1,25 @@
/* $Id$ */
/*
* This file is part of OpenTTD.
* OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
* OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
* See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
*/
/** @file build_confirmation_func.h Transparent confirmation dialog for building anything on the map. */
#ifndef BUILD_CONFIRMATION_FUNC_H
#define BUILD_CONFIRMATION_FUNC_H
#include "stdafx.h"
#include "window_func.h"
#include "widget_type.h"
void ShowBuildConfirmationWindow();
void HideBuildConfirmationWindow();
bool ConfirmationWindowShown();
bool BuildConfirmationWindowProcessViewportClick();
#endif /* BUILD_CONFIRMATION_FUNC_H */

View File

@@ -0,0 +1,262 @@
/* $Id$ */
/*
* This file is part of OpenTTD.
* OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
* OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
* See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
*/
/** @file build_confirmation_gui.cpp Transparent confirmation dialog for building anything on the map. */
#include "stdafx.h"
#include "string_func.h"
#include "strings_func.h"
#include "window_func.h"
#include "widget_type.h"
#include "window_gui.h"
#include "gfx_func.h"
#include "tilehighlight_func.h"
#include "viewport_func.h"
#include "zoom_func.h"
#include "settings_type.h"
#include "station_gui.h"
#include "build_confirmation_func.h"
#include "widgets/build_confirmation_widget.h"
#include "widgets/misc_widget.h"
#include "table/strings.h"
#include "safeguards.h"
static const NWidgetPart _nested_station_build_info_widgets[] = {
NWidget(WWT_PANEL, COLOUR_GREY, WID_TT_BACKGROUND), SetMinimalSize(200, 32), EndContainer(),
};
static WindowDesc _station_build_info_desc(
WDP_MANUAL, NULL, 0, 0, // Coordinates and sizes are not used,
WC_TOOLTIPS, WC_NONE,
WDF_NO_FOCUS,
_nested_station_build_info_widgets, lengthof(_nested_station_build_info_widgets)
);
/** Window for displaying accepted goods for a station. */
struct StationBuildInfoWindow : public Window
{
StationCoverageType sct;
static void show()
{
StationCoverageType sct;
if (FindWindowByClass(WC_BUILD_STATION) != NULL) sct = SCT_ALL;
else if (FindWindowByClass(WC_BUS_STATION) != NULL) sct = SCT_PASSENGERS_ONLY;
else if (FindWindowByClass(WC_TRUCK_STATION) != NULL) sct = SCT_NON_PASSENGERS_ONLY;
else return;
new StationBuildInfoWindow(sct);
}
StationBuildInfoWindow(StationCoverageType sct) : Window(&_station_build_info_desc)
{
this->sct = sct;
this->InitNested();
CLRBITS(this->flags, WF_WHITE_BORDER);
}
virtual Point OnInitialPosition(int16 sm_width, int16 sm_height, int window_number)
{
Point pt;
pt.y = GetMainViewTop();
pt.x = _screen.width - sm_width - FindWindowById(WC_MAIN_TOOLBAR, 0)->width;
return pt;
}
virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize)
{
size->width = GetStringBoundingBox(STR_STATION_BUILD_COVERAGE_AREA_TITLE).width * 2.5;
size->height = GetStringHeight(STR_STATION_BUILD_COVERAGE_AREA_TITLE, size->width) * 2;
/* Increase slightly to have some space around the box. */
size->width += 2 + WD_FRAMERECT_LEFT + WD_FRAMERECT_RIGHT;
size->height += 2 + WD_FRAMERECT_TOP + WD_FRAMERECT_BOTTOM;
}
virtual void DrawWidget(const Rect &r, int widget) const
{
/* There is only one widget. */
GfxFillRect(r.left, r.top, r.right, r.bottom, PC_BLACK);
GfxFillRect(r.left + 1, r.top + 1, r.right - 1, r.bottom - 1, PC_LIGHT_YELLOW);
int top = r.top + WD_FRAMERECT_TOP;
top = DrawStationCoverageAreaText(r.left + WD_FRAMERECT_LEFT, r.right - WD_FRAMERECT_RIGHT, top, sct, _thd.outersize.x / TILE_SIZE / 2, false);
if (top - r.top <= GetStringHeight(STR_STATION_BUILD_COVERAGE_AREA_TITLE, r.right - r.left) * 1.5) {
DrawStationCoverageAreaText(r.left + WD_FRAMERECT_LEFT, r.right - WD_FRAMERECT_RIGHT, top, sct, _thd.outersize.x / TILE_SIZE / 2, true);
}
}
};
/** GUI for confirming building actions. */
struct BuildConfirmationWindow : Window {
// TODO: show estimated price
static bool shown; ///< Just to speed up window hiding, HideBuildConfirmationWindow() is called very often.
Point selstart; ///< The selection start on the viewport.
Point selend; ///< The selection end on the viewport.
BuildConfirmationWindow(WindowDesc *desc) : Window(desc)
{
// Save tile selection points, they will be reset by subsequent code, and we must keep them
selstart = _thd.selstart;
selend = _thd.selend;
this->InitNested(0);
Point pt;
const Window *w = FindWindowById(WC_MAIN_WINDOW, 0);
NWidgetViewport *nvp = this->GetWidget<NWidgetViewport>(WID_BC_OK);
pt.x = w->viewport->scrollpos_x + ScaleByZoom(_cursor.pos.x - nvp->current_x / 2, w->viewport->zoom);
pt.y = w->viewport->scrollpos_y + ScaleByZoom(_cursor.pos.y - nvp->current_y / 4, w->viewport->zoom);
nvp->InitializeViewport(this, 0, w->viewport->zoom);
nvp->disp_flags |= ND_SHADE_DIMMED;
this->viewport->scrollpos_x = pt.x;
this->viewport->scrollpos_y = pt.y;
this->viewport->dest_scrollpos_x = this->viewport->scrollpos_x;
this->viewport->dest_scrollpos_y = this->viewport->scrollpos_y;
BuildConfirmationWindow::shown = true;
}
~BuildConfirmationWindow()
{
BuildConfirmationWindow::shown = false;
}
void OnClick(Point pt, int widget, int click_count)
{
switch (widget) {
case WID_BC_OK:
if (pt.y <= (int)GetWidget<NWidgetViewport>(WID_BC_OK)->current_y / 2) {
_thd.selstart = selstart;
_thd.selend = selend;
ConfirmPlacingObject();
ToolbarSelectLastTool();
} else {
ResetObjectToPlace();
}
break;
}
HideBuildConfirmationWindow(); // this == NULL after this call
}
virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize)
{
switch (widget) {
case WID_BC_OK:
size->width = GetMinSizing(NWST_BUTTON) * 2;
size->height = GetMinSizing(NWST_BUTTON) * 3;
break;
}
}
virtual void OnPaint()
{
this->DrawWidgets();
DrawButtonFrame(0, 0, this->width - 1, this->height / 2 - 2, STR_BUTTON_OK);
DrawButtonFrame(0, this->height / 2, this->width - 1, this->height / 2 - 1, STR_BUTTON_CANCEL);
}
void DrawButtonFrame(int x, int y, int w, int h, int str)
{
DrawFrameRect(x, y, x + w, y + h, COLOUR_GREY, FR_BORDERONLY);
Dimension d = GetStringBoundingBox(str);
DrawFrameRect(x + w / 2 - d.width / 2 - 1,
Center(y, h) - 2,
x + w / 2 + d.width / 2 + 1,
Center(y, h) + d.height,
COLOUR_GREY, FR_NONE);
DrawString(x, x + w, Center(y, h), str, TC_FROMSTRING, SA_HOR_CENTER);
}
};
bool BuildConfirmationWindow::shown = false;
static const NWidgetPart _nested_build_confirmation_widgets[] = {
NWidget(WWT_PANEL, COLOUR_GREY, WID_BC_PANEL),
NWidget(NWID_VIEWPORT, INVALID_COLOUR, WID_BC_OK), SetSizingType(NWST_VIEWPORT), SetResize(1, 1), SetFill(1, 1), //SetPadding(2, 2, 2, 2),
EndContainer(),
};
static WindowDesc _build_confirmation_desc(
WDP_MANUAL, "build_confirmation", 0, 0,
WC_BUILD_CONFIRMATION, WC_NONE,
0,
_nested_build_confirmation_widgets, lengthof(_nested_build_confirmation_widgets)
);
/**
* Show build confirmation window under the mouse cursor
*/
void ShowBuildConfirmationWindow()
{
HideBuildConfirmationWindow();
if (!_settings_client.gui.build_confirmation || _shift_pressed) {
ConfirmPlacingObject();
ToolbarSelectLastTool();
return;
}
BuildConfirmationWindow *w = new BuildConfirmationWindow(&_build_confirmation_desc);
int old_left = w->left;
int old_top = w->top;
w->left = _cursor.pos.x - w->width / 2;
w->top = _cursor.pos.y - w->height / 4;
w->viewport->left += w->left - old_left;
w->viewport->top += w->top - old_top;
w->SetDirty();
SetDirtyBlocks(0, 0, _screen.width, _screen.height); // I don't know what does this do, but it looks important
StationBuildInfoWindow::show();
}
/**
* Destory build confirmation window, this does not cancel current action
*/
void HideBuildConfirmationWindow()
{
if (!BuildConfirmationWindow::shown) return;
DeleteWindowById(WC_BUILD_CONFIRMATION, 0);
DeleteWindowById(WC_TOOLTIPS, 0);
}
bool ConfirmationWindowShown()
{
return BuildConfirmationWindow::shown;
}
bool BuildConfirmationWindowProcessViewportClick()
{
if (!BuildConfirmationWindow::shown) return false;
Window *w = FindWindowById(WC_BUILD_CONFIRMATION, 0);
if (w != NULL && IsInsideBS(_cursor.pos.x, w->left, w->width) && IsInsideBS(_cursor.pos.y, w->top, w->height)) {
Point pt;
pt.x = _cursor.pos.x - w->left;
pt.y = _cursor.pos.y - w->top;
w->OnClick(pt, WID_BC_OK, 1);
return true;
}
HideBuildConfirmationWindow();
_thd.new_outersize = _thd.outersize; // Revert station catchment area highlight, which is getting set to zero inside drawing funcs
return false;
}

View File

@@ -60,14 +60,23 @@ static const NWidgetPart _nested_build_vehicle_widgets[] = {
EndContainer(),
NWidget(NWID_HORIZONTAL),
NWidget(NWID_VERTICAL),
NWidget(NWID_HORIZONTAL),
NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_BV_SORT_ASCENDING_DESCENDING), SetSizingType(NWST_STEP), SetDataTip(STR_BUTTON_SORT_BY, STR_TOOLTIP_SORT_ORDER),
NWidget(WWT_DROPDOWN, COLOUR_GREY, WID_BV_SORT_DROPDOWN), SetSizingType(NWST_STEP), SetResize(1, 0), SetFill(1, 0), SetDataTip(STR_JUST_STRING, STR_TOOLTIP_SORT_CRITERIA),
NWidget(WWT_PANEL, COLOUR_GREY),
NWidget(NWID_VERTICAL),
NWidget(NWID_HORIZONTAL),
NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_BV_SORT_ASCENDING_DESCENDING), SetDataTip(STR_BUTTON_SORT_BY, STR_TOOLTIP_SORT_ORDER), SetSizingType(NWST_STEP),
NWidget(WWT_DROPDOWN, COLOUR_GREY, WID_BV_SORT_DROPDOWN), SetResize(1, 0), SetFill(1, 0), SetDataTip(STR_JUST_STRING, STR_TOOLTIP_SORT_CRITERIA), SetSizingType(NWST_STEP),
EndContainer(),
NWidget(NWID_HORIZONTAL),
NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_BV_SHOW_HIDDEN_ENGINES), SetSizingType(NWST_STEP),
NWidget(WWT_DROPDOWN, COLOUR_GREY, WID_BV_CARGO_FILTER_DROPDOWN), SetResize(1, 0), SetFill(1, 0), SetDataTip(STR_JUST_STRING, STR_TOOLTIP_FILTER_CRITERIA), SetSizingType(NWST_STEP),
EndContainer(),
NWidget(NWID_SPACER), SetFill(1, 1),
EndContainer(),
EndContainer(),
/* Vehicle list. */
NWidget(NWID_HORIZONTAL),
NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_BV_SHOW_HIDDEN_ENGINES),
NWidget(WWT_DROPDOWN, COLOUR_GREY, WID_BV_CARGO_FILTER_DROPDOWN), SetSizingType(NWST_STEP), SetResize(1, 0), SetFill(1, 0), SetDataTip(STR_JUST_STRING, STR_TOOLTIP_FILTER_CRITERIA),
NWidget(WWT_MATRIX, COLOUR_GREY, WID_BV_LIST), SetResize(1, 1), SetFill(1, 0), SetMatrixDataTip(1, 0, STR_NULL), SetScrollbar(WID_BV_SCROLLBAR),
NWidget(NWID_VSCROLLBAR, COLOUR_GREY, WID_BV_SCROLLBAR),
EndContainer(),
EndContainer(),
/* Panel with details. */

View File

@@ -28,19 +28,6 @@
}
/** Some enums need to have cycling through values */
#define DECLARE_CYCLE(type, min_val, max_val) \
inline type CycleUp(type e) \
{ \
assert(!((int)e < min_val || (int)e > max_val)); \
return e == max_val ? (type)min_val : (type)((int)e + 1); \
} \
inline type CycleDown(type e) \
{ \
assert(!((int)e < min_val || (int)e > max_val)); \
return e == min_val ? (type)max_val : (type)((int)e - 1); \
}
/** Operators to allow to work with enum as with type safe bit set in C++ */
# define DECLARE_ENUM_AS_BIT_SET(mask_t) \

View File

@@ -209,6 +209,7 @@ struct BuildDocksToolbarWindow : Window {
default: NOT_REACHED();
}
MoveAllWindowsOffScreen();
}
virtual void OnPlaceDrag(ViewportPlaceMethod select_method, ViewportDragDropSelectionProcess select_proc, Point pt)
@@ -277,11 +278,13 @@ struct BuildDocksToolbarWindow : Window {
default: break;
}
MoveAllHiddenWindowsBackToScreen();
}
}
virtual void OnPlaceObjectAbort()
{
MoveAllHiddenWindowsBackToScreen();
this->RaiseButtons();
DeleteWindowById(WC_BUILD_STATION, TRANSPORT_WATER);

View File

@@ -1651,7 +1651,9 @@ static void LoadUnloadVehicle(Vehicle *front)
uint amount_unloaded = _settings_game.order.gradual_loading ? min(cargo_count, load_amount) : cargo_count;
bool remaining = false; // Are there cargo entities in this vehicle that can still be unloaded here?
payment->SetCargo(v->cargo_type);
if (payment != NULL) {
payment->SetCargo(v->cargo_type);
}
if (!HasBit(ge->status, GoodsEntry::GES_ACCEPTANCE) && v->cargo.ActionCount(VehicleCargoList::MTA_DELIVER) > 0) {
/* The station does not accept our goods anymore. */
@@ -1690,7 +1692,9 @@ static void LoadUnloadVehicle(Vehicle *front)
}
}
amount_unloaded = v->cargo.Unload(amount_unloaded, &ge->cargo, payment);
if (payment != NULL) {
amount_unloaded = v->cargo.Unload(amount_unloaded, &ge->cargo, payment);
}
remaining = v->cargo.UnloadCount() > 0;
if (amount_unloaded > 0) {
dirty_vehicle = true;

View File

@@ -550,6 +550,7 @@ public:
virtual void OnPlaceObject(Point pt, TileIndex tile)
{
VpStartPlaceSizing(tile, VPM_SINGLE_TILE, DDSP_SINGLE_TILE);
MoveAllWindowsOffScreen();
}
virtual void OnPlaceDrag(ViewportPlaceMethod select_method, ViewportDragDropSelectionProcess select_proc, Point pt)
@@ -562,6 +563,7 @@ public:
if (pt.x == -1) return;
assert(end_tile == start_tile);
MoveAllHiddenWindowsBackToScreen();
bool success = true;
/* We do not need to protect ourselves against "Random Many Industries" in this mode */
const IndustrySpec *indsp = GetIndustrySpec(this->selected_type);
@@ -624,6 +626,7 @@ public:
virtual void OnPlaceObjectAbort()
{
MoveAllHiddenWindowsBackToScreen();
this->RaiseButtons();
}

View File

@@ -4969,3 +4969,5 @@ STR_PLANE :{BLACK}{PLANE}
STR_SHIP :{BLACK}{SHIP}
STR_TOOLBAR_RAILTYPE_VELOCITY :{STRING} ({VELOCITY})
# Android strings

View File

@@ -4421,3 +4421,5 @@ STR_PLANE :{BLACK}{PLANE}
STR_SHIP :{BLACK}{SHIP}
STR_TOOLBAR_RAILTYPE_VELOCITY :{STRING} ({VELOCITY})
# Android strings

View File

@@ -4815,3 +4815,5 @@ STR_PLANE :{BLACK}{PLANE}
STR_SHIP :{BLACK}{SHIP}
STR_TOOLBAR_RAILTYPE_VELOCITY :{STRING} ({VELOCITY})
# Android strings

View File

@@ -5441,3 +5441,5 @@ STR_PLANE :{BLACK}{PLANE}
STR_SHIP :{BLACK}{SHIP}
STR_TOOLBAR_RAILTYPE_VELOCITY :{STRING} ({VELOCITY})
# Android strings

View File

@@ -4969,3 +4969,5 @@ STR_PLANE :{BLACK}{PLANE}
STR_SHIP :{BLACK}{SHIP}
STR_TOOLBAR_RAILTYPE_VELOCITY :{STRING} ({VELOCITY})
# Android strings

View File

@@ -4882,3 +4882,5 @@ STR_PLANE :{BLACK}{PLANE}
STR_SHIP :{BLACK}{SHIP}
STR_TOOLBAR_RAILTYPE_VELOCITY :{STRING} ({VELOCITY})
# Android strings

View File

@@ -4969,3 +4969,5 @@ STR_PLANE :{BLACK}{PLANE}
STR_SHIP :{BLACK}{SHIP}
STR_TOOLBAR_RAILTYPE_VELOCITY :{STRING} ({VELOCITY})
# Android strings

View File

@@ -5101,3 +5101,35 @@ STR_PLANE :{BLACK}{PLANE}
STR_SHIP :{BLACK}{SHIP}
STR_TOOLBAR_RAILTYPE_VELOCITY :{STRING} ({VELOCITY})
# Android strings
STR_ABOUT_MENU_TUTORIAL :{BLACK}Udžbenik
STR_SMALLMAP_TOOLTIP_SHOW_LEGEND :{BLACK}Prikaži legendu mape / opis simbola na mapi
STR_CONFIG_SETTING_VERTICAL_TOOLBAR :{BLACK}Okomita alatna traka
STR_CONFIG_SETTING_VERTICAL_TOOLBAR_HELPTEXT :{BLACK}Glavna alatna traka je podijeljena na dvije okomite alatne trake na rubovima ekrana
STR_CONFIG_SETTING_BUTTON_SIZE :{BLACK}Veličina tipki
STR_CONFIG_SETTING_BUTTON_SIZE_TOOLTIP :{BLACK}Veličina svih elemenata korisničkog sučelja
STR_CONFIG_SETTING_FONT_SIZE :{BLACK}Veličina fonta
STR_CONFIG_SETTING_FONT_SIZE_TOOLTIP :{BLACK}Veličina svih fontova u igri
STR_CONFIG_SETTING_BUILD_CONFIRMATION :{BLACK}Potvrdi akcije
STR_CONFIG_SETTING_BUILD_CONFIRMATION_HELPTEXT :{BLACK}Prikaži dijalog potvrde pri gradnji cesta i stanica
STR_CONFIG_SETTING_VIDEO_8BPP :{BLACK}8 bit
STR_CONFIG_SETTING_VIDEO_8BPP_HELPTEXT :{BLACK}Postavi dubinu boja videa na 8 bitova po pikselu, ovaj način podržava animaciju vode
STR_CONFIG_SETTING_VIDEO_16BPP :{BLACK}16 bit
STR_CONFIG_SETTING_VIDEO_16BPP_HELPTEXT :{BLACK}Postavi dubinu boja videa na 16 bitova po pikselu, za ovo treba restart, ovaj način ne podržava animaciju vode
STR_CONFIG_SETTING_VIDEO_24BPP :{BLACK}24 bit
STR_CONFIG_SETTING_VIDEO_24BPP_HELPTEXT :{BLACK}Postavi dubinu boja videa na 24 bita po pikselu, ovaj način podržava animaciju vode
STR_TABLET_CLOSE_TOOLTIP :{BLACK}Zatvori sve otvorene prozore (osim zakačenih)
STR_TABLET_SHIFT_TOOLTIP :{BLACK}Pritisnuti za procjenu troškova izvođenja neke akcije
STR_TABLET_CTRL_TOOLTIP :{BLACK}Koristiti za sve akcije za koje se koristi tipka "CTRL"
STR_TUTORIAL_WINDOW_TITLE :{BLACK}Videi za učenje
STR_TUTORIAL_WINDOW_TOOLTIP :{BLACK}Otvori prikazivač videa za gledanje videa za učenje
STR_TUTORIAL_ROADS_AND_STATIONS :{BLACK}Građenje cesta i stanica, kupnja vozila
STR_TUTORIAL_RAILWAYS :{BLACK}Pruge i vlakovi
STR_TUTORIAL_ROAD_VEHICLES :{BLACK}Cestovna vozila
STR_TUTORIAL_SHIPS :{BLACK}Brodovi i dokovi
STR_TUTORIAL_CARGO :{BLACK}Vrste tereta
STR_SAVELOAD_LOAD_NETWORK_BUTTON :{BLACK}Učitaj sa mreže
STR_SAVELOAD_LOAD_NETWORK_TOOLTIP :{BLACK}Učitaj igru sa mrežne pohrane podataka
STR_SAVELOAD_SAVE_NETWORK_BUTTON :{BLACK}Spremi na mrežu
STR_SAVELOAD_SAVE_NETWORK_TOOLTIP :{BLACK}Spremi igru na mrežnu pohranu podataka

View File

@@ -5188,3 +5188,5 @@ STR_PLANE :{BLACK}{PLANE}
STR_SHIP :{BLACK}{SHIP}
STR_TOOLBAR_RAILTYPE_VELOCITY :{STRING} ({VELOCITY})
# Android strings

View File

@@ -4968,3 +4968,5 @@ STR_PLANE :{BLACK}{PLANE}
STR_SHIP :{BLACK}{SHIP}
STR_TOOLBAR_RAILTYPE_VELOCITY :{STRING} ({VELOCITY})
# Android strings

View File

@@ -4968,3 +4968,5 @@ STR_PLANE :{BLACK}{PLANE}
STR_SHIP :{BLACK}{SHIP}
STR_TOOLBAR_RAILTYPE_VELOCITY :{STRING} ({VELOCITY})
# Android strings

View File

@@ -479,7 +479,6 @@ STR_ABOUT_MENU_ABOUT_OPENTTD :About 'OpenTTD'
STR_ABOUT_MENU_SPRITE_ALIGNER :Sprite aligner
STR_ABOUT_MENU_TOGGLE_BOUNDING_BOXES :Toggle bounding boxes
STR_ABOUT_MENU_TOGGLE_DIRTY_BLOCKS :Toggle colouring of dirty blocks
STR_ABOUT_MENU_SEPARATOR :
############ range ends here
############ range for ordinal numbers used for the place in the highscore window
@@ -1219,6 +1218,14 @@ STR_CONFIG_SETTING_BUTTON_SIZE :{BLACK}Button s
STR_CONFIG_SETTING_BUTTON_SIZE_TOOLTIP :{BLACK}Size of all user interface elements
STR_CONFIG_SETTING_FONT_SIZE :{BLACK}Font size
STR_CONFIG_SETTING_FONT_SIZE_TOOLTIP :{BLACK}Size of all game fonts
STR_CONFIG_SETTING_BUILD_CONFIRMATION :{BLACK}Confirm actions
STR_CONFIG_SETTING_BUILD_CONFIRMATION_HELPTEXT :{BLACK}Show confirmation dialog when building roads and stations
STR_CONFIG_SETTING_VIDEO_8BPP :{BLACK}8 bit
STR_CONFIG_SETTING_VIDEO_8BPP_HELPTEXT :{BLACK}Set video color depth to 8 bits per pixel, this video mode supports water animation
STR_CONFIG_SETTING_VIDEO_16BPP :{BLACK}16 bit
STR_CONFIG_SETTING_VIDEO_16BPP_HELPTEXT :{BLACK}Set video color depth to 16 bits per pixel, this requires restart, this video mode does not support water animation
STR_CONFIG_SETTING_VIDEO_24BPP :{BLACK}24 bit
STR_CONFIG_SETTING_VIDEO_24BPP_HELPTEXT :{BLACK}Set video color depth to 24 bits per pixel, this video mode supports water animation
STR_CONFIG_SETTING_SHOWFINANCES :Show finances window at the end of the year: {STRING2}
STR_CONFIG_SETTING_SHOWFINANCES_HELPTEXT :If enabled, the finances window pops up at the end of each year to allow easy inspection of the financial status of the company
STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT :New orders are 'non-stop' by default: {STRING2}
@@ -2484,7 +2491,6 @@ STR_LANDSCAPING_TOOLTIP_RAISE_A_CORNER_OF_LAND :{BLACK}Raise a
STR_LANDSCAPING_LEVEL_LAND_TOOLTIP :{BLACK}Level an area of land to the height of the first selected corner. Ctrl selects the area diagonally. Shift toggles building/showing cost estimate
STR_LANDSCAPING_TOOLTIP_PURCHASE_LAND :{BLACK}Purchase land for future use. Shift toggles building/showing cost estimate
# Tablet toolbar
STR_TABLET_CLOSE :{BLACK}X
STR_TABLET_CLOSE_TOOLTIP :{BLACK}Close all opened windows (except pinned ones)
STR_TABLET_SHIFT :{BLACK}{TINY_FONT}Shft
@@ -2705,9 +2711,13 @@ STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Original
STR_ABOUT_VERSION :{BLACK}OpenTTD version {REV}
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2016 The OpenTTD team
#Tutorial window
STR_TUTORIAL_WINDOW_TITLE :{BLACK}Tutorial videos
STR_TUTORIAL_WINDOW_TOOLTIP :{BLACK}Open a video player to watch tutorial videos
STR_TUTORIAL_ROADS_AND_STATIONS :{BLACK}Building roads and stations, buying vehicles
STR_TUTORIAL_RAILWAYS :{BLACK}Railways and trains
STR_TUTORIAL_ROAD_VEHICLES :{BLACK}Road vehicles
STR_TUTORIAL_SHIPS :{BLACK}Ships and docks
STR_TUTORIAL_CARGO :{BLACK}Cargo types
# Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}Save Game

View File

@@ -4916,3 +4916,5 @@ STR_PLANE :{BLACK}{PLANE}
STR_SHIP :{BLACK}{SHIP}
STR_TOOLBAR_RAILTYPE_VELOCITY :{STRING} ({VELOCITY})
# Android strings

View File

@@ -4968,3 +4968,5 @@ STR_PLANE :{BLACK}{PLANE}
STR_SHIP :{BLACK}{SHIP}
STR_TOOLBAR_RAILTYPE_VELOCITY :{STRING} ({VELOCITY})
# Android strings

View File

@@ -4320,3 +4320,5 @@ STR_PLANE :{BLACK}{PLANE}
STR_SHIP :{BLACK}{SHIP}
STR_TOOLBAR_RAILTYPE_VELOCITY :{STRING} ({VELOCITY})
# Android strings

View File

@@ -5026,3 +5026,5 @@ STR_PLANE :{BLACK}{PLANE}
STR_SHIP :{BLACK}{SHIP}
STR_TOOLBAR_RAILTYPE_VELOCITY :{STRING} ({VELOCITY})
# Android strings

View File

@@ -4470,3 +4470,5 @@ STR_PLANE :{BLACK}{PLANE}
STR_SHIP :{BLACK}{SHIP}
STR_TOOLBAR_RAILTYPE_VELOCITY :{STRING} ({VELOCITY})
# Android strings

View File

@@ -4968,3 +4968,5 @@ STR_PLANE :{BLACK}{PLANE}
STR_SHIP :{BLACK}{SHIP}
STR_TOOLBAR_RAILTYPE_VELOCITY :{STRING} ({VELOCITY})
# Android strings

View File

@@ -4969,3 +4969,5 @@ STR_PLANE :{BLACK}{PLANE}
STR_SHIP :{BLACK}{SHIP}
STR_TOOLBAR_RAILTYPE_VELOCITY :{STRING} ({VELOCITY})
# Android strings

View File

@@ -5354,3 +5354,35 @@ STR_PLANE :{BLACK}{PLANE}
STR_SHIP :{BLACK}{SHIP}
STR_TOOLBAR_RAILTYPE_VELOCITY :{STRING} ({VELOCITY})
# Android strings
STR_ABOUT_MENU_TUTORIAL :{BLACK}Oideachadh
STR_SMALLMAP_TOOLTIP_SHOW_LEGEND :{BLACK}Seall treòir a' mhapa / tuairisgeulan air samhlaidhean a' mhapa
STR_CONFIG_SETTING_VERTICAL_TOOLBAR :{BLACK}Bàr-inneal inghearach
STR_CONFIG_SETTING_VERTICAL_TOOLBAR_HELPTEXT :{BLACK}Thèid am prìomh bhàr-inneal a sgoltadh 'na bhàraichean-inneal inghearach ri dà thaobh an sgrìn
STR_CONFIG_SETTING_BUTTON_SIZE :{BLACK}Meud nam putan
STR_CONFIG_SETTING_BUTTON_SIZE_TOOLTIP :{BLACK}Meud aig a h-uile nì an eadar-aghaidh
STR_CONFIG_SETTING_FONT_SIZE :{BLACK}Meud a' chrutha-chlò
STR_CONFIG_SETTING_FONT_SIZE_TOOLTIP :{BLACK}Meud aig a h-uile cruth-clò a' gheama
STR_CONFIG_SETTING_BUILD_CONFIRMATION :{BLACK}Dearbhaich na gnìomhan
STR_CONFIG_SETTING_BUILD_CONFIRMATION_HELPTEXT :{BLACK}Seall còmhradh dearbhaidh le togail rathaidean is stèiseanan
STR_CONFIG_SETTING_VIDEO_8BPP :{BLACK}8 biod
STR_CONFIG_SETTING_VIDEO_8BPP_HELPTEXT :{BLACK}Suidhich doimhneachd nan dath aig a' video gu 8 biod gach piogsail. Cuiridh am modh video sin taic ri beòthachadh uisge
STR_CONFIG_SETTING_VIDEO_16BPP :{BLACK}16 biod
STR_CONFIG_SETTING_VIDEO_16BPP_HELPTEXT :{BLACK}Suidhich doimhneachd nan dath aig a' video gu 16 biod gach piogsail. Bidh feum air ath-thòiseachadh. Cha chuir am modh video sin taic ri beòthachadh uisge
STR_CONFIG_SETTING_VIDEO_24BPP :{BLACK}24 biod
STR_CONFIG_SETTING_VIDEO_24BPP_HELPTEXT :{BLACK}Suidhich doimhneachd nan dath aig a' video gu 24 biod gach piogsail. Cuiridh am modh video sin taic ri beòthachadh uisge
STR_TABLET_CLOSE_TOOLTIP :{BLACK}Dùin a h-uile uinneag (seach an fheadhainn phrìnichte)
STR_TABLET_SHIFT_TOOLTIP :{BLACK}Brùth air gus tuairmse air cosgaisean gnìomha fhaighinn
STR_TABLET_CTRL_TOOLTIP :{BLACK}Cleachd e airson gnìomhan a chleachdas an iuchair "CTRL"
STR_TUTORIAL_WINDOW_TITLE :{BLACK}Videothan oideachaidh
STR_TUTORIAL_WINDOW_TOOLTIP :{BLACK}Fosgail cluicheadair video gus coimhead air videothan oideachaidh
STR_TUTORIAL_ROADS_AND_STATIONS :{BLACK}Togail rathaidean is stèiseanan, ceannach charbadan
STR_TUTORIAL_RAILWAYS :{BLACK}Slighean rèile is trèanaichean
STR_TUTORIAL_ROAD_VEHICLES :{BLACK}Carbadan-rathaid
STR_TUTORIAL_SHIPS :{BLACK}Longan is puirt
STR_TUTORIAL_CARGO :{BLACK}Seòrsaichean carago
STR_SAVELOAD_LOAD_NETWORK_BUTTON :{BLACK}Luchdaich on lìonra
STR_SAVELOAD_LOAD_NETWORK_TOOLTIP :{BLACK}Luchdaich geama o stòras an lìonraidh
STR_SAVELOAD_SAVE_NETWORK_BUTTON :{BLACK}Sàbhail dhan lìonra
STR_SAVELOAD_SAVE_NETWORK_TOOLTIP :{BLACK}Cuir lethbhreac-glèidhidh dhen gheama gu stòras an lìonraidh

View File

@@ -4906,3 +4906,5 @@ STR_PLANE :{BLACK}{PLANE}
STR_SHIP :{BLACK}{SHIP}
STR_TOOLBAR_RAILTYPE_VELOCITY :{STRING} ({VELOCITY})
# Android strings

View File

@@ -4969,3 +4969,35 @@ STR_PLANE :{BLACK}{PLANE}
STR_SHIP :{BLACK}{SHIP}
STR_TOOLBAR_RAILTYPE_VELOCITY :{STRING} ({VELOCITY})
# Android strings
STR_ABOUT_MENU_TUTORIAL :{BLACK}Tutorial
STR_SMALLMAP_TOOLTIP_SHOW_LEGEND :{BLACK}Zeige Kartenlegende / Beschreibung der Kartensymbole
STR_CONFIG_SETTING_VERTICAL_TOOLBAR :{BLACK}Vertikale Werkzeugsleiste
STR_CONFIG_SETTING_VERTICAL_TOOLBAR_HELPTEXT :{BLACK}Hauptwerzeugleiste ist in zwei vertikale Leisten an den Bildschirmseiten aufgeteilt
STR_CONFIG_SETTING_BUTTON_SIZE :{BLACK}Schaltflächengröße
STR_CONFIG_SETTING_BUTTON_SIZE_TOOLTIP :{BLACK}Größe aller Elemente der Benutzeroberfläche
STR_CONFIG_SETTING_FONT_SIZE :{BLACK}Schriftartgröße
STR_CONFIG_SETTING_FONT_SIZE_TOOLTIP :{BLACK}Größe aller Schriftarten
STR_CONFIG_SETTING_BUILD_CONFIRMATION :{BLACK}Aktionen bestätigen
STR_CONFIG_SETTING_BUILD_CONFIRMATION_HELPTEXT :{BLACK}Zeige Bestätigungsdialog bei Straßen- und Haltenstellebau
STR_CONFIG_SETTING_VIDEO_8BPP :{BLACK}8 bit
STR_CONFIG_SETTING_VIDEO_8BPP_HELPTEXT :{BLACK}Setzt die Farbtiefe auf 8 Bits per Pixel. Dieser Modus unterstützt Wasseranimation
STR_CONFIG_SETTING_VIDEO_16BPP :{BLACK}16 bit
STR_CONFIG_SETTING_VIDEO_16BPP_HELPTEXT :{BLACK}Setzt die Farbtiefe auf 16 Bit per Pixel. Erfordert Neustart und dieser Modus unterstützt keine Wasseranimation
STR_CONFIG_SETTING_VIDEO_24BPP :{BLACK}24 bit
STR_CONFIG_SETTING_VIDEO_24BPP_HELPTEXT :{BLACK}Setzt die Farbtiefe auf 24 Bits per Pixel. Dieser Modus unterstützt Wasseranimation
STR_TABLET_CLOSE_TOOLTIP :{BLACK}Schließe alle offene Fenster (außer Festgepinnte)
STR_TABLET_SHIFT_TOOLTIP :{BLACK}Drücke hier, um eine Kostenabschätzung für die Durchführung einer Aktion zu erhalten
STR_TABLET_CTRL_TOOLTIP :{BLACK}Für Aktionen benutzen, welche die "STRG" Taste benutzen
STR_TUTORIAL_WINDOW_TITLE :{BLACK}Tutorial Videos
STR_TUTORIAL_WINDOW_TOOLTIP :{BLACK}Öffne einen Videoplayer, um Tutorial videos anzuschauen
STR_TUTORIAL_ROADS_AND_STATIONS :{BLACK}Strassen und Haltestellen bauen, Fahrzeuge kaufen
STR_TUTORIAL_RAILWAYS :{BLACK}Eisenbahnen und Züge
STR_TUTORIAL_ROAD_VEHICLES :{BLACK}Straßenfahrzeuge
STR_TUTORIAL_SHIPS :{BLACK}Schiffe und Docks
STR_TUTORIAL_CARGO :{BLACK}Warentypen
STR_SAVELOAD_LOAD_NETWORK_BUTTON :{BLACK}Laden vom Netzwerk
STR_SAVELOAD_LOAD_NETWORK_TOOLTIP :{BLACK}Öffne ein Spiel aus dem Netzwerkspeicher
STR_SAVELOAD_SAVE_NETWORK_BUTTON :{BLACK}Speichern ins Netzwerk
STR_SAVELOAD_SAVE_NETWORK_TOOLTIP :{BLACK}Spiel zurück in den Netzwerkspeicher backupen

View File

@@ -5087,3 +5087,5 @@ STR_PLANE :{BLACK}{PLANE}
STR_SHIP :{BLACK}{SHIP}
STR_TOOLBAR_RAILTYPE_VELOCITY :{STRING} ({VELOCITY})
# Android strings

View File

@@ -4864,3 +4864,5 @@ STR_PLANE :{BLACK}{PLANE}
STR_SHIP :{BLACK}{SHIP}
STR_TOOLBAR_RAILTYPE_VELOCITY :{STRING} ({VELOCITY})
# Android strings

View File

@@ -5073,3 +5073,5 @@ STR_PLANE :{BLACK}{PLANE}
STR_SHIP :{BLACK}{SHIP}
STR_TOOLBAR_RAILTYPE_VELOCITY :{STRING} ({VELOCITY})
# Android strings

View File

@@ -4725,3 +4725,5 @@ STR_PLANE :{BLACK}{PLANE}
STR_SHIP :{BLACK}{SHIP}
STR_TOOLBAR_RAILTYPE_VELOCITY :{STRING} ({VELOCITY})
# Android strings

View File

@@ -4964,3 +4964,5 @@ STR_PLANE :{BLACK}{PLANE}
STR_SHIP :{BLACK}{SHIP}
STR_TOOLBAR_RAILTYPE_VELOCITY :{STRING} ({VELOCITY})
# Android strings

View File

@@ -4968,3 +4968,5 @@ STR_PLANE :{BLACK}{PLANE}
STR_SHIP :{BLACK}{SHIP}
STR_TOOLBAR_RAILTYPE_VELOCITY :{STRING} ({VELOCITY})
# Android strings

View File

@@ -4998,3 +4998,5 @@ STR_PLANE :{BLACK}{PLANE}
STR_SHIP :{BLACK}{SHIP}
STR_TOOLBAR_RAILTYPE_VELOCITY :{STRING} ({VELOCITY})
# Android strings

View File

@@ -4968,3 +4968,5 @@ STR_PLANE :{BLACK}{PLANE}
STR_SHIP :{BLACK}{SHIP}
STR_TOOLBAR_RAILTYPE_VELOCITY :{STRING} ({VELOCITY})
# Android strings

View File

@@ -4969,3 +4969,5 @@ STR_PLANE :{G=f}{BLACK}{PL
STR_SHIP :{G=f}{BLACK}{SHIP}
STR_TOOLBAR_RAILTYPE_VELOCITY :{STRING} ({VELOCITY})
# Android strings

View File

@@ -5287,3 +5287,35 @@ STR_PLANE :{BLACK}{PLANE}
STR_SHIP :{BLACK}{SHIP}
STR_TOOLBAR_RAILTYPE_VELOCITY :{STRING} ({VELOCITY})
# Android strings
STR_ABOUT_MENU_TUTORIAL :{BLACK}Rudimentum
STR_SMALLMAP_TOOLTIP_SHOW_LEGEND :{BLACK}Monstrare formulam graphicam / descriptionem tabulae
STR_CONFIG_SETTING_VERTICAL_TOOLBAR :{BLACK}Arca instrumentorum directa
STR_CONFIG_SETTING_VERTICAL_TOOLBAR_HELPTEXT :{BLACK}Si vis, arca instrumentorum prima dividitur in partes duas apud margines scrinii
STR_CONFIG_SETTING_BUTTON_SIZE :{BLACK}Magnitudo globulorum
STR_CONFIG_SETTING_BUTTON_SIZE_TOOLTIP :{BLACK}Magnitudo omnium elementorum interfaciei
STR_CONFIG_SETTING_FONT_SIZE :{BLACK}Magnitudo fontis typographici
STR_CONFIG_SETTING_FONT_SIZE_TOOLTIP :{BLACK}Magnitudo omnium fontium typographicorum in ludo
STR_CONFIG_SETTING_BUILD_CONFIRMATION :{BLACK}Confirmare
STR_CONFIG_SETTING_BUILD_CONFIRMATION_HELPTEXT :{BLACK}Monstrare confirmationem dum struuntur stationes viaeque
STR_CONFIG_SETTING_VIDEO_8BPP :{BLACK}8bpp
STR_CONFIG_SETTING_VIDEO_8BPP_HELPTEXT :{BLACK}Eligere modum coloris 8bpp; hic sinit colores aquae moventes
STR_CONFIG_SETTING_VIDEO_16BPP :{BLACK}16bpp
STR_CONFIG_SETTING_VIDEO_16BPP_HELPTEXT :{BLACK}Eligere modum coloris 16bpp (necesse erit programma exire et resumere); hic NON sinit colores aquae moventes
STR_CONFIG_SETTING_VIDEO_24BPP :{BLACK}24bpp
STR_CONFIG_SETTING_VIDEO_24BPP_HELPTEXT :{BLACK}Eligere modum coloris 24bpp; hic sinit colores aquae moventes
STR_TABLET_CLOSE_TOOLTIP :{BLACK}Claudere omnes fenestras (sed non glutinosas)
STR_TABLET_SHIFT_TOOLTIP :{BLACK}Preme ut aestimatio actionis monstretur
STR_TABLET_CTRL_TOOLTIP :{BLACK}Utendum est ad actiones cum "CTRL"
STR_TUTORIAL_WINDOW_TITLE :{BLACK}Rudimenta visifica
STR_TUTORIAL_WINDOW_TOOLTIP :{BLACK}Aperire programma visificum ad rudimenta videnda
STR_TUTORIAL_ROADS_AND_STATIONS :{BLACK}Viae stationesque, emptio vehiculorum
STR_TUTORIAL_RAILWAYS :{BLACK}Ferriviae traminaque
STR_TUTORIAL_ROAD_VEHICLES :{BLACK}Vehicula viaria
STR_TUTORIAL_SHIPS :{BLACK}Naves navaliaque
STR_TUTORIAL_CARGO :{BLACK}Genera onerum
STR_SAVELOAD_LOAD_NETWORK_BUTTON :{BLACK}Legere e nebula
STR_SAVELOAD_LOAD_NETWORK_TOOLTIP :{BLACK}Arcessere ludum "e nebula" (i.e. ex Interreti)
STR_SAVELOAD_SAVE_NETWORK_BUTTON :{BLACK}Servare in nebula
STR_SAVELOAD_SAVE_NETWORK_TOOLTIP :{BLACK}Conservare ludum "in nebula" (i.e. in Interreti)

View File

@@ -4869,3 +4869,5 @@ STR_PLANE :{BLACK}{PLANE}
STR_SHIP :{BLACK}{SHIP}
STR_TOOLBAR_RAILTYPE_VELOCITY :{STRING} ({VELOCITY})
# Android strings

View File

@@ -5508,3 +5508,5 @@ STR_PLANE :{BLACK}{PLANE}
STR_SHIP :{BLACK}{SHIP}
STR_TOOLBAR_RAILTYPE_VELOCITY :{STRING} ({VELOCITY})
# Android strings

View File

@@ -4968,3 +4968,5 @@ STR_PLANE :{BLACK}{PLANE}
STR_SHIP :{BLACK}{SHIP}
STR_TOOLBAR_RAILTYPE_VELOCITY :{STRING} ({VELOCITY})
# Android strings

View File

@@ -4568,3 +4568,5 @@ STR_PLANE :{BLACK}{PLANE}
STR_SHIP :{BLACK}{SHIP}
STR_TOOLBAR_RAILTYPE_VELOCITY :{STRING} ({VELOCITY})
# Android strings

View File

@@ -4973,3 +4973,5 @@ STR_PLANE :{BLACK}{PLANE}
STR_SHIP :{BLACK}{SHIP}
STR_TOOLBAR_RAILTYPE_VELOCITY :{STRING} ({VELOCITY})
# Android strings

View File

@@ -4882,3 +4882,5 @@ STR_PLANE :{BLACK}{PLANE}
STR_SHIP :{BLACK}{SHIP}
STR_TOOLBAR_RAILTYPE_VELOCITY :{STRING} ({VELOCITY})
# Android strings

View File

@@ -5391,3 +5391,5 @@ STR_PLANE :{BLACK}{PLANE}
STR_SHIP :{BLACK}{SHIP}
STR_TOOLBAR_RAILTYPE_VELOCITY :{STRING} ({VELOCITY})
# Android strings

View File

@@ -4945,3 +4945,5 @@ STR_PLANE :{BLACK}{PLANE}
STR_SHIP :{BLACK}{SHIP}
STR_TOOLBAR_RAILTYPE_VELOCITY :{STRING} ({VELOCITY})
# Android strings

View File

@@ -4892,3 +4892,5 @@ STR_PLANE :{BLACK}{PLANE}
STR_SHIP :{BLACK}{SHIP}
STR_TOOLBAR_RAILTYPE_VELOCITY :{STRING} ({VELOCITY})
# Android strings

View File

@@ -5195,3 +5195,35 @@ STR_PLANE :{BLACK}{PLANE}
STR_SHIP :{BLACK}{SHIP}
STR_TOOLBAR_RAILTYPE_VELOCITY :{STRING} ({VELOCITY})
# Android strings
STR_ABOUT_MENU_TUTORIAL :{BLACK}Учебник
STR_SMALLMAP_TOOLTIP_SHOW_LEGEND :{BLACK}Показывать миникарту / легенду
STR_CONFIG_SETTING_VERTICAL_TOOLBAR :{BLACK}Вертикальное меню
STR_CONFIG_SETTING_VERTICAL_TOOLBAR_HELPTEXT :{BLACK}Меню разделено на два вертикальных меню по краям экрата
STR_CONFIG_SETTING_BUTTON_SIZE :{BLACK}Размер кнопок
STR_CONFIG_SETTING_BUTTON_SIZE_TOOLTIP :{BLACK}Размер элементов интерфейса
STR_CONFIG_SETTING_FONT_SIZE :{BLACK}Размер шрифта
STR_CONFIG_SETTING_FONT_SIZE_TOOLTIP :{BLACK}Размер всех шрифтов в игре
STR_CONFIG_SETTING_BUILD_CONFIRMATION :{BLACK}Подтверждать действия
STR_CONFIG_SETTING_BUILD_CONFIRMATION_HELPTEXT :{BLACK}Показывать окно подтверждения при постройки дорог и станций
STR_CONFIG_SETTING_VIDEO_8BPP :{BLACK}8 бит
STR_CONFIG_SETTING_VIDEO_8BPP_HELPTEXT :{BLACK}Установить глубину цвета в 16 бит на точку. Этот режим поддерживает анимацию воды
STR_CONFIG_SETTING_VIDEO_16BPP :{BLACK}16 бит
STR_CONFIG_SETTING_VIDEO_16BPP_HELPTEXT :{BLACK}Установить глубину цвета в 16 бит на точку. Это потребует перезапуска программы. Этот режим не поддерживает анимацию воды
STR_CONFIG_SETTING_VIDEO_24BPP :{BLACK}24 бит
STR_CONFIG_SETTING_VIDEO_24BPP_HELPTEXT :{BLACK}Установить глубину цвета в 24 бит на точку. Этот режим поддерживает анимацию воды
STR_TABLET_CLOSE_TOOLTIP :{BLACK}Закрыть все открытые окна (кроме закреплённых)
STR_TABLET_SHIFT_TOOLTIP :{BLACK}Использовать в качестве кнопки "SHIFT" (оценка стоимости)
STR_TABLET_CTRL_TOOLTIP :{BLACK}Использовать в качестве кнопки "CTRL"
STR_TUTORIAL_WINDOW_TITLE :{BLACK}Учебные видео
STR_TUTORIAL_WINDOW_TOOLTIP :{BLACK}Открыть видеоплеер для просмотра учебного видео
STR_TUTORIAL_ROADS_AND_STATIONS :{BLACK}Постройка дорог и терминалов, покупка автомобилей
STR_TUTORIAL_RAILWAYS :{BLACK}Железные дороги и поезда
STR_TUTORIAL_ROAD_VEHICLES :{BLACK}Автомобили
STR_TUTORIAL_SHIPS :{BLACK}Корабли и пристани
STR_TUTORIAL_CARGO :{BLACK}Грузы
STR_SAVELOAD_LOAD_NETWORK_BUTTON :{BLACK}Загрузка из сети
STR_SAVELOAD_LOAD_NETWORK_TOOLTIP :{BLACK}Загрузить игру из сетевого хранилища
STR_SAVELOAD_SAVE_NETWORK_BUTTON :{BLACK}Сохранение в сети
STR_SAVELOAD_SAVE_NETWORK_TOOLTIP :{BLACK}Сохранить игру в сетевое хранилище

View File

@@ -5179,3 +5179,29 @@ STR_PLANE :{BLACK}{PLANE}
STR_SHIP :{BLACK}{SHIP}
STR_TOOLBAR_RAILTYPE_VELOCITY :{STRING} ({VELOCITY})
# Android strings
STR_ABOUT_MENU_TUTORIAL :{BLACK}Priručnik
STR_SMALLMAP_TOOLTIP_SHOW_LEGEND :{BLACK}Prikaži legendu mape / opis simbola na mapi
STR_CONFIG_SETTING_VERTICAL_TOOLBAR :{BLACK}Vertikalna alatna traka
STR_CONFIG_SETTING_VERTICAL_TOOLBAR_HELPTEXT :{BLACK}Glavna alatna traka je podeljena na dve okomite alatne trake na rubovima ekrana
STR_CONFIG_SETTING_BUTTON_SIZE :{BLACK}Veličina dugmeta
STR_CONFIG_SETTING_BUTTON_SIZE_TOOLTIP :{BLACK}Veličina svih elemenata korisničkog interfejsa
STR_CONFIG_SETTING_FONT_SIZE :{BLACK}Veličina slova
STR_CONFIG_SETTING_FONT_SIZE_TOOLTIP :{BLACK}Veličina svih slova u igri
STR_CONFIG_SETTING_BUILD_CONFIRMATION :{BLACK}Potvrdi akcije
STR_CONFIG_SETTING_BUILD_CONFIRMATION_HELPTEXT :{BLACK}Prikaži dijalog potvrde pri gradnji drumova i stanica
STR_TABLET_CLOSE_TOOLTIP :{BLACK}Zatvori sve otvorene prozore (osim zakačenih)
STR_TABLET_SHIFT_TOOLTIP :{BLACK}Pritisnite za dobivanje procene troškova odabrane akcije
STR_TABLET_CTRL_TOOLTIP :{BLACK}Koristite za sve akcije za koje se koristi tipka "CTRL"
STR_TUTORIAL_WINDOW_TITLE :{BLACK}Video za učenje
STR_TUTORIAL_WINDOW_TOOLTIP :{BLACK}Otvori video plejer za gledanje videa za učenje
STR_TUTORIAL_ROADS_AND_STATIONS :{BLACK}Gradnja cesta i stanica, kupovina vozila
STR_TUTORIAL_RAILWAYS :{BLACK}Šine i vozovi
STR_TUTORIAL_ROAD_VEHICLES :{BLACK}Drumska vozila
STR_TUTORIAL_SHIPS :{BLACK}Brodovi i dokovi
STR_TUTORIAL_CARGO :{BLACK}Tip tereta
STR_SAVELOAD_LOAD_NETWORK_BUTTON :{BLACK}Učitaj igru sa mreže
STR_SAVELOAD_LOAD_NETWORK_TOOLTIP :{BLACK}Učitaj igru sa mrežne pohrane podataka
STR_SAVELOAD_SAVE_NETWORK_BUTTON :{BLACK}Spremi igru na mrežu
STR_SAVELOAD_SAVE_NETWORK_TOOLTIP :{BLACK}Spremi igru na mrežu

View File

@@ -4968,3 +4968,5 @@ STR_PLANE :{BLACK}{PLANE}
STR_SHIP :{BLACK}{SHIP}
STR_TOOLBAR_RAILTYPE_VELOCITY :{STRING} ({VELOCITY})
# Android strings

View File

@@ -5037,3 +5037,5 @@ STR_PLANE :{BLACK}{PLANE}
STR_SHIP :{BLACK}{SHIP}
STR_TOOLBAR_RAILTYPE_VELOCITY :{STRING} ({VELOCITY})
# Android strings

View File

@@ -5095,3 +5095,5 @@ STR_PLANE :{BLACK}{PLANE}
STR_SHIP :{BLACK}{SHIP}
STR_TOOLBAR_RAILTYPE_VELOCITY :{STRING} ({VELOCITY})
# Android strings

View File

@@ -4969,3 +4969,5 @@ STR_PLANE :{BLACK}{PLANE}
STR_SHIP :{BLACK}{SHIP}
STR_TOOLBAR_RAILTYPE_VELOCITY :{STRING} ({VELOCITY})
# Android strings

5003
src/lang/spanish_MX.txt Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -4968,3 +4968,5 @@ STR_PLANE :{BLACK}{PLANE}
STR_SHIP :{BLACK}{SHIP}
STR_TOOLBAR_RAILTYPE_VELOCITY :{STRING} ({VELOCITY})
# Android strings

View File

@@ -4503,3 +4503,5 @@ STR_PLANE :{BLACK}{PLANE}
STR_SHIP :{BLACK}{SHIP}
STR_TOOLBAR_RAILTYPE_VELOCITY :{STRING} ({VELOCITY})
# Android strings

View File

@@ -4867,3 +4867,5 @@ STR_PLANE :{BLACK}{PLANE}
STR_SHIP :{BLACK}{SHIP}
STR_TOOLBAR_RAILTYPE_VELOCITY :{STRING} ({VELOCITY})
# Android strings

View File

@@ -4968,3 +4968,5 @@ STR_PLANE :{BLACK}{PLANE}
STR_SHIP :{BLACK}{SHIP}
STR_TOOLBAR_RAILTYPE_VELOCITY :{STRING} ({VELOCITY})
# Android strings

View File

@@ -4979,3 +4979,5 @@ STR_PLANE :{BLACK}{PLANE}
STR_SHIP :{BLACK}{SHIP}
STR_TOOLBAR_RAILTYPE_VELOCITY :{STRING} ({VELOCITY})
# Android strings

View File

@@ -5136,3 +5136,5 @@ STR_PLANE :{BLACK}{PLANE}
STR_SHIP :{BLACK}{SHIP}
STR_TOOLBAR_RAILTYPE_VELOCITY :{STRING} ({VELOCITY})
# Android strings

View File

@@ -4968,3 +4968,5 @@ STR_PLANE :{BLACK}{PLANE}
STR_SHIP :{BLACK}{SHIP}
STR_TOOLBAR_RAILTYPE_VELOCITY :{STRING} ({VELOCITY})
# Android strings

View File

@@ -4968,3 +4968,5 @@ STR_PLANE :{BLACK}{PLANE}
STR_SHIP :{BLACK}{SHIP}
STR_TOOLBAR_RAILTYPE_VELOCITY :{STRING} ({VELOCITY})
# Android strings

View File

@@ -33,6 +33,7 @@
#include "tilehighlight_func.h"
#include "hotkeys.h"
#include "tutorial_gui.h"
#include "gui.h"
#include "saveload/saveload.h"
@@ -565,6 +566,12 @@ void SetupColoursAndInitialWindow()
case GM_MENU:
ShowSelectGameWindow();
ShowTutorialWindowOnceAfterInstall();
if (getenv("SDL_RESTART_PARAMS") != NULL) {
static int counter = 5; // This part of code is called several times during startup, which closes all windows, so we need to put random hacks here
counter--;
ShowGameOptions();
if (counter == 0) unsetenv("SDL_RESTART_PARAMS");
}
break;
case GM_NORMAL:

View File

@@ -1717,7 +1717,7 @@ struct NetworkClientListPopupWindow : Window {
ClientList_Action_Proc *proc; ///< Action to execute
};
uint sel_index;
int sel_index;
ClientID client_id;
Point desired_location;
SmallVector<ClientListAction, 2> actions; ///< Actions to execute
@@ -1736,10 +1736,10 @@ struct NetworkClientListPopupWindow : Window {
NetworkClientListPopupWindow(WindowDesc *desc, int x, int y, ClientID client_id) :
Window(desc),
sel_index(0), client_id(client_id)
sel_index(-1), client_id(client_id)
{
this->desired_location.x = x;
this->desired_location.y = y;
this->desired_location.x = x - GetMinSizing(NWST_STEP, FONT_HEIGHT_NORMAL);
this->desired_location.y = y + GetMinSizing(NWST_STEP, FONT_HEIGHT_NORMAL) / 2;
const NetworkClientInfo *ci = NetworkClientInfo::GetByClientID(client_id);
@@ -1806,24 +1806,16 @@ struct NetworkClientListPopupWindow : Window {
}
}
virtual void OnMouseLoop()
virtual void OnClick(Point pt, int widget, int click_count)
{
/* We selected an action */
uint index = (_cursor.pos.y - this->top - WD_FRAMERECT_TOP) / GetMinSizing(NWST_STEP, FONT_HEIGHT_NORMAL);
int index = (pt.y - WD_FRAMERECT_TOP) / GetMinSizing(NWST_STEP, FONT_HEIGHT_NORMAL);
if (_left_button_down) {
if (index == this->sel_index || index >= this->actions.Length()) return;
this->sel_index = index;
this->SetDirty();
} else {
if (index < this->actions.Length() && _cursor.pos.y >= this->top) {
const NetworkClientInfo *ci = NetworkClientInfo::GetByClientID(this->client_id);
if (ci != NULL) this->actions[index].proc(ci);
}
DeleteWindowByClass(WC_CLIENT_LIST_POPUP);
if (index >= 0 && index < (int)this->actions.Length()) {
const NetworkClientInfo *ci = NetworkClientInfo::GetByClientID(this->client_id);
if (ci != NULL) this->actions[index].proc(ci);
}
DeleteWindowByClass(WC_CLIENT_LIST_POPUP);
}
};
@@ -1863,6 +1855,8 @@ struct NetworkClientListWindow : Window {
uint server_client_width;
uint line_height;
uint line_width;
enum { MAX_ROWS = 6 }; // Split the list in two if it does not fit the screen
Dimension icon_size;
@@ -1886,15 +1880,16 @@ struct NetworkClientListWindow : Window {
if (ci->client_playas != COMPANY_INACTIVE_CLIENT) num++;
}
num *= GetMinSizing(NWST_STEP, this->line_height);
int cols = 1 + (num - 1) / MAX_ROWS;
cols *= this->line_width;
num = min(num, MAX_ROWS);
num *= this->line_height;
int diff = (num + WD_FRAMERECT_TOP + WD_FRAMERECT_BOTTOM) - (this->GetWidget<NWidgetBase>(WID_CL_PANEL)->current_y);
int diffx = (cols + WD_FRAMERECT_LEFT + WD_FRAMERECT_RIGHT) - (this->GetWidget<NWidgetBase>(WID_CL_PANEL)->current_x);
int diffy = (num + WD_FRAMERECT_TOP + WD_FRAMERECT_BOTTOM) - (this->GetWidget<NWidgetBase>(WID_CL_PANEL)->current_y);
/* If height is changed */
if (diff != 0) {
ResizeWindow(this, 0, diff);
if (this->height + GetMinSizing(NWST_STEP, FONT_HEIGHT_NORMAL) >= _cur_resolution.height) {
ResizeWindow(this, 0, _cur_resolution.height - this->height - GetMinSizing(NWST_STEP, FONT_HEIGHT_NORMAL));
}
if (diffx != 0 || diffy != 0) {
ResizeWindow(this, diffx, diffy);
return false;
}
return true;
@@ -1907,6 +1902,7 @@ struct NetworkClientListWindow : Window {
this->server_client_width = max(GetStringBoundingBox(STR_NETWORK_SERVER).width, GetStringBoundingBox(STR_NETWORK_CLIENT).width) + WD_FRAMERECT_RIGHT;
this->icon_size = GetSpriteSize(SPR_COMPANY_ICON);
this->line_height = max(this->icon_size.height + 2U, (uint)FONT_HEIGHT_NORMAL);
this->line_height = GetMinSizing(NWST_STEP, this->line_height);
uint width = 100; // Default width
const NetworkClientInfo *ci;
@@ -1914,7 +1910,7 @@ struct NetworkClientListWindow : Window {
width = max(width, GetStringBoundingBox(ci->client_name).width);
}
size->width = WD_FRAMERECT_LEFT + this->server_client_width + this->icon_size.width + WD_FRAMERECT_LEFT + width + WD_FRAMERECT_RIGHT;
this->line_width = this->server_client_width + this->icon_size.width + WD_FRAMERECT_LEFT + width + WD_FRAMERECT_RIGHT;
}
virtual void OnPaint()
@@ -1938,19 +1934,21 @@ struct NetworkClientListWindow : Window {
uint right = r.right - WD_FRAMERECT_RIGHT;
uint type_icon_width = this->server_client_width + this->icon_size.width + WD_FRAMERECT_LEFT;
uint type_left = rtl ? right - this->server_client_width : left;
uint type_right = rtl ? right : left + this->server_client_width - 1;
uint icon_left = rtl ? right - type_icon_width + WD_FRAMERECT_LEFT : left + this->server_client_width;
uint name_left = rtl ? left : left + type_icon_width;
uint name_right = rtl ? right - type_icon_width : right;
int i = 0;
const NetworkClientInfo *ci;
FOR_ALL_CLIENT_INFOS(ci) {
uint type_left = rtl ? right - this->server_client_width : left;
uint type_right = rtl ? right : left + this->server_client_width - 1;
uint icon_left = rtl ? right - type_icon_width + WD_FRAMERECT_LEFT : left + this->server_client_width;
uint name_left = rtl ? right - this->line_width : left + type_icon_width;
uint name_right = rtl ? right - type_icon_width : left + this->line_width;
TextColour colour;
if (this->selected_item == i++) { // Selected item, highlight it
GfxFillRect(r.left + 1, y, r.right - 1, y + this->line_height - 1, PC_BLACK);
if (rtl) {
GfxFillRect(right - this->line_width, y, right + WD_FRAMERECT_RIGHT - 1, y + this->line_height - 1, PC_BLACK);
} else {
GfxFillRect(left - WD_FRAMERECT_LEFT + 1, y, left + this->line_width, y + this->line_height - 1, PC_BLACK);
}
colour = TC_WHITE;
} else {
colour = TC_BLACK;
@@ -1968,6 +1966,14 @@ struct NetworkClientListWindow : Window {
DrawString(name_left, name_right, y + text_offset, ci->client_name, colour);
y += line_height;
if (i % MAX_ROWS == 0 && i > 1) {
y = r.top + WD_FRAMERECT_TOP;
if (rtl) {
right -= this->line_width;
} else {
left += this->line_width;
}
}
}
}
@@ -2000,7 +2006,7 @@ struct NetworkClientListWindow : Window {
pt.y -= this->GetWidget<NWidgetBase>(WID_CL_PANEL)->pos_y;
int item = -1;
if (IsInsideMM(pt.y, WD_FRAMERECT_TOP, this->GetWidget<NWidgetBase>(WID_CL_PANEL)->current_y - WD_FRAMERECT_BOTTOM)) {
item = (pt.y - WD_FRAMERECT_TOP) / GetMinSizing(NWST_STEP, this->line_height);
item = (pt.y - WD_FRAMERECT_TOP) / this->line_height + ((pt.x - WD_FRAMERECT_LEFT) / this->line_width) * MAX_ROWS;
}
/* It did not change.. no update! */

View File

@@ -770,7 +770,7 @@ int openttd_main(int argc, char *argv[])
GfxInitPalettes();
DEBUG(misc, 1, "Loading blitter...");
if (blitter == NULL && _ini_blitter != NULL) blitter = stredup(_ini_blitter);
if (_ini_blitter != NULL) blitter = stredup(_ini_blitter);
_blitter_autodetected = StrEmpty(blitter);
/* Activate the initial blitter.
* This is only some initial guess, after NewGRFs have been loaded SwitchNewGRFBlitter may switch to a different one.

View File

@@ -802,8 +802,8 @@ public:
{
switch (widget) {
case WID_O_ORDER_LIST:
resize->height = FONT_HEIGHT_NORMAL;
size->height = 6 * resize->height + WD_FRAMERECT_TOP + WD_FRAMERECT_BOTTOM;
resize->height = GetMinSizing(NWST_STEP, FONT_HEIGHT_NORMAL);
size->height = 4 * resize->height + WD_FRAMERECT_TOP + WD_FRAMERECT_BOTTOM;
break;
case WID_O_COND_VARIABLE: {
@@ -1089,8 +1089,8 @@ public:
int index_column_width = GetStringBoundingBox(STR_ORDER_INDEX).width + 2 * GetSpriteSize(rtl ? SPR_ARROW_RIGHT : SPR_ARROW_LEFT).width + 3;
int middle = rtl ? r.right - WD_FRAMETEXT_RIGHT - index_column_width : r.left + WD_FRAMETEXT_LEFT + index_column_width;
int y = r.top + WD_FRAMERECT_TOP;
int line_height = this->GetWidget<NWidgetBase>(WID_O_ORDER_LIST)->resize_y;
int y = Center(r.top + WD_FRAMERECT_TOP, line_height);
int i = this->vscroll->GetPosition();
const Order *order = this->vehicle->GetOrder(i);
@@ -1115,7 +1115,7 @@ public:
}
/* Reset counters for drawing the orders. */
y = r.top + WD_FRAMERECT_TOP;
y = Center(r.top + WD_FRAMERECT_TOP, line_height);
i = this->vscroll->GetPosition();
order = this->vehicle->GetOrder(i);
}

View File

@@ -280,12 +280,15 @@ static bool RailToolbar_CtrlChanged(Window *w)
if (w->IsWidgetDisabled(WID_RAT_REMOVE)) return false;
/* allow ctrl to switch remove mode only for these widgets */
// This breaks joining rail stations functionality on Android
/*
for (uint i = WID_RAT_BUILD_NS; i <= WID_RAT_BUILD_STATION; i++) {
if ((i <= WID_RAT_AUTORAIL || i >= WID_RAT_BUILD_WAYPOINT) && w->IsWidgetLowered(i)) {
ToggleRailButton_Remove(w);
return true;
}
}
*/
return false;
}
@@ -652,6 +655,7 @@ struct BuildRailToolbarWindow : Window {
default: NOT_REACHED();
}
MoveAllWindowsOffScreen();
}
virtual void OnPlaceDrag(ViewportPlaceMethod select_method, ViewportDragDropSelectionProcess select_proc, Point pt)
@@ -752,11 +756,13 @@ struct BuildRailToolbarWindow : Window {
CcRailDepot);
break;
}
MoveAllHiddenWindowsBackToScreen();
}
}
virtual void OnPlaceObjectAbort()
{
MoveAllHiddenWindowsBackToScreen();
this->RaiseButtons();
this->DisableWidget(WID_RAT_REMOVE);
this->SetWidgetDirty(WID_RAT_REMOVE);

View File

@@ -1,4 +1,4 @@
/* $Id$ */
/* $Id: rev.cpp.in 27532 2016-04-01 18:32:32Z frosch $ */
/*
* This file is part of OpenTTD.
@@ -72,7 +72,7 @@ const byte _openttd_revision_modified = !!MODIFIED!!;
* final release will always have a lower version number than the released
* version, thus making comparisons on specific revisions easy.
*/
const uint32 _openttd_newgrf_version = 1 << 28 | 6 << 24 | 0 << 20 | 0 << 19 | (!!REVISION!! & ((1 << 19) - 1));
const uint32 _openttd_newgrf_version = 1 << 28 | 6 << 24 | 0 << 20 | 1 << 19 | (!!REVISION!! & ((1 << 19) - 1));
#ifdef __MORPHOS__
/**

View File

@@ -282,12 +282,15 @@ static bool RoadToolbar_CtrlChanged(Window *w)
if (w->IsWidgetDisabled(WID_ROT_REMOVE)) return false;
/* allow ctrl to switch remove mode only for these widgets */
// This breaks joining stations functionality on Android
/*
for (uint i = WID_ROT_ROAD_X; i <= WID_ROT_AUTOROAD; i++) {
if (w->IsWidgetLowered(i)) {
ToggleRoadButton_Remove(w);
return true;
}
}
*/
return false;
}
@@ -525,10 +528,12 @@ struct BuildRoadToolbarWindow : Window {
default: NOT_REACHED();
}
MoveAllWindowsOffScreen();
}
virtual void OnPlaceObjectAbort()
{
MoveAllHiddenWindowsBackToScreen();
this->RaiseButtons();
this->SetWidgetsDisabledState(true,
WID_ROT_REMOVE,
@@ -669,6 +674,7 @@ struct BuildRoadToolbarWindow : Window {
CMD_BUILD_ROAD_DEPOT | CMD_MSG(_road_type_infos[_cur_roadtype].err_depot), CcRoadDepot);
break;
}
MoveAllHiddenWindowsBackToScreen();
}
}
@@ -1036,10 +1042,6 @@ struct BuildRoadStationWindow : public PickerWindowBase {
{
if (!IsInsideMM(widget, WID_BROS_STATION_NE, WID_BROS_STATION_Y + 1)) return;
int x = Center(r.left + TILE_PIXELS, r.right - r.left, 2 * TILE_PIXELS);
/* Height of bus/truck sprite in OpenGFX is TILE_PIXELS + 11. */
int y = Center(r.top + WD_FRAMERECT_TOP - WD_MATRIX_BOTTOM + IsWidgetLowered(widget) + 11, r.bottom - r.top, TILE_PIXELS + 11);
StationType st = (this->window_class == WC_BUS_STATION) ? STATION_BUS : STATION_TRUCK;
StationPickerDrawSprite(r.left + 1 + ScaleGUITrad(31), r.bottom - ScaleGUITrad(31), st, INVALID_RAILTYPE, widget < WID_BROS_STATION_X ? ROADTYPE_ROAD : _cur_roadtype, widget - WID_BROS_STATION_NE);
}

View File

@@ -17,7 +17,7 @@
*
* \b 1.6.0
*
* 1.6.0 is not yet released. The following changes are not set in stone yet.
* No changes
*
* \b 1.5.3
*

View File

@@ -17,7 +17,7 @@
*
* \b 1.6.0
*
* 1.6.0 is not yet released. The following changes are not set in stone yet.
* No changes
*
* \b 1.5.3
*

View File

@@ -37,11 +37,16 @@
#include "stringfilter_type.h"
#include "querystring_gui.h"
#include "fontcache.h"
#include "settings_func.h"
#include <vector>
#include "safeguards.h"
#ifdef __ANDROID__
#include <SDL_android.h>
#endif
enum { MIN_BUTTON_SIZE = 10, MAX_BUTTON_SIZE = 40 };
static const StringID _driveside_dropdown[] = {
@@ -476,6 +481,45 @@ struct GameOptionsWindow : Window {
ReconstructUserInterface();
break;
case WID_GO_BUILD_CONFIRMATION:
_settings_client.gui.build_confirmation = !_settings_client.gui.build_confirmation;
this->SetWidgetLoweredState(WID_GO_BUILD_CONFIRMATION, _settings_client.gui.build_confirmation);
this->SetDirty();
break;
case WID_GO_8BPP_BUTTON:
if (this->IsWidgetLowered(WID_GO_8BPP_BUTTON)) break;
free(_ini_blitter);
_ini_blitter = stredup("8bpp-optimized");
SaveToConfig();
#ifdef __ANDROID__
SDL_ANDROID_SetConfigOption(SDL_ANDROID_CONFIG_VIDEO_DEPTH_BPP, 16);
SDL_ANDROID_RestartMyself("restart-settings"); // We terminate here, no need to update widget state
#endif
break;
case WID_GO_16BPP_BUTTON:
if (this->IsWidgetLowered(WID_GO_16BPP_BUTTON)) break;
free(_ini_blitter);
_ini_blitter = stredup("16bpp-simple");
SaveToConfig();
#ifdef __ANDROID__
SDL_ANDROID_SetConfigOption(SDL_ANDROID_CONFIG_VIDEO_DEPTH_BPP, 16);
SDL_ANDROID_RestartMyself("restart-settings"); // We terminate here, no need to update widget state
#endif
break;
case WID_GO_32BPP_BUTTON:
if (this->IsWidgetLowered(WID_GO_32BPP_BUTTON)) break;
free(_ini_blitter);
_ini_blitter = stredup("32bpp-anim");
SaveToConfig();
#ifdef __ANDROID__
SDL_ANDROID_SetConfigOption(SDL_ANDROID_CONFIG_VIDEO_DEPTH_BPP, 24);
SDL_ANDROID_RestartMyself("restart-settings"); // We terminate here, no need to update widget state
#endif
break;
default: {
int selected;
DropDownList *list = this->BuildDropDownList(widget, &selected);
@@ -566,6 +610,7 @@ struct GameOptionsWindow : Window {
_freetype.large.size = _freetype.medium.size * 16 / 12;
_freetype.mono.size = _freetype.medium.size;
ReconstructUserInterface();
break;
case WID_GO_GUI_ZOOM_DROPDOWN:
GfxClearSpriteCache();
@@ -603,8 +648,12 @@ struct GameOptionsWindow : Window {
virtual void OnInvalidateData(int data = 0, bool gui_scope = true)
{
if (!gui_scope) return;
this->SetWidgetLoweredState(WID_GO_FULLSCREEN_BUTTON, _fullscreen);
this->SetWidgetLoweredState(WID_GO_VERTICAL_TOOLBAR, _settings_client.gui.vertical_toolbar);
//this->SetWidgetLoweredState(WID_GO_FULLSCREEN_BUTTON, _fullscreen);
//this->SetWidgetLoweredState(WID_GO_VERTICAL_TOOLBAR, _settings_client.gui.vertical_toolbar);
this->SetWidgetLoweredState(WID_GO_BUILD_CONFIRMATION, _settings_client.gui.build_confirmation);
this->SetWidgetLoweredState(WID_GO_8BPP_BUTTON, _ini_blitter != NULL && strcmp(_ini_blitter, "8bpp-optimized") == 0);
this->SetWidgetLoweredState(WID_GO_16BPP_BUTTON, _ini_blitter == NULL || strcmp(_ini_blitter, "16bpp-simple") == 0);
this->SetWidgetLoweredState(WID_GO_32BPP_BUTTON, _ini_blitter != NULL && strcmp(_ini_blitter, "32bpp-anim") == 0);
bool missing_files = BaseGraphics::GetUsedSet()->GetNumMissing() == 0;
this->GetWidget<NWidgetCore>(WID_GO_BASE_GRF_STATUS)->SetDataTip(missing_files ? STR_EMPTY : STR_GAME_OPTIONS_BASE_GRF_STATUS, STR_NULL);
@@ -637,8 +686,9 @@ static const NWidgetPart _nested_game_options_widgets[] = {
NWidget(WWT_FRAME, COLOUR_GREY), SetDataTip(STR_GAME_OPTIONS_RESOLUTION, STR_NULL),
NWidget(WWT_DROPDOWN, COLOUR_GREY, WID_GO_RESOLUTION_DROPDOWN), SetMinimalSize(150, 12), SetDataTip(STR_BLACK_STRING, STR_GAME_OPTIONS_RESOLUTION_TOOLTIP), SetFill(1, 0), SetPadding(0, 0, 3, 0),
NWidget(NWID_HORIZONTAL),
NWidget(WWT_TEXT, COLOUR_GREY), SetMinimalSize(0, 12), SetFill(1, 0), SetDataTip(STR_GAME_OPTIONS_FULLSCREEN, STR_NULL),
NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_GO_FULLSCREEN_BUTTON), SetMinimalSize(21, 9), SetDataTip(STR_EMPTY, STR_GAME_OPTIONS_FULLSCREEN_TOOLTIP),
NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_GO_8BPP_BUTTON), SetMinimalSize(9, 9), SetDataTip(STR_CONFIG_SETTING_VIDEO_8BPP, STR_CONFIG_SETTING_VIDEO_8BPP_HELPTEXT),
NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_GO_16BPP_BUTTON), SetMinimalSize(9, 9), SetDataTip(STR_CONFIG_SETTING_VIDEO_16BPP, STR_CONFIG_SETTING_VIDEO_16BPP_HELPTEXT),
NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_GO_32BPP_BUTTON), SetMinimalSize(9, 9), SetDataTip(STR_CONFIG_SETTING_VIDEO_24BPP, STR_CONFIG_SETTING_VIDEO_24BPP_HELPTEXT),
EndContainer(),
EndContainer(),
NWidget(WWT_FRAME, COLOUR_GREY), SetDataTip(STR_GAME_OPTIONS_GUI_ZOOM_FRAME, STR_NULL),
@@ -646,8 +696,10 @@ static const NWidgetPart _nested_game_options_widgets[] = {
EndContainer(),
NWidget(WWT_FRAME, COLOUR_GREY),
NWidget(NWID_HORIZONTAL),
NWidget(WWT_TEXT, COLOUR_GREY), SetMinimalSize(0, 12), SetFill(1, 0), SetDataTip(STR_CONFIG_SETTING_VERTICAL_TOOLBAR, STR_NULL),
NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_GO_VERTICAL_TOOLBAR), SetMinimalSize(21, 9), SetDataTip(STR_EMPTY, STR_CONFIG_SETTING_VERTICAL_TOOLBAR_HELPTEXT),
//NWidget(WWT_TEXT, COLOUR_GREY), SetMinimalSize(0, 12), SetFill(1, 0), SetDataTip(STR_CONFIG_SETTING_VERTICAL_TOOLBAR, STR_NULL),
//NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_GO_VERTICAL_TOOLBAR), SetMinimalSize(21, 9), SetDataTip(STR_EMPTY, STR_CONFIG_SETTING_VERTICAL_TOOLBAR_HELPTEXT),
NWidget(WWT_TEXT, COLOUR_GREY), SetMinimalSize(0, 12), SetFill(1, 0), SetDataTip(STR_CONFIG_SETTING_BUILD_CONFIRMATION, STR_NULL),
NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_GO_BUILD_CONFIRMATION), SetMinimalSize(21, 9), SetDataTip(STR_EMPTY, STR_CONFIG_SETTING_BUILD_CONFIRMATION_HELPTEXT),
EndContainer(),
EndContainer(),
EndContainer(),
@@ -1597,6 +1649,7 @@ static SettingsContainer &GetSettingsTree()
}
interface->Add(new SettingEntry("gui.autosave"));
interface->Add(new SettingEntry("gui.vertical_toolbar"));
interface->Add(new SettingEntry("gui.toolbar_pos"));
interface->Add(new SettingEntry("gui.statusbar_pos"));
interface->Add(new SettingEntry("gui.prefer_teamchat"));

View File

@@ -78,6 +78,7 @@ struct GUISettings {
uint8 order_review_system; ///< perform order reviews on vehicles
bool vehicle_income_warn; ///< if a vehicle isn't generating income, show a warning
bool vertical_toolbar; ///< main toolbar is split into two vertical toolbars
bool build_confirmation; ///< show confirmation dialog when building roads and stations
uint min_button; ///< min size of most button widgets
uint min_step; ///< min size of scrollbar/dropdown elements
bool show_finances; ///< show finances at end of year

View File

@@ -267,7 +267,7 @@ struct SignListWindow : Window, SignList {
case WID_SIL_LIST: {
Dimension spr_dim = GetSpriteSize(SPR_COMPANY_ICON);
this->text_offset = WD_FRAMETEXT_LEFT + spr_dim.width + 2; // 2 pixels space between icon and the sign text.
resize->height = max<uint>(FONT_HEIGHT_NORMAL, spr_dim.height);
resize->height = max<uint>(GetMinSizing(NWST_STEP), spr_dim.height);
Dimension d = {(uint)(this->text_offset + WD_FRAMETEXT_RIGHT), WD_FRAMERECT_TOP + 5 * resize->height + WD_FRAMERECT_BOTTOM};
*size = maxdim(*size, d);
break;

View File

@@ -37,7 +37,7 @@ static int _smallmap_company_count; ///< Number of entries in the owner legend.
static int _smallmap_cargo_count; ///< Number of cargos in the link stats legend.
/** Link stat colours shown in legenda. */
static uint8 _linkstat_colours_in_legenda[] = {0, 1, 3, 5, 7, 9, 11};
static uint8 _linkstat_colours_in_legenda[] = {0, 1, 3, 5, 7};
static const int NUM_NO_COMPANY_ENTRIES = 4; ///< Number of entries in the owner legend that are not companies.
@@ -85,12 +85,12 @@ static LegendAndColour _legend_land_contours[] = {
MC(false),
MC(false),
MC(false),
MC(false),
MC(true),
MC(false),
MC(false),
MC(false),
MC(false),
MC(true),
MC(false),
MKEND()
};
@@ -125,12 +125,13 @@ static const LegendAndColour _legend_vegetation[] = {
MK(PC_BARE_LAND, STR_SMALLMAP_LEGENDA_BARE_LAND),
MK(PC_FIELDS, STR_SMALLMAP_LEGENDA_FIELDS),
MK(PC_TREES, STR_SMALLMAP_LEGENDA_TREES),
MK(PC_GREEN, STR_SMALLMAP_LEGENDA_FOREST),
MS(PC_GREY, STR_SMALLMAP_LEGENDA_ROCKS),
MS(PC_GREEN, STR_SMALLMAP_LEGENDA_FOREST),
MK(PC_GREY, STR_SMALLMAP_LEGENDA_ROCKS),
MK(PC_ORANGE, STR_SMALLMAP_LEGENDA_DESERT),
MK(PC_LIGHT_BLUE, STR_SMALLMAP_LEGENDA_SNOW),
MK(PC_BLACK, STR_SMALLMAP_LEGENDA_TRANSPORT_ROUTES),
MS(PC_BLACK, STR_SMALLMAP_LEGENDA_TRANSPORT_ROUTES),
MK(PC_DARK_RED, STR_SMALLMAP_LEGENDA_BUILDINGS_INDUSTRIES),
MKEND()
};
@@ -145,6 +146,7 @@ static LegendAndColour _legend_land_owners[NUM_NO_COMPANY_ENTRIES + MAX_COMPANIE
};
#undef MK
#undef MKB
#undef MC
#undef MS
#undef MO
@@ -185,7 +187,7 @@ void BuildIndustriesLegend()
_legend_from_industries[j].colour = indsp->map_colour;
_legend_from_industries[j].type = ind;
_legend_from_industries[j].show_on_map = true;
_legend_from_industries[j].col_break = false;
_legend_from_industries[j].col_break = j > 0 && j % lengthof(_linkstat_colours_in_legenda) == 0;
_legend_from_industries[j].end = false;
/* Store widget number for this industry type. */
@@ -216,6 +218,7 @@ void BuildLinkStatsLegend()
_legend_linkstats[i].colour = cs->legend_colour;
_legend_linkstats[i].type = cs->Index();
_legend_linkstats[i].show_on_map = true;
_legend_linkstats[i].col_break = i > 0 && i % lengthof(_linkstat_colours_in_legenda) == 0;
}
_legend_linkstats[i].col_break = true;
@@ -312,7 +315,7 @@ void BuildLandLegend()
uint delta = deltas[i][1];
int total_entries = (_settings_game.construction.max_heightlevel / delta) + 1;
int rows = CeilDiv(total_entries, 2);
int rows = lengthof(_linkstat_colours_in_legenda);
int j = 0;
for (i = 0; i < lengthof(_legend_land_contours) - 1 && j < total_entries; i++) {
@@ -340,7 +343,7 @@ void BuildOwnerLegend()
_legend_land_owners[i].colour = _colour_gradient[c->colour][5];
_legend_land_owners[i].company = c->index;
_legend_land_owners[i].show_on_map = true;
_legend_land_owners[i].col_break = false;
_legend_land_owners[i].col_break = i > 0 && i % lengthof(_linkstat_colours_in_legenda) == 0;
_legend_land_owners[i].end = false;
_company_to_list_pos[c->index] = i;
i++;
@@ -1037,14 +1040,16 @@ void SmallMapWindow::SetupWidgetData()
}
this->GetWidget<NWidgetCore>(WID_SM_LEGEND)->SetDataTip(STR_NULL, legend_tooltip);
/*
this->GetWidget<NWidgetCore>(WID_SM_ENABLE_ALL)->SetDataTip(STR_SMALLMAP_ENABLE_ALL, enable_all_tooltip);
this->GetWidget<NWidgetCore>(WID_SM_DISABLE_ALL)->SetDataTip(STR_SMALLMAP_DISABLE_ALL, disable_all_tooltip);
this->GetWidget<NWidgetStacked>(WID_SM_SELECT_BUTTONS)->SetDisplayedPlane(plane);
*/
}
SmallMapWindow::SmallMapWindow(WindowDesc *desc, int window_number) :
Window(desc),
show_legend(false),
show_legend(true),
row_height(max(GetMinSizing(NWST_STEP, FONT_HEIGHT_SMALL) * 2 / 3, uint(FONT_HEIGHT_SMALL))), // Default spacing makes legend too tall - shrink it by 1/3
refresh(FORCE_REFRESH_PERIOD)
{
@@ -1055,9 +1060,10 @@ SmallMapWindow::SmallMapWindow(WindowDesc *desc, int window_number) :
this->RebuildColourIndexIfNecessary();
this->SetWidgetLoweredState(WID_SM_SHOW_HEIGHT, _smallmap_show_heightmap);
//this->SetWidgetLoweredState(WID_SM_SHOW_HEIGHT, _smallmap_show_heightmap);
this->SetWidgetLoweredState(WID_SM_TOGGLETOWNNAME, this->show_towns);
this->SetWidgetLoweredState(WID_SM_SHOW_LEGEND, this->show_legend);
this->SetupWidgetData();
@@ -1133,7 +1139,7 @@ void SmallMapWindow::RebuildColourIndexIfNecessary()
}
} else {
if (tbl->col_break) {
this->min_number_of_fixed_rows = max(this->min_number_of_fixed_rows, height);
//this->min_number_of_fixed_rows = max(this->min_number_of_fixed_rows, height);
height = 0;
num_columns++;
}
@@ -1142,7 +1148,7 @@ void SmallMapWindow::RebuildColourIndexIfNecessary()
}
min_width = max(GetStringBoundingBox(str).width, min_width);
}
this->min_number_of_fixed_rows = max(this->min_number_of_fixed_rows, height);
//this->min_number_of_fixed_rows = max(this->min_number_of_fixed_rows, height);
this->min_number_of_columns = max(this->min_number_of_columns, num_columns);
}
@@ -1347,6 +1353,7 @@ int SmallMapWindow::GetPositionOnLegend(Point pt)
uint line = (pt.y - wi->pos_y - WD_FRAMERECT_TOP) / this->row_height;
uint columns = this->GetNumberColumnsLegend(wi->current_x);
uint number_of_rows = this->GetNumberRowsLegend(columns);
number_of_rows = this->min_number_of_fixed_rows;
if (line >= number_of_rows) return -1;
bool rtl = _current_text_dir == TD_RTL;
@@ -1390,6 +1397,7 @@ int SmallMapWindow::GetPositionOnLegend(Point pt)
* actually being (virtually) clicked every inputloop.
*/
_left_button_clicked = false;
_scrolling_viewport = true;
const NWidgetBase *wid = this->GetWidget<NWidgetBase>(WID_SM_MAP);
Window *w = FindWindowById(WC_MAIN_WINDOW, 0);
@@ -1661,6 +1669,14 @@ Point SmallMapWindow::GetStationMiddle(const Station *st) const
return ret;
}
/* virtual */ void SmallMapWindow::UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize)
{
if (widget != WID_SM_LEGEND) return;
size->width = this->GetMinLegendWidth();
size->height = this->GetLegendHeight(this->min_number_of_columns);
}
SmallMapWindow::SmallMapType SmallMapWindow::map_type = SMT_CONTOUR;
bool SmallMapWindow::show_towns = true;
int SmallMapWindow::max_heightlevel = -1;
@@ -1690,6 +1706,7 @@ public:
bar->SetupSmallestSize(w, init_array);
this->smallmap_window = dynamic_cast<SmallMapWindow *>(w);
assert(this->smallmap_window != NULL);
this->smallest_x = max(display->smallest_x, max(bar->smallest_x, smallmap_window->GetMinLegendWidth()));
this->smallest_y = display->smallest_y + max(bar->smallest_y, smallmap_window->GetLegendHeight(smallmap_window->min_number_of_columns));
@@ -1717,7 +1734,7 @@ public:
bar->AssignSizePosition(ST_SMALLEST, x, y + display->smallest_y, bar->smallest_x, bar->smallest_y, rtl);
}
uint bar_height = max(bar->smallest_y, this->smallmap_window->GetLegendHeight(smallmap_window->min_number_of_columns));
uint bar_height = max(bar->smallest_y, this->smallmap_window->GetLegendHeight(this->smallmap_window->GetNumberColumnsLegend(given_width - bar->smallest_x)));
uint display_height = given_height - bar_height;
display->AssignSizePosition(ST_RESIZE, x, y, given_width, display_height, rtl);
bar->AssignSizePosition(ST_RESIZE, x, y + display_height, given_width, bar_height, rtl);
@@ -1777,8 +1794,9 @@ static const NWidgetPart _nested_smallmap_bar[] = {
SetDataTip(SPR_IMG_PLANTTREES, STR_SMALLMAP_TOOLTIP_SHOW_VEGETATION_ON_MAP), SetFill(1, 1),
NWidget(WWT_IMGBTN, COLOUR_BROWN, WID_SM_OWNERS),
SetDataTip(SPR_IMG_COMPANY_GENERAL, STR_SMALLMAP_TOOLTIP_SHOW_LAND_OWNERS_ON_MAP), SetFill(1, 1),
NWidget(NWID_SPACER), SetResize(1, 0), SetMinimalSize(0, 1),
NWidget(WWT_RESIZEBOX, COLOUR_BROWN),
EndContainer(),
NWidget(NWID_SPACER), SetResize(0, 1),
EndContainer(),
EndContainer(),
NWidget(WWT_EMPTY, INVALID_COLOUR, WID_SM_LEGEND), SetResize(1, 1),
@@ -1805,6 +1823,7 @@ static const NWidgetPart _nested_smallmap_widgets[] = {
EndContainer(),
NWidgetFunction(SmallMapDisplay), // Smallmap display and legend bar + image buttons.
/* Bottom button row and resize box. */
/*
NWidget(NWID_HORIZONTAL),
NWidget(NWID_SELECTION, INVALID_COLOUR, WID_SM_SELECT_BUTTONS),
NWidget(NWID_HORIZONTAL, NC_EQUALSIZE),
@@ -1819,6 +1838,7 @@ static const NWidgetPart _nested_smallmap_widgets[] = {
EndContainer(),
NWidget(WWT_RESIZEBOX, COLOUR_BROWN),
EndContainer(),
*/
};
static WindowDesc _smallmap_desc(

View File

@@ -125,7 +125,7 @@ protected:
*/
inline uint GetNumberColumnsLegend(uint width) const
{
return max(2u, width / this->column_width);
return width / this->column_width;
}
/**
@@ -136,7 +136,7 @@ protected:
inline uint GetLegendHeight(uint num_columns) const
{
return show_legend ? WD_FRAMERECT_TOP + WD_FRAMERECT_BOTTOM +
this->GetNumberRowsLegend(num_columns) * this->row_height : 0;
this->min_number_of_fixed_rows * this->row_height : 0;
}
/**
@@ -191,6 +191,7 @@ public:
virtual void OnTick();
virtual void OnScroll(Point delta);
virtual void OnMouseOver(Point pt, int widget);
virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize);
};
#endif /* SMALLMAP_GUI_H */

View File

@@ -105,7 +105,7 @@ struct StatusBarWindow : Window {
virtual void FindWindowPlacementAndResize(int def_width, int def_height)
{
Window::FindWindowPlacementAndResize(min(_toolbar_width, _screen.width - SETTING_BUTTON_HEIGHT * 2), def_height);
Window::FindWindowPlacementAndResize(min(_toolbar_width, _screen.width - GetMinSizing(NWST_STEP) * 2), def_height);
}
virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize)

View File

@@ -133,6 +133,7 @@ struct SubsidyListWindow : Window {
{
if (widget != WID_SUL_PANEL) return;
Dimension d = maxdim(GetStringBoundingBox(STR_SUBSIDIES_OFFERED_TITLE), GetStringBoundingBox(STR_SUBSIDIES_SUBSIDISED_TITLE));
d.height = GetMinSizing(NWST_STEP, d.height);
resize->height = d.height;
@@ -152,12 +153,13 @@ struct SubsidyListWindow : Window {
int right = r.right - WD_FRAMERECT_RIGHT;
int y = r.top + WD_FRAMERECT_TOP;
int x = r.left + WD_FRAMERECT_LEFT;
y = Center(y, GetMinSizing(NWST_STEP));
int pos = -this->vscroll->GetPosition();
const int cap = this->vscroll->GetCapacity();
/* Section for drawing the offered subsidies */
if (IsInsideMM(pos, 0, cap)) DrawString(x, right, y + pos * FONT_HEIGHT_NORMAL, STR_SUBSIDIES_OFFERED_TITLE);
if (IsInsideMM(pos, 0, cap)) DrawString(x, right, y + pos * GetMinSizing(NWST_STEP), STR_SUBSIDIES_OFFERED_TITLE);
pos++;
uint num = 0;
@@ -168,7 +170,7 @@ struct SubsidyListWindow : Window {
/* Displays the two offered towns */
SetupSubsidyDecodeParam(s, true);
SetDParam(7, _date - ymd.day + s->remaining * 32);
DrawString(x, right, y + pos * FONT_HEIGHT_NORMAL, STR_SUBSIDIES_OFFERED_FROM_TO);
DrawString(x, right, y + pos * GetMinSizing(NWST_STEP), STR_SUBSIDIES_OFFERED_FROM_TO);
}
pos++;
num++;
@@ -176,13 +178,13 @@ struct SubsidyListWindow : Window {
}
if (num == 0) {
if (IsInsideMM(pos, 0, cap)) DrawString(x, right, y + pos * FONT_HEIGHT_NORMAL, STR_SUBSIDIES_NONE);
if (IsInsideMM(pos, 0, cap)) DrawString(x, right, y + pos * GetMinSizing(NWST_STEP), STR_SUBSIDIES_NONE);
pos++;
}
/* Section for drawing the already granted subsidies */
pos++;
if (IsInsideMM(pos, 0, cap)) DrawString(x, right, y + pos * FONT_HEIGHT_NORMAL, STR_SUBSIDIES_SUBSIDISED_TITLE);
if (IsInsideMM(pos, 0, cap)) DrawString(x, right, y + pos * GetMinSizing(NWST_STEP), STR_SUBSIDIES_SUBSIDISED_TITLE);
pos++;
num = 0;
@@ -194,7 +196,7 @@ struct SubsidyListWindow : Window {
SetDParam(8, _date - ymd.day + s->remaining * 32);
/* Displays the two connected stations */
DrawString(x, right, y + pos * FONT_HEIGHT_NORMAL, STR_SUBSIDIES_SUBSIDISED_FROM_TO);
DrawString(x, right, y + pos * GetMinSizing(NWST_STEP), STR_SUBSIDIES_SUBSIDISED_FROM_TO);
}
pos++;
num++;
@@ -202,7 +204,7 @@ struct SubsidyListWindow : Window {
}
if (num == 0) {
if (IsInsideMM(pos, 0, cap)) DrawString(x, right, y + pos * FONT_HEIGHT_NORMAL, STR_SUBSIDIES_NONE);
if (IsInsideMM(pos, 0, cap)) DrawString(x, right, y + pos * GetMinSizing(NWST_STEP), STR_SUBSIDIES_NONE);
pos++;
}
}

View File

@@ -2558,6 +2558,14 @@ strhelp = STR_CONFIG_SETTING_VERTICAL_TOOLBAR_HELPTEXT
proc = VerticalToolbarChanged
cat = SC_BASIC
[SDTC_BOOL]
var = gui.build_confirmation
flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC
def = true
str = STR_CONFIG_SETTING_BUILD_CONFIRMATION
strhelp = STR_CONFIG_SETTING_BUILD_CONFIRMATION_HELPTEXT
cat = SC_BASIC
[SDTC_BOOL]
var = gui.show_finances
flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC

View File

@@ -222,18 +222,22 @@ struct TerraformToolbarWindow : Window {
switch (this->last_user_action) {
case WID_TT_LOWER_LAND: // Lower land button
VpStartPlaceSizing(tile, VPM_X_AND_Y, DDSP_LOWER_AND_LEVEL_AREA);
MoveAllWindowsOffScreen();
break;
case WID_TT_RAISE_LAND: // Raise land button
VpStartPlaceSizing(tile, VPM_X_AND_Y, DDSP_RAISE_AND_LEVEL_AREA);
MoveAllWindowsOffScreen();
break;
case WID_TT_LEVEL_LAND: // Level land button
VpStartPlaceSizing(tile, VPM_X_AND_Y, DDSP_LEVEL_AREA);
MoveAllWindowsOffScreen();
break;
case WID_TT_DEMOLISH: // Demolish aka dynamite button
PlaceProc_DemolishArea(tile);
MoveAllWindowsOffScreen();
break;
case WID_TT_BUY_LAND: // Buy land button
@@ -272,14 +276,26 @@ struct TerraformToolbarWindow : Window {
GUIPlaceProcDragXY(select_proc, start_tile, end_tile);
break;
}
MoveAllHiddenWindowsBackToScreen();
}
}
virtual void OnPlaceObjectAbort()
{
MoveAllHiddenWindowsBackToScreen();
this->RaiseButtons();
}
virtual void SelectLastTool()
{
// User misplaced something - activate last selected tool again
if (this->last_user_action == WIDGET_LIST_END)
return;
Point dummy = {0, 0};
this->RaiseWidget(this->last_user_action);
this->OnClick(dummy, this->last_user_action, 0);
}
static HotkeyList hotkeys;
};

View File

@@ -22,6 +22,8 @@ bool HandlePlacePushButton(Window *w, int widget, CursorID cursor, HighLightStyl
void SetObjectToPlaceWnd(CursorID icon, PaletteID pal, HighLightStyle mode, Window *w);
void SetObjectToPlace(CursorID icon, PaletteID pal, HighLightStyle mode, WindowClass window_class, WindowNumber window_num);
void ResetObjectToPlace();
void ConfirmPlacingObject();
void VpSelectTilesWithMethod(int x, int y, ViewportPlaceMethod method);
void VpStartPlaceSizing(TileIndex tile, ViewportPlaceMethod method, ViewportDragDropSelectionProcess process);

View File

@@ -1176,6 +1176,7 @@ public:
virtual void OnPlaceObject(Point pt, TileIndex tile)
{
VpStartPlaceSizing(tile, VPM_SINGLE_TILE, DDSP_SINGLE_TILE);
MoveAllWindowsOffScreen();
}
virtual void OnPlaceDrag(ViewportPlaceMethod select_method, ViewportDragDropSelectionProcess select_proc, Point pt)
@@ -1187,10 +1188,12 @@ public:
{
assert(start_tile == end_tile);
this->ExecuteFoundTownCommand(end_tile, false, STR_ERROR_CAN_T_FOUND_TOWN_HERE, CcFoundTown);
MoveAllHiddenWindowsBackToScreen();
}
virtual void OnPlaceObjectAbort()
{
MoveAllHiddenWindowsBackToScreen();
this->RaiseButtons();
this->UpdateButtons(false);
}

View File

@@ -147,6 +147,7 @@ public:
virtual void OnPlaceObject(Point pt, TileIndex tile)
{
VpStartPlaceSizing(tile, VPM_X_AND_Y, DDSP_PLANT_TREES);
MoveAllWindowsOffScreen();
}
virtual void OnPlaceDrag(ViewportPlaceMethod select_method, ViewportDragDropSelectionProcess select_proc, Point pt)
@@ -159,6 +160,7 @@ public:
if (pt.x != -1 && select_proc == DDSP_PLANT_TREES) {
DoCommandP(end_tile, this->tree_to_plant, start_tile,
CMD_PLANT_TREE | CMD_MSG(STR_ERROR_CAN_T_PLANT_TREE_HERE));
MoveAllHiddenWindowsBackToScreen();
}
}
@@ -173,6 +175,7 @@ public:
virtual void OnPlaceObjectAbort()
{
MoveAllHiddenWindowsBackToScreen();
this->RaiseButtons();
ResetObjectToPlace();

View File

@@ -44,17 +44,35 @@ struct VideoLink_t {
};
static VideoLink_t busTutorial[] = {
{ "en", "https://www.youtube.com/watch?v=EULXRMR4PyE" },
{ "en", "https://www.youtube.com/watch?v=EULXRMR4PyE" },
{ ANY_LANG, "https://www.youtube.com/watch?v=EULXRMR4PyE" },
{ NULL, NULL }
};
static VideoLink_t trainTutorial[] = {
{ "en", "https://www.youtube.com/watch?v=VdMdL2qyZ6s" },
{ "en", "https://www.youtube.com/watch?v=VdMdL2qyZ6s" },
{ ANY_LANG, "https://www.youtube.com/watch?v=VdMdL2qyZ6s" },
{ NULL, NULL }
};
static VideoLink_t truckTutorial[] = {
{ "en", "https://www.youtube.com/watch?v=B-CL-XFGNtw" },
{ ANY_LANG, "https://www.youtube.com/watch?v=B-CL-XFGNtw" },
{ NULL, NULL }
};
static VideoLink_t shipTutorial[] = {
{ "en", "https://www.youtube.com/watch?v=a5JHlWtIg3A" },
{ ANY_LANG, "https://www.youtube.com/watch?v=a5JHlWtIg3A" },
{ NULL, NULL }
};
static VideoLink_t cargoTutorial[] = {
{ "en", "https://www.youtube.com/watch?v=GwjiQYsu3xg" },
{ ANY_LANG, "https://www.youtube.com/watch?v=GwjiQYsu3xg" },
{ NULL, NULL }
};
void OpenExternTutorialVideo(VideoLink_t *tutorial)
{
const char *link = NULL;
@@ -90,32 +108,15 @@ static const NWidgetPart _nested_tutorial_widgets[] = {
NWidget(NWID_SPACER), SetMinimalSize(6, 0), SetFill(1, 0),
NWidget(NWID_VERTICAL), SetPIP(16, 2, 6),
// TODO: make different button IDs
NWidget(NWID_HORIZONTAL, NC_EQUALSIZE),
NWidget(WWT_LABEL, COLOUR_GREY), SetMinimalSize(120, 12), SetDataTip(STR_SMALLMAP_LEGENDA_BUS_STATION, STR_SMALLMAP_LEGENDA_BUS_STATION), SetFill(1, 1),
NWidget(WWT_LABEL, COLOUR_GREY), SetMinimalSize(120, 12), SetDataTip(STR_SMALLMAP_LEGENDA_ROAD_VEHICLES, STR_SMALLMAP_LEGENDA_TRUCK_LOADING_BAY), SetFill(1, 1),
EndContainer(),
NWidget(NWID_HORIZONTAL, NC_EQUALSIZE),
NWidget(WWT_IMGBTN, COLOUR_GREY, WID_STL_BUS), SetMinimalSize(120, 20), SetDataTip(SPR_VEH_BUS_SW_VIEW, STR_SMALLMAP_LEGENDA_BUS_STATION), SetFill(1, 1),
NWidget(WWT_IMGBTN, COLOUR_GREY, WID_STL_TRUCK), SetMinimalSize(120, 20), SetDataTip(SPR_IMG_TRUCKLIST, STR_SMALLMAP_LEGENDA_TRUCK_LOADING_BAY), SetFill(1, 1),
EndContainer(),
NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_STL_BUS), SetMinimalSize(120, 20), SetDataTip(STR_TUTORIAL_ROADS_AND_STATIONS, STR_TUTORIAL_ROADS_AND_STATIONS), SetFill(1, 1),
NWidget(NWID_SPACER), SetMinimalSize(0, 10), SetFill(1, 0),
NWidget(NWID_HORIZONTAL, NC_EQUALSIZE),
NWidget(WWT_LABEL, COLOUR_GREY), SetMinimalSize(120, 12), SetDataTip(STR_SMALLMAP_LEGENDA_RAILROADS, STR_SMALLMAP_LEGENDA_RAILROAD_STATION), SetFill(1, 1),
NWidget(WWT_LABEL, COLOUR_GREY), SetMinimalSize(120, 12), SetDataTip(STR_SMALLMAP_LEGENDA_SHIPS, STR_SMALLMAP_LEGENDA_DOCK), SetFill(1, 1),
EndContainer(),
NWidget(NWID_HORIZONTAL, NC_EQUALSIZE),
NWidget(WWT_IMGBTN, COLOUR_GREY, WID_STL_TRAIN), SetMinimalSize(120, 20), SetDataTip(SPR_IMG_TRAINLIST, STR_SMALLMAP_LEGENDA_RAILROAD_STATION), SetFill(0, 1),
NWidget(WWT_IMGBTN, COLOUR_GREY, WID_STL_SHIP), SetMinimalSize(120, 20), SetDataTip(SPR_IMG_SHIPLIST, STR_SMALLMAP_LEGENDA_DOCK), SetFill(0, 1),
EndContainer(),
NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_STL_TRAIN), SetMinimalSize(120, 20), SetDataTip(STR_TUTORIAL_RAILWAYS, STR_TUTORIAL_RAILWAYS), SetFill(1, 1),
NWidget(NWID_SPACER), SetMinimalSize(0, 10), SetFill(1, 0),
NWidget(NWID_HORIZONTAL, NC_EQUALSIZE),
NWidget(WWT_LABEL, COLOUR_GREY), SetMinimalSize(120, 12), SetDataTip(STR_SMALLMAP_LEGENDA_AIRCRAFT, STR_SMALLMAP_LEGENDA_AIRPORT_HELIPORT), SetFill(1, 1),
NWidget(WWT_LABEL, COLOUR_GREY), SetMinimalSize(120, 12), SetDataTip(STR_SMALLMAP_LEGENDA_INDUSTRIES, STR_SMALLMAP_LEGENDA_TRANSPORT_ROUTES), SetFill(1, 1),
EndContainer(),
NWidget(NWID_HORIZONTAL, NC_EQUALSIZE),
NWidget(WWT_IMGBTN, COLOUR_GREY, WID_STL_AIRPLANE), SetMinimalSize(120, 20), SetDataTip(SPR_IMG_AIRPLANESLIST, STR_SMALLMAP_LEGENDA_AIRPORT_HELIPORT), SetFill(0, 1),
NWidget(WWT_IMGBTN, COLOUR_GREY, WID_STL_FACILALL), SetMinimalSize(120, 20), SetDataTip(SPR_IMG_COMPANY_FINANCE, STR_SMALLMAP_LEGENDA_TRANSPORT_ROUTES), SetFill(0, 1),
EndContainer(),
NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_STL_TRUCK), SetMinimalSize(120, 20), SetDataTip(STR_TUTORIAL_ROAD_VEHICLES, STR_TUTORIAL_ROAD_VEHICLES), SetFill(1, 1),
NWidget(NWID_SPACER), SetMinimalSize(0, 10), SetFill(1, 0),
NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_STL_SHIP), SetMinimalSize(120, 20), SetDataTip(STR_TUTORIAL_SHIPS, STR_TUTORIAL_SHIPS), SetFill(1, 1),
NWidget(NWID_SPACER), SetMinimalSize(0, 10), SetFill(1, 0),
NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_STL_FACILALL), SetMinimalSize(120, 20), SetDataTip(STR_TUTORIAL_CARGO, STR_TUTORIAL_CARGO), SetFill(1, 1),
EndContainer(),
NWidget(NWID_SPACER), SetMinimalSize(6, 0), SetFill(1, 0),
EndContainer(),
@@ -136,10 +137,6 @@ struct TutorialWindow : public Window {
TutorialWindow() : Window(&_tutorial_desc)
{
this->InitNested(WN_GAME_OPTIONS_ABOUT);
this->SetWidgetDisabledState(WID_STL_TRUCK, true);
this->SetWidgetDisabledState(WID_STL_SHIP, true);
this->SetWidgetDisabledState(WID_STL_AIRPLANE, true);
this->SetWidgetDisabledState(WID_STL_FACILALL, true);
video = NULL;
counter = 0;
}
@@ -155,15 +152,18 @@ struct TutorialWindow : public Window {
video = busTutorial;
break;
case WID_STL_TRUCK:
video = truckTutorial;
break;
case WID_STL_TRAIN:
video = trainTutorial;
break;
case WID_STL_SHIP:
video = shipTutorial;
break;
case WID_STL_AIRPLANE:
break;
case WID_STL_FACILALL:
video = cargoTutorial;
break;
}
}
@@ -199,7 +199,7 @@ void ShowTutorialWindow()
void ShowTutorialWindowOnceAfterInstall()
{
static const char * TUTORIAL_SHOWN_FLAG = ".tutorial-shown-2.flag";
static const char * TUTORIAL_SHOWN_FLAG = ".tutorial-shown-3.flag";
FILE *ff = fopen(TUTORIAL_SHOWN_FLAG, "r");
if (ff) {

View File

@@ -84,6 +84,7 @@
#include "linkgraph/linkgraph_gui.h"
#include "viewport_sprite_sorter.h"
#include "bridge_map.h"
#include "build_confirmation_func.h"
#include <map>
@@ -2150,6 +2151,8 @@ static void PlaceObject()
Point pt;
Window *w;
if (BuildConfirmationWindowProcessViewportClick()) return;
pt = GetTileBelowCursor();
if (pt.x == -1) return;
@@ -2435,8 +2438,10 @@ void UpdateTileSelection()
default: NOT_REACHED();
}
_thd.selstart.x = x1 & ~TILE_UNIT_MASK;
_thd.selstart.y = y1 & ~TILE_UNIT_MASK;
if (!ConfirmationWindowShown()) {
_thd.selstart.x = x1 & ~TILE_UNIT_MASK;
_thd.selstart.y = y1 & ~TILE_UNIT_MASK;
}
break;
default:
NOT_REACHED();
@@ -2447,6 +2452,8 @@ void UpdateTileSelection()
}
}
if (ConfirmationWindowShown()) return;
/* redraw selection */
if (_thd.drawstyle != new_drawstyle ||
_thd.pos.x != _thd.new_pos.x || _thd.pos.y != _thd.new_pos.y ||
@@ -3139,10 +3146,13 @@ EventState VpHandlePlaceSizingDrag()
/* while dragging execute the drag procedure of the corresponding window (mostly VpSelectTilesWithMethod() ) */
if (_left_button_down) {
HideBuildConfirmationWindow();
w->OnPlaceDrag(_thd.select_method, _thd.select_proc, GetTileBelowCursor());
return ES_HANDLED;
}
ShowBuildConfirmationWindow(); // This will also remember tile selection, so it's okay for the4 code below
/* mouse button released..
* keep the selected tool, but reset it to the original mode. */
_special_mouse_mode = WSM_NONE;
@@ -3161,10 +3171,17 @@ EventState VpHandlePlaceSizingDrag()
SetTileSelectSize(1, 1);
place_mouseup:
w->OnPlaceMouseUp(_thd.select_method, _thd.select_proc, _thd.selend, TileVirtXY(_thd.selstart.x, _thd.selstart.y), TileVirtXY(_thd.selend.x, _thd.selend.y));
return ES_HANDLED;
}
void ConfirmPlacingObject()
{
Window *w = _thd.GetCallbackWnd();
if (w == NULL) ResetObjectToPlace();
w->OnPlaceMouseUp(_thd.select_method, _thd.select_proc, _thd.selend, TileVirtXY(_thd.selstart.x, _thd.selstart.y), TileVirtXY(_thd.selend.x, _thd.selend.y));
}
/**
* Change the cursor and mouse click/drag handling to a mode for performing special operations like tile area selection, object placement, etc.
* @param icon New shape of the mouse cursor.
@@ -3242,6 +3259,7 @@ void ResetObjectToPlace()
_last_selected_window_number = _thd.window_number;
}
SetObjectToPlace(SPR_CURSOR_MOUSE, PAL_NONE, HT_NONE, WC_MAIN_WINDOW, 0);
HideBuildConfirmationWindow();
MoveAllHiddenWindowsBackToScreen();
}

View File

@@ -45,9 +45,6 @@ static const NWidgetPart _nested_extra_view_port_widgets[] = {
NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_EV_VIEW_TO_MAIN), SetFill(1, 1), SetResize(1, 0),
SetDataTip(STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN, STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN_TT),
EndContainer(),
EndContainer(),
NWidget(NWID_HORIZONTAL),
NWidget(WWT_PANEL, COLOUR_GREY), SetFill(1, 1), SetResize(1, 0), EndContainer(),
NWidget(WWT_RESIZEBOX, COLOUR_GREY),
EndContainer(),
};

View File

@@ -608,8 +608,8 @@ void Window::DrawSortButtonState(int widget, SortButtonState state) const
/* Sort button uses the same sprites as vertical scrollbar */
int offset = this->IsWidgetLowered(widget) ? 1 : 0;
int x = offset + nwid->pos_x + (_current_text_dir == TD_LTR ? nwid->current_x - SETTING_BUTTON_HEIGHT / 4 : SETTING_BUTTON_HEIGHT / 4);
int y = offset + nwid->pos_y + nwid->current_y - SETTING_BUTTON_HEIGHT / 2;
int x = offset + nwid->pos_x + (_current_text_dir == TD_LTR ? nwid->current_x - SETTING_BUTTON_HEIGHT / 2 : SETTING_BUTTON_HEIGHT / 2);
int y = offset + Center(nwid->pos_y, nwid->current_y, FONT_HEIGHT_NORMAL / 4);
DrawSpriteCentered(state == SBS_DOWN ? SPR_ARROW_DOWN : SPR_ARROW_UP, PAL_NONE, x, y);
}
@@ -782,6 +782,27 @@ void NWidgetResizeBase::SetMinimalSize(uint min_x, uint min_y)
{
this->min_x = max(this->min_x, min_x);
this->min_y = max(this->min_y, min_y);
uint min_size = 0;
switch (this->sizing_type) {
case NWST_NONE:
case NWST_OVERRIDE:
min_size = 0;
break;
case NWST_BUTTON:
min_size = _settings_client.gui.min_button;
break;
case NWST_STEP:
min_size = _settings_client.gui.min_step;
break;
case NWST_VIEWPORT:
min_size = 3 * _settings_client.gui.min_button;
break;
default: NOT_REACHED();
}
min_size = RescaleFrom854x480(min_size);
this->min_x = max(min_x, min_size);
this->min_y = max(min_y, min_size);
}
/**
@@ -2089,6 +2110,39 @@ NWidgetLeaf::NWidgetLeaf(WidgetType tp, Colours colour, int index, uint32 data,
this->min_y = 0;
this->SetResize(0, 0);
if (this->sizing_type == NWST_NONE) {
switch (tp) {
case WWT_PUSHBTN:
case WWT_IMGBTN:
case WWT_PUSHIMGBTN:
case WWT_IMGBTN_2:
case WWT_TEXTBTN:
case WWT_PUSHTXTBTN:
case WWT_TEXTBTN_2:
case WWT_PUSHARROWBTN:
case WWT_EDITBOX:
case WWT_CAPTION:
case WWT_STICKYBOX:
case WWT_SHADEBOX:
case WWT_DEBUGBOX:
case WWT_DEFSIZEBOX:
case WWT_RESIZEBOX:
case WWT_CLOSEBOX:
this->sizing_type = NWST_BUTTON;
this->SetMinimalSize(8, 8);
break;
case NWID_PUSHBUTTON_DROPDOWN:
case NWID_BUTTON_DROPDOWN:
case WWT_DROPDOWN:
case WWT_ARROWBTN:
this->sizing_type = NWST_STEP;
this->SetMinimalSize(8, 8);
break;
default:
this->sizing_type = NWST_OVERRIDE;
}
}
switch (tp) {
case WWT_EMPTY:
break;
@@ -2258,6 +2312,7 @@ void NWidgetLeaf::SetupSmallestSize(Window *w, bool init_array)
Dimension sprite_size = GetSpriteSize(_current_text_dir == TD_RTL ? SPR_IMG_DELETE_RIGHT : SPR_IMG_DELETE_LEFT);
size.width = max(size.width, 30 + sprite_size.width);
size.height = max(sprite_size.height, GetStringBoundingBox("_").height + WD_FRAMERECT_TOP + WD_FRAMERECT_BOTTOM);
size.height = GetMinSizing(NWST_BUTTON, size.height);
/* FALL THROUGH */
}
case WWT_PUSHBTN: {
@@ -2500,10 +2555,10 @@ bool NWidgetLeaf::ButtonHit(const Point &pt)
{
uint button_size = GetMinSizing(NWST_STEP, 12);
if (_current_text_dir == TD_LTR) {
int button_width = this->pos_x + this->current_x - NWidgetLeaf::dropdown_dimension.width;
int button_width = this->pos_x + this->current_x - button_size;
return pt.x < button_width;
} else {
int button_left = this->pos_x + NWidgetLeaf::dropdown_dimension.width;
int button_left = this->pos_x + button_size;
return pt.x >= button_left;
}
}

Some files were not shown because too many files have changed in this diff Show More