src/viewport_func.h
author truebrain
Mon, 03 Mar 2008 16:15:24 +0000
branchnoai
changeset 9810 a84fc1be9e3b
parent 9724 b39bc69bb2f2
child 10249 58810805030e
permissions -rw-r--r--
(svn r12327) [NoAI] -Add: GetLastMonth(Production|Transported) (Morloth)
9723
eee46cb39750 (svn r11796) [NoAI] -Sync: with trunk r11502:11795.
rubidium
parents:
diff changeset
     1
/* $Id$ */
eee46cb39750 (svn r11796) [NoAI] -Sync: with trunk r11502:11795.
rubidium
parents:
diff changeset
     2
eee46cb39750 (svn r11796) [NoAI] -Sync: with trunk r11502:11795.
rubidium
parents:
diff changeset
     3
/** @file viewport_func.h Functions related to (drawing on) viewports. */
eee46cb39750 (svn r11796) [NoAI] -Sync: with trunk r11502:11795.
rubidium
parents:
diff changeset
     4
eee46cb39750 (svn r11796) [NoAI] -Sync: with trunk r11502:11795.
rubidium
parents:
diff changeset
     5
#ifndef VIEWPORT_FUNC_H
eee46cb39750 (svn r11796) [NoAI] -Sync: with trunk r11502:11795.
rubidium
parents:
diff changeset
     6
#define VIEWPORT_FUNC_H
eee46cb39750 (svn r11796) [NoAI] -Sync: with trunk r11502:11795.
rubidium
parents:
diff changeset
     7
eee46cb39750 (svn r11796) [NoAI] -Sync: with trunk r11502:11795.
rubidium
parents:
diff changeset
     8
#include "gfx_type.h"
eee46cb39750 (svn r11796) [NoAI] -Sync: with trunk r11502:11795.
rubidium
parents:
diff changeset
     9
#include "viewport_type.h"
eee46cb39750 (svn r11796) [NoAI] -Sync: with trunk r11502:11795.
rubidium
parents:
diff changeset
    10
#include "vehicle_type.h"
9724
b39bc69bb2f2 (svn r12051) [NoAI] -Sync: with trunk (r11795:12050).
rubidium
parents: 9723
diff changeset
    11
#include "strings_type.h"
9723
eee46cb39750 (svn r11796) [NoAI] -Sync: with trunk r11502:11795.
rubidium
parents:
diff changeset
    12
eee46cb39750 (svn r11796) [NoAI] -Sync: with trunk r11502:11795.
rubidium
parents:
diff changeset
    13
void SetSelectionRed(bool);
eee46cb39750 (svn r11796) [NoAI] -Sync: with trunk r11502:11795.
rubidium
parents:
diff changeset
    14
eee46cb39750 (svn r11796) [NoAI] -Sync: with trunk r11502:11795.
rubidium
parents:
diff changeset
    15
void InitViewports();
eee46cb39750 (svn r11796) [NoAI] -Sync: with trunk r11502:11795.
rubidium
parents:
diff changeset
    16
void DeleteWindowViewport(Window *w);
eee46cb39750 (svn r11796) [NoAI] -Sync: with trunk r11502:11795.
rubidium
parents:
diff changeset
    17
void AssignWindowViewport(Window *w, int x, int y, int width, int height, uint32 follow_flags, ZoomLevel zoom);
eee46cb39750 (svn r11796) [NoAI] -Sync: with trunk r11502:11795.
rubidium
parents:
diff changeset
    18
ViewPort *IsPtInWindowViewport(const Window *w, int x, int y);
eee46cb39750 (svn r11796) [NoAI] -Sync: with trunk r11502:11795.
rubidium
parents:
diff changeset
    19
Point GetTileBelowCursor();
eee46cb39750 (svn r11796) [NoAI] -Sync: with trunk r11502:11795.
rubidium
parents:
diff changeset
    20
void UpdateViewportPosition(Window *w);
eee46cb39750 (svn r11796) [NoAI] -Sync: with trunk r11502:11795.
rubidium
parents:
diff changeset
    21
