prefcolor sorting
This commit is contained in:
parent
7f12437c76
commit
5b18297c68
3 changed files with 23 additions and 0 deletions
|
|
@ -388,6 +388,7 @@ static CV_PossibleValue_t skinselectsort_cons_t[] = {
|
|||
{SKINMENUSORT_WEIGHT, "Weight"},
|
||||
{SKINMENUSORT_ACCEL, "Accel"},
|
||||
{SKINMENUSORT_HANDLING, "Handling"},
|
||||
{SKINMENUSORT_PREFCOLOR, "Preferred Colour"},
|
||||
{0, NULL}
|
||||
};
|
||||
consvar_t cv_skinselectsort = CVAR_INIT ("skinselectsort", "Order Added", CV_SAVE|CV_CALL|CV_NOINIT, skinselectsort_cons_t, Skinsort_option_Onchange);
|
||||
|
|
|
|||
|
|
@ -326,6 +326,24 @@ static int CompareSkinHandlings(const void *a, const void *b)
|
|||
return CompareSkinWeights(b, a);
|
||||
}
|
||||
|
||||
static int CompareSkinColours(const void *a, const void *b)
|
||||
{
|
||||
const skin_t *in1 = &skins[*(const INT32 *)a];
|
||||
const skin_t *in2 = &skins[*(const INT32 *)b];
|
||||
INT32 temp = 0;
|
||||
|
||||
// check prefcolor
|
||||
if (in1->prefcolor < in2->prefcolor)
|
||||
return -1;
|
||||
else if (in2->prefcolor < in1->prefcolor)
|
||||
return 1;
|
||||
// then check name
|
||||
if ((temp = strcmp(in1->realname, in2->realname)))
|
||||
return temp;
|
||||
// sort by internal name
|
||||
return strcmp(in1->name, in2->name);
|
||||
}
|
||||
|
||||
void SortSkins(void)
|
||||
{
|
||||
CONS_Printf("Sorting skin list (sort type %d)...\n", cv_skinselectsort.value);
|
||||
|
|
@ -348,6 +366,9 @@ void SortSkins(void)
|
|||
case SKINMENUSORT_HANDLING:
|
||||
_sortingFunc = CompareSkinHandlings;
|
||||
break;
|
||||
case SKINMENUSORT_PREFCOLOR:
|
||||
_sortingFunc = CompareSkinColours;
|
||||
break;
|
||||
default:
|
||||
_sortingFunc = CompareSkinIds;
|
||||
break;
|
||||
|
|
|
|||
|
|
@ -86,6 +86,7 @@ enum skinmenusortoption
|
|||
SKINMENUSORT_WEIGHT,
|
||||
SKINMENUSORT_ACCEL,
|
||||
SKINMENUSORT_HANDLING,
|
||||
SKINMENUSORT_PREFCOLOR,
|
||||
NUMSKINMENUSORT,
|
||||
};
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue