X-Git-Url: http://de.git.xonotic.org/?p=xonotic%2Fxonotic-data.pk3dir.git;a=blobdiff_plain;f=qcsrc%2Fmenu%2Fxonotic%2Fcredits.qc;h=e3bc1c3399f048a5a8968e9d60c8597c4f68c582;hp=67848f9144978dd87bce3648aed4e65ed336c90b;hb=ae0dcac15aa2429893c71e414344c9eee941b74e;hpb=ea48961feb50159e05ef56f38b7fd0ebc15cc64e diff --git a/qcsrc/menu/xonotic/credits.qc b/qcsrc/menu/xonotic/credits.qc index 67848f9144..e3bc1c3399 100644 --- a/qcsrc/menu/xonotic/credits.qc +++ b/qcsrc/menu/xonotic/credits.qc @@ -1,19 +1,22 @@ -#ifdef INTERFACE -CLASS(XonoticCreditsList) EXTENDS(XonoticListBox) +#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, drawListBoxItem, void(entity, int, vector, bool, bool)) METHOD(XonoticCreditsList, resizeNotify, void(entity, vector, vector, vector, vector)) METHOD(XonoticCreditsList, keyDown, float(entity, float, float, float)) METHOD(XonoticCreditsList, destroy, void(entity)) + ATTRIB(XonoticCreditsList, selectionDoesntMatter, bool, true) ATTRIB(XonoticCreditsList, realFontSize, vector, '0 0 0') ATTRIB(XonoticCreditsList, realUpperMargin, float, 0) ATTRIB(XonoticCreditsList, bufferIndex, float, 0) ATTRIB(XonoticCreditsList, scrolling, float, 0) - ATTRIB(XonoticListBox, alphaBG, float, 0) + ATTRIB(XonoticCreditsList, alphaBG, float, 0) ENDCLASS(XonoticCreditsList) entity makeXonoticCreditsList(); #endif @@ -22,7 +25,7 @@ entity makeXonoticCreditsList(); entity makeXonoticCreditsList() { entity me; - me = spawnXonoticCreditsList(); + me = NEW(XonoticCreditsList); me.configureXonoticCreditsList(me); return me; } @@ -39,13 +42,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,7 +57,7 @@ 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; @@ -89,24 +89,7 @@ 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