Parse settings from request for generation

This commit is contained in:
2025-03-02 00:24:27 -06:00
parent 69eeb8c53b
commit 3d01df1d93
8 changed files with 222 additions and 31 deletions

View File

@@ -1,27 +1,44 @@
using System.ComponentModel.DataAnnotations;
namespace ALttPRandomizer.Model {
using ALttPRandomizer.Settings;
using System.ComponentModel.DataAnnotations;
namespace ALttPRandomizer.Model {
public class SeedSettings {
public const string Omit = "<null>";
public Mode Mode { get; set; } = Mode.Open;
public Weapons Weapons { get; set; } = Weapons.Randomized;
public Weapons Weapons { get; set; } = Weapons.Random;
public Goal Goal { get; set; } = Goal.Ganon;
public EntranceShuffle EntranceShuffle { get; set; } = EntranceShuffle.None;
public EntranceShuffle EntranceShuffle { get; set; } = EntranceShuffle.Vanilla;
public SkullWoodsShuffle SkullWoods { get; set; } = SkullWoodsShuffle.Original;
public LinkedDrops LinkedDrops { get; set; } = LinkedDrops.Unset;
public BossShuffle BossShuffle { get; set; } = BossShuffle.None;
public BossShuffle BossShuffle { get; set; } = BossShuffle.Vanilla;
public EnemyShuffle EnemyShuffle { get; set; } = EnemyShuffle.Vanilla;
[CommonValue("keyshuffle")]
public DungeonItemLocations SmallKeys { get; set; } = DungeonItemLocations.Dungeon;
[CommonValue("bigkeyshuffle")]
[DeniedValues(DungeonItemLocations.Universal)]
public DungeonItemLocations BigKeys { get; set; } = DungeonItemLocations.Dungeon;
[CommonValue("mapshuffle")]
[DeniedValues(DungeonItemLocations.Universal)]
public DungeonItemLocations Maps { get; set; } = DungeonItemLocations.Dungeon;
[CommonValue("compassshuffle")]
[DeniedValues(DungeonItemLocations.Universal)]
public DungeonItemLocations Compasses { get; set; } = DungeonItemLocations.Dungeon;
public ShopShuffle ShopShuffle { get; set; } = ShopShuffle.Vanilla;
public DropShuffle DropShuffle { get; set; } = DropShuffle.Vanilla;
public Pottery Pottery { get; set; } = Pottery.Vanilla;
public PrizeShuffle PrizeShuffle { get; set; } = PrizeShuffle.Vanilla;
}
public enum Mode {
@@ -30,8 +47,9 @@ namespace ALttPRandomizer.Model {
Inverted,
}
[CommonValue("swords")]
public enum Weapons {
Randomized,
Random,
Assured,
Vanilla,
Swordless,
@@ -39,33 +57,90 @@ namespace ALttPRandomizer.Model {
public enum Goal {
Ganon,
FastGanon,
AllDungeons,
[CommonValue("crystals")] FastGanon,
[CommonValue("dungeons")] AllDungeons,
Pedestal,
TriforceHunt,
[CommonValue("triforcehunt")]TriforceHunt,
GanonHunt,
Completionist,
}
[CommonValue("shuffle")]
public enum EntranceShuffle {
None,
Vanilla,
Full,
Crossed,
Decoupled,
Swapped,
[CommonValue("insanity")] Decoupled,
}
[CommonValue("skullwoods")]
public enum SkullWoodsShuffle {
Original,
Restricted,
Loose,
FollowLinked,
}
[CommonValue("linked_drops")]
public enum LinkedDrops {
Unset,
Linked,
Independent,
}
[CommonValue("shufflebosses")]
public enum BossShuffle {
None,
[CommonValue("none")] Vanilla,
Simple,
Full,
Random,
PrizeUnique,
[CommonValue("unique")] PrizeUnique,
}
[CommonValue("shuffleenemies")]
public enum EnemyShuffle {
[CommonValue("none")] Vanilla,
Shuffled,
Mimics,
}
public enum DungeonItemLocations {
Dungeon,
[CommonValue("none")] Dungeon,
Wild,
Nearby,
Universal,
}
[CommonValue("shopsanity")]
public enum ShopShuffle {
[CommonValue(SeedSettings.Omit)] Vanilla,
[CommonValue("true")] Shuffled,
}
public enum DropShuffle {
[CommonValue("none")] Vanilla,
Keys,
Underworld,
}
public enum Pottery {
[CommonValue("none")] Vanilla,
Keys,
Cave,
CaveKeys,
Reduced,
Clustered,
NonEmpty,
Dungeon,
Lottery,
}
public enum PrizeShuffle {
[CommonValue("none")] Vanilla,
Dungeon,
Nearby,
Wild,
}
}