ae9d26ea9c41a348b6961b4b3d3d6fcc1a45ad89
[rocksndiamonds.git] / src / game_sp / Display.c
1 // ----------------------------------------------------------------------------
2 // Display.c
3 // ----------------------------------------------------------------------------
4
5 #include "Display.h"
6
7
8 int ScreenScrollXPos, ScreenScrollYPos;
9
10 int ExplosionShake, ExplosionShakeMurphy;
11 boolean NoDisplayFlag;
12
13 int DisplayMinX, DisplayMaxX;
14 int DisplayMinY, DisplayMaxY;
15
16
17 void subDisplayLevel()
18 {
19   if (NoDisplayFlag || ! LevelLoaded)
20     return;
21
22   DisplayLevel();
23 }
24
25 void ScrollTo(int X, int Y)
26 {
27   if (NoDisplayFlag)
28     return;
29
30   X = ScrollDelta * (X / ScrollDelta);
31   X = Max(X, ScrollMinX);
32   X = Min(X, ScrollMaxX);
33   Y = ScrollDelta * (Y / ScrollDelta);
34   Y = Max(Y, ScrollMinY);
35   Y = Min(Y, ScrollMaxY);
36
37   DDScrollBuffer_ScrollTo(X, Y);
38 }
39
40 void ScrollTowards(int X, int Y)
41 {
42   if (NoDisplayFlag)
43     return;
44
45   X = ScrollDelta * (X / ScrollDelta);
46   X = Max(X, ScrollMinX);
47   X = Min(X, ScrollMaxX);
48   Y = ScrollDelta * (Y / ScrollDelta);
49   Y = Max(Y, ScrollMinY);
50   Y = Min(Y, ScrollMaxY);
51
52   DDScrollBuffer_ScrollTowards(X, Y, 2 * ZoomFactor);
53 }
54
55 void SoftScrollTo(int X, int Y, int TimeMS, int FPS)
56 {
57   if (NoDisplayFlag)
58     return;
59
60   X = ScrollDelta * (X / ScrollDelta);
61   X = Max(X, ScrollMinX);
62   X = Min(X, ScrollMaxX);
63   Y = ScrollDelta * (Y / ScrollDelta);
64   Y = Max(Y, ScrollMinY);
65   Y = Min(Y, ScrollMaxY);
66
67   DDScrollBuffer_SoftScrollTo(X, Y, TimeMS, FPS);
68 }