eee46cb39750 (svn r11796) [NoAI] -Sync: with trunk r11502:11795.
rubidium
parents:
diff changeset
    22
bool DoZoomInOutWindow(int how, Window *w);
eee46cb39750 (svn r11796) [NoAI] -Sync: with trunk r11502:11795.
rubidium
parents:
diff changeset
    23
void ZoomInOrOutToCursorWindow(bool in, Window * w);
eee46cb39750 (svn r11796) [NoAI] -Sync: with trunk r11502:11795.
rubidium
parents:
diff changeset
    24
Point GetTileZoomCenterWindow(bool in, Window * w);
eee46cb39750 (svn r11796) [NoAI] -Sync: with trunk r11502:11795.
rubidium
parents:
diff changeset
    25
void HandleZoomMessage(Window *w, const ViewPort *vp, byte widget_zoom_in, byte widget_zoom_out);
eee46cb39750 (svn r11796) [NoAI] -Sync: with trunk r11502:11795.
rubidium
parents:
diff changeset
    26
eee46cb39750 (svn r11796) [NoAI] -Sync: with trunk r11502:11795.
rubidium
parents:
diff changeset
    27
static inline void MaxZoomInOut(int how, Window *w)
eee46cb39750 (svn r11796) [NoAI] -Sync: with trunk r11502:11795.
rubidium
parents:
diff changeset
    28
{
eee46cb39750 (svn r11796) [NoAI] -Sync: with trunk r11502:11795.
rubidium
parents:
diff changeset
    29
	while (DoZoomInOutWindow(how, w)) {};
eee46cb39750 (svn r11796) [NoAI] -Sync: with trunk r11502:11795.
rubidium
parents:
diff changeset
    30
}
eee46cb39750 (svn r11796) [NoAI] -Sync: with trunk r11502:11795.
rubidium
parents:
diff changeset
    31
eee46cb39750 (svn r11796) [NoAI] -Sync: with trunk r11502:11795.
rubidium
parents:
diff changeset
    32
void OffsetGroundSprite(int x, int y);
eee46cb39750 (svn r11796) [NoAI] -Sync: with trunk r11502:11795.
rubidium
parents:
diff changeset
    33
eee46cb39750 (svn r11796) [NoAI] -Sync: with trunk r11502:11795.
rubidium
parents:
diff changeset
    34
void DrawGroundSprite(SpriteID image, SpriteID pal, const SubSprite *sub = NULL);
eee46cb39750 (svn r11796) [NoAI] -Sync: with trunk r11502:11795.
rubidium
parents:
diff changeset
    35
void DrawGroundSpriteAt(SpriteID image, SpriteID pal, int32 x, int32 y, byte z, const SubSprite *sub = NULL);
eee46cb39750 (svn r11796) [NoAI] -Sync: with trunk r11502:11795.
rubidium
parents:
diff changeset
    36
void AddSortableSpriteToDraw(SpriteID image, SpriteID pal, int x, int y, int w, int h, int dz, int z, bool transparent = false, int bb_offset_x = 0, int bb_offset_y = 0, int bb_offset_z = 0, const SubSprite *sub = NULL);
eee46cb39750 (svn r11796) [NoAI] -Sync: with trunk r11502:11795.
rubidium
parents:
diff changeset
    37
void *AddStringToDraw(int x, int y, StringID string, uint64 params_1, uint64 params_2);
eee46cb39750 (svn r11796) [NoAI] -Sync: with trunk r11502:11795.
rubidium
parents:
diff changeset
    38
void AddChildSpriteScreen(SpriteID image, SpriteID pal, int x, int y, bool transparent = false, const SubSprite *sub = NULL);
eee46cb39750 (svn r11796) [NoAI] -Sync: with trunk r11502:11795.
rubidium
parents:
diff changeset
    39
eee46cb39750 (svn r11796) [NoAI] -Sync: with trunk r11502:11795.
rubidium
parents:
diff changeset
    40
