0
|
1 |
#ifndef VIEWPORT_H
|
|
2 |
#define VIEWPORT_H
|
|
3 |
|
|
4 |
struct ViewPort {
|
|
5 |
int left,top; // screen coordinates for the viewport
|
|
6 |
int width, height; // screen width/height for the viewport
|
|
7 |
|
|
8 |
int virtual_left, virtual_top; // virtual coordinates
|
|
9 |
int virtual_width, virtual_height; // these are just width << zoom, height << zoom
|
|
10 |
|
|
11 |
byte zoom;
|
|
12 |
};
|
|
13 |
|
|
14 |
/* viewport.c */
|
|
15 |
Point MapXYZToViewport(ViewPort *vp, uint x, uint y, uint z);
|
|
16 |
void AssignWindowViewport(Window *w, int x, int y,
|
|
17 |
int width, int height, uint32 follow_flags, byte zoom);
|
|
18 |
void SetViewportPosition(Window *w, int x, int y);
|
|
19 |
ViewPort *IsPtInWindowViewport(Window *w, int x, int y);
|
|
20 |
Point GetTileBelowCursor();
|
|
21 |
Point GetTileZoomCenter(bool in);
|
|
22 |
void UpdateViewportPosition(Window *w);
|
|
23 |
|
|
24 |
void OffsetGroundSprite(int x, int y);
|
|
25 |
|
|
26 |
void DrawGroundSprite(uint32 image);
|
|
27 |
void DrawGroundSpriteAt(uint32 image, int x, int y, byte z);
|
|
28 |
void AddSortableSpriteToDraw(uint32 image, int x, int y, int w, int h, byte dz, byte z);
|
|
29 |
void *AddStringToDraw(int x, int y, StringID string, uint32 params_1, uint32 params_2);
|
|
30 |
void AddChildSpriteScreen(uint32 image, int x, int y);
|
|
31 |
|
|
32 |
|
|
33 |
void StartSpriteCombine();
|
|
34 |
void EndSpriteCombine();
|
|
35 |
|
|
36 |
void HandleViewportClicked(ViewPort *vp, int x, int y);
|
|
37 |
void PlaceObject();
|
|
38 |
void SetRedErrorSquare(TileIndex tile);
|
|
39 |
void SetTileSelectSize(int w, int h);
|
|
40 |
void SetTileSelectBigSize(int ox, int oy, int sx, int sy);
|
|
41 |
|
|
42 |
void VpStartPlaceSizing(uint tile, int user);
|
|
43 |
void VpStartPreSizing();
|
|
44 |
void VpSetPresizeRange(uint from, uint to);
|
|
45 |
void VpSetPlaceSizingLimit(int limit);
|
|
46 |
|
|
47 |
Vehicle *CheckMouseOverVehicle();
|
|
48 |
|
|
49 |
enum {
|
|
50 |
VPM_X_OR_Y = 0,
|
|
51 |
VPM_FIX_X = 1,
|
|
52 |
VPM_FIX_Y = 2,
|
|
53 |
VPM_RAILDIRS = 3,
|
|
54 |
VPM_X_AND_Y = 4,
|
|
55 |
VPM_X_AND_Y_LIMITED = 5,
|
|
56 |
};
|
|
57 |
|
|
58 |
void VpSelectTilesWithMethod(int x, int y, int method);
|
|
59 |
|
|
60 |
enum {
|
|
61 |
HT_NONE = 0,
|
|
62 |
HT_RECT = 0x80,
|
|
63 |
HT_POINT = 0x40,
|
|
64 |
HT_LINE = 0x20,
|
|
65 |
};
|
|
66 |
|
|
67 |
typedef struct TileHighlightData {
|
|
68 |
Point size;
|
|
69 |
Point outersize;
|
|
70 |
Point pos;
|
|
71 |
Point offs;
|
|
72 |
|
|
73 |
Point new_pos;
|
|
74 |
Point new_size;
|
|
75 |
Point new_outersize;
|
|
76 |
|
|
77 |
Point selend, selstart;
|
|
78 |
|
|
79 |
byte dirty;
|
|
80 |
byte sizelimit;
|
|
81 |
|
|
82 |
byte drawstyle;
|
|
83 |
byte new_drawstyle;
|
|
84 |
byte next_drawstyle;
|
|
85 |
|
|
86 |
byte place_mode;
|
|
87 |
byte window_class;
|
|
88 |
bool make_square_red;
|
|
89 |
uint16 window_number;
|
|
90 |
|
|
91 |
int userdata;
|
|
92 |
TileIndex redsq;
|
|
93 |
} TileHighlightData;
|
|
94 |
|
|
95 |
|
|
96 |
enum AnimCursors {
|
|
97 |
ANIMCURSOR_DEMOLISH = -1,
|
|
98 |
ANIMCURSOR_LOWERLAND = -2,
|
|
99 |
ANIMCURSOR_RAISELAND = -3,
|
|
100 |
ANIMCURSOR_PICKSTATION = -4,
|
|
101 |
ANIMCURSOR_BUILDSIGNALS = -5,
|
|
102 |
};
|
|
103 |
|
|
104 |
// common button handler
|
|
105 |
bool HandlePlacePushButton(Window *w, int widget, uint32 cursor, int mode, PlaceProc *placeproc);
|
|
106 |
|
|
107 |
/* viewport.c */
|
|
108 |
VARDEF ViewPort _viewports[18];
|
|
109 |
VARDEF TileHighlightData _thd;
|
|
110 |
VARDEF uint32 _active_viewports;
|
|
111 |
|
|
112 |
VARDEF Point _tile_fract_coords;
|
|
113 |
|
|
114 |
extern TileHighlightData * const _thd_ptr;
|
|
115 |
|
|
116 |
|
|
117 |
#endif
|