tron@2186: /* $Id$ */ tron@2186: rubidium@8224: /** @file viewport_type.h Types related to viewports. */ belugas@6423: rubidium@8224: #ifndef VIEWPORT_TYPE_H rubidium@8224: #define VIEWPORT_TYPE_H truelight@0: rubidium@8123: #include "zoom_type.h" truelight@6624: rubidium@8857: /** rubidium@8857: * Data structure for viewport, display of a part of the world rubidium@8857: */ truelight@0: struct ViewPort { rubidium@8857: int left; ///< Screen coordinate left egde of the viewport rubidium@8857: int top; ///< Screen coordinate top edge of the viewport rubidium@8857: int width; ///< Screen width of the viewport rubidium@8857: int height; ///< Screen height of the viewport truelight@0: rubidium@8857: int virtual_left; ///< Virtual left coordinate rubidium@8857: int virtual_top; ///< Virtual top coordinate rubidium@8857: int virtual_width; ///< width << zoom rubidium@8857: int virtual_height; ///< height << zoom truelight@0: truelight@6624: ZoomLevel zoom; truelight@0: }; truelight@0: rubidium@9129: struct ViewportSign { rubidium@9129: int32 left; rubidium@9129: int32 top; smatz@10055: uint16 width_1, width_2; rubidium@9129: }; rubidium@9129: Darkvater@5044: enum { Darkvater@5044: ZOOM_IN = 0, Darkvater@5044: ZOOM_OUT = 1, Darkvater@5044: ZOOM_NONE = 2, // hack, used to update the button status Darkvater@5044: }; Darkvater@5044: rubidium@7601: /** rubidium@7601: * Some values for constructing bounding boxes (BB). The Z positions under bridges are: rubidium@7601: * z=0..5 Everything that can be built under low bridges. rubidium@7601: * z=6 reserved, currently unused. rubidium@7601: * z=7 Z separator between bridge/tunnel and the things under/above it. rubidium@7601: */ rubidium@7601: enum { rubidium@7601: BB_HEIGHT_UNDER_BRIDGE = 6, ///< Everything that can be built under low bridges, must not exceed this Z height. rubidium@7601: BB_Z_SEPARATOR = 7, ///< Separates the bridge/tunnel from the things under/above it. rubidium@7601: }; rubidium@7601: rubidium@7888: /** Viewport place method (type of highlighted area and placed objects) */ rubidium@7888: enum ViewportPlaceMethod { rubidium@7888: VPM_X_OR_Y = 0, ///< drag in X or Y direction rubidium@7888: VPM_FIX_X = 1, ///< drag only in X axis rubidium@7888: VPM_FIX_Y = 2, ///< drag only in Y axis rubidium@7888: VPM_RAILDIRS = 3, ///< all rail directions rubidium@7888: VPM_X_AND_Y = 4, ///< area of land in X and Y directions rubidium@7888: VPM_X_AND_Y_LIMITED = 5, ///< area of land of limited size rubidium@7888: VPM_SIGNALDIRS = 6, ///< similiar to VMP_RAILDIRS, but with different cursor dominik@1070: }; dominik@1070: rubidium@9147: /** Drag and drop selection process, or, what to do with an area of land when rubidium@9147: * you've selected it. */ rubidium@9147: enum ViewportDragDropSelectionProcess { rubidium@9147: DDSP_DEMOLISH_AREA, rubidium@9147: DDSP_RAISE_AND_LEVEL_AREA, rubidium@9147: DDSP_LOWER_AND_LEVEL_AREA, rubidium@9147: DDSP_LEVEL_AREA, rubidium@9147: DDSP_CREATE_DESERT, rubidium@9147: DDSP_CREATE_ROCKS, rubidium@9147: DDSP_CREATE_WATER, rubidium@9147: DDSP_CREATE_RIVER, rubidium@9147: DDSP_PLANT_TREES, rubidium@9147: DDSP_BUILD_BRIDGE, rubidium@9147: rubidium@9147: /* Rail specific actions */ rubidium@9147: DDSP_PLACE_RAIL_NE, rubidium@9147: DDSP_PLACE_RAIL_NW, rubidium@9147: DDSP_PLACE_AUTORAIL, rubidium@9147: DDSP_BUILD_SIGNALS, rubidium@9147: DDSP_BUILD_STATION, rubidium@9147: DDSP_REMOVE_STATION, rubidium@9147: DDSP_CONVERT_RAIL, rubidium@9147: rubidium@9147: /* Road specific actions */ rubidium@9147: DDSP_PLACE_ROAD_X_DIR, rubidium@9147: DDSP_PLACE_ROAD_Y_DIR, rubidium@9147: DDSP_PLACE_AUTOROAD, rubidium@9147: }; rubidium@9147: rubidium@8224: #endif /* VIEWPORT_TYPE_H */