MCPcopy Create free account
hub / github.com/assaultcube/AC / init

Method init

source/src/menus.cpp:1339–1417  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1337int (*menufilesortcmp[])(const char **, const char **) = { stringsort, stringsortrev, stringsortignorecase, stringsortignorecaserev };
1338
1339void gmenu::init()
1340{
1341 if(!menuseldescbgcolor) menuseldescbgcolor = new color(0.2f, 0.2f, 0.2f, 0.2f);
1342 if(dirlist && dirlist->dir && dirlist->ext)
1343 {
1344 items.deletecontents();
1345
1346 if(dirlist->subdiraction)
1347 {
1348 vector<char *> subdirs;
1349 if(dirlist->subdirdots) subdirs.add(newstring(".."));
1350 listsubdirs(dirlist->dir, subdirs, stringsort);
1351 loopv(subdirs)
1352 {
1353 defformatstring(cdir)("\fs\f1[%s]\fr", subdirs[i]);
1354 defformatstring(act)("%s %s", dirlist->subdiraction, escapestring(subdirs[i]));
1355 items.add(new mitemtext(this, newstring(cdir), newstring(act), NULL, NULL, NULL));
1356 }
1357 }
1358
1359 defformatstring(sortorderalias)("menufilesort_%s", dirlist->ext);
1360 int sortorderindex = 0;
1361 const char *customsortorder = getalias(sortorderalias);
1362 if(customsortorder) sortorderindex = getlistindex(customsortorder, menufilesortorders, true, 0);
1363
1364 vector<char *> files;
1365 listfiles(dirlist->dir, dirlist->ext, files, menufilesortcmp[sortorderindex]);
1366
1367 string searchfileuc;
1368 if(dirlist->searchfile)
1369 {
1370 const char *searchfilealias = getalias(dirlist->searchfile);
1371 copystring(searchfileuc, searchfilealias ? searchfilealias : dirlist->searchfile);
1372 strtoupper(searchfileuc);
1373 }
1374
1375 loopv(files)
1376 {
1377 char *f = files[i], *d = (strcmp(dirlist->ext, "cgz") || dirlist->searchfile) && browsefiledesc ? getfiledesc(dirlist->dir, f, dirlist->ext) : NULL;
1378 bool filefound = false;
1379 if(dirlist->searchfile)
1380 {
1381 string fuc, duc;
1382 copystring(fuc, f);
1383 strtoupper(fuc);
1384 copystring(duc, d ? d : "");
1385 strtoupper(duc);
1386 if(strstr(fuc, searchfileuc) || strstr(duc, searchfileuc)) filefound = true;
1387 }
1388
1389 if(dirlist->image)
1390 {
1391 string fullname = "";
1392 if(dirlist->dir[0]) formatstring(fullname)("%s/%s", dirlist->dir, f);
1393 else copystring(fullname, f);
1394 if(dirlist->ext)
1395 {
1396 concatstring(fullname, ".");

Callers 5

oggstreamMethod · 0.45
keyMethod · 0.45
locationMethod · 0.45
initsoundMethod · 0.45
setchannelsMethod · 0.45

Calls 10

newstringFunction · 0.85
listsubdirsFunction · 0.85
getaliasFunction · 0.85
getlistindexFunction · 0.85
listfilesFunction · 0.85
copystringFunction · 0.85
strtoupperFunction · 0.85
deletecontentsMethod · 0.80
loopvFunction · 0.70
addMethod · 0.45

Tested by

no test coverage detected