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