1
0
forked from 0ad/0ad

Put the formation-selection feature behind a config.

Since it needs a better UX. (Introduced in a70a20fd42.)
Users can choose to still use it.

Differential revision: https://code.wildfiregames.com/D4360
Comment by: @wowgetoffyourcellphone
This was SVN commit r26076.
This commit is contained in:
Freagarach 2021-12-15 08:07:59 +00:00
parent afc77e20a4
commit dfd9560748
5 changed files with 24 additions and 6 deletions

View File

@ -433,6 +433,7 @@ disjointcontrolgroups = "true" ; Whether control groups are disjoint sets or
defaultformation = "special/formations/box" ; For walking orders, automatically put units into this formation if they don't have one already. defaultformation = "special/formations/box" ; For walking orders, automatically put units into this formation if they don't have one already.
formationwalkonly = "true" ; Formations are disabled when giving gather/attack/... orders. formationwalkonly = "true" ; Formations are disabled when giving gather/attack/... orders.
howtoshownames = 0 ; Whether the specific names are show as default, as opposed to the generic names. And whether the secondary names are shown. (0 - show both; specific names primary, 1 - show both; generic names primary, 2 - show only specific names, 3 - show only generic names) howtoshownames = 0 ; Whether the specific names are show as default, as opposed to the generic names. And whether the secondary names are shown. (0 - show both; specific names primary, 1 - show both; generic names primary, 2 - show only specific names, 3 - show only generic names)
selectformationasone = "true" ; Whether to select formations as a whole by default.
[gui.session.minimap] [gui.session.minimap]
blinkduration = 1.7 ; The blink duration while pinging blinkduration = 1.7 ; The blink duration while pinging

View File

@ -737,6 +737,12 @@
"tooltip": "Units in formations stay in formations." "tooltip": "Units in formations stay in formations."
} }
] ]
},
{
"type": "boolean",
"label": "Battalion-style formations",
"tooltip": "Whether formations are selected as a whole.",
"config": "gui.session.selectformationasone"
} }
] ]
} }

View File

@ -1170,7 +1170,7 @@ function popOneFromSelection(action)
)); ));
if (unit) if (unit)
{ {
g_Selection.removeList([unit], true); g_Selection.removeList([unit], false);
return [unit]; return [unit];
} }
return null; return null;

View File

@ -175,6 +175,17 @@ function EntitySelection()
// Public properties: // Public properties:
this.dirty = false; // set whenever the selection has changed this.dirty = false; // set whenever the selection has changed
this.groups = new EntityGroups(); this.groups = new EntityGroups();
this.UpdateFormationSelectionBehaviour();
registerConfigChangeHandler(changes => {
if (changes.has("gui.session.selectformationasone"))
this.UpdateFormationSelectionBehaviour();
});
}
EntitySelection.prototype.UpdateFormationSelectionBehaviour = function()
{
this.SelectFormationAsOne = Engine.ConfigDB_GetValue("user", "gui.session.selectformationasone") == "true";
} }
/** /**
@ -331,13 +342,13 @@ EntitySelection.prototype.addList = function(ents, quiet, force = false, addForm
/** /**
* @param {number[]} ents - The entities to remove. * @param {number[]} ents - The entities to remove.
* @param {boolean} dontAddFormationMembers - If true we need to exclude adding formation members. * @param {boolean} addFormationMembers - If true we need to add formation members.
*/ */
EntitySelection.prototype.removeList = function(ents, dontAddFormationMembers = false) EntitySelection.prototype.removeList = function(ents, addFormationMembers = true)
{ {
const removed = []; const removed = [];
for (const ent of dontAddFormationMembers ? ents : this.addFormationMembers(ents)) for (const ent of addFormationMembers ? this.addFormationMembers(ents) : ents)
if (this.selected.has(ent)) if (this.selected.has(ent))
{ {
this.groups.removeEnt(ent); this.groups.removeEnt(ent);
@ -478,7 +489,7 @@ EntitySelection.prototype.selectAndMoveTo = function(entityID)
*/ */
EntitySelection.prototype.addFormationMembers = function(entities) EntitySelection.prototype.addFormationMembers = function(entities)
{ {
if (!entities.length || Engine.HotkeyIsPressed("selection.singleselection")) if (!entities.length || !this.SelectFormationAsOne || Engine.HotkeyIsPressed("selection.singleselection"))
return entities; return entities;
const result = new Set(entities); const result = new Set(entities);

View File

@ -1,3 +1,3 @@
FORMATIONS FORMATIONS
Arrange your soldiers in formations to keep them organized during battles. Arrange your soldiers in formations to keep them organized during battles.
Formations are selected as a whole by default. Formations are selected as a whole by default, but that can be changed in the game settings.