src/tree_gui.cpp
author rubidium
Tue, 13 May 2008 14:43:33 +0000
changeset 9203 082fbf0500c4
parent 9195 738780fcebc8
child 9273 35e0224ea8f1
permissions -rw-r--r--
(svn r13069) -Codechange: it is no longer needed to pass a void *data pointer with the WE_CREATE message because nothing uses it anymore.
9148
ba0f18cfc795 (svn r13010) -Codechange: move the tree building GUI out of misc_gui.cpp.
rubidium
parents:
diff changeset
     1
/* $Id$ */
ba0f18cfc795 (svn r13010) -Codechange: move the tree building GUI out of misc_gui.cpp.
rubidium
parents:
diff changeset
     2
ba0f18cfc795 (svn r13010) -Codechange: move the tree building GUI out of misc_gui.cpp.
rubidium
parents:
diff changeset
     3
/** @file tree_gui.cpp GUIs for building trees. */
ba0f18cfc795 (svn r13010) -Codechange: move the tree building GUI out of misc_gui.cpp.
rubidium
parents:
diff changeset
     4
ba0f18cfc795 (svn r13010) -Codechange: move the tree building GUI out of misc_gui.cpp.
rubidium
parents:
diff changeset
     5
#include "stdafx.h"
ba0f18cfc795 (svn r13010) -Codechange: move the tree building GUI out of misc_gui.cpp.
rubidium
parents:
diff changeset
     6
#include "openttd.h"
ba0f18cfc795 (svn r13010) -Codechange: move the tree building GUI out of misc_gui.cpp.
rubidium
parents:
diff changeset
     7
#include "window_gui.h"
ba0f18cfc795 (svn r13010) -Codechange: move the tree building GUI out of misc_gui.cpp.
rubidium
parents:
diff changeset
     8
#include "gfx_func.h"
ba0f18cfc795 (svn r13010) -Codechange: move the tree building GUI out of misc_gui.cpp.
rubidium
parents:
diff changeset
     9
#include "tilehighlight_func.h"
ba0f18cfc795 (svn r13010) -Codechange: move the tree building GUI out of misc_gui.cpp.
rubidium
parents:
diff changeset
    10
#include "player_func.h"
ba0f18cfc795 (svn r13010) -Codechange: move the tree building GUI out of misc_gui.cpp.
rubidium
parents:
diff changeset
    11
#include "command_func.h"
ba0f18cfc795 (svn r13010) -Codechange: move the tree building GUI out of misc_gui.cpp.
rubidium
parents:
diff changeset
    12
#include "sound_func.h"
ba0f18cfc795 (svn r13010) -Codechange: move the tree building GUI out of misc_gui.cpp.
rubidium
parents:
diff changeset
    13
#include "settings_type.h"
ba0f18cfc795 (svn r13010) -Codechange: move the tree building GUI out of misc_gui.cpp.
rubidium
parents:
diff changeset
    14
ba0f18cfc795 (svn r13010) -Codechange: move the tree building GUI out of misc_gui.cpp.
rubidium
parents:
diff changeset
    15
#include "table/sprites.h"
ba0f18cfc795 (svn r13010) -Codechange: move the tree building GUI out of misc_gui.cpp.
rubidium
parents:
diff changeset
    16
#include "table/strings.h"
ba0f18cfc795 (svn r13010) -Codechange: move the tree building GUI out of misc_gui.cpp.
rubidium
parents:
diff changeset
    17
#include "table/tree_land.h"
ba0f18cfc795 (svn r13010) -Codechange: move the tree building GUI out of misc_gui.cpp.
rubidium
parents:
diff changeset
    18
ba0f18cfc795 (svn r13010) -Codechange: move the tree building GUI out of misc_gui.cpp.
rubidium
parents:
diff changeset
    19
void PlaceTreesRandomly();
ba0f18cfc795 (svn r13010) -Codechange: move the tree building GUI out of misc_gui.cpp.
rubidium
parents:
diff changeset
    20
9195
738780fcebc8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 9148
diff changeset
    21
