X-Git-Url: http://de.git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fmenu%2Fxonotic%2Fskinlist.qc;h=c849254e8b85c66a925a5f2d8bcdc28b1d285bbb;hb=86c9dc7c3696c329496b06375c1e79fb407401ce;hp=9990c83fe162ee2c2ab4f37ea7e1c43a1fcf24ce;hpb=128cea32714586feb51b4a0d78a6bd4e35fef9f2;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/menu/xonotic/skinlist.qc b/qcsrc/menu/xonotic/skinlist.qc index 9990c83fe..c849254e8 100644 --- a/qcsrc/menu/xonotic/skinlist.qc +++ b/qcsrc/menu/xonotic/skinlist.qc @@ -1,17 +1,19 @@ -#ifdef INTERFACE -CLASS(XonoticSkinList) EXTENDS(XonoticListBox) - METHOD(XonoticSkinList, configureXonoticSkinList, void(entity)) +#ifndef SKINLIST_H +#define SKINLIST_H +#include "listbox.qc" +CLASS(XonoticSkinList, XonoticListBox) + METHOD(XonoticSkinList, configureXonoticSkinList, void(entity)); ATTRIB(XonoticSkinList, rowsPerItem, float, 4) - METHOD(XonoticSkinList, resizeNotify, void(entity, vector, vector, vector, vector)) - METHOD(XonoticSkinList, drawListBoxItem, void(entity, float, vector, float)) - METHOD(XonoticSkinList, getSkins, void(entity)) - METHOD(XonoticSkinList, setSkin, void(entity)) - METHOD(XonoticSkinList, loadCvars, void(entity)) - METHOD(XonoticSkinList, saveCvars, void(entity)) - METHOD(XonoticSkinList, skinParameter, string(entity, float, float)) - METHOD(XonoticSkinList, doubleClickListBoxItem, void(entity, float, vector)) - METHOD(XonoticSkinList, keyDown, float(entity, float, float, float)) - METHOD(XonoticSkinList, destroy, void(entity)) + METHOD(XonoticSkinList, resizeNotify, void(entity, vector, vector, vector, vector)); + METHOD(XonoticSkinList, drawListBoxItem, void(entity, int, vector, bool, bool)); + METHOD(XonoticSkinList, getSkins, void(entity)); + METHOD(XonoticSkinList, setSkin, void(entity)); + METHOD(XonoticSkinList, loadCvars, void(entity)); + METHOD(XonoticSkinList, saveCvars, void(entity)); + METHOD(XonoticSkinList, skinParameter, string(entity, float, float)); + METHOD(XonoticSkinList, doubleClickListBoxItem, void(entity, float, vector)); + METHOD(XonoticSkinList, keyDown, float(entity, float, float, float)); + METHOD(XonoticSkinList, destroy, void(entity)); ATTRIB(XonoticSkinList, skinlist, float, -1) ATTRIB(XonoticSkinList, realFontSize, vector, '0 0 0') @@ -42,7 +44,7 @@ const float SKINPARM_COUNT = 4; entity makeXonoticSkinList() { entity me; - me = spawnXonoticSkinList(); + me = NEW(XonoticSkinList); me.configureXonoticSkinList(me); return me; } @@ -64,7 +66,7 @@ void XonoticSkinList_loadCvars(entity me) { if(me.skinParameter(me, i, SKINPARM_NAME) == s) { - me.selectedItem = i; + me.setSelected(me, i); break; } } @@ -83,7 +85,7 @@ string XonoticSkinList_skinParameter(entity me, float i, float key) void XonoticSkinList_getSkins(entity me) { float glob, buf, i, n, fh; - string s; + string s, name; buf = buf_create(); glob = search_begin("gfx/menu/*/skinvalues.txt", true, true); @@ -98,7 +100,8 @@ void XonoticSkinList_getSkins(entity me) for(i = 0; i < n; ++i) { s = search_getfilename(glob, i); - bufstr_set(buf, i * SKINPARM_COUNT + SKINPARM_NAME, substring(s, 9, strlen(s) - 24)); // the * part + name = substring(s, 9, strlen(s) - 24); // the * part + bufstr_set(buf, i * SKINPARM_COUNT + SKINPARM_NAME, name); bufstr_set(buf, i * SKINPARM_COUNT + SKINPARM_TITLE, _("")); bufstr_set(buf, i * SKINPARM_COUNT + SKINPARM_AUTHOR, _("<AUTHOR>")); if(draw_PictureSize(strcat("/gfx/menu/", substring(s, 9, strlen(s) - 24), "/skinpreview")) == '0 0 0') @@ -108,14 +111,19 @@ void XonoticSkinList_getSkins(entity me) fh = fopen(language_filename(s), FILE_READ); if(fh < 0) { - print("Warning: can't open skinvalues.txt file\n"); + LOG_INFO("Warning: can't open skinvalues.txt file\n"); continue; } while((s = fgets(fh))) { // these two are handled by skinlist.qc if(substring(s, 0, 6) == "title ") - bufstr_set(buf, i * SKINPARM_COUNT + SKINPARM_TITLE, substring(s, 6, strlen(s) - 6)); + { + if (name == cvar_defstring("menu_skin")) + bufstr_set(buf, i * SKINPARM_COUNT + SKINPARM_TITLE, strcat(substring(s, 6, strlen(s) - 6), " (", _("Default"), ")")); + else + bufstr_set(buf, i * SKINPARM_COUNT + SKINPARM_TITLE, substring(s, 6, strlen(s) - 6)); + } else if(substring(s, 0, 7) == "author ") bufstr_set(buf, i * SKINPARM_COUNT + SKINPARM_AUTHOR, substring(s, 7, strlen(s) - 7)); } @@ -149,12 +157,17 @@ void XonoticSkinList_resizeNotify(entity me, vector relOrigin, vector relSize, v me.columnNameSize = 1 - me.columnPreviewSize - 2 * me.realFontSize.x; } -void XonoticSkinList_drawListBoxItem(entity me, float i, vector absSize, float isSelected) +void XonoticSkinList_drawListBoxItem(entity me, int i, vector absSize, bool isSelected, bool isFocused) { string s; if(isSelected) draw_Fill('0 0 0', '1 1 0', SKINCOLOR_LISTBOX_SELECTED, SKINALPHA_LISTBOX_SELECTED); + else if(isFocused) + { + me.focusedItemAlpha = getFadedAlpha(me.focusedItemAlpha, SKINALPHA_LISTBOX_FOCUSED, SKINFADEALPHA_LISTBOX_FOCUSED); + draw_Fill('0 0 0', '1 1 0', SKINCOLOR_LISTBOX_FOCUSED, me.focusedItemAlpha); + } s = me.skinParameter(me, i, SKINPARM_PREVIEW); draw_Picture(me.columnPreviewOrigin * eX, s, me.columnPreviewSize * eX + eY, '1 1 1', 1);