Prefer recommendations for default sortie selection
This commit is contained in:
@@ -15119,6 +15119,7 @@ export class CampScene extends Phaser.Scene {
|
||||
|
||||
private normalizedSortieUnitIds(candidateIds?: string[]) {
|
||||
const allies = this.sortieAllies();
|
||||
const alliesById = new Map(allies.map((unit) => [unit.id, unit]));
|
||||
const allyIds = new Set(allies.map((unit) => unit.id));
|
||||
const maxUnits = this.sortieMaxUnits();
|
||||
const useDefaultSelection = !candidateIds || candidateIds.length === 0;
|
||||
@@ -15131,11 +15132,24 @@ export class CampScene extends Phaser.Scene {
|
||||
});
|
||||
|
||||
if (useDefaultSelection) {
|
||||
allies.slice(0, maxUnits).forEach((unit) => candidateSet.add(unit.id));
|
||||
const rule = this.nextSortieRule();
|
||||
const addDefaultCandidate = (unitId: string) => {
|
||||
if (allyIds.has(unitId)) {
|
||||
candidateSet.add(unitId);
|
||||
}
|
||||
};
|
||||
rule.recommended.forEach((entry) => addDefaultCandidate(entry.unitId));
|
||||
(rule.recommendedClasses ?? []).forEach((entry) => {
|
||||
allies.filter((unit) => entry.classKeys.includes(unit.classKey)).forEach((unit) => addDefaultCandidate(unit.id));
|
||||
});
|
||||
allies.forEach((unit) => addDefaultCandidate(unit.id));
|
||||
}
|
||||
|
||||
const required = allies.filter((unit) => requiredSortieUnitIds.has(unit.id)).map((unit) => unit.id);
|
||||
const optional = allies
|
||||
const optionalSource = useDefaultSelection
|
||||
? [...candidateSet].map((unitId) => alliesById.get(unitId)).filter((unit): unit is UnitData => Boolean(unit))
|
||||
: allies;
|
||||
const optional = optionalSource
|
||||
.filter((unit) => !requiredSortieUnitIds.has(unit.id) && candidateSet.has(unit.id))
|
||||
.slice(0, Math.max(0, maxUnits - required.length))
|
||||
.map((unit) => unit.id);
|
||||
|
||||
Reference in New Issue
Block a user