X-Git-Url: http://de.git.xonotic.org/?p=xonotic%2Fxonotic-data.pk3dir.git;a=blobdiff_plain;f=qcsrc%2Fmenu%2Fxonotic%2Fcredits.qc;h=8546ac88c953e3bc45481e5f612a979d8f792373;hp=67848f9144978dd87bce3648aed4e65ed336c90b;hb=e67b83203d513295be80e6f28482766afc82fd9e;hpb=d1ec6cd7b36e2c16817720fe5cce775fc3d26357 diff --git a/qcsrc/menu/xonotic/credits.qc b/qcsrc/menu/xonotic/credits.qc index 67848f9144..8546ac88c9 100644 --- a/qcsrc/menu/xonotic/credits.qc +++ b/qcsrc/menu/xonotic/credits.qc @@ -1,36 +1,422 @@ -#ifdef INTERFACE -CLASS(XonoticCreditsList) EXTENDS(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(XonoticListBox, 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; - me = spawnXonoticCreditsList(); + me = NEW(XonoticCreditsList); me.configureXonoticCreditsList(me); return me; } 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) @@ -39,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); } @@ -57,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; @@ -89,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