]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blob - qcsrc/common/command/markup.qc
Merge branch 'master' into martin-t/mg-solidpen
[xonotic/xonotic-data.pk3dir.git] / qcsrc / common / command / markup.qc
1 #include "markup.qh"
2 #include "command.qh"
3
4 // =========================================================
5 //  Markup chat characters command code, reworked by Samual
6 //  Last updated: December 28th, 2011
7 // =========================================================
8
9 void GenericCommand_markup_init()
10 {
11         if (markup_init)
12                 return;
13         markup_init = true;
14         int i = 0;
15         markup_from[i] = "&alien"; markup_to[i] = "\x12"; ++i;
16         markup_from[i] = "&:-)"; markup_to[i] = "\x13"; ++i;
17         markup_from[i] = "&:-("; markup_to[i] = "\x14"; ++i;
18         markup_from[i] = "&x-P"; markup_to[i] = "\x15"; ++i;
19         markup_from[i] = "&:-/"; markup_to[i] = "\x16"; ++i;
20         markup_from[i] = "&:-D"; markup_to[i] = "\x17"; ++i;
21         markup_from[i] = "&<<"; markup_to[i] = "\x18"; ++i;
22         markup_from[i] = "&>>"; markup_to[i] = "\x19"; ++i;
23         markup_from[i] = "&dot"; markup_to[i] = "\x1a"; ++i;
24         markup_from[i] = "&^_"; markup_to[i] = "\x1b"; ++i;
25         markup_from[i] = "&ysplat"; markup_to[i] = "\x1c"; ++i;
26         markup_from[i] = "&-]"; markup_to[i] = "\x1d"; ++i;
27         markup_from[i] = "&--"; markup_to[i] = "\x1e"; ++i;
28         markup_from[i] = "&[-"; markup_to[i] = "\x1f"; ++i;
29         markup_from[i] = "&s<"; markup_to[i] = "\x2c"; ++i;
30         markup_from[i] = "&s>"; markup_to[i] = "\x2e"; ++i;
31         markup_from[i] = "&<-"; markup_to[i] = "\x7f"; ++i;
32         markup_from[i] = "&[="; markup_to[i] = "\x80"; ++i;
33         markup_from[i] = "&=="; markup_to[i] = "\x81"; ++i;
34         markup_from[i] = "&=]"; markup_to[i] = "\x82"; ++i;
35         markup_from[i] = "&r!"; markup_to[i] = "\x84"; ++i;
36         markup_from[i] = "&|o|"; markup_to[i] = "\x85"; ++i;
37         markup_from[i] = "&|u|"; markup_to[i] = "\x86"; ++i;
38         markup_from[i] = "&|i|"; markup_to[i] = "\x87"; ++i;
39         markup_from[i] = "&|c|"; markup_to[i] = "\x88"; ++i;
40         markup_from[i] = "&[c]"; markup_to[i] = "\x89"; ++i;
41         markup_from[i] = "&[n]"; markup_to[i] = "\x8a"; ++i;
42         markup_from[i] = "&[]"; markup_to[i] = "\x8b"; ++i;
43         markup_from[i] = "&r?"; markup_to[i] = "\x8c"; ++i;
44         markup_from[i] = "&|>"; markup_to[i] = "\x8d"; ++i;
45         markup_from[i] = "&splat0"; markup_to[i] = "\x8e"; ++i;
46         markup_from[i] = "&splat1"; markup_to[i] = "\x8f"; ++i;
47         markup_from[i] = "&[["; markup_to[i] = "\x90"; ++i;
48         markup_from[i] = "&]]"; markup_to[i] = "\x91"; ++i;
49         markup_from[i] = "&splat2"; markup_to[i] = "\x9a"; ++i;
50         markup_from[i] = "&)("; markup_to[i] = "\x9b"; ++i;
51         markup_from[i] = "&splat3"; markup_to[i] = "\x9c"; ++i;
52         markup_from[i] = "&(."; markup_to[i] = "\x9d"; ++i;
53         markup_from[i] = "&.."; markup_to[i] = "\x9e"; ++i;
54         markup_from[i] = "&.)"; markup_to[i] = "\x9f"; ++i;
55         markup_from[i] = "&<|"; markup_to[i] = "\xff"; ++i;
56 }
57
58 string GenericCommand_markup(string s2)
59 {
60         int red, ccase, i, j;
61         string s, s3;
62
63         GenericCommand_markup_init();
64
65         s = "";
66
67         red = 0;
68         ccase = 0;
69         int len = strlen(s2);
70         for (i = 0; i < len; ++i)
71         {
72                 for(j = 0; j < NUM_MARKUPS; ++j)
73                 {
74                         s3 = substring(s2, i, strlen(markup_from[j]));
75                         if (s3 == markup_from[j])
76                         {
77                                 s = strcat(s, markup_to[j]);
78                                 i += strlen(markup_from[j]) - 1;
79                                 break;
80                         }
81                 }
82
83                 if(j == NUM_MARKUPS)
84                 {
85                         if(substring(s2, i, 2) == "&&")
86                         {
87                                 s = strcat(s, strconv(ccase, red, red, "&"));
88                                 ++i;
89                         }
90                         else if(substring(s2, i, 2) == "&d")
91                         {
92                                 red = 2;
93                                 ccase = 0;
94                                 ++i;
95                         }
96                         else if(substring(s2, i, 2) == "&a")
97                         {
98                                 red = 2;
99                                 ccase = 2;
100                                 ++i;
101                         }
102                         else if(substring(s2, i, 2) == "&n")
103                         {
104                                 red = 0;
105                                 ccase = 0;
106                                 ++i;
107                         }
108                         else
109                                 s = strcat(s, strconv(ccase, red, red, substring(s2, i, 1)));
110                 }
111         }
112
113         return s;
114 }