class BuildTreesWindow : public Window
738780fcebc8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 9148
diff changeset
    22
{
738780fcebc8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 9148
diff changeset
    23
	uint16 base;
738780fcebc8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 9148
diff changeset
    24
	uint16 count;
738780fcebc8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 9148
diff changeset
    25
	int tree_to_plant;
738780fcebc8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 9148
diff changeset
    26
738780fcebc8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 9148
diff changeset
    27
	enum BuildTreesWidgets {
738780fcebc8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 9148
diff changeset
    28
		BTW_CLOSE,
738780fcebc8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 9148
diff changeset
    29
		BTW_CAPTION,
738780fcebc8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 9148
diff changeset
    30
		BTW_BACKGROUND,
738780fcebc8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 9148
diff changeset
    31
		BTW_TYPE_11,
738780fcebc8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 9148
diff changeset
    32
		BTW_TYPE_12,
738780fcebc8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 9148
diff changeset
    33
		BTW_TYPE_13,
738780fcebc8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 9148
diff changeset
    34
		BTW_TYPE_14,
738780fcebc8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 9148
diff changeset
    35
		BTW_TYPE_21,
738780fcebc8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 9148
diff changeset
    36
		BTW_TYPE_22,
738780fcebc8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 9148
diff changeset
    37
		BTW_TYPE_23,
738780fcebc8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 9148
diff changeset
    38
		BTW_TYPE_24,
738780fcebc8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 9148
diff changeset
    39
		BTW_TYPE_31,
738780fcebc8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 9148
diff changeset
    40
		BTW_TYPE_32,
738780fcebc8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 9148
diff changeset
    41
		BTW_TYPE_33,
738780fcebc8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 9148
diff changeset
    42
		BTW_TYPE_34,
738780fcebc8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 9148
diff changeset
    43
		BTW_TYPE_RANDOM,
738780fcebc8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 9148
diff changeset
    44
		BTW_MANY_RANDOM,
738780fcebc8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 9148
diff changeset
    45
	};
738780fcebc8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 9148
diff changeset
    46
738780fcebc8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 9148
diff changeset
    47
public:
9203
082fbf0500c4 (svn r13069) -Codechange: it is no longer needed to pass a void *data pointer with the WE_CREATE message because nothing uses it anymore.
rubidium
parents: 9195
diff changeset
    48
	BuildTreesWindow(const WindowDesc *desc, WindowNumber window_number) : Window(desc, window_number)
9195
738780fcebc8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 9148
diff changeset
    49
	{
738780fcebc8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 9148
diff changeset
    50
		if (_game_mode != GM_EDITOR) {
738780fcebc8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 9148
diff changeset
    51
			this->HideWidget(BTW_MANY_RANDOM);
738780fcebc8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 9148
diff changeset
    52
			int offset = this->widget[BTW_MANY_RANDOM].bottom - this->widget[BTW_MANY_RANDOM].top;
738780fcebc8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 9148
diff changeset
    53
			this->height -= offset;
738780fcebc8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 9148
diff changeset
    54
			this->widget[BTW_BACKGROUND].bottom -= offset;
738780fcebc8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 9148
diff changeset
    55
		}
738780fcebc8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 9148
diff changeset
    56
		ResetObjectToPlace();
738780fcebc8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 9148
diff changeset
    57
		this->FindWindowPlacementAndResize(desc);
738780fcebc8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 9148
diff changeset
    58
	}
738780fcebc8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 9148
diff changeset
    59
738780fcebc8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 9148
diff changeset
    60
	virtual void OnPaint()
738780fcebc8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 9148
diff changeset
    61
	{
738780fcebc8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 9148
diff changeset
    62
		static const PalSpriteID tree_sprites[] = {
738780fcebc8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 9148
diff changeset
    63
			{ 0x655, PAL_NONE }, { 0x663, PAL_NONE }, { 0x678, PAL_NONE }, { 0x62B, PAL_NONE },
738780fcebc8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 9148
diff changeset
    64
			{ 0x647, PAL_NONE }, { 0x639, PAL_NONE }, { 0x64E, PAL_NONE }, { 0x632, PAL_NONE },
738780fcebc8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 9148
diff changeset
    65
			{ 0x67F, PAL_NONE }, { 0x68D, PAL_NONE }, { 0x69B, PAL_NONE }, { 0x6A9, PAL_NONE },
738780fcebc8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 9148
diff changeset
    66
			{ 0x6AF, PAL_NONE }, { 0x6D2, PAL_NONE }, { 0x6D9, PAL_NONE }, { 0x6C4, PAL_NONE },
738780fcebc8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 9148
diff changeset
    67
			{ 0x6CB, PAL_NONE }, { 0x6B6, PAL_NONE }, { 0x6BD, PAL_NONE }, { 0x6E0, PAL_NONE },
738780fcebc8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 9148
diff changeset
    68
			{ 0x72E, PAL_NONE }, { 0x734, PAL_NONE }, { 0x74A, PAL_NONE }, { 0x74F, PAL_NONE },
738780fcebc8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 9148
diff changeset
    69
			{ 0x76B, PAL_NONE }, { 0x78F, PAL_NONE }, { 0x788, PAL_NONE }, { 0x77B, PAL_NONE },
738780fcebc8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 9148
diff changeset
    70
			{ 0x75F, PAL_NONE }, { 0x774, PAL_NONE }, { 0x720, PAL_NONE }, { 0x797, PAL_NONE },
738780fcebc8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 9148
diff changeset
    71
			{ 0x79E, PAL_NONE }, { 0x7A5, PALETTE_TO_GREEN }, { 0x7AC, PALETTE_TO_RED }, { 0x7B3, PAL_NONE },
738780fcebc8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 9148
diff changeset
    72
			{ 0x7BA, PAL_NONE }, { 0x7C1, PALETTE_TO_RED, }, { 0x7C8, PALETTE_TO_PALE_GREEN }, { 0x7CF, PALETTE_TO_YELLOW }, { 0x7D6, PALETTE_TO_RED }
738780fcebc8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 9148
diff changeset
    73
		};
738780fcebc8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 9148
diff changeset
    74
738780fcebc8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 9148
diff changeset
    75
		DrawWindowWidgets(this);
738780fcebc8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 9148
diff changeset
    76
738780fcebc8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 9148
diff changeset
    77
		int i = this->base = _tree_base_by_landscape[_opt.landscape];
738780fcebc8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 9148
diff changeset
    78
		int count = this->count = _tree_count_by_landscape[_opt.landscape];
738780fcebc8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 9148
diff changeset
    79
738780fcebc8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 9148
diff changeset
    80
		int x = 18;
738780fcebc8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 9148
diff changeset
    81
		int y = 54;
738780fcebc8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 9148
diff changeset
    82
		do {
738780fcebc8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 9148
diff changeset
    83
			DrawSprite(tree_sprites[i].sprite, tree_sprites[i].pal, x, y);
738780fcebc8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 9148
diff changeset
    84
			x += 35;
738780fcebc8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 9148
diff changeset
    85
			if (!(++i & 3)) {
738780fcebc8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 9148
diff changeset
    86
				x -= 35 * 4;
738780fcebc8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 9148
diff changeset
    87
				y += 47;
738780fcebc8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 9148
diff changeset
    88
			}
738780fcebc8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 9148
diff changeset
    89
		} while (--count);
738780fcebc8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 9148
diff changeset
    90
	}
738780fcebc8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 9148
diff changeset
    91
738780fcebc8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 9148
diff changeset
    92
	virtual void OnClick(Point pt, int widget)
738780fcebc8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 9148
diff changeset
    93
	{
738780fcebc8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 9148
diff changeset
    94
		switch (widget) {
738780fcebc8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 9148
diff changeset
    95
			case BTW_CLOSE:
738780fcebc8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 9148
diff changeset
    96
				ResetObjectToPlace();
738780fcebc8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 9148
diff changeset
    97
				break;
738780fcebc8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 9148
diff changeset
    98
738780fcebc8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 9148
diff changeset
    99
			case BTW_TYPE_11: case BTW_TYPE_12: case BTW_TYPE_13: case BTW_TYPE_14:
738780fcebc8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 9148
diff changeset
   100
			case BTW_TYPE_21: case BTW_TYPE_22: case BTW_TYPE_23: case BTW_TYPE_24:
738780fcebc8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 9148
diff changeset
   101
			case BTW_TYPE_31: case BTW_TYPE_32: case BTW_TYPE_33: case BTW_TYPE_34:
738780fcebc8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 9148
diff changeset
   102
				if (widget - BTW_TYPE_11 >= this->count) break;
738780fcebc8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 9148
diff changeset
   103
738780fcebc8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 9148
diff changeset
   104
				if (HandlePlacePushButton(this, widget, SPR_CURSOR_TREE, VHM_RECT, NULL)) {
738780fcebc8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 9148
diff changeset
   105
					this->tree_to_plant = this->base + widget - BTW_TYPE_11;
738780fcebc8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 9148
diff changeset
   106
				}
738780fcebc8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 9148
diff changeset
   107
				break;
738780fcebc8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 9148
diff changeset
   108
738780fcebc8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 9148
diff changeset
   109
			case BTW_TYPE_RANDOM: // tree of random type.
738780fcebc8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 9148
diff changeset
   110
				if (HandlePlacePushButton(this, BTW_TYPE_RANDOM, SPR_CURSOR_TREE, VHM_RECT, NULL)) {
738780fcebc8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 9148
diff changeset
   111
					this->tree_to_plant = -1;
738780fcebc8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 9148
diff changeset
   112
				}
738780fcebc8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 9148
diff changeset
   113
				break;
738780fcebc8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 9148
diff changeset
   114
738780fcebc8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 9148
diff changeset
   115
			case BTW_MANY_RANDOM: // place trees randomly over the landscape
738780fcebc8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 9148
diff changeset
   116
				this->LowerWidget(BTW_MANY_RANDOM);
738780fcebc8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 9148
diff changeset
   117
				this->flags4 |= 5 << WF_TIMEOUT_SHL;
738780fcebc8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 9148
diff changeset
   118
				SndPlayFx(SND_15_BEEP);
738780fcebc8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 9148
diff changeset
   119
				PlaceTreesRandomly();
738780fcebc8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 9148
diff changeset
   120
				MarkWholeScreenDirty();
738780fcebc8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 9148
diff changeset
   121
				break;
738780fcebc8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 9148
diff changeset
   122
		}
738780fcebc8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 9148
diff changeset
   123
	}
738780fcebc8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 9148
diff changeset
   124
738780fcebc8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 9148
diff changeset
   125
	virtual void OnPlaceObject(Point pt, TileIndex tile)
738780fcebc8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 9148
diff changeset
   126
	{
738780fcebc8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 9148
diff changeset
   127
		VpStartPlaceSizing(tile, VPM_X_AND_Y_LIMITED, DDSP_PLANT_TREES);
738780fcebc8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 9148
diff changeset
   128
		VpSetPlaceSizingLimit(20);
738780fcebc8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 9148
diff changeset
   129
	}
738780fcebc8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 9148
diff changeset
   130
738780fcebc8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 9148
diff changeset
   131
	virtual void OnPlaceDrag(ViewportPlaceMethod select_method, byte select_proc, Point pt)
738780fcebc8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 9148
diff changeset
   132
	{
738780fcebc8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 9148
diff changeset
   133
		VpSelectTilesWithMethod(pt.x, pt.y, select_method);
738780fcebc8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 9148
diff changeset
   134
	}
738780fcebc8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 9148
diff changeset
   135
738780fcebc8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 9148
diff changeset
   136
	virtual void OnPlaceMouseUp(ViewportPlaceMethod select_method, byte select_proc, Point pt, TileIndex start_tile, TileIndex end_tile)
738780fcebc8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 9148
diff changeset
   137
	{
738780fcebc8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 9148
diff changeset
   138
		if (pt.x != -1 && select_proc == DDSP_PLANT_TREES) {
738780fcebc8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 9148
diff changeset
   139
			DoCommandP(end_tile, this->tree_to_plant, start_tile, NULL,
738780fcebc8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 9148
diff changeset
   140
				CMD_PLANT_TREE | CMD_MSG(STR_2805_CAN_T_PLANT_TREE_HERE));
738780fcebc8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 9148
diff changeset
   141
		}
738780fcebc8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 9148
diff changeset
   142
	}
738780fcebc8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 9148
diff changeset
   143
738780fcebc8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 9148
diff changeset
   144
	virtual void OnTimeout()
738780fcebc8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 9148
diff changeset
   145
	{
738780fcebc8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 9148
diff changeset
   146
		this->RaiseWidget(BTW_MANY_RANDOM);
738780fcebc8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 9148
diff changeset
   147
		this->InvalidateWidget(BTW_MANY_RANDOM);
738780fcebc8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 9148
diff changeset
   148
	}
738780fcebc8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 9148
diff changeset
   149
738780fcebc8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 9148
diff changeset
   150
	virtual void OnPlaceObjectAbort()
738780fcebc8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 9148
diff changeset
   151
	{
738780fcebc8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 9148
diff changeset
   152
		this->RaiseButtons();
738780fcebc8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 9148
diff changeset
   153
	}
9148
ba0f18cfc795 (svn r13010) -Codechange: move the tree building GUI out of misc_gui.cpp.
rubidium
parents:
diff changeset
   154
};
ba0f18cfc795 (svn r13010) -Codechange: move the tree building GUI out of misc_gui.cpp.
rubidium
parents:
diff changeset
   155