eee46cb39750 (svn r11796) [NoAI] -Sync: with trunk r11502:11795.
rubidium
parents:
diff changeset
    41
void StartSpriteCombine();
eee46cb39750 (svn r11796) [NoAI] -Sync: with trunk r11502:11795.
rubidium
parents:
diff changeset
    42
void EndSpriteCombine();
eee46cb39750 (svn r11796) [NoAI] -Sync: with trunk r11502:11795.
rubidium
parents:
diff changeset
    43
eee46cb39750 (svn r11796) [NoAI] -Sync: with trunk r11502:11795.
rubidium
parents:
diff changeset
    44
void HandleViewportClicked(const ViewPort *vp, int x, int y);
eee46cb39750 (svn r11796) [NoAI] -Sync: with trunk r11502:11795.
rubidium
parents:
diff changeset
    45
void PlaceObject();
eee46cb39750 (svn r11796) [NoAI] -Sync: with trunk r11502:11795.
rubidium
parents:
diff changeset
    46
void SetRedErrorSquare(TileIndex tile);
eee46cb39750 (svn r11796) [NoAI] -Sync: with trunk r11502:11795.
rubidium
parents:
diff changeset
    47
void SetTileSelectSize(int w, int h);
eee46cb39750 (svn r11796) [NoAI] -Sync: with trunk r11502:11795.
rubidium
parents:
diff changeset
    48
void SetTileSelectBigSize(int ox, int oy, int sx, int sy);
eee46cb39750 (svn r11796) [NoAI] -Sync: with trunk r11502:11795.
rubidium
parents:
diff changeset
    49
eee46cb39750 (svn r11796) [NoAI] -Sync: with trunk r11502:11795.
rubidium
parents:
diff changeset
    50
Vehicle *CheckMouseOverVehicle();
eee46cb39750 (svn r11796) [NoAI] -Sync: with trunk r11502:11795.
rubidium
parents:
diff changeset
    51
eee46cb39750 (svn r11796) [NoAI] -Sync: with trunk r11502:11795.
rubidium
parents:
diff changeset
    52
void VpSelectTilesWithMethod(int x, int y, ViewportPlaceMethod method);
eee46cb39750 (svn r11796) [NoAI] -Sync: with trunk r11502:11795.
rubidium
parents:
diff changeset
    53
void VpStartPlaceSizing(TileIndex tile, ViewportPlaceMethod method, byte process);
9724
b39bc69bb2f2 (svn r12051) [NoAI] -Sync: with trunk (r11795:12050).
rubidium
parents: 9723
diff changeset
    54
void VpSetPresizeRange(TileIndex from, TileIndex to);
9723
eee46cb39750 (svn r11796) [NoAI] -Sync: with trunk r11502:11795.
rubidium
parents:
diff changeset
    55
void VpSetPlaceSizingLimit(int limit);
eee46cb39750 (svn r11796) [NoAI] -Sync: with trunk r11502:11795.
rubidium
parents:
diff changeset
    56
eee46cb39750 (svn r11796) [NoAI] -Sync: with trunk r11502:11795.
rubidium
parents:
diff changeset
    57
typedef void PlaceProc(TileIndex tile);
eee46cb39750 (svn r11796) [NoAI] -Sync: with trunk r11502:11795.
rubidium
parents:
diff changeset
    58
void PlaceProc_DemolishArea(TileIndex tile);
eee46cb39750 (svn r11796) [NoAI] -Sync: with trunk r11502:11795.
rubidium
parents:
diff changeset
    59
void PlaceProc_LevelLand(TileIndex tile);
eee46cb39750 (svn r11796) [NoAI] -Sync: with trunk r11502:11795.
rubidium
parents:
diff changeset
    60
void PlaceProc_BuyLand(TileIndex tile);
eee46cb39750 (svn r11796) [NoAI] -Sync: with trunk r11502:11795.
rubidium
parents:
diff changeset
    61
