diff --git a/ALttPRandomizer/Model/SeedSettings.cs b/ALttPRandomizer/Model/SeedSettings.cs index 1faf60e..56da223 100644 --- a/ALttPRandomizer/Model/SeedSettings.cs +++ b/ALttPRandomizer/Model/SeedSettings.cs @@ -7,9 +7,12 @@ [NoSettingName] public RandomizerInstance Randomizer { get; set; } = RandomizerInstance.Base; - [NoSettingName] + [IgnoreSetting] public string PlayerName { get; set; } = string.Empty; + [IgnoreSetting] + public int PlayerSlot { get; set; } = 1; + [NoSettingName] public RaceMode Race { get; set; } = RaceMode.Normal; diff --git a/ALttPRandomizer/Randomizers/BaseRandomizer.cs b/ALttPRandomizer/Randomizers/BaseRandomizer.cs index d2fa71a..31145a7 100644 --- a/ALttPRandomizer/Randomizers/BaseRandomizer.cs +++ b/ALttPRandomizer/Randomizers/BaseRandomizer.cs @@ -149,6 +149,10 @@ public async Task RandomizeMultiworld(string id, IList settings, bool uploadSettings = true) { var generatorSettings = this.SettingsProcessor.GetGeneratorSettings(settings[0].Randomizer); + for (var i = 0; i < settings.Count; i++) { + settings[i].PlayerSlot = i + 1; + } + Logger.LogDebug("Recieved request for id {id} to randomize multiworld settings {@settings}", id, settings); var names = settings.Select(s => s.PlayerName.Replace(' ', '_')).ToList(); diff --git a/ALttPRandomizer/Settings/Attributes.cs b/ALttPRandomizer/Settings/Attributes.cs index 881aff9..d107b54 100644 --- a/ALttPRandomizer/Settings/Attributes.cs +++ b/ALttPRandomizer/Settings/Attributes.cs @@ -59,6 +59,7 @@ } internal class IgnoreSettingAttribute : RandomizerSpecificAttribute { + public IgnoreSettingAttribute() : base(null) { } public IgnoreSettingAttribute(params RandomizerInstance[] randomizers) : base(randomizers) { } } diff --git a/ALttPRandomizer/Settings/CommonSettingsProcessor.cs b/ALttPRandomizer/Settings/CommonSettingsProcessor.cs index 1d58773..a264da8 100644 --- a/ALttPRandomizer/Settings/CommonSettingsProcessor.cs +++ b/ALttPRandomizer/Settings/CommonSettingsProcessor.cs @@ -10,7 +10,7 @@ var props = typeof(SeedSettings).GetProperties(BindingFlags.Instance | BindingFlags.Public); var starting = new List(); foreach (var prop in props) { - if (prop.Name == nameof(SeedSettings.PlayerName)) { + if (prop.GetCustomAttributes().Any(att => att.HasRandomizer(randomizer))) { continue; } @@ -19,10 +19,6 @@ var fi = prop.PropertyType.GetField(valueFieldName, BindingFlags.Static | BindingFlags.Public) ?? throw new SettingsLookupException("Could not get field info for value {0}.{1}", prop.PropertyType, valueFieldName); - if (prop.GetCustomAttributes().Any(att => att.HasRandomizer(randomizer))) { - continue; - } - if (!prop.GetCustomAttributes().Any(att => att.HasRandomizer(randomizer))) { var settingName = prop.GetCustomAttributes()