ba0f18cfc795 (svn r13010) -Codechange: move the tree building GUI out of misc_gui.cpp.
rubidium
parents:
diff changeset
   156
static const Widget _build_trees_widgets[] = {
9195
738780fcebc8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 9148
diff changeset
   157
{   WWT_CLOSEBOX,   RESIZE_NONE,     7,     0,    10,     0,    13, STR_00C5,              STR_018B_CLOSE_WINDOW},              // BTW_CLOSE
738780fcebc8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 9148
diff changeset
   158
{    WWT_CAPTION,   RESIZE_NONE,     7,    11,   142,     0,    13, STR_2802_TREES,        STR_018C_WINDOW_TITLE_DRAG_THIS},    // BTW_CAPTION
738780fcebc8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 9148
diff changeset
   159
{      WWT_PANEL,   RESIZE_NONE,     7,     0,   142,    14,   183, 0x0,                   STR_NULL},                           // BTW_BACKGROUND
738780fcebc8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 9148
diff changeset
   160
{      WWT_PANEL,   RESIZE_NONE,    14,     2,    35,    16,    61, 0x0,                   STR_280D_SELECT_TREE_TYPE_TO_PLANT}, // BTW_TYPE_11
738780fcebc8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 9148
diff changeset
   161
{      WWT_PANEL,   RESIZE_NONE,    14,    37,    70,    16,    61, 0x0,                   STR_280D_SELECT_TREE_TYPE_TO_PLANT}, // BTW_TYPE_12
738780fcebc8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 9148
diff changeset
   162
{      WWT_PANEL,   RESIZE_NONE,    14,    72,   105,    16,    61, 0x0,                   STR_280D_SELECT_TREE_TYPE_TO_PLANT}, // BTW_TYPE_13
738780fcebc8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 9148
diff changeset
   163
{      WWT_PANEL,   RESIZE_NONE,    14,   107,   140,    16,    61, 0x0,                   STR_280D_SELECT_TREE_TYPE_TO_PLANT}, // BTW_TYPE_14
738780fcebc8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 9148
diff changeset
   164
{      WWT_PANEL,   RESIZE_NONE,    14,     2,    35,    63,   108, 0x0,                   STR_280D_SELECT_TREE_TYPE_TO_PLANT}, // BTW_TYPE_21
738780fcebc8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 9148
diff changeset
   165
{      WWT_PANEL,   RESIZE_NONE,    14,    37,    70,    63,   108, 0x0,                   STR_280D_SELECT_TREE_TYPE_TO_PLANT}, // BTW_TYPE_22
738780fcebc8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 9148
diff changeset
   166
{      WWT_PANEL,   RESIZE_NONE,    14,    72,   105,    63,   108, 0x0,                   STR_280D_SELECT_TREE_TYPE_TO_PLANT}, // BTW_TYPE_23
738780fcebc8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 9148
diff changeset
   167
{      WWT_PANEL,   RESIZE_NONE,    14,   107,   140,    63,   108, 0x0,                   STR_280D_SELECT_TREE_TYPE_TO_PLANT}, // BTW_TYPE_24
738780fcebc8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 9148
diff changeset
   168
{      WWT_PANEL,   RESIZE_NONE,    14,     2,    35,   110,   155, 0x0,                   STR_280D_SELECT_TREE_TYPE_TO_PLANT}, // BTW_TYPE_31
738780fcebc8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 9148
diff changeset
   169
{      WWT_PANEL,   RESIZE_NONE,    14,    37,    70,   110,   155, 0x0,                   STR_280D_SELECT_TREE_TYPE_TO_PLANT}, // BTW_TYPE_32
738780fcebc8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 9148
diff changeset
   170
{      WWT_PANEL,   RESIZE_NONE,    14,    72,   105,   110,   155, 0x0,                   STR_280D_SELECT_TREE_TYPE_TO_PLANT}, // BTW_TYPE_33
738780fcebc8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 9148
diff changeset
   171
{      WWT_PANEL,   RESIZE_NONE,    14,   107,   140,   110,   155, 0x0,                   STR_280D_SELECT_TREE_TYPE_TO_PLANT}, // BTW_TYPE_34
738780fcebc8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 9148
diff changeset
   172
{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   140,   157,   168, STR_TREES_RANDOM_TYPE, STR_TREES_RANDOM_TYPE_TIP},          // BTW_TYPE_RANDOM
738780fcebc8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 9148
diff changeset
   173
{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   140,   170,   181, STR_028A_RANDOM_TREES, STR_028B_PLANT_TREES_RANDOMLY_OVER}, // BTW_MANY_RANDOM
9148
ba0f18cfc795 (svn r13010) -Codechange: move the tree building GUI out of misc_gui.cpp.
rubidium
parents:
diff changeset
   174
{    WIDGETS_END},
ba0f18cfc795 (svn r13010) -Codechange: move the tree building GUI out of misc_gui.cpp.
rubidium
parents:
diff changeset
   175
};
ba0f18cfc795 (svn r13010) -Codechange: move the tree building GUI out of misc_gui.cpp.
rubidium
parents:
diff changeset
   176
