Add TheAudioMonkey to credits
[xonotic/xonotic-data.pk3dir.git] / qcsrc / menu / xonotic / credits.qc
index d7e17f5..8546ac8 100644 (file)
-#ifndef CREDITS_H
-#define CREDITS_H
-#include "listbox.qc"
-CLASS(XonoticCreditsList, XonoticListBox)
-       METHOD(XonoticCreditsList, configureXonoticCreditsList, void(entity))
-       ATTRIB(XonoticCreditsList, rowsPerItem, float, 1)
-       METHOD(XonoticCreditsList, draw, void(entity))
-       METHOD(XonoticCreditsList, drawListBoxItem, void(entity, float, vector, float))
-       METHOD(XonoticCreditsList, resizeNotify, void(entity, vector, vector, vector, vector))
-       METHOD(XonoticCreditsList, keyDown, float(entity, float, float, float))
-       METHOD(XonoticCreditsList, destroy, void(entity))
+#include "credits.qh"
 
-       ATTRIB(XonoticCreditsList, realFontSize, vector, '0 0 0')
-       ATTRIB(XonoticCreditsList, realUpperMargin, float, 0)
-       ATTRIB(XonoticCreditsList, bufferIndex, float, 0)
-       ATTRIB(XonoticCreditsList, scrolling, float, 0)
+#define CREDITS(TITLE, FUNCTION, PERSON, PERSON_, NL) \
+       TITLE(_("Core Team")) \
+               PERSON(Rudolf "divVerent" Polzer) \
+               PERSON(Ant "Antibody" Zucaro) \
+               PERSON(Marvin "Mirio" Beck) \
+               PERSON(Merlijn Hofstra) \
+               PERSON(Peter "Morphed" Pielak) \
+               PERSON(Ruszkai "CuBe0wL" Ákos) \
+               PERSON(Samual "Ares" Lenks) \
+               PERSON(TimePath) \
+               PERSON(Tyler "-z-" Mulligan) \
+               PERSON(Zac "Mario" Jardine) \
+       NL() \
+       TITLE(_("Extended Team")) \
+               PERSON(AllieWay) \
+               PERSON(Antonio "terencehill" Piu) \
+               PERSON(Archer) \
+               PERSON(BuddyFriendGuy) \
+               PERSON(Debugger) \
+               PERSON(Diomedes) \
+               PERSON(Freddy) \
+               PERSON(GATTS) \
+               PERSON(Halogene) \
+               PERSON(IDWMaster) \
+               PERSON(Jan "zykure" Behrens) \
+               PERSON(JH0nny) \
+               PERSON(Jubilant) \
+               PERSON(Łukasz "kuniu the frogg" Polek) \
+               PERSON(martin-t) \
+               PERSON(Matthias "matthiaskrgr" Krüger) \
+               PERSON(Mattia "Melanosuchus" Basaglia) \
+               PERSON(MrBougo) \
+               PERSON(Nick "bitbomb" Lucca) \
+               PERSON(nilyt/nyov) \
+               PERSON(Nitroxis) \
+               PERSON(packer) \
+               PERSON(Pearce "theShadow" Michal) \
+               PERSON(Rasmus "FruitieX" Eskola) \
+               PERSON(s1lence) \
+               PERSON(Severin "sev" Meyer) \
+               PERSON(Soelen) \
+               PERSON(Sydes) \
+               PERSON(unfa) \
+       NL() \
+       NL() \
+       FUNCTION(_("Website")) \
+               PERSON(Ant "Antibody" Zucaro (web)) \
+               PERSON(Merlijn Hofstra) \
+               PERSON(Tyler "-z-" Mulligan (web / game)) \
+       NL() \
+       FUNCTION(_("Stats")) \
+               PERSON(Ant "Antibody" Zucaro) \
+               PERSON(Jan "zykure" Behrens) \
+       NL() \
+       FUNCTION(_("Art")) \
+               PERSON(Severin "sev" Meyer) \
+               PERSON(Sahil "DiaboliK" Singhal) \
+               PERSON(Peter "Morphed" Pielak) \
+               PERSON(Sam "LJFHutch" Hutchinson) \
+               PERSON(Pearce "theShadow" Michal) \
+               PERSON(KingPimpCommander) \
+       NL() \
+       FUNCTION(_("Animation")) \
+               PERSON(Sahil "DiaboliK" Singhal) \
+               PERSON(nifrek) \
+       NL() \
+       FUNCTION(_("Level Design")) \
+               PERSON(Amadeusz "amade/proraide" Sławiński) \
+               PERSON(Ben "MooKow" Banker) \
+               PERSON(Cortez) \
+               PERSON(Cuinn "Cuinnton" Herrick) \
+               PERSON(Debugger) \
+               PERSON(Hugo "Calinou" Locurcio) \
+               PERSON(Jakob "tZork" Markström Gröhn) \
+               PERSON(Konrad "Justin" Slawinski) \
+               PERSON(Maddin) \
+               PERSON(L0) \
+               PERSON(Łukasz "kuniu the frogg" Polek) \
+               PERSON(Maik "SavageX" Merten) \
+               PERSON(Marvin "Mirio" Beck) \
+               PERSON(MintOX) \
+               PERSON(packer) \
+               PERSON(Pearce "theShadow" Michal) \
+               PERSON(Rasmus "FruitieX" Eskola) \
+               PERSON(Ruszkai "CuBe0wL" Ákos) \
+               PERSON(Severin "sev" Meyer) \
+               PERSON(ShadoW) \
+               PERSON(t0uYK8Ne) \
+       NL() \
+       FUNCTION(_("Music / Sound FX")) \
+               PERSON(AquaNova (Archer)) \
+               PERSON(blkrbt) \
+               PERSON(chooksta) \
+               PERSON(Independent.nu) \
+               PERSON(Lea "TheAudioMonkey" Edwards) \
+               PERSON([master]mind) \
+               PERSON(Merlijn Hofstra) \
+               PERSON(Mick Rippon) \
+               PERSON(Nick "bitbomb" Lucca) \
+               PERSON(remaxim) \
+               PERSON(Saulo "mand1nga" Gil) \
+               PERSON({SC0RP} - Ian "ID" Dorrell) \
+               PERSON(Stephan) \
+               PERSON(unfa) \
+       NL() \
+       FUNCTION(_("Game Code")) \
+               PERSON(Samual "Ares" Lenks) \
+               PERSON(Rudolf "divVerent" Polzer) \
+               PERSON(Jakob "tZork" Markström Gröhn) \
+               PERSON(Rasmus "FruitieX" Eskola) \
+               PERSON(TimePath) \
+               PERSON(Zac "Mario" Jardine) \
+       NL() \
+       FUNCTION(_("Marketing / PR")) \
+               PERSON(Tyler "-z-" Mulligan) \
+               PERSON(Ruszkai "CuBe0wL" Ákos) \
+               PERSON(Samual "Ares" Lenks) \
+               PERSON(Saulo "mand1nga" Gil) \
+       NL() \
+       FUNCTION(_("Legal")) \
+               PERSON(Rudolf "divVerent" Polzer) \
+               PERSON(Merlijn Hofstra) \
+       NL() \
+       NL() \
+       TITLE(_("Game Engine")) \
+               FUNCTION("DarkPlaces") \
+                       PERSON(Forest "LordHavoc" Hale) \
+               NL() \
+               FUNCTION(_("Engine Additions")) \
+                       PERSON(Rudolf "divVerent" Polzer) \
+                       PERSON(Samual "Ares" Lenks) \
+               NL() \
+       NL() \
+       TITLE(_("Compiler")) \
+               FUNCTION("GMQCC") \
+                       PERSON(Wolfgang "Blub\0" Bumiller) \
+                       PERSON(Dale "graphitemaster" Weiler) \
+               NL() \
+       NL() \
+       TITLE(_("Other Active Contributors")) \
+               PERSON(Erik "Ablu" Schilling) \
+               PERSON(Mircea "Taoki" Kitsune) \
+               PERSON(Penguinum) \
+       NL() \
+       NL() \
+       TITLE(_("Translators")) \
+               NL() \
+               FUNCTION(_("Asturian")) \
+                       PERSON(Llumex03) \
+                       PERSON(Tornes "Tornes.Llume" Ḷḷume) \
+                       PERSON(Ximielga) \
+               NL() \
+               FUNCTION(_("Belarusian")) \
+                       PERSON(Mihail "meequz" Varantsou) \
+               NL() \
+               FUNCTION(_("Bulgarian")) \
+                       PERSON(Alexander "alex4o" Bonin) \
+                       PERSON(ifohancroft) \
+                       PERSON(lokster) \
+                       PERSON(set_killer) \
+                       PERSON(ubone) \
+               NL() \
+               FUNCTION(_("Chinese (China)")) \
+                       PERSON(Antonidas) \
+                       PERSON(Armcoon) \
+                       PERSON(kalawore) \
+                       PERSON(sapphireliu) \
+               NL() \
+               FUNCTION(_("Chinese (Taiwan)")) \
+                       PERSON(Alisha) \
+                       PERSON(Armcoon) \
+                       PERSON(Jeff "s8321414" Huang) \
+               NL() \
+               FUNCTION(_("Cornish")) \
+                       PERSON(Nicky "nrowe" Rowe) \
+               NL() \
+               FUNCTION(_("Czech")) \
+                       PERSON(shogun assassin/woky) \
+                       PERSON(Superovoce) \
+                       PERSON(Tomáš "CZHeron" Volavka) \
+               NL() \
+               FUNCTION(_("Dutch")) \
+                       PERSON(Alexander "freefang" van Dam) \
+                       PERSON(Jonathan "Jonakeys" van der Steege) \
+                       PERSON(PinkRobot) \
+                       PERSON(vegiburger) \
+               NL() \
+               FUNCTION(_("English (Australia)")) \
+                       PERSON(Laurene "sunflowers" Albrand) \
+                       PERSON(Stuart "Cefiar" Young) \
+                       PERSON(Zac "Mario" Jardine) \
+               NL() \
+               FUNCTION(_("Finnish")) \
+                       PERSON(Jonas "PowaTree" Sahlberg) \
+                       PERSON(Henry "Exitium" Sanmark) \
+                       PERSON(Rasmus "FruitieX" Eskola) \
+               NL() \
+               FUNCTION(_("French")) \
+                       PERSON(Hugo "Calinou" Locurcio) \
+                       PERSON(Kim "coughingmouse" Lee) \
+                       PERSON(Maxime "Taximus" Paradis) \
+                       PERSON(RedGuff) \
+                       PERSON(Thomas "illwieckz" Debesse) \
+                       PERSON(Yannick "SpiKe" Le Guen) \
+               NL() \
+               FUNCTION(_("German")) \
+                       PERSON(Brot) \
+                       PERSON(cvcxc) \
+                       PERSON(Erik "Ablu" Schilling) \
+                       PERSON(Jope "Sless" Withers) \
+                       PERSON(Marvin "Mirio" Beck) \
+                       PERSON(Paul "Snapper") \
+                       PERSON(Rudolf "divVerent" Polzer) \
+                       PERSON(Wuzzy) \
+                       PERSON(Yepoleb) \
+               NL() \
+               FUNCTION(_("Greek")) \
+                       PERSON_("Γιάννης \"Evropi\" Ανθυμίδης") \
+                       PERSON(Konstantinos "LDinos" Mihalenas) \
+                       PERSON(Savoritias) \
+                       PERSON(Vindex) \
+               NL() \
+               FUNCTION(_("Hungarian")) \
+                       PERSON(Ruszkai "CuBe0wL" Ákos) \
+                       PERSON(xaN1C4n3) \
+               NL() \
+               FUNCTION(_("Italian")) \
+                       PERSON(Antonio "terencehill" Piu) \
+                       PERSON(Felice "MaidenBeast" Sallustio) \
+                       PERSON(stdi) \
+                       PERSON(XCostaX) \
+               NL() \
+               FUNCTION(_("Kazakh")) \
+                       PERSON("Артем "bystrov.arterm" Быстров") \
+               NL() \
+               FUNCTION(_("Korean")) \
+                       PERSON(Jisoo "s6e9x" Lim) \
+                       PERSON(Kim "coughingmouse" Lee) \
+               NL() \
+               FUNCTION(_("Polish")) \
+                       PERSON(4m) \
+                       PERSON(Alex "tiprogrammierer.alex" Progger) \
+                       PERSON(Amadeusz "amade/proraide" Sławiński) \
+                       PERSON(Artur "artur9010" Motyka) \
+                       PERSON(Jakub "KubeQ11" Pędziszewski) \
+               NL() \
+               FUNCTION(_("Portuguese")) \
+                       PERSON(Ivan Paulos "greylica" Tomé) \
+                       PERSON(Jean Trindade "Muleke_Trairao" Pereira) \
+                       PERSON(Ricardo Manuel "Hellgardia" da Cruz Coelho da Silva) \
+                       PERSON(xXxCHAOTICxXx) \
+               NL() \
+               FUNCTION(_("Romanian")) \
+                       PERSON(Adrian-Ciprian "adrian.tinjala" Tînjală) \
+                       PERSON(BusterDBK) \
+                       PERSON(Mircea "Taoki" Kitsune) \
+                       PERSON(Sorin "unic_sorin" Botirla) \
+                       PERSON(Tudor "TropiKo" Ionel) \
+               NL() \
+               FUNCTION(_("Russian")) \
+                       PERSON(Alex "alextalker7" Talker) \
+                       PERSON(Alexandr "zrg") \
+                       PERSON(Andrei "adem4ik" Stepanov) \
+                       PERSON(Andrey "dekrY" P.) \
+                       PERSON(gravicappa) \
+                       PERSON(Hot Dog) \
+                       PERSON(Lord Canistra) \
+                       PERSON(Nikoli) \
+                       PERSON(Sergej "Clearness High" Lutsyk) \
+               NL() \
+               FUNCTION(_("Serbian")) \
+                       PERSON_("Саша \"salepetronije\" Петровић") \
+                       PERSON(Pendulla) \
+                       PERSON(Rafael "Ristovski") \
+               NL() \
+               FUNCTION(_("Spanish")) \
+                       PERSON_("0000simon") \
+                       PERSON(Alan "aagp" Garcia) \
+                       PERSON(Ari_tent) \
+                       PERSON(brunodeleo) \
+                       PERSON(Kammy) \
+                       PERSON(roader_gentoo) \
+                       PERSON(Rodrigo Mouton Laudin) \
+                       PERSON(SouL) \
+               NL() \
+               FUNCTION(_("Swedish")) \
+                       PERSON(Karl-Oskar "machine" Rikås) \
+                       PERSON(marcus256) \
+               NL() \
+               FUNCTION(_("Ukrainian")) \
+                       PERSON(Dmitro "Gamebot" Sokhin) \
+                       PERSON(Oleh "BlaXpirit" Prypin) \
+                       PERSON(Vasyl "Harmata" Melnyk) \
+                       PERSON(Yuriy "herrniemand" Ackermann) \
+               NL() \
+       NL() \
+       TITLE(_("Past Contributors")) \
+               PERSON(Akari) \
+               PERSON(Alexander "naryl" Suhoverhov) \
+               PERSON(Alexander "motorsep" Zubov) \
+               PERSON(Amos "torus" Dudley) \
+               PERSON(Andreas "Black" Kirsch) \
+               PERSON(Attila "WW3" Houtkooper) \
+               PERSON(BigMac) \
+               PERSON(Braden "meoblast001" Walters) \
+               PERSON(Brain Younds) \
+               PERSON(Chris "amethyst7" Matz) \
+               PERSON(Christian Ice) \
+               PERSON(Clinton "Kaziganthe" Freeman) \
+               PERSON(Dan "Digger" Korostelev) \
+               PERSON(Dan "Wazat" Hale) \
+               PERSON(Dokujisan) \
+               PERSON(Donkey) \
+               PERSON(dstrek) \
+               PERSON(Dustin Geeraert) \
+               PERSON(Edgenetwork) \
+               PERSON(Edward "Ed" Holness) \
+               PERSON(Eric "Munyul Verminard" Sambach) \
+               PERSON(Fabien "H. Reaper" Tschirhart) \
+               PERSON(Florian Paul "lda17h" Schmidt) \
+               PERSON(FrikaC) \
+               PERSON(Garth "Zombie" Hendy) \
+               PERSON(Gerd "Elysis" Raudenbusch) \
+               PERSON(Gottfried "Toddd" Hofmann) \
+               PERSON(Henning "Tymo" Janssen) \
+               PERSON(Innovati) \
+               PERSON(Jitspoe) \
+               PERSON(Jody Gallagher) \
+               PERSON(Jope "Sless" Withers) \
+               PERSON(Juergen "LowDragon" Timm) \
+               PERSON(KadaverJack) \
+               PERSON(Kevin "Tyrann" Shanahan) \
+               PERSON(Kristian "morfar" Johansson) \
+               PERSON(Kurt Dereli) \
+               PERSON(lcatlnx) \
+               PERSON(Lee David Ash) \
+               PERSON(Lee Vermeulen) \
+               PERSON(leileilol) \
+               PERSON(magorian) \
+               PERSON(Marius "GreEn`mArine" Shekow) \
+               PERSON(Marko "Urre" Permanto) \
+               PERSON(Mathieu "Elric" Olivier) \
+               PERSON(Mattrew "Tronyn" Rye) \
+               PERSON(MauveBib) \
+               PERSON(Mephisto) \
+               PERSON(michaelb) \
+               PERSON(Michael "Tenshihan" Quinn) \
+               PERSON(Mepper) \
+               PERSON(Munyul) \
+               PERSON(Netzwerg) \
+               PERSON(NoelCower) \
+               PERSON(Parapraxis) \
+               PERSON(parasti) \
+               PERSON(Paul "Strahlemann" Evers) \
+               PERSON(Paul Scott) \
+               PERSON(Petithomme) \
+               PERSON(PlasmaSheep) \
+               PERSON(Przemysław "atheros" Grzywacz) \
+               PERSON(Q1 Retexturing Project) \
+               PERSON(Qantourisc) \
+               PERSON(Oleh "BlaXpirit" Prypin) \
+               PERSON(Rick "Rat" Kelley) \
+               PERSON(Robert "ai" Kuroto) \
+               PERSON(Ronan) \
+               PERSON(Sajt) \
+               PERSON(Saulo "mand1nga" Gil) \
+               PERSON(Shaggy) \
+               PERSON(Shank) \
+               PERSON(Simon O’Callaghan) \
+               PERSON(SomeGuy) \
+               PERSON(SoulKeeper_p) \
+               PERSON(Spike) \
+               PERSON(Spirit) \
+               PERSON(Stephan "esteel" Stahl) \
+               PERSON(Steve Vermeulen) \
+               PERSON(Supajoe) \
+               PERSON(Tei) \
+               PERSON(The player with the unnecessarily long name) \
+               PERSON(Tomaz) \
+               PERSON(Ulrich Galbraith) \
+               PERSON(Vortex) \
+               PERSON(William Libert) \
+               PERSON(William "Willis" Weilep) \
+               PERSON(Yves "EviLair" Allaire) \
+               PERSON(Zenex) \
+               /**/
 
