src/misc_gui.cpp
author convert-repo
Mon, 07 Apr 2008 16:21:55 +0000
changeset 10076 dfd70e42c4ae
parent 9342 ca61cbfca47a
child 10155 84b04fa63a70
permissions -rw-r--r--
update tags
2186
461a2aff3486 (svn r2701) Insert Id tags into all source files
tron
parents: 2167
diff changeset
     1
/* $Id$ */
461a2aff3486 (svn r2701) Insert Id tags into all source files
tron
parents: 2167
diff changeset
     2
6527
f584ab6d87f8 (svn r8987) -Cleanup: doxygen changes. Again. Mostly (still) @files missing tags and (more than just) a few comments style.
belugas
parents: 6523
diff changeset
     3
/** @file misc_gui.cpp */
f584ab6d87f8 (svn r8987) -Cleanup: doxygen changes. Again. Mostly (still) @files missing tags and (more than just) a few comments style.
belugas
parents: 6523
diff changeset
     4
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
     5
#include "stdafx.h"
1891
92a3b0aa0946 (svn r2397) - CodeChange: rename all "ttd" files to "openttd" files.
Darkvater
parents: 1879
diff changeset
     6
#include "openttd.h"
4300
687a17c9c557 (svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents: 4299
diff changeset
     7
#include "heightmap.h"
1299
0a6510cc889b (svn r1803) Move debugging stuff into files of it's own
tron
parents: 1274
diff changeset
     8
#include "debug.h"
6949
72d11a1e1e60 (svn r9609) -Codechange: Move some function prototypes out of functions.h and into landscape.h, and add a few where they didn't exist.
maedhros
parents: 6676
diff changeset
     9
#include "landscape.h"
5352
82a50c80b0c4 (svn r7523) -Feature: Add the possibility to change the newgrf configuration of a running game.
Darkvater
parents: 5320
diff changeset
    10
#include "newgrf.h"
8246
ff7b892d8a28 (svn r11287) -Codechange: add support for pushing paramaters into NewIndustries' error messages. Patch by Csaboka.
rubidium
parents: 8017
diff changeset
    11
#include "newgrf_text.h"
2162
c1ded3bd3d0c (svn r2672) Move saving/loading related declarations to saveload.h
tron
parents: 2159
diff changeset
    12
#include "saveload.h"
8604
8afdd9877afd (svn r11669) -Codechange: refactor tile.h -> tile_type.h and tile_map.h
rubidium
parents: 8603
diff changeset
    13
#include "tile_map.h"
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    14
#include "gui.h"
8603
88c5ce6a5215 (svn r11668) -Codechange: more refactoring aimed at reducing compile time and making it more logic where function definitions can be found.
rubidium
parents: 8602
diff changeset
    15
#include "window_gui.h"
88c5ce6a5215 (svn r11668) -Codechange: more refactoring aimed at reducing compile time and making it more logic where function definitions can be found.
rubidium
parents: 8602
diff changeset
    16
#include "station_gui.h"
88c5ce6a5215 (svn r11668) -Codechange: more refactoring aimed at reducing compile time and making it more logic where function definitions can be found.
rubidium
parents: 8602
diff changeset
    17
#include "textbuf_gui.h"
8720
4e60c30e2006 (svn r11787) -Codechange: more header rewrites. This time related to viewport.h.
rubidium
parents: 8710
diff changeset
    18
#include "viewport_func.h"
4e60c30e2006 (svn r11787) -Codechange: more header rewrites. This time related to viewport.h.
rubidium
parents: 8710
diff changeset
    19
#include "gfx_func.h"
9281
d8cd9ac52a68 (svn r12489) -Codechange: split station.h into station_base.h and station_func.h.
rubidium
parents: 9244
diff changeset
    20
#include "station_func.h"
8612
6414fc21c2f3 (svn r11677) -Codechange: move price and command related types/functions to their respective places.
rubidium
parents: 8610
diff changeset
    21
#include "command_func.h"
8750
fdd6054e7bae (svn r11818) -Codechange: split player.h into smaller pieces.
rubidium
parents: 8720
diff changeset
    22
#include "player_func.h"
fdd6054e7bae (svn r11818) -Codechange: split player.h into smaller pieces.
rubidium
parents: 8720
diff changeset
    23
#include "player_base.h"
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    24
#include "town.h"
5720
cc0ceeafaa55 (svn r7751) -Codechange: move network_* to a new network map. Furthermore move the low level network functions to network/core, so they can be reused by the masterserver and website-serverlist-updater.
rubidium
parents: 5698
diff changeset
    25
#include "network/network.h"
2159
3b634157c3b2 (svn r2669) Shuffle some more stuff around to reduce dependencies
tron
parents: 2134
diff changeset
    26
#include "variables.h"
3890
f8f13a91446a (svn r4946) "Feature": Add a cheat that allows running electric engines on normal rail
celestar
parents: 3798
diff changeset
    27
#include "train.h"
4300
687a17c9c557 (svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents: 4299
diff changeset
    28
#include "tgp.h"
6417
26acff62d001 (svn r8826) -Codechange: Replace _cargoc's separate arrays with a regular struct array (with accessor) and implement new initialization method using cargo labels.
peter1138
parents: 6144
diff changeset
    29
#include "cargotype.h"
6516
ee6d057b9850 (svn r8969) -Codechange: rework of the player face bits.
rubidium
parents: 6417
diff changeset
    30
#include "player_face.h"
8610
17cc343a23dd (svn r11675) -Codechange: split the string types from the string functions.
rubidium
parents: 8604
diff changeset
    31
#include "strings_func.h"
7425
350b9265b7a2 (svn r10182) -Codechange: rewrite most part of the file loading/searching to be more flexible.
rubidium
parents: 7371
diff changeset
    32
#include "fileio.h"
4223
0f9535dda7ed (svn r5767) - Cleanup: Improve upon the header file mess regarding fios. Move all relevant types from hal.h into fios.h, eliminate the unneccessary passing of a global variable, and extern variables in header files (declare in fios.c and misc_gui.c
Darkvater
parents: 4217
diff changeset
    33
#include "fios.h"
8615
6b91ca653bad (svn r11680) -Codechange: refactor more out of openttd.h and functions.h.
rubidium
parents: 8612
diff changeset
    34
#include "tile_cmd.h"
8619
c2434269c3eb (svn r11684) -Codechange: split gfx.h in a type and functional header.
rubidium
parents: 8617
diff changeset
    35
#include "zoom_func.h"
8627
448ebf3a8291 (svn r11692) -Codechange: move some functions from 'functions.h' to a more logical place and remove about 50% of the includes of 'functions.h'
rubidium
parents: 8619
diff changeset
    36
#include "functions.h"
448ebf3a8291 (svn r11692) -Codechange: move some functions from 'functions.h' to a more logical place and remove about 50% of the includes of 'functions.h'
rubidium
parents: 8619
diff changeset
    37
#include "window_func.h"
8636
2b158acb649c (svn r11702) -Codechange: move all date related stuff to date*.
rubidium
parents: 8635
diff changeset
    38
#include "date_func.h"
8653
a83f7a536919 (svn r11719) -Codechange: split sound.h in a header with types and one with functions.
rubidium
parents: 8648
diff changeset
    39
#include "sound_func.h"
8710
52015340050c (svn r11777) -Codechange: split the string header and make do not include it when it's not necessary.
rubidium
parents: 8704
diff changeset
    40
#include "string_func.h"
8750
fdd6054e7bae (svn r11818) -Codechange: split player.h into smaller pieces.
rubidium
parents: 8720
diff changeset
    41
#include "player_gui.h"
8766
c86cfa3a7580 (svn r11834) -Codechange: only include settings_type.h if needed.
rubidium
parents: 8760
diff changeset
    42
#include "settings_type.h"
9283
624272490f5a (svn r12495) -Codechange: reduce the dependency on newgrf_station.h (especially because newgrf_station.h includes a lot of stuff).
rubidium
parents: 9281
diff changeset
    43
#include "newgrf_cargo.h"
9305
0c214cd8b39e (svn r12550) -Change: the signal GUI is now persistent - has the same data when it is reopened
smatz
parents: 9283
diff changeset
    44
#include "rail_gui.h"
8615
6b91ca653bad (svn r11680) -Codechange: refactor more out of openttd.h and functions.h.
rubidium
parents: 8612
diff changeset
    45
8760
ce0891c412ce (svn r11828) -Codechange: include table/* as the last includes and remove an unneeded include from openttd.h.
rubidium
parents: 8750
diff changeset
    46
#include "table/sprites.h"
ce0891c412ce (svn r11828) -Codechange: include table/* as the last includes and remove an unneeded include from openttd.h.
rubidium
parents: 8750
diff changeset
    47
#include "table/strings.h"
ce0891c412ce (svn r11828) -Codechange: include table/* as the last includes and remove an unneeded include from openttd.h.
rubidium
parents: 8750
diff changeset
    48
#include "table/tree_land.h"
ce0891c412ce (svn r11828) -Codechange: include table/* as the last includes and remove an unneeded include from openttd.h.
rubidium
parents: 8750
diff changeset
    49
4223
0f9535dda7ed (svn r5767) - Cleanup: Improve upon the header file mess regarding fios. Move all relevant types from hal.h into fios.h, eliminate the unneccessary passing of a global variable, and extern variables in header files (declare in fios.c and misc_gui.c
Darkvater
parents: 4217
diff changeset
    50
/* Variables to display file lists */
0f9535dda7ed (svn r5767) - Cleanup: Improve upon the header file mess regarding fios. Move all relevant types from hal.h into fios.h, eliminate the unneccessary passing of a global variable, and extern variables in header files (declare in fios.c and misc_gui.c
Darkvater
parents: 4217
diff changeset
    51
FiosItem *_fios_list;
8645
83500ad80b08 (svn r11711) -Codechange: Name the Save Load Dialog Mode enum
belugas
parents: 8640
diff changeset
    52
SaveLoadDialogMode _saveload_mode;
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    53
4300
687a17c9c557 (svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents: 4299
diff changeset
    54
1596
c1c439a2d5b2 (svn r2100) - Fix: [1024703]: Infinite access for A:\ (win32). Patch [1171208]. Only requery drive(s) if the user changes a directory, also surpress the OS error box that pops up on some windows machines. Tron + glx (and me)
darkvater
parents: 1594
diff changeset
    55
static bool _fios_path_changed;
1594
1cbbb77f5bb2 (svn r2098) Make a variable static, move a function declaration to a header and remove unnecessary preprocessor magic
tron
parents: 1578
diff changeset
    56
static bool _savegame_sort_dirty;
1cbbb77f5bb2 (svn r2098) Make a variable static, move a function declaration to a header and remove unnecessary preprocessor magic
tron
parents: 1578
diff changeset
    57
5834
7bf92d5a5a0f (svn r8030) -Fix: segmentation fault when removing a town in the scenario editor while having the query tool window open for one of the town's tiles.
rubidium
parents: 5726
diff changeset
    58
enum {
7bf92d5a5a0f (svn r8030) -Fix: segmentation fault when removing a town in the scenario editor while having the query tool window open for one of the town's tiles.
rubidium
parents: 5726
diff changeset
    59
	LAND_INFO_LINES          =   7,
7bf92d5a5a0f (svn r8030) -Fix: segmentation fault when removing a town in the scenario editor while having the query tool window open for one of the town's tiles.
rubidium
parents: 5726
diff changeset
    60
	LAND_INFO_LINE_BUFF_SIZE = 512,
7bf92d5a5a0f (svn r8030) -Fix: segmentation fault when removing a town in the scenario editor while having the query tool window open for one of the town's tiles.
rubidium
parents: 5726
diff changeset
    61
};
7bf92d5a5a0f (svn r8030) -Fix: segmentation fault when removing a town in the scenario editor while having the query tool window open for one of the town's tiles.
rubidium
parents: 5726
diff changeset
    62
7bf92d5a5a0f (svn r8030) -Fix: segmentation fault when removing a town in the scenario editor while having the query tool window open for one of the town's tiles.
rubidium
parents: 5726
diff changeset
    63
static char _landinfo_data[LAND_INFO_LINES][LAND_INFO_LINE_BUFF_SIZE];
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    64
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    65
static void LandInfoWndProc(Window *w, WindowEvent *e)
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    66
{
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    67
	if (e->event == WE_PAINT) {
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    68
		DrawWindowWidgets(w);
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    69
8320
6ffad7a5d242 (svn r11374) -Codechange: Give meaning to the magical number that specifies the color of the text in a DrawString call.
belugas
parents: 8246
diff changeset
    70
		DoDrawStringCentered(140, 16, _landinfo_data[0], TC_LIGHT_BLUE);
6ffad7a5d242 (svn r11374) -Codechange: Give meaning to the magical number that specifies the color of the text in a DrawString call.
belugas
parents: 8246
diff changeset
    71
		DoDrawStringCentered(140, 27, _landinfo_data[1], TC_FROMSTRING);
6ffad7a5d242 (svn r11374) -Codechange: Give meaning to the magical number that specifies the color of the text in a DrawString call.
belugas
parents: 8246
diff changeset
    72
		DoDrawStringCentered(140, 38, _landinfo_data[2], TC_FROMSTRING);
6ffad7a5d242 (svn r11374) -Codechange: Give meaning to the magical number that specifies the color of the text in a DrawString call.
belugas
parents: 8246
diff changeset
    73
		DoDrawStringCentered(140, 49, _landinfo_data[3], TC_FROMSTRING);
6ffad7a5d242 (svn r11374) -Codechange: Give meaning to the magical number that specifies the color of the text in a DrawString call.
belugas
parents: 8246
diff changeset
    74
		DoDrawStringCentered(140, 60, _landinfo_data[4], TC_FROMSTRING);
6523
d41352ca5c1e (svn r8977) -Codechange: Remove the hardcoded maximum width for some drawstrings and replace them with a portion of w->width. Only visible improvement is QueryWndProc which will not write exactly to the edge of the window anymore.
Darkvater
parents: 6516
diff changeset
    75
		if (_landinfo_data[5][0] != '\0') DrawStringMultiCenter(140, 76, BindCString(_landinfo_data[5]), w->width - 4);
8320
6ffad7a5d242 (svn r11374) -Codechange: Give meaning to the magical number that specifies the color of the text in a DrawString call.
belugas
parents: 8246
diff changeset
    76
		if (_landinfo_data[6][0] != '\0') DoDrawStringCentered(140, 71, _landinfo_data[6], TC_FROMSTRING);
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    77
	}
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    78
}
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    79
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    80
static const Widget _land_info_widgets[] = {
4344
5d0e40cd67b9 (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4326
diff changeset
    81
{   WWT_CLOSEBOX,   RESIZE_NONE,    14,     0,    10,     0,    13, STR_00C5,                       STR_018B_CLOSE_WINDOW},
867
581154a08a78 (svn r1348) -Feature: resizable windows. Read the comment in window.h to find out
truelight
parents: 860
diff changeset
    82
{    WWT_CAPTION,   RESIZE_NONE,    14,    11,   279,     0,    13, STR_01A3_LAND_AREA_INFORMATION, STR_018C_WINDOW_TITLE_DRAG_THIS},
4938
074f734a91ca (svn r6925) -Codechange: Be more strict with widget distinctions. WWT_PANEL is only plain panel,
Darkvater
parents: 4912
diff changeset
    83
{      WWT_PANEL,   RESIZE_NONE,    14,     0,   279,    14,    92, 0x0,                            STR_NULL},
176
84990c4b9212 (svn r177) -Fix: padded out Widget code to solve warnings on C99 compiler (Tron)
darkvater
parents: 172
diff changeset
    84
{    WIDGETS_END},
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    85
};
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    86
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    87
static const WindowDesc _land_info_desc = {
7837
65d7362153a6 (svn r10704) -Codechange: provide an infrastructure to have resizable windows that are smaller than the default window size.
rubidium
parents: 7817
diff changeset
    88
	WDP_AUTO, WDP_AUTO, 280, 93, 280, 93,
6144
5a0ffbf27ced (svn r8511) -Codechange: make WindowClass an enumerated value.
rubidium
parents: 6001
diff changeset
    89
	WC_LAND_INFO, WC_NONE,
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    90
	WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET,
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    91
	_land_info_widgets,
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    92
	LandInfoWndProc
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    93
};
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    94
1977
4392ae3d8e31 (svn r2483) Replace almost 500 "uint tile" (and variants) with "TileIndex tile"
tron
parents: 1962
diff changeset
    95
static void Place_LandInfo(TileIndex tile)
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    96
{
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    97
	DeleteWindowById(WC_LAND_INFO, 0);
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    98
9234
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
    99
	Window *w = AllocateWindowDesc(&_land_info_desc);
5834
7bf92d5a5a0f (svn r8030) -Fix: segmentation fault when removing a town in the scenario editor while having the query tool window open for one of the town's tiles.
rubidium
parents: 5726
diff changeset
   100
	WP(w, void_d).data = &_landinfo_data;
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   101
9234
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   102
	Player *p = GetPlayer(IsValidPlayer(_local_player) ? _local_player : PLAYER_FIRST);
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   103
	Town *t = ClosestTownFromTile(tile, _patches.dist_local_authority);
3
27d9e9fa999a (svn r4) -Fix [996025] _local_player fixes. Fixes wrong memory access (TrueLight)
darkvater
parents: 0
diff changeset
   104
9234
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   105
	Money old_money = p->player_money;
7486
d130c10f4dab (svn r10246) -Fix (r10297): some forgotten money conversions and truncation issues. Thanks to benc for providing the patch.
rubidium
parents: 7449
diff changeset
   106
	p->player_money = INT64_MAX;
9234
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   107
	CommandCost costclear = DoCommand(tile, 0, 0, 0, CMD_LANDSCAPE_CLEAR);
7448
424ab8df8adb (svn r10207) -Codechange: remove the redundant player_money in favour of the money64, which is now renamed to player_money.
rubidium
parents: 7446
diff changeset
   108
	p->player_money = old_money;
193
0a7025304867 (svn r194) -Codechange: stripping trailing-spaces. Please keep this that way!
truelight
parents: 179
diff changeset
   109
5834
7bf92d5a5a0f (svn r8030) -Fix: segmentation fault when removing a town in the scenario editor while having the query tool window open for one of the town's tiles.
rubidium
parents: 5726
diff changeset
   110
	/* Because build_date is not set yet in every TileDesc, we make sure it is empty */
9315
336e6518acb3 (svn r12565) -Cleanup: variable scope in misc\*.cpp
smatz
parents: 9305
diff changeset
   111
	TileDesc td;
336e6518acb3 (svn r12565) -Cleanup: variable scope in misc\*.cpp
smatz
parents: 9305
diff changeset
   112
	AcceptedCargo ac;
336e6518acb3 (svn r12565) -Cleanup: variable scope in misc\*.cpp
smatz
parents: 9305
diff changeset
   113
5834
7bf92d5a5a0f (svn r8030) -Fix: segmentation fault when removing a town in the scenario editor while having the query tool window open for one of the town's tiles.
rubidium
parents: 5726
diff changeset
   114
	td.build_date = 0;
7bf92d5a5a0f (svn r8030) -Fix: segmentation fault when removing a town in the scenario editor while having the query tool window open for one of the town's tiles.
rubidium
parents: 5726
diff changeset
   115
	GetAcceptedCargo(tile, ac);
7bf92d5a5a0f (svn r8030) -Fix: segmentation fault when removing a town in the scenario editor while having the query tool window open for one of the town's tiles.
rubidium
parents: 5726
diff changeset
   116
	GetTileDesc(tile, &td);
193
0a7025304867 (svn r194) -Codechange: stripping trailing-spaces. Please keep this that way!
truelight
parents: 179
diff changeset
   117
5834
7bf92d5a5a0f (svn r8030) -Fix: segmentation fault when removing a town in the scenario editor while having the query tool window open for one of the town's tiles.
rubidium
parents: 5726
diff changeset
   118
	SetDParam(0, td.dparam[0]);
7bf92d5a5a0f (svn r8030) -Fix: segmentation fault when removing a town in the scenario editor while having the query tool window open for one of the town's tiles.
rubidium
parents: 5726
diff changeset
   119
	GetString(_landinfo_data[0], td.str, lastof(_landinfo_data[0]));
7bf92d5a5a0f (svn r8030) -Fix: segmentation fault when removing a town in the scenario editor while having the query tool window open for one of the town's tiles.
rubidium
parents: 5726
diff changeset
   120
7bf92d5a5a0f (svn r8030) -Fix: segmentation fault when removing a town in the scenario editor while having the query tool window open for one of the town's tiles.
rubidium
parents: 5726
diff changeset
   121
	SetDParam(0, STR_01A6_N_A);
7bf92d5a5a0f (svn r8030) -Fix: segmentation fault when removing a town in the scenario editor while having the query tool window open for one of the town's tiles.
rubidium
parents: 5726
diff changeset
   122
	if (td.owner != OWNER_NONE && td.owner != OWNER_WATER) GetNameOfOwner(td.owner, tile);
7bf92d5a5a0f (svn r8030) -Fix: segmentation fault when removing a town in the scenario editor while having the query tool window open for one of the town's tiles.
rubidium
parents: 5726
diff changeset
   123
	GetString(_landinfo_data[1], STR_01A7_OWNER, lastof(_landinfo_data[1]));
7bf92d5a5a0f (svn r8030) -Fix: segmentation fault when removing a town in the scenario editor while having the query tool window open for one of the town's tiles.
rubidium
parents: 5726
diff changeset
   124
9234
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   125
	StringID str = STR_01A4_COST_TO_CLEAR_N_A;
7442
a4f7989f27d4 (svn r10200) -Codechange: add "shortcut" for !CmdFailed (CmdSucceeded).
rubidium
parents: 7425
diff changeset
   126
	if (CmdSucceeded(costclear)) {
7498
ce6588257e8d (svn r10258) -Codechange: as we are now using int64 all over the place, it's better to use int64 variables in the string generating too instead of packing them into two int32s.
rubidium
parents: 7494
diff changeset
   127
		SetDParam(0, costclear.GetCost());
5834
7bf92d5a5a0f (svn r8030) -Fix: segmentation fault when removing a town in the scenario editor while having the query tool window open for one of the town's tiles.
rubidium
parents: 5726
diff changeset
   128
		str = STR_01A5_COST_TO_CLEAR;
7bf92d5a5a0f (svn r8030) -Fix: segmentation fault when removing a town in the scenario editor while having the query tool window open for one of the town's tiles.
rubidium
parents: 5726
diff changeset
   129
	}
7bf92d5a5a0f (svn r8030) -Fix: segmentation fault when removing a town in the scenario editor while having the query tool window open for one of the town's tiles.
rubidium
parents: 5726
diff changeset
   130
	GetString(_landinfo_data[2], str, lastof(_landinfo_data[2]));
7bf92d5a5a0f (svn r8030) -Fix: segmentation fault when removing a town in the scenario editor while having the query tool window open for one of the town's tiles.
rubidium
parents: 5726
diff changeset
   131
7bf92d5a5a0f (svn r8030) -Fix: segmentation fault when removing a town in the scenario editor while having the query tool window open for one of the town's tiles.
rubidium
parents: 5726
diff changeset
   132
	snprintf(_userstring, lengthof(_userstring), "0x%.4X", tile);
7bf92d5a5a0f (svn r8030) -Fix: segmentation fault when removing a town in the scenario editor while having the query tool window open for one of the town's tiles.
rubidium
parents: 5726
diff changeset
   133
	SetDParam(0, TileX(tile));
7bf92d5a5a0f (svn r8030) -Fix: segmentation fault when removing a town in the scenario editor while having the query tool window open for one of the town's tiles.
rubidium
parents: 5726
diff changeset
   134
	SetDParam(1, TileY(tile));
7934
4e1280beb7e4 (svn r10878) -Add [FS#653]: added TileHeight to the Land Area Information tool (blove)
truelight
parents: 7882
diff changeset
   135
	SetDParam(2, TileHeight(tile));
4e1280beb7e4 (svn r10878) -Add [FS#653]: added TileHeight to the Land Area Information tool (blove)
truelight
parents: 7882
diff changeset
   136
	SetDParam(3, STR_SPEC_USERSTRING);
5834
7bf92d5a5a0f (svn r8030) -Fix: segmentation fault when removing a town in the scenario editor while having the query tool window open for one of the town's tiles.
rubidium
parents: 5726
diff changeset
   137
	GetString(_landinfo_data[3], STR_LANDINFO_COORDS, lastof(_landinfo_data[3]));
7bf92d5a5a0f (svn r8030) -Fix: segmentation fault when removing a town in the scenario editor while having the query tool window open for one of the town's tiles.
rubidium
parents: 5726
diff changeset
   138
7bf92d5a5a0f (svn r8030) -Fix: segmentation fault when removing a town in the scenario editor while having the query tool window open for one of the town's tiles.
rubidium
parents: 5726
diff changeset
   139
	SetDParam(0, STR_01A9_NONE);
7882
64cdb1d52f16 (svn r10755) -Codechange: make the town struct use the pool item class as super class.
rubidium
parents: 7868
diff changeset
   140
	if (t != NULL && t->IsValid()) {
5834
7bf92d5a5a0f (svn r8030) -Fix: segmentation fault when removing a town in the scenario editor while having the query tool window open for one of the town's tiles.
rubidium
parents: 5726
diff changeset
   141
		SetDParam(0, STR_TOWN);
7bf92d5a5a0f (svn r8030) -Fix: segmentation fault when removing a town in the scenario editor while having the query tool window open for one of the town's tiles.
rubidium
parents: 5726
diff changeset
   142
		SetDParam(1, t->index);
7bf92d5a5a0f (svn r8030) -Fix: segmentation fault when removing a town in the scenario editor while having the query tool window open for one of the town's tiles.
rubidium
parents: 5726
diff changeset
   143
	}
7bf92d5a5a0f (svn r8030) -Fix: segmentation fault when removing a town in the scenario editor while having the query tool window open for one of the town's tiles.
rubidium
parents: 5726
diff changeset
   144
	GetString(_landinfo_data[4], STR_01A8_LOCAL_AUTHORITY, lastof(_landinfo_data[4]));
7bf92d5a5a0f (svn r8030) -Fix: segmentation fault when removing a town in the scenario editor while having the query tool window open for one of the town's tiles.
rubidium
parents: 5726
diff changeset
   145
9234
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   146
	char *strp = GetString(_landinfo_data[5], STR_01CE_CARGO_ACCEPTED, lastof(_landinfo_data[5]));
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   147
	bool found = false;
5834
7bf92d5a5a0f (svn r8030) -Fix: segmentation fault when removing a town in the scenario editor while having the query tool window open for one of the town's tiles.
rubidium
parents: 5726
diff changeset
   148
9234
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   149
	for (CargoID i = 0; i < NUM_CARGO; ++i) {
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   150
		if (ac[i] > 0) {
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   151
			/* Add a comma between each item. */
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   152
			if (found) {
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   153
				*strp++ = ',';
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   154
				*strp++ = ' ';
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   155
			}
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   156
			found = true;
5834
7bf92d5a5a0f (svn r8030) -Fix: segmentation fault when removing a town in the scenario editor while having the query tool window open for one of the town's tiles.
rubidium
parents: 5726
diff changeset
   157
9234
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   158
			/* If the accepted value is less than 8, show it in 1/8:ths */
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   159
			if (ac[i] < 8) {
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   160
				SetDParam(0, ac[i]);
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   161
				SetDParam(1, GetCargo(i)->name);
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   162
				strp = GetString(strp, STR_01D1_8, lastof(_landinfo_data[5]));
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   163
			} else {
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   164
				strp = GetString(strp, GetCargo(i)->name, lastof(_landinfo_data[5]));
5834
7bf92d5a5a0f (svn r8030) -Fix: segmentation fault when removing a town in the scenario editor while having the query tool window open for one of the town's tiles.
rubidium
parents: 5726
diff changeset
   165
			}
7bf92d5a5a0f (svn r8030) -Fix: segmentation fault when removing a town in the scenario editor while having the query tool window open for one of the town's tiles.
rubidium
parents: 5726
diff changeset
   166
		}
7bf92d5a5a0f (svn r8030) -Fix: segmentation fault when removing a town in the scenario editor while having the query tool window open for one of the town's tiles.
rubidium
parents: 5726
diff changeset
   167
	}
9234
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   168
	if (!found) _landinfo_data[5][0] = '\0';
5834
7bf92d5a5a0f (svn r8030) -Fix: segmentation fault when removing a town in the scenario editor while having the query tool window open for one of the town's tiles.
rubidium
parents: 5726
diff changeset
   169
7bf92d5a5a0f (svn r8030) -Fix: segmentation fault when removing a town in the scenario editor while having the query tool window open for one of the town's tiles.
rubidium
parents: 5726
diff changeset
   170
	if (td.build_date != 0) {
7bf92d5a5a0f (svn r8030) -Fix: segmentation fault when removing a town in the scenario editor while having the query tool window open for one of the town's tiles.
rubidium
parents: 5726
diff changeset
   171
		SetDParam(0, td.build_date);
9234
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   172
		GetString(_landinfo_data[6], STR_BUILD_DATE, lastof(_landinfo_data[6]));
5834
7bf92d5a5a0f (svn r8030) -Fix: segmentation fault when removing a town in the scenario editor while having the query tool window open for one of the town's tiles.
rubidium
parents: 5726
diff changeset
   173
	} else {
7bf92d5a5a0f (svn r8030) -Fix: segmentation fault when removing a town in the scenario editor while having the query tool window open for one of the town's tiles.
rubidium
parents: 5726
diff changeset
   174
		_landinfo_data[6][0] = '\0';
7bf92d5a5a0f (svn r8030) -Fix: segmentation fault when removing a town in the scenario editor while having the query tool window open for one of the town's tiles.
rubidium
parents: 5726
diff changeset
   175
	}
193
0a7025304867 (svn r194) -Codechange: stripping trailing-spaces. Please keep this that way!
truelight
parents: 179
diff changeset
   176
4000
bab1ebc37da0 (svn r5210) Many small changes which piled up: const, unsigned, variable scope, CSE for readability, DeMorgan, if cascades -> switch, whitespace, parentheses, bracing, misc.
tron
parents: 3890
diff changeset
   177
#if defined(_DEBUG)
bab1ebc37da0 (svn r5210) Many small changes which piled up: const, unsigned, variable scope, CSE for readability, DeMorgan, if cascades -> switch, whitespace, parentheses, bracing, misc.
tron
parents: 3890
diff changeset
   178
#	define LANDINFOD_LEVEL 0
bab1ebc37da0 (svn r5210) Many small changes which piled up: const, unsigned, variable scope, CSE for readability, DeMorgan, if cascades -> switch, whitespace, parentheses, bracing, misc.
tron
parents: 3890
diff changeset
   179
#else
bab1ebc37da0 (svn r5210) Many small changes which piled up: const, unsigned, variable scope, CSE for readability, DeMorgan, if cascades -> switch, whitespace, parentheses, bracing, misc.
tron
parents: 3890
diff changeset
   180
#	define LANDINFOD_LEVEL 1
bab1ebc37da0 (svn r5210) Many small changes which piled up: const, unsigned, variable scope, CSE for readability, DeMorgan, if cascades -> switch, whitespace, parentheses, bracing, misc.
tron
parents: 3890
diff changeset
   181
#endif
5568
75f13d7bfaed (svn r7565) -Codechange: Rework DEBUG functionality. Look for appropiate debugging levels to
Darkvater
parents: 5564
diff changeset
   182
	DEBUG(misc, LANDINFOD_LEVEL, "TILE: %#x (%i,%i)", tile, TileX(tile), TileY(tile));
75f13d7bfaed (svn r7565) -Codechange: Rework DEBUG functionality. Look for appropiate debugging levels to
Darkvater
parents: 5564
diff changeset
   183
	DEBUG(misc, LANDINFOD_LEVEL, "type_height  = %#x", _m[tile].type_height);
75f13d7bfaed (svn r7565) -Codechange: Rework DEBUG functionality. Look for appropiate debugging levels to
Darkvater
parents: 5564
diff changeset
   184
	DEBUG(misc, LANDINFOD_LEVEL, "m1           = %#x", _m[tile].m1);
75f13d7bfaed (svn r7565) -Codechange: Rework DEBUG functionality. Look for appropiate debugging levels to
Darkvater
parents: 5564
diff changeset
   185
	DEBUG(misc, LANDINFOD_LEVEL, "m2           = %#x", _m[tile].m2);
75f13d7bfaed (svn r7565) -Codechange: Rework DEBUG functionality. Look for appropiate debugging levels to
Darkvater
parents: 5564
diff changeset
   186
	DEBUG(misc, LANDINFOD_LEVEL, "m3           = %#x", _m[tile].m3);
75f13d7bfaed (svn r7565) -Codechange: Rework DEBUG functionality. Look for appropiate debugging levels to
Darkvater
parents: 5564
diff changeset
   187
	DEBUG(misc, LANDINFOD_LEVEL, "m4           = %#x", _m[tile].m4);
75f13d7bfaed (svn r7565) -Codechange: Rework DEBUG functionality. Look for appropiate debugging levels to
Darkvater
parents: 5564
diff changeset
   188
	DEBUG(misc, LANDINFOD_LEVEL, "m5           = %#x", _m[tile].m5);
5847
9ce114e1d90d (svn r8050) -Codechange: Rename map member extra to m6, since its usage has been widden.
belugas
parents: 5838
diff changeset
   189
	DEBUG(misc, LANDINFOD_LEVEL, "m6           = %#x", _m[tile].m6);
6658
59048224be55 (svn r9315) -Merge: The newhouses branch. With this merge comes almost complete support for
maedhros
parents: 6574
diff changeset
   190
	DEBUG(misc, LANDINFOD_LEVEL, "m7           = %#x", _me[tile].m7);
4000
bab1ebc37da0 (svn r5210) Many small changes which piled up: const, unsigned, variable scope, CSE for readability, DeMorgan, if cascades -> switch, whitespace, parentheses, bracing, misc.
tron
parents: 3890
diff changeset
   191
#undef LANDINFOD_LEVEL
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   192
}
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   193
6573
7624f942237f (svn r9050) -Codechange: Foo(void) -> Foo()
rubidium
parents: 6565
diff changeset
   194
void PlaceLandBlockInfo()
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   195
{
1914
5ede46fd496f (svn r2420) - Codechange: magic number elminitation of cursorsprites.
Darkvater
parents: 1891
diff changeset
   196
	if (_cursor.sprite == SPR_CURSOR_QUERY) {
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   197
		ResetObjectToPlace();
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   198
	} else {
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   199
		_place_proc = Place_LandInfo;
8385
aedd7656cfd1 (svn r11440) -Codechange: replace magic numbers with enumified WindowHighlightMode constants. Patch by SmatZ.
rubidium
parents: 8355
diff changeset
   200
		SetObjectToPlace(SPR_CURSOR_QUERY, PAL_NONE, VHM_RECT, WC_MAIN_TOOLBAR, 0);
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   201
	}
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   202
}
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   203
859
46839573bed8 (svn r1340) -Feature: scrolling credits list...finally! Hope nobody gets offended if I forgot them.
darkvater
parents: 842
diff changeset
   204
static const char *credits[] = {
46839573bed8 (svn r1340) -Feature: scrolling credits list...finally! Hope nobody gets offended if I forgot them.
darkvater
parents: 842
diff changeset
   205
	/*************************************************************************
46839573bed8 (svn r1340) -Feature: scrolling credits list...finally! Hope nobody gets offended if I forgot them.
darkvater
parents: 842
diff changeset
   206
	 *                      maximum length of string which fits in window   -^*/
46839573bed8 (svn r1340) -Feature: scrolling credits list...finally! Hope nobody gets offended if I forgot them.
darkvater
parents: 842
diff changeset
   207
	"Original design by Chris Sawyer",
46839573bed8 (svn r1340) -Feature: scrolling credits list...finally! Hope nobody gets offended if I forgot them.
darkvater
parents: 842
diff changeset
   208
	"Original graphics by Simon Foster",
46839573bed8 (svn r1340) -Feature: scrolling credits list...finally! Hope nobody gets offended if I forgot them.
darkvater
parents: 842
diff changeset
   209
	"",
1124
01fc35434ed6 (svn r1625) -Alphabetized credits list
darkvater
parents: 1105
diff changeset
   210
	"The OpenTTD team (in alphabetical order):",
8555
4f5730a15567 (svn r11620) -Change: Some are going, some are coming, some we do not know exactly. Little update on the OpenTTD Team
belugas
parents: 8549
diff changeset
   211
	"  Jean-Francois Claeys (Belugas) - GUI, newindustries and more",
4f5730a15567 (svn r11620) -Change: Some are going, some are coming, some we do not know exactly. Little update on the OpenTTD Team
belugas
parents: 8549
diff changeset
   212
	"  Bjarni Corfitzen (Bjarni) - MacOSX port, coder and vehicles",
4f5730a15567 (svn r11620) -Change: Some are going, some are coming, some we do not know exactly. Little update on the OpenTTD Team
belugas
parents: 8549
diff changeset
   213
	"  Matthijs Kooijman (blathijs) - Pathfinder-guru, pool rework",
4f5730a15567 (svn r11620) -Change: Some are going, some are coming, some we do not know exactly. Little update on the OpenTTD Team
belugas
parents: 8549
diff changeset
   214
	"  Loïc Guilloux (glx) - General coding",
9119
d2b7d20a8ab1 (svn r12206) -Fix: A comma is not a rare resource. Do not hesitate to use it when needed.
belugas
parents: 9101
diff changeset
   215
	"  Christoph Elsenhans (frosch) - General coding",
5355
cd06af29b842 (svn r7527) -Update appropiate files with release information for 0.5.0-RC1
Darkvater
parents: 5352
diff changeset
   216
	"  Jaroslav Mazanec (KUDr) - YAPG (Yet Another Pathfinder God) ;)",
6565
3cea8776104b (svn r9042) -Add : Maedhros as a developper
belugas
parents: 6540
diff changeset
   217
	"  Jonathan Coome (Maedhros) - High priest of the newGRF Temple",
5108
dc67d70b5a45 (svn r7182) -Feature: Merge utf8 branch. This brings us support for Unicode/UTF-8 and the option for fonts rendered by FreeType. Language changes to come.
peter1138
parents: 5079
diff changeset
   218
	"  Attila Bán (MiHaMiX) - WebTranslator, Nightlies, Wiki and bugtracker host",
7570
4a7a62ec3e3e (svn r10339) -Fix r10311: if you fix your own name, at least also update your description ;)
truelight
parents: 7554
diff changeset
   219
	"  Owen Rudge (orudge) - Forum host, OS/2 port",
8680
d9f919f13088 (svn r11747) -Change: Return of the prodigal son (or something). Little update (but highly noticed) on the OpenTTD Team
belugas
parents: 8653
diff changeset
   220
	"  Peter Nelson (peter1138) - Spiritual descendant from newGRF gods",
8555
4f5730a15567 (svn r11620) -Change: Some are going, some are coming, some we do not know exactly. Little update on the OpenTTD Team
belugas
parents: 8549
diff changeset
   221
	"  Remko Bijker (Rubidium) - Lead coder and way more",
4f5730a15567 (svn r11620) -Change: Some are going, some are coming, some we do not know exactly. Little update on the OpenTTD Team
belugas
parents: 8549
diff changeset
   222
	"  Benedikt Brüggemeier (skidd13) - Bug fixer and code reworker",
4f5730a15567 (svn r11620) -Change: Some are going, some are coming, some we do not know exactly. Little update on the OpenTTD Team
belugas
parents: 8549
diff changeset
   223
	"  Zdenek Sojka (SmatZ) - Bug finder and fixer",
4f5730a15567 (svn r11620) -Change: Some are going, some are coming, some we do not know exactly. Little update on the OpenTTD Team
belugas
parents: 8549
diff changeset
   224
	"",
4f5730a15567 (svn r11620) -Change: Some are going, some are coming, some we do not know exactly. Little update on the OpenTTD Team
belugas
parents: 8549
diff changeset
   225
	"Inactive Developers:",
4f5730a15567 (svn r11620) -Change: Some are going, some are coming, some we do not know exactly. Little update on the OpenTTD Team
belugas
parents: 8549
diff changeset
   226
	"  Victor Fischer (Celestar) - Programming everywhere you need him to",
4f5730a15567 (svn r11620) -Change: Some are going, some are coming, some we do not know exactly. Little update on the OpenTTD Team
belugas
parents: 8549
diff changeset
   227
	"  Tamás Faragó (Darkvater) - Ex-Lead coder",
1126
5d778d55d094 (svn r1627) -Fix: The tabulizer in action ^_^
darkvater
parents: 1125
diff changeset
   228
	"  Christoph Mallon (Tron) - Programmer, code correctness police",
1125
34615a848111 (svn r1626) -Updated readme and credits list.
darkvater
parents: 1124
diff changeset
   229
	"",
34615a848111 (svn r1626) -Updated readme and credits list.
darkvater
parents: 1124
diff changeset
   230
	"Retired Developers:",
34615a848111 (svn r1626) -Updated readme and credits list.
darkvater
parents: 1124
diff changeset
   231
	"  Ludvig Strigeus (ludde) - OpenTTD author, main coder (0.1 - 0.3.3)",
859
46839573bed8 (svn r1340) -Feature: scrolling credits list...finally! Hope nobody gets offended if I forgot them.
darkvater
parents: 842
diff changeset
   232
	"  Serge Paquet (vurlix) - Assistant project manager, coder (0.1 - 0.3.3)",
1826
d123cb6b11dc (svn r2331) - Fix (regression): fix text overflows in about box.
Darkvater
parents: 1821
diff changeset
   233
	"  Dominik Scherer (dominik81) - Lead programmer, GUI expert (0.3.0 - 0.3.6)",
8355
d2fd84767817 (svn r11409) -Update: as of now, I am a retired Developer, so mark me as such
truelight
parents: 8320
diff changeset
   234
	"  Patric Stout (TrueLight) - Programmer, webhoster (0.3 - pre0.6)",
859
46839573bed8 (svn r1340) -Feature: scrolling credits list...finally! Hope nobody gets offended if I forgot them.
darkvater
parents: 842
diff changeset
   235
	"",
46839573bed8 (svn r1340) -Feature: scrolling credits list...finally! Hope nobody gets offended if I forgot them.
darkvater
parents: 842
diff changeset
   236
	"Special thanks go out to:",
46839573bed8 (svn r1340) -Feature: scrolling credits list...finally! Hope nobody gets offended if I forgot them.
darkvater
parents: 842
diff changeset
   237
	"  Josef Drexler - For his great work on TTDPatch",
46839573bed8 (svn r1340) -Feature: scrolling credits list...finally! Hope nobody gets offended if I forgot them.
darkvater
parents: 842
diff changeset
   238
	"  Marcin Grzegorczyk - For his documentation of TTD internals",
8555
4f5730a15567 (svn r11620) -Change: Some are going, some are coming, some we do not know exactly. Little update on the OpenTTD Team
belugas
parents: 8549
diff changeset
   239
	"  Petr Baudis (pasky) - Many patches, newGRF support",
5108
dc67d70b5a45 (svn r7182) -Feature: Merge utf8 branch. This brings us support for Unicode/UTF-8 and the option for fonts rendered by FreeType. Language changes to come.
peter1138
parents: 5079
diff changeset
   240
	"  Stefan Meißner (sign_de) - For his work on the console",
8555
4f5730a15567 (svn r11620) -Change: Some are going, some are coming, some we do not know exactly. Little update on the OpenTTD Team
belugas
parents: 8549
diff changeset
   241
	"  Simon Sasburg (HackyKid) - Many bugfixes he has blessed us with",
1124
01fc35434ed6 (svn r1625) -Alphabetized credits list
darkvater
parents: 1105
diff changeset
   242
	"  Cian Duffy (MYOB) - BeOS port / manual writing",
4133
88f290592081 (svn r5489) -Fix: corrected tokai's name and morphos details (tokai)
truelight
parents: 4091
diff changeset
   243
	"  Christian Rosentreter (tokai) - MorphOS / AmigaOS port",
5355
cd06af29b842 (svn r7527) -Update appropiate files with release information for 0.5.0-RC1
Darkvater
parents: 5352
diff changeset
   244
	"  Richard Kempton (richK) - additional airports, initial TGP implementation",
859
46839573bed8 (svn r1340) -Feature: scrolling credits list...finally! Hope nobody gets offended if I forgot them.
darkvater
parents: 842
diff changeset
   245
	"",
5108
dc67d70b5a45 (svn r7182) -Feature: Merge utf8 branch. This brings us support for Unicode/UTF-8 and the option for fonts rendered by FreeType. Language changes to come.
peter1138
parents: 5079
diff changeset
   246
	"  Michael Blunck - Pre-Signals and Semaphores © 2003",
dc67d70b5a45 (svn r7182) -Feature: Merge utf8 branch. This brings us support for Unicode/UTF-8 and the option for fonts rendered by FreeType. Language changes to come.
peter1138
parents: 5079
diff changeset
   247
	"  George - Canal/Lock graphics © 2003-2004",
7187
f7dc3204d457 (svn r9923) -Add: support for Action 0 Road vehicles, property 1C, bit 0.
rubidium
parents: 7166
diff changeset
   248
	"  David Dallaston - Tram tracks",
859
46839573bed8 (svn r1340) -Feature: scrolling credits list...finally! Hope nobody gets offended if I forgot them.
darkvater
parents: 842
diff changeset
   249
	"  Marcin Grzegorczyk - Foundations for Tracks on Slopes",
46839573bed8 (svn r1340) -Feature: scrolling credits list...finally! Hope nobody gets offended if I forgot them.
darkvater
parents: 842
diff changeset
   250
	"  All Translators - Who made OpenTTD a truly international game",
46839573bed8 (svn r1340) -Feature: scrolling credits list...finally! Hope nobody gets offended if I forgot them.
darkvater
parents: 842
diff changeset
   251
	"  Bug Reporters - Without whom OpenTTD would still be full of bugs!",
46839573bed8 (svn r1340) -Feature: scrolling credits list...finally! Hope nobody gets offended if I forgot them.
darkvater
parents: 842
diff changeset
   252
	"",
46839573bed8 (svn r1340) -Feature: scrolling credits list...finally! Hope nobody gets offended if I forgot them.
darkvater
parents: 842
diff changeset
   253
	"",
1124
01fc35434ed6 (svn r1625) -Alphabetized credits list
darkvater
parents: 1105
diff changeset
   254
	"And last but not least:",
859
46839573bed8 (svn r1340) -Feature: scrolling credits list...finally! Hope nobody gets offended if I forgot them.
darkvater
parents: 842
diff changeset
   255
	"  Chris Sawyer - For an amazing game!"
46839573bed8 (svn r1340) -Feature: scrolling credits list...finally! Hope nobody gets offended if I forgot them.
darkvater
parents: 842
diff changeset
   256
};
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   257
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   258
static void AboutWindowProc(Window *w, WindowEvent *e)
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   259
{
2639
8a7342eb3a78 (svn r3181) -Bracing
tron
parents: 2631
diff changeset
   260
	switch (e->event) {
9234
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   261
		case WE_CREATE: // Set up window counter and start position of scroller
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   262
			WP(w, scroller_d).counter = 5;
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   263
			WP(w, scroller_d).height = w->height - 40;
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   264
			break;
859
46839573bed8 (svn r1340) -Feature: scrolling credits list...finally! Hope nobody gets offended if I forgot them.
darkvater
parents: 842
diff changeset
   265
9234
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   266
		case WE_PAINT: {
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   267
			int y = WP(w, scroller_d).height;
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   268
			DrawWindowWidgets(w);
859
46839573bed8 (svn r1340) -Feature: scrolling credits list...finally! Hope nobody gets offended if I forgot them.
darkvater
parents: 842
diff changeset
   269
9234
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   270
			/* Show original copyright and revision version */
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   271
			DrawStringCentered(210, 17, STR_00B6_ORIGINAL_COPYRIGHT, TC_FROMSTRING);
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   272
			DrawStringCentered(210, 17 + 10, STR_00B7_VERSION, TC_FROMSTRING);
859
46839573bed8 (svn r1340) -Feature: scrolling credits list...finally! Hope nobody gets offended if I forgot them.
darkvater
parents: 842
diff changeset
   273
9234
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   274
			/* Show all scrolling credits */
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   275
			for (uint i = 0; i < lengthof(credits); i++) {
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   276
				if (y >= 50 && y < (w->height - 40)) {
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   277
					DoDrawString(credits[i], 10, y, TC_BLACK);
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   278
				}
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   279
				y += 10;
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   280
			}
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   281
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   282
			/* If the last text has scrolled start anew from the start */
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   283
			if (y < 50) WP(w, scroller_d).height = w->height - 40;
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   284
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   285
			DoDrawStringCentered(210, w->height - 25, "Website: http://www.openttd.org", TC_BLACK);
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   286
			DrawStringCentered(210, w->height - 15, STR_00BA_COPYRIGHT_OPENTTD, TC_FROMSTRING);
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   287
		} break;
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   288
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   289
		case WE_TICK: // Timer to scroll the text and adjust the new top
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   290
			if (--WP(w, scroller_d).counter == 0) {
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   291
				WP(w, scroller_d).counter = 5;
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   292
				WP(w, scroller_d).height--;
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   293
				SetWindowDirty(w);
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   294
			}
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   295
			break;
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   296
	}
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   297
}
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   298
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   299
static const Widget _about_widgets[] = {
4344
5d0e40cd67b9 (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4326
diff changeset
   300
{   WWT_CLOSEBOX,   RESIZE_NONE,    14,     0,    10,     0,    13, STR_00C5,         STR_018B_CLOSE_WINDOW},
5d0e40cd67b9 (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4326
diff changeset
   301
{    WWT_CAPTION,   RESIZE_NONE,    14,    11,   419,     0,    13, STR_015B_OPENTTD, STR_NULL},
5d0e40cd67b9 (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4326
diff changeset
   302
{      WWT_PANEL,   RESIZE_NONE,    14,     0,   419,    14,   271, 0x0,              STR_NULL},
5d0e40cd67b9 (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4326
diff changeset
   303
{      WWT_FRAME,   RESIZE_NONE,    14,     5,   414,    40,   245, STR_NULL,         STR_NULL},
176
84990c4b9212 (svn r177) -Fix: padded out Widget code to solve warnings on C99 compiler (Tron)
darkvater
parents: 172
diff changeset
   304
{    WIDGETS_END},
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   305
};
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   306
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   307
static const WindowDesc _about_desc = {
7837
65d7362153a6 (svn r10704) -Codechange: provide an infrastructure to have resizable windows that are smaller than the default window size.
rubidium
parents: 7817
diff changeset
   308
	WDP_CENTER, WDP_CENTER, 420, 272, 420, 272,
6144
5a0ffbf27ced (svn r8511) -Codechange: make WindowClass an enumerated value.
rubidium
parents: 6001
diff changeset
   309
	WC_GAME_OPTIONS, WC_NONE,
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   310
	WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET,
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   311
	_about_widgets,
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   312
	AboutWindowProc
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   313
};
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   314
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   315
6573
7624f942237f (svn r9050) -Codechange: Foo(void) -> Foo()
rubidium
parents: 6565
diff changeset
   316
void ShowAboutWindow()
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   317
{
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   318
	DeleteWindowById(WC_GAME_OPTIONS, 0);
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   319
	AllocateWindowDesc(&_about_desc);
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   320
}
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   321
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   322
static int _tree_to_plant;
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   323
5919
2b58160d667d (svn r8128) -Codechange: Split sprite and palette remap into separate 32 bit values.
peter1138
parents: 5890
diff changeset
   324
static const PalSpriteID _tree_sprites[] = {
2b58160d667d (svn r8128) -Codechange: Split sprite and palette remap into separate 32 bit values.
peter1138
parents: 5890
diff changeset
   325
	{ 0x655, PAL_NONE }, { 0x663, PAL_NONE }, { 0x678, PAL_NONE }, { 0x62B, PAL_NONE },
2b58160d667d (svn r8128) -Codechange: Split sprite and palette remap into separate 32 bit values.
peter1138
parents: 5890
diff changeset
   326
	{ 0x647, PAL_NONE }, { 0x639, PAL_NONE }, { 0x64E, PAL_NONE }, { 0x632, PAL_NONE },
2b58160d667d (svn r8128) -Codechange: Split sprite and palette remap into separate 32 bit values.
peter1138
parents: 5890
diff changeset
   327
	{ 0x67F, PAL_NONE }, { 0x68D, PAL_NONE }, { 0x69B, PAL_NONE }, { 0x6A9, PAL_NONE },
2b58160d667d (svn r8128) -Codechange: Split sprite and palette remap into separate 32 bit values.
peter1138
parents: 5890
diff changeset
   328
	{ 0x6AF, PAL_NONE }, { 0x6D2, PAL_NONE }, { 0x6D9, PAL_NONE }, { 0x6C4, PAL_NONE },
2b58160d667d (svn r8128) -Codechange: Split sprite and palette remap into separate 32 bit values.
peter1138
parents: 5890
diff changeset
   329
	{ 0x6CB, PAL_NONE }, { 0x6B6, PAL_NONE }, { 0x6BD, PAL_NONE }, { 0x6E0, PAL_NONE },
2b58160d667d (svn r8128) -Codechange: Split sprite and palette remap into separate 32 bit values.
peter1138
parents: 5890
diff changeset
   330
	{ 0x72E, PAL_NONE }, { 0x734, PAL_NONE }, { 0x74A, PAL_NONE }, { 0x74F, PAL_NONE },
2b58160d667d (svn r8128) -Codechange: Split sprite and palette remap into separate 32 bit values.
peter1138
parents: 5890
diff changeset
   331
	{ 0x76B, PAL_NONE }, { 0x78F, PAL_NONE }, { 0x788, PAL_NONE }, { 0x77B, PAL_NONE },
2b58160d667d (svn r8128) -Codechange: Split sprite and palette remap into separate 32 bit values.
peter1138
parents: 5890
diff changeset
   332
	{ 0x75F, PAL_NONE }, { 0x774, PAL_NONE }, { 0x720, PAL_NONE }, { 0x797, PAL_NONE },
2b58160d667d (svn r8128) -Codechange: Split sprite and palette remap into separate 32 bit values.
peter1138
parents: 5890
diff changeset
   333
	{ 0x79E, PAL_NONE }, { 0x7A5, PALETTE_TO_GREEN }, { 0x7AC, PALETTE_TO_RED }, { 0x7B3, PAL_NONE },
2b58160d667d (svn r8128) -Codechange: Split sprite and palette remap into separate 32 bit values.
peter1138
parents: 5890
diff changeset
   334
	{ 0x7BA, PAL_NONE }, { 0x7C1, PALETTE_TO_RED, }, { 0x7C8, PALETTE_TO_PALE_GREEN }, { 0x7CF, PALETTE_TO_YELLOW }, { 0x7D6, PALETTE_TO_RED }
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   335
};
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   336
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   337
static void BuildTreesWndProc(Window *w, WindowEvent *e)
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   338
{
2639
8a7342eb3a78 (svn r3181) -Bracing
tron
parents: 2631
diff changeset
   339
	switch (e->event) {
9327
4520e2d84651 (svn r12579) -Change: reset cursor when the Plant trees GUI is opened
smatz
parents: 9315
diff changeset
   340
		case WE_CREATE:
4520e2d84651 (svn r12579) -Change: reset cursor when the Plant trees GUI is opened
smatz
parents: 9315
diff changeset
   341
			ResetObjectToPlace();
4520e2d84651 (svn r12579) -Change: reset cursor when the Plant trees GUI is opened
smatz
parents: 9315
diff changeset
   342
			break;
4520e2d84651 (svn r12579) -Change: reset cursor when the Plant trees GUI is opened
smatz
parents: 9315
diff changeset
   343
9234
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   344
		case WE_PAINT: {
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   345
			DrawWindowWidgets(w);
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   346
9315
336e6518acb3 (svn r12565) -Cleanup: variable scope in misc\*.cpp
smatz
parents: 9305
diff changeset
   347
			int i = WP(w, tree_d).base = _tree_base_by_landscape[_opt.landscape];
336e6518acb3 (svn r12565) -Cleanup: variable scope in misc\*.cpp
smatz
parents: 9305
diff changeset
   348
			int count = WP(w, tree_d).count = _tree_count_by_landscape[_opt.landscape];
9234
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   349
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   350
			int x = 18;
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   351
			int y = 54;
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   352
			do {
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   353
				DrawSprite(_tree_sprites[i].sprite, _tree_sprites[i].pal, x, y);
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   354
				x += 35;
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   355
				if (!(++i & 3)) {
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   356
					x -= 35 * 4;
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   357
					y += 47;
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   358
				}
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   359
			} while (--count);
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   360
		} break;
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   361
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   362
		case WE_CLICK: {
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   363
			int wid = e->we.click.widget;
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   364
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   365
			switch (wid) {
9315
336e6518acb3 (svn r12565) -Cleanup: variable scope in misc\*.cpp
smatz
parents: 9305
diff changeset
   366
				case 0:
9234
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   367
					ResetObjectToPlace();
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   368
					break;
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   369
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   370
				case 3: case 4: case 5: case 6:
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   371
				case 7: case 8: case 9: case 10:
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   372
				case 11:case 12: case 13: case 14:
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   373
					if (wid - 3 >= WP(w, tree_d).count) break;
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   374
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   375
					if (HandlePlacePushButton(w, wid, SPR_CURSOR_TREE, VHM_RECT, NULL)) {
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   376
						_tree_to_plant = WP(w, tree_d).base + wid - 3;
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   377
					}
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   378
					break;
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   379
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   380
				case 15: // tree of random type.
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   381
					if (HandlePlacePushButton(w, 15, SPR_CURSOR_TREE, VHM_RECT, NULL)) {
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   382
						_tree_to_plant = -1;
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   383
					}
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   384
					break;
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   385
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   386
				case 16: // place trees randomly over the landscape
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   387
					w->LowerWidget(16);
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   388
					w->flags4 |= 5 << WF_TIMEOUT_SHL;
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   389
					SndPlayFx(SND_15_BEEP);
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   390
					PlaceTreesRandomly();
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   391
					MarkWholeScreenDirty();
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   392
					break;
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   393
			}
9234
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   394
		} break;
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   395
9234
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   396
		case WE_PLACE_OBJ:
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   397
			VpStartPlaceSizing(e->we.place.tile, VPM_X_AND_Y_LIMITED, DDSP_PLANT_TREES);
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   398
			VpSetPlaceSizingLimit(20);
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   399
			break;
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   400
9234
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   401
		case WE_PLACE_DRAG:
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   402
			VpSelectTilesWithMethod(e->we.place.pt.x, e->we.place.pt.y, e->we.place.select_method);
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   403
			return;
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   404
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   405
		case WE_PLACE_MOUSEUP:
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   406
			if (e->we.place.pt.x != -1 && e->we.place.select_proc == DDSP_PLANT_TREES) {
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   407
				DoCommandP(e->we.place.tile, _tree_to_plant, e->we.place.starttile, NULL,
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   408
					CMD_PLANT_TREE | CMD_MSG(STR_2805_CAN_T_PLANT_TREE_HERE));
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   409
			}
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   410
			break;
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   411
9234
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   412
		case WE_TIMEOUT:
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   413
			w->RaiseWidget(16);
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   414
			break;
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   415
9234
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   416
		case WE_ABORT_PLACE_OBJ:
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   417
			w->RaiseButtons();
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   418
			break;
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   419
	}
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   420
}
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   421
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   422
static const Widget _build_trees_widgets[] = {
4344
5d0e40cd67b9 (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4326
diff changeset
   423
{   WWT_CLOSEBOX,   RESIZE_NONE,     7,     0,    10,     0,    13, STR_00C5,              STR_018B_CLOSE_WINDOW},
5d0e40cd67b9 (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4326
diff changeset
   424
{    WWT_CAPTION,   RESIZE_NONE,     7,    11,   142,     0,    13, STR_2802_TREES,        STR_018C_WINDOW_TITLE_DRAG_THIS},
5d0e40cd67b9 (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4326
diff changeset
   425
{      WWT_PANEL,   RESIZE_NONE,     7,     0,   142,    14,   170, 0x0,                   STR_NULL},
5d0e40cd67b9 (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4326
diff changeset
   426
{      WWT_PANEL,   RESIZE_NONE,    14,     2,    35,    16,    61, 0x0,                   STR_280D_SELECT_TREE_TYPE_TO_PLANT},
5d0e40cd67b9 (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4326
diff changeset
   427
{      WWT_PANEL,   RESIZE_NONE,    14,    37,    70,    16,    61, 0x0,                   STR_280D_SELECT_TREE_TYPE_TO_PLANT},
5d0e40cd67b9 (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4326
diff changeset
   428
{      WWT_PANEL,   RESIZE_NONE,    14,    72,   105,    16,    61, 0x0,                   STR_280D_SELECT_TREE_TYPE_TO_PLANT},
5d0e40cd67b9 (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4326
diff changeset
   429
{      WWT_PANEL,   RESIZE_NONE,    14,   107,   140,    16,    61, 0x0,                   STR_280D_SELECT_TREE_TYPE_TO_PLANT},
5d0e40cd67b9 (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4326
diff changeset
   430
{      WWT_PANEL,   RESIZE_NONE,    14,     2,    35,    63,   108, 0x0,                   STR_280D_SELECT_TREE_TYPE_TO_PLANT},
5d0e40cd67b9 (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4326
diff changeset
   431
{      WWT_PANEL,   RESIZE_NONE,    14,    37,    70,    63,   108, 0x0,                   STR_280D_SELECT_TREE_TYPE_TO_PLANT},
5d0e40cd67b9 (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4326
diff changeset
   432
{      WWT_PANEL,   RESIZE_NONE,    14,    72,   105,    63,   108, 0x0,                   STR_280D_SELECT_TREE_TYPE_TO_PLANT},
5d0e40cd67b9 (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4326
diff changeset
   433
{      WWT_PANEL,   RESIZE_NONE,    14,   107,   140,    63,   108, 0x0,                   STR_280D_SELECT_TREE_TYPE_TO_PLANT},
5d0e40cd67b9 (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4326
diff changeset
   434
{      WWT_PANEL,   RESIZE_NONE,    14,     2,    35,   110,   155, 0x0,                   STR_280D_SELECT_TREE_TYPE_TO_PLANT},
5d0e40cd67b9 (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4326
diff changeset
   435
{      WWT_PANEL,   RESIZE_NONE,    14,    37,    70,   110,   155, 0x0,                   STR_280D_SELECT_TREE_TYPE_TO_PLANT},
5d0e40cd67b9 (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4326
diff changeset
   436
{      WWT_PANEL,   RESIZE_NONE,    14,    72,   105,   110,   155, 0x0,                   STR_280D_SELECT_TREE_TYPE_TO_PLANT},
5d0e40cd67b9 (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4326
diff changeset
   437
{      WWT_PANEL,   RESIZE_NONE,    14,   107,   140,   110,   155, 0x0,                   STR_280D_SELECT_TREE_TYPE_TO_PLANT},
5d0e40cd67b9 (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4326
diff changeset
   438
{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   140,   157,   168, STR_TREES_RANDOM_TYPE, STR_TREES_RANDOM_TYPE_TIP},
176
84990c4b9212 (svn r177) -Fix: padded out Widget code to solve warnings on C99 compiler (Tron)
darkvater
parents: 172
diff changeset
   439
{    WIDGETS_END},
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   440
};
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   441
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   442
static const WindowDesc _build_trees_desc = {
7837
65d7362153a6 (svn r10704) -Codechange: provide an infrastructure to have resizable windows that are smaller than the default window size.
rubidium
parents: 7817
diff changeset
   443
	497, 22, 143, 171, 143, 171,
606
0e507bb0f63a (svn r1030) Some toolbar icons are arranged differently:
dominik
parents: 598
diff changeset
   444
	WC_BUILD_TREES, WC_SCEN_LAND_GEN,
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   445
	WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET,
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   446
	_build_trees_widgets,
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   447
	BuildTreesWndProc
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   448
};
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   449
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   450
static const Widget _build_trees_scen_widgets[] = {
4344
5d0e40cd67b9 (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4326
diff changeset
   451
{   WWT_CLOSEBOX,   RESIZE_NONE,     7,     0,    10,     0,    13, STR_00C5,              STR_018B_CLOSE_WINDOW},
5d0e40cd67b9 (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4326
diff changeset
   452
{    WWT_CAPTION,   RESIZE_NONE,     7,    11,   142,     0,    13, STR_2802_TREES,        STR_018C_WINDOW_TITLE_DRAG_THIS},
5d0e40cd67b9 (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4326
diff changeset
   453
{      WWT_PANEL,   RESIZE_NONE,     7,     0,   142,    14,   183, 0x0,                   STR_NULL},
5d0e40cd67b9 (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4326
diff changeset
   454
{      WWT_PANEL,   RESIZE_NONE,    14,     2,    35,    16,    61, 0x0,                   STR_280D_SELECT_TREE_TYPE_TO_PLANT},
5d0e40cd67b9 (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4326
diff changeset
   455
{      WWT_PANEL,   RESIZE_NONE,    14,    37,    70,    16,    61, 0x0,                   STR_280D_SELECT_TREE_TYPE_TO_PLANT},
5d0e40cd67b9 (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4326
diff changeset
   456
{      WWT_PANEL,   RESIZE_NONE,    14,    72,   105,    16,    61, 0x0,                   STR_280D_SELECT_TREE_TYPE_TO_PLANT},
5d0e40cd67b9 (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4326
diff changeset
   457
{      WWT_PANEL,   RESIZE_NONE,    14,   107,   140,    16,    61, 0x0,                   STR_280D_SELECT_TREE_TYPE_TO_PLANT},
5d0e40cd67b9 (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4326
diff changeset
   458
{      WWT_PANEL,   RESIZE_NONE,    14,     2,    35,    63,   108, 0x0,                   STR_280D_SELECT_TREE_TYPE_TO_PLANT},
5d0e40cd67b9 (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4326
diff changeset
   459
{      WWT_PANEL,   RESIZE_NONE,    14,    37,    70,    63,   108, 0x0,                   STR_280D_SELECT_TREE_TYPE_TO_PLANT},
5d0e40cd67b9 (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4326
diff changeset
   460
{      WWT_PANEL,   RESIZE_NONE,    14,    72,   105,    63,   108, 0x0,                   STR_280D_SELECT_TREE_TYPE_TO_PLANT},
5d0e40cd67b9 (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4326
diff changeset
   461
{      WWT_PANEL,   RESIZE_NONE,    14,   107,   140,    63,   108, 0x0,                   STR_280D_SELECT_TREE_TYPE_TO_PLANT},
5d0e40cd67b9 (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4326
diff changeset
   462
{      WWT_PANEL,   RESIZE_NONE,    14,     2,    35,   110,   155, 0x0,                   STR_280D_SELECT_TREE_TYPE_TO_PLANT},
5d0e40cd67b9 (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4326
diff changeset
   463
{      WWT_PANEL,   RESIZE_NONE,    14,    37,    70,   110,   155, 0x0,                   STR_280D_SELECT_TREE_TYPE_TO_PLANT},
5d0e40cd67b9 (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4326
diff changeset
   464
{      WWT_PANEL,   RESIZE_NONE,    14,    72,   105,   110,   155, 0x0,                   STR_280D_SELECT_TREE_TYPE_TO_PLANT},
5d0e40cd67b9 (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4326
diff changeset
   465
{      WWT_PANEL,   RESIZE_NONE,    14,   107,   140,   110,   155, 0x0,                   STR_280D_SELECT_TREE_TYPE_TO_PLANT},
5d0e40cd67b9 (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4326
diff changeset
   466
{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   140,   157,   168, STR_TREES_RANDOM_TYPE, STR_TREES_RANDOM_TYPE_TIP},
5d0e40cd67b9 (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4326
diff changeset
   467
{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   140,   170,   181, STR_028A_RANDOM_TREES, STR_028B_PLANT_TREES_RANDOMLY_OVER},
176
84990c4b9212 (svn r177) -Fix: padded out Widget code to solve warnings on C99 compiler (Tron)
darkvater
parents: 172
diff changeset
   468
{    WIDGETS_END},
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   469
};
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   470
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   471
static const WindowDesc _build_trees_scen_desc = {
7837
65d7362153a6 (svn r10704) -Codechange: provide an infrastructure to have resizable windows that are smaller than the default window size.
rubidium
parents: 7817
diff changeset
   472
	WDP_AUTO, WDP_AUTO, 143, 184, 143, 184,
6144
5a0ffbf27ced (svn r8511) -Codechange: make WindowClass an enumerated value.
rubidium
parents: 6001
diff changeset
   473
	WC_BUILD_TREES, WC_NONE,
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   474
	WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET,
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   475
	_build_trees_scen_widgets,
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   476
	BuildTreesWndProc
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   477
};
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   478
193
0a7025304867 (svn r194) -Codechange: stripping trailing-spaces. Please keep this that way!
truelight
parents: 179
diff changeset
   479
6573
7624f942237f (svn r9050) -Codechange: Foo(void) -> Foo()
rubidium
parents: 6565
diff changeset
   480
void ShowBuildTreesToolbar()
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   481
{
5005
21e84e53c732 (svn r7022) -Fix [FS#292]: Properly guard against viewing company-sensitive information from
Darkvater
parents: 4994
diff changeset
   482
	if (!IsValidPlayer(_current_player)) return;
1846
c4c9ded67c3c (svn r2351) -Fix: It was possible to open more than one tree window
tron
parents: 1843
diff changeset
   483
	AllocateWindowDescFront(&_build_trees_desc, 0);
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   484
}
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   485
6573
7624f942237f (svn r9050) -Codechange: Foo(void) -> Foo()
rubidium
parents: 6565
diff changeset
   486
void ShowBuildTreesScenToolbar()
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   487
{
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   488
	AllocateWindowDescFront(&_build_trees_scen_desc, 0);
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   489
}
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   490
7498
ce6588257e8d (svn r10258) -Codechange: as we are now using int64 all over the place, it's better to use int64 variables in the string generating too instead of packing them into two int32s.
rubidium
parents: 7494
diff changeset
   491
static uint64 _errmsg_decode_params[20];
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   492
static StringID _errmsg_message_1, _errmsg_message_2;
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   493
static uint _errmsg_duration;
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   494
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   495
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   496
static const Widget _errmsg_widgets[] = {
4344
5d0e40cd67b9 (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4326
diff changeset
   497
{   WWT_CLOSEBOX,   RESIZE_NONE,     4,     0,    10,     0,    13, STR_00C5,         STR_018B_CLOSE_WINDOW},
5d0e40cd67b9 (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4326
diff changeset
   498
{    WWT_CAPTION,   RESIZE_NONE,     4,    11,   239,     0,    13, STR_00B2_MESSAGE, STR_NULL},
5d0e40cd67b9 (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4326
diff changeset
   499
{      WWT_PANEL,   RESIZE_NONE,     4,     0,   239,    14,    45, 0x0,              STR_NULL},
176
84990c4b9212 (svn r177) -Fix: padded out Widget code to solve warnings on C99 compiler (Tron)
darkvater
parents: 172
diff changeset
   500
{    WIDGETS_END},
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   501
};
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   502
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   503
static const Widget _errmsg_face_widgets[] = {
4344
5d0e40cd67b9 (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4326
diff changeset
   504
{   WWT_CLOSEBOX,   RESIZE_NONE,     4,     0,    10,     0,    13, STR_00C5,              STR_018B_CLOSE_WINDOW},
5d0e40cd67b9 (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4326
diff changeset
   505
{    WWT_CAPTION,   RESIZE_NONE,     4,    11,   333,     0,    13, STR_00B3_MESSAGE_FROM, STR_NULL},
5d0e40cd67b9 (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4326
diff changeset
   506
{      WWT_PANEL,   RESIZE_NONE,     4,     0,   333,    14,   136, 0x0,                   STR_NULL},
176
84990c4b9212 (svn r177) -Fix: padded out Widget code to solve warnings on C99 compiler (Tron)
darkvater
parents: 172
diff changeset
   507
{   WIDGETS_END},
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   508
};
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   509
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   510
static void ErrmsgWndProc(Window *w, WindowEvent *e)
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   511
{
2639
8a7342eb3a78 (svn r3181) -Bracing
tron
parents: 2631
diff changeset
   512
	switch (e->event) {
9234
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   513
		case WE_PAINT:
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   514
			CopyInDParam(0, _errmsg_decode_params, lengthof(_errmsg_decode_params));
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   515
			DrawWindowWidgets(w);
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   516
			CopyInDParam(0, _errmsg_decode_params, lengthof(_errmsg_decode_params));
8246
ff7b892d8a28 (svn r11287) -Codechange: add support for pushing paramaters into NewIndustries' error messages. Patch by Csaboka.
rubidium
parents: 8017
diff changeset
   517
9234
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   518
			/* If the error message comes from a NewGRF, we must use the text ref. stack reserved for error messages.
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   519
			* If the message doesn't come from a NewGRF, it won't use the TTDP-style text ref. stack, so we won't hurt anything
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   520
			*/
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   521
			SwitchToErrorRefStack();
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   522
			RewindTextRefStack();
8246
ff7b892d8a28 (svn r11287) -Codechange: add support for pushing paramaters into NewIndustries' error messages. Patch by Csaboka.
rubidium
parents: 8017
diff changeset
   523
9234
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   524
			if (!IsWindowOfPrototype(w, _errmsg_face_widgets)) {
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   525
				DrawStringMultiCenter(
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   526
					120,
9234
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   527
					(_errmsg_message_1 == INVALID_STRING_ID ? 25 : 15),
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   528
					_errmsg_message_2,
6523
d41352ca5c1e (svn r8977) -Codechange: Remove the hardcoded maximum width for some drawstrings and replace them with a portion of w->width. Only visible improvement is QueryWndProc which will not write exactly to the edge of the window anymore.
Darkvater
parents: 6516
diff changeset
   529
					w->width - 2);
9234
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   530
				if (_errmsg_message_1 != INVALID_STRING_ID) {
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   531
					DrawStringMultiCenter(
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   532
						120,
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   533
						30,
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   534
						_errmsg_message_1,
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   535
						w->width - 2);
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   536
				}
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   537
			} else {
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   538
				const Player *p = GetPlayer((PlayerID)GetDParamX(_errmsg_decode_params,2));
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   539
				DrawPlayerFace(p->face, p->player_color, 2, 16);
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   540
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   541
				DrawStringMultiCenter(
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   542
					214,
9234
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   543
					(_errmsg_message_1 == INVALID_STRING_ID ? 65 : 45),
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   544
					_errmsg_message_2,
6523
d41352ca5c1e (svn r8977) -Codechange: Remove the hardcoded maximum width for some drawstrings and replace them with a portion of w->width. Only visible improvement is QueryWndProc which will not write exactly to the edge of the window anymore.
Darkvater
parents: 6516
diff changeset
   545
					w->width - 2);
9234
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   546
				if (_errmsg_message_1 != INVALID_STRING_ID) {
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   547
					DrawStringMultiCenter(
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   548
						214,
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   549
						90,
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   550
						_errmsg_message_1,
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   551
						w->width - 2);
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   552
				}
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   553
			}
2639
8a7342eb3a78 (svn r3181) -Bracing
tron
parents: 2631
diff changeset
   554
9234
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   555
			/* Switch back to the normal text ref. stack for NewGRF texts */
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   556
			SwitchToNormalRefStack();
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   557
			break;
2639
8a7342eb3a78 (svn r3181) -Bracing
tron
parents: 2631
diff changeset
   558
9234
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   559
		case WE_MOUSELOOP:
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   560
			if (_right_button_down) DeleteWindow(w);
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   561
			break;
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   562
9234
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   563
		case WE_4:
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   564
			if (--_errmsg_duration == 0) DeleteWindow(w);
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   565
			break;
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   566
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   567
		case WE_DESTROY:
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   568
			SetRedErrorSquare(0);
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   569
			_switch_mode_errorstr = INVALID_STRING_ID;
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   570
			break;
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   571
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   572
		case WE_KEYPRESS:
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   573
			if (e->we.keypress.keycode == WKC_SPACE) {
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   574
				/* Don't continue. */
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   575
				e->we.keypress.cont = false;
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   576
				DeleteWindow(w);
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   577
			}
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   578
			break;
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   579
	}
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   580
}
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   581
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   582
void ShowErrorMessage(StringID msg_1, StringID msg_2, int x, int y)
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   583
{
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   584
	DeleteWindowById(WC_ERRMSG, 0);
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   585
9234
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   586
	if (msg_2 == STR_NULL) msg_2 = STR_EMPTY;
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   587
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   588
	_errmsg_message_1 = msg_1;
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   589
	_errmsg_message_2 = msg_2;
7762
03721db0ac1c (svn r10587) -Codechange: move the string/dparam related stuff from variables.h to strings.h
rubidium
parents: 7737
diff changeset
   590
	CopyOutDParam(_errmsg_decode_params, 0, lengthof(_errmsg_decode_params));
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   591
	_errmsg_duration = _patches.errmsg_duration;
5120
e12dfc67761f (svn r7200) -Codechange: remove unneeded redraw (console.c), coding style, use FindWindowById
Darkvater
parents: 5116
diff changeset
   592
	if (!_errmsg_duration) return;
193
0a7025304867 (svn r194) -Codechange: stripping trailing-spaces. Please keep this that way!
truelight
parents: 179
diff changeset
   593
9315
336e6518acb3 (svn r12565) -Cleanup: variable scope in misc\*.cpp
smatz
parents: 9305
diff changeset
   594
	Point pt;
336e6518acb3 (svn r12565) -Cleanup: variable scope in misc\*.cpp
smatz
parents: 9305
diff changeset
   595
	const ViewPort *vp;
336e6518acb3 (svn r12565) -Cleanup: variable scope in misc\*.cpp
smatz
parents: 9305
diff changeset
   596
	Window *w;
336e6518acb3 (svn r12565) -Cleanup: variable scope in misc\*.cpp
smatz
parents: 9305
diff changeset
   597
534
17ab2f22ff74 (svn r901) Small step in the process to clean up the DPARAM mess:
tron
parents: 507
diff changeset
   598
	if (_errmsg_message_1 != STR_013B_OWNED_BY || GetDParamX(_errmsg_decode_params,2) >= 8) {
9234
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   599
		if ((x | y) != 0) {
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   600
			pt = RemapCoords2(x, y);
5120
e12dfc67761f (svn r7200) -Codechange: remove unneeded redraw (console.c), coding style, use FindWindowById
Darkvater
parents: 5116
diff changeset
   601
			vp = FindWindowById(WC_MAIN_WINDOW, 0)->viewport;
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   602
6527
f584ab6d87f8 (svn r8987) -Cleanup: doxygen changes. Again. Mostly (still) @files missing tags and (more than just) a few comments style.
belugas
parents: 6523
diff changeset
   603
			/* move x pos to opposite corner */
7122
0607a15aedc0 (svn r9846) -Codechange: introduced ZOOM_LVL_MIN and ZOOM_LVL_MAX for the obvious reasons
truelight
parents: 6988
diff changeset
   604
			pt.x = UnScaleByZoom(pt.x - vp->virtual_left, vp->zoom) + vp->left;
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   605
			pt.x = (pt.x < (_screen.width >> 1)) ? _screen.width - 260 : 20;
193
0a7025304867 (svn r194) -Codechange: stripping trailing-spaces. Please keep this that way!
truelight
parents: 179
diff changeset
   606
6527
f584ab6d87f8 (svn r8987) -Cleanup: doxygen changes. Again. Mostly (still) @files missing tags and (more than just) a few comments style.
belugas
parents: 6523
diff changeset
   607
			/* move y pos to opposite corner */
7122
0607a15aedc0 (svn r9846) -Codechange: introduced ZOOM_LVL_MIN and ZOOM_LVL_MAX for the obvious reasons
truelight
parents: 6988
diff changeset
   608
			pt.y = UnScaleByZoom(pt.y - vp->virtual_top, vp->zoom) + vp->top;
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   609
			pt.y = (pt.y < (_screen.height >> 1)) ? _screen.height - 80 : 100;
193
0a7025304867 (svn r194) -Codechange: stripping trailing-spaces. Please keep this that way!
truelight
parents: 179
diff changeset
   610
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   611
		} else {
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   612
			pt.x = (_screen.width - 240) >> 1;
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   613
			pt.y = (_screen.height - 46) >> 1;
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   614
		}
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   615
		w = AllocateWindow(pt.x, pt.y, 240, 46, ErrmsgWndProc, WC_ERRMSG, _errmsg_widgets);
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   616
	} else {
9234
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   617
		if ((x | y) != 0) {
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   618
			pt = RemapCoords2(x, y);
5120
e12dfc67761f (svn r7200) -Codechange: remove unneeded redraw (console.c), coding style, use FindWindowById
Darkvater
parents: 5116
diff changeset
   619
			vp = FindWindowById(WC_MAIN_WINDOW, 0)->viewport;
8418
b49fc6be1ab9 (svn r11475) -Codechange: rename clamp and clampu to Clamp and ClampU to fit with the coding style
skidd13
parents: 8385
diff changeset
   620
			pt.x = Clamp(UnScaleByZoom(pt.x - vp->virtual_left, vp->zoom) + vp->left - (334/2), 0, _screen.width - 334);
b49fc6be1ab9 (svn r11475) -Codechange: rename clamp and clampu to Clamp and ClampU to fit with the coding style
skidd13
parents: 8385
diff changeset
   621
			pt.y = Clamp(UnScaleByZoom(pt.y - vp->virtual_top, vp->zoom) + vp->top - (137/2), 22, _screen.height - 137);
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   622
		} else {
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   623
			pt.x = (_screen.width - 334) >> 1;
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   624
			pt.y = (_screen.height - 137) >> 1;
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   625
		}
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   626
		w = AllocateWindow(pt.x, pt.y, 334, 137, ErrmsgWndProc, WC_ERRMSG, _errmsg_face_widgets);
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   627
	}
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   628
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   629
	w->desc_flags = WDF_STD_BTN | WDF_DEF_WIDGET;
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   630
}
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   631
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   632
7486
d130c10f4dab (svn r10246) -Fix (r10297): some forgotten money conversions and truncation issues. Thanks to benc for providing the patch.
rubidium
parents: 7449
diff changeset
   633
void ShowEstimatedCostOrIncome(Money cost, int x, int y)
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   634
{
2498
befad2fe53d2 (svn r3024) -Codechange: Another batch of replacements of int/uint/int16/byte/-1 with proper types and constants
tron
parents: 2475
diff changeset
   635
	StringID msg = STR_0805_ESTIMATED_COST;
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   636
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   637
	if (cost < 0) {
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   638
		cost = -cost;
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   639
		msg = STR_0807_ESTIMATED_INCOME;
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   640
	}
7498
ce6588257e8d (svn r10258) -Codechange: as we are now using int64 all over the place, it's better to use int64 variables in the string generating too instead of packing them into two int32s.
rubidium
parents: 7494
diff changeset
   641
	SetDParam(0, cost);
2498
befad2fe53d2 (svn r3024) -Codechange: Another batch of replacements of int/uint/int16/byte/-1 with proper types and constants
tron
parents: 2475
diff changeset
   642
	ShowErrorMessage(INVALID_STRING_ID, msg, x, y);
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   643
}
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   644
7486
d130c10f4dab (svn r10246) -Fix (r10297): some forgotten money conversions and truncation issues. Thanks to benc for providing the patch.
rubidium
parents: 7449
diff changeset
   645
void ShowCostOrIncomeAnimation(int x, int y, int z, Money cost)
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   646
{
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   647
	Point pt = RemapCoords(x,y,z);
9315
336e6518acb3 (svn r12565) -Cleanup: variable scope in misc\*.cpp
smatz
parents: 9305
diff changeset
   648
	StringID msg = STR_0801_COST;
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   649
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   650
	if (cost < 0) {
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   651
		cost = -cost;
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   652
		msg = STR_0803_INCOME;
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   653
	}
7498
ce6588257e8d (svn r10258) -Codechange: as we are now using int64 all over the place, it's better to use int64 variables in the string generating too instead of packing them into two int32s.
rubidium
parents: 7494
diff changeset
   654
	SetDParam(0, cost);
7494
99eac2a2cd8b (svn r10254) -Feature: loading indicator, which shows in % how full a vehicle is while loading/unloading (TheJosh)
truelight
parents: 7487
diff changeset
   655
	AddTextEffect(msg, pt.x, pt.y, 0x250, TE_RISING);
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   656
}
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   657
7486
d130c10f4dab (svn r10246) -Fix (r10297): some forgotten money conversions and truncation issues. Thanks to benc for providing the patch.
rubidium
parents: 7449
diff changeset
   658
void ShowFeederIncomeAnimation(int x, int y, int z, Money cost)
1935
f43f062c9498 (svn r2441) -Feature: You can now give transfer order to set up feeder systems
celestar
parents: 1914
diff changeset
   659
{
f43f062c9498 (svn r2441) -Feature: You can now give transfer order to set up feeder systems
celestar
parents: 1914
diff changeset
   660
	Point pt = RemapCoords(x,y,z);
f43f062c9498 (svn r2441) -Feature: You can now give transfer order to set up feeder systems
celestar
parents: 1914
diff changeset
   661
7498
ce6588257e8d (svn r10258) -Codechange: as we are now using int64 all over the place, it's better to use int64 variables in the string generating too instead of packing them into two int32s.
rubidium
parents: 7494
diff changeset
   662
	SetDParam(0, cost);
7494
99eac2a2cd8b (svn r10254) -Feature: loading indicator, which shows in % how full a vehicle is while loading/unloading (TheJosh)
truelight
parents: 7487
diff changeset
   663
	AddTextEffect(STR_FEEDER, pt.x, pt.y, 0x250, TE_RISING);
99eac2a2cd8b (svn r10254) -Feature: loading indicator, which shows in % how full a vehicle is while loading/unloading (TheJosh)
truelight
parents: 7487
diff changeset
   664
}
99eac2a2cd8b (svn r10254) -Feature: loading indicator, which shows in % how full a vehicle is while loading/unloading (TheJosh)
truelight
parents: 7487
diff changeset
   665
7510
acb7cfe27b60 (svn r10270) -Add: prefixed the loading indicator with an arrow, up meaning vehicle is loading, down meaning vehicle is unloading
truelight
parents: 7503
diff changeset
   666
TextEffectID ShowFillingPercent(int x, int y, int z, uint8 percent, StringID string)
7494
99eac2a2cd8b (svn r10254) -Feature: loading indicator, which shows in % how full a vehicle is while loading/unloading (TheJosh)
truelight
parents: 7487
diff changeset
   667
{
99eac2a2cd8b (svn r10254) -Feature: loading indicator, which shows in % how full a vehicle is while loading/unloading (TheJosh)
truelight
parents: 7487
diff changeset
   668
	Point pt = RemapCoords(x, y, z);
99eac2a2cd8b (svn r10254) -Feature: loading indicator, which shows in % how full a vehicle is while loading/unloading (TheJosh)
truelight
parents: 7487
diff changeset
   669
7510
acb7cfe27b60 (svn r10270) -Add: prefixed the loading indicator with an arrow, up meaning vehicle is loading, down meaning vehicle is unloading
truelight
parents: 7503
diff changeset
   670
	assert(string != STR_NULL);
acb7cfe27b60 (svn r10270) -Add: prefixed the loading indicator with an arrow, up meaning vehicle is loading, down meaning vehicle is unloading
truelight
parents: 7503
diff changeset
   671
7494
99eac2a2cd8b (svn r10254) -Feature: loading indicator, which shows in % how full a vehicle is while loading/unloading (TheJosh)
truelight
parents: 7487
diff changeset
   672
	SetDParam(0, percent);
7510
acb7cfe27b60 (svn r10270) -Add: prefixed the loading indicator with an arrow, up meaning vehicle is loading, down meaning vehicle is unloading
truelight
parents: 7503
diff changeset
   673
	return AddTextEffect(string, pt.x, pt.y, 0xFFFF, TE_STATIC);
7494
99eac2a2cd8b (svn r10254) -Feature: loading indicator, which shows in % how full a vehicle is while loading/unloading (TheJosh)
truelight
parents: 7487
diff changeset
   674
}
99eac2a2cd8b (svn r10254) -Feature: loading indicator, which shows in % how full a vehicle is while loading/unloading (TheJosh)
truelight
parents: 7487
diff changeset
   675
7510
acb7cfe27b60 (svn r10270) -Add: prefixed the loading indicator with an arrow, up meaning vehicle is loading, down meaning vehicle is unloading
truelight
parents: 7503
diff changeset
   676
void UpdateFillingPercent(TextEffectID te_id, uint8 percent, StringID string)
7494
99eac2a2cd8b (svn r10254) -Feature: loading indicator, which shows in % how full a vehicle is while loading/unloading (TheJosh)
truelight
parents: 7487
diff changeset
   677
{
7510
acb7cfe27b60 (svn r10270) -Add: prefixed the loading indicator with an arrow, up meaning vehicle is loading, down meaning vehicle is unloading
truelight
parents: 7503
diff changeset
   678
	assert(string != STR_NULL);
acb7cfe27b60 (svn r10270) -Add: prefixed the loading indicator with an arrow, up meaning vehicle is loading, down meaning vehicle is unloading
truelight
parents: 7503
diff changeset
   679
7494
99eac2a2cd8b (svn r10254) -Feature: loading indicator, which shows in % how full a vehicle is while loading/unloading (TheJosh)
truelight
parents: 7487
diff changeset
   680
	SetDParam(0, percent);
7510
acb7cfe27b60 (svn r10270) -Add: prefixed the loading indicator with an arrow, up meaning vehicle is loading, down meaning vehicle is unloading
truelight
parents: 7503
diff changeset
   681
	UpdateTextEffect(te_id, string);
7494
99eac2a2cd8b (svn r10254) -Feature: loading indicator, which shows in % how full a vehicle is while loading/unloading (TheJosh)
truelight
parents: 7487
diff changeset
   682
}
99eac2a2cd8b (svn r10254) -Feature: loading indicator, which shows in % how full a vehicle is while loading/unloading (TheJosh)
truelight
parents: 7487
diff changeset
   683
99eac2a2cd8b (svn r10254) -Feature: loading indicator, which shows in % how full a vehicle is while loading/unloading (TheJosh)
truelight
parents: 7487
diff changeset
   684
void HideFillingPercent(TextEffectID te_id)
99eac2a2cd8b (svn r10254) -Feature: loading indicator, which shows in % how full a vehicle is while loading/unloading (TheJosh)
truelight
parents: 7487
diff changeset
   685
{
99eac2a2cd8b (svn r10254) -Feature: loading indicator, which shows in % how full a vehicle is while loading/unloading (TheJosh)
truelight
parents: 7487
diff changeset
   686
	if (te_id != INVALID_TE_ID) RemoveTextEffect(te_id);
1935
f43f062c9498 (svn r2441) -Feature: You can now give transfer order to set up feeder systems
celestar
parents: 1914
diff changeset
   687
}
f43f062c9498 (svn r2441) -Feature: You can now give transfer order to set up feeder systems
celestar
parents: 1914
diff changeset
   688
2275
cbaeb07740b1 (svn r2799) Make the only two non-const widget lists const
tron
parents: 2261
diff changeset
   689
static const Widget _tooltips_widgets[] = {
867
581154a08a78 (svn r1348) -Feature: resizable windows. Read the comment in window.h to find out
truelight
parents: 860
diff changeset
   690
{      WWT_PANEL,   RESIZE_NONE,    14,     0,   199,     0,    31, 0x0, STR_NULL},
176
84990c4b9212 (svn r177) -Fix: padded out Widget code to solve warnings on C99 compiler (Tron)
darkvater
parents: 172
diff changeset
   691
{   WIDGETS_END},
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   692
};
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   693
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   694
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   695
static void TooltipsWndProc(Window *w, WindowEvent *e)
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   696
{
2639
8a7342eb3a78 (svn r3181) -Bracing
tron
parents: 2631
diff changeset
   697
	switch (e->event) {
9234
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   698
		case WE_PAINT:
2639
8a7342eb3a78 (svn r3181) -Bracing
tron
parents: 2631
diff changeset
   699
			GfxFillRect(0, 0, w->width - 1, w->height - 1, 0);
8a7342eb3a78 (svn r3181) -Bracing
tron
parents: 2631
diff changeset
   700
			GfxFillRect(1, 1, w->width - 2, w->height - 2, 0x44);
4834
ddcf440d0ffd (svn r6758) -Feature: Add a measurement tool that will show dimensions and height
Darkvater
parents: 4719
diff changeset
   701
9234
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   702
			for (uint arg = 0; arg < WP(w, tooltips_d).paramcount; arg++) {
4834
ddcf440d0ffd (svn r6758) -Feature: Add a measurement tool that will show dimensions and height
Darkvater
parents: 4719
diff changeset
   703
				SetDParam(arg, WP(w, tooltips_d).params[arg]);
ddcf440d0ffd (svn r6758) -Feature: Add a measurement tool that will show dimensions and height
Darkvater
parents: 4719
diff changeset
   704
			}
6523
d41352ca5c1e (svn r8977) -Codechange: Remove the hardcoded maximum width for some drawstrings and replace them with a portion of w->width. Only visible improvement is QueryWndProc which will not write exactly to the edge of the window anymore.
Darkvater
parents: 6516
diff changeset
   705
			DrawStringMultiCenter((w->width >> 1), (w->height >> 1) - 5, WP(w, tooltips_d).string_id, w->width - 2);
2639
8a7342eb3a78 (svn r3181) -Bracing
tron
parents: 2631
diff changeset
   706
			break;
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   707
2639
8a7342eb3a78 (svn r3181) -Bracing
tron
parents: 2631
diff changeset
   708
		case WE_MOUSELOOP:
4834
ddcf440d0ffd (svn r6758) -Feature: Add a measurement tool that will show dimensions and height
Darkvater
parents: 4719
diff changeset
   709
			/* We can show tooltips while dragging tools. These are shown as long as
ddcf440d0ffd (svn r6758) -Feature: Add a measurement tool that will show dimensions and height
Darkvater
parents: 4719
diff changeset
   710
			 * we are dragging the tool. Normal tooltips work with rmb */
ddcf440d0ffd (svn r6758) -Feature: Add a measurement tool that will show dimensions and height
Darkvater
parents: 4719
diff changeset
   711
			if (WP(w, tooltips_d).paramcount == 0 ) {
ddcf440d0ffd (svn r6758) -Feature: Add a measurement tool that will show dimensions and height
Darkvater
parents: 4719
diff changeset
   712
				if (!_right_button_down) DeleteWindow(w);
ddcf440d0ffd (svn r6758) -Feature: Add a measurement tool that will show dimensions and height
Darkvater
parents: 4719
diff changeset
   713
			} else {
ddcf440d0ffd (svn r6758) -Feature: Add a measurement tool that will show dimensions and height
Darkvater
parents: 4719
diff changeset
   714
				if (!_left_button_down) DeleteWindow(w);
ddcf440d0ffd (svn r6758) -Feature: Add a measurement tool that will show dimensions and height
Darkvater
parents: 4719
diff changeset
   715
			}
ddcf440d0ffd (svn r6758) -Feature: Add a measurement tool that will show dimensions and height
Darkvater
parents: 4719
diff changeset
   716
2639
8a7342eb3a78 (svn r3181) -Bracing
tron
parents: 2631
diff changeset
   717
			break;
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   718
	}
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   719
}
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   720
4834
ddcf440d0ffd (svn r6758) -Feature: Add a measurement tool that will show dimensions and height
Darkvater
parents: 4719
diff changeset
   721
/** Shows a tooltip
6977
67b989528f3d (svn r9662) -Documentation: Doxygen corrections and @file omissions
belugas
parents: 6949
diff changeset
   722
 * @param str String to be displayed
67b989528f3d (svn r9662) -Documentation: Doxygen corrections and @file omissions
belugas
parents: 6949
diff changeset
   723
 * @param paramcount number of params to deal with
67b989528f3d (svn r9662) -Documentation: Doxygen corrections and @file omissions
belugas
parents: 6949
diff changeset
   724
 * @param params (optional) up to 5 pieces of additional information that may be
67b989528f3d (svn r9662) -Documentation: Doxygen corrections and @file omissions
belugas
parents: 6949
diff changeset
   725
 * added to a tooltip; currently only supports parameters of {NUM} (integer) */
7502
71f5d2c6a605 (svn r10262) -Fix (r10258): some places that needed to be changed to uint64 were hidden/forgotten, which caused memory corruptions and that in caused all kinds of assertions to trigger.
rubidium
parents: 7498
diff changeset
   726
void GuiShowTooltipsWithArgs(StringID str, uint paramcount, const uint64 params[])
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   727
{
4884
895f06b87934 (svn r6821) -Codechange: For the measurement tool do not show the tooltip when the selection
Darkvater
parents: 4850
diff changeset
   728
	DeleteWindowById(WC_TOOLTIPS, 0);
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   729
4884
895f06b87934 (svn r6821) -Codechange: For the measurement tool do not show the tooltip when the selection
Darkvater
parents: 4850
diff changeset
   730
	/* We only show measurement tooltips with patch setting on */
895f06b87934 (svn r6821) -Codechange: For the measurement tool do not show the tooltip when the selection
Darkvater
parents: 4850
diff changeset
   731
	if (str == STR_NULL || (paramcount != 0 && !_patches.measure_tooltip)) return;
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   732
9234
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   733
	for (uint i = 0; i != paramcount; i++) SetDParam(i, params[i]);
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   734
	char buffer[512];
4912
d04b3f2bca70 (svn r6884) -Codechange: Add strict bounds checking in string formatting system.
Darkvater
parents: 4909
diff changeset
   735
	GetString(buffer, str, lastof(buffer));
4834
ddcf440d0ffd (svn r6758) -Feature: Add a measurement tool that will show dimensions and height
Darkvater
parents: 4719
diff changeset
   736
9234
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   737
	Dimension br = GetStringBoundingBox(buffer);
4834
ddcf440d0ffd (svn r6758) -Feature: Add a measurement tool that will show dimensions and height
Darkvater
parents: 4719
diff changeset
   738
	br.width += 6; br.height += 4; // increase slightly to have some space around the box
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   739
4558
657e73957b4b (svn r6405) -Codechange: When showing tooltips, properly position the tooltip, considering
Darkvater
parents: 4416
diff changeset
   740
	/* Cut tooltip length to 200 pixels max, wrap to new line if longer */
4834
ddcf440d0ffd (svn r6758) -Feature: Add a measurement tool that will show dimensions and height
Darkvater
parents: 4719
diff changeset
   741
	if (br.width > 200) {
ddcf440d0ffd (svn r6758) -Feature: Add a measurement tool that will show dimensions and height
Darkvater
parents: 4719
diff changeset
   742
		br.height += ((br.width - 4) / 176) * 10;
ddcf440d0ffd (svn r6758) -Feature: Add a measurement tool that will show dimensions and height
Darkvater
parents: 4719
diff changeset
   743
		br.width = 200;
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   744
	}
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   745
4558
657e73957b4b (svn r6405) -Codechange: When showing tooltips, properly position the tooltip, considering
Darkvater
parents: 4416
diff changeset
   746
	/* Correctly position the tooltip position, watch out for window and cursor size
657e73957b4b (svn r6405) -Codechange: When showing tooltips, properly position the tooltip, considering
Darkvater
parents: 4416
diff changeset
   747
	 * Clamp value to below main toolbar and above statusbar. If tooltip would
657e73957b4b (svn r6405) -Codechange: When showing tooltips, properly position the tooltip, considering
Darkvater
parents: 4416
diff changeset
   748
	 * go below window, flip it so it is shown above the cursor */
9234
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   749
	int y = Clamp(_cursor.pos.y + _cursor.size.y + _cursor.offs.y + 5, 22, _screen.height - 12);
4834
ddcf440d0ffd (svn r6758) -Feature: Add a measurement tool that will show dimensions and height
Darkvater
parents: 4719
diff changeset
   750
	if (y + br.height > _screen.height - 12) y = _cursor.pos.y + _cursor.offs.y - br.height - 5;
9234
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   751
	int x = Clamp(_cursor.pos.x - (br.width >> 1), 0, _screen.width - br.width);
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   752
9234
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   753
	Window *w = AllocateWindow(x, y, br.width, br.height, TooltipsWndProc, WC_TOOLTIPS, _tooltips_widgets);
4834
ddcf440d0ffd (svn r6758) -Feature: Add a measurement tool that will show dimensions and height
Darkvater
parents: 4719
diff changeset
   754
ddcf440d0ffd (svn r6758) -Feature: Add a measurement tool that will show dimensions and height
Darkvater
parents: 4719
diff changeset
   755
	WP(w, tooltips_d).string_id = str;
ddcf440d0ffd (svn r6758) -Feature: Add a measurement tool that will show dimensions and height
Darkvater
parents: 4719
diff changeset
   756
	assert(sizeof(WP(w, tooltips_d).params[0]) == sizeof(params[0]));
ddcf440d0ffd (svn r6758) -Feature: Add a measurement tool that will show dimensions and height
Darkvater
parents: 4719
diff changeset
   757
	memcpy(WP(w, tooltips_d).params, params, sizeof(WP(w, tooltips_d).params[0]) * paramcount);
ddcf440d0ffd (svn r6758) -Feature: Add a measurement tool that will show dimensions and height
Darkvater
parents: 4719
diff changeset
   758
	WP(w, tooltips_d).paramcount = paramcount;
ddcf440d0ffd (svn r6758) -Feature: Add a measurement tool that will show dimensions and height
Darkvater
parents: 4719
diff changeset
   759
4558
657e73957b4b (svn r6405) -Codechange: When showing tooltips, properly position the tooltip, considering
Darkvater
parents: 4416
diff changeset
   760
	w->flags4 &= ~WF_WHITE_BORDER_MASK; // remove white-border from tooltip
4834
ddcf440d0ffd (svn r6758) -Feature: Add a measurement tool that will show dimensions and height
Darkvater
parents: 4719
diff changeset
   761
	w->widget[0].right = br.width;
ddcf440d0ffd (svn r6758) -Feature: Add a measurement tool that will show dimensions and height
Darkvater
parents: 4719
diff changeset
   762
	w->widget[0].bottom = br.height;
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   763
}
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   764
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   765
9342
ca61cbfca47a (svn r12596) -Feature: show what cargos a station could be supplied with. Patch by Roujin.
rubidium
parents: 9327
diff changeset
   766
static int DrawStationCoverageText(const AcceptedCargo cargo,
ca61cbfca47a (svn r12596) -Feature: show what cargos a station could be supplied with. Patch by Roujin.
rubidium
parents: 9327
diff changeset
   767
	int str_x, int str_y, StationCoverageType sct, bool supplies)
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   768
{
5038
cd0a32afb616 (svn r7080) -Codechange: Remove negative array indexes, and only add ", " when needed, when building station acceptance lists.
peter1138
parents: 5005
diff changeset
   769
	bool first = true;
193
0a7025304867 (svn r194) -Codechange: stripping trailing-spaces. Please keep this that way!
truelight
parents: 179
diff changeset
   770
9342
ca61cbfca47a (svn r12596) -Feature: show what cargos a station could be supplied with. Patch by Roujin.
rubidium
parents: 9327
diff changeset
   771
	char *b = InlineString(_userstring, supplies ? STR_SUPPLIES : STR_000D_ACCEPTS);
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   772
7737
7ab95e599292 (svn r10522) -Fix: the "build truck station" GUI showed that it would accept tourists when it does not, whereas the "build bus station" GUI did not show them when it did accept them.
rubidium
parents: 7634
diff changeset
   773
	for (CargoID i = 0; i < NUM_CARGO; i++) {
8537
0b4ab7d8b018 (svn r11601) -Codechange: more strict break conditions for _userstring, assert when it overflows anyway (eg. code change without proper check change)
smatz
parents: 8532
diff changeset
   774
		if (b >= lastof(_userstring) - (1 + 2 * 4)) break; // ',' or ' ' and two calls to Utf8Encode()
7737
7ab95e599292 (svn r10522) -Fix: the "build truck station" GUI showed that it would accept tourists when it does not, whereas the "build bus station" GUI did not show them when it did accept them.
rubidium
parents: 7634
diff changeset
   775
		switch (sct) {
7ab95e599292 (svn r10522) -Fix: the "build truck station" GUI showed that it would accept tourists when it does not, whereas the "build bus station" GUI did not show them when it did accept them.
rubidium
parents: 7634
diff changeset
   776
			case SCT_PASSENGERS_ONLY: if (!IsCargoInClass(i, CC_PASSENGERS)) continue; break;
7ab95e599292 (svn r10522) -Fix: the "build truck station" GUI showed that it would accept tourists when it does not, whereas the "build bus station" GUI did not show them when it did accept them.
rubidium
parents: 7634
diff changeset
   777
			case SCT_NON_PASSENGERS_ONLY: if (IsCargoInClass(i, CC_PASSENGERS)) continue; break;
7ab95e599292 (svn r10522) -Fix: the "build truck station" GUI showed that it would accept tourists when it does not, whereas the "build bus station" GUI did not show them when it did accept them.
rubidium
parents: 7634
diff changeset
   778
			case SCT_ALL: break;
7ab95e599292 (svn r10522) -Fix: the "build truck station" GUI showed that it would accept tourists when it does not, whereas the "build bus station" GUI did not show them when it did accept them.
rubidium
parents: 7634
diff changeset
   779
			default: NOT_REACHED();
7ab95e599292 (svn r10522) -Fix: the "build truck station" GUI showed that it would accept tourists when it does not, whereas the "build bus station" GUI did not show them when it did accept them.
rubidium
parents: 7634
diff changeset
   780
		}
9342
ca61cbfca47a (svn r12596) -Feature: show what cargos a station could be supplied with. Patch by Roujin.
rubidium
parents: 9327
diff changeset
   781
		if (cargo[i] >= (supplies ? 1 : 8)) {
5038
cd0a32afb616 (svn r7080) -Codechange: Remove negative array indexes, and only add ", " when needed, when building station acceptance lists.
peter1138
parents: 5005
diff changeset
   782
			if (first) {
cd0a32afb616 (svn r7080) -Codechange: Remove negative array indexes, and only add ", " when needed, when building station acceptance lists.
peter1138
parents: 5005
diff changeset
   783
				first = false;
cd0a32afb616 (svn r7080) -Codechange: Remove negative array indexes, and only add ", " when needed, when building station acceptance lists.
peter1138
parents: 5005
diff changeset
   784
			} else {
cd0a32afb616 (svn r7080) -Codechange: Remove negative array indexes, and only add ", " when needed, when building station acceptance lists.
peter1138
parents: 5005
diff changeset
   785
				/* Add a comma if this is not the first item */
cd0a32afb616 (svn r7080) -Codechange: Remove negative array indexes, and only add ", " when needed, when building station acceptance lists.
peter1138
parents: 5005
diff changeset
   786
				*b++ = ',';
cd0a32afb616 (svn r7080) -Codechange: Remove negative array indexes, and only add ", " when needed, when building station acceptance lists.
peter1138
parents: 5005
diff changeset
   787
				*b++ = ' ';
cd0a32afb616 (svn r7080) -Codechange: Remove negative array indexes, and only add ", " when needed, when building station acceptance lists.
peter1138
parents: 5005
diff changeset
   788
			}
6417
26acff62d001 (svn r8826) -Codechange: Replace _cargoc's separate arrays with a regular struct array (with accessor) and implement new initialization method using cargo labels.
peter1138
parents: 6144
diff changeset
   789
			b = InlineString(b, GetCargo(i)->name);
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   790
		}
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   791
	}
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   792
5038
cd0a32afb616 (svn r7080) -Codechange: Remove negative array indexes, and only add ", " when needed, when building station acceptance lists.
peter1138
parents: 5005
diff changeset
   793
	/* If first is still true then no cargo is accepted */
cd0a32afb616 (svn r7080) -Codechange: Remove negative array indexes, and only add ", " when needed, when building station acceptance lists.
peter1138
parents: 5005
diff changeset
   794
	if (first) b = InlineString(b, STR_00D0_NOTHING);
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   795
5038
cd0a32afb616 (svn r7080) -Codechange: Remove negative array indexes, and only add ", " when needed, when building station acceptance lists.
peter1138
parents: 5005
diff changeset
   796
	*b = '\0';
8537
0b4ab7d8b018 (svn r11601) -Codechange: more strict break conditions for _userstring, assert when it overflows anyway (eg. code change without proper check change)
smatz
parents: 8532
diff changeset
   797
0b4ab7d8b018 (svn r11601) -Codechange: more strict break conditions for _userstring, assert when it overflows anyway (eg. code change without proper check change)
smatz
parents: 8532
diff changeset
   798
	/* Make sure we detect any buffer overflow */
0b4ab7d8b018 (svn r11601) -Codechange: more strict break conditions for _userstring, assert when it overflows anyway (eg. code change without proper check change)
smatz
parents: 8532
diff changeset
   799
	assert(b < endof(_userstring));
0b4ab7d8b018 (svn r11601) -Codechange: more strict break conditions for _userstring, assert when it overflows anyway (eg. code change without proper check change)
smatz
parents: 8532
diff changeset
   800
8919
b627c71f9cc3 (svn r11993) -Fix: Resize station/roadstop/dock/airport construction windows if cargo acceptance list is too long.
peter1138
parents: 8845
diff changeset
   801
	return DrawStringMultiLine(str_x, str_y, STR_SPEC_USERSTRING, 144);
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   802
}
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   803
9342
ca61cbfca47a (svn r12596) -Feature: show what cargos a station could be supplied with. Patch by Roujin.
rubidium
parents: 9327
diff changeset
   804
/**
ca61cbfca47a (svn r12596) -Feature: show what cargos a station could be supplied with. Patch by Roujin.
rubidium
parents: 9327
diff changeset
   805
 * Calculates and draws the accepted or supplied cargo around the selected tile(s)
ca61cbfca47a (svn r12596) -Feature: show what cargos a station could be supplied with. Patch by Roujin.
rubidium
parents: 9327
diff changeset
   806
 * @param sx x position where the string is to be drawn
ca61cbfca47a (svn r12596) -Feature: show what cargos a station could be supplied with. Patch by Roujin.
rubidium
parents: 9327
diff changeset
   807
 * @param sy y position where the string is to be drawn
ca61cbfca47a (svn r12596) -Feature: show what cargos a station could be supplied with. Patch by Roujin.
rubidium
parents: 9327
diff changeset
   808
 * @param sct which type of cargo is to be displayed (passengers/non-passengers)
ca61cbfca47a (svn r12596) -Feature: show what cargos a station could be supplied with. Patch by Roujin.
rubidium
parents: 9327
diff changeset
   809
 * @param rad radius around selected tile(s) to be searched
ca61cbfca47a (svn r12596) -Feature: show what cargos a station could be supplied with. Patch by Roujin.
rubidium
parents: 9327
diff changeset
   810
 * @param supplies if supplied cargos should be drawn, else accepted cargos
ca61cbfca47a (svn r12596) -Feature: show what cargos a station could be supplied with. Patch by Roujin.
rubidium
parents: 9327
diff changeset
   811
 * @return Returns the y value below the string that was drawn
ca61cbfca47a (svn r12596) -Feature: show what cargos a station could be supplied with. Patch by Roujin.
rubidium
parents: 9327
diff changeset
   812
 */
ca61cbfca47a (svn r12596) -Feature: show what cargos a station could be supplied with. Patch by Roujin.
rubidium
parents: 9327
diff changeset
   813
int DrawStationCoverageAreaText(int sx, int sy, StationCoverageType sct, int rad, bool supplies)
7817
f24498d934ac (svn r10684) -Codechange: some more coding style related changes. Primarily moving { to a new line.
rubidium
parents: 7762
diff changeset
   814
{
2873
75b688d160d5 (svn r3421) - Revert r3412 as it didn't work.
peter1138
parents: 2753
diff changeset
   815
	TileIndex tile = TileVirtXY(_thd.pos.x, _thd.pos.y);
9342
ca61cbfca47a (svn r12596) -Feature: show what cargos a station could be supplied with. Patch by Roujin.
rubidium
parents: 9327
diff changeset
   816
	AcceptedCargo cargo;
2873
75b688d160d5 (svn r3421) - Revert r3412 as it didn't work.
peter1138
parents: 2753
diff changeset
   817
	if (tile < MapSize()) {
9342
ca61cbfca47a (svn r12596) -Feature: show what cargos a station could be supplied with. Patch by Roujin.
rubidium
parents: 9327
diff changeset
   818
		if (supplies) {
ca61cbfca47a (svn r12596) -Feature: show what cargos a station could be supplied with. Patch by Roujin.
rubidium
parents: 9327
diff changeset
   819
			GetProductionAroundTiles(cargo, tile, _thd.size.x / TILE_SIZE, _thd.size.y / TILE_SIZE , rad);
ca61cbfca47a (svn r12596) -Feature: show what cargos a station could be supplied with. Patch by Roujin.
rubidium
parents: 9327
diff changeset
   820
		} else {
ca61cbfca47a (svn r12596) -Feature: show what cargos a station could be supplied with. Patch by Roujin.
rubidium
parents: 9327
diff changeset
   821
			GetAcceptanceAroundTiles(cargo, tile, _thd.size.x / TILE_SIZE, _thd.size.y / TILE_SIZE , rad);
ca61cbfca47a (svn r12596) -Feature: show what cargos a station could be supplied with. Patch by Roujin.
rubidium
parents: 9327
diff changeset
   822
		}
ca61cbfca47a (svn r12596) -Feature: show what cargos a station could be supplied with. Patch by Roujin.
rubidium
parents: 9327
diff changeset
   823
		return sy + DrawStationCoverageText(cargo, sx, sy, sct, supplies);
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   824
	}
8919
b627c71f9cc3 (svn r11993) -Fix: Resize station/roadstop/dock/airport construction windows if cargo acceptance list is too long.
peter1138
parents: 8845
diff changeset
   825
b627c71f9cc3 (svn r11993) -Fix: Resize station/roadstop/dock/airport construction windows if cargo acceptance list is too long.
peter1138
parents: 8845
diff changeset
   826
	return sy;
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   827
}
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   828
4171
3fadda3afe70 (svn r5609) CodeChange : Apply coding style
belugas
parents: 4133
diff changeset
   829
void CheckRedrawStationCoverage(const Window *w)
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   830
{
2549
f1d3b383d557 (svn r3078) Some more stuff, which piled up:
tron
parents: 2535
diff changeset
   831
	if (_thd.dirty & 1) {
f1d3b383d557 (svn r3078) Some more stuff, which piled up:
tron
parents: 2535
diff changeset
   832
		_thd.dirty &= ~1;
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   833
		SetWindowDirty(w);
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   834
	}
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   835
}
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   836
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   837
void SetVScrollCount(Window *w, int num)
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   838
{
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   839
	w->vscroll.count = num;
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   840
	num -= w->vscroll.cap;
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   841
	if (num < 0) num = 0;
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   842
	if (num < w->vscroll.pos) w->vscroll.pos = num;
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   843
}
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   844
842
ebfd36603ab9 (svn r1323) Adding autoreplace feature
bjarni
parents: 755
diff changeset
   845
void SetVScroll2Count(Window *w, int num)
867
581154a08a78 (svn r1348) -Feature: resizable windows. Read the comment in window.h to find out
truelight
parents: 860
diff changeset
   846
{
842
ebfd36603ab9 (svn r1323) Adding autoreplace feature
bjarni
parents: 755
diff changeset
   847
	w->vscroll2.count = num;
ebfd36603ab9 (svn r1323) Adding autoreplace feature
bjarni
parents: 755
diff changeset
   848
	num -= w->vscroll2.cap;
ebfd36603ab9 (svn r1323) Adding autoreplace feature
bjarni
parents: 755
diff changeset
   849
	if (num < 0) num = 0;
ebfd36603ab9 (svn r1323) Adding autoreplace feature
bjarni
parents: 755
diff changeset
   850
	if (num < w->vscroll2.pos) w->vscroll2.pos = num;
ebfd36603ab9 (svn r1323) Adding autoreplace feature
bjarni
parents: 755
diff changeset
   851
}
ebfd36603ab9 (svn r1323) Adding autoreplace feature
bjarni
parents: 755
diff changeset
   852
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   853
void SetHScrollCount(Window *w, int num)
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   854
{
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   855
	w->hscroll.count = num;
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   856
	num -= w->hscroll.cap;
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   857
	if (num < 0) num = 0;
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   858
	if (num < w->hscroll.pos) w->hscroll.pos = num;
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   859
}
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   860
5108
dc67d70b5a45 (svn r7182) -Feature: Merge utf8 branch. This brings us support for Unicode/UTF-8 and the option for fonts rendered by FreeType. Language changes to come.
peter1138
parents: 5079
diff changeset
   861
/* Delete a character at the caret position in a text buf.
dc67d70b5a45 (svn r7182) -Feature: Merge utf8 branch. This brings us support for Unicode/UTF-8 and the option for fonts rendered by FreeType. Language changes to come.
peter1138
parents: 5079
diff changeset
   862
 * If backspace is set, delete the character before the caret,
dc67d70b5a45 (svn r7182) -Feature: Merge utf8 branch. This brings us support for Unicode/UTF-8 and the option for fonts rendered by FreeType. Language changes to come.
peter1138
parents: 5079
diff changeset
   863
 * else delete the character after it. */
dc67d70b5a45 (svn r7182) -Feature: Merge utf8 branch. This brings us support for Unicode/UTF-8 and the option for fonts rendered by FreeType. Language changes to come.
peter1138
parents: 5079
diff changeset
   864
static void DelChar(Textbuf *tb, bool backspace)
911
bde79514283f (svn r1398) -Feature: CTRL+V (Paste) now works on all editboxes. This includes 'Add Server', chat, etc. Feature is Windows only.
darkvater
parents: 910
diff changeset
   865
{
5108
dc67d70b5a45 (svn r7182) -Feature: Merge utf8 branch. This brings us support for Unicode/UTF-8 and the option for fonts rendered by FreeType. Language changes to come.
peter1138
parents: 5079
diff changeset
   866
	WChar c;
6540
4db000b2cc41 (svn r9011) -Codechange (r9003): Rework Utf8PrevChar so that it returns a pointer to the previous UTF8 character's first byte instead of a byte-length offset
Darkvater
parents: 6537
diff changeset
   867
	char *s = tb->buf + tb->caretpos;
5108
dc67d70b5a45 (svn r7182) -Feature: Merge utf8 branch. This brings us support for Unicode/UTF-8 and the option for fonts rendered by FreeType. Language changes to come.
peter1138
parents: 5079
diff changeset
   868
6540
4db000b2cc41 (svn r9011) -Codechange (r9003): Rework Utf8PrevChar so that it returns a pointer to the previous UTF8 character's first byte instead of a byte-length offset
Darkvater
parents: 6537
diff changeset
   869
	if (backspace) s = Utf8PrevChar(s);
5108
dc67d70b5a45 (svn r7182) -Feature: Merge utf8 branch. This brings us support for Unicode/UTF-8 and the option for fonts rendered by FreeType. Language changes to come.
peter1138
parents: 5079
diff changeset
   870
9234
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   871
	size_t len = Utf8Decode(&c, s);
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   872
	uint width = GetCharacterWidth(FS_NORMAL, c);
5108
dc67d70b5a45 (svn r7182) -Feature: Merge utf8 branch. This brings us support for Unicode/UTF-8 and the option for fonts rendered by FreeType. Language changes to come.
peter1138
parents: 5079
diff changeset
   873
dc67d70b5a45 (svn r7182) -Feature: Merge utf8 branch. This brings us support for Unicode/UTF-8 and the option for fonts rendered by FreeType. Language changes to come.
peter1138
parents: 5079
diff changeset
   874
	tb->width  -= width;
6540
4db000b2cc41 (svn r9011) -Codechange (r9003): Rework Utf8PrevChar so that it returns a pointer to the previous UTF8 character's first byte instead of a byte-length offset
Darkvater
parents: 6537
diff changeset
   875
	if (backspace) {
4db000b2cc41 (svn r9011) -Codechange (r9003): Rework Utf8PrevChar so that it returns a pointer to the previous UTF8 character's first byte instead of a byte-length offset
Darkvater
parents: 6537
diff changeset
   876
		tb->caretpos   -= len;
4db000b2cc41 (svn r9011) -Codechange (r9003): Rework Utf8PrevChar so that it returns a pointer to the previous UTF8 character's first byte instead of a byte-length offset
Darkvater
parents: 6537
diff changeset
   877
		tb->caretxoffs -= width;
4db000b2cc41 (svn r9011) -Codechange (r9003): Rework Utf8PrevChar so that it returns a pointer to the previous UTF8 character's first byte instead of a byte-length offset
Darkvater
parents: 6537
diff changeset
   878
	}
5108
dc67d70b5a45 (svn r7182) -Feature: Merge utf8 branch. This brings us support for Unicode/UTF-8 and the option for fonts rendered by FreeType. Language changes to come.
peter1138
parents: 5079
diff changeset
   879
dc67d70b5a45 (svn r7182) -Feature: Merge utf8 branch. This brings us support for Unicode/UTF-8 and the option for fonts rendered by FreeType. Language changes to come.
peter1138
parents: 5079
diff changeset
   880
	/* Move the remaining characters over the marker */
6540
4db000b2cc41 (svn r9011) -Codechange (r9003): Rework Utf8PrevChar so that it returns a pointer to the previous UTF8 character's first byte instead of a byte-length offset
Darkvater
parents: 6537
diff changeset
   881
	memmove(s, s + len, tb->length - (s - tb->buf) - len + 1);
5108
dc67d70b5a45 (svn r7182) -Feature: Merge utf8 branch. This brings us support for Unicode/UTF-8 and the option for fonts rendered by FreeType. Language changes to come.
peter1138
parents: 5079
diff changeset
   882
	tb->length -= len;
1390
53a5713cf3f9 (svn r1894) - Codechange: cleaned up the console a bit, wholly unified handling of text with that of editboxes
Darkvater
parents: 1386
diff changeset
   883
}
911
bde79514283f (svn r1398) -Feature: CTRL+V (Paste) now works on all editboxes. This includes 'Add Server', chat, etc. Feature is Windows only.
darkvater
parents: 910
diff changeset
   884
1390
53a5713cf3f9 (svn r1894) - Codechange: cleaned up the console a bit, wholly unified handling of text with that of editboxes
Darkvater
parents: 1386
diff changeset
   885
/**
53a5713cf3f9 (svn r1894) - Codechange: cleaned up the console a bit, wholly unified handling of text with that of editboxes
Darkvater
parents: 1386
diff changeset
   886
 * Delete a character from a textbuffer, either with 'Delete' or 'Backspace'
53a5713cf3f9 (svn r1894) - Codechange: cleaned up the console a bit, wholly unified handling of text with that of editboxes
Darkvater
parents: 1386
diff changeset
   887
 * The character is delete from the position the caret is at
6977
67b989528f3d (svn r9662) -Documentation: Doxygen corrections and @file omissions
belugas
parents: 6949
diff changeset
   888
 * @param tb Textbuf type to be changed
67b989528f3d (svn r9662) -Documentation: Doxygen corrections and @file omissions
belugas
parents: 6949
diff changeset
   889
 * @param delmode Type of deletion, either WKC_BACKSPACE or WKC_DELETE
7868
25b9aad39e4a (svn r10736) -Fix: Correct all mispellings of 'successful'.
peter1138
parents: 7842
diff changeset
   890
 * @return Return true on successful change of Textbuf, or false otherwise
1390
53a5713cf3f9 (svn r1894) - Codechange: cleaned up the console a bit, wholly unified handling of text with that of editboxes
Darkvater
parents: 1386
diff changeset
   891
 */
53a5713cf3f9 (svn r1894) - Codechange: cleaned up the console a bit, wholly unified handling of text with that of editboxes
Darkvater
parents: 1386
diff changeset
   892
bool DeleteTextBufferChar(Textbuf *tb, int delmode)
53a5713cf3f9 (svn r1894) - Codechange: cleaned up the console a bit, wholly unified handling of text with that of editboxes
Darkvater
parents: 1386
diff changeset
   893
{
53a5713cf3f9 (svn r1894) - Codechange: cleaned up the console a bit, wholly unified handling of text with that of editboxes
Darkvater
parents: 1386
diff changeset
   894
	if (delmode == WKC_BACKSPACE && tb->caretpos != 0) {
5108
dc67d70b5a45 (svn r7182) -Feature: Merge utf8 branch. This brings us support for Unicode/UTF-8 and the option for fonts rendered by FreeType. Language changes to come.
peter1138
parents: 5079
diff changeset
   895
		DelChar(tb, true);
1390
53a5713cf3f9 (svn r1894) - Codechange: cleaned up the console a bit, wholly unified handling of text with that of editboxes
Darkvater
parents: 1386
diff changeset
   896
		return true;
53a5713cf3f9 (svn r1894) - Codechange: cleaned up the console a bit, wholly unified handling of text with that of editboxes
Darkvater
parents: 1386
diff changeset
   897
	} else if (delmode == WKC_DELETE && tb->caretpos < tb->length) {
5108
dc67d70b5a45 (svn r7182) -Feature: Merge utf8 branch. This brings us support for Unicode/UTF-8 and the option for fonts rendered by FreeType. Language changes to come.
peter1138
parents: 5079
diff changeset
   898
		DelChar(tb, false);
1390
53a5713cf3f9 (svn r1894) - Codechange: cleaned up the console a bit, wholly unified handling of text with that of editboxes
Darkvater
parents: 1386
diff changeset
   899
		return true;
53a5713cf3f9 (svn r1894) - Codechange: cleaned up the console a bit, wholly unified handling of text with that of editboxes
Darkvater
parents: 1386
diff changeset
   900
	}
53a5713cf3f9 (svn r1894) - Codechange: cleaned up the console a bit, wholly unified handling of text with that of editboxes
Darkvater
parents: 1386
diff changeset
   901
53a5713cf3f9 (svn r1894) - Codechange: cleaned up the console a bit, wholly unified handling of text with that of editboxes
Darkvater
parents: 1386
diff changeset
   902
	return false;
53a5713cf3f9 (svn r1894) - Codechange: cleaned up the console a bit, wholly unified handling of text with that of editboxes
Darkvater
parents: 1386
diff changeset
   903
}
53a5713cf3f9 (svn r1894) - Codechange: cleaned up the console a bit, wholly unified handling of text with that of editboxes
Darkvater
parents: 1386
diff changeset
   904
53a5713cf3f9 (svn r1894) - Codechange: cleaned up the console a bit, wholly unified handling of text with that of editboxes
Darkvater
parents: 1386
diff changeset
   905
/**
1879
2ccc61e922e2 (svn r2385) - Feature: shortcut CTRL + U that clears the commandline of the current input-box. As requested by Tron.
Darkvater
parents: 1860
diff changeset
   906
 * Delete every character in the textbuffer
6977
67b989528f3d (svn r9662) -Documentation: Doxygen corrections and @file omissions
belugas
parents: 6949
diff changeset
   907
 * @param tb Textbuf buffer to be emptied
1879
2ccc61e922e2 (svn r2385) - Feature: shortcut CTRL + U that clears the commandline of the current input-box. As requested by Tron.
Darkvater
parents: 1860
diff changeset
   908
 */
2ccc61e922e2 (svn r2385) - Feature: shortcut CTRL + U that clears the commandline of the current input-box. As requested by Tron.
Darkvater
parents: 1860
diff changeset
   909
void DeleteTextBufferAll(Textbuf *tb)
2ccc61e922e2 (svn r2385) - Feature: shortcut CTRL + U that clears the commandline of the current input-box. As requested by Tron.
Darkvater
parents: 1860
diff changeset
   910
{
2ccc61e922e2 (svn r2385) - Feature: shortcut CTRL + U that clears the commandline of the current input-box. As requested by Tron.
Darkvater
parents: 1860
diff changeset
   911
	memset(tb->buf, 0, tb->maxlength);
2ccc61e922e2 (svn r2385) - Feature: shortcut CTRL + U that clears the commandline of the current input-box. As requested by Tron.
Darkvater
parents: 1860
diff changeset
   912
	tb->length = tb->width = 0;
2ccc61e922e2 (svn r2385) - Feature: shortcut CTRL + U that clears the commandline of the current input-box. As requested by Tron.
Darkvater
parents: 1860
diff changeset
   913
	tb->caretpos = tb->caretxoffs = 0;
2ccc61e922e2 (svn r2385) - Feature: shortcut CTRL + U that clears the commandline of the current input-box. As requested by Tron.
Darkvater
parents: 1860
diff changeset
   914
}
2ccc61e922e2 (svn r2385) - Feature: shortcut CTRL + U that clears the commandline of the current input-box. As requested by Tron.
Darkvater
parents: 1860
diff changeset
   915
2ccc61e922e2 (svn r2385) - Feature: shortcut CTRL + U that clears the commandline of the current input-box. As requested by Tron.
Darkvater
parents: 1860
diff changeset
   916
/**
3459
b78229520bcf (svn r4302) - Fix: s/maxlength/maxwidth of course, the buffer size is always set. Comment-change only
Darkvater
parents: 3458
diff changeset
   917
 * Insert a character to a textbuffer. If maxwidth of the Textbuf is zero,
b78229520bcf (svn r4302) - Fix: s/maxlength/maxwidth of course, the buffer size is always set. Comment-change only
Darkvater
parents: 3458
diff changeset
   918
 * we don't care about the visual-length but only about the physical
3458
d3a6ddfa6784 (svn r4301) - Fix: the maxlength parameter of Textbuf is supposed to be the size of the buffer (so length of string + '\0'), but in the code it was a mix of both. It didn't cause any problems though, only an occasionaly one-less character than allowed. (thanks Tron for noticing)
Darkvater
parents: 3421
diff changeset
   919
 * length of the string
6977
67b989528f3d (svn r9662) -Documentation: Doxygen corrections and @file omissions
belugas
parents: 6949
diff changeset
   920
 * @param tb Textbuf type to be changed
1390
53a5713cf3f9 (svn r1894) - Codechange: cleaned up the console a bit, wholly unified handling of text with that of editboxes
Darkvater
parents: 1386
diff changeset
   921
 * @param key Character to be inserted
7868
25b9aad39e4a (svn r10736) -Fix: Correct all mispellings of 'successful'.
peter1138
parents: 7842
diff changeset
   922
 * @return Return true on successful change of Textbuf, or false otherwise
1390
53a5713cf3f9 (svn r1894) - Codechange: cleaned up the console a bit, wholly unified handling of text with that of editboxes
Darkvater
parents: 1386
diff changeset
   923
 */
5108
dc67d70b5a45 (svn r7182) -Feature: Merge utf8 branch. This brings us support for Unicode/UTF-8 and the option for fonts rendered by FreeType. Language changes to come.
peter1138
parents: 5079
diff changeset
   924
bool InsertTextBufferChar(Textbuf *tb, WChar key)
1390
53a5713cf3f9 (svn r1894) - Codechange: cleaned up the console a bit, wholly unified handling of text with that of editboxes
Darkvater
parents: 1386
diff changeset
   925
{
3798
37a2090eac94 (svn r4802) - Codechange: replace _stringwidth_base and associated magic numbers with a FontSize enum, using the numbers (which are SpriteIDs) in only the places needed.
peter1138
parents: 3719
diff changeset
   926
	const byte charwidth = GetCharacterWidth(FS_NORMAL, key);
5108
dc67d70b5a45 (svn r7182) -Feature: Merge utf8 branch. This brings us support for Unicode/UTF-8 and the option for fonts rendered by FreeType. Language changes to come.
peter1138
parents: 5079
diff changeset
   927
	size_t len = Utf8CharLen(key);
dc67d70b5a45 (svn r7182) -Feature: Merge utf8 branch. This brings us support for Unicode/UTF-8 and the option for fonts rendered by FreeType. Language changes to come.
peter1138
parents: 5079
diff changeset
   928
	if (tb->length < (tb->maxlength - len) && (tb->maxwidth == 0 || tb->width + charwidth <= tb->maxwidth)) {
dc67d70b5a45 (svn r7182) -Feature: Merge utf8 branch. This brings us support for Unicode/UTF-8 and the option for fonts rendered by FreeType. Language changes to come.
peter1138
parents: 5079
diff changeset
   929
		memmove(tb->buf + tb->caretpos + len, tb->buf + tb->caretpos, tb->length - tb->caretpos + 1);
dc67d70b5a45 (svn r7182) -Feature: Merge utf8 branch. This brings us support for Unicode/UTF-8 and the option for fonts rendered by FreeType. Language changes to come.
peter1138
parents: 5079
diff changeset
   930
		Utf8Encode(tb->buf + tb->caretpos, key);
dc67d70b5a45 (svn r7182) -Feature: Merge utf8 branch. This brings us support for Unicode/UTF-8 and the option for fonts rendered by FreeType. Language changes to come.
peter1138
parents: 5079
diff changeset
   931
		tb->length += len;
dc67d70b5a45 (svn r7182) -Feature: Merge utf8 branch. This brings us support for Unicode/UTF-8 and the option for fonts rendered by FreeType. Language changes to come.
peter1138
parents: 5079
diff changeset
   932
		tb->width  += charwidth;
1390
53a5713cf3f9 (svn r1894) - Codechange: cleaned up the console a bit, wholly unified handling of text with that of editboxes
Darkvater
parents: 1386
diff changeset
   933
5108
dc67d70b5a45 (svn r7182) -Feature: Merge utf8 branch. This brings us support for Unicode/UTF-8 and the option for fonts rendered by FreeType. Language changes to come.
peter1138
parents: 5079
diff changeset
   934
		tb->caretpos   += len;
1390
53a5713cf3f9 (svn r1894) - Codechange: cleaned up the console a bit, wholly unified handling of text with that of editboxes
Darkvater
parents: 1386
diff changeset
   935
		tb->caretxoffs += charwidth;
53a5713cf3f9 (svn r1894) - Codechange: cleaned up the console a bit, wholly unified handling of text with that of editboxes
Darkvater
parents: 1386
diff changeset
   936
		return true;
53a5713cf3f9 (svn r1894) - Codechange: cleaned up the console a bit, wholly unified handling of text with that of editboxes
Darkvater
parents: 1386
diff changeset
   937
	}
53a5713cf3f9 (svn r1894) - Codechange: cleaned up the console a bit, wholly unified handling of text with that of editboxes
Darkvater
parents: 1386
diff changeset
   938
	return false;
53a5713cf3f9 (svn r1894) - Codechange: cleaned up the console a bit, wholly unified handling of text with that of editboxes
Darkvater
parents: 1386
diff changeset
   939
}
53a5713cf3f9 (svn r1894) - Codechange: cleaned up the console a bit, wholly unified handling of text with that of editboxes
Darkvater
parents: 1386
diff changeset
   940
53a5713cf3f9 (svn r1894) - Codechange: cleaned up the console a bit, wholly unified handling of text with that of editboxes
Darkvater
parents: 1386
diff changeset
   941
/**
53a5713cf3f9 (svn r1894) - Codechange: cleaned up the console a bit, wholly unified handling of text with that of editboxes
Darkvater
parents: 1386
diff changeset
   942
 * Handle text navigation with arrow keys left/right.
53a5713cf3f9 (svn r1894) - Codechange: cleaned up the console a bit, wholly unified handling of text with that of editboxes
Darkvater
parents: 1386
diff changeset
   943
 * This defines where the caret will blink and the next characer interaction will occur
6977
67b989528f3d (svn r9662) -Documentation: Doxygen corrections and @file omissions
belugas
parents: 6949
diff changeset
   944
 * @param tb Textbuf type where navigation occurs
67b989528f3d (svn r9662) -Documentation: Doxygen corrections and @file omissions
belugas
parents: 6949
diff changeset
   945
 * @param navmode Direction in which navigation occurs WKC_LEFT, WKC_RIGHT, WKC_END, WKC_HOME
7868
25b9aad39e4a (svn r10736) -Fix: Correct all mispellings of 'successful'.
peter1138
parents: 7842
diff changeset
   946
 * @return Return true on successful change of Textbuf, or false otherwise
1390
53a5713cf3f9 (svn r1894) - Codechange: cleaned up the console a bit, wholly unified handling of text with that of editboxes
Darkvater
parents: 1386
diff changeset
   947
 */
53a5713cf3f9 (svn r1894) - Codechange: cleaned up the console a bit, wholly unified handling of text with that of editboxes
Darkvater
parents: 1386
diff changeset
   948
bool MoveTextBufferPos(Textbuf *tb, int navmode)
53a5713cf3f9 (svn r1894) - Codechange: cleaned up the console a bit, wholly unified handling of text with that of editboxes
Darkvater
parents: 1386
diff changeset
   949
{
53a5713cf3f9 (svn r1894) - Codechange: cleaned up the console a bit, wholly unified handling of text with that of editboxes
Darkvater
parents: 1386
diff changeset
   950
	switch (navmode) {
9234
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   951
		case WKC_LEFT:
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   952
			if (tb->caretpos != 0) {
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   953
				WChar c;
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   954
				const char *s = Utf8PrevChar(tb->buf + tb->caretpos);
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   955
				Utf8Decode(&c, s);
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   956
				tb->caretpos    = s - tb->buf; // -= (tb->buf + tb->caretpos - s)
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   957
				tb->caretxoffs -= GetCharacterWidth(FS_NORMAL, c);
5108
dc67d70b5a45 (svn r7182) -Feature: Merge utf8 branch. This brings us support for Unicode/UTF-8 and the option for fonts rendered by FreeType. Language changes to come.
peter1138
parents: 5079
diff changeset
   958
9234
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   959
				return true;
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   960
			}
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   961
			break;
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   962
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   963
		case WKC_RIGHT:
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   964
			if (tb->caretpos < tb->length) {
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   965
				WChar c;
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   966
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   967
				tb->caretpos   += Utf8Decode(&c, tb->buf + tb->caretpos);
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   968
				tb->caretxoffs += GetCharacterWidth(FS_NORMAL, c);
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   969
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   970
				return true;
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   971
			}
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   972
			break;
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   973
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   974
		case WKC_HOME:
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   975
			tb->caretpos = 0;
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   976
			tb->caretxoffs = 0;
1390
53a5713cf3f9 (svn r1894) - Codechange: cleaned up the console a bit, wholly unified handling of text with that of editboxes
Darkvater
parents: 1386
diff changeset
   977
			return true;
5108
dc67d70b5a45 (svn r7182) -Feature: Merge utf8 branch. This brings us support for Unicode/UTF-8 and the option for fonts rendered by FreeType. Language changes to come.
peter1138
parents: 5079
diff changeset
   978
9234
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   979
		case WKC_END:
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   980
			tb->caretpos = tb->length;
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
   981
			tb->caretxoffs = tb->width;
1390
53a5713cf3f9 (svn r1894) - Codechange: cleaned up the console a bit, wholly unified handling of text with that of editboxes
Darkvater
parents: 1386
diff changeset
   982
			return true;
9315
336e6518acb3 (svn r12565) -Cleanup: variable scope in misc\*.cpp
smatz
parents: 9305
diff changeset
   983
336e6518acb3 (svn r12565) -Cleanup: variable scope in misc\*.cpp
smatz
parents: 9305
diff changeset
   984
		default:
336e6518acb3 (svn r12565) -Cleanup: variable scope in misc\*.cpp
smatz
parents: 9305
diff changeset
   985
			break;
1390
53a5713cf3f9 (svn r1894) - Codechange: cleaned up the console a bit, wholly unified handling of text with that of editboxes
Darkvater
parents: 1386
diff changeset
   986
	}
53a5713cf3f9 (svn r1894) - Codechange: cleaned up the console a bit, wholly unified handling of text with that of editboxes
Darkvater
parents: 1386
diff changeset
   987
53a5713cf3f9 (svn r1894) - Codechange: cleaned up the console a bit, wholly unified handling of text with that of editboxes
Darkvater
parents: 1386
diff changeset
   988
	return false;
53a5713cf3f9 (svn r1894) - Codechange: cleaned up the console a bit, wholly unified handling of text with that of editboxes
Darkvater
parents: 1386
diff changeset
   989
}
53a5713cf3f9 (svn r1894) - Codechange: cleaned up the console a bit, wholly unified handling of text with that of editboxes
Darkvater
parents: 1386
diff changeset
   990
53a5713cf3f9 (svn r1894) - Codechange: cleaned up the console a bit, wholly unified handling of text with that of editboxes
Darkvater
parents: 1386
diff changeset
   991
/**
4948
91dae24f3690 (svn r6937) -Codechange: Add an InitializeTextBuffer() function that handles setting up the
Darkvater
parents: 4939
diff changeset
   992
 * Initialize the textbuffer by supplying it the buffer to write into
91dae24f3690 (svn r6937) -Codechange: Add an InitializeTextBuffer() function that handles setting up the
Darkvater
parents: 4939
diff changeset
   993
 * and the maximum length of this buffer
6977
67b989528f3d (svn r9662) -Documentation: Doxygen corrections and @file omissions
belugas
parents: 6949
diff changeset
   994
 * @param tb Textbuf type which is getting initialized
4948
91dae24f3690 (svn r6937) -Codechange: Add an InitializeTextBuffer() function that handles setting up the
Darkvater
parents: 4939
diff changeset
   995
 * @param buf the buffer that will be holding the data for input
91dae24f3690 (svn r6937) -Codechange: Add an InitializeTextBuffer() function that handles setting up the
Darkvater
parents: 4939
diff changeset
   996
 * @param maxlength maximum length in characters of this buffer
91dae24f3690 (svn r6937) -Codechange: Add an InitializeTextBuffer() function that handles setting up the
Darkvater
parents: 4939
diff changeset
   997
 * @param maxwidth maximum length in pixels of this buffer. If reached, buffer
4958
aaa8a92059bf (svn r6957) -Cleanup: comments, coding style
Darkvater
parents: 4955
diff changeset
   998
 * cannot grow, even if maxlength would allow because there is space. A length
aaa8a92059bf (svn r6957) -Cleanup: comments, coding style
Darkvater
parents: 4955
diff changeset
   999
 * of zero '0' means the buffer is only restricted by maxlength */
4948
91dae24f3690 (svn r6937) -Codechange: Add an InitializeTextBuffer() function that handles setting up the
Darkvater
parents: 4939
diff changeset
  1000
void InitializeTextBuffer(Textbuf *tb, const char *buf, uint16 maxlength, uint16 maxwidth)
91dae24f3690 (svn r6937) -Codechange: Add an InitializeTextBuffer() function that handles setting up the
Darkvater
parents: 4939
diff changeset
  1001
{
91dae24f3690 (svn r6937) -Codechange: Add an InitializeTextBuffer() function that handles setting up the
Darkvater
parents: 4939
diff changeset
  1002
	tb->buf = (char*)buf;
91dae24f3690 (svn r6937) -Codechange: Add an InitializeTextBuffer() function that handles setting up the
Darkvater
parents: 4939
diff changeset
  1003
	tb->maxlength = maxlength;
91dae24f3690 (svn r6937) -Codechange: Add an InitializeTextBuffer() function that handles setting up the
Darkvater
parents: 4939
diff changeset
  1004
	tb->maxwidth  = maxwidth;
91dae24f3690 (svn r6937) -Codechange: Add an InitializeTextBuffer() function that handles setting up the
Darkvater
parents: 4939
diff changeset
  1005
	tb->caret = true;
91dae24f3690 (svn r6937) -Codechange: Add an InitializeTextBuffer() function that handles setting up the
Darkvater
parents: 4939
diff changeset
  1006
	UpdateTextBufferSize(tb);
91dae24f3690 (svn r6937) -Codechange: Add an InitializeTextBuffer() function that handles setting up the
Darkvater
parents: 4939
diff changeset
  1007
}
91dae24f3690 (svn r6937) -Codechange: Add an InitializeTextBuffer() function that handles setting up the
Darkvater
parents: 4939
diff changeset
  1008
91dae24f3690 (svn r6937) -Codechange: Add an InitializeTextBuffer() function that handles setting up the
Darkvater
parents: 4939
diff changeset
  1009
/**
6977
67b989528f3d (svn r9662) -Documentation: Doxygen corrections and @file omissions
belugas
parents: 6949
diff changeset
  1010
 * Update Textbuf type with its actual physical character and screenlength
1390
53a5713cf3f9 (svn r1894) - Codechange: cleaned up the console a bit, wholly unified handling of text with that of editboxes
Darkvater
parents: 1386
diff changeset
  1011
 * Get the count of characters in the string as well as the width in pixels.
53a5713cf3f9 (svn r1894) - Codechange: cleaned up the console a bit, wholly unified handling of text with that of editboxes
Darkvater
parents: 1386
diff changeset
  1012
 * Useful when copying in a larger amount of text at once
6977
67b989528f3d (svn r9662) -Documentation: Doxygen corrections and @file omissions
belugas
parents: 6949
diff changeset
  1013
 * @param tb Textbuf type which length is calculated
1390
53a5713cf3f9 (svn r1894) - Codechange: cleaned up the console a bit, wholly unified handling of text with that of editboxes
Darkvater
parents: 1386
diff changeset
  1014
 */
53a5713cf3f9 (svn r1894) - Codechange: cleaned up the console a bit, wholly unified handling of text with that of editboxes
Darkvater
parents: 1386
diff changeset
  1015
void UpdateTextBufferSize(Textbuf *tb)
53a5713cf3f9 (svn r1894) - Codechange: cleaned up the console a bit, wholly unified handling of text with that of editboxes
Darkvater
parents: 1386
diff changeset
  1016
{
5108
dc67d70b5a45 (svn r7182) -Feature: Merge utf8 branch. This brings us support for Unicode/UTF-8 and the option for fonts rendered by FreeType. Language changes to come.
peter1138
parents: 5079
diff changeset
  1017
	const char *buf = tb->buf;
dc67d70b5a45 (svn r7182) -Feature: Merge utf8 branch. This brings us support for Unicode/UTF-8 and the option for fonts rendered by FreeType. Language changes to come.
peter1138
parents: 5079
diff changeset
  1018
	WChar c = Utf8Consume(&buf);
2630
35249d2ded3e (svn r3172) static, const
tron
parents: 2559
diff changeset
  1019
1390
53a5713cf3f9 (svn r1894) - Codechange: cleaned up the console a bit, wholly unified handling of text with that of editboxes
Darkvater
parents: 1386
diff changeset
  1020
	tb->width = 0;
5698
6697ee90a195 (svn r7700) -Fix (r7182): the caret 'randomly' jumped back and forth when getting a new randomised seed in the Generation World GUI.
rubidium
parents: 5682
diff changeset
  1021
	tb->length = 0;
1390
53a5713cf3f9 (svn r1894) - Codechange: cleaned up the console a bit, wholly unified handling of text with that of editboxes
Darkvater
parents: 1386
diff changeset
  1022
5108
dc67d70b5a45 (svn r7182) -Feature: Merge utf8 branch. This brings us support for Unicode/UTF-8 and the option for fonts rendered by FreeType. Language changes to come.
peter1138
parents: 5079
diff changeset
  1023
	for (; c != '\0' && tb->length < (tb->maxlength - 1); c = Utf8Consume(&buf)) {
dc67d70b5a45 (svn r7182) -Feature: Merge utf8 branch. This brings us support for Unicode/UTF-8 and the option for fonts rendered by FreeType. Language changes to come.
peter1138
parents: 5079
diff changeset
  1024
		tb->width += GetCharacterWidth(FS_NORMAL, c);
5698
6697ee90a195 (svn r7700) -Fix (r7182): the caret 'randomly' jumped back and forth when getting a new randomised seed in the Generation World GUI.
rubidium
parents: 5682
diff changeset
  1025
		tb->length += Utf8CharLen(c);
1390
53a5713cf3f9 (svn r1894) - Codechange: cleaned up the console a bit, wholly unified handling of text with that of editboxes
Darkvater
parents: 1386
diff changeset
  1026
	}
53a5713cf3f9 (svn r1894) - Codechange: cleaned up the console a bit, wholly unified handling of text with that of editboxes
Darkvater
parents: 1386
diff changeset
  1027
53a5713cf3f9 (svn r1894) - Codechange: cleaned up the console a bit, wholly unified handling of text with that of editboxes
Darkvater
parents: 1386
diff changeset
  1028
	tb->caretpos = tb->length;
53a5713cf3f9 (svn r1894) - Codechange: cleaned up the console a bit, wholly unified handling of text with that of editboxes
Darkvater
parents: 1386
diff changeset
  1029
	tb->caretxoffs = tb->width;
911
bde79514283f (svn r1398) -Feature: CTRL+V (Paste) now works on all editboxes. This includes 'Add Server', chat, etc. Feature is Windows only.
darkvater
parents: 910
diff changeset
  1030
}
bde79514283f (svn r1398) -Feature: CTRL+V (Paste) now works on all editboxes. This includes 'Add Server', chat, etc. Feature is Windows only.
darkvater
parents: 910
diff changeset
  1031
4909
ef77bf81545c (svn r6879) -Codechange: Remove the superflouos argument CharsetFilter parameter from HandleEditBoxKey
Darkvater
parents: 4884
diff changeset
  1032
int HandleEditBoxKey(Window *w, querystr_d *string, int wid, WindowEvent *e)
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1033
{
4634
897461a3e9ca (svn r6499) -Codechange: Finally, got "byte event" outside of the union WindowEvent, which is now a struct
belugas
parents: 4609
diff changeset
  1034
	e->we.keypress.cont = false;
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1035
4634
897461a3e9ca (svn r6499) -Codechange: Finally, got "byte event" outside of the union WindowEvent, which is now a struct
belugas
parents: 4609
diff changeset
  1036
	switch (e->we.keypress.keycode) {
9234
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1037
		case WKC_ESC: return 2;
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1038
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1039
		case WKC_RETURN: case WKC_NUM_ENTER: return 1;
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1040
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1041
		case (WKC_CTRL | 'V'):
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1042
			if (InsertTextBufferClipboard(&string->text)) w->InvalidateWidget(wid);
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1043
			break;
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1044
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1045
		case (WKC_CTRL | 'U'):
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1046
			DeleteTextBufferAll(&string->text);
8524
baf4ab1ba18d (svn r11588) -Codechange: use the new member introduced in r11551
glx
parents: 8515
diff changeset
  1047
			w->InvalidateWidget(wid);
9234
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1048
			break;
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1049
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1050
		case WKC_BACKSPACE: case WKC_DELETE:
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1051
			if (DeleteTextBufferChar(&string->text, e->we.keypress.keycode)) w->InvalidateWidget(wid);
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1052
			break;
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1053
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1054
		case WKC_LEFT: case WKC_RIGHT: case WKC_END: case WKC_HOME:
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1055
			if (MoveTextBufferPos(&string->text, e->we.keypress.keycode)) w->InvalidateWidget(wid);
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1056
			break;
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1057
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1058
		default:
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1059
			if (IsValidChar(e->we.keypress.key, string->afilter)) {
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1060
				if (InsertTextBufferChar(&string->text, e->we.keypress.key)) w->InvalidateWidget(wid);
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1061
			} else { // key wasn't caught. Continue only if standard entry specified
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1062
				e->we.keypress.cont = (string->afilter == CS_ALPHANUMERAL);
5108
dc67d70b5a45 (svn r7182) -Feature: Merge utf8 branch. This brings us support for Unicode/UTF-8 and the option for fonts rendered by FreeType. Language changes to come.
peter1138
parents: 5079
diff changeset
  1063
			}
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1064
	}
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1065
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1066
	return 0;
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1067
}
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1068
1390
53a5713cf3f9 (svn r1894) - Codechange: cleaned up the console a bit, wholly unified handling of text with that of editboxes
Darkvater
parents: 1386
diff changeset
  1069
bool HandleCaret(Textbuf *tb)
53a5713cf3f9 (svn r1894) - Codechange: cleaned up the console a bit, wholly unified handling of text with that of editboxes
Darkvater
parents: 1386
diff changeset
  1070
{
53a5713cf3f9 (svn r1894) - Codechange: cleaned up the console a bit, wholly unified handling of text with that of editboxes
Darkvater
parents: 1386
diff changeset
  1071
	/* caret changed? */
53a5713cf3f9 (svn r1894) - Codechange: cleaned up the console a bit, wholly unified handling of text with that of editboxes
Darkvater
parents: 1386
diff changeset
  1072
	bool b = !!(_caret_timer & 0x20);
53a5713cf3f9 (svn r1894) - Codechange: cleaned up the console a bit, wholly unified handling of text with that of editboxes
Darkvater
parents: 1386
diff changeset
  1073
53a5713cf3f9 (svn r1894) - Codechange: cleaned up the console a bit, wholly unified handling of text with that of editboxes
Darkvater
parents: 1386
diff changeset
  1074
	if (b != tb->caret) {
53a5713cf3f9 (svn r1894) - Codechange: cleaned up the console a bit, wholly unified handling of text with that of editboxes
Darkvater
parents: 1386
diff changeset
  1075
		tb->caret = b;
53a5713cf3f9 (svn r1894) - Codechange: cleaned up the console a bit, wholly unified handling of text with that of editboxes
Darkvater
parents: 1386
diff changeset
  1076
		return true;
53a5713cf3f9 (svn r1894) - Codechange: cleaned up the console a bit, wholly unified handling of text with that of editboxes
Darkvater
parents: 1386
diff changeset
  1077
	}
53a5713cf3f9 (svn r1894) - Codechange: cleaned up the console a bit, wholly unified handling of text with that of editboxes
Darkvater
parents: 1386
diff changeset
  1078
	return false;
53a5713cf3f9 (svn r1894) - Codechange: cleaned up the console a bit, wholly unified handling of text with that of editboxes
Darkvater
parents: 1386
diff changeset
  1079
}
53a5713cf3f9 (svn r1894) - Codechange: cleaned up the console a bit, wholly unified handling of text with that of editboxes
Darkvater
parents: 1386
diff changeset
  1080
2887
d5967e472eee (svn r3439) - CodeChange: Remove a whole bunch of global variables and put them into the WP() macro. Also combine more than one WP-custom element. For this the maximum size of w->custom (WP) has been increased, and multiple types put inside one with possibly moved to the corresponding gui file if it is only used there.
Darkvater
parents: 2873
diff changeset
  1081
void HandleEditBox(Window *w, querystr_d *string, int wid)
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1082
{
8524
baf4ab1ba18d (svn r11588) -Codechange: use the new member introduced in r11551
glx
parents: 8515
diff changeset
  1083
	if (HandleCaret(&string->text)) w->InvalidateWidget(wid);
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1084
}
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1085
2887
d5967e472eee (svn r3439) - CodeChange: Remove a whole bunch of global variables and put them into the WP() macro. Also combine more than one WP-custom element. For this the maximum size of w->custom (WP) has been increased, and multiple types put inside one with possibly moved to the corresponding gui file if it is only used there.
Darkvater
parents: 2873
diff changeset
  1086
void DrawEditBox(Window *w, querystr_d *string, int wid)
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1087
{
4955
e3496ee0e37d (svn r6954) -Feature: Constrain the drawing of a string inside an editbox to the dimensions of
Darkvater
parents: 4949
diff changeset
  1088
	const Widget *wi = &w->widget[wid];
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1089
9233
4daa9bb8dbf7 (svn r12425) -Feature [FS#1846]: On Screen Keyboard for input fields so someone without a keyboard can enter text too. Patch by Dominik.
rubidium
parents: 9211
diff changeset
  1090
	assert((wi->type & WWT_MASK) == WWT_EDITBOX);
4daa9bb8dbf7 (svn r12425) -Feature [FS#1846]: On Screen Keyboard for input fields so someone without a keyboard can enter text too. Patch by Dominik.
rubidium
parents: 9211
diff changeset
  1091
5890
45bd89352147 (svn r8098) -Fix (r6964): For editboxen, always fill the background with black, and not only after a valid call to FillDrawPixelInfo. This solves some graphics glitches with background widget-colour showing through on frequent redraws.
Darkvater
parents: 5847
diff changeset
  1092
	GfxFillRect(wi->left + 1, wi->top + 1, wi->right - 1, wi->bottom - 1, 215);
45bd89352147 (svn r8098) -Fix (r6964): For editboxen, always fill the background with black, and not only after a valid call to FillDrawPixelInfo. This solves some graphics glitches with background widget-colour showing through on frequent redraws.
Darkvater
parents: 5847
diff changeset
  1093
9315
336e6518acb3 (svn r12565) -Cleanup: variable scope in misc\*.cpp
smatz
parents: 9305
diff changeset
  1094
	DrawPixelInfo dpi;
336e6518acb3 (svn r12565) -Cleanup: variable scope in misc\*.cpp
smatz
parents: 9305
diff changeset
  1095
	int delta;
336e6518acb3 (svn r12565) -Cleanup: variable scope in misc\*.cpp
smatz
parents: 9305
diff changeset
  1096
4955
e3496ee0e37d (svn r6954) -Feature: Constrain the drawing of a string inside an editbox to the dimensions of
Darkvater
parents: 4949
diff changeset
  1097
	/* Limit the drawing of the string inside the widget boundaries */
e3496ee0e37d (svn r6954) -Feature: Constrain the drawing of a string inside an editbox to the dimensions of
Darkvater
parents: 4949
diff changeset
  1098
	if (!FillDrawPixelInfo(&dpi,
9234
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1099
			wi->left + 4,
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1100
			wi->top + 1,
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1101
			wi->right - wi->left - 4,
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1102
			wi->bottom - wi->top - 1)) {
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1103
		return;
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1104
	}
4955
e3496ee0e37d (svn r6954) -Feature: Constrain the drawing of a string inside an editbox to the dimensions of
Darkvater
parents: 4949
diff changeset
  1105
9315
336e6518acb3 (svn r12565) -Cleanup: variable scope in misc\*.cpp
smatz
parents: 9305
diff changeset
  1106
	DrawPixelInfo *old_dpi = _cur_dpi;
4955
e3496ee0e37d (svn r6954) -Feature: Constrain the drawing of a string inside an editbox to the dimensions of
Darkvater
parents: 4949
diff changeset
  1107
	_cur_dpi = &dpi;
e3496ee0e37d (svn r6954) -Feature: Constrain the drawing of a string inside an editbox to the dimensions of
Darkvater
parents: 4949
diff changeset
  1108
e3496ee0e37d (svn r6954) -Feature: Constrain the drawing of a string inside an editbox to the dimensions of
Darkvater
parents: 4949
diff changeset
  1109
	/* We will take the current widget length as maximum width, with a small
e3496ee0e37d (svn r6954) -Feature: Constrain the drawing of a string inside an editbox to the dimensions of
Darkvater
parents: 4949
diff changeset
  1110
	 * space reserved at the end for the caret to show */
9315
336e6518acb3 (svn r12565) -Cleanup: variable scope in misc\*.cpp
smatz
parents: 9305
diff changeset
  1111
	const Textbuf *tb = &string->text;
336e6518acb3 (svn r12565) -Cleanup: variable scope in misc\*.cpp
smatz
parents: 9305
diff changeset
  1112
4955
e3496ee0e37d (svn r6954) -Feature: Constrain the drawing of a string inside an editbox to the dimensions of
Darkvater
parents: 4949
diff changeset
  1113
	delta = (wi->right - wi->left) - tb->width - 10;
e3496ee0e37d (svn r6954) -Feature: Constrain the drawing of a string inside an editbox to the dimensions of
Darkvater
parents: 4949
diff changeset
  1114
	if (delta > 0) delta = 0;
e3496ee0e37d (svn r6954) -Feature: Constrain the drawing of a string inside an editbox to the dimensions of
Darkvater
parents: 4949
diff changeset
  1115
e3496ee0e37d (svn r6954) -Feature: Constrain the drawing of a string inside an editbox to the dimensions of
Darkvater
parents: 4949
diff changeset
  1116
	if (tb->caretxoffs + delta < 0) delta = -tb->caretxoffs;
e3496ee0e37d (svn r6954) -Feature: Constrain the drawing of a string inside an editbox to the dimensions of
Darkvater
parents: 4949
diff changeset
  1117
8320
6ffad7a5d242 (svn r11374) -Codechange: Give meaning to the magical number that specifies the color of the text in a DrawString call.
belugas
parents: 8246
diff changeset
  1118
	DoDrawString(tb->buf, delta, 0, TC_YELLOW);
6ffad7a5d242 (svn r11374) -Codechange: Give meaning to the magical number that specifies the color of the text in a DrawString call.
belugas
parents: 8246
diff changeset
  1119
	if (tb->caret) DoDrawString("_", tb->caretxoffs + delta, 0, TC_WHITE);
4955
e3496ee0e37d (svn r6954) -Feature: Constrain the drawing of a string inside an editbox to the dimensions of
Darkvater
parents: 4949
diff changeset
  1120
e3496ee0e37d (svn r6954) -Feature: Constrain the drawing of a string inside an editbox to the dimensions of
Darkvater
parents: 4949
diff changeset
  1121
	_cur_dpi = old_dpi;
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1122
}
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1123
5682
eeddbbacd4ac (svn r7637) -Codechange: Change ShowQueryString to use a window pointer as a parent. If the
Darkvater
parents: 5680
diff changeset
  1124
enum QueryStringWidgets {
eeddbbacd4ac (svn r7637) -Codechange: Change ShowQueryString to use a window pointer as a parent. If the
Darkvater
parents: 5680
diff changeset
  1125
	QUERY_STR_WIDGET_TEXT = 3,
eeddbbacd4ac (svn r7637) -Codechange: Change ShowQueryString to use a window pointer as a parent. If the
Darkvater
parents: 5680
diff changeset
  1126
	QUERY_STR_WIDGET_CANCEL,
eeddbbacd4ac (svn r7637) -Codechange: Change ShowQueryString to use a window pointer as a parent. If the
Darkvater
parents: 5680
diff changeset
  1127
	QUERY_STR_WIDGET_OK
eeddbbacd4ac (svn r7637) -Codechange: Change ShowQueryString to use a window pointer as a parent. If the
Darkvater
parents: 5680
diff changeset
  1128
};
eeddbbacd4ac (svn r7637) -Codechange: Change ShowQueryString to use a window pointer as a parent. If the
Darkvater
parents: 5680
diff changeset
  1129
eeddbbacd4ac (svn r7637) -Codechange: Change ShowQueryString to use a window pointer as a parent. If the
Darkvater
parents: 5680
diff changeset
  1130
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1131
static void QueryStringWndProc(Window *w, WindowEvent *e)
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1132
{
5682
eeddbbacd4ac (svn r7637) -Codechange: Change ShowQueryString to use a window pointer as a parent. If the
Darkvater
parents: 5680
diff changeset
  1133
	querystr_d *qs = &WP(w, querystr_d);
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1134
5682
eeddbbacd4ac (svn r7637) -Codechange: Change ShowQueryString to use a window pointer as a parent. If the
Darkvater
parents: 5680
diff changeset
  1135
	switch (e->event) {
eeddbbacd4ac (svn r7637) -Codechange: Change ShowQueryString to use a window pointer as a parent. If the
Darkvater
parents: 5680
diff changeset
  1136
		case WE_CREATE:
8427
143b0be22af1 (svn r11484) -Codechange: Remove the doubled function SetBitT and rename the remaining to fit with the naming style
skidd13
parents: 8425
diff changeset
  1137
			SetBit(_no_scroll, SCROLL_EDIT);
5682
eeddbbacd4ac (svn r7637) -Codechange: Change ShowQueryString to use a window pointer as a parent. If the
Darkvater
parents: 5680
diff changeset
  1138
			break;
390
672930cad487 (svn r582) -Fix: [ 1034318 ] place sign and blue message box
tron
parents: 337
diff changeset
  1139
5682
eeddbbacd4ac (svn r7637) -Codechange: Change ShowQueryString to use a window pointer as a parent. If the
Darkvater
parents: 5680
diff changeset
  1140
		case WE_PAINT:
eeddbbacd4ac (svn r7637) -Codechange: Change ShowQueryString to use a window pointer as a parent. If the
Darkvater
parents: 5680
diff changeset
  1141
			SetDParam(0, qs->caption);
eeddbbacd4ac (svn r7637) -Codechange: Change ShowQueryString to use a window pointer as a parent. If the
Darkvater
parents: 5680
diff changeset
  1142
			DrawWindowWidgets(w);
598
200de7111fa9 (svn r1022) -Fix: [Network] [ 1083690 ] The password dialog made the network
truelight
parents: 596
diff changeset
  1143
5682
eeddbbacd4ac (svn r7637) -Codechange: Change ShowQueryString to use a window pointer as a parent. If the
Darkvater
parents: 5680
diff changeset
  1144
			DrawEditBox(w, qs, QUERY_STR_WIDGET_TEXT);
eeddbbacd4ac (svn r7637) -Codechange: Change ShowQueryString to use a window pointer as a parent. If the
Darkvater
parents: 5680
diff changeset
  1145
			break;
eeddbbacd4ac (svn r7637) -Codechange: Change ShowQueryString to use a window pointer as a parent. If the
Darkvater
parents: 5680
diff changeset
  1146
eeddbbacd4ac (svn r7637) -Codechange: Change ShowQueryString to use a window pointer as a parent. If the
Darkvater
parents: 5680
diff changeset
  1147
		case WE_CLICK:
eeddbbacd4ac (svn r7637) -Codechange: Change ShowQueryString to use a window pointer as a parent. If the
Darkvater
parents: 5680
diff changeset
  1148
			switch (e->we.click.widget) {
9233
4daa9bb8dbf7 (svn r12425) -Feature [FS#1846]: On Screen Keyboard for input fields so someone without a keyboard can enter text too. Patch by Dominik.
rubidium
parents: 9211
diff changeset
  1149
				case QUERY_STR_WIDGET_TEXT:
4daa9bb8dbf7 (svn r12425) -Feature [FS#1846]: On Screen Keyboard for input fields so someone without a keyboard can enter text too. Patch by Dominik.
rubidium
parents: 9211
diff changeset
  1150
					ShowOnScreenKeyboard(w, &WP(w, querystr_d), QUERY_STR_WIDGET_TEXT, QUERY_STR_WIDGET_CANCEL, QUERY_STR_WIDGET_OK);
4daa9bb8dbf7 (svn r12425) -Feature [FS#1846]: On Screen Keyboard for input fields so someone without a keyboard can enter text too. Patch by Dominik.
rubidium
parents: 9211
diff changeset
  1151
					break;
4daa9bb8dbf7 (svn r12425) -Feature [FS#1846]: On Screen Keyboard for input fields so someone without a keyboard can enter text too. Patch by Dominik.
rubidium
parents: 9211
diff changeset
  1152
5682
eeddbbacd4ac (svn r7637) -Codechange: Change ShowQueryString to use a window pointer as a parent. If the
Darkvater
parents: 5680
diff changeset
  1153
				case QUERY_STR_WIDGET_OK:
eeddbbacd4ac (svn r7637) -Codechange: Change ShowQueryString to use a window pointer as a parent. If the
Darkvater
parents: 5680
diff changeset
  1154
		press_ok:;
eeddbbacd4ac (svn r7637) -Codechange: Change ShowQueryString to use a window pointer as a parent. If the
Darkvater
parents: 5680
diff changeset
  1155
					if (qs->orig == NULL || strcmp(qs->text.buf, qs->orig) != 0) {
eeddbbacd4ac (svn r7637) -Codechange: Change ShowQueryString to use a window pointer as a parent. If the
Darkvater
parents: 5680
diff changeset
  1156
						Window *parent = w->parent;
eeddbbacd4ac (svn r7637) -Codechange: Change ShowQueryString to use a window pointer as a parent. If the
Darkvater
parents: 5680
diff changeset
  1157
						qs->handled = true;
eeddbbacd4ac (svn r7637) -Codechange: Change ShowQueryString to use a window pointer as a parent. If the
Darkvater
parents: 5680
diff changeset
  1158
eeddbbacd4ac (svn r7637) -Codechange: Change ShowQueryString to use a window pointer as a parent. If the
Darkvater
parents: 5680
diff changeset
  1159
						/* If the parent is NULL, the editbox is handled by general function
eeddbbacd4ac (svn r7637) -Codechange: Change ShowQueryString to use a window pointer as a parent. If the
Darkvater
parents: 5680
diff changeset
  1160
						 * HandleOnEditText */
eeddbbacd4ac (svn r7637) -Codechange: Change ShowQueryString to use a window pointer as a parent. If the
Darkvater
parents: 5680
diff changeset
  1161
						if (parent != NULL) {
eeddbbacd4ac (svn r7637) -Codechange: Change ShowQueryString to use a window pointer as a parent. If the
Darkvater
parents: 5680
diff changeset
  1162
							WindowEvent e;
eeddbbacd4ac (svn r7637) -Codechange: Change ShowQueryString to use a window pointer as a parent. If the
Darkvater
parents: 5680
diff changeset
  1163
							e.event = WE_ON_EDIT_TEXT;
eeddbbacd4ac (svn r7637) -Codechange: Change ShowQueryString to use a window pointer as a parent. If the
Darkvater
parents: 5680
diff changeset
  1164
							e.we.edittext.str = qs->text.buf;
eeddbbacd4ac (svn r7637) -Codechange: Change ShowQueryString to use a window pointer as a parent. If the
Darkvater
parents: 5680
diff changeset
  1165
							parent->wndproc(parent, &e);
eeddbbacd4ac (svn r7637) -Codechange: Change ShowQueryString to use a window pointer as a parent. If the
Darkvater
parents: 5680
diff changeset
  1166
						} else {
eeddbbacd4ac (svn r7637) -Codechange: Change ShowQueryString to use a window pointer as a parent. If the
Darkvater
parents: 5680
diff changeset
  1167
							HandleOnEditText(qs->text.buf);
eeddbbacd4ac (svn r7637) -Codechange: Change ShowQueryString to use a window pointer as a parent. If the
Darkvater
parents: 5680
diff changeset
  1168
						}
eeddbbacd4ac (svn r7637) -Codechange: Change ShowQueryString to use a window pointer as a parent. If the
Darkvater
parents: 5680
diff changeset
  1169
					}
eeddbbacd4ac (svn r7637) -Codechange: Change ShowQueryString to use a window pointer as a parent. If the
Darkvater
parents: 5680
diff changeset
  1170
					/* Fallthrough */
eeddbbacd4ac (svn r7637) -Codechange: Change ShowQueryString to use a window pointer as a parent. If the
Darkvater
parents: 5680
diff changeset
  1171
				case QUERY_STR_WIDGET_CANCEL:
eeddbbacd4ac (svn r7637) -Codechange: Change ShowQueryString to use a window pointer as a parent. If the
Darkvater
parents: 5680
diff changeset
  1172
					DeleteWindow(w);
eeddbbacd4ac (svn r7637) -Codechange: Change ShowQueryString to use a window pointer as a parent. If the
Darkvater
parents: 5680
diff changeset
  1173
					break;
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1174
			}
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1175
			break;
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1176
5682
eeddbbacd4ac (svn r7637) -Codechange: Change ShowQueryString to use a window pointer as a parent. If the
Darkvater
parents: 5680
diff changeset
  1177
		case WE_MOUSELOOP:
eeddbbacd4ac (svn r7637) -Codechange: Change ShowQueryString to use a window pointer as a parent. If the
Darkvater
parents: 5680
diff changeset
  1178
			HandleEditBox(w, qs, QUERY_STR_WIDGET_TEXT);
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1179
			break;
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1180
5682
eeddbbacd4ac (svn r7637) -Codechange: Change ShowQueryString to use a window pointer as a parent. If the
Darkvater
parents: 5680
diff changeset
  1181
		case WE_KEYPRESS:
eeddbbacd4ac (svn r7637) -Codechange: Change ShowQueryString to use a window pointer as a parent. If the
Darkvater
parents: 5680
diff changeset
  1182
			switch (HandleEditBoxKey(w, qs, QUERY_STR_WIDGET_TEXT, e)) {
6527
f584ab6d87f8 (svn r8987) -Cleanup: doxygen changes. Again. Mostly (still) @files missing tags and (more than just) a few comments style.
belugas
parents: 6523
diff changeset
  1183
				case 1: goto press_ok; // Enter pressed, confirms change
f584ab6d87f8 (svn r8987) -Cleanup: doxygen changes. Again. Mostly (still) @files missing tags and (more than just) a few comments style.
belugas
parents: 6523
diff changeset
  1184
				case 2: DeleteWindow(w); break; // ESC pressed, closes window, abandons changes
5682
eeddbbacd4ac (svn r7637) -Codechange: Change ShowQueryString to use a window pointer as a parent. If the
Darkvater
parents: 5680
diff changeset
  1185
			}
eeddbbacd4ac (svn r7637) -Codechange: Change ShowQueryString to use a window pointer as a parent. If the
Darkvater
parents: 5680
diff changeset
  1186
			break;
eeddbbacd4ac (svn r7637) -Codechange: Change ShowQueryString to use a window pointer as a parent. If the
Darkvater
parents: 5680
diff changeset
  1187
6527
f584ab6d87f8 (svn r8987) -Cleanup: doxygen changes. Again. Mostly (still) @files missing tags and (more than just) a few comments style.
belugas
parents: 6523
diff changeset
  1188
		case WE_DESTROY: // Call cancellation of query, if we have not handled it before
5682
eeddbbacd4ac (svn r7637) -Codechange: Change ShowQueryString to use a window pointer as a parent. If the
Darkvater
parents: 5680
diff changeset
  1189
			if (!qs->handled && w->parent != NULL) {
543
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents: 541
diff changeset
  1190
				WindowEvent e;
5682
eeddbbacd4ac (svn r7637) -Codechange: Change ShowQueryString to use a window pointer as a parent. If the
Darkvater
parents: 5680
diff changeset
  1191
				Window *parent = w->parent;
eeddbbacd4ac (svn r7637) -Codechange: Change ShowQueryString to use a window pointer as a parent. If the
Darkvater
parents: 5680
diff changeset
  1192
eeddbbacd4ac (svn r7637) -Codechange: Change ShowQueryString to use a window pointer as a parent. If the
Darkvater
parents: 5680
diff changeset
  1193
				qs->handled = true;
543
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents: 541
diff changeset
  1194
				e.event = WE_ON_EDIT_TEXT_CANCEL;
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents: 541
diff changeset
  1195
				parent->wndproc(parent, &e);
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents: 541
diff changeset
  1196
			}
8425
72a71d480c5f (svn r11482) -Codechange: Remove the doubled function ClrBitT and rename the remaining to fit with the naming style
skidd13
parents: 8418
diff changeset
  1197
			ClrBit(_no_scroll, SCROLL_EDIT);
5682
eeddbbacd4ac (svn r7637) -Codechange: Change ShowQueryString to use a window pointer as a parent. If the
Darkvater
parents: 5680
diff changeset
  1198
			break;
543
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents: 541
diff changeset
  1199
		}
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1200
}
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1201
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1202
static const Widget _query_string_widgets[] = {
4344
5d0e40cd67b9 (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4326
diff changeset
  1203
{   WWT_CLOSEBOX,   RESIZE_NONE,    14,     0,    10,     0,    13, STR_00C5,        STR_018B_CLOSE_WINDOW},
5d0e40cd67b9 (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4326
diff changeset
  1204
{    WWT_CAPTION,   RESIZE_NONE,    14,    11,   259,     0,    13, STR_012D,        STR_NULL},
4938
074f734a91ca (svn r6925) -Codechange: Be more strict with widget distinctions. WWT_PANEL is only plain panel,
Darkvater
parents: 4912
diff changeset
  1205
{      WWT_PANEL,   RESIZE_NONE,    14,     0,   259,    14,    29, 0x0,             STR_NULL},
9233
4daa9bb8dbf7 (svn r12425) -Feature [FS#1846]: On Screen Keyboard for input fields so someone without a keyboard can enter text too. Patch by Dominik.
rubidium
parents: 9211
diff changeset
  1206
{    WWT_EDITBOX,   RESIZE_NONE,    14,     2,   257,    16,    27, 0x0,             STR_NULL},
4344
5d0e40cd67b9 (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4326
diff changeset
  1207
{    WWT_TEXTBTN,   RESIZE_NONE,    14,     0,   129,    30,    41, STR_012E_CANCEL, STR_NULL},
5d0e40cd67b9 (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4326
diff changeset
  1208
{    WWT_TEXTBTN,   RESIZE_NONE,    14,   130,   259,    30,    41, STR_012F_OK,     STR_NULL},
176
84990c4b9212 (svn r177) -Fix: padded out Widget code to solve warnings on C99 compiler (Tron)
darkvater
parents: 172
diff changeset
  1209
{   WIDGETS_END},
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1210
};
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1211
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1212
static const WindowDesc _query_string_desc = {
7837
65d7362153a6 (svn r10704) -Codechange: provide an infrastructure to have resizable windows that are smaller than the default window size.
rubidium
parents: 7817
diff changeset
  1213
	190, 219, 260, 42, 260, 42,
6144
5a0ffbf27ced (svn r8511) -Codechange: make WindowClass an enumerated value.
rubidium
parents: 6001
diff changeset
  1214
	WC_QUERY_STRING, WC_NONE,
8515
d0401d967e99 (svn r11579) -Revert(r11578): some cases of key propagation are not handled correctly.
belugas
parents: 8514
diff changeset
  1215
	WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET,
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1216
	_query_string_widgets,
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1217
	QueryStringWndProc
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1218
};
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1219
9233
4daa9bb8dbf7 (svn r12425) -Feature [FS#1846]: On Screen Keyboard for input fields so someone without a keyboard can enter text too. Patch by Dominik.
rubidium
parents: 9211
diff changeset
  1220
char _edit_str_buf[64];
4daa9bb8dbf7 (svn r12425) -Feature [FS#1846]: On Screen Keyboard for input fields so someone without a keyboard can enter text too. Patch by Dominik.
rubidium
parents: 9211
diff changeset
  1221
char _orig_str_buf[lengthof(_edit_str_buf)];
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1222
5682
eeddbbacd4ac (svn r7637) -Codechange: Change ShowQueryString to use a window pointer as a parent. If the
Darkvater
parents: 5680
diff changeset
  1223
/** Show a query popup window with a textbox in it.
eeddbbacd4ac (svn r7637) -Codechange: Change ShowQueryString to use a window pointer as a parent. If the
Darkvater
parents: 5680
diff changeset
  1224
 * @param str StringID for the text shown in the textbox
eeddbbacd4ac (svn r7637) -Codechange: Change ShowQueryString to use a window pointer as a parent. If the
Darkvater
parents: 5680
diff changeset
  1225
 * @param caption StringID of text shown in caption of querywindow
eeddbbacd4ac (svn r7637) -Codechange: Change ShowQueryString to use a window pointer as a parent. If the
Darkvater
parents: 5680
diff changeset
  1226
 * @param maxlen maximum length in characters allowed. If bit 12 is set we
eeddbbacd4ac (svn r7637) -Codechange: Change ShowQueryString to use a window pointer as a parent. If the
Darkvater
parents: 5680
diff changeset
  1227
 * will not check the resulting string against to original string to return success
eeddbbacd4ac (svn r7637) -Codechange: Change ShowQueryString to use a window pointer as a parent. If the
Darkvater
parents: 5680
diff changeset
  1228
 * @param maxwidth maximum width in pixels allowed
eeddbbacd4ac (svn r7637) -Codechange: Change ShowQueryString to use a window pointer as a parent. If the
Darkvater
parents: 5680
diff changeset
  1229
 * @param parent pointer to a Window that will handle the events (ok/cancel) of this
eeddbbacd4ac (svn r7637) -Codechange: Change ShowQueryString to use a window pointer as a parent. If the
Darkvater
parents: 5680
diff changeset
  1230
 * window. If NULL, results are handled by global function HandleOnEditText
eeddbbacd4ac (svn r7637) -Codechange: Change ShowQueryString to use a window pointer as a parent. If the
Darkvater
parents: 5680
diff changeset
  1231
 * @param afilter filters out unwanted character input */
eeddbbacd4ac (svn r7637) -Codechange: Change ShowQueryString to use a window pointer as a parent. If the
Darkvater
parents: 5680
diff changeset
  1232
void ShowQueryString(StringID str, StringID caption, uint maxlen, uint maxwidth, Window *parent, CharSetFilter afilter)
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1233
{
1390
53a5713cf3f9 (svn r1894) - Codechange: cleaned up the console a bit, wholly unified handling of text with that of editboxes
Darkvater
parents: 1386
diff changeset
  1234
	uint realmaxlen = maxlen & ~0x1000;
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1235
1390
53a5713cf3f9 (svn r1894) - Codechange: cleaned up the console a bit, wholly unified handling of text with that of editboxes
Darkvater
parents: 1386
diff changeset
  1236
	assert(realmaxlen < lengthof(_edit_str_buf));
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1237
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1238
	DeleteWindowById(WC_QUERY_STRING, 0);
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1239
	DeleteWindowById(WC_SAVELOAD, 0);
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1240
9234
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1241
	Window *w = AllocateWindowDesc(&_query_string_desc);
5682
eeddbbacd4ac (svn r7637) -Codechange: Change ShowQueryString to use a window pointer as a parent. If the
Darkvater
parents: 5680
diff changeset
  1242
	w->parent = parent;
1386
aa5a172a8431 (svn r1890) Begin to clean up the edit box: Remove one global variable and split the combined edit/original buffer into two
tron
parents: 1363
diff changeset
  1243
4912
d04b3f2bca70 (svn r6884) -Codechange: Add strict bounds checking in string formatting system.
Darkvater
parents: 4909
diff changeset
  1244
	GetString(_edit_str_buf, str, lastof(_edit_str_buf));
4949
fa564e9c2aea (svn r6938) -Codechange: Comments, typo, variable naming, whitespace, strecpy and simplification
Darkvater
parents: 4948
diff changeset
  1245
	_edit_str_buf[realmaxlen - 1] = '\0';
596
e876d7319634 (svn r1018) -Fix: Buffer overflow in edit box, because we misuse maxlen for a flag..
truelight
parents: 568
diff changeset
  1246
e876d7319634 (svn r1018) -Fix: Buffer overflow in edit box, because we misuse maxlen for a flag..
truelight
parents: 568
diff changeset
  1247
	if (maxlen & 0x1000) {
1386
aa5a172a8431 (svn r1890) Begin to clean up the edit box: Remove one global variable and split the combined edit/original buffer into two
tron
parents: 1363
diff changeset
  1248
		WP(w, querystr_d).orig = NULL;
aa5a172a8431 (svn r1890) Begin to clean up the edit box: Remove one global variable and split the combined edit/original buffer into two
tron
parents: 1363
diff changeset
  1249
	} else {
9233
4daa9bb8dbf7 (svn r12425) -Feature [FS#1846]: On Screen Keyboard for input fields so someone without a keyboard can enter text too. Patch by Dominik.
rubidium
parents: 9211
diff changeset
  1250
		strecpy(_orig_str_buf, _edit_str_buf, lastof(_orig_str_buf));
4daa9bb8dbf7 (svn r12425) -Feature [FS#1846]: On Screen Keyboard for input fields so someone without a keyboard can enter text too. Patch by Dominik.
rubidium
parents: 9211
diff changeset
  1251
		WP(w, querystr_d).orig = _orig_str_buf;
1386
aa5a172a8431 (svn r1890) Begin to clean up the edit box: Remove one global variable and split the combined edit/original buffer into two
tron
parents: 1363
diff changeset
  1252
	}
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1253
8493
3ab458f7cff4 (svn r11555) -Codechange: use the new members introduced in r11551.
rubidium
parents: 8450
diff changeset
  1254
	w->LowerWidget(QUERY_STR_WIDGET_TEXT);
1390
53a5713cf3f9 (svn r1894) - Codechange: cleaned up the console a bit, wholly unified handling of text with that of editboxes
Darkvater
parents: 1386
diff changeset
  1255
	WP(w, querystr_d).caption = caption;
4299
b86602eaaff1 (svn r5944) -Merge TGP (r5578, r5579, r5724, r5726): -Feature: filter for textboxes to only
truelight
parents: 4293
diff changeset
  1256
	WP(w, querystr_d).afilter = afilter;
4948
91dae24f3690 (svn r6937) -Codechange: Add an InitializeTextBuffer() function that handles setting up the
Darkvater
parents: 4939
diff changeset
  1257
	InitializeTextBuffer(&WP(w, querystr_d).text, _edit_str_buf, realmaxlen, maxwidth);
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1258
}
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1259
5669
ea25407ffa55 (svn r7621) -Codechange: Rework ShowQuery into a general modal popup window. It gets passed
Darkvater
parents: 5568
diff changeset
  1260
ea25407ffa55 (svn r7621) -Codechange: Rework ShowQuery into a general modal popup window. It gets passed
Darkvater
parents: 5568
diff changeset
  1261
enum QueryWidgets {
ea25407ffa55 (svn r7621) -Codechange: Rework ShowQuery into a general modal popup window. It gets passed
Darkvater
parents: 5568
diff changeset
  1262
	QUERY_WIDGET_CAPTION = 1,
ea25407ffa55 (svn r7621) -Codechange: Rework ShowQuery into a general modal popup window. It gets passed
Darkvater
parents: 5568
diff changeset
  1263
	QUERY_WIDGET_NO = 3,
ea25407ffa55 (svn r7621) -Codechange: Rework ShowQuery into a general modal popup window. It gets passed
Darkvater
parents: 5568
diff changeset
  1264
	QUERY_WIDGET_YES
ea25407ffa55 (svn r7621) -Codechange: Rework ShowQuery into a general modal popup window. It gets passed
Darkvater
parents: 5568
diff changeset
  1265
};
ea25407ffa55 (svn r7621) -Codechange: Rework ShowQuery into a general modal popup window. It gets passed
Darkvater
parents: 5568
diff changeset
  1266
ea25407ffa55 (svn r7621) -Codechange: Rework ShowQuery into a general modal popup window. It gets passed
Darkvater
parents: 5568
diff changeset
  1267
6574
e1d1a12faaf7 (svn r9051) -Codechange: typedef [enum|struct] Y {} X; -> [enum|struct] X {};
rubidium
parents: 6573
diff changeset
  1268
struct query_d {
5724
e6633aa2c817 (svn r7757) -Fix (r7621): x64 did not compile because query_d was too big. Reorder the elements
Darkvater
parents: 5720
diff changeset
  1269
	void (*proc)(Window*, bool); ///< callback function executed on closing of popup. Window* points to parent, bool is true if 'yes' clicked, false otherwise
7503
019993e97f08 (svn r10263) -Fix (r10262): due to 64 bits alignment a struct became a little too large.
rubidium
parents: 7502
diff changeset
  1270
	uint64 params[10];           ///< local copy of _decode_parameters
5669
ea25407ffa55 (svn r7621) -Codechange: Rework ShowQuery into a general modal popup window. It gets passed
Darkvater
parents: 5568
diff changeset
  1271
	StringID message;            ///< message shown for query window
ea25407ffa55 (svn r7621) -Codechange: Rework ShowQuery into a general modal popup window. It gets passed
Darkvater
parents: 5568
diff changeset
  1272
	bool calledback;             ///< has callback been executed already (internal usage for WE_DESTROY event)
6574
e1d1a12faaf7 (svn r9051) -Codechange: typedef [enum|struct] Y {} X; -> [enum|struct] X {};
rubidium
parents: 6573
diff changeset
  1273
};
5669
ea25407ffa55 (svn r7621) -Codechange: Rework ShowQuery into a general modal popup window. It gets passed
Darkvater
parents: 5568
diff changeset
  1274
assert_compile(WINDOW_CUSTOM_SIZE >= sizeof(query_d));
ea25407ffa55 (svn r7621) -Codechange: Rework ShowQuery into a general modal popup window. It gets passed
Darkvater
parents: 5568
diff changeset
  1275
ea25407ffa55 (svn r7621) -Codechange: Rework ShowQuery into a general modal popup window. It gets passed
Darkvater
parents: 5568
diff changeset
  1276
4300
687a17c9c557 (svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents: 4299
diff changeset
  1277
static void QueryWndProc(Window *w, WindowEvent *e)
687a17c9c557 (svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents: 4299
diff changeset
  1278
{
5669
ea25407ffa55 (svn r7621) -Codechange: Rework ShowQuery into a general modal popup window. It gets passed
Darkvater
parents: 5568
diff changeset
  1279
	query_d *q = &WP(w, query_d);
4300
687a17c9c557 (svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents: 4299
diff changeset
  1280
5669
ea25407ffa55 (svn r7621) -Codechange: Rework ShowQuery into a general modal popup window. It gets passed
Darkvater
parents: 5568
diff changeset
  1281
	switch (e->event) {
ea25407ffa55 (svn r7621) -Codechange: Rework ShowQuery into a general modal popup window. It gets passed
Darkvater
parents: 5568
diff changeset
  1282
		case WE_PAINT:
7762
03721db0ac1c (svn r10587) -Codechange: move the string/dparam related stuff from variables.h to strings.h
rubidium
parents: 7737
diff changeset
  1283
			CopyInDParam(0, q->params, lengthof(q->params));
5669
ea25407ffa55 (svn r7621) -Codechange: Rework ShowQuery into a general modal popup window. It gets passed
Darkvater
parents: 5568
diff changeset
  1284
			DrawWindowWidgets(w);
7762
03721db0ac1c (svn r10587) -Codechange: move the string/dparam related stuff from variables.h to strings.h
rubidium
parents: 7737
diff changeset
  1285
			CopyInDParam(0, q->params, lengthof(q->params));
5669
ea25407ffa55 (svn r7621) -Codechange: Rework ShowQuery into a general modal popup window. It gets passed
Darkvater
parents: 5568
diff changeset
  1286
6523
d41352ca5c1e (svn r8977) -Codechange: Remove the hardcoded maximum width for some drawstrings and replace them with a portion of w->width. Only visible improvement is QueryWndProc which will not write exactly to the edge of the window anymore.
Darkvater
parents: 6516
diff changeset
  1287
			DrawStringMultiCenter(w->width / 2, (w->height / 2) - 10, q->message, w->width - 2);
4300
687a17c9c557 (svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents: 4299
diff changeset
  1288
			break;
687a17c9c557 (svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents: 4299
diff changeset
  1289
5669
ea25407ffa55 (svn r7621) -Codechange: Rework ShowQuery into a general modal popup window. It gets passed
Darkvater
parents: 5568
diff changeset
  1290
		case WE_CLICK:
ea25407ffa55 (svn r7621) -Codechange: Rework ShowQuery into a general modal popup window. It gets passed
Darkvater
parents: 5568
diff changeset
  1291
			switch (e->we.click.widget) {
ea25407ffa55 (svn r7621) -Codechange: Rework ShowQuery into a general modal popup window. It gets passed
Darkvater
parents: 5568
diff changeset
  1292
				case QUERY_WIDGET_YES:
ea25407ffa55 (svn r7621) -Codechange: Rework ShowQuery into a general modal popup window. It gets passed
Darkvater
parents: 5568
diff changeset
  1293
					q->calledback = true;
ea25407ffa55 (svn r7621) -Codechange: Rework ShowQuery into a general modal popup window. It gets passed
Darkvater
parents: 5568
diff changeset
  1294
					if (q->proc != NULL) q->proc(w->parent, true);
ea25407ffa55 (svn r7621) -Codechange: Rework ShowQuery into a general modal popup window. It gets passed
Darkvater
parents: 5568
diff changeset
  1295
					/* Fallthrough */
ea25407ffa55 (svn r7621) -Codechange: Rework ShowQuery into a general modal popup window. It gets passed
Darkvater
parents: 5568
diff changeset
  1296
				case QUERY_WIDGET_NO:
ea25407ffa55 (svn r7621) -Codechange: Rework ShowQuery into a general modal popup window. It gets passed
Darkvater
parents: 5568
diff changeset
  1297
					DeleteWindow(w);
ea25407ffa55 (svn r7621) -Codechange: Rework ShowQuery into a general modal popup window. It gets passed
Darkvater
parents: 5568
diff changeset
  1298
					break;
ea25407ffa55 (svn r7621) -Codechange: Rework ShowQuery into a general modal popup window. It gets passed
Darkvater
parents: 5568
diff changeset
  1299
				}
ea25407ffa55 (svn r7621) -Codechange: Rework ShowQuery into a general modal popup window. It gets passed
Darkvater
parents: 5568
diff changeset
  1300
			break;
4300
687a17c9c557 (svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents: 4299
diff changeset
  1301
6527
f584ab6d87f8 (svn r8987) -Cleanup: doxygen changes. Again. Mostly (still) @files missing tags and (more than just) a few comments style.
belugas
parents: 6523
diff changeset
  1302
		case WE_KEYPRESS: // ESC closes the window, Enter confirms the action
5669
ea25407ffa55 (svn r7621) -Codechange: Rework ShowQuery into a general modal popup window. It gets passed
Darkvater
parents: 5568
diff changeset
  1303
			switch (e->we.keypress.keycode) {
ea25407ffa55 (svn r7621) -Codechange: Rework ShowQuery into a general modal popup window. It gets passed
Darkvater
parents: 5568
diff changeset
  1304
				case WKC_RETURN:
ea25407ffa55 (svn r7621) -Codechange: Rework ShowQuery into a general modal popup window. It gets passed
Darkvater
parents: 5568
diff changeset
  1305
				case WKC_NUM_ENTER:
ea25407ffa55 (svn r7621) -Codechange: Rework ShowQuery into a general modal popup window. It gets passed
Darkvater
parents: 5568
diff changeset
  1306
					q->calledback = true;
ea25407ffa55 (svn r7621) -Codechange: Rework ShowQuery into a general modal popup window. It gets passed
Darkvater
parents: 5568
diff changeset
  1307
					if (q->proc != NULL) q->proc(w->parent, true);
ea25407ffa55 (svn r7621) -Codechange: Rework ShowQuery into a general modal popup window. It gets passed
Darkvater
parents: 5568
diff changeset
  1308
					/* Fallthrough */
ea25407ffa55 (svn r7621) -Codechange: Rework ShowQuery into a general modal popup window. It gets passed
Darkvater
parents: 5568
diff changeset
  1309
				case WKC_ESC:
ea25407ffa55 (svn r7621) -Codechange: Rework ShowQuery into a general modal popup window. It gets passed
Darkvater
parents: 5568
diff changeset
  1310
					e->we.keypress.cont = false;
ea25407ffa55 (svn r7621) -Codechange: Rework ShowQuery into a general modal popup window. It gets passed
Darkvater
parents: 5568
diff changeset
  1311
					DeleteWindow(w);
ea25407ffa55 (svn r7621) -Codechange: Rework ShowQuery into a general modal popup window. It gets passed
Darkvater
parents: 5568
diff changeset
  1312
					break;
ea25407ffa55 (svn r7621) -Codechange: Rework ShowQuery into a general modal popup window. It gets passed
Darkvater
parents: 5568
diff changeset
  1313
			}
ea25407ffa55 (svn r7621) -Codechange: Rework ShowQuery into a general modal popup window. It gets passed
Darkvater
parents: 5568
diff changeset
  1314
			break;
ea25407ffa55 (svn r7621) -Codechange: Rework ShowQuery into a general modal popup window. It gets passed
Darkvater
parents: 5568
diff changeset
  1315
6527
f584ab6d87f8 (svn r8987) -Cleanup: doxygen changes. Again. Mostly (still) @files missing tags and (more than just) a few comments style.
belugas
parents: 6523
diff changeset
  1316
		case WE_DESTROY: // Call callback function (if any) on window close if not yet called
5680
b0bae92a1620 (svn r7635) -Fix (r7618, r7621): Guard against recursive deletion. It is possible that when a
Darkvater
parents: 5669
diff changeset
  1317
			if (!q->calledback && q->proc != NULL) {
b0bae92a1620 (svn r7635) -Fix (r7618, r7621): Guard against recursive deletion. It is possible that when a
Darkvater
parents: 5669
diff changeset
  1318
				q->calledback = true;
b0bae92a1620 (svn r7635) -Fix (r7618, r7621): Guard against recursive deletion. It is possible that when a
Darkvater
parents: 5669
diff changeset
  1319
				q->proc(w->parent, false);
b0bae92a1620 (svn r7635) -Fix (r7618, r7621): Guard against recursive deletion. It is possible that when a
Darkvater
parents: 5669
diff changeset
  1320
			}
5669
ea25407ffa55 (svn r7621) -Codechange: Rework ShowQuery into a general modal popup window. It gets passed
Darkvater
parents: 5568
diff changeset
  1321
			break;
4300
687a17c9c557 (svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents: 4299
diff changeset
  1322
	}
687a17c9c557 (svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents: 4299
diff changeset
  1323
}
687a17c9c557 (svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents: 4299
diff changeset
  1324
5669
ea25407ffa55 (svn r7621) -Codechange: Rework ShowQuery into a general modal popup window. It gets passed
Darkvater
parents: 5568
diff changeset
  1325
4300
687a17c9c557 (svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents: 4299
diff changeset
  1326
static const Widget _query_widgets[] = {
5669
ea25407ffa55 (svn r7621) -Codechange: Rework ShowQuery into a general modal popup window. It gets passed
Darkvater
parents: 5568
diff changeset
  1327
{  WWT_CLOSEBOX, RESIZE_NONE,  4,   0,  10,   0,  13, STR_00C5,        STR_018B_CLOSE_WINDOW},
ea25407ffa55 (svn r7621) -Codechange: Rework ShowQuery into a general modal popup window. It gets passed
Darkvater
parents: 5568
diff changeset
  1328
{   WWT_CAPTION, RESIZE_NONE,  4,  11, 209,   0,  13, STR_NULL,        STR_NULL},
ea25407ffa55 (svn r7621) -Codechange: Rework ShowQuery into a general modal popup window. It gets passed
Darkvater
parents: 5568
diff changeset
  1329
{     WWT_PANEL, RESIZE_NONE,  4,   0, 209,  14,  81, 0x0, /*OVERRIDE*/STR_NULL},
ea25407ffa55 (svn r7621) -Codechange: Rework ShowQuery into a general modal popup window. It gets passed
Darkvater
parents: 5568
diff changeset
  1330
{WWT_PUSHTXTBTN, RESIZE_NONE,  3,  20,  90,  62,  73, STR_00C9_NO,     STR_NULL},
ea25407ffa55 (svn r7621) -Codechange: Rework ShowQuery into a general modal popup window. It gets passed
Darkvater
parents: 5568
diff changeset
  1331
{WWT_PUSHTXTBTN, RESIZE_NONE,  3, 120, 190,  62,  73, STR_00C8_YES,    STR_NULL},
ea25407ffa55 (svn r7621) -Codechange: Rework ShowQuery into a general modal popup window. It gets passed
Darkvater
parents: 5568
diff changeset
  1332
{   WIDGETS_END },
4300
687a17c9c557 (svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents: 4299
diff changeset
  1333
};
687a17c9c557 (svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents: 4299
diff changeset
  1334
687a17c9c557 (svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents: 4299
diff changeset
  1335
static const WindowDesc _query_desc = {
7837
65d7362153a6 (svn r10704) -Codechange: provide an infrastructure to have resizable windows that are smaller than the default window size.
rubidium
parents: 7817
diff changeset
  1336
	WDP_CENTER, WDP_CENTER, 210, 82, 210, 82,
6144
5a0ffbf27ced (svn r8511) -Codechange: make WindowClass an enumerated value.
rubidium
parents: 6001
diff changeset
  1337
	WC_CONFIRM_POPUP_QUERY, WC_NONE,
5669
ea25407ffa55 (svn r7621) -Codechange: Rework ShowQuery into a general modal popup window. It gets passed
Darkvater
parents: 5568
diff changeset
  1338
	WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_UNCLICK_BUTTONS | WDF_DEF_WIDGET | WDF_MODAL,
4300
687a17c9c557 (svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents: 4299
diff changeset
  1339
	_query_widgets,
687a17c9c557 (svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents: 4299
diff changeset
  1340
	QueryWndProc
687a17c9c557 (svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents: 4299
diff changeset
  1341
};
687a17c9c557 (svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents: 4299
diff changeset
  1342
5669
ea25407ffa55 (svn r7621) -Codechange: Rework ShowQuery into a general modal popup window. It gets passed
Darkvater
parents: 5568
diff changeset
  1343
/** Show a modal confirmation window with standard 'yes' and 'no' buttons
ea25407ffa55 (svn r7621) -Codechange: Rework ShowQuery into a general modal popup window. It gets passed
Darkvater
parents: 5568
diff changeset
  1344
 * The window is aligned to the centre of its parent.
ea25407ffa55 (svn r7621) -Codechange: Rework ShowQuery into a general modal popup window. It gets passed
Darkvater
parents: 5568
diff changeset
  1345
 * NOTE: You cannot use BindCString as parameter for this window!
ea25407ffa55 (svn r7621) -Codechange: Rework ShowQuery into a general modal popup window. It gets passed
Darkvater
parents: 5568
diff changeset
  1346
 * @param caption string shown as window caption
ea25407ffa55 (svn r7621) -Codechange: Rework ShowQuery into a general modal popup window. It gets passed
Darkvater
parents: 5568
diff changeset
  1347
 * @param message string that will be shown for the window
ea25407ffa55 (svn r7621) -Codechange: Rework ShowQuery into a general modal popup window. It gets passed
Darkvater
parents: 5568
diff changeset
  1348
 * @param parent pointer to parent window, if this pointer is NULL the parent becomes
ea25407ffa55 (svn r7621) -Codechange: Rework ShowQuery into a general modal popup window. It gets passed
Darkvater
parents: 5568
diff changeset
  1349
 * the main window WC_MAIN_WINDOW
6977
67b989528f3d (svn r9662) -Documentation: Doxygen corrections and @file omissions
belugas
parents: 6949
diff changeset
  1350
 * @param callback callback function pointer to set in the window descriptor*/
5669
ea25407ffa55 (svn r7621) -Codechange: Rework ShowQuery into a general modal popup window. It gets passed
Darkvater
parents: 5568
diff changeset
  1351
void ShowQuery(StringID caption, StringID message, Window *parent, void (*callback)(Window*, bool))
4300
687a17c9c557 (svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents: 4299
diff changeset
  1352
{
5669
ea25407ffa55 (svn r7621) -Codechange: Rework ShowQuery into a general modal popup window. It gets passed
Darkvater
parents: 5568
diff changeset
  1353
	Window *w = AllocateWindowDesc(&_query_desc);
ea25407ffa55 (svn r7621) -Codechange: Rework ShowQuery into a general modal popup window. It gets passed
Darkvater
parents: 5568
diff changeset
  1354
	if (w == NULL) return;
4300
687a17c9c557 (svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents: 4299
diff changeset
  1355
5669
ea25407ffa55 (svn r7621) -Codechange: Rework ShowQuery into a general modal popup window. It gets passed
Darkvater
parents: 5568
diff changeset
  1356
	if (parent == NULL) parent = FindWindowById(WC_MAIN_WINDOW, 0);
ea25407ffa55 (svn r7621) -Codechange: Rework ShowQuery into a general modal popup window. It gets passed
Darkvater
parents: 5568
diff changeset
  1357
	w->parent = parent;
ea25407ffa55 (svn r7621) -Codechange: Rework ShowQuery into a general modal popup window. It gets passed
Darkvater
parents: 5568
diff changeset
  1358
	w->left = parent->left + (parent->width / 2) - (w->width / 2);
ea25407ffa55 (svn r7621) -Codechange: Rework ShowQuery into a general modal popup window. It gets passed
Darkvater
parents: 5568
diff changeset
  1359
	w->top = parent->top + (parent->height / 2) - (w->height / 2);
4300
687a17c9c557 (svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents: 4299
diff changeset
  1360
5669
ea25407ffa55 (svn r7621) -Codechange: Rework ShowQuery into a general modal popup window. It gets passed
Darkvater
parents: 5568
diff changeset
  1361
	/* Create a backup of the variadic arguments to strings because it will be
ea25407ffa55 (svn r7621) -Codechange: Rework ShowQuery into a general modal popup window. It gets passed
Darkvater
parents: 5568
diff changeset
  1362
	 * overridden pretty often. We will copy these back for drawing */
7762
03721db0ac1c (svn r10587) -Codechange: move the string/dparam related stuff from variables.h to strings.h
rubidium
parents: 7737
diff changeset
  1363
	CopyOutDParam(WP(w, query_d).params, 0, lengthof(WP(w, query_d).params));
5669
ea25407ffa55 (svn r7621) -Codechange: Rework ShowQuery into a general modal popup window. It gets passed
Darkvater
parents: 5568
diff changeset
  1364
	w->widget[QUERY_WIDGET_CAPTION].data = caption;
ea25407ffa55 (svn r7621) -Codechange: Rework ShowQuery into a general modal popup window. It gets passed
Darkvater
parents: 5568
diff changeset
  1365
	WP(w, query_d).message    = message;
ea25407ffa55 (svn r7621) -Codechange: Rework ShowQuery into a general modal popup window. It gets passed
Darkvater
parents: 5568
diff changeset
  1366
	WP(w, query_d).proc       = callback;
ea25407ffa55 (svn r7621) -Codechange: Rework ShowQuery into a general modal popup window. It gets passed
Darkvater
parents: 5568
diff changeset
  1367
	WP(w, query_d).calledback = false;
4300
687a17c9c557 (svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents: 4299
diff changeset
  1368
}
687a17c9c557 (svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents: 4299
diff changeset
  1369
687a17c9c557 (svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents: 4299
diff changeset
  1370
5079
173056d957f5 (svn r7143) -CodeChange: remove redondancy in saveload dialogs
glx
parents: 5070
diff changeset
  1371
static const Widget _load_dialog_widgets[] = {
173056d957f5 (svn r7143) -CodeChange: remove redondancy in saveload dialogs
glx
parents: 5070
diff changeset
  1372
{   WWT_CLOSEBOX,   RESIZE_NONE,    14,     0,    10,     0,    13, STR_00C5,         STR_018B_CLOSE_WINDOW},
173056d957f5 (svn r7143) -CodeChange: remove redondancy in saveload dialogs
glx
parents: 5070
diff changeset
  1373
{    WWT_CAPTION,  RESIZE_RIGHT,    14,    11,   256,     0,    13, STR_NULL,         STR_018C_WINDOW_TITLE_DRAG_THIS},
173056d957f5 (svn r7143) -CodeChange: remove redondancy in saveload dialogs
glx
parents: 5070
diff changeset
  1374
{ WWT_PUSHTXTBTN,   RESIZE_NONE,    14,     0,   127,    14,    25, STR_SORT_BY_NAME, STR_SORT_ORDER_TIP},
173056d957f5 (svn r7143) -CodeChange: remove redondancy in saveload dialogs
glx
parents: 5070
diff changeset
  1375
{ WWT_PUSHTXTBTN,   RESIZE_NONE,    14,   128,   256,    14,    25, STR_SORT_BY_DATE, STR_SORT_ORDER_TIP},
173056d957f5 (svn r7143) -CodeChange: remove redondancy in saveload dialogs
glx
parents: 5070
diff changeset
  1376
{      WWT_PANEL,  RESIZE_RIGHT,    14,     0,   256,    26,    47, 0x0,              STR_NULL},
7842
60f0ca823a73 (svn r10709) -Codechange: allow automatic downsizing of the load game/save game windows. These windows also already supported downsizing, but again the resize button would be unreachable.
rubidium
parents: 7837
diff changeset
  1377
{      WWT_PANEL,     RESIZE_RB,    14,     0,   256,    48,   153, 0x0,              STR_NULL},
5079
173056d957f5 (svn r7143) -CodeChange: remove redondancy in saveload dialogs
glx
parents: 5070
diff changeset
  1378
{ WWT_PUSHIMGBTN,     RESIZE_LR,    14,   245,   256,    48,    59, SPR_HOUSE_ICON,   STR_SAVELOAD_HOME_BUTTON},
7842
60f0ca823a73 (svn r10709) -Codechange: allow automatic downsizing of the load game/save game windows. These windows also already supported downsizing, but again the resize button would be unreachable.
rubidium
parents: 7837
diff changeset
  1379
{      WWT_INSET,     RESIZE_RB,    14,     2,   243,    50,   151, 0x0,              STR_400A_LIST_OF_DRIVES_DIRECTORIES},
60f0ca823a73 (svn r10709) -Codechange: allow automatic downsizing of the load game/save game windows. These windows also already supported downsizing, but again the resize button would be unreachable.
rubidium
parents: 7837
diff changeset
  1380
{  WWT_SCROLLBAR,    RESIZE_LRB,    14,   245,   256,    60,   141, 0x0,              STR_0190_SCROLL_BAR_SCROLLS_LIST},
60f0ca823a73 (svn r10709) -Codechange: allow automatic downsizing of the load game/save game windows. These windows also already supported downsizing, but again the resize button would be unreachable.
rubidium
parents: 7837
diff changeset
  1381
{  WWT_RESIZEBOX,   RESIZE_LRTB,    14,   245,   256,   142,   153, 0x0,              STR_RESIZE_BUTTON},
4300
687a17c9c557 (svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents: 4299
diff changeset
  1382
{   WIDGETS_END},
687a17c9c557 (svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents: 4299
diff changeset
  1383
};
687a17c9c557 (svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents: 4299
diff changeset
  1384
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1385
static const Widget _save_dialog_widgets[] = {
5079
173056d957f5 (svn r7143) -CodeChange: remove redondancy in saveload dialogs
glx
parents: 5070
diff changeset
  1386
{   WWT_CLOSEBOX,   RESIZE_NONE,    14,     0,    10,     0,    13, STR_00C5,         STR_018B_CLOSE_WINDOW},
173056d957f5 (svn r7143) -CodeChange: remove redondancy in saveload dialogs
glx
parents: 5070
diff changeset
  1387
{    WWT_CAPTION,  RESIZE_RIGHT,    14,    11,   256,     0,    13, STR_NULL,         STR_018C_WINDOW_TITLE_DRAG_THIS},
173056d957f5 (svn r7143) -CodeChange: remove redondancy in saveload dialogs
glx
parents: 5070
diff changeset
  1388
{ WWT_PUSHTXTBTN,   RESIZE_NONE,    14,     0,   127,    14,    25, STR_SORT_BY_NAME, STR_SORT_ORDER_TIP},
173056d957f5 (svn r7143) -CodeChange: remove redondancy in saveload dialogs
glx
parents: 5070
diff changeset
  1389
{ WWT_PUSHTXTBTN,   RESIZE_NONE,    14,   128,   256,    14,    25, STR_SORT_BY_DATE, STR_SORT_ORDER_TIP},
173056d957f5 (svn r7143) -CodeChange: remove redondancy in saveload dialogs
glx
parents: 5070
diff changeset
  1390
{      WWT_PANEL,  RESIZE_RIGHT,    14,     0,   256,    26,    47, 0x0,              STR_NULL},
7842
60f0ca823a73 (svn r10709) -Codechange: allow automatic downsizing of the load game/save game windows. These windows also already supported downsizing, but again the resize button would be unreachable.
rubidium
parents: 7837
diff changeset
  1391
{      WWT_PANEL,     RESIZE_RB,    14,     0,   256,    48,   151, 0x0,              STR_NULL},
5079
173056d957f5 (svn r7143) -CodeChange: remove redondancy in saveload dialogs
glx
parents: 5070
diff changeset
  1392
{ WWT_PUSHIMGBTN,     RESIZE_LR,    14,   245,   256,    48,    59, SPR_HOUSE_ICON,   STR_SAVELOAD_HOME_BUTTON},
7842
60f0ca823a73 (svn r10709) -Codechange: allow automatic downsizing of the load game/save game windows. These windows also already supported downsizing, but again the resize button would be unreachable.
rubidium
parents: 7837
diff changeset
  1393
{      WWT_INSET,     RESIZE_RB,    14,     2,   243,    50,   150, 0x0,              STR_400A_LIST_OF_DRIVES_DIRECTORIES},
60f0ca823a73 (svn r10709) -Codechange: allow automatic downsizing of the load game/save game windows. These windows also already supported downsizing, but again the resize button would be unreachable.
rubidium
parents: 7837
diff changeset
  1394
{  WWT_SCROLLBAR,    RESIZE_LRB,    14,   245,   256,    60,   151, 0x0,              STR_0190_SCROLL_BAR_SCROLLS_LIST},
60f0ca823a73 (svn r10709) -Codechange: allow automatic downsizing of the load game/save game windows. These windows also already supported downsizing, but again the resize button would be unreachable.
rubidium
parents: 7837
diff changeset
  1395
{      WWT_PANEL,    RESIZE_RTB,    14,     0,   256,   152,   167, 0x0,              STR_NULL},
9233
4daa9bb8dbf7 (svn r12425) -Feature [FS#1846]: On Screen Keyboard for input fields so someone without a keyboard can enter text too. Patch by Dominik.
rubidium
parents: 9211
diff changeset
  1396
{    WWT_EDITBOX,    RESIZE_RTB,    14,     2,   254,   154,   165, STR_SAVE_OSKTITLE,STR_400B_CURRENTLY_SELECTED_NAME},
7842
60f0ca823a73 (svn r10709) -Codechange: allow automatic downsizing of the load game/save game windows. These windows also already supported downsizing, but again the resize button would be unreachable.
rubidium
parents: 7837
diff changeset
  1397
{ WWT_PUSHTXTBTN,     RESIZE_TB,    14,     0,   127,   168,   179, STR_4003_DELETE,  STR_400C_DELETE_THE_CURRENTLY_SELECTED},
60f0ca823a73 (svn r10709) -Codechange: allow automatic downsizing of the load game/save game windows. These windows also already supported downsizing, but again the resize button would be unreachable.
rubidium
parents: 7837
diff changeset
  1398
{ WWT_PUSHTXTBTN,     RESIZE_TB,    14,   128,   244,   168,   179, STR_4002_SAVE,    STR_400D_SAVE_THE_CURRENT_GAME_USING},
60f0ca823a73 (svn r10709) -Codechange: allow automatic downsizing of the load game/save game windows. These windows also already supported downsizing, but again the resize button would be unreachable.
rubidium
parents: 7837
diff changeset
  1399
{  WWT_RESIZEBOX,   RESIZE_LRTB,    14,   245,   256,   168,   179, 0x0,              STR_RESIZE_BUTTON},
176
84990c4b9212 (svn r177) -Fix: padded out Widget code to solve warnings on C99 compiler (Tron)
darkvater
parents: 172
diff changeset
  1400
{   WIDGETS_END},
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1401
};
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1402
6527
f584ab6d87f8 (svn r8987) -Cleanup: doxygen changes. Again. Mostly (still) @files missing tags and (more than just) a few comments style.
belugas
parents: 6523
diff changeset
  1403
/* Colors for fios types */
8320
6ffad7a5d242 (svn r11374) -Codechange: Give meaning to the magical number that specifies the color of the text in a DrawString call.
belugas
parents: 8246
diff changeset
  1404
const TextColour _fios_colors[] = {
6ffad7a5d242 (svn r11374) -Codechange: Give meaning to the magical number that specifies the color of the text in a DrawString call.
belugas
parents: 8246
diff changeset
  1405
	TC_LIGHT_BLUE, TC_DARK_GREEN,  TC_DARK_GREEN, TC_ORANGE, TC_LIGHT_BROWN,
6ffad7a5d242 (svn r11374) -Codechange: Give meaning to the magical number that specifies the color of the text in a DrawString call.
belugas
parents: 8246
diff changeset
  1406
	TC_ORANGE,     TC_LIGHT_BROWN, TC_ORANGE,     TC_ORANGE, TC_YELLOW
6ffad7a5d242 (svn r11374) -Codechange: Give meaning to the magical number that specifies the color of the text in a DrawString call.
belugas
parents: 8246
diff changeset
  1407
};
2261
3f78323707bb (svn r2781) Fix some of the issues with variables in .h files.
ludde
parents: 2255
diff changeset
  1408
6573
7624f942237f (svn r9050) -Codechange: Foo(void) -> Foo()
rubidium
parents: 6565
diff changeset
  1409
void BuildFileList()
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1410
{
1596
c1c439a2d5b2 (svn r2100) - Fix: [1024703]: Infinite access for A:\ (win32). Patch [1171208]. Only requery drive(s) if the user changes a directory, also surpress the OS error box that pops up on some windows machines. Tron + glx (and me)
darkvater
parents: 1594
diff changeset
  1411
	_fios_path_changed = true;
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1412
	FiosFreeSavegameList();
4223
0f9535dda7ed (svn r5767) - Cleanup: Improve upon the header file mess regarding fios. Move all relevant types from hal.h into fios.h, eliminate the unneccessary passing of a global variable, and extern variables in header files (declare in fios.c and misc_gui.c
Darkvater
parents: 4217
diff changeset
  1413
2549
f1d3b383d557 (svn r3078) Some more stuff, which piled up:
tron
parents: 2535
diff changeset
  1414
	switch (_saveload_mode) {
f1d3b383d557 (svn r3078) Some more stuff, which piled up:
tron
parents: 2535
diff changeset
  1415
		case SLD_NEW_GAME:
f1d3b383d557 (svn r3078) Some more stuff, which piled up:
tron
parents: 2535
diff changeset
  1416
		case SLD_LOAD_SCENARIO:
f1d3b383d557 (svn r3078) Some more stuff, which piled up:
tron
parents: 2535
diff changeset
  1417
		case SLD_SAVE_SCENARIO:
4223
0f9535dda7ed (svn r5767) - Cleanup: Improve upon the header file mess regarding fios. Move all relevant types from hal.h into fios.h, eliminate the unneccessary passing of a global variable, and extern variables in header files (declare in fios.c and misc_gui.c
Darkvater
parents: 4217
diff changeset
  1418
			_fios_list = FiosGetScenarioList(_saveload_mode); break;
4300
687a17c9c557 (svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents: 4299
diff changeset
  1419
		case SLD_LOAD_HEIGHTMAP:
687a17c9c557 (svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents: 4299
diff changeset
  1420
			_fios_list = FiosGetHeightmapList(_saveload_mode); break;
2549
f1d3b383d557 (svn r3078) Some more stuff, which piled up:
tron
parents: 2535
diff changeset
  1421
4223
0f9535dda7ed (svn r5767) - Cleanup: Improve upon the header file mess regarding fios. Move all relevant types from hal.h into fios.h, eliminate the unneccessary passing of a global variable, and extern variables in header files (declare in fios.c and misc_gui.c
Darkvater
parents: 4217
diff changeset
  1422
		default: _fios_list = FiosGetSavegameList(_saveload_mode); break;
2549
f1d3b383d557 (svn r3078) Some more stuff, which piled up:
tron
parents: 2535
diff changeset
  1423
	}
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1424
}
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1425
2100
868d62687c9a (svn r2610) - Feature: set server map name to the loaded name of the game/scenario. Also truncate where neccessary
Darkvater
parents: 2070
diff changeset
  1426
static void DrawFiosTexts(uint maxw)
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1427
{
1596
c1c439a2d5b2 (svn r2100) - Fix: [1024703]: Infinite access for A:\ (win32). Patch [1171208]. Only requery drive(s) if the user changes a directory, also surpress the OS error box that pops up on some windows machines. Tron + glx (and me)
darkvater
parents: 1594
diff changeset
  1428
	static const char *path = NULL;
c1c439a2d5b2 (svn r2100) - Fix: [1024703]: Infinite access for A:\ (win32). Patch [1171208]. Only requery drive(s) if the user changes a directory, also surpress the OS error box that pops up on some windows machines. Tron + glx (and me)
darkvater
parents: 1594
diff changeset
  1429
	static StringID str = STR_4006_UNABLE_TO_READ_DRIVE;
c1c439a2d5b2 (svn r2100) - Fix: [1024703]: Infinite access for A:\ (win32). Patch [1171208]. Only requery drive(s) if the user changes a directory, also surpress the OS error box that pops up on some windows machines. Tron + glx (and me)
darkvater
parents: 1594
diff changeset
  1430
	static uint32 tot = 0;
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1431
1596
c1c439a2d5b2 (svn r2100) - Fix: [1024703]: Infinite access for A:\ (win32). Patch [1171208]. Only requery drive(s) if the user changes a directory, also surpress the OS error box that pops up on some windows machines. Tron + glx (and me)
darkvater
parents: 1594
diff changeset
  1432
	if (_fios_path_changed) {
c1c439a2d5b2 (svn r2100) - Fix: [1024703]: Infinite access for A:\ (win32). Patch [1171208]. Only requery drive(s) if the user changes a directory, also surpress the OS error box that pops up on some windows machines. Tron + glx (and me)
darkvater
parents: 1594
diff changeset
  1433
		str = FiosGetDescText(&path, &tot);
c1c439a2d5b2 (svn r2100) - Fix: [1024703]: Infinite access for A:\ (win32). Patch [1171208]. Only requery drive(s) if the user changes a directory, also surpress the OS error box that pops up on some windows machines. Tron + glx (and me)
darkvater
parents: 1594
diff changeset
  1434
		_fios_path_changed = false;
c1c439a2d5b2 (svn r2100) - Fix: [1024703]: Infinite access for A:\ (win32). Patch [1171208]. Only requery drive(s) if the user changes a directory, also surpress the OS error box that pops up on some windows machines. Tron + glx (and me)
darkvater
parents: 1594
diff changeset
  1435
	}
c1c439a2d5b2 (svn r2100) - Fix: [1024703]: Infinite access for A:\ (win32). Patch [1171208]. Only requery drive(s) if the user changes a directory, also surpress the OS error box that pops up on some windows machines. Tron + glx (and me)
darkvater
parents: 1594
diff changeset
  1436
c1c439a2d5b2 (svn r2100) - Fix: [1024703]: Infinite access for A:\ (win32). Patch [1171208]. Only requery drive(s) if the user changes a directory, also surpress the OS error box that pops up on some windows machines. Tron + glx (and me)
darkvater
parents: 1594
diff changeset
  1437
	if (str != STR_4006_UNABLE_TO_READ_DRIVE) SetDParam(0, tot);
8320
6ffad7a5d242 (svn r11374) -Codechange: Give meaning to the magical number that specifies the color of the text in a DrawString call.
belugas
parents: 8246
diff changeset
  1438
	DrawString(2, 37, str, TC_FROMSTRING);
6ffad7a5d242 (svn r11374) -Codechange: Give meaning to the magical number that specifies the color of the text in a DrawString call.
belugas
parents: 8246
diff changeset
  1439
	DoDrawStringTruncated(path, 2, 27, TC_BLACK, maxw);
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1440
}
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1441
6573
7624f942237f (svn r9050) -Codechange: Foo(void) -> Foo()
rubidium
parents: 6565
diff changeset
  1442
static void MakeSortedSaveGameList()
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1443
{
2631
13daba67f217 (svn r3173) Use the trinary operator and switch to improve readability
tron
parents: 2630
diff changeset
  1444
	uint sort_start = 0;
13daba67f217 (svn r3173) Use the trinary operator and switch to improve readability
tron
parents: 2630
diff changeset
  1445
	uint sort_end = 0;
13daba67f217 (svn r3173) Use the trinary operator and switch to improve readability
tron
parents: 2630
diff changeset
  1446
4171
3fadda3afe70 (svn r5609) CodeChange : Apply coding style
belugas
parents: 4133
diff changeset
  1447
	/* Directories are always above the files (FIOS_TYPE_DIR)
3fadda3afe70 (svn r5609) CodeChange : Apply coding style
belugas
parents: 4133
diff changeset
  1448
	 * Drives (A:\ (windows only) are always under the files (FIOS_TYPE_DRIVE)
3fadda3afe70 (svn r5609) CodeChange : Apply coding style
belugas
parents: 4133
diff changeset
  1449
	 * Only sort savegames/scenarios, not directories
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1450
	 */
9315
336e6518acb3 (svn r12565) -Cleanup: variable scope in misc\*.cpp
smatz
parents: 9305
diff changeset
  1451
	for (int i = 0; i < _fios_num; i++) {
2631
13daba67f217 (svn r3173) Use the trinary operator and switch to improve readability
tron
parents: 2630
diff changeset
  1452
		switch (_fios_list[i].type) {
13daba67f217 (svn r3173) Use the trinary operator and switch to improve readability
tron
parents: 2630
diff changeset
  1453
			case FIOS_TYPE_DIR:    sort_start++; break;
13daba67f217 (svn r3173) Use the trinary operator and switch to improve readability
tron
parents: 2630
diff changeset
  1454
			case FIOS_TYPE_PARENT: sort_start++; break;
13daba67f217 (svn r3173) Use the trinary operator and switch to improve readability
tron
parents: 2630
diff changeset
  1455
			case FIOS_TYPE_DRIVE:  sort_end++;   break;
13daba67f217 (svn r3173) Use the trinary operator and switch to improve readability
tron
parents: 2630
diff changeset
  1456
		}
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1457
	}
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1458
9315
336e6518acb3 (svn r12565) -Cleanup: variable scope in misc\*.cpp
smatz
parents: 9305
diff changeset
  1459
	uint s_amount = _fios_num - sort_start - sort_end;
336e6518acb3 (svn r12565) -Cleanup: variable scope in misc\*.cpp
smatz
parents: 9305
diff changeset
  1460
	if (s_amount > 0) {
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1461
		qsort(_fios_list + sort_start, s_amount, sizeof(FiosItem), compare_FiosItems);
9315
336e6518acb3 (svn r12565) -Cleanup: variable scope in misc\*.cpp
smatz
parents: 9305
diff changeset
  1462
	}
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1463
}
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1464
6573
7624f942237f (svn r9050) -Codechange: Foo(void) -> Foo()
rubidium
parents: 6565
diff changeset
  1465
static void GenerateFileName()
402
a7dffcd6a4dd (svn r594) -Fix/Feature: [ 1066121 ] Resetting file name after deleting a file
tron
parents: 390
diff changeset
  1466
{
9244
59bf7f93c856 (svn r12444) -Fix: A little typo
belugas
parents: 9234
diff changeset
  1467
	/* Check if we are not a spectator who wants to generate a name..
635
5a595bc1653f (svn r1066) -Fix: Crash when saving game as spectator (tnx to GeniusDex for reporting)
truelight
parents: 606
diff changeset
  1468
	    Let's use the name of player #0 for now. */
5838
9c3129cb019b (svn r8038) -Merge: the cpp branch. Effort of KUDr, Celestar, glx, Smoovius, stillunknown and pv2b.
rubidium
parents: 5835
diff changeset
  1469
	const Player *p = GetPlayer(IsValidPlayer(_local_player) ? _local_player : PLAYER_FIRST);
635
5a595bc1653f (svn r1066) -Fix: Crash when saving game as spectator (tnx to GeniusDex for reporting)
truelight
parents: 606
diff changeset
  1470
7554
076c42f44a83 (svn r10323) -Codechange: reference company name, number and player (president) name
peter1138
parents: 7542
diff changeset
  1471
	SetDParam(0, p->index);
076c42f44a83 (svn r10323) -Codechange: reference company name, number and player (president) name
peter1138
parents: 7542
diff changeset
  1472
	SetDParam(1, _date);
4912
d04b3f2bca70 (svn r6884) -Codechange: Add strict bounds checking in string formatting system.
Darkvater
parents: 4909
diff changeset
  1473
	GetString(_edit_str_buf, STR_4004, lastof(_edit_str_buf));
7371
b86b05214afe (svn r10116) -Fix [FS#850]: remove invalid characters (for the file system) from savegame names. Based on a patch by TheJosh.
rubidium
parents: 7187
diff changeset
  1474
	SanitizeFilename(_edit_str_buf);
402
a7dffcd6a4dd (svn r594) -Fix/Feature: [ 1066121 ] Resetting file name after deleting a file
tron
parents: 390
diff changeset
  1475
}
a7dffcd6a4dd (svn r594) -Fix/Feature: [ 1066121 ] Resetting file name after deleting a file
tron
parents: 390
diff changeset
  1476
6573
7624f942237f (svn r9050) -Codechange: Foo(void) -> Foo()
rubidium
parents: 6565
diff changeset
  1477
extern void StartupEngines();
1131
21a18a6c1b4b (svn r1632) -Fix: [1108008] Scenario creation bug; engines are of correct year when scenario is saved
darkvater
parents: 1126
diff changeset
  1478
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1479
static void SaveLoadDlgWndProc(Window *w, WindowEvent *e)
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1480
{
2559
08e648022cb0 (svn r3096) - Feature: 'HOME' icon to saveload dialogs that jumps to the default save/load directory based on the dialog (added icon to openttd.grf, introduced FIOS_TYPE_DIRECT that allows arbitrary directory jumping).
Darkvater
parents: 2549
diff changeset
  1481
	static FiosItem o_dir;
08e648022cb0 (svn r3096) - Feature: 'HOME' icon to saveload dialogs that jumps to the default save/load directory based on the dialog (added icon to openttd.grf, introduced FIOS_TYPE_DIRECT that allows arbitrary directory jumping).
Darkvater
parents: 2549
diff changeset
  1482
08e648022cb0 (svn r3096) - Feature: 'HOME' icon to saveload dialogs that jumps to the default save/load directory based on the dialog (added icon to openttd.grf, introduced FIOS_TYPE_DIRECT that allows arbitrary directory jumping).
Darkvater
parents: 2549
diff changeset
  1483
	switch (e->event) {
9234
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1484
		case WE_CREATE: // Set up OPENTTD button
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1485
			w->vscroll.cap = 10;
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1486
			w->resize.step_width = 2;
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1487
			w->resize.step_height = 10;
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1488
9234
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1489
			o_dir.type = FIOS_TYPE_DIRECT;
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1490
			switch (_saveload_mode) {
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1491
				case SLD_SAVE_GAME:
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1492
				case SLD_LOAD_GAME:
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1493
					FioGetDirectory(o_dir.name, lengthof(o_dir.name), SAVE_DIR);
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1494
					break;
4000
bab1ebc37da0 (svn r5210) Many small changes which piled up: const, unsigned, variable scope, CSE for readability, DeMorgan, if cascades -> switch, whitespace, parentheses, bracing, misc.
tron
parents: 3890
diff changeset
  1495
9234
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1496
				case SLD_SAVE_SCENARIO:
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1497
				case SLD_LOAD_SCENARIO:
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1498
					FioGetDirectory(o_dir.name, lengthof(o_dir.name), SCENARIO_DIR);
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1499
					break;
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1500
9234
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1501
				case SLD_LOAD_HEIGHTMAP:
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1502
					FioGetDirectory(o_dir.name, lengthof(o_dir.name), HEIGHTMAP_DIR);
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1503
					break;
4000
bab1ebc37da0 (svn r5210) Many small changes which piled up: const, unsigned, variable scope, CSE for readability, DeMorgan, if cascades -> switch, whitespace, parentheses, bracing, misc.
tron
parents: 3890
diff changeset
  1504
9234
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1505
				default:
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1506
					ttd_strlcpy(o_dir.name, _personal_dir, lengthof(o_dir.name));
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1507
			}
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1508
			break;
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1509
9234
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1510
		case WE_PAINT: {
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1511
			int pos;
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1512
			int y;
193
0a7025304867 (svn r194) -Codechange: stripping trailing-spaces. Please keep this that way!
truelight
parents: 179
diff changeset
  1513
9234
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1514
			SetVScrollCount(w, _fios_num);
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1515
			DrawWindowWidgets(w);
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1516
			DrawFiosTexts(w->width);
2100
868d62687c9a (svn r2610) - Feature: set server map name to the loaded name of the game/scenario. Also truncate where neccessary
Darkvater
parents: 2070
diff changeset
  1517
9234
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1518
			if (_savegame_sort_dirty) {
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1519
				_savegame_sort_dirty = false;
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1520
				MakeSortedSaveGameList();
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1521
			}
4300
687a17c9c557 (svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents: 4299
diff changeset
  1522
9234
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1523
			GfxFillRect(w->widget[7].left + 1, w->widget[7].top + 1, w->widget[7].right, w->widget[7].bottom, 0xD7);
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1524
			DrawSortButtonState(w, _savegame_sort_order & SORT_BY_NAME ? 2 : 3, _savegame_sort_order & SORT_DESCENDING ? SBS_DOWN : SBS_UP);
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1525
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1526
			y = w->widget[7].top + 1;
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1527
			for (pos = w->vscroll.pos; pos < _fios_num; pos++) {
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1528
				const FiosItem *item = _fios_list + pos;
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1529
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1530
				DoDrawStringTruncated(item->title, 4, y, _fios_colors[item->type], w->width - 18);
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1531
				y += 10;
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1532
				if (y >= w->vscroll.cap * 10 + w->widget[7].top + 1) break;
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1533
			}
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1534
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1535
			if (_saveload_mode == SLD_SAVE_GAME || _saveload_mode == SLD_SAVE_SCENARIO) {
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1536
				DrawEditBox(w, &WP(w, querystr_d), 10);
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1537
			}
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1538
			break;
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1539
		}
2559
08e648022cb0 (svn r3096) - Feature: 'HOME' icon to saveload dialogs that jumps to the default save/load directory based on the dialog (added icon to openttd.grf, introduced FIOS_TYPE_DIRECT that allows arbitrary directory jumping).
Darkvater
parents: 2549
diff changeset
  1540
9234
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1541
		case WE_CLICK:
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1542
			switch (e->we.click.widget) {
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1543
				case 2: // Sort save names by name
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1544
					_savegame_sort_order = (_savegame_sort_order == SORT_BY_NAME) ?
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1545
						SORT_BY_NAME | SORT_DESCENDING : SORT_BY_NAME;
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1546
					_savegame_sort_dirty = true;
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1547
					SetWindowDirty(w);
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1548
					break;
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1549
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1550
				case 3: // Sort save names by date
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1551
					_savegame_sort_order = (_savegame_sort_order == SORT_BY_DATE) ?
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1552
						SORT_BY_DATE | SORT_DESCENDING : SORT_BY_DATE;
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1553
					_savegame_sort_dirty = true;
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1554
					SetWindowDirty(w);
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1555
					break;
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1556
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1557
				case 6: // OpenTTD 'button', jumps to OpenTTD directory
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1558
					FiosBrowseTo(&o_dir);
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1559
					SetWindowDirty(w);
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1560
					BuildFileList();
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1561
					break;
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1562
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1563
				case 7: { // Click the listbox
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1564
					int y = (e->we.click.pt.y - w->widget[e->we.click.widget].top - 1) / 10;
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1565
					char *name;
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1566
					const FiosItem *file;
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1567
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1568
					if (y < 0 || (y += w->vscroll.pos) >= w->vscroll.count) return;
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1569
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1570
					file = _fios_list + y;
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1571
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1572
					name = FiosBrowseTo(file);
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1573
					if (name != NULL) {
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1574
						if (_saveload_mode == SLD_LOAD_GAME || _saveload_mode == SLD_LOAD_SCENARIO) {
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1575
							_switch_mode = (_game_mode == GM_EDITOR) ? SM_LOAD_SCENARIO : SM_LOAD;
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1576
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1577
							SetFiosType(file->type);
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1578
							ttd_strlcpy(_file_to_saveload.name, name, sizeof(_file_to_saveload.name));
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1579
							ttd_strlcpy(_file_to_saveload.title, file->title, sizeof(_file_to_saveload.title));
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1580
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1581
							DeleteWindow(w);
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1582
						} else if (_saveload_mode == SLD_LOAD_HEIGHTMAP) {
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1583
							SetFiosType(file->type);
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1584
							ttd_strlcpy(_file_to_saveload.name, name, sizeof(_file_to_saveload.name));
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1585
							ttd_strlcpy(_file_to_saveload.title, file->title, sizeof(_file_to_saveload.title));
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1586
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1587
							DeleteWindow(w);
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1588
							ShowHeightmapLoad();
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1589
						} else {
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1590
							/* SLD_SAVE_GAME, SLD_SAVE_SCENARIO copy clicked name to editbox */
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1591
							ttd_strlcpy(WP(w, querystr_d).text.buf, file->title, WP(w, querystr_d).text.maxlength);
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1592
							UpdateTextBufferSize(&WP(w, querystr_d).text);
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1593
							w->InvalidateWidget(10);
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1594
						}
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1595
					} else {
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1596
						/* Changed directory, need repaint. */
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1597
						SetWindowDirty(w);
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1598
						BuildFileList();
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1599
					}
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1600
					break;
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1601
				}
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1602
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1603
				case 10: // edit box
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1604
					ShowOnScreenKeyboard(w, &WP(w, querystr_d), e->we.click.widget, 0, 0);
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1605
					break;
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1606
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1607
				case 11: case 12: // Delete, Save game
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1608
					break;
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1609
			}
9233
4daa9bb8dbf7 (svn r12425) -Feature [FS#1846]: On Screen Keyboard for input fields so someone without a keyboard can enter text too. Patch by Dominik.
rubidium
parents: 9211
diff changeset
  1610
			break;
4daa9bb8dbf7 (svn r12425) -Feature [FS#1846]: On Screen Keyboard for input fields so someone without a keyboard can enter text too. Patch by Dominik.
rubidium
parents: 9211
diff changeset
  1611
9234
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1612
		case WE_MOUSELOOP:
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1613
			if (_saveload_mode == SLD_SAVE_GAME || _saveload_mode == SLD_SAVE_SCENARIO) {
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1614
				HandleEditBox(w, &WP(w, querystr_d), 10);
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1615
			}
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1616
			break;
2165
5729e4207de5 (svn r2675) - Fix: pressing enter on a load-window resulted in saving the game (Luca)
Darkvater
parents: 2163
diff changeset
  1617
9234
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1618
		case WE_KEYPRESS:
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1619
			if (e->we.keypress.keycode == WKC_ESC) {
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1620
				DeleteWindow(w);
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1621
				return;
2255
ddcaf9e333ff (svn r2775) Deleting a file can fail, display an error message when it happens
tron
parents: 2201
diff changeset
  1622
			}
3288
91b3ed6a0885 (svn r4002) - Fix: Use the title of a savegame in the saveload dialog-editbox. This gets rid of the '.sav' appended to each game as well as properly showing UTF-8 saves when this is implemented. Also don't change the text if the save has failed.
Darkvater
parents: 3287
diff changeset
  1623
9234
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1624
			if ((_saveload_mode == SLD_SAVE_GAME || _saveload_mode == SLD_SAVE_SCENARIO) &&
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1625
					HandleEditBoxKey(w, &WP(w, querystr_d), 10, e) == 1) { // Press Enter
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1626
				w->HandleButtonClick(12);
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1627
			}
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1628
			break;
1131
21a18a6c1b4b (svn r1632) -Fix: [1108008] Scenario creation bug; engines are of correct year when scenario is saved
darkvater
parents: 1126
diff changeset
  1629
9234
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1630
		case WE_TIMEOUT:
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1631
			/* This test protects against using widgets 11 and 12 which are only available
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1632
			* in those two saveload mode  */
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1633
			if (!(_saveload_mode == SLD_SAVE_GAME || _saveload_mode == SLD_SAVE_SCENARIO)) break;
867
581154a08a78 (svn r1348) -Feature: resizable windows. Read the comment in window.h to find out
truelight
parents: 860
diff changeset
  1634
9234
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1635
			if (w->IsWidgetLowered(11)) { // Delete button clicked
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1636
				if (!FiosDelete(WP(w, querystr_d).text.buf)) {
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1637
					ShowErrorMessage(INVALID_STRING_ID, STR_4008_UNABLE_TO_DELETE_FILE, 0, 0);
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1638
				} else {
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1639
					BuildFileList();
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1640
					/* Reset file name to current date on successful delete */
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1641
					if (_saveload_mode == SLD_SAVE_GAME) GenerateFileName();
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1642
				}
867
581154a08a78 (svn r1348) -Feature: resizable windows. Read the comment in window.h to find out
truelight
parents: 860
diff changeset
  1643
9234
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1644
				UpdateTextBufferSize(&WP(w, querystr_d).text);
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1645
				SetWindowDirty(w);
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1646
			} else if (w->IsWidgetLowered(12)) { // Save button clicked
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1647
				_switch_mode = SM_SAVE;
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1648
				FiosMakeSavegameName(_file_to_saveload.name, WP(w, querystr_d).text.buf, sizeof(_file_to_saveload.name));
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1649
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1650
				/* In the editor set up the vehicle engines correctly (date might have changed) */
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1651
				if (_game_mode == GM_EDITOR) StartupEngines();
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1652
			}
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1653
			break;
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1654
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1655
		case WE_DESTROY:
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1656
			/* pause is only used in single-player, non-editor mode, non menu mode */
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1657
			if (!_networking && _game_mode != GM_EDITOR && _game_mode != GM_MENU) {
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1658
				if (_pause_game >= 0) DoCommandP(0, 0, 0, NULL, CMD_PAUSE);
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1659
			}
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1660
			FiosFreeSavegameList();
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1661
			ClrBit(_no_scroll, SCROLL_SAVE);
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1662
			break;
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1663
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1664
		case WE_RESIZE: {
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1665
			/* Widget 2 and 3 have to go with halve speed, make it so obiwan */
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1666
			uint diff = e->we.sizing.diff.x / 2;
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1667
			w->widget[2].right += diff;
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1668
			w->widget[3].left  += diff;
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1669
			w->widget[3].right += e->we.sizing.diff.x;
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1670
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1671
			/* Same for widget 11 and 12 in save-dialog */
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1672
			if (_saveload_mode == SLD_SAVE_GAME || _saveload_mode == SLD_SAVE_SCENARIO) {
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1673
				w->widget[11].right += diff;
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1674
				w->widget[12].left  += diff;
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1675
				w->widget[12].right += e->we.sizing.diff.x;
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1676
			}
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1677
8123d1c8e796 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium
parents: 9233
diff changeset
  1678
			w->vscroll.cap += e->we.sizing.diff.y / 10;
867
581154a08a78 (svn r1348) -Feature: resizable windows. Read the comment in window.h to find out
truelight
parents: 860
diff changeset
  1679
		} break;
193
0a7025304867 (svn r194) -Codechange: stripping trailing-spaces. Please keep this that way!
truelight
parents: 179
diff changeset
  1680
	}
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1681
}
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1682
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1683
static const WindowDesc _load_dialog_desc = {
7842
60f0ca823a73 (svn r10709) -Codechange: allow automatic downsizing of the load game/save game windows. These windows also already supported downsizing, but again the resize button would be unreachable.
rubidium
parents: 7837
diff changeset
  1684
	WDP_CENTER, WDP_CENTER, 257, 154, 257, 294,
6144
5a0ffbf27ced (svn r8511) -Codechange: make WindowClass an enumerated value.
rubidium
parents: 6001
diff changeset
  1685
	WC_SAVELOAD, WC_NONE,
8515
d0401d967e99 (svn r11579) -Revert(r11578): some cases of key propagation are not handled correctly.
belugas
parents: 8514
diff changeset
  1686
	WDF_STD_TOOLTIPS | WDF_DEF_WIDGET | WDF_STD_BTN | WDF_UNCLICK_BUTTONS | WDF_RESIZABLE,
5079
173056d957f5 (svn r7143) -CodeChange: remove redondancy in saveload dialogs
glx
parents: 5070
diff changeset
  1687
	_load_dialog_widgets,
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1688
	SaveLoadDlgWndProc,
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1689
};
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1690
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1691
static const WindowDesc _save_dialog_desc = {
7842
60f0ca823a73 (svn r10709) -Codechange: allow automatic downsizing of the load game/save game windows. These windows also already supported downsizing, but again the resize button would be unreachable.
rubidium
parents: 7837
diff changeset
  1692
	WDP_CENTER, WDP_CENTER, 257, 180, 257, 320,
6144
5a0ffbf27ced (svn r8511) -Codechange: make WindowClass an enumerated value.
rubidium
parents: 6001
diff changeset
  1693
	WC_SAVELOAD, WC_NONE,
8515
d0401d967e99 (svn r11579) -Revert(r11578): some cases of key propagation are not handled correctly.
belugas
parents: 8514
diff changeset
  1694
	WDF_STD_TOOLTIPS | WDF_DEF_WIDGET | WDF_STD_BTN | WDF_UNCLICK_BUTTONS | WDF_RESIZABLE,
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1695
	_save_dialog_widgets,
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1696
	SaveLoadDlgWndProc,
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1697
};
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1698
8648
daa3c9e931ab (svn r11714) -Fix[FS#1569]: Do not allow player inauguration date on scenarios to be bigger than current year.
belugas
parents: 8645
diff changeset
  1699
/** These values are used to convert the file/operations mode into a corresponding file type.
daa3c9e931ab (svn r11714) -Fix[FS#1569]: Do not allow player inauguration date on scenarios to be bigger than current year.
belugas
parents: 8645
diff changeset
  1700
 * So each entry, as expressed by the related comment, is based on the enum   */
daa3c9e931ab (svn r11714) -Fix[FS#1569]: Do not allow player inauguration date on scenarios to be bigger than current year.
belugas
parents: 8645
diff changeset
  1701
static const FileType _file_modetotype[] = {
daa3c9e931ab (svn r11714) -Fix[FS#1569]: Do not allow player inauguration date on scenarios to be bigger than current year.
belugas
parents: 8645
diff changeset
  1702
	FT_SAVEGAME,  ///< used for SLD_LOAD_GAME
daa3c9e931ab (svn r11714) -Fix[FS#1569]: Do not allow player inauguration date on scenarios to be bigger than current year.
belugas
parents: 8645
diff changeset
  1703
	FT_SCENARIO,  ///< used for SLD_LOAD_SCENARIO
daa3c9e931ab (svn r11714) -Fix[FS#1569]: Do not allow player inauguration date on scenarios to be bigger than current year.
belugas
parents: 8645
diff changeset
  1704
	FT_SAVEGAME,  ///< used for SLD_SAVE_GAME
daa3c9e931ab (svn r11714) -Fix[FS#1569]: Do not allow player inauguration date on scenarios to be bigger than current year.
belugas
parents: 8645
diff changeset
  1705
	FT_SCENARIO,  ///< used for SLD_SAVE_SCENARIO
daa3c9e931ab (svn r11714) -Fix[FS#1569]: Do not allow player inauguration date on scenarios to be bigger than current year.
belugas
parents: 8645
diff changeset
  1706
	FT_HEIGHTMAP, ///< used for SLD_LOAD_HEIGHTMAP
daa3c9e931ab (svn r11714) -Fix[FS#1569]: Do not allow player inauguration date on scenarios to be bigger than current year.
belugas
parents: 8645
diff changeset
  1707
	FT_SAVEGAME,  ///< SLD_NEW_GAME
daa3c9e931ab (svn r11714) -Fix[FS#1569]: Do not allow player inauguration date on scenarios to be bigger than current year.
belugas
parents: 8645
diff changeset
  1708
};
daa3c9e931ab (svn r11714) -Fix[FS#1569]: Do not allow player inauguration date on scenarios to be bigger than current year.
belugas
parents: 8645
diff changeset
  1709
8645
83500ad80b08 (svn r11711) -Codechange: Name the Save Load Dialog Mode enum
belugas
parents: 8640
diff changeset
  1710
void ShowSaveLoadDialog(SaveLoadDialogMode mode)
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1711
{
5079
173056d957f5 (svn r7143) -CodeChange: remove redondancy in saveload dialogs
glx
parents: 5070
diff changeset
  1712
	static const StringID saveload_captions[] = {
173056d957f5 (svn r7143) -CodeChange: remove redondancy in saveload dialogs
glx
parents: 5070
diff changeset
  1713
		STR_4001_LOAD_GAME,
173056d957f5 (svn r7143) -CodeChange: remove redondancy in saveload dialogs
glx
parents: 5070
diff changeset
  1714
		STR_0298_LOAD_SCENARIO,
173056d957f5 (svn r7143) -CodeChange: remove redondancy in saveload dialogs
glx
parents: 5070
diff changeset
  1715
		STR_4000_SAVE_GAME,
173056d957f5 (svn r7143) -CodeChange: remove redondancy in saveload dialogs
glx
parents: 5070
diff changeset
  1716
		STR_0299_SAVE_SCENARIO,
8920
04df97185061 (svn r11994) -Codechange: Remove numbers from string names where the strings aren't present in TTD, since they don't correspond to either TTD's TextIDs or OpenTTD's StringIDs.
maedhros
parents: 8919
diff changeset
  1717
		STR_LOAD_HEIGHTMAP,
5079
173056d957f5 (svn r7143) -CodeChange: remove redondancy in saveload dialogs
glx
parents: 5070
diff changeset
  1718
	};
173056d957f5 (svn r7143) -CodeChange: remove redondancy in saveload dialogs
glx
parents: 5070
diff changeset
  1719
173056d957f5 (svn r7143) -CodeChange: remove redondancy in saveload dialogs
glx
parents: 5070
diff changeset
  1720
	const WindowDesc *sld = &_save_dialog_desc;
173056d957f5 (svn r7143) -CodeChange: remove redondancy in saveload dialogs
glx
parents: 5070
diff changeset
  1721
8385
aedd7656cfd1 (svn r11440) -Codechange: replace magic numbers with enumified WindowHighlightMode constants. Patch by SmatZ.
rubidium
parents: 8355
diff changeset
  1722
	SetObjectToPlace(SPR_CURSOR_ZZZ, PAL_NONE, VHM_NONE, WC_MAIN_WINDOW, 0);
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1723
	DeleteWindowById(WC_QUERY_STRING, 0);
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1724
	DeleteWindowById(WC_SAVELOAD, 0);
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1725
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1726
	_saveload_mode = mode;
8427
143b0be22af1 (svn r11484) -Codechange: Remove the doubled function SetBitT and rename the remaining to fit with the naming style
skidd13
parents: 8425
diff changeset
  1727
	SetBit(_no_scroll, SCROLL_SAVE);
1397
b04402b901cd (svn r1901) - Fix: unwanted behaviour of the savegame dialog, as well as a bug with a sloppy termination of a string. When any editbox is open, scrolling is disabled. If any new types of editboxes come up, please use SET/CLRBIT of _no_scroll with its unique identifier (ttd.h)
Darkvater
parents: 1392
diff changeset
  1728
8648
daa3c9e931ab (svn r11714) -Fix[FS#1569]: Do not allow player inauguration date on scenarios to be bigger than current year.
belugas
parents: 8645
diff changeset
  1729
	/* Use an array to define what will be the current file type being handled
daa3c9e931ab (svn r11714) -Fix[FS#1569]: Do not allow player inauguration date on scenarios to be bigger than current year.
belugas
parents: 8645
diff changeset
  1730
	 * by current file mode */
daa3c9e931ab (svn r11714) -Fix[FS#1569]: Do not allow player inauguration date on scenarios to be bigger than current year.
belugas
parents: 8645
diff changeset
  1731
	_file_to_saveload.filetype = _file_modetotype[mode];
1397
b04402b901cd (svn r1901) - Fix: unwanted behaviour of the savegame dialog, as well as a bug with a sloppy termination of a string. When any editbox is open, scrolling is disabled. If any new types of editboxes come up, please use SET/CLRBIT of _no_scroll with its unique identifier (ttd.h)
Darkvater
parents: 1392
diff changeset
  1732
	switch (mode) {
2631
13daba67f217 (svn r3173) Use the trinary operator and switch to improve readability
tron
parents: 2630
diff changeset
  1733
		case SLD_SAVE_GAME:     GenerateFileName(); break;
13daba67f217 (svn r3173) Use the trinary operator and switch to improve readability
tron
parents: 2630
diff changeset
  1734
		case SLD_SAVE_SCENARIO: strcpy(_edit_str_buf, "UNNAMED"); break;
5079
173056d957f5 (svn r7143) -CodeChange: remove redondancy in saveload dialogs
glx
parents: 5070
diff changeset
  1735
		default:                sld = &_load_dialog_desc; break;
1397
b04402b901cd (svn r1901) - Fix: unwanted behaviour of the savegame dialog, as well as a bug with a sloppy termination of a string. When any editbox is open, scrolling is disabled. If any new types of editboxes come up, please use SET/CLRBIT of _no_scroll with its unique identifier (ttd.h)
Darkvater
parents: 1392
diff changeset
  1736
	}
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1737
5079
173056d957f5 (svn r7143) -CodeChange: remove redondancy in saveload dialogs
glx
parents: 5070
diff changeset
  1738
	assert((uint)mode < lengthof(saveload_captions));
9315
336e6518acb3 (svn r12565) -Cleanup: variable scope in misc\*.cpp
smatz
parents: 9305
diff changeset
  1739
336e6518acb3 (svn r12565) -Cleanup: variable scope in misc\*.cpp
smatz
parents: 9305
diff changeset
  1740
	Window *w = AllocateWindowDesc(sld);
5079
173056d957f5 (svn r7143) -CodeChange: remove redondancy in saveload dialogs
glx
parents: 5070
diff changeset
  1741
	w->widget[1].data = saveload_captions[mode];
8493
3ab458f7cff4 (svn r11555) -Codechange: use the new members introduced in r11551.
rubidium
parents: 8450
diff changeset
  1742
	w->LowerWidget(7);
4948
91dae24f3690 (svn r6937) -Codechange: Add an InitializeTextBuffer() function that handles setting up the
Darkvater
parents: 4939
diff changeset
  1743
91dae24f3690 (svn r6937) -Codechange: Add an InitializeTextBuffer() function that handles setting up the
Darkvater
parents: 4939
diff changeset
  1744
	WP(w, querystr_d).afilter = CS_ALPHANUMERAL;
91dae24f3690 (svn r6937) -Codechange: Add an InitializeTextBuffer() function that handles setting up the
Darkvater
parents: 4939
diff changeset
  1745
	InitializeTextBuffer(&WP(w, querystr_d).text, _edit_str_buf, lengthof(_edit_str_buf), 240);
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1746
6527
f584ab6d87f8 (svn r8987) -Cleanup: doxygen changes. Again. Mostly (still) @files missing tags and (more than just) a few comments style.
belugas
parents: 6523
diff changeset
  1747
	/* pause is only used in single-player, non-editor mode, non-menu mode. It
f584ab6d87f8 (svn r8987) -Cleanup: doxygen changes. Again. Mostly (still) @files missing tags and (more than just) a few comments style.
belugas
parents: 6523
diff changeset
  1748
	 * will be unpaused in the WE_DESTROY event handler. */
2639
8a7342eb3a78 (svn r3181) -Bracing
tron
parents: 2631
diff changeset
  1749
	if (_game_mode != GM_MENU && !_networking && _game_mode != GM_EDITOR) {
9167
a2b146a9be68 (svn r12336) -Fix [FS#1733]: Don't pause/unpause the game when showing load/save windows when the game is paused due to missing GRFs.
peter1138
parents: 9119
diff changeset
  1750
		if (_pause_game >= 0) DoCommandP(0, 1, 0, NULL, CMD_PAUSE);
2639
8a7342eb3a78 (svn r3181) -Bracing
tron
parents: 2631
diff changeset
  1751
	}
278
950c3ac6e649 (svn r284) Fix: on opening the saveload dialog the game pauses again in single player games
dominik
parents: 258
diff changeset
  1752
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1753
	BuildFileList();
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1754
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1755
	ResetObjectToPlace();
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1756
}
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1757
6573
7624f942237f (svn r9050) -Codechange: Foo(void) -> Foo()
rubidium
parents: 6565
diff changeset
  1758
void RedrawAutosave()
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1759
{
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1760
	SetWindowDirty(FindWindowById(WC_STATUS_BAR, 0));
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1761
}
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1762
543
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents: 541
diff changeset
  1763
void SetFiosType(const byte fiostype)
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1764
{
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1765
	switch (fiostype) {
2549
f1d3b383d557 (svn r3078) Some more stuff, which piled up:
tron
parents: 2535
diff changeset
  1766
		case FIOS_TYPE_FILE:
f1d3b383d557 (svn r3078) Some more stuff, which piled up:
tron
parents: 2535
diff changeset
  1767
		case FIOS_TYPE_SCENARIO:
f1d3b383d557 (svn r3078) Some more stuff, which piled up:
tron
parents: 2535
diff changeset
  1768
			_file_to_saveload.mode = SL_LOAD;
f1d3b383d557 (svn r3078) Some more stuff, which piled up:
tron
parents: 2535
diff changeset
  1769
			break;
f1d3b383d557 (svn r3078) Some more stuff, which piled up:
tron
parents: 2535
diff changeset
  1770
f1d3b383d557 (svn r3078) Some more stuff, which piled up:
tron
parents: 2535
diff changeset
  1771
		case FIOS_TYPE_OLDFILE:
f1d3b383d557 (svn r3078) Some more stuff, which piled up:
tron
parents: 2535
diff changeset
  1772
		case FIOS_TYPE_OLD_SCENARIO:
f1d3b383d557 (svn r3078) Some more stuff, which piled up:
tron
parents: 2535
diff changeset
  1773
			_file_to_saveload.mode = SL_OLD_LOAD;
f1d3b383d557 (svn r3078) Some more stuff, which piled up:
tron
parents: 2535
diff changeset
  1774
			break;
f1d3b383d557 (svn r3078) Some more stuff, which piled up:
tron
parents: 2535
diff changeset
  1775
4300
687a17c9c557 (svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents: 4299
diff changeset
  1776
#ifdef WITH_PNG
687a17c9c557 (svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents: 4299
diff changeset
  1777
		case FIOS_TYPE_PNG:
687a17c9c557 (svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents: 4299
diff changeset
  1778
			_file_to_saveload.mode = SL_PNG;
687a17c9c557 (svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents: 4299
diff changeset
  1779
			break;
687a17c9c557 (svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents: 4299
diff changeset
  1780
#endif /* WITH_PNG */
687a17c9c557 (svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents: 4299
diff changeset
  1781
687a17c9c557 (svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents: 4299
diff changeset
  1782
		case FIOS_TYPE_BMP:
687a17c9c557 (svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents: 4299
diff changeset
  1783
			_file_to_saveload.mode = SL_BMP;
687a17c9c557 (svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents: 4299
diff changeset
  1784
			break;
687a17c9c557 (svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents: 4299
diff changeset
  1785
2549
f1d3b383d557 (svn r3078) Some more stuff, which piled up:
tron
parents: 2535
diff changeset
  1786
		default:
f1d3b383d557 (svn r3078) Some more stuff, which piled up:
tron
parents: 2535
diff changeset
  1787
			_file_to_saveload.mode = SL_INVALID;
f1d3b383d557 (svn r3078) Some more stuff, which piled up:
tron
parents: 2535
diff changeset
  1788
			break;
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1789
	}
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1790
}
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1791
9211
6ee04ee57ab5 (svn r12389) -Codechange: remove unneeded code from the Cheat window handling and bring it in line with the coding guidelines.
rubidium
parents: 9167
diff changeset
  1792
/**
6ee04ee57ab5 (svn r12389) -Codechange: remove unneeded code from the Cheat window handling and bring it in line with the coding guidelines.
rubidium
parents: 9167
diff changeset
  1793
 * The 'amount' to cheat with.
6ee04ee57ab5 (svn r12389) -Codechange: remove unneeded code from the Cheat window handling and bring it in line with the coding guidelines.
rubidium
parents: 9167
diff changeset
  1794
 * This variable is semantically a constant value, but because the cheat
6ee04ee57ab5 (svn r12389) -Codechange: remove unneeded code from the Cheat window handling and bring it in line with the coding guidelines.
rubidium
parents: 9167
diff changeset
  1795
 * code requires to be able to write to the variable it is not constified.
6ee04ee57ab5 (svn r12389) -Codechange: remove unneeded code from the Cheat window handling and bring it in line with the coding guidelines.
rubidium
parents: 9167
diff changeset
  1796
 */
6ee04ee57ab5 (svn r12389) -Codechange: remove unneeded code from the Cheat window handling and bring it in line with the coding guidelines.
rubidium
parents: 9167
diff changeset
  1797
static int32 _money_cheat_amount = 10000000;
6ee04ee57ab5 (svn r12389) -Codechange: remove unneeded code from the Cheat window handling and bring it in line with the coding guidelines.
rubidium
parents: 9167
diff changeset
  1798
410
8de2aaf20800 (svn r607) -Patch: [ 985102 ] static cleanup
tron
parents: 402
diff changeset
  1799
static int32 ClickMoneyCheat(int32 p1, int32 p2)
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1800
{
9211
6ee04ee57ab5 (svn r12389) -Codechange: remove unneeded code from the Cheat window handling and bring it in line with the coding guidelines.
rubidium
parents: 9167
diff changeset
  1801
	DoCommandP(0, (uint32)(p2 * _money_cheat_amount), 0, NULL, CMD_MONEY_CHEAT);
6ee04ee57ab5 (svn r12389) -Codechange: remove unneeded code from the Cheat window handling and bring it in line with the coding guidelines.
rubidium
parents: 9167
diff changeset
  1802
	return _money_cheat_amount;
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1803
}
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1804
6527
f584ab6d87f8 (svn r8987) -Cleanup: doxygen changes. Again. Mostly (still) @files missing tags and (more than just) a few comments style.
belugas
parents: 6523
diff changeset
  1805
/**
f584ab6d87f8 (svn r8987) -Cleanup: doxygen changes. Again. Mostly (still) @files missing tags and (more than just) a few comments style.
belugas
parents: 6523
diff changeset
  1806
 * @param p1 player to set to
f584ab6d87f8 (svn r8987) -Cleanup: doxygen changes. Again. Mostly (still) @files missing tags and (more than just) a few comments style.
belugas
parents: 6523
diff changeset
  1807
 * @param p2 is -1 or +1 (down/up)
f584ab6d87f8 (svn r8987) -Cleanup: doxygen changes. Again. Mostly (still) @files missing tags and (more than just) a few comments style.
belugas
parents: 6523
diff changeset
  1808
 */
410
8de2aaf20800 (svn r607) -Patch: [ 985102 ] static cleanup
tron
parents: 402
diff changeset
  1809
static int32 ClickChangePlayerCheat(int32 p1, int32 p2)
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1810
{
4850
b4e9be22945f (svn r6776) -Codechange: Use IsValidPlayer() function to determine of a PlayerID is an
Darkvater
parents: 4834
diff changeset
  1811
	while (IsValidPlayer((PlayerID)p1)) {
2639
8a7342eb3a78 (svn r3181) -Bracing
tron
parents: 2631
diff changeset
  1812
		if (_players[p1].is_active) {
5564
6e1b3ea1ba7f (svn r7561) -Fix (FS#431): core and (patches) GUI were not in-sync with respect to autorenew settings. This is only a temporary fix, as the definite fix needs to move the autorenew settings to a per-company settings window.
rubidium
parents: 5355
diff changeset
  1813
			SetLocalPlayer((PlayerID)p1);
6e1b3ea1ba7f (svn r7561) -Fix (FS#431): core and (patches) GUI were not in-sync with respect to autorenew settings. This is only a temporary fix, as the definite fix needs to move the autorenew settings to a per-company settings window.
rubidium
parents: 5355
diff changeset
  1814
138
6ab4d97d1034 (svn r139) Added MarkWholeScreenDirty() on switch player screen
dominik
parents: 108
diff changeset
  1815
			MarkWholeScreenDirty();
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1816
			return _local_player;
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1817
		}
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1818
		p1 += p2;
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1819
	}
155
81e9878f3678 (svn r156) -Codechange: remove obsolete callback arrays
darkvater
parents: 147
diff changeset
  1820
81e9878f3678 (svn r156) -Codechange: remove obsolete callback arrays
darkvater
parents: 147
diff changeset
  1821
	return _local_player;
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1822
}
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1823
6527
f584ab6d87f8 (svn r8987) -Cleanup: doxygen changes. Again. Mostly (still) @files missing tags and (more than just) a few comments style.
belugas
parents: 6523
diff changeset
  1824
/**
f584ab6d87f8 (svn r8987) -Cleanup: doxygen changes. Again. Mostly (still) @files missing tags and (more than just) a few comments style.
belugas
parents: 6523
diff changeset
  1825
 * @param p1 -1 or +1 (down/up)
6977
67b989528f3d (svn r9662) -Documentation: Doxygen corrections and @file omissions
belugas
parents: 6949
diff changeset
  1826
 * @param p2 unused
6527
f584ab6d87f8 (svn r8987) -Cleanup: doxygen changes. Again. Mostly (still) @files missing tags and (more than just) a few comments style.
belugas
parents: 6523
diff changeset
  1827
 */
1095
90220990fd7c (svn r1596) Add some more statics
tron
parents: 1093
diff changeset
  1828
static int32 ClickChangeClimateCheat(int32 p1, int32 p2)
100
8e87945f6bcb (svn r101) New cheat: switch climate
dominik
parents: 74
diff changeset
  1829
{
2639
8a7342eb3a78 (svn r3181) -Bracing
tron
parents: 2631
diff changeset
  1830
	if (p1 == -1) p1 = 3;
8a7342eb3a78 (svn r3181) -Bracing
tron
parents: 2631
diff changeset
  1831
	if (p1 ==  4) p1 = 0;
100
8e87945f6bcb (svn r101) New cheat: switch climate
dominik
parents: 74
diff changeset
  1832
	_opt.landscape = p1;
5352
82a50c80b0c4 (svn r7523) -Feature: Add the possibility to change the newgrf configuration of a running game.
Darkvater
parents: 5320
diff changeset
  1833
	ReloadNewGRFData();
100
8e87945f6bcb (svn r101) New cheat: switch climate
dominik
parents: 74
diff changeset
  1834
	return _opt.landscape;
8e87945f6bcb (svn r101) New cheat: switch climate
dominik
parents: 74
diff changeset
  1835
}
8e87945f6bcb (svn r101) New cheat: switch climate
dominik
parents: 74
diff changeset
  1836
6573
7624f942237f (svn r9050) -Codechange: Foo(void) -> Foo()
rubidium
parents: 6565
diff changeset
  1837
extern void EnginesMonthlyLoop();
108
8e2e584a9500 (svn r109) added/heavily modified patch by truesatan: cheat change date
dominik
parents: 104
diff changeset
  1838
6527
f584ab6d87f8 (svn r8987) -Cleanup: doxygen changes. Again. Mostly (still) @files missing tags and (more than just) a few comments style.
belugas
parents: 6523
diff changeset
  1839
/**
6977
67b989528f3d (svn r9662) -Documentation: Doxygen corrections and @file omissions
belugas
parents: 6949
diff changeset
  1840
 * @param p1 unused
6527
f584ab6d87f8 (svn r8987) -Cleanup: doxygen changes. Again. Mostly (still) @files missing tags and (more than just) a few comments style.
belugas
parents: 6523
diff changeset
  1841
 * @param p2 1 (increase) or -1 (decrease)
f584ab6d87f8 (svn r8987) -Cleanup: doxygen changes. Again. Mostly (still) @files missing tags and (more than just) a few comments style.
belugas
parents: 6523
diff changeset
  1842
 */
1095
90220990fd7c (svn r1596) Add some more statics
tron
parents: 1093
diff changeset
  1843
static int32 ClickChangeDateCheat(int32 p1, int32 p2)
108
8e2e584a9500 (svn r109) added/heavily modified patch by truesatan: cheat change date
dominik
parents: 104
diff changeset
  1844
{
8e2e584a9500 (svn r109) added/heavily modified patch by truesatan: cheat change date
dominik
parents: 104
diff changeset
  1845
	YearMonthDay ymd;
4288
60398d0e64ee (svn r5918) -Cleanup: rename ConvertDayToYMD/ConvertYMDToDay as they really convert a Date to/from a YearMonthDay.
rubidium
parents: 4286
diff changeset
  1846
	ConvertDateToYMD(_date, &ymd);
108
8e2e584a9500 (svn r109) added/heavily modified patch by truesatan: cheat change date
dominik
parents: 104
diff changeset
  1847
4293
2c24234a7aec (svn r5926) -Codechange: make _cur_year contain the full year, instead of the offset since 1920
rubidium
parents: 4288
diff changeset
  1848
	if ((ymd.year == MIN_YEAR && p2 == -1) || (ymd.year == MAX_YEAR && p2 == 1)) return _cur_year;
108
8e2e584a9500 (svn r109) added/heavily modified patch by truesatan: cheat change date
dominik
parents: 104
diff changeset
  1849
4288
60398d0e64ee (svn r5918) -Cleanup: rename ConvertDayToYMD/ConvertYMDToDay as they really convert a Date to/from a YearMonthDay.
rubidium
parents: 4286
diff changeset
  1850
	SetDate(ConvertYMDToDate(_cur_year + p2, ymd.month, ymd.day));
108
8e2e584a9500 (svn r109) added/heavily modified patch by truesatan: cheat change date
dominik
parents: 104
diff changeset
  1851
	EnginesMonthlyLoop();
8e2e584a9500 (svn r109) added/heavily modified patch by truesatan: cheat change date
dominik
parents: 104
diff changeset
  1852
	SetWindowDirty(FindWindowById(WC_STATUS_BAR, 0));
9305
0c214cd8b39e (svn r12550) -Change: the signal GUI is now persistent - has the same data when it is reopened
smatz
parents: 9283
diff changeset
  1853
	ResetSignalVariant();
108
8e2e584a9500 (svn r109) added/heavily modified patch by truesatan: cheat change date
dominik
parents: 104
diff changeset
  1854
	return _cur_year;
8e2e584a9500 (svn r109) added/heavily modified patch by truesatan: cheat change date
dominik
parents: 104
diff changeset
  1855
}
100
8e87945f6bcb (svn r101) New cheat: switch climate
dominik
parents: 74
diff changeset
  1856
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1857
typedef int32 CheckButtonClick(int32, int32);
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1858
6574
e1d1a12faaf7 (svn r9051) -Codechange: typedef [enum|struct] Y {} X; -> [enum|struct] X {};
rubidium
parents: 6573
diff changeset
  1859
struct CheatEntry {
6527
f584ab6d87f8 (svn r8987) -Cleanup: doxygen changes. Again. Mostly (still) @files missing tags and (more than just) a few comments style.
belugas
parents: 6523
diff changeset
  1860
	VarType type;          ///< type of selector
f584ab6d87f8 (svn r8987) -Cleanup: doxygen changes. Again. Mostly (still) @files missing tags and (more than just) a few comments style.
belugas
parents: 6523
diff changeset
  1861
	StringID str;          ///< string with descriptive text
f584ab6d87f8 (svn r8987) -Cleanup: doxygen changes. Again. Mostly (still) @files missing tags and (more than just) a few comments style.
belugas
parents: 6523
diff changeset
  1862
	void *variable;        ///< pointer to the variable
f584ab6d87f8 (svn r8987) -Cleanup: doxygen changes. Again. Mostly (still) @files missing tags and (more than just) a few comments style.
belugas
parents: 6523
diff changeset
  1863
	bool *been_used;       ///< has this cheat been used before?
f584ab6d87f8 (svn r8987) -Cleanup: doxygen changes. Again. Mostly (still) @files missing tags and (more than just) a few comments style.
belugas
parents: 6523
diff changeset
  1864
	CheckButtonClick *proc;///< procedure
6574
e1d1a12faaf7 (svn r9051) -Codechange: typedef [enum|struct] Y {} X; -> [enum|struct] X {};
rubidium
parents: 6573
diff changeset
  1865
};
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1866
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1867
static const CheatEntry _cheats_ui[] = {
9211
6ee04ee57ab5 (svn r12389) -Codechange: remove unneeded code from the Cheat window handling and bring it in line with the coding guidelines.
rubidium
parents: 9167
diff changeset
  1868
	{SLE_INT32, STR_CHEAT_MONEY,           &_money_cheat_amount,            &_cheats.money.been_used,            &ClickMoneyCheat        },
6ee04ee57ab5 (svn r12389) -Codechange: remove unneeded code from the Cheat window handling and bring it in line with the coding guidelines.
rubidium
parents: 9167
diff changeset
  1869
	{SLE_UINT8, STR_CHEAT_CHANGE_PLAYER,   &_local_player,                  &_cheats.switch_player.been_used,    &ClickChangePlayerCheat },
6ee04ee57ab5 (svn r12389) -Codechange: remove unneeded code from the Cheat window handling and bring it in line with the coding guidelines.
rubidium
parents: 9167
diff changeset
  1870
	{SLE_BOOL,  STR_CHEAT_EXTRA_DYNAMITE,  &_cheats.magic_bulldozer.value,  &_cheats.magic_bulldozer.been_used,  NULL                    },
6ee04ee57ab5 (svn r12389) -Codechange: remove unneeded code from the Cheat window handling and bring it in line with the coding guidelines.
rubidium
parents: 9167
diff changeset
  1871
	{SLE_BOOL,  STR_CHEAT_CROSSINGTUNNELS, &_cheats.crossing_tunnels.value, &_cheats.crossing_tunnels.been_used, NULL                    },
6ee04ee57ab5 (svn r12389) -Codechange: remove unneeded code from the Cheat window handling and bring it in line with the coding guidelines.
rubidium
parents: 9167
diff changeset
  1872
	{SLE_BOOL,  STR_CHEAT_BUILD_IN_PAUSE,  &_cheats.build_in_pause.value,   &_cheats.build_in_pause.been_used,   NULL                    },
6ee04ee57ab5 (svn r12389) -Codechange: remove unneeded code from the Cheat window handling and bring it in line with the coding guidelines.
rubidium
parents: 9167
diff changeset
  1873
	{SLE_BOOL,  STR_CHEAT_NO_JETCRASH,     &_cheats.no_jetcrash.value,      &_cheats.no_jetcrash.been_used,      NULL                    },
6ee04ee57ab5 (svn r12389) -Codechange: remove unneeded code from the Cheat window handling and bring it in line with the coding guidelines.
rubidium
parents: 9167
diff changeset
  1874
	{SLE_BOOL,  STR_CHEAT_SETUP_PROD,      &_cheats.setup_prod.value,       &_cheats.setup_prod.been_used,       NULL                    },
6ee04ee57ab5 (svn r12389) -Codechange: remove unneeded code from the Cheat window handling and bring it in line with the coding guidelines.
rubidium
parents: 9167
diff changeset
  1875
	{SLE_UINT8, STR_CHEAT_SWITCH_CLIMATE,  &_opt.landscape,                 &_cheats.switch_climate.been_used,   &ClickChangeClimateCheat},
6ee04ee57ab5 (svn r12389) -Codechange: remove unneeded code from the Cheat window handling and bring it in line with the coding guidelines.
rubidium
parents: 9167
diff changeset
  1876
	{SLE_INT32, STR_CHEAT_CHANGE_DATE,     &_cur_year,                      &_cheats.change_date.been_used,      &ClickChangeDateCheat   },
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1877
};
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1878
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1879
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1880
static const Widget _cheat_widgets[] = {
4344
5d0e40cd67b9 (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4326
diff changeset
  1881
{   WWT_CLOSEBOX,   RESIZE_NONE,    14,     0,    10,     0,    13, STR_00C5,   STR_018B_CLOSE_WINDOW},
5d0e40cd67b9 (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4326
diff changeset
  1882
{    WWT_CAPTION,   RESIZE_NONE,    14,    11,   399,     0,    13, STR_CHEATS, STR_018C_WINDOW_TITLE_DRAG_THIS},
5d0e40cd67b9 (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4326
diff changeset
  1883
{      WWT_PANEL,   RESIZE_NONE,    14,     0,   399,    14,   169, 0x0,        STR_NULL},
4938
074f734a91ca (svn r6925) -Codechange: Be more strict with widget distinctions. WWT_PANEL is only plain panel,
Darkvater
parents: 4912
diff changeset
  1884
{      WWT_PANEL,   RESIZE_NONE,    14,     0,   399,    14,   169, 0x0,        STR_CHEATS_TIP},
176
84990c4b9212 (svn r177) -Fix: padded out Widget code to solve warnings on C99 compiler (Tron)
darkvater
parents: 172
diff changeset
  1885
{   WIDGETS_END},
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1886
};
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1887
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1888
static void CheatsWndProc(Window *w, WindowEvent *e)
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1889
{
2639
8a7342eb3a78 (svn r3181) -Bracing
tron
parents: 2631
diff changeset
  1890
	switch (e->event) {
9211
6ee04ee57ab5 (svn r12389) -Codechange: remove unneeded code from the Cheat window handling and bring it in line with the coding guidelines.
rubidium
parents: 9167
diff changeset
  1891
		case WE_PAINT: {
6ee04ee57ab5 (svn r12389) -Codechange: remove unneeded code from the Cheat window handling and bring it in line with the coding guidelines.
rubidium
parents: 9167
diff changeset
  1892
			int clk = WP(w, def_d).data_1;
2639
8a7342eb3a78 (svn r3181) -Bracing
tron
parents: 2631
diff changeset
  1893
9211
6ee04ee57ab5 (svn r12389) -Codechange: remove unneeded code from the Cheat window handling and bring it in line with the coding guidelines.
rubidium
parents: 9167
diff changeset
  1894
			DrawWindowWidgets(w);
6ee04ee57ab5 (svn r12389) -Codechange: remove unneeded code from the Cheat window handling and bring it in line with the coding guidelines.
rubidium
parents: 9167
diff changeset
  1895
			DrawStringMultiCenter(200, 25, STR_CHEATS_WARNING, w->width - 50);
3110
92181a7f9b7d (svn r3713) - Fix up the cheats window a little. The cheats code is still abominable, but at least a bit more readable now.
Darkvater
parents: 3107
diff changeset
  1896
9211
6ee04ee57ab5 (svn r12389) -Codechange: remove unneeded code from the Cheat window handling and bring it in line with the coding guidelines.
rubidium
parents: 9167
diff changeset
  1897
			for (int i = 0, x = 0, y = 45; i != lengthof(_cheats_ui); i++) {
6ee04ee57ab5 (svn r12389) -Codechange: remove unneeded code from the Cheat window handling and bring it in line with the coding guidelines.
rubidium
parents: 9167
diff changeset
  1898
				const CheatEntry *ce = &_cheats_ui[i];
6ee04ee57ab5 (svn r12389) -Codechange: remove unneeded code from the Cheat window handling and bring it in line with the coding guidelines.
rubidium
parents: 9167
diff changeset
  1899
6ee04ee57ab5 (svn r12389) -Codechange: remove unneeded code from the Cheat window handling and bring it in line with the coding guidelines.
rubidium
parents: 9167
diff changeset
  1900
				DrawSprite((*ce->been_used) ? SPR_BOX_CHECKED : SPR_BOX_EMPTY, PAL_NONE, x + 5, y + 2);
6ee04ee57ab5 (svn r12389) -Codechange: remove unneeded code from the Cheat window handling and bring it in line with the coding guidelines.
rubidium
parents: 9167
diff changeset
  1901
6ee04ee57ab5 (svn r12389) -Codechange: remove unneeded code from the Cheat window handling and bring it in line with the coding guidelines.
rubidium
parents: 9167
diff changeset
  1902
				switch (ce->type) {
6ee04ee57ab5 (svn r12389) -Codechange: remove unneeded code from the Cheat window handling and bring it in line with the coding guidelines.
rubidium
parents: 9167
diff changeset
  1903
					case SLE_BOOL: {
6ee04ee57ab5 (svn r12389) -Codechange: remove unneeded code from the Cheat window handling and bring it in line with the coding guidelines.
rubidium
parents: 9167
diff changeset
  1904
						bool on = (*(bool*)ce->variable);
6ee04ee57ab5 (svn r12389) -Codechange: remove unneeded code from the Cheat window handling and bring it in line with the coding guidelines.
rubidium
parents: 9167
diff changeset
  1905
6ee04ee57ab5 (svn r12389) -Codechange: remove unneeded code from the Cheat window handling and bring it in line with the coding guidelines.
rubidium
parents: 9167
diff changeset
  1906
						DrawFrameRect(x + 20, y + 1, x + 30 + 9, y + 9, on ? 6 : 4, on ? FR_LOWERED : FR_NONE);
6ee04ee57ab5 (svn r12389) -Codechange: remove unneeded code from the Cheat window handling and bring it in line with the coding guidelines.
rubidium
parents: 9167
diff changeset
  1907
						SetDParam(0, on ? STR_CONFIG_PATCHES_ON : STR_CONFIG_PATCHES_OFF);
6ee04ee57ab5 (svn r12389) -Codechange: remove unneeded code from the Cheat window handling and bring it in line with the coding guidelines.
rubidium
parents: 9167
diff changeset
  1908
					} break;
6ee04ee57ab5 (svn r12389) -Codechange: remove unneeded code from the Cheat window handling and bring it in line with the coding guidelines.
rubidium
parents: 9167
diff changeset
  1909
6ee04ee57ab5 (svn r12389) -Codechange: remove unneeded code from the Cheat window handling and bring it in line with the coding guidelines.
rubidium
parents: 9167
diff changeset
  1910
					default: {
6ee04ee57ab5 (svn r12389) -Codechange: remove unneeded code from the Cheat window handling and bring it in line with the coding guidelines.
rubidium
parents: 9167
diff changeset
  1911
						int32 val = (int32)ReadValue(ce->variable, ce->type);
6ee04ee57ab5 (svn r12389) -Codechange: remove unneeded code from the Cheat window handling and bring it in line with the coding guidelines.
rubidium
parents: 9167
diff changeset
  1912
						char buf[512];
6ee04ee57ab5 (svn r12389) -Codechange: remove unneeded code from the Cheat window handling and bring it in line with the coding guidelines.
rubidium
parents: 9167
diff changeset
  1913
6ee04ee57ab5 (svn r12389) -Codechange: remove unneeded code from the Cheat window handling and bring it in line with the coding guidelines.
rubidium
parents: 9167
diff changeset
  1914
						/* Draw [<][>] boxes for settings of an integer-type */
6ee04ee57ab5 (svn r12389) -Codechange: remove unneeded code from the Cheat window handling and bring it in line with the coding guidelines.
rubidium
parents: 9167
diff changeset
  1915
						DrawArrowButtons(x + 20, y, 3, clk - (i * 2), true, true);
6ee04ee57ab5 (svn r12389) -Codechange: remove unneeded code from the Cheat window handling and bring it in line with the coding guidelines.
rubidium
parents: 9167
diff changeset
  1916
6ee04ee57ab5 (svn r12389) -Codechange: remove unneeded code from the Cheat window handling and bring it in line with the coding guidelines.
rubidium
parents: 9167
diff changeset
  1917
						switch (ce->str) {
6ee04ee57ab5 (svn r12389) -Codechange: remove unneeded code from the Cheat window handling and bring it in line with the coding guidelines.
rubidium
parents: 9167
diff changeset
  1918
							/* Display date for change date cheat */
6ee04ee57ab5 (svn r12389) -Codechange: remove unneeded code from the Cheat window handling and bring it in line with the coding guidelines.
rubidium
parents: 9167
diff changeset
  1919
							case STR_CHEAT_CHANGE_DATE: SetDParam(0, _date); break;
6ee04ee57ab5 (svn r12389) -Codechange: remove unneeded code from the Cheat window handling and bring it in line with the coding guidelines.
rubidium
parents: 9167
diff changeset
  1920
6ee04ee57ab5 (svn r12389) -Codechange: remove unneeded code from the Cheat window handling and bring it in line with the coding guidelines.
rubidium
parents: 9167
diff changeset
  1921
							/* Draw colored flag for change player cheat */
6ee04ee57ab5 (svn r12389) -Codechange: remove unneeded code from the Cheat window handling and bring it in line with the coding guidelines.
rubidium
parents: 9167
diff changeset
  1922
							case STR_CHEAT_CHANGE_PLAYER:
6ee04ee57ab5 (svn r12389) -Codechange: remove unneeded code from the Cheat window handling and bring it in line with the coding guidelines.
rubidium
parents: 9167
diff changeset
  1923
								SetDParam(0, val);
6ee04ee57ab5 (svn r12389) -Codechange: remove unneeded code from the Cheat window handling and bring it in line with the coding guidelines.
rubidium
parents: 9167
diff changeset
  1924
								GetString(buf, STR_CHEAT_CHANGE_PLAYER, lastof(buf));
6ee04ee57ab5 (svn r12389) -Codechange: remove unneeded code from the Cheat window handling and bring it in line with the coding guidelines.
rubidium
parents: 9167
diff changeset
  1925
								DrawPlayerIcon(_current_player, 60 + GetStringBoundingBox(buf).width, y + 2);
6ee04ee57ab5 (svn r12389) -Codechange: remove unneeded code from the Cheat window handling and bring it in line with the coding guidelines.
rubidium
parents: 9167
diff changeset
  1926
								break;
6ee04ee57ab5 (svn r12389) -Codechange: remove unneeded code from the Cheat window handling and bring it in line with the coding guidelines.
rubidium
parents: 9167
diff changeset
  1927
6ee04ee57ab5 (svn r12389) -Codechange: remove unneeded code from the Cheat window handling and bring it in line with the coding guidelines.
rubidium
parents: 9167
diff changeset
  1928
							/* Set correct string for switch climate cheat */
6ee04ee57ab5 (svn r12389) -Codechange: remove unneeded code from the Cheat window handling and bring it in line with the coding guidelines.
rubidium
parents: 9167
diff changeset
  1929
							case STR_CHEAT_SWITCH_CLIMATE: val += STR_TEMPERATE_LANDSCAPE;
6ee04ee57ab5 (svn r12389) -Codechange: remove unneeded code from the Cheat window handling and bring it in line with the coding guidelines.
rubidium
parents: 9167
diff changeset
  1930
6ee04ee57ab5 (svn r12389) -Codechange: remove unneeded code from the Cheat window handling and bring it in line with the coding guidelines.
rubidium
parents: 9167
diff changeset
  1931
							/* Fallthrough */
6ee04ee57ab5 (svn r12389) -Codechange: remove unneeded code from the Cheat window handling and bring it in line with the coding guidelines.
rubidium
parents: 9167
diff changeset
  1932
							default: SetDParam(0, val);
6ee04ee57ab5 (svn r12389) -Codechange: remove unneeded code from the Cheat window handling and bring it in line with the coding guidelines.
rubidium
parents: 9167
diff changeset
  1933
						}
6ee04ee57ab5 (svn r12389) -Codechange: remove unneeded code from the Cheat window handling and bring it in line with the coding guidelines.
rubidium
parents: 9167
diff changeset
  1934
					} break;
2639
8a7342eb3a78 (svn r3181) -Bracing
tron
parents: 2631
diff changeset
  1935
				}
193
0a7025304867 (svn r194) -Codechange: stripping trailing-spaces. Please keep this that way!
truelight
parents: 179
diff changeset
  1936
9211
6ee04ee57ab5 (svn r12389) -Codechange: remove unneeded code from the Cheat window handling and bring it in line with the coding guidelines.
rubidium
parents: 9167
diff changeset
  1937
				DrawString(50, y + 1, ce->str, TC_FROMSTRING);
6ee04ee57ab5 (svn r12389) -Codechange: remove unneeded code from the Cheat window handling and bring it in line with the coding guidelines.
rubidium
parents: 9167
diff changeset
  1938
6ee04ee57ab5 (svn r12389) -Codechange: remove unneeded code from the Cheat window handling and bring it in line with the coding guidelines.
rubidium
parents: 9167
diff changeset
  1939
				y += 12;
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1940
			}
9211
6ee04ee57ab5 (svn r12389) -Codechange: remove unneeded code from the Cheat window handling and bring it in line with the coding guidelines.
rubidium
parents: 9167
diff changeset
  1941
			break;
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1942
		}
2639
8a7342eb3a78 (svn r3181) -Bracing
tron
parents: 2631
diff changeset
  1943
9211
6ee04ee57ab5 (svn r12389) -Codechange: remove unneeded code from the Cheat window handling and bring it in line with the coding guidelines.
rubidium
parents: 9167
diff changeset
  1944
		case WE_CLICK: {
4634
897461a3e9ca (svn r6499) -Codechange: Finally, got "byte event" outside of the union WindowEvent, which is now a struct
belugas
parents: 4609
diff changeset
  1945
			uint btn = (e->we.click.pt.y - 46) / 12;
897461a3e9ca (svn r6499) -Codechange: Finally, got "byte event" outside of the union WindowEvent, which is now a struct
belugas
parents: 4609
diff changeset
  1946
			uint x = e->we.click.pt.x;
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1947
9211
6ee04ee57ab5 (svn r12389) -Codechange: remove unneeded code from the Cheat window handling and bring it in line with the coding guidelines.
rubidium
parents: 9167
diff changeset
  1948
			/* Not clicking a button? */
8450
dce58137301f (svn r11510) -Codechange: merge the IS_*INSIDE* functions and rename them fitting to the naming style
skidd13
parents: 8427
diff changeset
  1949
			if (!IsInsideMM(x, 20, 40) || btn >= lengthof(_cheats_ui)) break;
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1950
9211
6ee04ee57ab5 (svn r12389) -Codechange: remove unneeded code from the Cheat window handling and bring it in line with the coding guidelines.
rubidium
parents: 9167
diff changeset
  1951
			const CheatEntry *ce = &_cheats_ui[btn];
6ee04ee57ab5 (svn r12389) -Codechange: remove unneeded code from the Cheat window handling and bring it in line with the coding guidelines.
rubidium
parents: 9167
diff changeset
  1952
			int value = (int32)ReadValue(ce->variable, ce->type);
6ee04ee57ab5 (svn r12389) -Codechange: remove unneeded code from the Cheat window handling and bring it in line with the coding guidelines.
rubidium
parents: 9167
diff changeset
  1953
			int oldvalue = value;
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1954
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1955
			*ce->been_used = true;
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1956
2639
8a7342eb3a78 (svn r3181) -Bracing
tron
parents: 2631
diff changeset
  1957
			switch (ce->type) {
9211
6ee04ee57ab5 (svn r12389) -Codechange: remove unneeded code from the Cheat window handling and bring it in line with the coding guidelines.
rubidium
parents: 9167
diff changeset
  1958
				case SLE_BOOL:
6ee04ee57ab5 (svn r12389) -Codechange: remove unneeded code from the Cheat window handling and bring it in line with the coding guidelines.
rubidium
parents: 9167
diff changeset
  1959
					value ^= 1;
6ee04ee57ab5 (svn r12389) -Codechange: remove unneeded code from the Cheat window handling and bring it in line with the coding guidelines.
rubidium
parents: 9167
diff changeset
  1960
					if (ce->proc != NULL) ce->proc(value, 0);
6ee04ee57ab5 (svn r12389) -Codechange: remove unneeded code from the Cheat window handling and bring it in line with the coding guidelines.
rubidium
parents: 9167
diff changeset
  1961
					break;
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1962
9211
6ee04ee57ab5 (svn r12389) -Codechange: remove unneeded code from the Cheat window handling and bring it in line with the coding guidelines.
rubidium
parents: 9167
diff changeset
  1963
				default:
6ee04ee57ab5 (svn r12389) -Codechange: remove unneeded code from the Cheat window handling and bring it in line with the coding guidelines.
rubidium
parents: 9167
diff changeset
  1964
					/* Take whatever the function returns */
6ee04ee57ab5 (svn r12389) -Codechange: remove unneeded code from the Cheat window handling and bring it in line with the coding guidelines.
rubidium
parents: 9167
diff changeset
  1965
					value = ce->proc(value + ((x >= 30) ? 1 : -1), (x >= 30) ? 1 : -1);
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1966
9211
6ee04ee57ab5 (svn r12389) -Codechange: remove unneeded code from the Cheat window handling and bring it in line with the coding guidelines.
rubidium
parents: 9167
diff changeset
  1967
					if (value != oldvalue) WP(w, def_d).data_1 = btn * 2 + 1 + ((x >= 30) ? 1 : 0);
6ee04ee57ab5 (svn r12389) -Codechange: remove unneeded code from the Cheat window handling and bring it in line with the coding guidelines.
rubidium
parents: 9167
diff changeset
  1968
					break;
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1969
			}
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1970
9211
6ee04ee57ab5 (svn r12389) -Codechange: remove unneeded code from the Cheat window handling and bring it in line with the coding guidelines.
rubidium
parents: 9167
diff changeset
  1971
			if (value != oldvalue) WriteValue(ce->variable, ce->type, (int64)value);
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1972
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1973
			w->flags4 |= 5 << WF_TIMEOUT_SHL;
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1974
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1975
			SetWindowDirty(w);
9211
6ee04ee57ab5 (svn r12389) -Codechange: remove unneeded code from the Cheat window handling and bring it in line with the coding guidelines.
rubidium
parents: 9167
diff changeset
  1976
		} break;
6ee04ee57ab5 (svn r12389) -Codechange: remove unneeded code from the Cheat window handling and bring it in line with the coding guidelines.
rubidium
parents: 9167
diff changeset
  1977
6ee04ee57ab5 (svn r12389) -Codechange: remove unneeded code from the Cheat window handling and bring it in line with the coding guidelines.
rubidium
parents: 9167
diff changeset
  1978
		case WE_TIMEOUT:
6ee04ee57ab5 (svn r12389) -Codechange: remove unneeded code from the Cheat window handling and bring it in line with the coding guidelines.
rubidium
parents: 9167
diff changeset
  1979
			WP(w, def_d).data_1 = 0;
6ee04ee57ab5 (svn r12389) -Codechange: remove unneeded code from the Cheat window handling and bring it in line with the coding guidelines.
rubidium
parents: 9167
diff changeset
  1980
			SetWindowDirty(w);
6ee04ee57ab5 (svn r12389) -Codechange: remove unneeded code from the Cheat window handling and bring it in line with the coding guidelines.
rubidium
parents: 9167
diff changeset
  1981
			break;
193
0a7025304867 (svn r194) -Codechange: stripping trailing-spaces. Please keep this that way!
truelight
parents: 179
diff changeset
  1982
	}
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1983
}
2639
8a7342eb3a78 (svn r3181) -Bracing
tron
parents: 2631
diff changeset
  1984
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1985
static const WindowDesc _cheats_desc = {
7837
65d7362153a6 (svn r10704) -Codechange: provide an infrastructure to have resizable windows that are smaller than the default window size.
rubidium
parents: 7817
diff changeset
  1986
	240, 22, 400, 170, 400, 170,
6144
5a0ffbf27ced (svn r8511) -Codechange: make WindowClass an enumerated value.
rubidium
parents: 6001
diff changeset
  1987
	WC_CHEATS, WC_NONE,
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1988
	WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS,
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1989
	_cheat_widgets,
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1990
	CheatsWndProc
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1991
};
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1992
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1993
6573
7624f942237f (svn r9050) -Codechange: Foo(void) -> Foo()
rubidium
parents: 6565
diff changeset
  1994
void ShowCheatWindow()
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1995
{
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1996
	DeleteWindowById(WC_CHEATS, 0);
5137
a1f26c30fecd (svn r7219) -Fix: Several warnings by gcc introduced in r7206 which MSVC found not of a problem. Thanks Tron
Darkvater
parents: 5125
diff changeset
  1997
	AllocateWindowDesc(&_cheats_desc);
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1998
}