ba0f18cfc795 (svn r13010) -Codechange: move the tree building GUI out of misc_gui.cpp.
rubidium
parents:
diff changeset
   177
static const WindowDesc _build_trees_desc = {
ba0f18cfc795 (svn r13010) -Codechange: move the tree building GUI out of misc_gui.cpp.
rubidium
parents:
diff changeset
   178
	WDP_AUTO, WDP_AUTO, 143, 184, 143, 184,
ba0f18cfc795 (svn r13010) -Codechange: move the tree building GUI out of misc_gui.cpp.
rubidium
parents:
diff changeset
   179
	WC_BUILD_TREES, WC_NONE,
ba0f18cfc795 (svn r13010) -Codechange: move the tree building GUI out of misc_gui.cpp.
rubidium
parents:
diff changeset
   180
	WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET,
9195
738780fcebc8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 9148
diff changeset
   181
	_build_trees_widgets,
738780fcebc8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 9148
diff changeset
   182
	NULL
9148
ba0f18cfc795 (svn r13010) -Codechange: move the tree building GUI out of misc_gui.cpp.
rubidium
parents:
diff changeset
   183
};
ba0f18cfc795 (svn r13010) -Codechange: move the tree building GUI out of misc_gui.cpp.
rubidium
parents:
diff changeset
   184
ba0f18cfc795 (svn r13010) -Codechange: move the tree building GUI out of misc_gui.cpp.
rubidium
parents:
diff changeset
   185
void ShowBuildTreesToolbar()
ba0f18cfc795 (svn r13010) -Codechange: move the tree building GUI out of misc_gui.cpp.
rubidium
parents:
diff changeset
   186
{
9195
738780fcebc8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 9148
diff changeset
   187
	if (_game_mode != GM_EDITOR && !IsValidPlayer(_current_player)) return;
738780fcebc8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 9148
diff changeset
   188
	AllocateWindowDescFront<BuildTreesWindow>(&_build_trees_desc, 0);
9148
ba0f18cfc795 (svn r13010) -Codechange: move the tree building GUI out of misc_gui.cpp.
rubidium
parents:
diff changeset
   189
}