-       ATTRIB(XonoticCreditsList, alphaBG, float, 0)
-ENDCLASS(XonoticCreditsList)
-entity makeXonoticCreditsList();
-#endif
+int credits_get()
+{
+       int n = buf_create();
+       #define CREDITS_TITLE(t) bufstr_add(n, strcat("**", t), 0);
+       #define CREDITS_FUNCTION(f) bufstr_add(n, strcat("*", f), 0);
+       #define CREDITS_PERSON(p) bufstr_add(n, p, 0);
+       #define _CREDITS_PERSON(p) CREDITS_PERSON(#p)
+       #define CREDITS_NL() bufstr_add(n, "", 0);
+    CREDITS(CREDITS_TITLE, CREDITS_FUNCTION, _CREDITS_PERSON, CREDITS_PERSON, CREDITS_NL)
+       #undef CREDITS_TITLE
+       #undef CREDITS_FUNCTION
+       #undef CREDITS_PERSON
+       #undef _CREDITS_PERSON
+       #undef CREDITS_NL
+       return n;
+}
+
+#undef CREDITS
 
-#ifdef IMPLEMENTATION
 entity makeXonoticCreditsList()
 {
        entity me;
@@ -31,8 +416,7 @@ entity makeXonoticCreditsList()
 void XonoticCreditsList_configureXonoticCreditsList(entity me)
 {
        me.configureXonoticListBox(me);
-       // load the file
-       me.bufferIndex = buf_load(language_filename("xonotic-credits.txt"));
+    me.bufferIndex = credits_get();
        me.nItems = buf_getsize(me.bufferIndex);
 }
 void XonoticCreditsList_destroy(entity me)
@@ -41,13 +425,10 @@ void XonoticCreditsList_destroy(entity me)
 }
 void XonoticCreditsList_draw(entity me)
 {
-       float i;
        if(me.scrolling)
        {
                me.scrollPos = bound(0, (time - me.scrolling) * me.itemHeight, me.nItems * me.itemHeight - 1);
-               i = min(me.selectedItem, floor((me.scrollPos + 1) / me.itemHeight - 1));
-               i = max(i, ceil(me.scrollPos / me.itemHeight));
-               me.setSelected(me, i);
+               me.scrollPosTarget = me.scrollPos;
        }
        SUPER(XonoticCreditsList).draw(me);
 }
