PKHeX/PKHeX.Core/Legality/Structures/EncounterSlot.cs
Kurt 4f7c19d0cd Refactoring
Extract mystery gift matching criteria into separate method
2017-08-24 10:09:34 -07:00

77 lines
2.5 KiB
C#

namespace PKHeX.Core
{
public class EncounterSlotPermissions
{
public bool Static { get; set; }
public bool MagnetPull { get; set; }
public int StaticCount { get; set; }
public int MagnetPullCount { get; set; }
public bool AllowDexNav { get; set; }
public bool Pressure { get; set; }
public bool DexNav { get; set; }
public bool WhiteFlute { get; set; }
public bool BlackFlute { get; set; }
public bool IsNormalLead => !(WhiteFlute || BlackFlute || DexNav);
public bool IsDexNav => AllowDexNav && DexNav;
}
public class EncounterSlot : IEncounterable, IGeneration
{
public int Location { get; set; } = -1;
public int Species { get; set; }
public int Form { get; set; }
public int LevelMin { get; set; }
public int LevelMax { get; set; }
public SlotType Type { get; set; } = SlotType.Any;
public EncounterType TypeEncounter { get; set; } = EncounterType.None;
public int SlotNumber { get; set; }
public bool EggEncounter => false;
public int Generation { get; set; } = -1;
internal EncounterSlotPermissions _perm;
public EncounterSlotPermissions Permissions => _perm ?? (_perm = new EncounterSlotPermissions());
public virtual EncounterSlot Clone()
{
return new EncounterSlot
{
Species = Species,
LevelMax = LevelMax,
LevelMin = LevelMin,
Type = Type,
SlotNumber = SlotNumber,
_perm = _perm
};
}
public string Name
{
get
{
const string wild = "Wild Encounter";
if (Type == SlotType.Any)
return wild;
return wild + " " + $"{Type.ToString().Replace("_", " ")}";
}
}
}
public class EncounterSlot1 : EncounterSlot
{
public int Rate;
public EncounterTime Time = EncounterTime.Any;
public GameVersion Version = GameVersion.Any;
public override EncounterSlot Clone()
{
return new EncounterSlot1
{
Species = Species,
LevelMax = LevelMax,
LevelMin = LevelMin,
Type = Type,
SlotNumber = SlotNumber,
_perm = _perm,
Rate = Rate,
Time = Time,
Generation = Generation,
};
}
}
}