]> 4ch.mooo.com Git - 16.git/blob - 16/roads/FX.C
wwww
[16.git] / 16 / roads / FX.C
1 #define FX_C\r
2 \r
3 #include <fastgraf.h> /* FOR PALETTE AND KEYHIT FUNCTIONS */\r
4 #include "fx.h"\r
5 #include "roads.h"    /* FOR ANIMATE FUNCTION  */\r
6 \r
7 /* FX.C-specific DEFINITIONS */\r
8 #define FADESTEPS 32     /* Number of gradations in the fade -- KEEP BELOW 256 */\r
9 #define SETDACS_DELAY 0  /* Number of clock ticks to wait between gradations */\r
10 \r
11 /****************************************************************************\\r
12 *                                                                            *\r
13 *  fade_in                                                                   *\r
14 *                                                                            *\r
15 *  Fade one or more DACs from black to their target colors.                  *\r
16 *                                                                            *\r
17 \****************************************************************************/\r
18 \r
19 void fade_in (int DACstart, int DACend)\r
20 {\r
21    register int j, i;\r
22    int k, n, temp;\r
23    char new_palette [VCOLORS*3]; /* Temporarily stores palette */\r
24    char key1, key2; /* USED FOR FOR KEYCHECK */\r
25 \r
26    if (DACend<DACstart) /* PREVENT start/end REVERSALS which could crash us */\r
27    {\r
28       temp=DACstart;\r
29       DACstart=DACend;\r
30       DACend=temp;\r
31    }\r
32 \r
33    for (i = 0; i <= FADESTEPS; i++)\r
34    {\r
35       if (abortfadeonkeyhit)\r
36       {\r
37         fg_intkey (&key1, &key2);\r
38         if (key1+key2>0) break;\r
39       }\r
40 \r
41       for (k=0, n=DACstart*3, j = DACstart; j <= DACend; j++)\r
42       {\r
43          new_palette[k++] = (long) (default_palette[n++] * i) / FADESTEPS;\r
44          new_palette[k++] = (long) (default_palette[n++] * i) / FADESTEPS;\r
45          new_palette[k++] = (long) (default_palette[n++] * i) / FADESTEPS;\r
46       }\r
47 \r
48       fg_setdacs (DACstart, DACend-DACstart+1, new_palette);\r
49       fg_waitfor (SETDACS_DELAY);\r
50       if (animatewhilefading) animate();\r
51    }\r
52 }\r
53 \r
54 /****************************************************************************\\r
55 *                                                                            *\r
56 *  fade_out                                                                  *\r
57 *                                                                            *\r
58 *  Fade one or more DACs from their current colors to black.                 *\r
59 *                                                                            *\r
60 \****************************************************************************/\r
61 \r
62 void fade_out (int DACstart, int DACend)\r
63 {\r
64    register int j, i;\r
65    int k, n, temp;\r
66    char new_palette [VCOLORS*3]; /* Temporarily stores palette */\r
67    char key1, key2; /* USED FOR FOR KEYCHECK */\r
68 \r
69    if (DACend<DACstart) /* PREVENT start/end REVERSALS */\r
70    {\r
71       temp=DACstart;\r
72       DACstart=DACend;\r
73       DACend=temp;\r
74    }\r
75 \r
76    for (i = FADESTEPS; i >= 0; i--)\r
77    {\r
78       if (abortfadeonkeyhit)\r
79       {\r
80         fg_intkey (&key1, &key2);\r
81         if (key1+key2>0) break;\r
82       }\r
83 \r
84       for (k=0, n=DACstart*3, j = DACstart; j <= DACend; j++)\r
85       {\r
86          new_palette[k++] = (long) (default_palette[n++] * i) / FADESTEPS;\r
87          new_palette[k++] = (long) (default_palette[n++] * i) / FADESTEPS;\r
88          new_palette[k++] = (long) (default_palette[n++] * i) / FADESTEPS;\r
89       }\r
90       fg_setdacs (DACstart, DACend-DACstart+1, new_palette);\r
91       fg_waitfor (SETDACS_DELAY);\r
92       if (animatewhilefading) animate();\r
93    }\r
94 }\r
95 \r