bool GUIPlaceProcDragXY(const WindowEvent *e);
eee46cb39750 (svn r11796) [NoAI] -Sync: with trunk r11502:11795.
rubidium
parents:
diff changeset
    62
eee46cb39750 (svn r11796) [NoAI] -Sync: with trunk r11502:11795.
rubidium
parents:
diff changeset
    63
/* common button handler */
eee46cb39750 (svn r11796) [NoAI] -Sync: with trunk r11502:11795.
rubidium
parents:
diff changeset
    64
bool HandlePlacePushButton(Window *w, int widget, CursorID cursor, ViewportHighlightMode mode, PlaceProc *placeproc);
eee46cb39750 (svn r11796) [NoAI] -Sync: with trunk r11502:11795.
rubidium
parents:
diff changeset
    65
eee46cb39750 (svn r11796) [NoAI] -Sync: with trunk r11502:11795.
rubidium
parents:
diff changeset
    66
void ViewportDoDraw(const ViewPort *vp, int left, int top, int right, int bottom);
eee46cb39750 (svn r11796) [NoAI] -Sync: with trunk r11502:11795.
rubidium
parents:
diff changeset
    67
eee46cb39750 (svn r11796) [NoAI] -Sync: with trunk r11502:11795.
rubidium
parents:
diff changeset
    68
void SetObjectToPlaceWnd(CursorID icon, SpriteID pal, ViewportHighlightMode mode, Window *w);
eee46cb39750 (svn r11796) [NoAI] -Sync: with trunk r11502:11795.
rubidium
parents:
diff changeset
    69
void SetObjectToPlace(CursorID icon, SpriteID pal, ViewportHighlightMode mode, WindowClass window_class, WindowNumber window_num);
eee46cb39750 (svn r11796) [NoAI] -Sync: with trunk r11502:11795.
rubidium
parents:
diff changeset
    70
eee46cb39750 (svn r11796) [NoAI] -Sync: with trunk r11502:11795.
rubidium
parents:
diff changeset
    71
void ResetObjectToPlace();
eee46cb39750 (svn r11796) [NoAI] -Sync: with trunk r11502:11795.
rubidium
parents:
diff changeset
    72
eee46cb39750 (svn r11796) [NoAI] -Sync: with trunk r11502:11795.
rubidium
parents:
diff changeset
    73
bool ScrollWindowTo(int x, int y, Window *w, bool instant = false);
eee46cb39750 (svn r11796) [NoAI] -Sync: with trunk r11502:11795.
rubidium
parents:
diff changeset
    74
eee46cb39750 (svn r11796) [NoAI] -Sync: with trunk r11502:11795.
rubidium
parents:
diff changeset
    75
bool ScrollMainWindowToTile(TileIndex tile, bool instant = false);
eee46cb39750 (svn r11796) [NoAI] -Sync: with trunk r11502:11795.
rubidium
parents:
diff changeset
    76
bool ScrollMainWindowTo(int x, int y, bool instant = false);
eee46cb39750 (svn r11796) [NoAI] -Sync: with trunk r11502:11795.
rubidium
parents:
diff changeset
    77
eee46cb39750 (svn r11796) [NoAI] -Sync: with trunk r11502:11795.
rubidium
parents:
diff changeset
    78
extern PlaceProc *_place_proc;
eee46cb39750 (svn r11796) [NoAI] -Sync: with trunk r11502:11795.
rubidium
parents:
diff changeset
    79
extern Point _tile_fract_coords;
eee46cb39750 (svn r11796) [NoAI] -Sync: with trunk r11502:11795.
rubidium
parents:
diff changeset
    80
extern TileHighlightData _thd;
eee46cb39750 (svn r11796) [NoAI] -Sync: with trunk r11502:11795.
rubidium
parents:
diff changeset
    81
eee46cb39750 (svn r11796) [NoAI] -Sync: with trunk r11502:11795.
rubidium
parents:
diff changeset
    82
#endif /* VIEWPORT_FUNC_H */