Files
@ r24061:a798207d2b21
Branch filter:
Location: cpp/openttd-patchpack/source/src/viewport_type.h - annotation
r24061:a798207d2b21
5.8 KiB
text/x-c
Feature: GS method to control engine availability for a specific company (#7791)
* Feature: GS method to allow company to use an engine before its introduction date
* Feature: GS method to retire an engine early for a specific company
* Feature: GS method to allow company to use an engine before its introduction date
* Feature: GS method to retire an engine early for a specific company
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 | r12768:980ae0491352 r12768:980ae0491352 r12768:980ae0491352 r12768:980ae0491352 r12768:980ae0491352 r12768:980ae0491352 r12768:980ae0491352 r8224:194097dc7288 r8224:194097dc7288 r8224:194097dc7288 r8224:194097dc7288 r8224:194097dc7288 r8224:194097dc7288 r12331:4957eff8b184 r22084:e2a53153637c r8224:194097dc7288 r20257:27d3d45ea399 r20257:27d3d45ea399 r8857:5317aca8d1c7 r8857:5317aca8d1c7 r8857:5317aca8d1c7 r8224:194097dc7288 r23838:bfeaabaa7b1d r8857:5317aca8d1c7 r8857:5317aca8d1c7 r8857:5317aca8d1c7 r8224:194097dc7288 r8857:5317aca8d1c7 r8857:5317aca8d1c7 r8857:5317aca8d1c7 r8857:5317aca8d1c7 r8224:194097dc7288 r17624:f2c5f47dceaa r20257:27d3d45ea399 r8224:194097dc7288 r8224:194097dc7288 r19944:25a78576fb5e r14049:815b288b8078 r14049:815b288b8078 r14049:815b288b8078 r14049:815b288b8078 r14049:815b288b8078 r14049:815b288b8078 r14049:815b288b8078 r12335:832893ebf982 r9129:db82b80b0a0b r14049:815b288b8078 r14049:815b288b8078 r12335:832893ebf982 r12335:832893ebf982 r12331:4957eff8b184 r22084:e2a53153637c r19180:f1705a610ae7 r9129:db82b80b0a0b r9129:db82b80b0a0b r23942:2580b984b22e r23942:2580b984b22e r23942:2580b984b22e r23942:2580b984b22e r23942:2580b984b22e r23942:2580b984b22e r23942:2580b984b22e r23942:2580b984b22e r23942:2580b984b22e r23942:2580b984b22e r23942:2580b984b22e r23942:2580b984b22e r23942:2580b984b22e r23942:2580b984b22e r23942:2580b984b22e r23942:2580b984b22e r23942:2580b984b22e r23942:2580b984b22e r23942:2580b984b22e r23942:2580b984b22e r16300:dae54be93b98 r16300:dae54be93b98 r16300:dae54be93b98 r16300:dae54be93b98 r15168:33f1c6a4cf31 r16300:dae54be93b98 r16300:dae54be93b98 r16300:dae54be93b98 r8224:194097dc7288 r8224:194097dc7288 r8224:194097dc7288 r8224:194097dc7288 r8224:194097dc7288 r8224:194097dc7288 r8224:194097dc7288 r8224:194097dc7288 r15173:a59afd6301a6 r15173:a59afd6301a6 r8224:194097dc7288 r8224:194097dc7288 r8224:194097dc7288 r11704:8083118c4aa4 r11704:8083118c4aa4 r11704:8083118c4aa4 r11704:8083118c4aa4 r11704:8083118c4aa4 r11704:8083118c4aa4 r11704:8083118c4aa4 r14417:ef850931da5a r14417:ef850931da5a r11704:8083118c4aa4 r19944:25a78576fb5e r8224:194097dc7288 r14900:c679fdaeebe6 r8224:194097dc7288 r15610:623a23fb6560 r15610:623a23fb6560 r15613:193c12018337 r15613:193c12018337 r9147:6e8812a42759 r14410:5a7b6bd2710b r14410:5a7b6bd2710b r14410:5a7b6bd2710b r14410:5a7b6bd2710b r14410:5a7b6bd2710b r14410:5a7b6bd2710b r14410:5a7b6bd2710b r14410:5a7b6bd2710b r14410:5a7b6bd2710b r14410:5a7b6bd2710b r9147:6e8812a42759 r9147:6e8812a42759 r14410:5a7b6bd2710b r14410:5a7b6bd2710b r14410:5a7b6bd2710b r14410:5a7b6bd2710b r14410:5a7b6bd2710b r9147:6e8812a42759 r9147:6e8812a42759 r14410:5a7b6bd2710b r14410:5a7b6bd2710b r14410:5a7b6bd2710b r14640:07a4f29e1226 r14640:07a4f29e1226 r14641:37c0a6312793 r14641:37c0a6312793 r23698:1872cc5b7dd7 r9147:6e8812a42759 r9147:6e8812a42759 r22830:80781225f8f0 r22830:80781225f8f0 r22830:80781225f8f0 r22830:80781225f8f0 r22830:80781225f8f0 r22830:80781225f8f0 r22830:80781225f8f0 r22830:80781225f8f0 r22830:80781225f8f0 r22830:80781225f8f0 r8224:194097dc7288 | /*
* This file is part of OpenTTD.
* OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
* OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
* See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
*/
/** @file viewport_type.h Types related to viewports. */
#ifndef VIEWPORT_TYPE_H
#define VIEWPORT_TYPE_H
#include "zoom_type.h"
#include "strings_type.h"
#include "table/strings.h"
class LinkGraphOverlay;
/**
* Data structure for viewport, display of a part of the world
*/
struct ViewPort {
int left; ///< Screen coordinate left edge of the viewport
int top; ///< Screen coordinate top edge of the viewport
int width; ///< Screen width of the viewport
int height; ///< Screen height of the viewport
int virtual_left; ///< Virtual left coordinate
int virtual_top; ///< Virtual top coordinate
int virtual_width; ///< width << zoom
int virtual_height; ///< height << zoom
ZoomLevel zoom; ///< The zoom level of the viewport.
LinkGraphOverlay *overlay;
};
/** Margins for the viewport sign */
enum ViewportSignMargin {
VPSM_LEFT = 1, ///< Left margin
VPSM_RIGHT = 1, ///< Right margin
VPSM_TOP = 1, ///< Top margin
VPSM_BOTTOM = 1, ///< Bottom margin
};
/** Location information about a sign as seen on the viewport */
struct ViewportSign {
int32 center; ///< The center position of the sign
int32 top; ///< The top of the sign
uint16 width_normal; ///< The width when not zoomed out (normal font)
uint16 width_small; ///< The width when zoomed out (small font)
void UpdatePosition(int center, int top, StringID str, StringID str_small = STR_NULL);
void MarkDirty(ZoomLevel maxzoom = ZOOM_LVL_MAX) const;
};
/** Specialised ViewportSign that tracks whether it is valid for entering into a Kdtree */
struct TrackedViewportSign : ViewportSign {
bool kdtree_valid; ///< Are the sign data valid for use with the _viewport_sign_kdtree?
/**
* Update the position of the viewport sign.
* Note that this function hides the base class function.
*/
void UpdatePosition(int center, int top, StringID str, StringID str_small = STR_NULL)
{
this->kdtree_valid = true;
this->ViewportSign::UpdatePosition(center, top, str, str_small);
}
TrackedViewportSign() : kdtree_valid{ false }
{
}
};
/**
* Directions of zooming.
* @see DoZoomInOutWindow
*/
enum ZoomStateChange {
ZOOM_IN = 0, ///< Zoom in (get more detailed view).
ZOOM_OUT = 1, ///< Zoom out (get helicopter view).
ZOOM_NONE = 2, ///< Hack, used to update the button status.
};
/**
* Some values for constructing bounding boxes (BB). The Z positions under bridges are:
* z=0..5 Everything that can be built under low bridges.
* z=6 reserved, currently unused.
* z=7 Z separator between bridge/tunnel and the things under/above it.
*/
static const uint BB_HEIGHT_UNDER_BRIDGE = 6; ///< Everything that can be built under low bridges, must not exceed this Z height.
static const uint BB_Z_SEPARATOR = 7; ///< Separates the bridge/tunnel from the things under/above it.
/** Viewport place method (type of highlighted area and placed objects) */
enum ViewportPlaceMethod {
VPM_X_OR_Y = 0, ///< drag in X or Y direction
VPM_FIX_X = 1, ///< drag only in X axis
VPM_FIX_Y = 2, ///< drag only in Y axis
VPM_X_AND_Y = 3, ///< area of land in X and Y directions
VPM_X_AND_Y_LIMITED = 4, ///< area of land of limited size
VPM_FIX_HORIZONTAL = 5, ///< drag only in horizontal direction
VPM_FIX_VERTICAL = 6, ///< drag only in vertical direction
VPM_X_LIMITED = 7, ///< Drag only in X axis with limited size
VPM_Y_LIMITED = 8, ///< Drag only in Y axis with limited size
VPM_RAILDIRS = 0x40, ///< all rail directions
VPM_SIGNALDIRS = 0x80, ///< similar to VMP_RAILDIRS, but with different cursor
};
DECLARE_ENUM_AS_BIT_SET(ViewportPlaceMethod)
/**
* Drag and drop selection process, or, what to do with an area of land when
* you've selected it.
*/
enum ViewportDragDropSelectionProcess {
DDSP_DEMOLISH_AREA, ///< Clear area
DDSP_RAISE_AND_LEVEL_AREA, ///< Raise / level area
DDSP_LOWER_AND_LEVEL_AREA, ///< Lower / level area
DDSP_LEVEL_AREA, ///< Level area
DDSP_CREATE_DESERT, ///< Fill area with desert
DDSP_CREATE_ROCKS, ///< Fill area with rocks
DDSP_CREATE_WATER, ///< Create a canal
DDSP_CREATE_RIVER, ///< Create rivers
DDSP_PLANT_TREES, ///< Plant trees
DDSP_BUILD_BRIDGE, ///< Bridge placement
/* Rail specific actions */
DDSP_PLACE_RAIL, ///< Rail placement
DDSP_BUILD_SIGNALS, ///< Signal placement
DDSP_BUILD_STATION, ///< Station placement
DDSP_REMOVE_STATION, ///< Station removal
DDSP_CONVERT_RAIL, ///< Rail conversion
/* Road specific actions */
DDSP_PLACE_ROAD_X_DIR, ///< Road placement (X axis)
DDSP_PLACE_ROAD_Y_DIR, ///< Road placement (Y axis)
DDSP_PLACE_AUTOROAD, ///< Road placement (auto)
DDSP_BUILD_BUSSTOP, ///< Road stop placement (buses)
DDSP_BUILD_TRUCKSTOP, ///< Road stop placement (trucks)
DDSP_REMOVE_BUSSTOP, ///< Road stop removal (buses)
DDSP_REMOVE_TRUCKSTOP, ///< Road stop removal (trucks)
DDSP_CONVERT_ROAD, ///< Road conversion
};
/**
* Target of the viewport scrolling GS method
*/
enum ViewportScrollTarget {
VST_EVERYONE, ///< All players
VST_COMPANY, ///< All players in specific company
VST_CLIENT, ///< Single player
};
#endif /* VIEWPORT_TYPE_H */
|