Name the All Asian multiplier after what it counts
The score window and the stored Contest.Multiplier1Name row both said "Prefixes" for an Asian entrant, which counts DXCC entities. Contest.MultiplierNames is now MultiplierNamesFor(StationInfo me), the same shape as ExchangeFieldsFor. Every other contest returns the same list it did before; All Asian returns "Countries" from Asia and "Prefixes" from everywhere else. ContestDefinitions.For takes the station as well, because that name is written to the log for N1MM. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0157i7PiZyqBkquxS9A6FTdQ
This commit is contained in:
@@ -26,7 +26,8 @@ public sealed class AllAsian : Contest
|
||||
new ExchangeField("Age", ExchangeSlot.Exchange1, ExchangeFieldKind.Number) { Width = 3 },
|
||||
];
|
||||
|
||||
public IReadOnlyList<string> MultiplierNames => ["Prefixes"];
|
||||
public IReadOnlyList<string> MultiplierNamesFor(StationInfo me) =>
|
||||
me.Continent == "AS" ? ["Countries"] : ["Prefixes"];
|
||||
|
||||
public DupeScope DupeScope => DupeScope.PerBand;
|
||||
|
||||
|
||||
@@ -41,7 +41,7 @@ public sealed class Arrl10Metre : Contest
|
||||
? qso with { ReceivedNumber = number, Section = "" }
|
||||
: qso with { ReceivedNumber = 0, Section = typed.Trim().ToUpperInvariant() };
|
||||
|
||||
public IReadOnlyList<string> MultiplierNames => ["States", "Countries"];
|
||||
public IReadOnlyList<string> MultiplierNamesFor(StationInfo me) => ["States", "Countries"];
|
||||
|
||||
public DupeScope DupeScope => DupeScope.PerMode;
|
||||
|
||||
|
||||
@@ -33,7 +33,7 @@ public sealed class ArrlDx : Contest
|
||||
: new ExchangeField("State", ExchangeSlot.Section, ExchangeFieldKind.UsStateOrCanadianProvince),
|
||||
];
|
||||
|
||||
public IReadOnlyList<string> MultiplierNames => ["Mults"];
|
||||
public IReadOnlyList<string> MultiplierNamesFor(StationInfo me) => ["Mults"];
|
||||
|
||||
public DupeScope DupeScope => DupeScope.PerBand;
|
||||
|
||||
|
||||
@@ -36,7 +36,7 @@ public sealed class BartgSprint : Contest
|
||||
/// N1MM.
|
||||
public bool StampsSentTime => true;
|
||||
|
||||
public IReadOnlyList<string> MultiplierNames => ["Countries", "Areas", "Continents"];
|
||||
public IReadOnlyList<string> MultiplierNamesFor(StationInfo me) => ["Countries", "Areas", "Continents"];
|
||||
|
||||
public DupeScope DupeScope => DupeScope.PerBand;
|
||||
|
||||
|
||||
@@ -40,7 +40,7 @@ public sealed class CqOneSixty : Contest
|
||||
? qso with { Section = "" }
|
||||
: qso with { Section = typed.Trim().ToUpperInvariant() };
|
||||
|
||||
public IReadOnlyList<string> MultiplierNames => ["States", "Countries"];
|
||||
public IReadOnlyList<string> MultiplierNamesFor(StationInfo me) => ["States", "Countries"];
|
||||
|
||||
public DupeScope DupeScope => DupeScope.Once;
|
||||
|
||||
|
||||
@@ -60,7 +60,7 @@ public sealed class CqWorldWide : Contest
|
||||
&& their is not null
|
||||
&& their.Entity.PrimaryPrefix is not ("K" or "VE");
|
||||
|
||||
public IReadOnlyList<string> MultiplierNames =>
|
||||
public IReadOnlyList<string> MultiplierNamesFor(StationInfo me) =>
|
||||
IsRtty ? ["Zones", "Countries", "States"] : ["Zones", "Countries"];
|
||||
|
||||
public DupeScope DupeScope => DupeScope.PerBand;
|
||||
|
||||
@@ -39,7 +39,7 @@ public sealed class CqWpx : Contest
|
||||
new ExchangeField("RcvNR", ExchangeSlot.SerialNumber, ExchangeFieldKind.Number),
|
||||
];
|
||||
|
||||
public IReadOnlyList<string> MultiplierNames => ["Prefixes"];
|
||||
public IReadOnlyList<string> MultiplierNamesFor(StationInfo me) => ["Prefixes"];
|
||||
|
||||
public DupeScope DupeScope => DupeScope.PerBand;
|
||||
|
||||
|
||||
@@ -43,7 +43,7 @@ public sealed class EuDxContest : Contest
|
||||
? qso with { Section = typed.Trim().ToUpperInvariant() }
|
||||
: qso with { Zone = int.TryParse(typed, out int zone) ? zone : 0 };
|
||||
|
||||
public IReadOnlyList<string> MultiplierNames => ["Codes", "Countries"];
|
||||
public IReadOnlyList<string> MultiplierNamesFor(StationInfo me) => ["Codes", "Countries"];
|
||||
|
||||
public DupeScope DupeScope => DupeScope.PerBandAndMode;
|
||||
|
||||
|
||||
@@ -21,7 +21,7 @@ public sealed class FieldDayRegionOne : Contest
|
||||
new ExchangeField("Nr", ExchangeSlot.SerialNumber, ExchangeFieldKind.Number),
|
||||
];
|
||||
|
||||
public IReadOnlyList<string> MultiplierNames => ["Countries"];
|
||||
public IReadOnlyList<string> MultiplierNamesFor(StationInfo me) => ["Countries"];
|
||||
|
||||
public DupeScope DupeScope => DupeScope.PerBandAndMode;
|
||||
|
||||
|
||||
@@ -58,7 +58,7 @@ public sealed class FrenchRef : Contest
|
||||
new ExchangeField("Sect", ExchangeSlot.Section, ExchangeFieldKind.Text) { Width = 5 },
|
||||
];
|
||||
|
||||
public IReadOnlyList<string> MultiplierNames => ["Mults"];
|
||||
public IReadOnlyList<string> MultiplierNamesFor(StationInfo me) => ["Mults"];
|
||||
|
||||
public DupeScope DupeScope => DupeScope.PerBand;
|
||||
|
||||
|
||||
@@ -20,7 +20,7 @@ public sealed class GeneralLogging : Contest
|
||||
new ExchangeField("Comment", ExchangeSlot.Comment, ExchangeFieldKind.Text, IsRequired: false) { Width = 20 },
|
||||
];
|
||||
|
||||
public IReadOnlyList<string> MultiplierNames => [];
|
||||
public IReadOnlyList<string> MultiplierNamesFor(StationInfo me) => [];
|
||||
|
||||
public DupeScope DupeScope => DupeScope.PerBandAndMode;
|
||||
|
||||
|
||||
@@ -22,7 +22,7 @@ public sealed class IaruHf : Contest
|
||||
new ExchangeField("ITU-Zone", ExchangeSlot.Section, ExchangeFieldKind.Text) { Width = 6 },
|
||||
];
|
||||
|
||||
public IReadOnlyList<string> MultiplierNames => ["Zones", "HQ"];
|
||||
public IReadOnlyList<string> MultiplierNamesFor(StationInfo me) => ["Zones", "HQ"];
|
||||
|
||||
public bool UsesItuZones => true;
|
||||
|
||||
|
||||
@@ -29,7 +29,7 @@ public sealed class Iota : Contest
|
||||
},
|
||||
];
|
||||
|
||||
public IReadOnlyList<string> MultiplierNames => ["Islands"];
|
||||
public IReadOnlyList<string> MultiplierNamesFor(StationInfo me) => ["Islands"];
|
||||
|
||||
public DupeScope DupeScope => DupeScope.PerBandAndMode;
|
||||
|
||||
|
||||
@@ -37,7 +37,7 @@ public sealed class MexicoRtty : Contest
|
||||
Section = IsMexican(qso.CountryPrefix) ? typed.Trim().ToUpperInvariant() : "",
|
||||
};
|
||||
|
||||
public IReadOnlyList<string> MultiplierNames => ["Countries", "States"];
|
||||
public IReadOnlyList<string> MultiplierNamesFor(StationInfo me) => ["Countries", "States"];
|
||||
|
||||
public DupeScope DupeScope => DupeScope.PerBand;
|
||||
|
||||
|
||||
@@ -28,7 +28,7 @@ public sealed class NorthAmericanQsoParty : Contest
|
||||
new ExchangeField("State", ExchangeSlot.Section, ExchangeFieldKind.Text) { Width = 6 },
|
||||
];
|
||||
|
||||
public IReadOnlyList<string> MultiplierNames => ["Mults"];
|
||||
public IReadOnlyList<string> MultiplierNamesFor(StationInfo me) => ["Mults"];
|
||||
|
||||
public DupeScope DupeScope => DupeScope.PerBand;
|
||||
|
||||
|
||||
@@ -26,7 +26,7 @@ public sealed class OceaniaDx : Contest
|
||||
new ExchangeField("RcvNR", ExchangeSlot.SerialNumber, ExchangeFieldKind.Number),
|
||||
];
|
||||
|
||||
public IReadOnlyList<string> MultiplierNames => ["Prefixes"];
|
||||
public IReadOnlyList<string> MultiplierNamesFor(StationInfo me) => ["Prefixes"];
|
||||
|
||||
public DupeScope DupeScope => DupeScope.PerBand;
|
||||
|
||||
|
||||
@@ -47,7 +47,7 @@ public sealed class OkOmDx : Contest
|
||||
Section = IsOkOm(qso.CountryPrefix) ? typed.Trim().ToUpperInvariant() : "",
|
||||
};
|
||||
|
||||
public IReadOnlyList<string> MultiplierNames => ["Mults"];
|
||||
public IReadOnlyList<string> MultiplierNamesFor(StationInfo me) => ["Mults"];
|
||||
|
||||
public DupeScope DupeScope => DupeScope.PerBand;
|
||||
|
||||
|
||||
@@ -38,7 +38,7 @@ public sealed class RttyRoundup : Contest
|
||||
? qso with { ReceivedNumber = number, Section = "" }
|
||||
: qso with { ReceivedNumber = 0, Section = typed.Trim().ToUpperInvariant() };
|
||||
|
||||
public IReadOnlyList<string> MultiplierNames => ["Mults"];
|
||||
public IReadOnlyList<string> MultiplierNamesFor(StationInfo me) => ["Mults"];
|
||||
|
||||
public DupeScope DupeScope => DupeScope.PerBand;
|
||||
|
||||
|
||||
@@ -38,7 +38,7 @@ public sealed class RussianDistrictAward : Contest
|
||||
/// N1MM names a country multiplier for this contest and never counts one,
|
||||
/// and the score summary shows both, so the districts stay in the second
|
||||
/// column here too.
|
||||
public IReadOnlyList<string> MultiplierNames => ["Countries", "Districts"];
|
||||
public IReadOnlyList<string> MultiplierNamesFor(StationInfo me) => ["Countries", "Districts"];
|
||||
|
||||
public DupeScope DupeScope => DupeScope.PerBandAndMode;
|
||||
|
||||
|
||||
@@ -37,7 +37,7 @@ public sealed class RussianDxRtty : Contest
|
||||
Section = typed.Trim().ToUpperInvariant(),
|
||||
};
|
||||
|
||||
public IReadOnlyList<string> MultiplierNames => ["Countries", "Oblasts"];
|
||||
public IReadOnlyList<string> MultiplierNamesFor(StationInfo me) => ["Countries", "Oblasts"];
|
||||
|
||||
public DupeScope DupeScope => DupeScope.PerBand;
|
||||
|
||||
|
||||
@@ -21,7 +21,7 @@ public sealed class SartgRtty : Contest
|
||||
new ExchangeField("RcvNr", ExchangeSlot.SerialNumber, ExchangeFieldKind.Number),
|
||||
];
|
||||
|
||||
public IReadOnlyList<string> MultiplierNames => ["Countries", "Areas"];
|
||||
public IReadOnlyList<string> MultiplierNamesFor(StationInfo me) => ["Countries", "Areas"];
|
||||
|
||||
public DupeScope DupeScope => DupeScope.PerBand;
|
||||
|
||||
|
||||
@@ -49,7 +49,7 @@ public sealed class Sweepstakes : Contest
|
||||
new ExchangeField("Sect", ExchangeSlot.Section, ExchangeFieldKind.ArrlSection),
|
||||
];
|
||||
|
||||
public IReadOnlyList<string> MultiplierNames => ["Sections"];
|
||||
public IReadOnlyList<string> MultiplierNamesFor(StationInfo me) => ["Sections"];
|
||||
|
||||
public DupeScope DupeScope => DupeScope.Once;
|
||||
|
||||
|
||||
@@ -45,7 +45,7 @@ public sealed class UkrainianDx : Contest
|
||||
new ExchangeField("Sect", ExchangeSlot.Section, ExchangeFieldKind.Text) { Width = 5 },
|
||||
];
|
||||
|
||||
public IReadOnlyList<string> MultiplierNames => ["Countries", "Oblasts"];
|
||||
public IReadOnlyList<string> MultiplierNamesFor(StationInfo me) => ["Countries", "Oblasts"];
|
||||
|
||||
public DupeScope DupeScope => DupeScope.PerBandAndMode;
|
||||
|
||||
|
||||
@@ -55,7 +55,7 @@ public sealed class Wae : Contest
|
||||
new ExchangeField("Nr", ExchangeSlot.SerialNumber, ExchangeFieldKind.Number),
|
||||
];
|
||||
|
||||
public IReadOnlyList<string> MultiplierNames => ["Mults"];
|
||||
public IReadOnlyList<string> MultiplierNamesFor(StationInfo me) => ["Mults"];
|
||||
|
||||
public DupeScope DupeScope => DupeScope.PerBand;
|
||||
|
||||
|
||||
@@ -45,7 +45,7 @@ public sealed class YoDxHf : Contest
|
||||
new ExchangeField("Sect", ExchangeSlot.Section, ExchangeFieldKind.Text) { Width = 5 },
|
||||
];
|
||||
|
||||
public IReadOnlyList<string> MultiplierNames => ["Countries", "Counties"];
|
||||
public IReadOnlyList<string> MultiplierNamesFor(StationInfo me) => ["Countries", "Counties"];
|
||||
|
||||
public DupeScope DupeScope => DupeScope.PerBandAndMode;
|
||||
|
||||
|
||||
@@ -23,7 +23,7 @@ public sealed class Yota : Contest
|
||||
new ExchangeField("Age", ExchangeSlot.Exchange1, ExchangeFieldKind.Number) { Width = 3 },
|
||||
];
|
||||
|
||||
public IReadOnlyList<string> MultiplierNames => ["Ages"];
|
||||
public IReadOnlyList<string> MultiplierNamesFor(StationInfo me) => ["Ages"];
|
||||
|
||||
public DupeScope DupeScope => DupeScope.PerBandAndMode;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user