Skip to content

Commit 42ed6f8

Browse files
committed
list base key before child keys in keyvalue editor
important things like "targetname" should always be at the top
1 parent 69eeeb3 commit 42ed6f8

File tree

1 file changed

+11
-3
lines changed

1 file changed

+11
-3
lines changed

src/editor/Fgd.cpp

+11-3
Original file line numberDiff line numberDiff line change
@@ -382,7 +382,8 @@ void Fgd::processClassInheritance() {
382382

383383
if (allBaseClasses.size() != 0)
384384
{
385-
vector<KeyvalueDef> newKeyvalues;
385+
vector<KeyvalueDef> childKeyvalues;
386+
vector<KeyvalueDef> baseKeyvalues;
386387
vector<KeyvalueChoice> newSpawnflags;
387388
set<string> addedKeys;
388389
set<string> addedSpawnflags;
@@ -393,7 +394,7 @@ void Fgd::processClassInheritance() {
393394
// add in fields from the child class
394395
for (int c = 0; c < classes[i]->keyvalues.size(); c++) {
395396
if (!addedKeys.count(classes[i]->keyvalues[c].name)) {
396-
newKeyvalues.push_back(classes[i]->keyvalues[c]);
397+
childKeyvalues.push_back(classes[i]->keyvalues[c]);
397398
addedKeys.insert(classes[i]->keyvalues[c].name);
398399
}
399400
if (classes[i]->keyvalues[c].iType == FGD_KEY_FLAGS) {
@@ -416,7 +417,7 @@ void Fgd::processClassInheritance() {
416417
}
417418
for (int c = 0; c < allBaseClasses[k]->keyvalues.size(); c++) {
418419
if (!addedKeys.count(allBaseClasses[k]->keyvalues[c].name)) {
419-
newKeyvalues.push_back(allBaseClasses[k]->keyvalues[c]);
420+
baseKeyvalues.push_back(allBaseClasses[k]->keyvalues[c]);
420421
addedKeys.insert(allBaseClasses[k]->keyvalues[c].name);
421422
}
422423
if (allBaseClasses[k]->keyvalues[c].iType == FGD_KEY_FLAGS) {
@@ -432,6 +433,13 @@ void Fgd::processClassInheritance() {
432433
if (verbose) logf(" %s\n", allBaseClasses[k]->name.c_str());
433434
}
434435

436+
// base keyvalues are usually important things like "targetname" and should come first
437+
vector<KeyvalueDef> newKeyvalues;
438+
for (int i = 0; i < baseKeyvalues.size(); i++)
439+
newKeyvalues.push_back(baseKeyvalues[i]);
440+
for (int i = 0; i < childKeyvalues.size(); i++)
441+
newKeyvalues.push_back(childKeyvalues[i]);
442+
435443
classes[i]->keyvalues = newKeyvalues;
436444

437445
for (int c = 0; c < classes[i]->keyvalues.size(); c++) {

0 commit comments

Comments
 (0)