Index: binaries/data/config/default.cfg =================================================================== --- binaries/data/config/default.cfg +++ binaries/data/config/default.cfg @@ -373,6 +373,7 @@ rankabovestatusbar = true ; Show rank icons above status bars experiencestatusbar = true ; Show an experience status bar above each selected unit respoptooltipsort = 0 ; Sorting players in the resources and population tooltip by value (0 - no sort, -1 - ascending, 1 - descending) +disjointcontrolgroups = true ; Whether entities are allowed to be in multiple control groups. [gui.session.minimap] blinkduration = 1.7 ; The blink duration while pinging Index: binaries/data/mods/public/gui/options/options.json =================================================================== --- binaries/data/mods/public/gui/options/options.json +++ binaries/data/mods/public/gui/options/options.json @@ -540,6 +540,12 @@ "tooltip": "Color of enemies when diplomacy colors are enabled.", "config": "gui.session.diplomacycolors.enemy", "callback": "updateDisplayedPlayerColors" + }, + { + "type": "boolean", + "label": "Allow units only in single control group", + "tooltip": "If enabled, remove entities from a previous control group when adding to another control group. Otherwise allow entities to be in multiple control groups simultaneously.", + "config": "gui.session.disjointcontrolgroups" } ] } Index: binaries/data/mods/public/gui/session/selection.js =================================================================== --- binaries/data/mods/public/gui/session/selection.js +++ binaries/data/mods/public/gui/session/selection.js @@ -457,12 +457,18 @@ this.groups[i] = new EntityGroups(); } +/** + * Add entities to a group. + * @param {string} groupName - The number of the group to add the entities to. + * @param {number[]} ents - The entities to add to the group. + */ EntityGroupsContainer.prototype.addEntities = function(groupName, ents) { - for (let ent of ents) - for (let group of this.groups) - if (ent in group.ents) - group.removeEnt(ent); + if (Engine.ConfigDB_GetValue("user", "gui.session.disjointcontrolgroups") == "true") + for (let ent of ents) + for (let group of this.groups) + if (ent in group.ents) + group.removeEnt(ent); this.groups[groupName].add(ents); };