rnd-20100315-3-src
[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 ShowPanel;
11 int ExplosionShake;
12 boolean NoDisplayFlag;
13
14 long DisplayMinX, DisplayMaxX, DisplayWidth;
15 long DisplayMinY, DisplayMaxY, DisplayHeight;
16
17
18 void subDisplayLevel()
19 {
20   if (NoDisplayFlag || ! LevelLoaded)
21     return;
22
23   DisplayLevel();
24 }
25
26 void ScrollTo(int X, int Y)
27 {
28   long oldX, oldY;
29
30 #if 0
31   printf("::: Display.c: ScrollTo(): %d, %d\n", X, Y);
32 #endif
33
34   if (NoDisplayFlag)
35     return;
36
37   oldX = ScrollX;
38   oldY = ScrollY;
39   X = ScrollDelta * (X / ScrollDelta);
40   X = Max(X, ScrollMinX);
41   X = Min(X, ScrollMaxX);
42   Y = ScrollDelta * (Y / ScrollDelta);
43   Y = Max(Y, ScrollMinY);
44   Y = Min(Y, ScrollMaxY);
45   //  ScrollX = X
46   //  ScrollY = Y
47
48   Stage.ScrollTo(X, Y);
49 }
50
51 void ScrollTowards(int X, int Y)
52 {
53   long oldX, oldY;
54
55   if (NoDisplayFlag)
56     return;
57
58   oldX = ScrollX;
59   oldY = ScrollY;
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   //  ScrollX = X
67   //  ScrollY = Y
68
69   Stage.ScrollTowards(X, Y, 2 * Stretch * ZoomFactor);
70 }
71
72 void SoftScrollTo(int X, int Y, long TimeMS, int FPS)
73 {
74   long oldX, oldY;
75
76   if (NoDisplayFlag)
77     return;
78
79   oldX = ScrollX;
80   oldY = ScrollY;
81   X = ScrollDelta * (X / ScrollDelta);
82   X = Max(X, ScrollMinX);
83   X = Min(X, ScrollMaxX);
84   Y = ScrollDelta * (Y / ScrollDelta);
85   Y = Max(Y, ScrollMinY);
86   Y = Min(Y, ScrollMaxY);
87   //  ScrollX = X
88   //  ScrollY = Y
89
90   Stage.SoftScrollTo(X, Y, TimeMS, FPS);
91 }