]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blob - qcsrc/menu/xonotic/credits.qc
Fix #2182 "Untranslatable strings in hudpanel_pressedkeys"
[xonotic/xonotic-data.pk3dir.git] / qcsrc / menu / xonotic / credits.qc
1 #include "credits.qh"
2
3 #define CREDITS(TITLE, FUNCTION, PERSON, PERSON_, NL) \
4         TITLE(_("Core Team")) \
5                 PERSON(Rudolf "divVerent" Polzer) \
6                 PERSON(Ant "Antibody" Zucaro) \
7                 PERSON(Marvin "Mirio" Beck) \
8                 PERSON(Merlijn Hofstra) \
9                 PERSON(Peter "Morphed" Pielak) \
10                 PERSON(Ruszkai "CuBe0wL" Ákos) \
11                 PERSON(Samual "Ares" Lenks) \
12                 PERSON(TimePath) \
13                 PERSON(Tyler "-z-" Mulligan) \
14                 PERSON(Zac "Mario" Jardine) \
15         NL() \
16         TITLE(_("Extended Team")) \
17                 PERSON(AllieWay) \
18                 PERSON(Antonio "terencehill" Piu) \
19                 PERSON(Archer) \
20                 PERSON(BuddyFriendGuy) \
21                 PERSON(Debugger) \
22                 PERSON(Diomedes) \
23                 PERSON(Freddy) \
24                 PERSON(GATTS) \
25                 PERSON(Halogene) \
26                 PERSON(IDWMaster) \
27                 PERSON(Jan "zykure" Behrens) \
28                 PERSON(JH0nny) \
29                 PERSON(Jubilant) \
30                 PERSON(Łukasz "kuniu the frogg" Polek) \
31                 PERSON(martin-t) \
32                 PERSON(Matthias "matthiaskrgr" Krüger) \
33                 PERSON(Mattia "Melanosuchus" Basaglia) \
34                 PERSON(MrBougo) \
35                 PERSON(Nick "bitbomb" Lucca) \
36                 PERSON(nilyt/nyov) \
37                 PERSON(Nitroxis) \
38                 PERSON(packer) \
39                 PERSON(Pearce "theShadow" Michal) \
40                 PERSON(Rasmus "FruitieX" Eskola) \
41                 PERSON(s1lence) \
42                 PERSON(Severin "sev" Meyer) \
43                 PERSON(Soelen) \
44                 PERSON(Sydes) \
45                 PERSON(unfa) \
46         NL() \
47         NL() \
48         FUNCTION(_("Website")) \
49                 PERSON(Ant "Antibody" Zucaro (web)) \
50                 PERSON(Merlijn Hofstra) \
51                 PERSON(Tyler "-z-" Mulligan (web / game)) \
52         NL() \
53         FUNCTION(_("Stats")) \
54                 PERSON(Ant "Antibody" Zucaro) \
55                 PERSON(Jan "zykure" Behrens) \
56         NL() \
57         FUNCTION(_("Art")) \
58                 PERSON(Severin "sev" Meyer) \
59                 PERSON(Sahil "DiaboliK" Singhal) \
60                 PERSON(Peter "Morphed" Pielak) \
61                 PERSON(Sam "LJFHutch" Hutchinson) \
62                 PERSON(Pearce "theShadow" Michal) \
63                 PERSON(KingPimpCommander) \
64         NL() \
65         FUNCTION(_("Animation")) \
66                 PERSON(Sahil "DiaboliK" Singhal) \
67                 PERSON(nifrek) \
68         NL() \
69         FUNCTION(_("Level Design")) \
70                 PERSON(Amadeusz "amade/proraide" Sławiński) \
71                 PERSON(Ben "MooKow" Banker) \
72                 PERSON(Cortez) \
73                 PERSON(Cuinn "Cuinnton" Herrick) \
74                 PERSON(Debugger) \
75                 PERSON(Hugo "Calinou" Locurcio) \
76                 PERSON(Jakob "tZork" Markström Gröhn) \
77                 PERSON(Konrad "Justin" Slawinski) \
78                 PERSON(Maddin) \
79                 PERSON(L0) \
80                 PERSON(Łukasz "kuniu the frogg" Polek) \
81                 PERSON(Maik "SavageX" Merten) \
82                 PERSON(Marvin "Mirio" Beck) \
83                 PERSON(MintOX) \
84                 PERSON(packer) \
85                 PERSON(Pearce "theShadow" Michal) \
86                 PERSON(Rasmus "FruitieX" Eskola) \
87                 PERSON(Ruszkai "CuBe0wL" Ákos) \
88                 PERSON(Severin "sev" Meyer) \
89                 PERSON(ShadoW) \
90                 PERSON(t0uYK8Ne) \
91         NL() \
92         FUNCTION(_("Music / Sound FX")) \
93                 PERSON(AquaNova (Archer)) \
94                 PERSON(blkrbt) \
95                 PERSON(chooksta) \
96                 PERSON(Independent.nu) \
97                 PERSON(Lea "TheAudioMonkey" Edwards) \
98                 PERSON([master]mind) \
99                 PERSON(Merlijn Hofstra) \
100                 PERSON(Mick Rippon) \
101                 PERSON(Nick "bitbomb" Lucca) \
102                 PERSON(remaxim) \
103                 PERSON(Saulo "mand1nga" Gil) \
104                 PERSON({SC0RP} - Ian "ID" Dorrell) \
105                 PERSON(Stephan) \
106                 PERSON(unfa) \
107         NL() \
108         FUNCTION(_("Game Code")) \
109                 PERSON(Samual "Ares" Lenks) \
110                 PERSON(Rudolf "divVerent" Polzer) \
111                 PERSON(Jakob "tZork" Markström Gröhn) \
112                 PERSON(Rasmus "FruitieX" Eskola) \
113                 PERSON(TimePath) \
114                 PERSON(Zac "Mario" Jardine) \
115         NL() \
116         FUNCTION(_("Marketing / PR")) \
117                 PERSON(Tyler "-z-" Mulligan) \
118                 PERSON(Ruszkai "CuBe0wL" Ákos) \
119                 PERSON(Samual "Ares" Lenks) \
120                 PERSON(Saulo "mand1nga" Gil) \
121         NL() \
122         FUNCTION(_("Legal")) \
123                 PERSON(Rudolf "divVerent" Polzer) \
124                 PERSON(Merlijn Hofstra) \
125         NL() \
126         NL() \
127         TITLE(_("Game Engine")) \
128                 FUNCTION("DarkPlaces") \
129                         PERSON(Forest "LordHavoc" Hale) \
130                 NL() \
131                 FUNCTION(_("Engine Additions")) \
132                         PERSON(Rudolf "divVerent" Polzer) \
133                         PERSON(Samual "Ares" Lenks) \
134                 NL() \
135         NL() \
136         TITLE(_("Compiler")) \
137                 FUNCTION("GMQCC") \
138                         PERSON(Wolfgang "Blub\0" Bumiller) \
139                         PERSON(Dale "graphitemaster" Weiler) \
140                 NL() \
141         NL() \
142         TITLE(_("Other Active Contributors")) \
143                 PERSON(Jeff) \
144                 PERSON(Lyberta) \
145                 PERSON(Mircea "Taoki" Kitsune) \
146                 PERSON(Penguinum) \
147         NL() \
148         NL() \
149         TITLE(_("Translators")) \
150                 NL() \
151                 FUNCTION(_("Asturian")) \
152                         PERSON(Llumex03) \
153                         PERSON(Tornes "Tornes.Llume" Ḷḷume) \
154                         PERSON(Ximielga) \
155                 NL() \
156                 FUNCTION(_("Belarusian")) \
157                         PERSON(Mihail "meequz" Varantsou) \
158                 NL() \
159                 FUNCTION(_("Bulgarian")) \
160                         PERSON(Alexander "alex4o" Bonin) \
161                         PERSON(ifohancroft) \
162                         PERSON(lokster) \
163                         PERSON(set_killer) \
164                         PERSON(ubone) \
165                 NL() \
166                 FUNCTION(_("Chinese (China)")) \
167                         PERSON(Antonidas) \
168                         PERSON(Armcoon) \
169                         PERSON(kalawore) \
170                         PERSON(sapphireliu) \
171                 NL() \
172                 FUNCTION(_("Chinese (Taiwan)")) \
173                         PERSON(Alisha) \
174                         PERSON(Armcoon) \
175                         PERSON(Jeff "s8321414" Huang) \
176                 NL() \
177                 FUNCTION(_("Cornish")) \
178                         PERSON(Nicky "nrowe" Rowe) \
179                 NL() \
180                 FUNCTION(_("Czech")) \
181                         PERSON(shogun assassin/woky) \
182                         PERSON(Superovoce) \
183                         PERSON(Tomáš "CZHeron" Volavka) \
184                 NL() \
185                 FUNCTION(_("Dutch")) \
186                         PERSON(Alexander "freefang" van Dam) \
187                         PERSON(Joeke "Mappack" de Graaf) \
188                         PERSON(Jonathan "Jonakeys" van der Steege) \
189                         PERSON(PinkRobot) \
190                         PERSON(vegiburger) \
191                 NL() \
192                 FUNCTION(_("English (Australia)")) \
193                         PERSON(Laurene "sunflowers" Albrand) \
194                         PERSON(Stuart "Cefiar" Young) \
195                         PERSON(Zac "Mario" Jardine) \
196                 NL() \
197                 FUNCTION(_("Finnish")) \
198                         PERSON(Jonas "PowaTree" Sahlberg) \
199                         PERSON(Henry "Exitium" Sanmark) \
200                         PERSON(Rasmus "FruitieX" Eskola) \
201                 NL() \
202                 FUNCTION(_("French")) \
203                         PERSON(Hugo "Calinou" Locurcio) \
204                         PERSON(Kim "coughingmouse" Lee) \
205                         PERSON(Maxime "Taximus" Paradis) \
206                         PERSON(RedGuff) \
207                         PERSON(Thomas "illwieckz" Debesse) \
208                         PERSON(Yannick "SpiKe" Le Guen) \
209                 NL() \
210                 FUNCTION(_("German")) \
211                         PERSON(Brot) \
212                         PERSON(cvcxc) \
213                         PERSON(Erik "Ablu" Schilling) \
214                         PERSON(Jope "Sless" Withers) \
215                         PERSON(Marvin "Mirio" Beck) \
216                         PERSON(Paul "Snapper") \
217                         PERSON(Rudolf "divVerent" Polzer) \
218                         PERSON(Wuzzy) \
219                         PERSON(Yepoleb) \
220                 NL() \
221                 FUNCTION(_("Greek")) \
222                         PERSON_("Γιάννης \"Evropi\" Ανθυμίδης") \
223                         PERSON(Konstantinos "LDinos" Mihalenas) \
224                         PERSON(Savoritias) \
225                         PERSON(Vindex) \
226                 NL() \
227                 FUNCTION(_("Hungarian")) \
228                         PERSON(Ruszkai "CuBe0wL" Ákos) \
229                         PERSON(xaN1C4n3) \
230                 NL() \
231                 FUNCTION(_("Irish")) \
232                         PERSON(Kevin "kscanne" Scannell) \
233                 NL() \
234                 FUNCTION(_("Italian")) \
235                         PERSON(Antonio "terencehill" Piu) \
236                         PERSON(Felice "MaidenBeast" Sallustio) \
237                         PERSON(stdi) \
238                         PERSON(XCostaX) \
239                 NL() \
240                 FUNCTION(_("Kazakh")) \
241                         PERSON("Артем "bystrov.arterm" Быстров") \
242                 NL() \
243                 FUNCTION(_("Korean")) \
244                         PERSON(Jisoo "s6e9x" Lim) \
245                         PERSON(Kim "coughingmouse" Lee) \
246                 NL() \
247                 FUNCTION(_("Polish")) \
248                         PERSON(4m) \
249                         PERSON(Alex "tiprogrammierer.alex" Progger) \
250                         PERSON(Amadeusz "amade/proraide" Sławiński) \
251                         PERSON(Artur "artur9010" Motyka) \
252                         PERSON(Jakub "KubeQ11" Pędziszewski) \
253                         PERSON(Kriss7475) \
254                 NL() \
255                 FUNCTION(_("Portuguese")) \
256                         PERSON(Ivan Paulos "greylica" Tomé) \
257                         PERSON(Jean Trindade "Muleke_Trairao" Pereira) \
258                         PERSON(Ricardo Manuel "Hellgardia" da Cruz Coelho da Silva) \
259                         PERSON(xXxCHAOTICxXx) \
260                 NL() \
261                 FUNCTION(_("Romanian")) \
262                         PERSON(Adrian-Ciprian "adrian.tinjala" Tînjală) \
263                         PERSON(BusterDBK) \
264                         PERSON(Mircea "Taoki" Kitsune) \
265                         PERSON(Sorin "unic_sorin" Botirla) \
266                         PERSON(Tudor "TropiKo" Ionel) \
267                 NL() \
268                 FUNCTION(_("Russian")) \
269                         PERSON(Alex "alextalker7" Talker) \
270                         PERSON(Alexandr "zrg") \
271                         PERSON(Andrei "adem4ik" Stepanov) \
272                         PERSON(Andrey "dekrY" P.) \
273                         PERSON(gravicappa) \
274                         PERSON(Hot Dog) \
275                         PERSON(Lord Canistra) \
276                         PERSON(Nikoli) \
277                         PERSON(Sergej "Clearness High" Lutsyk) \
278                 NL() \
279                 FUNCTION(_("Scottish Gaelic")) \
280                         PERSON_("GunChleoc") \
281                 NL() \
282                 FUNCTION(_("Serbian")) \
283                         PERSON_("Саша \"salepetronije\" Петровић") \
284                         PERSON(Marko M. Kostić) \
285                         PERSON(Pendulla) \
286                         PERSON(Rafael "Ristovski") \
287                 NL() \
288                 FUNCTION(_("Spanish")) \
289                         PERSON_("0000simon") \
290                         PERSON(Alan "aagp" Garcia) \
291                         PERSON(Ari_tent) \
292                         PERSON(brunodeleo) \
293                         PERSON(Kammy) \
294                         PERSON(roader_gentoo) \
295                         PERSON(Rodrigo Mouton Laudin) \
296                         PERSON(SouL) \
297                         PERSON(Starfire24680) \
298                 NL() \
299                 FUNCTION(_("Swedish")) \
300                         PERSON(Karl-Oskar "machine" Rikås) \
301                         PERSON(marcus256) \
302                 NL() \
303                 FUNCTION(_("Ukrainian")) \
304                         PERSON(Dmitro "Gamebot" Sokhin) \
305                         PERSON(Oleh "BlaXpirit" Prypin) \
306                         PERSON(Vasyl "Harmata" Melnyk) \
307                         PERSON(Yuriy "herrniemand" Ackermann) \
308                 NL() \
309         NL() \
310         TITLE(_("Past Contributors")) \
311                 PERSON(Akari) \
312                 PERSON(Alexander "naryl" Suhoverhov) \
313                 PERSON(Alexander "motorsep" Zubov) \
314                 PERSON(Amos "torus" Dudley) \
315                 PERSON(Andreas "Black" Kirsch) \
316                 PERSON(Attila "WW3" Houtkooper) \
317                 PERSON(BigMac) \
318                 PERSON(Braden "meoblast001" Walters) \
319                 PERSON(Brain Younds) \
320                 PERSON(Chris "amethyst7" Matz) \
321                 PERSON(Christian Ice) \
322                 PERSON(Clinton "Kaziganthe" Freeman) \
323                 PERSON(Dan "Digger" Korostelev) \
324                 PERSON(Dan "Wazat" Hale) \
325                 PERSON(Dokujisan) \
326                 PERSON(Donkey) \
327                 PERSON(dstrek) \
328                 PERSON(Dustin Geeraert) \
329                 PERSON(Edgenetwork) \
330                 PERSON(Edward "Ed" Holness) \
331                 PERSON(Eric "Munyul Verminard" Sambach) \
332                 PERSON(Erik "Ablu" Schilling) \
333                 PERSON(Fabien "H. Reaper" Tschirhart) \
334                 PERSON(Florian Paul "lda17h" Schmidt) \
335                 PERSON(FrikaC) \
336                 PERSON(Garth "Zombie" Hendy) \
337                 PERSON(Gerd "Elysis" Raudenbusch) \
338                 PERSON(Gottfried "Toddd" Hofmann) \
339                 PERSON(Henning "Tymo" Janssen) \
340                 PERSON(Innovati) \
341                 PERSON(Jitspoe) \
342                 PERSON(Jody Gallagher) \
343                 PERSON(Jope "Sless" Withers) \
344                 PERSON(Juergen "LowDragon" Timm) \
345                 PERSON(KadaverJack) \
346                 PERSON(Kevin "Tyrann" Shanahan) \
347                 PERSON(Kristian "morfar" Johansson) \
348                 PERSON(Kurt Dereli) \
349                 PERSON(lcatlnx) \
350                 PERSON(Lee David Ash) \
351                 PERSON(Lee Vermeulen) \
352                 PERSON(leileilol) \
353                 PERSON(magorian) \
354                 PERSON(Marius "GreEn`mArine" Shekow) \
355                 PERSON(Marko "Urre" Permanto) \
356                 PERSON(Mathieu "Elric" Olivier) \
357                 PERSON(Mattrew "Tronyn" Rye) \
358                 PERSON(MauveBib) \
359                 PERSON(Mephisto) \
360                 PERSON(michaelb) \
361                 PERSON(Michael "Tenshihan" Quinn) \
362                 PERSON(Mepper) \
363                 PERSON(Munyul) \
364                 PERSON(Netzwerg) \
365                 PERSON(NoelCower) \
366                 PERSON(Parapraxis) \
367                 PERSON(parasti) \
368                 PERSON(Paul "Strahlemann" Evers) \
369                 PERSON(Paul Scott) \
370                 PERSON(Petithomme) \
371                 PERSON(PlasmaSheep) \
372                 PERSON(Przemysław "atheros" Grzywacz) \
373                 PERSON(Q1 Retexturing Project) \
374                 PERSON(Qantourisc) \
375                 PERSON(Oleh "BlaXpirit" Prypin) \
376                 PERSON(Rick "Rat" Kelley) \
377                 PERSON(Robert "ai" Kuroto) \
378                 PERSON(Ronan) \
379                 PERSON(Sajt) \
380                 PERSON(Saulo "mand1nga" Gil) \
381                 PERSON(Shaggy) \
382                 PERSON(Shank) \
383                 PERSON(Simon O’Callaghan) \
384                 PERSON(SomeGuy) \
385                 PERSON(SoulKeeper_p) \
386                 PERSON(Spike) \
387                 PERSON(Spirit) \
388                 PERSON(Stephan "esteel" Stahl) \
389                 PERSON(Steve Vermeulen) \
390                 PERSON(Supajoe) \
391                 PERSON(Tei) \
392                 PERSON(The player with the unnecessarily long name) \
393                 PERSON(Tomaz) \
394                 PERSON(Ulrich Galbraith) \
395                 PERSON(Vortex) \
396                 PERSON(William Libert) \
397                 PERSON(William "Willis" Weilep) \
398                 PERSON(Yves "EviLair" Allaire) \
399                 PERSON(Zenex) \
400                 /**/
401
402 int credits_get()
403 {
404         int n = buf_create();
405         #define CREDITS_TITLE(t) bufstr_add(n, strcat("**", t), 0);
406         #define CREDITS_FUNCTION(f) bufstr_add(n, strcat("*", f), 0);
407         #define CREDITS_PERSON(p) bufstr_add(n, p, 0);
408         #define _CREDITS_PERSON(p) CREDITS_PERSON(#p)
409         #define CREDITS_NL() bufstr_add(n, "", 0);
410     CREDITS(CREDITS_TITLE, CREDITS_FUNCTION, _CREDITS_PERSON, CREDITS_PERSON, CREDITS_NL)
411         #undef CREDITS_TITLE
412         #undef CREDITS_FUNCTION
413         #undef CREDITS_PERSON
414         #undef _CREDITS_PERSON
415         #undef CREDITS_NL
416         return n;
417 }
418
419 #undef CREDITS
420
421 entity makeXonoticCreditsList()
422 {
423         entity me;
424         me = NEW(XonoticCreditsList);
425         me.configureXonoticCreditsList(me);
426         return me;
427 }
428 void XonoticCreditsList_configureXonoticCreditsList(entity me)
429 {
430         me.configureXonoticListBox(me);
431     me.bufferIndex = credits_get();
432         me.nItems = buf_getsize(me.bufferIndex);
433 }
434 void XonoticCreditsList_destroy(entity me)
435 {
436         buf_del(me.bufferIndex);
437 }
438 void XonoticCreditsList_draw(entity me)
439 {
440         if(me.scrolling)
441         {
442                 me.scrollPos = bound(0, (time - me.scrolling) * me.itemHeight, me.nItems * me.itemHeight - 1);
443                 me.scrollPosTarget = me.scrollPos;
444         }
445         SUPER(XonoticCreditsList).draw(me);
446 }
447 void XonoticCreditsList_resizeNotify(entity me, vector relOrigin, vector relSize, vector absOrigin, vector absSize)
448 {
449         SUPER(XonoticCreditsList).resizeNotify(me, relOrigin, relSize, absOrigin, absSize);
450
451         me.realFontSize_y = me.fontSize / (absSize.y * me.itemHeight);
452         me.realFontSize_x = me.fontSize / (absSize.x * (1 - me.controlWidth));
453         me.realUpperMargin = 0.5 * (1 - me.realFontSize.y);
454 }
455 void XonoticCreditsList_drawListBoxItem(entity me, int i, vector absSize, bool isSelected, bool isFocused)
456 {
457         string s;
458         float theAlpha;
459         vector theColor;
460
461         s = bufstr_get(me.bufferIndex, i);
462
463         if(substring(s, 0, 2) == "**")
464         {
465                 s = substring(s, 2, strlen(s) - 2);
466                 theColor = SKINCOLOR_CREDITS_TITLE;
467                 theAlpha = SKINALPHA_CREDITS_TITLE;
468         }
469         else if(substring(s, 0, 1) == "*")
470         {
471                 s = substring(s, 1, strlen(s) - 1);
472                 theColor = SKINCOLOR_CREDITS_FUNCTION;
473                 theAlpha = SKINALPHA_CREDITS_FUNCTION;
474         }
475         else
476         {
477                 theColor = SKINCOLOR_CREDITS_PERSON;
478                 theAlpha = SKINALPHA_CREDITS_PERSON;
479         }
480
481         draw_CenterText(me.realUpperMargin * eY + 0.5 * eX, s, me.realFontSize, theColor, theAlpha, 0);
482 }
483
484 float XonoticCreditsList_keyDown(entity me, float key, float ascii, float shift)
485 {
486         me.scrolling = 0;
487         return SUPER(XonoticCreditsList).keyDown(me, key, ascii, shift);
488 }