public void Enforce()
        {
            if (this.SeedType == SeedType.Random)
            {
                this.Seed = "";
                var r = new Random();
                for (int i = 0; i < 6; i++)
                {
                    var val = r.Next(36);
                    if (val < 10)
                    {
                        this.Seed += ((char)('0' + val)).ToString();
                    }
                    else
                    {
                        this.Seed += ((char)('a' + val - 10)).ToString();
                    }
                }
            }
            switch (this.Rules)
            {
            case Ruleset.A:
                this.SetNormalMaps();
                this.RepeatRooms  = false;
                this.EnterUnknown = false;
                this.Algorithm    = LogicType.Pathway;
                this.Length       = MapLength.Short;
                this.Dashes       = NumDashes.One;
                this.Difficulty   = Difficulty.Normal;
                this.Lights       = ShineLights.Hubs;
                this.Darkness     = Darkness.Never;
                break;

            case Ruleset.B:
                this.SetNormalMaps();
                this.RepeatRooms  = false;
                this.EnterUnknown = false;
                this.Algorithm    = LogicType.Pathway;
                this.Length       = MapLength.Medium;
                this.Dashes       = NumDashes.Two;
                this.Difficulty   = Difficulty.Normal;
                this.Lights       = ShineLights.Hubs;
                this.Darkness     = Darkness.Never;
                break;

            case Ruleset.C:
                this.SetNormalMaps();
                this.RepeatRooms  = false;
                this.EnterUnknown = false;
                this.Algorithm    = LogicType.Pathway;
                this.Length       = MapLength.Medium;
                this.Dashes       = NumDashes.One;
                this.Difficulty   = Difficulty.Expert;
                this.Lights       = ShineLights.Hubs;
                this.Darkness     = Darkness.Vanilla;
                break;

            case Ruleset.D:
                this.SetNormalMaps();
                this.RepeatRooms  = false;
                this.EnterUnknown = false;
                this.Algorithm    = LogicType.Pathway;
                this.Length       = MapLength.Long;
                this.Dashes       = NumDashes.Two;
                this.Difficulty   = Difficulty.Expert;
                this.Lights       = ShineLights.Hubs;
                this.Darkness     = Darkness.Vanilla;
                break;
            }
        }
 public DashRequirement(NumDashes dashes)
 {
     this.Dashes = dashes;
 }