@@ -59,9 +440,8 @@ void XonoticCreditsList_resizeNotify(entity me, vector relOrigin, vector relSize
        me.realFontSize_x = me.fontSize / (absSize.x * (1 - me.controlWidth));
        me.realUpperMargin = 0.5 * (1 - me.realFontSize.y);
 }
-void XonoticCreditsList_drawListBoxItem(entity me, float i, vector absSize, float isSelected)
+void XonoticCreditsList_drawListBoxItem(entity me, int i, vector absSize, bool isSelected, bool isFocused)
 {
-       // layout: Ping, Credits name, Map name, NP, TP, MP
        string s;
        float theAlpha;
        vector theColor;
@@ -91,24 +471,6 @@ void XonoticCreditsList_drawListBoxItem(entity me, float i, vector absSize, floa
 
 float XonoticCreditsList_keyDown(entity me, float key, float ascii, float shift)
 {
-       float i;
-       me.dragScrollTimer = time;
        me.scrolling = 0;
-       if(key == K_PGUP || key == K_KP_PGUP)
-               me.scrollPos = max(me.scrollPos - 0.5, 0);
-       else if(key == K_PGDN || key == K_KP_PGDN)
-               me.scrollPos = min(me.scrollPos + 0.5, me.nItems * me.itemHeight - 1);
-       else if(key == K_UPARROW || key == K_KP_UPARROW)
-               me.scrollPos = max(me.scrollPos - me.itemHeight, 0);
-       else if(key == K_DOWNARROW || key == K_KP_DOWNARROW)
-               me.scrollPos = min(me.scrollPos + me.itemHeight, me.nItems * me.itemHeight - 1);
-       else
-               return SUPER(XonoticCreditsList).keyDown(me, key, ascii, shift);
-
-       i = min(me.selectedItem, floor((me.scrollPos + 1) / me.itemHeight - 1));
-       i = max(i, ceil(me.scrollPos / me.itemHeight));
-       me.setSelected(me, i);
-
-       return 1;
+       return SUPER(XonoticCreditsList).keyDown(me, key, ascii, shift);
 }
-#endif