]> icculus.org git repositories - divverent/nexuiz.git/blob - data/qcsrc/server/centermsg.qc
prevent same map again
[divverent/nexuiz.git] / data / qcsrc / server / centermsg.qc
1 .float centermsg_expire[MAXCENTERMSG];
2 .string centermsg_text[MAXCENTERMSG];
3 .float centermsg_nextdisplay;
4
5 void centermsg_makedirty()
6 {
7         self.centermsg_nextdisplay = time;
8 }
9
10 void centermsg_free(float lineno)
11 {
12         if(self.(centermsg_expire[lineno]) > 0)
13                 strunzone(self.(centermsg_text[lineno]));
14         self.(centermsg_expire[lineno]) = -1;
15         self.(centermsg_text[lineno]) = "";
16         centermsg_makedirty();
17 }
18
19 void centermsg_freefor(entity p, float lineno)
20 {
21         entity oldself;
22         oldself = self;
23         self = p;
24         centermsg_free(lineno);
25         self = oldself;
26 }
27
28 void centermsg_set(float lineno, string text)
29 {
30         centermsg_free(lineno);
31         self.(centermsg_expire[lineno]) = time + self.cvar_scr_centertime;
32         self.(centermsg_text[lineno]) = strzone(text);
33         centermsg_makedirty();
34 }
35
36 void centermsg_setexpire(float lineno, string text, float expire)
37 {
38         centermsg_free(lineno);
39         self.(centermsg_expire[lineno]) = time + self.cvar_scr_centertime * expire;
40         self.(centermsg_text[lineno]) = strzone(text);
41         centermsg_makedirty();
42 }
43
44 void centermsg_setfor(entity p, float lineno, string text)
45 {
46         entity oldself;
47         oldself = self;
48         self = p;
49         centermsg_set(lineno, text);
50         self = oldself;
51 }
52
53 float centermsg_checkexpire(float lineno)
54 {
55         if(self.(centermsg_expire[lineno]) >= 0)
56         {
57                 if(self.(centermsg_expire[lineno]) < time)
58                 {
59                         centermsg_free(lineno);
60                         return FALSE;
61                 }
62                 return TRUE;
63         }
64         return FALSE;
65 }
66
67 void centermsg_do()
68 {
69         float i;
70         float found;
71         string out;
72         found = 0;
73
74         if(self.cvar_scr_centertime)
75                 self.centermsg_nextdisplay = time + self.cvar_scr_centertime * 0.8;
76
77         for(i = 0; i < MAXCENTERMSG; ++i)
78                 if(centermsg_checkexpire(i))
79                         found = 1;
80
81         if(!found)
82                 return;
83
84         out = "\n\n\n\n\n\n\n\n\n\n\n\n\n";
85         for(i = 0; i < MAXCENTERMSG; ++i)
86         {
87                 out = strcat(out, "^7");
88                 if(self.centermsg_expire[i] >= 0)
89                         out = strcat(out, self.(centermsg_text[i]));
90                 out = strcat(out, "\n");
91         }
92         centerprint(self, out);
93 }
94
95 void centermsg_check()
96 {
97         if(clienttype(self) != CLIENTTYPE_REAL)
98                 return;
99         if(self.centermsg_nextdisplay && self.centermsg_nextdisplay <= time)
100                 centermsg_do();
101 }
102
103 void centermsg_reset()
104 {
105         float i;
106         self.centermsg_nextdisplay = 0;
107         for(i = 0; i < MAXCENTERMSG; ++i)
108                 centermsg_free(i);
109         centerprint(self, "");
110 }
111
112 void centermsg_setall(string s)
113 {
114         float i;
115         centerprint(self, s);
116         self.centermsg_nextdisplay = 0;
117         for(i = 0; i < MAXCENTERMSG; ++i)
118                 centermsg_free(i);
119 }
120
121 void centermsg_setallfor(entity p, string text)
122 {
123         entity oldself;
124         oldself = self;
125         self = p;
126         centermsg_setall(text);
127         self = oldself;
128 }
129